)]}'
{
  "log": [
    {
      "commit": "ed555d70d80964f40563d89a4e6d6a80f83f4b89",
      "tree": "5ba2d876caa6427dbc1ce3e3850b256d95ed797a",
      "parents": [
        "39ff8149466ee8e86c0336f706cd4dd3713f359f"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "message": "Part of fix for libmedia OOB write anywhere\n\nClarify that decrypt destination is not a pointer for\nsecure case.\n\nb/23223325\n\nChange-Id: I642dcf790a9eb9e32175f3e0d8f040c82228e3ac\n"
    },
    {
      "commit": "b45cb776b7ae43f763200040d6358657ab80f855",
      "tree": "f9512524e01f368c4fc5882a0a2b4f6ecea2c5eb",
      "parents": [
        "2c7d0f2013203588f9307166cad42902eb5a676f",
        "2b95bda111444f2834e64221e3a3eb1a87d43c38"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Jul 24 22:12:23 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 24 22:12:23 2015 +0000"
      },
      "message": "Merge \"Explicitly disconnect in MediaPlayer::reset\" into mnc-dev"
    },
    {
      "commit": "2c7d0f2013203588f9307166cad42902eb5a676f",
      "tree": "9460ada2b046711356148a6c84468afbb51bb858",
      "parents": [
        "5ce059661dcbab8924edab400681fc408ee76123",
        "d7bd69e4d1e74f25413721804d5290c53ea87f2b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 21:02:52 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 24 21:02:52 2015 +0000"
      },
      "message": "Merge \"Fix restore position warning and static track adjustment\" into mnc-dev"
    },
    {
      "commit": "d7bd69e4d1e74f25413721804d5290c53ea87f2b",
      "tree": "abd46c30e346d4abfbd2dafc303f531be923a35f",
      "parents": [
        "240577a43ff8d312fa4b464db887916580473396"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 07:52:41 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 11:01:55 2015 -0700"
      },
      "message": "Fix restore position warning and static track adjustment\n\nRemove unnecessary restoreTrack_l() position warning when\nAudioTrack output device changes.\n\nAlso, fix rare getPosition() offset error if a static track is\ncontinuously playing a long time (\u003e 24 hours at 48khz sampling)\nand its output device changes.\n\nBug: 22524122\nBug: 21699132\nChange-Id: I5a35c13d62ff9f0702b09d5cd9362c730364b18c\n"
    },
    {
      "commit": "2b95bda111444f2834e64221e3a3eb1a87d43c38",
      "tree": "992e4a4a6cc24d8e17f58b14aa6840009c8fbc9c",
      "parents": [
        "f8f669d7a727e4ad5505cd85741f4d50dbaffbf9"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Jul 22 10:11:51 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Jul 23 18:03:57 2015 -0700"
      },
      "message": "Explicitly disconnect in MediaPlayer::reset\n\nEven without calling disconnect in MediaPlayer::reset,\nMediaPlayerService::Client (which lives on the other side of a\nbinder with MediaPlayer) would still perform a disconnect in its\ndestructor. Object destruction across binder is not synchronous, but\nmethod calls are. This commit merely makes sure that the disconnect\nhappens deterministically before reset returns.\n\nBug: 22451733\nChange-Id: Id9146a63a1872d68087a252aa614248b16d2556d\n"
    },
    {
      "commit": "a8d0890ca969ec40fdcf1cfcbeef85c0c379cfaf",
      "tree": "19d4d4ec0342472e24d5e242bf68a33c57ccd1c2",
      "parents": [
        "805a0c70574676d0fb29aa5e1f23417786b42259"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:52:13 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:52:13 2015 -0700"
      },
      "message": "Fix race condition in AudioTrackThread::wake\n\nBug: 22533684\nChange-Id: I2f46770dca44fc9dae41e067d3bec893c42a826e\n"
    },
    {
      "commit": "805a0c70574676d0fb29aa5e1f23417786b42259",
      "tree": "71afcbf497eea9c463b060490deaa617cabcde3d",
      "parents": [
        "17d0efd17fbb2573adcde8dcbe77726f622817da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:40:26 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:47:00 2015 -0700"
      },
      "message": "Fix race condition in AudioRecordThread::wake\n\nBug: 22533684\nChange-Id: Iba73d633b088dbc84159ed692019da39cc8e2233\n"
    },
    {
      "commit": "51390b48d311d1164a6638d3fe0b4a48aaa9028f",
      "tree": "edb401cf9346bb27d1126df49ec15d61edf3a62a",
      "parents": [
        "f6d07bc61fd7fefe9d2b2cbdaf637f2fdb1bd21e",
        "37c8924c508a7c9b8bd3c8ce80fc005070531902"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Sat Jul 18 03:07:04 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jul 18 03:07:05 2015 +0000"
      },
      "message": "Merge \"mediaresourcemanager: add pid to removeResource method\" into mnc-dev"
    },
    {
      "commit": "dbd0f3c5e15e56c2d91ae1405fecf2279785ef00",
      "tree": "683d6e42adbf5f3b9b3b2818d9f76a1b362d7af5",
      "parents": [
        "3bf9926510aaec6d70a171b1ccf405abbd74c700"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 17 11:04:04 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 17 11:04:04 2015 -0700"
      },
      "message": "Fix build\n\nChange-Id: I18b63d68d452c4ee7544ff1614f4e3f57f5a9e73\n"
    },
    {
      "commit": "37c8924c508a7c9b8bd3c8ce80fc005070531902",
      "tree": "0ed47e0ceb97bcdf6169e1189f0f555b6c2bd89c",
      "parents": [
        "495151d3f4c5f92f1d162efb32b636521c105df5"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed Jul 15 12:23:48 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri Jul 17 10:19:21 2015 -0700"
      },
      "message": "mediaresourcemanager: add pid to removeResource method\n\nBug: 22496209\nChange-Id: I73311573e8d1ac15fec668a9ef6e6af7a07a1d30\n"
    },
    {
      "commit": "3bf9926510aaec6d70a171b1ccf405abbd74c700",
      "tree": "b4daaac125ac93f38a9c10dad36414620290680f",
      "parents": [
        "48e5df72f8a7fdcf6278fc395376fbaf98444a43",
        "a2d75cdb1e389f2b4ce5992fb6652399b4d30966"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 17 17:12:15 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 17 17:12:16 2015 +0000"
      },
      "message": "Merge \"Fix AudioTrack flush pointer wrap\" into mnc-dev"
    },
    {
      "commit": "a2d75cdb1e389f2b4ce5992fb6652399b4d30966",
      "tree": "7356aa2f55de2f8c85c37f8a58fb4e135bb72754",
      "parents": [
        "14ae2c0d1aa6e32e97cbb62dabb604820e1e5152"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 15 17:04:20 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 16 10:27:06 2015 -0700"
      },
      "message": "Fix AudioTrack flush pointer wrap\n\nOccurs when read offset / write offset span the power of 2\nmask boundary.\n\nBug: 22513776\nChange-Id: If863577dac6666e8b2083d78f78fe9b9490fcf76\n"
    },
    {
      "commit": "4356269be6d2b62bbb945364e8fc4beb99e1aada",
      "tree": "f2ef8b7a7f84fe3901333cf2784711bd1dc6b769",
      "parents": [
        "4b33e0838fdb1b5e545449add02005916b512c99"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "message": "mediaplayer: fix audio attributes override by stream type\n\nMake sure that when audio attributes are set, the stream type\nis always derived from them.\n\nBug: 22481669.\nChange-Id: Ia10c7017eb27e7753faf97a42dd4f44e15f2c986\n"
    },
    {
      "commit": "7c1ec5f038e63a5eb8b04434577c25bc23f5f410",
      "tree": "f6b8feda43ba0bb6666171b57318ad3cea48a45e",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 09 14:52:47 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 10 10:58:41 2015 -0700"
      },
      "message": "audio: several fixes in audio routing callbacks\n\n- audio policy:\nForce device change to ensure new audio patch creation\nupon first track activity on a given output.\nFix function device_distinguishes_on_address() which could mistake\nsome output device with remote submix input device.\n\n- audio flinger:\nReduce number of binder calls upon new client registration by only\nsending ioConfigChanged() callbacks to newly registered client.\nFix first patch after output thread creation not triggering an\nioConfigChanged() callback.\n\n-audio system:\nForce client registration upon routing callback installation to force\nnew ioConfigChanged() callback from audio flinger.\n\nBug: 22381136.\n\nChange-Id: Ieb0d9f92f563a40552eb31bc0499c8ac65f78ce4\n"
    },
    {
      "commit": "e8726fea8a53bf3474aa3c6deaf2f6c1f565e694",
      "tree": "d72b6ffcc7e33c178e3cac7c108b102041451cb6",
      "parents": [
        "ed8505836c0b2fba0ab4be0c1eff31d4f241bc1d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 09:39:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 12:38:13 2015 -0700"
      },
      "message": "reduce number of binder calls from mediaserver\n\nReduce the number of audio port, audio patch and\nIO config changed binder calls from mediaserver to\nclient processes:\n- Do not call IO config changed callback if selected\ndevice is the same as previously selected one on a given\naudio flinger playback or capture thread.\n- Do not call the audio port or audo patch list update\ncallback on a client if this client as no listener registered.\n\nBug: 22045560.\n\nChange-Id: If780e105404de79b7cb5c80c27b793ceb6b1c423\n"
    },
    {
      "commit": "55a2dcce3a409393dc51ab2eb433914331f2df51",
      "tree": "ce69e72bd8520a05807a88a64bb58d33b0dc7962",
      "parents": [
        "2b343b1b2dd9e4885ef2b7ec2f798215d714ab3a",
        "6c7f062d3149d6890daaee64828959ad6f61ea54"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Jun 23 00:25:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 23 00:25:08 2015 +0000"
      },
      "message": "Merge \"Using centralized isAudioPlaybackRateValid to validate parameters\" into mnc-dev"
    },
    {
      "commit": "6c7f062d3149d6890daaee64828959ad6f61ea54",
      "tree": "dcab2e17178bf6d01ead75fad5df883961a6e195",
      "parents": [
        "fa907d4ee326c7bb9cbb4882ab7c0ec42bbceee3"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Apr 30 18:39:16 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Jun 22 16:08:40 2015 -0700"
      },
      "message": "Using centralized isAudioPlaybackRateValid to validate parameters\n\nCentralized validation code\nbug: 20701446\n\nChange-Id: I9d9941c7639c05b2afe069ff4f858c693c910bfe\n"
    },
    {
      "commit": "99b38856e91a55bb67085dbabffac9739998fe8b",
      "tree": "a73f9173187000611521af0bb7eb53ba207d41d5",
      "parents": [
        "42193b96b22782fce14c55314dfc269fb4a4ed22",
        "9b030df5ead9c039e4ebb16c745e2cc40e953d48"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Jun 22 17:56:31 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 17:56:32 2015 +0000"
      },
      "message": "Merge \"Fix for Visualizer release bug\" into mnc-dev"
    },
    {
      "commit": "9b030df5ead9c039e4ebb16c745e2cc40e953d48",
      "tree": "f57b2a1d364dbc21616a622e2b49af1af49ffd2b",
      "parents": [
        "3fc792fe36b0b9100f74185665221b37f650ff65"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Jun 18 21:01:53 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 19 17:22:45 2015 -0700"
      },
      "message": "Fix for Visualizer release bug\n\nSetting callback reference to NULL before requesting exit.\n\nbug: 21804802\nChange-Id: I54323959686880f4e7a10b766850f8c86c06edb6\n"
    },
    {
      "commit": "47b1ca9cf7c45564887832bfdec21ccc18eb448e",
      "tree": "c1301d9635ee7a7a2d6c80f352754d04bc98b9d4",
      "parents": [
        "ee140da3422212153f88357725f3fc614de5eb44",
        "3b5401ad38b4346920f9aff0440606b8b565ce90"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jun 19 16:05:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 16:05:32 2015 +0000"
      },
      "message": "Merge \"Check binder transact status\" into mnc-dev"
    },
    {
      "commit": "f86e831ec0cbdce2d34c48fc567ad91a47099b70",
      "tree": "b6413cb2650e0b25d3000780b0fe2517640a719f",
      "parents": [
        "b36bc776545d9758f3bc9a853a5a0fd51280e9fb",
        "6653c935d2518a713587b3887ca09aa09ebfa7fd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 19 15:57:05 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 15:57:05 2015 +0000"
      },
      "message": "Merge \"Return DEAD_OBJECT if getTimestamp cannot restore track\" into mnc-dev"
    },
    {
      "commit": "c675cf0fff3da75a92bc157e3bf698cc5a1f6eb3",
      "tree": "2beb92ab6df1c7d434137fd9c6d547a1e0d4567b",
      "parents": [
        "652c2207fe19bef3657a5abe865f9f9b2a4cd866",
        "1f1db8356b599bc40703c907fb69e6e539343532"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 22:05:40 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 22:05:41 2015 +0000"
      },
      "message": "Merge \"Fix AudioTrack comments relating to use of restoreTrack_l()\" into mnc-dev"
    },
    {
      "commit": "6653c935d2518a713587b3887ca09aa09ebfa7fd",
      "tree": "6d9680827227e1a263b27e3eb4206a85a5122297",
      "parents": [
        "1f1db8356b599bc40703c907fb69e6e539343532"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 08 13:27:48 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 14:42:14 2015 -0700"
      },
      "message": "Return DEAD_OBJECT if getTimestamp cannot restore track\n\nBug: 21699132\nChange-Id: I90443f8674ed949e2546048b231be75cd6fe6615\n"
    },
    {
      "commit": "1f1db8356b599bc40703c907fb69e6e539343532",
      "tree": "bee3a3cc00e5577a7d847871e77f9d3712c92d25",
      "parents": [
        "bd974011599b6d4ff47c1cee36d617f191dc0c2f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 08 13:26:10 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 14:38:32 2015 -0700"
      },
      "message": "Fix AudioTrack comments relating to use of restoreTrack_l()\n\nBug: 21699132\nChange-Id: Ib0d029a5e28676aeffbbbafc88c52a17367a413c\n"
    },
    {
      "commit": "61c83317f1c8f18fd86afe0c776d16933816a83a",
      "tree": "0035632ea3ff8222d1be7630ec0cecb4e909c222",
      "parents": [
        "3fc792fe36b0b9100f74185665221b37f650ff65"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Jun 18 12:39:44 2015 -0700"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Jun 18 12:39:44 2015 -0700"
      },
      "message": "readAt can return negative values (error codes).\n\nThis fixes the regression introduced in\n59cea2616269f34b1f3d046995efd8da42cd5549 due to which MediaPlayer\ntreated all error codes returned by MediaHTTPConnection as\nERROR_OUT_OF_RANGE.\n\nThe regression was caused by accidentally converting negative values\n(which represent error codes) returned by MediaHTTPConnection to very\nlarge positive ones (which represent length of data received).\n\nBug: 21922241\nChange-Id: I1b4592b5fec724aac1ba6c1ff8fdabcba56bcd2d\n"
    },
    {
      "commit": "3b5401ad38b4346920f9aff0440606b8b565ce90",
      "tree": "7e80afc6cc510c3278513df6374262ace6570f5c",
      "parents": [
        "938e2b34b16c3c1fd29c753eeb53ee95a2b2e2b3"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Jun 15 17:42:10 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Jun 16 09:45:09 2015 -0700"
      },
      "message": "Check binder transact status\n\nIf mediaserver restarts, the binder transact\nmethods return DEAD_OBJECT.  This status wasn\u0027t\nbeing checked, so calls would proceed with\nunpredictable results.\n\nbug: 20614102\nChange-Id: I11271974ef2ccf0129529d1f67204dff1f1d03b0\n"
    },
    {
      "commit": "8cecf014ad5c62b072fad8fc24a140e8ee294f62",
      "tree": "21b05abf1e9d7fb1d87369c77ed31f220b6280c1",
      "parents": [
        "ad9ef61e770c0751a9983aa5c9844dfeb9ed665b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 11 14:08:44 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 11 14:08:44 2015 -0700"
      },
      "message": "Return correct error code from IMediaHttpConnection\n\nIt returns a boolean, not a status_t\n\nBug: 21654826\nChange-Id: Id364a90598c5cf0bb567b5b25bbc9b7c73412760\n"
    },
    {
      "commit": "eecd7659823504c6c65a2b0f4267515a8e3f24cb",
      "tree": "458dcc99c0a5a8ad6609ddec67bc903c388e4e8d",
      "parents": [
        "d16a8ef26fd1f7a86061c396c5865564af2f1abb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 04 16:20:16 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 08 18:47:51 2015 -0700"
      },
      "message": "Use only strong references to AudioEffect\n\nDo not refer to an AudioEffect instance by a raw pointer from the\nchild AudioEffectClient.\n\nAlso align destructor cleanup sequence on those of AudioTrack\nand AudioRecord.\n\nBug: 21629892.\n\nChange-Id: I970307aedbc38db2e41a2cc652fd6df9112f712c\n"
    },
    {
      "commit": "26a48f304a8754d655e554178ffb6d7ba4c5aac3",
      "tree": "29d2f266cec93fa3aa146d9de238132be0658297",
      "parents": [
        "bf913163c69abf9e67bb393f032d0c3e1a642957"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Jun 04 10:30:02 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jun 05 17:57:19 2015 -0700"
      },
      "message": "stagefright: add support for batching OMX events\n\nBug: 20503131\nChange-Id: I762c419ed1245f8b83fb1f6bf61e5557213ca07b\n"
    },
    {
      "commit": "c8e09c610fabc7390297ecb48e939acbdfe27325",
      "tree": "38ceed23e3bbef10f3d54388926c5ea242a1d069",
      "parents": [
        "005e9d0300fc326a076ec17b7fa6dd4f51568f55"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 23:43:36 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 04 12:23:56 2015 -0700"
      },
      "message": "Improve AudioTrack offload timestamp startup glitch detector\n\nNew or existing glitch behavior for Nexus 5 offload audio:\nwe receive several 0 timestamps,\nthen we get a stale timestamp (very large),\nthen a few ms later we get a correct nonzero timestamp.\n\nWe attempt to hide the glitch because the retrograde timestamp\ncorrection makes the glitch \"sticky\".\n\nBug: 21633313\nChange-Id: I39153af718c151f9435e7d315651a811f72743da\n"
    },
    {
      "commit": "a7f03353d5f172016f324e2a01f301cca6794152",
      "tree": "50ac6c8e46e5c60624b96008c2de4585f24364c9",
      "parents": [
        "4170eeec0a2dc2a9543b7e4674a43b3d2faac61d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 21:54:49 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 22:26:17 2015 -0700"
      },
      "message": "Compute sleep time when AudioTrack client callback returns no PCM data\n\nCallbacks can go into a sleep-wait cycle if the client/app is unable to\ndeliver data.  This can happen if the buffer is large, or if\nthe client/app cannot keep the buffer filled, or upon a stream end condition.\nWe improve the sleep time computation for AudioTrack PCM callbacks.\n\nThis minimizes the number of callbacks to NuPlayerRenderer.\n\nBug: 21198655\nChange-Id: I4247798a6638def2f0d8f1b46f60323482065cb2\n"
    },
    {
      "commit": "15ab4996019387f27a48b81cb4774c21502bc0e5",
      "tree": "cff50b03c2785db5944f0bc310f9c8afaae17b2e",
      "parents": [
        "40b26470dd29e44f1601ceb6e60948586a4d9f88"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Jun 01 10:54:31 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 02 19:04:16 2015 -0700"
      },
      "message": "stagefright: add support for fences in OMX\n\nPass Fence between Surface and ACodec, and between ACodec and IOMX.\n\nBug: 12386081\nChange-Id: Ifdc566979dec0d91ed8b07c3b69d2cf092accc73\n"
    },
    {
      "commit": "0eafa9d8ee4069aa709ff85ceffe94d12995956d",
      "tree": "7579f186bd84573a34de8bf385040b3fd04a9d8c",
      "parents": [
        "20d09f3d9a82dc4ce51824025ef7a465f62086d0",
        "9f9e21ed9a342e0ca945818bdc6c0c4fb3bfb9bd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 02 15:41:02 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 15:41:03 2015 +0000"
      },
      "message": "Merge \"Store server latency, sample rate, framecount information in AudioTrack\" into mnc-dev"
    },
    {
      "commit": "054219874873b41f1c815552987c10465c34ba2b",
      "tree": "b9aaf90692f68ed786880d7daf6ae4f2d2b6b9d7",
      "parents": [
        "cb18ec05b7097a63262b81afe1e866105d400f4a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri May 15 20:39:14 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Jun 01 20:24:26 2015 -0700"
      },
      "message": "stagefright: rework metadata buffer support\n\n- Add fence to new metadata buffer mode structure, but don\u0027t use it\nyet, so that we don\u0027t have to add another mode soon.\n- Change GraphicBuffers to ANativeWindowBuffer in new metadata mode.\nThis removes internal depencency from vendor codecs.\n- Extend new metadata mode from SW encoders to all codecs.\n- Fallback from new metadata mode to old mode (so Camera can always\nuse the new mode even with legacy codecs)\n\nRelated-bug: 19614055\nBug: 13222807\nChange-Id: I405a21dd6ce8e99808f633bfeab8f14278eb7079\n"
    },
    {
      "commit": "9f9e21ed9a342e0ca945818bdc6c0c4fb3bfb9bd",
      "tree": "d225efadda08464e37526e7e4cbc02ef1cf3f9ca",
      "parents": [
        "08945c44a97d3749cc48f860eb4e01e57183ad90"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 21:45:36 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 01 18:53:03 2015 -0700"
      },
      "message": "Store server latency, sample rate, framecount information in AudioTrack\n\nBug: 21198655\nChange-Id: I24590196642a97ea5d61bc6356f0aff782bd37d3\n"
    },
    {
      "commit": "cc7cc67349b7a3f498882087aa42ffc05a2daf11",
      "tree": "8eee8d499bf395c14750b900a82ecc59d47e6dbd",
      "parents": [
        "f9a3dce5d44b1ba598cc6f6a2e80da36e44618f7"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Jun 01 14:58:37 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Jun 01 15:31:13 2015 -0700"
      },
      "message": "stagefright: allow to overallocate OMX codec buffers\n\nSpecify allottedSize for useBuffer and allocateBufferWithBackup,\nwhere OMX will see only the allottedSize, even though framework may\nallocate and use a bigger buffer.\n\nBug: 13222807\nChange-Id: Ibfa93f6c7b7c8ca0853ef17d4a0758e496eaf921\n"
    },
    {
      "commit": "187b78c384ddc0119da9909e89884ed5511a01e9",
      "tree": "7ad189bb49ed425ede07fe738661023d6d724f49",
      "parents": [
        "e1f939bf0e1bac806b7da1b316e70c96426dc1b6",
        "ba3e7f5b31b8110ee93b69d28002a1827fd1346b"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Sat May 30 00:01:04 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 30 00:01:04 2015 +0000"
      },
      "message": "Merge \"remove video editor from MediaProfile\" into mnc-dev"
    },
    {
      "commit": "db431db53fbbb9024b6e72c528e2d195d63ad544",
      "tree": "5bde5eb0c768258b4a103f6ef753ba80f8c820cb",
      "parents": [
        "fb683371379606bd3f41c880d83e33f8f3e445ac",
        "f6b3e7db0b18a7d187d026dd729ae12fd521005e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 28 22:51:04 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 28 22:51:05 2015 +0000"
      },
      "message": "Merge \"Deprecations are warnings not errors\" into mnc-dev"
    },
    {
      "commit": "f6b3e7db0b18a7d187d026dd729ae12fd521005e",
      "tree": "d8a8254d180e9f697e67d2b63613eacc8c10ed23",
      "parents": [
        "92d824426e4621c2e8dfdd4e0f00d19c35d3c481"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 12:28:13 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 28 07:55:58 2015 -0700"
      },
      "message": "Deprecations are warnings not errors\n\nChange-Id: Ib77f45fdc27ea53f1dd181f48c76810d03f8dcdb\n"
    },
    {
      "commit": "ba3e7f5b31b8110ee93b69d28002a1827fd1346b",
      "tree": "c5fc7791ad24d553efe673801c12ac92134f4e49",
      "parents": [
        "2d6b6601743c3c6960c6511a2cb774ef902759f4"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 27 16:52:35 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 28 00:19:20 2015 +0000"
      },
      "message": "remove video editor from MediaProfile\n\nbug: 17112465\nChange-Id: Id59ba13e9c796298ad7dbaf03a595cc1fa62c169\n"
    },
    {
      "commit": "d66ef45e09272b85a79c8d3c87666f26269bfa68",
      "tree": "6368ad7540c78ad8491c6835327058075c76ba2c",
      "parents": [
        "6374077319a2d060eefe5f4bf425aed37f90c5d0"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed May 27 09:46:44 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed May 27 09:46:44 2015 -0700"
      },
      "message": "libmedia: read from parcel only when there\u0027s a data available.\n\nBug: 21374704\nChange-Id: I87dc2ee36fe8db99cceeb25ec6657feb423de133\n"
    },
    {
      "commit": "3a9a6ea4e9f67c6a43f00ae3d980eb475e49deaf",
      "tree": "6864b8df984c57b86217aa8ad5701bc2f13c3c5c",
      "parents": [
        "d38f10d574de43c37b494b389872c7fb7bbe8828",
        "2d32dcde5ba90063a269b2117dee810037eede33"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 19:08:24 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 22 19:08:25 2015 +0000"
      },
      "message": "Merge \"libmedia: fix unmatch Parcel read in BnResourceManagerService::onTransact.\" into mnc-dev"
    },
    {
      "commit": "0a7989f5691f161fff97dd550eb602e44a6e6185",
      "tree": "79fd65829976dd4efa997ca8e65aa7cc3c2fb968",
      "parents": [
        "c5648e09bdacc0882aa55525cc1aad6d09794e11",
        "faeb0f291330134dc4468359a36e099aae508449"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 18:41:38 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 22 18:41:38 2015 +0000"
      },
      "message": "Merge \"libmediaplayerservice: try to open audio sink in offload mode in error.\" into mnc-dev"
    },
    {
      "commit": "faeb0f291330134dc4468359a36e099aae508449",
      "tree": "028333c0801e03826c4162cb35880236eaae3b3b",
      "parents": [
        "8eddd88568fe4da0ca0ceab5072bc488827f01b5"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu May 21 12:20:21 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 10:36:31 2015 -0700"
      },
      "message": "libmediaplayerservice: try to open audio sink in offload mode in error.\n\nBug: 19061432\nBug: 21370108\nChange-Id: Iaa757555ef37fd1ac87b6e2d5a9969bb58cc5ebc\n"
    },
    {
      "commit": "2d32dcde5ba90063a269b2117dee810037eede33",
      "tree": "7f76ffbede592765e4f2a659babc5c12ecf1e9af",
      "parents": [
        "8eddd88568fe4da0ca0ceab5072bc488827f01b5"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu May 21 16:19:48 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu May 21 16:19:48 2015 -0700"
      },
      "message": "libmedia: fix unmatch Parcel read in BnResourceManagerService::onTransact.\n\nBug: 21374704\nChange-Id: Ibe8823a55b597fe5a70d6b4c5214695263712204\n"
    },
    {
      "commit": "748a792be85838c429ebf46acf7d6eb02e79f00b",
      "tree": "5f9aa67825176080016baabc4cf844abd1e25ecb",
      "parents": [
        "2232aee25e4df7d04446912e8ad9e9dc44d8ec16",
        "72e3f39146fce4686bd96f11057c051bea376dfb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 21 16:12:36 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 21 16:12:37 2015 +0000"
      },
      "message": "Merge \"audio flinger: do not call JAVA services until system is ready\" into mnc-dev"
    },
    {
      "commit": "72e3f39146fce4686bd96f11057c051bea376dfb",
      "tree": "00e43a5392f717a49a3569de3a5bdce9aa7b6a6e",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 14:43:50 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 17:35:37 2015 -0700"
      },
      "message": "audio flinger: do not call JAVA services until system is ready\n\nWait for system ready indication form AudioService before enabling\ncalls to scheduling service or power manager.\n\nBug: 11520969.\nChange-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf\n"
    },
    {
      "commit": "3e98ecd18c906dc3ac2ff1a890f0b3163447272d",
      "tree": "8c9227dcf79cd1d87d69d6c1ab4c66d440d3207c",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 13:13:24 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 14:37:52 2015 -0700"
      },
      "message": "Clear mAudioRecord and mAudioTrack on set() failure\n\nBug: 20818955\nBug: 20890069\nChange-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db\n"
    },
    {
      "commit": "8f469e18c307cb9dc0d16ed9225972aa8be4516f",
      "tree": "c8e07383c8bdef3b0214def08f6b2d6da7e622f4",
      "parents": [
        "635bc8f90429b2fdcaf7f8d43f7f59bcd0fe951c"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 13 10:21:33 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 13 10:49:35 2015 -0700"
      },
      "message": "stagefright: rename usePersistentInputSurface to setInputSurface\n\nand clear persistent surface pointer when MediaRecorder is reset\n\nbug: 21045118\nbug: 21045402\nChange-Id: Ifd0d6deeb969f2252123929541b30b518cecbf9a\n"
    },
    {
      "commit": "9ba21b9418d10ddcc39f08901e24fbf43d82b2bc",
      "tree": "363f0598085516cf16ddd4ee5df2d1043e2955da",
      "parents": [
        "ba21a9ac7b6b76f85681cfb5e756e947c0ae3b53"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Apr 21 14:23:06 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 08 09:51:26 2015 -0700"
      },
      "message": "libstagefright: config resource manager with secure codec co-existing policy.\n\nBug: 19620911\nChange-Id: I0d729782c1622f23e9c37b7a9231e58e3f807470\n"
    },
    {
      "commit": "d975e98aac096b8b0ed600f39c18630ba234ef7d",
      "tree": "4bd38609b632761d71440160b0e0449bdbf8dc2c",
      "parents": [
        "70c75d8c15707d5eade38fe3e622f8500c29556b",
        "37d8b27e5470d8243288a87e90871efd43f29606"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 19:33:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 07 19:33:37 2015 +0000"
      },
      "message": "Merge \"MediaHTTP: add more null ptr and init checks\" into mnc-dev"
    },
    {
      "commit": "37d8b27e5470d8243288a87e90871efd43f29606",
      "tree": "9a653e7901c7f91cdaf06bf71269f873ffc2797f",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 12:07:31 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 12:08:20 2015 -0700"
      },
      "message": "MediaHTTP: add more null ptr and init checks\n\nbug: 20912192\nChange-Id: I83cf59ff85fd8aa3a19a696ceb97cd8aa922b8ba\n"
    },
    {
      "commit": "831352e926c2896996df285b343cc06f39053499",
      "tree": "c204a60d9d2fd65633615565ceaaa4efab3323c6",
      "parents": [
        "5603d28707ef0f19b2b915756809424698e93d9c",
        "d7446564c3e469aea1bba5460ff1fb9441f9fc09"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 07 00:49:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 07 00:49:59 2015 +0000"
      },
      "message": "am d7446564: am 1e5670ab: am 296dc670: am d8e41553: am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u0027d7446564c3e469aea1bba5460ff1fb9441f9fc09\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d7446564c3e469aea1bba5460ff1fb9441f9fc09",
      "tree": "a458625c26498b84fbbfb53d7d583d64588d0616",
      "parents": [
        "4c85e16c9f7cbd9e9fa4713d62ed2c7f4da2f7d3",
        "1e5670abf9c1b714819ab6ec529a6bc19cbdacf4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 07 00:28:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 07 00:28:00 2015 +0000"
      },
      "message": "am 1e5670ab: am 296dc670: am d8e41553: am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u00271e5670abf9c1b714819ab6ec529a6bc19cbdacf4\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d8e41553b96432c4d4dae80fcc042b95fd9d27d9",
      "tree": "8dbbd8d07f670ca1c56a6519d80b38fb5f61b5eb",
      "parents": [
        "a05bd3c1cdff400ad92532b06d40ddc5c638c284",
        "bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "message": "am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u0027bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d7ab7afa57ed1fa6fb9c4ce18ea0df3ec939c067",
      "tree": "ed0fd03c176ba5ae421795f4665d47faec653c52",
      "parents": [
        "eb58c6d9ee8eac81864aaecb38a1831014ebf152",
        "296fb13dd9b5e90d6a05cce897c3b1e7914a478a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 17:51:41 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 06 17:51:42 2015 +0000"
      },
      "message": "Merge \"Implement audio device callback\" into mnc-dev"
    },
    {
      "commit": "eb58c6d9ee8eac81864aaecb38a1831014ebf152",
      "tree": "842417df1ad2ffa57af8d59aa864612fd036bb67",
      "parents": [
        "a0cf6c4d7d13c73feef5b88760b52b18289b0db2",
        "ceffd8cc911bd2e685b525f838cd3d8198ab35cf"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed May 06 17:22:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 06 17:22:55 2015 +0000"
      },
      "message": "Merge \"Pass all DRM errors through ICrypto\" into mnc-dev"
    },
    {
      "commit": "296fb13dd9b5e90d6a05cce897c3b1e7914a478a",
      "tree": "d3ed4e6ff2902da6f556d038c71605c091b75f64",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:38:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 10:14:42 2015 -0700"
      },
      "message": "Implement audio device callback\n\nAdd class AudioSystem::AudioDeviceCallback notifying\nAudioSystem clients upon device selection change on a given\ninput or output thread.\nMaintain a list of installed callback per I/O handle in AudioSystem\nand call registered callbacks when an OPEN of CONFIG_CHANGED event\nis received on IAudioFlingerClient::ioConfigChanged().\nAdd methods to AudioTrack and AudioRecord to add and remove device\nchange callbacks.\nAdd methods to AudioTrack and AudioRecord to query currently selected\ndevice.\nioConfigChanged() events now convey the audio patch describing\nthe input or output thread routing.\n\nFix AudioRecord failure to start when invalidation is\nhandled by start().\n\nChange-Id: I9e938adf025fa712337c63b1e02a8c18f2a20d39\n"
    },
    {
      "commit": "ceffd8cc911bd2e685b525f838cd3d8198ab35cf",
      "tree": "8aa2467a1ce56b09aaa7725fb792d9dc551cd0d2",
      "parents": [
        "b408fa26c782c57272f11b46a235cca8c9ccb9be"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "message": "Pass all DRM errors through ICrypto\n\nPreviously only the detailed messages for vendor-defined DRM\nerrors were being passed.  This change allows detailed messages\nto be passed for any DRM error, including the ones defined in\nthe framework.\n\nbug: 20857014\nChange-Id: I72aa85b31ac852fb1fb6ad0a93f3309100b52c9d\n"
    },
    {
      "commit": "9f578d3297782be6de5373e171f3b4af49726709",
      "tree": "d6063a06edf2c17868195472d63869c069dbfbb8",
      "parents": [
        "c8a70d340f0ce610dfb8bd44d833708269484e99",
        "4cb668392ee0433462251afbee109405c6efacc8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 05 15:55:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 05 15:55:08 2015 +0000"
      },
      "message": "Merge \"AudioRecord keeps track of UID\" into mnc-dev"
    },
    {
      "commit": "4cb668392ee0433462251afbee109405c6efacc8",
      "tree": "50e324bd1af8951136ec9b7c4a7538e514490e80",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 01 18:34:17 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 05 02:04:33 2015 +0000"
      },
      "message": "AudioRecord keeps track of UID\n\nBug 20832981\n\nChange-Id: If5f3c61fae02d86b9d6fdf411711f854fd56c77d\n"
    },
    {
      "commit": "e2a2dfcbf0c9d6bb7139263ecf0d8e53b4ca1049",
      "tree": "8060421e6bb2732c1b84d0810f5e83a57a7d25ea",
      "parents": [
        "d291c222357303b9611cab89d0c3b047584ef377"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 12:36:13 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 19:18:49 2015 -0700"
      },
      "message": "MediaRecorder: implement persistent input surface APIs\n\nBug: 19127604\nBug: 19489395\n\nChange-Id: I7dd8015a8fe029f9867fcdb52322629c77eff50b\n"
    },
    {
      "commit": "d291c222357303b9611cab89d0c3b047584ef377",
      "tree": "953551d93d5a215cefb14470387ff7494c9b60e5",
      "parents": [
        "64da6f045b1a1d1b8f01391b6e37287f77f85d1e"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Apr 30 18:15:52 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 19:06:38 2015 -0700"
      },
      "message": "MediaCodec: implement persistent input surface APIs\n\nBug: 19127604\nBug: 19489395\n\nChange-Id: Idaf1cc9008016f66903e93907a676f54e342e1a3\n"
    },
    {
      "commit": "939270353bff5bc7497b0c77e203520b997268c9",
      "tree": "3138d9682c0449dfd2d66d46fa6a216bbf019b3f",
      "parents": [
        "cc85abcf4ac398dca240db356b8b4db052b415a4",
        "4c5a3675ed6b429dfaa2707acf2b3faf2808baf2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 21:49:38 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 01 21:49:39 2015 +0000"
      },
      "message": "Merge \"AudioTrack: reduce retrograde motion spew\" into mnc-dev"
    },
    {
      "commit": "cc85abcf4ac398dca240db356b8b4db052b415a4",
      "tree": "65f9eccab6b0d9b9f3dcee48e2c44326b0edbef4",
      "parents": [
        "0bbf8b213ad96051357e3ad6d6d2808bfa31a59a",
        "73e26b661af50be2c0a4ff6c9ac85f7347a8b235"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 19:10:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 01 19:10:26 2015 +0000"
      },
      "message": "Merge \"AudioSystem: refactor audio config cache and callbacks\" into mnc-dev"
    },
    {
      "commit": "73e26b661af50be2c0a4ff6c9ac85f7347a8b235",
      "tree": "7290cb83e5f7df830447fe2badf99c43e0afc020",
      "parents": [
        "054d9d3dea1390294650ac704acb4aa0a0731217"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 16:55:58 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:45:07 2015 -0700"
      },
      "message": "AudioSystem: refactor audio config cache and callbacks\n\nClean up implementation of audio configuration cache and\ncallback events from AudioFlinger:\n\n- Define class AudioIoDescriptor for audio input and output\nconfigurations outside of AudioSystem class.\n- Do not use void * but an AudioIoDescriptor as argument to\naudio config callbacks from AudioFlinger.\n- Remove unused configuration events.\n- Move AudioSystem audio input and output cache from static singletons to\nmembers of AudioFlingerClient subclass.\n\nChange-Id: I67c196c32c09ce2756af0755ee1fe631040c3270\n"
    },
    {
      "commit": "4c5a3675ed6b429dfaa2707acf2b3faf2808baf2",
      "tree": "b0697130f34c1957f26b84f74d00fb8455890fae",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 16:18:53 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 10:32:54 2015 -0700"
      },
      "message": "AudioTrack: reduce retrograde motion spew\n\nChange-Id: I96aced52b136ceea924aa3d9ef56374dd4c49784\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "3a474aa67fc31505740526dd249d96204c08bf79",
      "tree": "4db784ee57ffad037fa2ded86d0fd8b3a40173d5",
      "parents": [
        "a8df0b716bdfda1e10790e6f7297eeff83d2e52a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:07 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Apr 30 16:56:10 2015 -0700"
      },
      "message": "stagefright: support setting/getting playback/sync config in MediaSync\n\nBug: 18249558\nBug: 19666434\nBug: 20057497\nChange-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605\n"
    },
    {
      "commit": "5aab9254a5c4f1951c12216a71550ab95b4adeaa",
      "tree": "0680d656f421297bbac15a8ad9b7ed776c2d2d66",
      "parents": [
        "457e82586d51c6d360ce4feb4c1dff1a31dcb8d3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 14:55:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 21:58:56 2015 +0000"
      },
      "message": "AudioTrack: fix build\n\nUsing format %llu did not work for uint64_t on 64-bit systems!\n\nChange-Id: I727094e460141b9da3e433ceaa95e069dad948bc\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "dc0ac804721efff054ec9720d53e93ecca86cf5e",
      "tree": "8560f730cb37dddfccc6ea2a513d99889998e2c2",
      "parents": [
        "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
        "1b42097f38e72574ed853a35f4e8a66e4739c421"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 20:48:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 20:48:55 2015 +0000"
      },
      "message": "Merge \"AudioTrack: fix spurious retrograde messages\" into mnc-dev"
    },
    {
      "commit": "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
      "tree": "f69b635690cbc2cff9e5cfb8843e4473cc327208",
      "parents": [
        "1471e7a112aed5ff120c2b97bced9523ed39fe6c",
        "8c7e6dac6f5eb38cef627dab92eac8b38513450c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "message": "Merge \"audio policy: session routes continued.\" into mnc-dev"
    },
    {
      "commit": "8c7e6dac6f5eb38cef627dab92eac8b38513450c",
      "tree": "6aede3a6ac013462a117ffb181d93439525eebeb",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 17:37:00 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 12:43:06 2015 -0700"
      },
      "message": "audio policy: session routes continued.\n\n- Clear session routes when client process dies.\n- Enforce the route only when the requesting session is active.\n- Fix requested route not working if an output mix change is required\n(e.g forcing to SPEAKER when the default route is USB or A2DP).\n- Make sure all sessions sharing the strategy with a rerouted session\nhave the same route (needed for volume control consistency)\n\nChange-Id: I0ab347a8fb97e73e2c5965374544c5f4fe509ef1\n"
    },
    {
      "commit": "d641af3e9faf6c053ccbeea1bc20790021e57a11",
      "tree": "f2c1fa01f2321024396ac4bda949d74965a547f9",
      "parents": [
        "d707ac5a0494398cb1306ead0ba587034f610f30",
        "f613d42b12389335b2ecf06df18d0d095d6bfd44"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 30 16:43:17 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 16:43:21 2015 +0000"
      },
      "message": "Merge \"AudioSystem callback for dynamic policy mix activity\" into mnc-dev"
    },
    {
      "commit": "f613d42b12389335b2ecf06df18d0d095d6bfd44",
      "tree": "b36177007932b781d9db2bb973cb2feaab3cde13",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 23 18:41:29 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 29 17:54:12 2015 -0700"
      },
      "message": "AudioSystem callback for dynamic policy mix activity\n\nAdd method to AudioPolicyServiceClient for dynamic policy mix\n activity notification.\nPropagate notification to a dedicated callback.\n\nBug 20226914\n\nChange-Id: I37928ed38e15ea2b8fed022cccadeca8c4d6c876\n"
    },
    {
      "commit": "1b42097f38e72574ed853a35f4e8a66e4739c421",
      "tree": "e708293755e42bca48d47380b8b8568cfc3d2f1f",
      "parents": [
        "5f88cdae61079be7920aee166eaac4941f65fb9f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 22 10:52:21 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 29 23:36:01 2015 +0000"
      },
      "message": "AudioTrack: fix spurious retrograde messages\n\nThe retrograde motion was confused by some positions coming from\nthe DSP on offloaded tracks. So the retrograde check was moved up\ninto AudioTrack.cpp. This allows us to take advantage of the checks\nfor invalid positions based on timing.\n\nBug: 2047891\nChange-Id: Ifcad2349201443a7f1711347c203297100449536\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "eaa34703cb5f1acedb20cbcdff1ab79c11ff6857",
      "tree": "240ff03be0528d0abb96a8242baf960d5a8062c7",
      "parents": [
        "afc750aa3ac536067180f9714e34f626f8c981b3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ic8ae065dd912cb5ff130e8d78c98fd6bed4e11cc\n"
    },
    {
      "commit": "afc750aa3ac536067180f9714e34f626f8c981b3",
      "tree": "6a7f11f37a3ced6682a511f32a49e9e01ec0cbc9",
      "parents": [
        "1e2a0e6adc3d70879b00e5295c54a74209b71e1b",
        "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:34:40 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 29 19:34:40 2015 +0000"
      },
      "message": "Merge \"Respect the record audio app op - media\" into mnc-dev"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "4c3ba337bacce05165d37f63dfa0b7e845c391e0",
      "tree": "e65e3a9eb9e4ab52a37cc316d6e7aa48ef387f32",
      "parents": [
        "466dc8ed6ca6b7f585104806c48613dd34e608c9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 13:47:27 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 13:47:27 2015 -0700"
      },
      "message": "Check allocation\n\nBug: 20222446\nChange-Id: I2f366a907886cd65e12a6f260a2ec77af6fb7b41\n"
    },
    {
      "commit": "466dc8ed6ca6b7f585104806c48613dd34e608c9",
      "tree": "086bbd91d48e366377c02df8a65a5e2bad8675a6",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Apr 17 13:15:36 2015 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Apr 28 10:46:14 2015 -0600"
      },
      "message": "Explicit routing in AudioRecord\n\nChange-Id: I9cc5d54883a3e5c75d553fabb619fc8e49f4f9e5\n"
    },
    {
      "commit": "dae24729d0b3ced8c4a7d7f9b631e852f564db4f",
      "tree": "c48bf229b8ec7862e0fd6cebf373562b230eddfa",
      "parents": [
        "4275065e89b121fd2f9bd4e0440577348d5ce663",
        "532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Apr 28 03:18:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 28 03:18:37 2015 +0000"
      },
      "message": "Merge \"HDCP: buffer over flow check\" into mnc-dev"
    },
    {
      "commit": "532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72",
      "tree": "208f06d3e06f14286cd88a695b9a6da7106c24f7",
      "parents": [
        "11f88677e9a9405d2b5d7f7bf9b6eec035b6331d"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:38:17 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:39:12 2015 -0700"
      },
      "message": "HDCP: buffer over flow check\n\nbug: 20222489\nChange-Id: I3a64a5999d68ea243d187f12ec7717b7f26d93a3\n"
    },
    {
      "commit": "c721e71f4d7e3cd4fc9332fd55fb6942f54cec39",
      "tree": "d6dbd9af50ecfb1f8b9f0f1ecf3033920008ca8a",
      "parents": [
        "5e95559255d1abd62c78b308731ebe3991186e94"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri Apr 24 15:29:49 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Apr 27 21:22:13 2015 +0000"
      },
      "message": "DO NOT MERGE libmedia: add sub resource type audio-codec and video-codec.\n\nBug: 20559813\nChange-Id: If231cb44337ca7dc74c39fc3cd73e2b6f3cb85b8\n(cherry picked from commit d4c1f6b4ecfef7323422359fc38bd1edb1abf205)\n"
    },
    {
      "commit": "8f9dd872366f54b6260506c75c3d0cc3f9f73f81",
      "tree": "6b20eb7ca59c4c40936e27806f5d76bce005b146",
      "parents": [
        "1ac91ed2c67245ea5052182212463d3f0afe8b5a"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Apr 23 15:24:25 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Apr 23 18:03:30 2015 -0700"
      },
      "message": "mediaresourcemanager: add dumpsys support.\n\nBug: 20233206\nChange-Id: Ic253985e408b05b488e87cd5c50c0d619ac568ef\n"
    },
    {
      "commit": "983f2e02b342ef3ac4004471cbfd4cd8d5aecf7d",
      "tree": "7c2ec64cc3034b84348e96cfe120a9c87efe92e3",
      "parents": [
        "d54514d5e4b326e5dcaaf8b3f336ef31e447f355",
        "5a8a95de6dad1a3bcf3da5a37b35766e89086e13"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 18:47:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 22 18:47:33 2015 +0000"
      },
      "message": "Merge \"Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\""
    },
    {
      "commit": "5a8a95de6dad1a3bcf3da5a37b35766e89086e13",
      "tree": "64b82016eaef26f51b75470714172c06287c9c56",
      "parents": [
        "ea44f41bb142555e747cc11382296e94af99d312"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Sat Apr 18 14:47:04 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 10:57:24 2015 -0700"
      },
      "message": "Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\n\nUse this struct to handle the parameters for TimestretchBufferProvider all\nacross the system.\nAdd stretch mode and fallback mode to TimestretchBuffer Provider.\n\nChange-Id: I19099924a7003c62e48bb6ead56c785cb129fba2\n"
    },
    {
      "commit": "59cea2616269f34b1f3d046995efd8da42cd5549",
      "tree": "c2f165a35105142d715f36876ededb0311360938",
      "parents": [
        "eb204f82afd5519eb544bf8bee692e7152820c3b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 20 11:08:59 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 22 10:14:35 2015 -0700"
      },
      "message": "Add some sanity checks\n\nBug: 19400722\nChange-Id: Ib3afdf73fd4647eeea5721c61c8b72dbba0647f6\n"
    },
    {
      "commit": "493404d8c396e15ed73455acd39aa0f1940996e2",
      "tree": "a07080e7733732fd7273963cca1c93436b86b997",
      "parents": [
        "c9c3804a2caf3c0f96e7a8985f82db7ceef490df"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 15:07:36 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 22 08:12:53 2015 -0700"
      },
      "message": "audio policy: fix AudioTrack output device selection\n\nHave AudioTrack::setOutputDevice() set CBLK_INVALID flag instead\nof calling restoreTrack_l(). This allows restoreTrack_l() to be called in\na safe context.\n\nAllow device change while the AudioTrack is active by forcing a new\ndevice selection in startOutput() if the output route for this\nsession was changed.\n\nRemove some warnings.\n\nChange-Id: I2d921a63c9bfa0e122233645e2d6d39f95f5f17d\n"
    },
    {
      "commit": "f1063e2659cad01ec334a265c31734c63c319cc4",
      "tree": "9444deca08b86fec65754622ec06fbe551a06173",
      "parents": [
        "ee4e1b1a63758941460ae79a064249d3a5189443"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 15:19:42 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 15:20:03 2015 -0700"
      },
      "message": "libmedia: fix all warning, make warnings errors, use clang\n\nChange-Id: Ic00d2c5d0bbb1605e96666e25c9ccc22bea6d3ff\n"
    },
    {
      "commit": "0852843d304006e3ab333081fddda13b07193de8",
      "tree": "f60be26aad988e89bc135a86f6e4ae8853c69a49",
      "parents": [
        "3d66eb4128aebef31bb0fa44c4d53d6122294a26"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Apr 08 09:06:54 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Apr 16 19:01:15 2015 -0700"
      },
      "message": "stagefright: initial timed id3 support in hls\n\nChange-Id: I00a8a786b3f4b74742c34770edd94e937abe20a8\n"
    },
    {
      "commit": "71933d769c54dadb5d8618ccb1ae69a3926f890b",
      "tree": "35a881d80da4100792bad920b3d78f25cf9ba9e0",
      "parents": [
        "ff9863b206cd5d1e856dbfdf66bc85581aee7608",
        "26145643ce22d797b3b1675c82c47a2d8c79ecaa"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 16 20:12:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 16 20:12:07 2015 +0000"
      },
      "message": "Merge \"Work around lack of pitch adjustment in Timestretcher\""
    },
    {
      "commit": "c224ec53a17994fa97ab2f29304647c9f195c51c",
      "tree": "6086a1cf5720b82e7dc25b7ecd60af39d66c738d",
      "parents": [
        "f2326ac96366ec4d05f470cc4a0b407e7805bab7",
        "99f31604136d66ae10e20669fb6b5716f342bde0"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Thu Apr 16 17:06:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 16 17:06:42 2015 +0000"
      },
      "message": "Merge \"Unhide the android.media.[Media]DataSource interface.\""
    },
    {
      "commit": "26145643ce22d797b3b1675c82c47a2d8c79ecaa",
      "tree": "746a243e80e1ac95086b825999822cbdf2302c1d",
      "parents": [
        "c44111b22c26236cb0b32d3fbd1cc9fad3fb28ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 15 21:56:53 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 16 09:58:43 2015 -0700"
      },
      "message": "Work around lack of pitch adjustment in Timestretcher\n\nChange-Id: I3e057b97c250a826133248b6aa1ff9ed677d88df\n"
    },
    {
      "commit": "99f31604136d66ae10e20669fb6b5716f342bde0",
      "tree": "20e64f4f26533b37b087ce8656b1040b8189e24f",
      "parents": [
        "2f33dbc6ca08d45efea2df775c158e2a11e07ab6"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Fri Mar 20 13:06:33 2015 -0700"
      },
      "committer": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Wed Apr 15 17:12:22 2015 -0700"
      },
      "message": "Unhide the android.media.[Media]DataSource interface.\n\nThis allows apps to implement MediaDataSource, which is modeled on\nstagefright\u0027s DataSource, to supply media data to the framework. This\nwas already implemented for MediaExtractor, but it was renamed from\nDataSource.\n\nMediaExtractor, MediaPlayer and MediaMetadataRetriever each have a new\noverload: #setDataSource(android.media.MediaDataSource)\n\nOnly NuPlayer supports this new data source.\n\nThe change introduces:\n * IDataSource:        The binder interface for DataSource.\n * JMediaDataSource:   The native counterpart to the java interface. It\n                       implements IDataSource.\n * CallbackDataSource: A stagefright DataSource that wraps an\n                       IDataSource.\n\nChange-Id: Ib3c944b49cc8a792c8eb9c85e5015c07f298ebc1\n"
    },
    {
      "commit": "554a277d4e42a3d3df3d90ba0e7dfa2d31690e32",
      "tree": "3647500470a7eca8095102a0e2818acb848cdf6a",
      "parents": [
        "3249558196082087fb8bd0a847ef5c6000c8b925"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:29:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 15 23:15:38 2015 +0000"
      },
      "message": "audio policy: add binder calls for audio source control\n\nAdd binder methods to IAudioPolicyService to control activity\nof external audio sources (e.g FM tuner).\n\nChange-Id: I2008308a6a996baeae502b68a790d87281efe2ff\n"
    },
    {
      "commit": "cfdd52423cee9efea73023feeaa74279ebd45b7c",
      "tree": "154c4ea34b3fc95dbde268fb24be2f2915438c78",
      "parents": [
        "5e1c007038df74b389018e762d5059cacecff59e",
        "de80105c3f2db0eabd47640c49387ea3b44d4782"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 15 21:11:49 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 15 21:12:01 2015 +0000"
      },
      "message": "Merge \"AudioPolicyManager: notification of dynamic policy mix activity\""
    },
    {
      "commit": "de80105c3f2db0eabd47640c49387ea3b44d4782",
      "tree": "9775c7bbe30ef1ab13a888def8531cb0f87b1756",
      "parents": [
        "079e121934106860af5ff5491bd3884453d1fdb3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:10:14 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:20:20 2015 -0700"
      },
      "message": "AudioPolicyManager: notification of dynamic policy mix activity\n\nImplement non-stream type specific ref counting in output\n  descriptors to keep track of mix activity.\nNotify audio policy client of mix activity changes.\n\nBug 20226914\n\nChange-Id: Iec939cb640c58056f88947b611d23b4bb6d8a11b\n"
    },
    {
      "commit": "b23cabdb71b98dc5e852f5d06be271696fea92c7",
      "tree": "5fd928f892970e2d905fdfcc502a0204d62a149d",
      "parents": [
        "9e6955a19bf77ebf27b770e910efbe1ebf1ceac0",
        "551b5355d34aa42890811fc3606d3b63429296cd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 14 15:02:11 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 14 15:02:12 2015 +0000"
      },
      "message": "Merge \"AudioRecord::obtainBuffer() can return nonContig like AudioTrack\""
    },
    {
      "commit": "551b5355d34aa42890811fc3606d3b63429296cd",
      "tree": "a55a6f457f11025f653241a58d475fe6a8269be5",
      "parents": [
        "7d669b3551c20109f5544455ca1555499693e1e1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 11:30:28 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 13 18:02:09 2015 -0700"
      },
      "message": "AudioRecord::obtainBuffer() can return nonContig like AudioTrack\n\nAnd fix error handling in both AudioRecord and AudioTrack.\n\nChange-Id: I4853d736cc6d2c05de5b18b0eac62716edfa62ec\n"
    },
    {
      "commit": "9e6955a19bf77ebf27b770e910efbe1ebf1ceac0",
      "tree": "04fbb621d9f9262bdec827d80f9df998a48f90ff",
      "parents": [
        "5795cb168634680fd5c835849c8fcf48dd6f532b"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Mar 26 13:52:57 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Apr 13 18:01:51 2015 -0700"
      },
      "message": "media: handle overrides and measure max codec instance.\n\nBug: 19620911\nChange-Id: I68d5919284700f37ccc6c6b9f96cd87ccdd40e6a\n"
    }
  ],
  "next": "4c1efbc76f1dfeb9427617e451042a12bfb59ad3"
}
