)]}'
{
  "log": [
    {
      "commit": "7b82efe7a376c882f8f938e1c41b8311a8cdda4a",
      "tree": "d7ed69f0a495bc1a873a285ba11e72a9867c5565",
      "parents": [
        "d054c32443a493513ab63529b0c8b1aca290278c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jul 25 17:12:35 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 30 10:58:44 2013 -0700"
      },
      "message": "Camera: Rename new API to camera2, rearrange camera service\n\n - Support API rename from photography to camera2\n - Reorganize camera service files\n   - API support files to api1/, api2/, api_pro/\n   - HAL device support files into device{1,2,3}/\n   - Common files into common/\n   - Camera service remains at top-level\n\nChange-Id: Ie474c12536f543832fba0a2dc936ac4fd39fe6a9\n"
    },
    {
      "commit": "d054c32443a493513ab63529b0c8b1aca290278c",
      "tree": "fc68ba259ded1dd4960bee2938a9bcc7c599c9a3",
      "parents": [
        "96f60d8f04432a1ed503b3e24d5736d28c63c9a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 12 12:59:20 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 09:50:48 2013 -0700"
      },
      "message": "Move control block mName to createTrack() output\n\nThis is part of a series of CLs to clean up the shared memory\ncontrol block, by removing any fields that don\u0027t have to be there.\n\nChange-Id: I6e51003a1293b6800258c31b22cff2eba42162e7\n"
    },
    {
      "commit": "96f60d8f04432a1ed503b3e24d5736d28c63c9a2",
      "tree": "083f6224327e0965a925076b3e1aec5636598203",
      "parents": [
        "97252bb0e40a5a9b41f020163393cf6c5da10b7e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 12 10:21:18 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 09:40:17 2013 -0700"
      },
      "message": "Rename control block flags to mFlags\n\nChange-Id: I7b6d31e24531954ab1ecdf3ed56c19433700bd89\n"
    },
    {
      "commit": "f20e1d8df84c5fbeeace0052d100982ae39bb7a4",
      "tree": "997cd41de1adb829c194f56cf29eb02945666b94",
      "parents": [
        "eced2daaa6c91a3731eef978ce65c6ec319c5e6a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 12 09:45:18 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 09:24:03 2013 -0700"
      },
      "message": "Rename control block server to mServer and add comments\n\nChange-Id: Ieabd91acee92d0e84e66fbd358df5282b856306e\n"
    },
    {
      "commit": "eced2daaa6c91a3731eef978ce65c6ec319c5e6a",
      "tree": "635d4e4f9ed3dccd52f53b1e91db4c4402733c3a",
      "parents": [
        "a30e75897934da2ce7b1b03bcb4b58e139d3e81e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 16 17:17:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 08:44:15 2013 -0700"
      },
      "message": "Use correct type for OutputDescriptor::format\n\nChange-Id: Ide608ef452d57da29b708180d90470361c123d1d\n"
    },
    {
      "commit": "7f249fa9bcb64da324d19f551943fac7686d221c",
      "tree": "76cc14be9525f53fbf910c00884ebe4b5c9988c9",
      "parents": [
        "ae4b5f93444802632d71ec34373842e6f5febbaa",
        "fad226abd12435dbcd232f7de396f1a097b2bd5f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 29 21:13:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 29 21:13:14 2013 +0000"
      },
      "message": "Merge \"Use standard name and type for channel mask\""
    },
    {
      "commit": "3dcd00dddec86a1c5133083ad7ba2265d49c048c",
      "tree": "0cb9279c20e16d3f059739818b71e9b77c185330",
      "parents": [
        "b283374cbf79dc5a36f1eef0015d7baf8881792e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 17 10:10:23 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 29 10:49:59 2013 -0700"
      },
      "message": "Declare methods in binder opcode order\n\nChange-Id: I5f624b7a51ffe1a17a67c056cf984f74e4c56eac\n"
    },
    {
      "commit": "94ea60f975c3eb7ce6d2a4430538a42a5fc3babd",
      "tree": "b16c8a2a59ab68cf0564eefea6c9e68baba56860",
      "parents": [
        "d89532e133b881c7e0dac089333ad7642fc510f1"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Tue May 14 15:52:03 2013 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 10:12:33 2013 -0700"
      },
      "message": "stagefright: offload playback support\n\nOffloading of compressed audio decoding to audio DSP\nis implemented for audio only, non streamed content.\nwhen the datasource is\n\nAudioPlayer:\n- Create an offloaded sink when playing a compressed\nsource\n- Send metadata to audio HAL\n- Return sink start error to AwesomePlayer so that a\nnew player for PCM audio can be created in case of problem.\n- Forward stream end and tear down callback events to AwesomePlayer\n- Stop the sink and wait for stream end callback when EOS is reached.\n- Pause and restart the sink if needed before flushing when seeking\n(otherwise flush is a no op).\n- For current media time, directly query the render position from the\nsink and offset by the start position (seek to time)\n\nAwesomePlayer:\n\n- When initializing the audio decoder, check with audio policy manager\nif offloading is supported. If yes, create the software decoder in\ncase a reconfiguration is needed but connect the audio track directly\nto the AudioPlayer.\n- In case of error when starting the AudioPlayer, reconnect the software\ndecoder (OMXSource) and recreate a PCM AudioPlayer.\n- Handle AudioPlayer tear down event by detroying and recreating the\nAudioPlayer to allow transitions between situations were offloading\nis supported or not.\n- Force tear down of offloaded AudioPlayer when paused for a certain time:\nThis will close the sink and allow the DSP to power down.\n\nUtils:\n- Added helper methods:\n    - send meta data to audio ia sink setParameters\n    - query audio policy manager if offloading is supported for a\ngiven audio content\n\nChange-Id: I115842ce424f947b966d45e253a74d3fd5df9aae\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "d89532e133b881c7e0dac089333ad7642fc510f1",
      "tree": "ba12a120aaf59226926f7a585f8a0cbe2e25aba8",
      "parents": [
        "b1a270d1e926fb9a01b4265a7675ed0c2c8f4868"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Tue May 14 13:18:21 2013 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 09:30:34 2013 -0700"
      },
      "message": "libmediaplayerservice: offload playback support\n\nMain change is to how recycled tracks are used for gapless\nplayback. If we are playing offloaded tracks that can\u0027t be\nrecycled we don\u0027t open a new offloaded output until we have\nclosed the previous one. This is because offloaded tracks\nare a limited resource so we don\u0027t want to spuriously create\nunnecessary instances. If the tracks cannot be recycled\nthis means that the formats are incompatible and so the\nhardware most likely will also be unable to use the existing\noutput channel for the new track. If we already have the\nmaximum number of hardware offload channels open (which could\nbe only one) then creation of the next output would fail if\nwe attempted it while the previous output was still open.\n\nChange-Id: I4f5958074e7ffd2e17108157fee86329506730ea\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "b1a270d1e926fb9a01b4265a7675ed0c2c8f4868",
      "tree": "091d06b02bc126ff1bb2dd1fabc9be829582ae69",
      "parents": [
        "bfb1b832079bbb9426f72f3863199a54aefd02da"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Tue May 14 12:12:21 2013 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 14:08:09 2013 -0700"
      },
      "message": "libmedia: offloaded playback support\n\n- start() returns a status so that upper layers can\nrecreate a non offloaded track in case of error.\n\n- Added states to handle offloaded tracks specific:\n  - waiting for stream end (drain) notification by\naudio flinger\n  - allow pause while waiting for stream end notification\n\n- getPosition() queries the render position directly from\naudio HAL.\n\n- disable APIs not applicable to offloaded tracks\n\n- Modified track restoring behavior for invalidated\noffloaded tracks: just send the callback and wait for\nupper layers to create a new track.\n\n- Added wait for stream end management in audio track client\nproxy. Similar to obtainBuffer and should be factored in.\n\nChange-Id: I0fc48117946364cb255afd653195498891f622bd\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "bfb1b832079bbb9426f72f3863199a54aefd02da",
      "tree": "5007d22456776dc77d124be84bcfe8bc4152bbb2",
      "parents": [
        "fc5ea08326b510c6f82f71845d95a8758a6ab698"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 07 09:53:42 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 14:08:09 2013 -0700"
      },
      "message": "AudioFlinger: offload playback, non-blocking write\n\n- Added specialized playback thread class for offload playback,\nderived from directoutput thread.\nThis thread type handles specific state transitions for offloaded\ntracks and offloading commands (pause/resume/drain/flush..) to audio HAL.\nAs opposed to other threads, does not go to standby if the track is paused.\n\n- Added support for asynchronous write and drain operations at audio HAL.\nUse a thread to handle async callback events from HAL: this avoids locking\nplayback thread mutex when executing the callback and cause deadlocks when\ncalling audio HAL functions with the playback thread mutex locked.\n\n- Better accouting for track activity: call start/stop and release Output\nmethods in audio policy manager when tracks are actually added and removed\nfrom the active tracks list.\nAdded a command thread in audio policy service to handle stop/release commands\nasynchronously and avoid deadlocks with playback thread.\n\n- Track terminated status is not a state anymore. This condition is othogonal\nto state to permitted state transitions while terminated.\n\nChange-Id: Id157f4b3277620568d8eace7535d9186602564de\n"
    },
    {
      "commit": "fad226abd12435dbcd232f7de396f1a097b2bd5f",
      "tree": "4e5214f8f5b142239a9583e79032b70330fa7c8e",
      "parents": [
        "39a60318dcd78b2cb406d2c7dba57cbe9c99c3e7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 16 17:19:58 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 24 17:49:04 2013 -0700"
      },
      "message": "Use standard name and type for channel mask\n\nFormer name \u0027channels\u0027 was ambiguous with respect to channel count.\n\nChange-Id: I716f792d95a7e0c787d27514ad6e93dbcef8a415\n"
    },
    {
      "commit": "2ab500c632569e2f131a1a2288459933da70c4ee",
      "tree": "fe3d1ab19e24e225ea2b6eab9cf2735cda0b2336",
      "parents": [
        "0429aa9322a1419eae0b932491b22f300cd58206"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Jul 23 08:02:53 2013 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Jul 23 11:01:59 2013 -0700"
      },
      "message": "camera2: Implement ICameraDeviceUser::waitUntilIdle\n\nAlso fixed some logging typo\n\nChange-Id: Ib254bdb137dca10b12595c23aeb1c53097423425\n"
    },
    {
      "commit": "4182c4e2a07e2441fcd5c22eaff0ddfe7f826f61",
      "tree": "c7ed5d9b71f919bf664dd0cb6cbdd1c3de2f9241",
      "parents": [
        "0d61251648b5110bfc33ef5b3d19bbf65db0a7b5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 15 14:45:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 09:30:37 2013 -0700"
      },
      "message": "Use AudioSystem::setLowRamDevice() to configure memory\n\nBug: 9798886\nChange-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0\n"
    },
    {
      "commit": "8060060217ff16cd67c8f6a15c649f44c343acf0",
      "tree": "fa0d2d4f680f2303a88e3bcfba2b897fc435e76f",
      "parents": [
        "9d7376a7a4910a61ee4e9b1ad94b125d157882cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 18 14:36:18 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 18 15:11:50 2013 -0700"
      },
      "message": "ANetworkSession and ParsedMessage are now part of stagefright foundation.\n\nAlso fixes some bugs in ParseMessage and adds \"WebSocket\" mode to\nANetworkSession, something that\u0027s opt-in and should not affect existing clients\nof the API.\n\nChange-Id: I86d5748e0d818231d85d3590d86c2b41d4f8b1f1\n"
    },
    {
      "commit": "0b83a15d97f61d575a7cffbf42f9ed6edfa25ccc",
      "tree": "e912aa4e60bf32f870e95c6240c40e08343daee7",
      "parents": [
        "41f9f1ac03c8fd1dee92c33f304663c9ddc2fe5e",
        "e40cda70eec141fa05cbcca1de420fdb22b98be6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 17 22:29:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 17 22:29:43 2013 +0000"
      },
      "message": "Merge \"Support \"suspension\" of a video encoder in \"surface-input\" mode.\""
    },
    {
      "commit": "e40cda70eec141fa05cbcca1de420fdb22b98be6",
      "tree": "44ba825722026f73ceb0c27e5e58c47ab9e884fa",
      "parents": [
        "5478f3c44b9d6670261733953a71a8290fa70ae8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 17 13:55:26 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 17 15:27:31 2013 -0700"
      },
      "message": "Support \"suspension\" of a video encoder in \"surface-input\" mode.\n\ni.e. feed no more input frames to the encoder while suspended.\n\nChange-Id: I51391e18c1517548e869f8ddece19f4af37e78f9\n"
    },
    {
      "commit": "cff1b2359b8a302f19539c0bc5d25c98a52733fd",
      "tree": "e0d7b7b64f4b3a9cf3eb7d2158de59efb4bd0b3a",
      "parents": [
        "bb849b5d1a0364b69aa15ed00709edf4b7e348fc",
        "fb1fdc9d6603aa228362e7349451f6455c9849c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 17 14:44:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 17 14:44:51 2013 +0000"
      },
      "message": "Merge \"Add comments\""
    },
    {
      "commit": "099b457f3203fa51387e21bd450495abb973ab31",
      "tree": "25c6a2d84c5020575cbf2d40f2fbf60107e5c162",
      "parents": [
        "ce177bb31493d3cd4450f9d4760fa1fd32ec6bf4"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 12 17:52:16 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jul 15 13:27:08 2013 -0700"
      },
      "message": "camera2: Implement ICameraDeviceUser::getCameraInfo\n\nBug: 9529161\nChange-Id: I927e39c124cd5fb19e38423506f4463acc381cb0\n"
    },
    {
      "commit": "ce177bb31493d3cd4450f9d4760fa1fd32ec6bf4",
      "tree": "7e892378eed7bc22e051862e4a07d72894740648",
      "parents": [
        "303d783cc3c0cc47bfd2f64ed13104e339427e34",
        "7db7df0e8d9d7cee8ba374468cdbfa0108e3337c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 11 20:11:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 11 20:11:55 2013 +0000"
      },
      "message": "Merge \"AudioTrackShared cleanup\""
    },
    {
      "commit": "fb1fdc9d6603aa228362e7349451f6455c9849c2",
      "tree": "1caac6c881db81bcfedb596b292ce62ecbaf6a2c",
      "parents": [
        "551ababe67ce31778000d52958e53e1c56e1a294"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:03:19 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:08:15 2013 -0700"
      },
      "message": "Add comments\n\nChange-Id: Ifbf3a46a4183c8abc0feee1c588953ab10303cc1\n"
    },
    {
      "commit": "993994375abd60ec2c6bfd503c0e06ec3a23eeee",
      "tree": "f16b69690d82290645d4814feb6c39301f18fa68",
      "parents": [
        "69adec56fe13a2154cf9388c6e8725c6b6861b74",
        "921832327619f7852b16f73a19504702c5a28a31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 08 15:40:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 08 15:40:30 2013 +0000"
      },
      "message": "Merge \"mv libcpustats from frameworks/native to frameworks/av\""
    },
    {
      "commit": "7db7df0e8d9d7cee8ba374468cdbfa0108e3337c",
      "tree": "d1f5c23d596c07854e75999dbf333194d500aaa5",
      "parents": [
        "8f13428cb29a9b610a9e9a0f5fea437cd2d3f032"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 25 16:13:23 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 02 14:45:19 2013 -0700"
      },
      "message": "AudioTrackShared cleanup\n\nMaintain unreleased frame count on client side also (was already there on server side).\nAssertion failure instead of BAD_VALUE status for incorrect usage of APIs.\nClean up error handling code.\n\nChange-Id: I23ca2f6f8a7c18645309ee5d64fbc844429bcba8\n"
    },
    {
      "commit": "1ab85ec401801ef9a9184650d0f5a1639b45eeb9",
      "tree": "c3a39f141461642c3ac3c7f1370ca679d08d80e6",
      "parents": [
        "8f13428cb29a9b610a9e9a0f5fea437cd2d3f032"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 31 09:18:43 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 02 13:43:24 2013 -0700"
      },
      "message": "Include what is needed\n\nRemove old includes.\nHeader files only include other header files that they directly need themselves.\n\nChange-Id: Ic471386808d9f42ea19ccbd59cb50a5f83a89dd0\n"
    },
    {
      "commit": "ad3af3305f024bcbbd55c894a4995e449498e1ba",
      "tree": "2e242d4c49cce9faefc28665c6ee63a2a5da170c",
      "parents": [
        "7919fa2c33b1fa7f5e49b2188d671bfe519c231e"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Mon Mar 25 16:54:37 2013 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 27 17:16:24 2013 -0700"
      },
      "message": "Public API changes for audio offload support.\n\nNOTE: this does _not_ include all private member variables added\nto classes as part of offload support. Only public/protected functions\nand stubs functions/variables needed to make the changes buildable.\n\n- isOffloadSupported() added to audio policy service\n    A stub implementation is required to build, this always returns false\n- setParameters() added to IAudioTrack\n    A stub implementation is required to build, this always returns\n    INVALID_OPERATION\n\n- CBlk flag for stream end\n\n- Change AudioSystem::getRenderPosition() to take an audio_output_t\n    so caller can specify which output to query\n\n- Add AudioSystem::isOffloadSupported()\n    This is fully implemented down to the AudioFlinger function\n    AudioPolicyServer::isOffloadSupported() which is just a stub\n    that always returns false.\n\n- Add EVENT_STREAM_END to AudioTrack interface.\n    STREAM_END is used to signal when the hardware has actually finished\n    playing all the data it was sent.\n\n- Add event type enumeration to media player interface AudioSink callbacks\n    so that the same callback can be used to handle multiple types of\n    event. For offloaded tracks we also have to handle STREAM_END and\n    TEAR_DOWN events\n\n- Pass audio_offload_info_t to various functions used for opening outputs,\n    tracks and audio players. This passes additional information about the\n    compressed stream down to the HAL when using offload.\n    For publicly-available APIs this is an optional parameter (for some of\n    the internal and low-level APIs around the HAL interface it is mandatory)\n\n- Add getParameters() and setParameters() API to AudioTrack\n    Currently dummy implementations.\n\n- Change AudioPlayer contructor so that it takes a set of bitflags defining what\n    options are required. This replaces the original bool which only specified\n    whether to use deep buffering.\n\n- Changes to StageFright class definition related to handling tearing-down of\n    an offloaded track when we need to switch back to software decode\n\n- Define new StageFright utility functions used for offloaded tracks\n    Currently dummy implementations.\n\n- AudioFlinger changes to use extended audio_config_t.\n    Fills in audio_offload_info_t member if this info is passed in when\n    opening an output.\n\n- libvideoeditor changes required to add the new event type parameter\n    to AudioSink callback functions\n\n- libmediaplayerservice changes required to add the new event type parameter\n    to AudioSink callback functions\n\nChange-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1\nSigned-off-by: Richard Fitzgerald \u003crf@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "3b6d6b1b95b9aefc4b2c78808ad7c873f1e8f0f5",
      "tree": "cff1198ade127c231b63935ef66605614f79b957",
      "parents": [
        "01128a03c85521d463f12e751e887ddbd90895d5",
        "94705aff3c9eef58cbb72ec6fe5d2dcfd9481646"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 25 22:07:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 25 22:07:56 2013 +0000"
      },
      "message": "Merge \"Adds VP9 decoding support for stagefright.\""
    },
    {
      "commit": "269e91be6fc7434cbc60b69df4bf348238ea15fc",
      "tree": "f9c5b984b45033c184bd9f7985b200046d9da0dc",
      "parents": [
        "d44ffc822be382791327c45aec2e812fe66981ce",
        "0d09a9bec07b3bec78bd473ff0bfcf0a261f3f25"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 25 14:33:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 25 14:33:06 2013 +0000"
      },
      "message": "Merge \"Use mFutex as an event flag rather than semaphore\""
    },
    {
      "commit": "d44ffc822be382791327c45aec2e812fe66981ce",
      "tree": "def466e442e0e27274fe5a66f27f95f934ec4239",
      "parents": [
        "b68fc2639e5eeacc47dcff1371a106ae9589bf89",
        "98e24724fb77445d4d015a5fec4ecbd5b49abc9b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Jun 25 00:38:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 25 00:38:04 2013 +0000"
      },
      "message": "Merge changes I5b2eeab2,I71568560\n\n* changes:\n  Make android.hardware.photography.Camera work on HAL3+ devices\n  Initial implementation of android.hardware.photography.CameraDevice (service)\n"
    },
    {
      "commit": "0d09a9bec07b3bec78bd473ff0bfcf0a261f3f25",
      "tree": "410d8c22e5d15f9143d04212cd96939c217cacc5",
      "parents": [
        "a2cf13c77260f98fc674f103dcbd2bb2488a80ce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 24 12:06:46 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 24 13:34:08 2013 -0700"
      },
      "message": "Use mFutex as an event flag rather than semaphore\n\nAn event flag can be more fault-tolerant in case of loss of synchronization,\nas it cannot overflow.  It also allows more bits to be used in the future.\nSee http://en.wikipedia.org/wiki/Event_flag\n\nChange-Id: I01ca25d951eb263124da54bb4738f0d94ec4a48b\n"
    },
    {
      "commit": "94705aff3c9eef58cbb72ec6fe5d2dcfd9481646",
      "tree": "a6129de4a9abf49499bfc4639587a2627c0370ab",
      "parents": [
        "078a540525f86517aefa4afc56e12fbd74e3823d"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Jun 24 11:21:17 2013 -0700"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Mon Jun 24 20:29:08 2013 +0000"
      },
      "message": "Adds VP9 decoding support for stagefright.\n\nAlso change the VP8 encoder role name from \nvideo_encoder.vpx to video_encoder.vp8 for \nfuture VP9 encoder support.\n\n\nRequires the change in frameworks/native and media_codecs.xml \ncorresponding to the device.\n\n\nVP9 decoding test will be added to cts repo later.\n"
    },
    {
      "commit": "054e7347cc60ad4b9dd2e8f456406f122f9f5879",
      "tree": "40ccea97e1697294e3cb32251cc729dfacda0ab5",
      "parents": [
        "d77312bbaa86c68f9f43a68b2786e8875769d3c4"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu May 02 16:37:36 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jun 21 16:16:30 2013 -0700"
      },
      "message": "stagefright: support for video decoder metadata mode\n\nChange-Id: Id360f29236798163f9f3a82135f601083a8a5058\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 7093648\n"
    },
    {
      "commit": "e7ee7637747371635a85fedd24d2190bb1f38651",
      "tree": "fbae6cce035752d5386260deb4bf0222b6204ac3",
      "parents": [
        "b3570568b3f37b3f7018257ece53cbc009b91407"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Jun 11 18:10:18 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 20 20:31:30 2013 -0700"
      },
      "message": "Initial implementation of android.hardware.photography.CameraDevice (service)\n\n* Verified preview streaming requests\n* Other things *should* work but unverified / unimplemented in client side\n\nMissing:\n* CameraService needs to return static camera info metadata\n\nBug: 9213377\nChange-Id: I71568560fcf18d0e2b408ed1c4d0066647314868\n"
    },
    {
      "commit": "921832327619f7852b16f73a19504702c5a28a31",
      "tree": "a1afa1d43c56ae1aca3fa5b972a8711d9bb53983",
      "parents": [
        "078a540525f86517aefa4afc56e12fbd74e3823d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 18 09:39:15 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 18 09:39:15 2013 -0700"
      },
      "message": "mv libcpustats from frameworks/native to frameworks/av\n\nOK to lose history\n\nChange-Id: Ieca78edc5dfe479dd7ea48fe7e0f3c164356cee3\n"
    },
    {
      "commit": "e2ffd5b583da9d30d96710b0e8879e90b2b51d30",
      "tree": "9e03c688b0f8d3c807de2ca4233552eeb756a8cd",
      "parents": [
        "04411d3ed343added179703837c6c24444acce3b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 13 13:47:02 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 13 14:02:18 2013 -0700"
      },
      "message": "AudioRecord must be used as sp\u003c\u003e only\n\nBug: 9423855\nChange-Id: I78ba8228c60dff11fb466156bb632c5dda45cdaf\n"
    },
    {
      "commit": "9f80dd223d83d9bb9077fb6baee056cee4eaf7e5",
      "tree": "79f19f80ebb7978e9bab16e1d9b835849c735592",
      "parents": [
        "9fef8d453b15a91a2b748faac2bfaff713bcf1e1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 15:57:32 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 12 14:33:10 2013 -0700"
      },
      "message": "New control block for AudioTrack and AudioRecord\n\nMain differences between old and new control block:\n - removes the mutex, which was a potential source of priority inversion\n - circular indices into shared buffer, which is now always a power-of-2 size\n\nChange-Id: I4e9b7fa99858b488ac98a441fa70e31dbba1b865\n"
    },
    {
      "commit": "63e9f73c2db01fec30246adbcfea2880671e2108",
      "tree": "e77ece5239d9503fed78872ecbaa216649a22a78",
      "parents": [
        "fe9a901a445633e70073b1b91fca3af34d8e8132",
        "f8af99b7c10f1441d9a52676724b168f20752270"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Jun 12 09:32:30 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 12 09:32:30 2013 -0700"
      },
      "message": "am f8af99b7: am 0662f7b6: Merge \"stagefright: synchronously change nativewindow crop\" into jb-mr2-dev\n\n* commit \u0027f8af99b7c10f1441d9a52676724b168f20752270\u0027:\n  stagefright: synchronously change nativewindow crop\n"
    },
    {
      "commit": "577db6d42b8d83b3578c7e56b1391bdaca9cb705",
      "tree": "da9bdc4e1980dbecab0f4b43bb0ad777aa1e59cd",
      "parents": [
        "ea26c7772f4721657db409068d4bed194ae49c94"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 11 17:56:24 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 11 18:50:48 2013 -0700"
      },
      "message": "stagefright: synchronously change nativewindow crop\n\nOnly change the nativewindow crop before queuing frames\nwith the new crop.\n\nChange-Id: Icd8a84c82e66a8be3d6bc1675c777b1de8dc39b9\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 9395753\n"
    },
    {
      "commit": "31295e781598929a75d5774814a25f5f22b78236",
      "tree": "8e7a0c6cdcb67f71ea4033c8aa76965c0d4e4d6b",
      "parents": [
        "5e07157c8f69030b4f9bdabded76f84fd4c91fd7",
        "bef3f23f16f2fc575b3f425febcfcc436a7db70f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Jun 11 20:44:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 11 20:44:58 2013 +0000"
      },
      "message": "Merge \"camera: Make some binder interfaces compatible with AIDL\""
    },
    {
      "commit": "bef3f23f16f2fc575b3f425febcfcc436a7db70f",
      "tree": "ed5a5ee004fe8736171a73a860ace99194d425de",
      "parents": [
        "55beec78a47a32288a01dde7fbc08406aa44345a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu May 30 17:47:38 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Jun 11 11:47:47 2013 -0700"
      },
      "message": "camera: Make some binder interfaces compatible with AIDL\n\nDone:\n* ICameraService\n* ICameraServiceListener\n\nPartial:\n* ICamera (disconnect only)\n* IProCameraUser (disconnect only)\n\nBug: 9213377\nChange-Id: I8e2e6e05cfd02ec36be1d5b2c551f10ffb43b5b4\n"
    },
    {
      "commit": "2799d743ee2ae5a25fe869a7f9c052acc029559f",
      "tree": "5cab5ff06f7cae0025b93fdcd549cfb2ec72b755",
      "parents": [
        "7c684c622110af460025eff85082030947278430"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 30 14:33:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 03 11:28:36 2013 -0700"
      },
      "message": "Use sp\u003cAudioTrack\u003e instead of raw AudioTrack *\n\nThis change prepares for the new implementation of AudioTrack client, which\nwill require clients to use only sp\u003cAudioTrack\u003e, not raw AudioTrack *.\nA raw delete will cause a race condition during AudioTrack destruction.\n\nAudioTrack was made a RefBase by commit b68a91a70bc8d0d18e7404e14443d4e4020b3635\non 2011/11/15, when it was needed by OpenSL ES (for the callback protector).\nAt that time, the only other client that was also converted from\nAudioTrack * to sp\u003cAudioTrack\u003e was android.media.AudioTrack JNI in\nproject frameworks/base (file android_media_AudioTrack.cpp).\n\nDetails:\n * Use .clear() instead of delete followed by \u003d NULL.\n * ALOG %p need .get().\n * sp\u003c\u003e don\u0027t need to be listed in constructor initializer, if initially 0.\n * Use \u003d\u003d 0 for sp\u003c\u003e vs \u003d\u003d NULL for raw pointers.\n * Use if (sp !\u003d 0) instead of if (raw).\n\nChange-Id: Ic7cad25795d6e862e112abdc227b6d33afdfce17\n"
    },
    {
      "commit": "7c684c622110af460025eff85082030947278430",
      "tree": "3e29ab57fde237f80242d1c479968126d757368f",
      "parents": [
        "faca94d1773afb50fb8aa4eb00ca213d7c9d2bec",
        "f9bb8358e454be6dc88403171db7e0e182407f17"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 03 08:48:27 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 03 08:48:27 2013 -0700"
      },
      "message": "am f9bb8358: am b7319a7e: Update HTTP proxy configuration for all media playback inside stagefright.\n\n* commit \u0027f9bb8358e454be6dc88403171db7e0e182407f17\u0027:\n  Update HTTP proxy configuration for all media playback inside stagefright.\n"
    },
    {
      "commit": "b7319a7eb0a06ef4fd3a0c9157ee63e637ad7aa1",
      "tree": "6dc90cde609f708f45ae08af2bdc5f9cd2df4bb3",
      "parents": [
        "41688da226e91c97ea3b2fe096044e1e5b0520bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 29 14:20:52 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 31 15:31:56 2013 -0700"
      },
      "message": "Update HTTP proxy configuration for all media playback inside stagefright.\n\nChange-Id: Ie0dd00045aba668d8b49da73224e7a7c9c04f69b\nrelated-to-bug: 8873723\n(cherry picked from commit 2704965b8a1ff3b7450ff58ccecf86d8ec688c40)\n"
    },
    {
      "commit": "c3a73bb6446df8c1387a2b3ff9357190f515eccb",
      "tree": "cf0c5f868e7fbd3b8e543b20d3d0aa5dae5133f1",
      "parents": [
        "b07198a11f251d0cf0f4b3084764323f2bd38e9e",
        "1cd68527a6c4cc92608dfe8a8c6ba51e5e2c4fc2"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed May 29 15:21:25 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 29 15:21:25 2013 -0700"
      },
      "message": "am 1cd68527: am 41688da2: Merge \"MediaMuxer: Remove SAMPLE_FLAG_SYNC flag\" into jb-mr2-dev\n\n* commit \u00271cd68527a6c4cc92608dfe8a8c6ba51e5e2c4fc2\u0027:\n  MediaMuxer: Remove SAMPLE_FLAG_SYNC flag\n"
    },
    {
      "commit": "6f505a4c0b91d88d2759fbd7e17d91f3ed715165",
      "tree": "396e40ad43db7979414951cbcff50c09fa3a2181",
      "parents": [
        "6f6b31da6097f1d770137ebadac5023dd8b79413"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue May 28 10:11:35 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue May 28 16:22:02 2013 -0700"
      },
      "message": "MediaMuxer: Remove SAMPLE_FLAG_SYNC flag\n\nMediaMuxer.writeSampleData() uses MediaCodec.BufferInfo\nobjects to specify the flags, so use directly the MediaCodec\nflags.  This is more intuitive and avoids users of the\nMediaMuxer API having to create translations between\nMediaMuxer\u0027s and MediaCodec\u0027s flag constants.\n\nChange-Id: I18e12a6839ffb2c63da62516a4dc4c94e8bb3d17\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 9169479\n"
    },
    {
      "commit": "d030447b617105b31bf3013e5e4b39d422b53b77",
      "tree": "3fd684f2a58933a94692c3d23da22087d3da29ea",
      "parents": [
        "599d83e4f2197968d77d3d106630179c88c8a6d7"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed May 15 12:59:19 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 22:18:58 2013 +0000"
      },
      "message": "stagefright: BufferProducer updates\n\nUpdate BufferQueue and ConsumerBase users to new BufferQueue\nAPI, to allow BufferQueue slots to be reused.  Buffer consumers\ngenerally now need to track the unique frameNumber belonging to\neach frame acquired if they are using BufferQueue directly.\nOtherwise, they can simply track the graphicBuffer.\n\nChange-Id: I30ee3158cf40fb10bbd085241646d5f1128ee480\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nRelated-to-bug: 7093648\n"
    },
    {
      "commit": "308bcaa44e578279e61be32b572fdb0b11b1e4c7",
      "tree": "3b76d5e38e37ca9f59c689bfb6aef11a75a35249",
      "parents": [
        "6d101328e34557fa251b7d52d4d8dbf59620d099"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 03 21:54:17 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 17 16:18:28 2013 -0700"
      },
      "message": "wifi-display: add support for metadata mode on encoder output\n\npass buffer_handle_t from encoder output to HDCP encryptor input\n\nBug: 8968123\n\nChange-Id: Iea8007ce568641e213fd2e3cf6947a6f7a95746c\n"
    },
    {
      "commit": "61aa989a5768b9b0571ca14edaf15886509a0ec8",
      "tree": "e272f0ac691569a8c5a54ecb5910f277afe369ca",
      "parents": [
        "b0864b6a20dc2e72bd6d08ad3c06f0fa5cef92e0",
        "1641f328d4de3b2b61481607dc482ccaefe808a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 14:54:07 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 03 14:54:07 2013 -0700"
      },
      "message": "am 1641f328: am 4170f515: Merge \"Remove timing jitter during startup of audio\" into jb-mr2-dev\n\n* commit \u00271641f328d4de3b2b61481607dc482ccaefe808a9\u0027:\n  Remove timing jitter during startup of audio\n"
    },
    {
      "commit": "a6560120f96685d7929d535319198485d1d5ccdf",
      "tree": "0253af44cdc42fc828e84953531f36807ebc4f91",
      "parents": [
        "98e099aca2089decdf3486ae216c89766cc252f2",
        "f8197a6a9d9363cb52bb8a2c15c0e5a52064355e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:39:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 03 15:39:53 2013 +0000"
      },
      "message": "Merge \"Remove timing jitter during startup of audio\" into jb-mr2-dev"
    },
    {
      "commit": "4170f515cd6148b952a07fcbe23364f5c76a2d9c",
      "tree": "0253af44cdc42fc828e84953531f36807ebc4f91",
      "parents": [
        "2628bc9d1261c2942f3506baca348ccd71ea9c86",
        "a07f17ca46db04c9d5d9e7d6b2878db59ca2b9ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:39:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 03 15:39:53 2013 +0000"
      },
      "message": "Merge \"Remove timing jitter during startup of audio\" into jb-mr2-dev"
    },
    {
      "commit": "1f9374bad4f59d619ef30f227705a926dabf41d5",
      "tree": "c4921b833596d2392d5fc01af36a56ca21f1b1c7",
      "parents": [
        "7d710e1fb373d338a166560abdb90fde0c0213ef",
        "9db1b382c279f992dcd33a56226b1f5d2a24afca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 01 14:50:07 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 01 14:50:07 2013 -0700"
      },
      "message": "am 9db1b382: am deff6910: Merge \"Support MediaCodec::getOutputFormat for encoders\" into jb-mr2-dev\n\n* commit \u00279db1b382c279f992dcd33a56226b1f5d2a24afca\u0027:\n  Support MediaCodec::getOutputFormat for encoders\n"
    },
    {
      "commit": "cd4ac42ed448f1cb286ca4c3c7ea64621adf9d42",
      "tree": "98644c0a023592c279075dc36ccae40fc8a9505d",
      "parents": [
        "948700612e987b49185f7916befd38f39a2b0a3b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:08:47 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:11:50 2013 -0700"
      },
      "message": "Support MediaCodec::getOutputFormat for encoders\n\ncodec specific data is provided as part of the MediaFormat if available.\n\nChange-Id: I5a79c936e2411fe66ebc694791071faefc33941e\nrelated-to-bug: 8616651\n"
    },
    {
      "commit": "e96ee699aca0f711d41e6c0833e5de2341c4a36d",
      "tree": "98644c0a023592c279075dc36ccae40fc8a9505d",
      "parents": [
        "b7e2ef14a93974935783e71829f4b3174001a0fb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:08:47 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:11:50 2013 -0700"
      },
      "message": "Support MediaCodec::getOutputFormat for encoders\n\ncodec specific data is provided as part of the MediaFormat if available.\n\nChange-Id: I5a79c936e2411fe66ebc694791071faefc33941e\nrelated-to-bug: 8616651\n"
    },
    {
      "commit": "f8197a6a9d9363cb52bb8a2c15c0e5a52064355e",
      "tree": "efad34614c9d7e77ed830768279005004376bbb2",
      "parents": [
        "1e25b79b28e578c43607faf100dcaf4cf068f05a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 12:39:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 14:18:18 2013 -0700"
      },
      "message": "Remove timing jitter during startup of audio\n\nThis fixes a regression introduced recently, that increased timing jitter\nduring the startup of the FastMixer and AudioTrack callback threads.\n\nThe regression was to make requestPriority() asynchronous as a way to\navoid an apparent priority inversion in system_server.  This means that\nthe target thread could run briefly with the initial priority, before\nthe new priority takes effect.\n\nThis change removes the startup jitter for FastMixer, by making the\nrequestPriority() synchronous again for that case.  It doesn\u0027t matter\nthat this restores the priority inversion involving normal mixer thread,\nbecause it happens during startup of both threads.\n\nThe change also removes the startup jitter for the AudioTrack callback\nthread, by having the target thread check whether the requestPriority()\nhas completed yet.  If not, the target thread blocks with a timeout\nuntil the priority boost finishes.\n\nFinally, we now log an error message if the expected priority boost\ndoesn\u0027t happen.\n\nBug: 8698989\nChange-Id: Id590e9a274b70ec1ba85b44a585ee37a22e41cbc\n"
    },
    {
      "commit": "a07f17ca46db04c9d5d9e7d6b2878db59ca2b9ea",
      "tree": "5f35039b1b7ed7518280e9a436536600a5aac5c9",
      "parents": [
        "5e43772296d7c5b8faf4b0ce4efe68778729bc74"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 12:39:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 14:18:18 2013 -0700"
      },
      "message": "Remove timing jitter during startup of audio\n\nThis fixes a regression introduced recently, that increased timing jitter\nduring the startup of the FastMixer and AudioTrack callback threads.\n\nThe regression was to make requestPriority() asynchronous as a way to\navoid an apparent priority inversion in system_server.  This means that\nthe target thread could run briefly with the initial priority, before\nthe new priority takes effect.\n\nThis change removes the startup jitter for FastMixer, by making the\nrequestPriority() synchronous again for that case.  It doesn\u0027t matter\nthat this restores the priority inversion involving normal mixer thread,\nbecause it happens during startup of both threads.\n\nThe change also removes the startup jitter for the AudioTrack callback\nthread, by having the target thread check whether the requestPriority()\nhas completed yet.  If not, the target thread blocks with a timeout\nuntil the priority boost finishes.\n\nFinally, we now log an error message if the expected priority boost\ndoesn\u0027t happen.\n\nBug: 8698989\nChange-Id: Id590e9a274b70ec1ba85b44a585ee37a22e41cbc\n"
    },
    {
      "commit": "2431f75b3e1c820215ad6d86e2383a40eb09012f",
      "tree": "bd7438cbed52936c283114a569bbefdd60d34596",
      "parents": [
        "15f227174e4b606f71f14efa1275c0f85bfc7011",
        "a93686a4ace1e38eb6fa5da8fc97e97a19f4ac5c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 22 09:21:28 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 22 09:21:28 2013 -0700"
      },
      "message": "am a93686a4: am 4613b7e3: Merge \"3rd time\\\u0027s the charm, right? Fix another instance where MediaCodec would\" into jb-mr2-dev\n\n* commit \u0027a93686a4ace1e38eb6fa5da8fc97e97a19f4ac5c\u0027:\n  3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\n"
    },
    {
      "commit": "fa189d0d74d8da0ab19c8d9c6cd16fa80d406e9c",
      "tree": "c7bf0610f50acbccee428211f1462eebf8763662",
      "parents": [
        "22ce7101128e32648fc2178800baee0ba9a75a70",
        "45f1f86eb97356b73811fc4d70af437c55a86dd7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 22 09:21:27 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 22 09:21:27 2013 -0700"
      },
      "message": "am 45f1f86e: am f0fba380: Merge \"A flush of a video decoder connected to a native window must reclaim\" into jb-mr2-dev\n\n* commit \u002745f1f86eb97356b73811fc4d70af437c55a86dd7\u0027:\n  A flush of a video decoder connected to a native window must reclaim\n"
    },
    {
      "commit": "6e96f5927bd2234606ad3fcef1c1dc3029e66347",
      "tree": "3f835ca3e388cfdaa3c2522adca65bdd09856222",
      "parents": [
        "20ab26dbe54cd9ef81072c492bc466c0c4da46d8",
        "6b5d15099579c179d8e7531bb5abfb272614513a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 22 16:15:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 22 16:15:52 2013 +0000"
      },
      "message": "Merge \"3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\" into jb-mr2-dev"
    },
    {
      "commit": "4613b7e38b1830535cbf00e962afdfa5fe1308ba",
      "tree": "cde811c82bd8091477a472b6db99fa87d6410236",
      "parents": [
        "d090054d5087b02a6a410633c4109d5901c524ba",
        "aa7f97bb9c70176245ffb7ed0ce52bee6c1a57d7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 22 16:15:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 22 16:15:52 2013 +0000"
      },
      "message": "Merge \"3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\" into jb-mr2-dev"
    },
    {
      "commit": "6b5d15099579c179d8e7531bb5abfb272614513a",
      "tree": "79b6eb792a15126761fa391ce5ce38a74173267c",
      "parents": [
        "19c04c90478c4c5b8558a9b94713da148b4aa64c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "message": "3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\n\nnot return from a stop() or release() call if mediaserver dies at just the right\nmoment.\n\nChange-Id: I7728f8df82d62602d4d272f8023aa88678dd7d95\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "aa7f97bb9c70176245ffb7ed0ce52bee6c1a57d7",
      "tree": "d556f030941a5258e975b99a1bebc23f78b562eb",
      "parents": [
        "1de65a91b9d174b26b594073eb1ee0dcccb31819"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "message": "3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\n\nnot return from a stop() or release() call if mediaserver dies at just the right\nmoment.\n\nChange-Id: I7728f8df82d62602d4d272f8023aa88678dd7d95\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "7e7013392e302a28364df1dcee79b82ad90978b4",
      "tree": "ee9f2317760de6f622d6242eb78a1d8bae2b15e6",
      "parents": [
        "64595e6727c478d3d80c7babbecdb470398f8c42"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "message": "A flush of a video decoder connected to a native window must reclaim\n\noutput buffers already queued for rendering before considering a flush\ncompleted. Otherwise the decoder may not have enough output buffers to\ncontinue decoding after the discontinuity and we\u0027ll never dequeue more\nfrom the native window.\n\nChange-Id: I42e275dc336568e180081c6d7c0dc05fc9637c79\nrelated-to-bug: 8578467\n"
    },
    {
      "commit": "0ae2001f40587556e2f5ed56f791292fb5e9a329",
      "tree": "8b4980c76a87eb6826399dc11d8d771ee9628fcb",
      "parents": [
        "005bb86bd99077283df1968958d5c514a3bfa16a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "message": "A flush of a video decoder connected to a native window must reclaim\n\noutput buffers already queued for rendering before considering a flush\ncompleted. Otherwise the decoder may not have enough output buffers to\ncontinue decoding after the discontinuity and we\u0027ll never dequeue more\nfrom the native window.\n\nChange-Id: I42e275dc336568e180081c6d7c0dc05fc9637c79\nrelated-to-bug: 8578467\n"
    },
    {
      "commit": "5051b5303155d65c92da9d81135fe7832742ae59",
      "tree": "d01b1a758f7385c44bb27167abc5f3e26d6b1cea",
      "parents": [
        "96c9b6e02b440428397591e2a36eb6af7e0fdab9",
        "3ee3550a2f529cbf56d87d8503f59a8f45dccf32"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Apr 18 22:44:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 18 22:44:34 2013 +0000"
      },
      "message": "Merge \"Camera: Add preview callback surface support\""
    },
    {
      "commit": "96c9b6e02b440428397591e2a36eb6af7e0fdab9",
      "tree": "b8f9ad050925b7404ab31f6f2e358331ccf28616",
      "parents": [
        "503261ce9e616b16056e54c37e1e3dfdc1077763",
        "4d9df49a128dba70b68890c81bf172c11fd40233"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 17:59:31 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 17 17:59:31 2013 -0700"
      },
      "message": "am 4d9df49a: am 64595e67: Merge \"Add new error codes for DRM to improve error reporting\" into jb-mr2-dev\n\n* commit \u00274d9df49a128dba70b68890c81bf172c11fd40233\u0027:\n  Add new error codes for DRM to improve error reporting\n"
    },
    {
      "commit": "45ae3d644289f656cebf7aded0783efca0342dd3",
      "tree": "aae0a4b81b904e58964561c9210fa9436c61a7d7",
      "parents": [
        "423e33ce6569cb14ecf772e9670208517f7b30c4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "message": "Add new error codes for DRM to improve error reporting\n\nbug: 8621516\nChange-Id: I9a06c9ea5bfde924906d3876a417b9451b6abde8\n"
    },
    {
      "commit": "b87d5cd72cc2ce6a85899b7a06d881fad4c39d77",
      "tree": "950a65ce5d89df71a84c698a85b55d9b44deffaa",
      "parents": [
        "1808736b17073b2fdb82a87abf103cbd31aba4fc"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "message": "Add new error codes for DRM to improve error reporting\n\nbug: 8621516\nChange-Id: I9a06c9ea5bfde924906d3876a417b9451b6abde8\n"
    },
    {
      "commit": "3ee3550a2f529cbf56d87d8503f59a8f45dccf32",
      "tree": "99bf718ddc0429a1319523abaae975d3305face3",
      "parents": [
        "d72ec85d1d0b92ed82927e3925f21912a659b799"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Apr 02 15:45:11 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Apr 17 15:01:08 2013 -0700"
      },
      "message": "Camera: Add preview callback surface support\n\n- Add call to set a preview callback surface\n- Implement support for HAL2/3 devices\n- Still need HAL1 implementation\n\nChange-Id: I0dc0bd72e43d871aa487858d1665c1efca633ffe\n"
    },
    {
      "commit": "ea29f0da58add214f79ed148ad0321cef0777e54",
      "tree": "79cebb1b6765eef913071f897e045f0448ced16f",
      "parents": [
        "d72ec85d1d0b92ed82927e3925f21912a659b799",
        "a768b4f838f93823f661422d8193ebbff64b1b5a"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 11:41:14 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 15 11:41:14 2013 -0700"
      },
      "message": "am a768b4f8: am 8f1efee1: Merge \"MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\" into jb-mr2-dev\n\n* commit \u0027a768b4f838f93823f661422d8193ebbff64b1b5a\u0027:\n  MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\n"
    },
    {
      "commit": "8f1efee1c17e997af5ea3c46c62b3ae106b18264",
      "tree": "18392c33567980ddbb6fc193817113489027f335",
      "parents": [
        "5ce9c299a64a1568165fc66adb2cf68d89198a90",
        "de05c8eab188e98798f2b9c3dfac53dbc18ef584"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "message": "Merge \"MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\" into jb-mr2-dev"
    },
    {
      "commit": "cb7032acc963e447adbffcf95ee297643d64e0d7",
      "tree": "6730cb92f1e131486be08516488b3caff5ff4f99",
      "parents": [
        "474c6539e3592aece37616d0b39ef008b61260a0",
        "e756d9753c7cffe2e9731a31fa98a3e8f37151c9"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "message": "Merge \"MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\" into jb-mr2-dev"
    },
    {
      "commit": "de05c8eab188e98798f2b9c3dfac53dbc18ef584",
      "tree": "5f1023f6cf5770bc3cdbbda03af68a62ff2eebcf",
      "parents": [
        "848621d519636e2abdb8575ba0f964efc53da0d5"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Apr 12 13:50:38 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 10:48:33 2013 -0700"
      },
      "message": "MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\n\nBy default, MPEG4Write will keep running in real time recording mode.\n\nbug:8598944\n\nChange-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf\n"
    },
    {
      "commit": "e756d9753c7cffe2e9731a31fa98a3e8f37151c9",
      "tree": "d8d6d13587b902e574690740b850eaf1166e7759",
      "parents": [
        "e574eecea416c813d539a0977d5393c3ed291a1c"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Apr 12 13:50:38 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 10:48:33 2013 -0700"
      },
      "message": "MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\n\nBy default, MPEG4Write will keep running in real time recording mode.\n\nbug:8598944\n\nChange-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf\n"
    },
    {
      "commit": "3f0651d12b5c4b01ab0347412ae0e2e5fe2aadaa",
      "tree": "16b559da08eafdc1fca406904aba5d6bf11cb505",
      "parents": [
        "4713d3dc48cec162f4aeb3513719a8dd153e8c85",
        "4b40f7ef5a9d29006dcb3351086fc13f1a8e0fa2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 12 10:38:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 12 10:38:17 2013 -0700"
      },
      "message": "am 4b40f7ef: am 5157b1e8: Merge \"ACodec now signals an error if the mediaserver died while it is in\" into jb-mr2-dev\n\n* commit \u00274b40f7ef5a9d29006dcb3351086fc13f1a8e0fa2\u0027:\n  ACodec now signals an error if the mediaserver died while it is in\n"
    },
    {
      "commit": "ac0230da14a3d223c2144b165a3a163e8519d239",
      "tree": "d791aa2505b920e0b146f89bab9c36a1f3f171d7",
      "parents": [
        "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:06:14 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:13:48 2013 -0700"
      },
      "message": "ACodec now signals an error if the mediaserver died while it is in\n\nanything other than \"uninitialized\" state.\n\nChange-Id: Id133d897ac65b455b34e5de17ff9c39b47285630\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "6610a7d621c634fe059b855ca7eb3f58fb8d0757",
      "tree": "74b4670c4f0830050379efe2cf35e132a26cd14b",
      "parents": [
        "ecba7488c5cceaacef95836b1b476433451e7761"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:06:14 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:13:48 2013 -0700"
      },
      "message": "ACodec now signals an error if the mediaserver died while it is in\n\nanything other than \"uninitialized\" state.\n\nChange-Id: Id133d897ac65b455b34e5de17ff9c39b47285630\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "a4d0cd1b817a3c55858af5f754f7daa302de087e",
      "tree": "dff6783a6b9e6950f5753b03c0e4ea32465e88a0",
      "parents": [
        "5efeb0d9782cb1db1035eba11ad6747924278a58",
        "b021358ddba63e81d6b59f2370e891c71f14f630"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 17:06:04 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 08 17:06:04 2013 -0700"
      },
      "message": "am b021358d: am ec771223: Add support for common encryption\n\n* commit \u0027b021358ddba63e81d6b59f2370e891c71f14f630\u0027:\n  Add support for common encryption\n"
    },
    {
      "commit": "ec77122351b4e78c1fe5b60a208f76baf8c67591",
      "tree": "98e93cfa582e1ebe7fa27dadacb2ce9d01f5d28c",
      "parents": [
        "b3a95a56f0adaf2b60ff164275487d1870442734"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 14:30:57 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 16:34:27 2013 -0700"
      },
      "message": "Add support for common encryption\n\nb/7465749\n\nChange-Id: I5403b74a5ae428ad28b382863a09daafc400b137\n"
    },
    {
      "commit": "5544c66ba0aa789a997b376df503a5ffae425dc7",
      "tree": "1340a1e933a94542bf1a35ce3c8f667616234bca",
      "parents": [
        "4d2f2e8414df33337d4f09e5235719dfcc705674"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 14:30:57 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 16:34:27 2013 -0700"
      },
      "message": "Add support for common encryption\n\nb/7465749\n\nChange-Id: I5403b74a5ae428ad28b382863a09daafc400b137\n"
    },
    {
      "commit": "d76fcd616b9d049cb658cb7502a2325db8d20344",
      "tree": "871bc8e00686f85377b33e7e43ffd48f69ddc19e",
      "parents": [
        "6dfb09089a9d4bb99aa5ebb619b4eb9097e0e809",
        "c2ccb7d9948c01551dbb5ceb0f3d06004b86ce7c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Apr 04 18:22:53 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 04 18:22:53 2013 -0700"
      },
      "message": "am c2ccb7d9: am d5ef30b2: Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev\n\n* commit \u0027c2ccb7d9948c01551dbb5ceb0f3d06004b86ce7c\u0027:\n  Implement async event callout from drm plugin to Java app\n"
    },
    {
      "commit": "d5ef30b223b627c21b11f2850eeb48426c74220d",
      "tree": "b18fbd5fd00a79f237bb2a5f1973ab70f636ef25",
      "parents": [
        "f8fae863e8a5d442684634a1d3b2adcbe74b957a",
        "c0d5f1f8405de861ed6f1725f26cd6601e7103ab"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "message": "Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev"
    },
    {
      "commit": "505208dd38ab2f143e6a3ff6a2c262d0fab76b7e",
      "tree": "0ea6a3dd880bca0a840e0fd3d821c943be083a42",
      "parents": [
        "1dc6fcccfe33c65a2253bc3385e45d4e77e4b79e",
        "0cb126a34fe32f81c830858102471e7be2ce85b1"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "message": "Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev"
    },
    {
      "commit": "c0d5f1f8405de861ed6f1725f26cd6601e7103ab",
      "tree": "710d03a7ee6541642c1dc16ac82b4ffea3903968",
      "parents": [
        "4c63a239c404af1e055e5f9939939ab0fd09d98a"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 13:08:05 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 03 12:20:53 2013 -0700"
      },
      "message": "Implement async event callout from drm plugin to Java app\n\nChange-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b\n"
    },
    {
      "commit": "0cb126a34fe32f81c830858102471e7be2ce85b1",
      "tree": "a20999e4b89a78375a1b69cb3a0bef96fab74362",
      "parents": [
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 13:08:05 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 03 12:20:53 2013 -0700"
      },
      "message": "Implement async event callout from drm plugin to Java app\n\nChange-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b\n"
    },
    {
      "commit": "5309f59db078739e3eeb6992f0f11fe0818266cb",
      "tree": "c2e6dd4eb5d0a9228e090457d1ead8fc333d776e",
      "parents": [
        "67f0f1d329a4d1b8808af0b625d4354a6356549e",
        "1ef63d1a6a03d713954acbdb4e4641f53ade1d66"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 19:25:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 02 19:25:02 2013 -0700"
      },
      "message": "am 1ef63d1a: am a56e1506: Merge \"MediaDrm API update\" into jb-mr2-dev\n\n* commit \u00271ef63d1a6a03d713954acbdb4e4641f53ade1d66\u0027:\n  MediaDrm API update\n"
    },
    {
      "commit": "a56e15065bc45082d913c8c8e71e60692ce8c8f0",
      "tree": "602dc7a6d6dc2e6ebd0f1509e8f53a958b088b53",
      "parents": [
        "b7c9d61b9d398b272c8138a2c6aace069229ac03",
        "4c63a239c404af1e055e5f9939939ab0fd09d98a"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "message": "Merge \"MediaDrm API update\" into jb-mr2-dev"
    },
    {
      "commit": "df41f485a9162407b32b7db1cea483f64bbd0c65",
      "tree": "4a25321560089605809b753fccc9365bca9f64bb",
      "parents": [
        "d2c90696403bb3c9e28d7b51d65c9468bdf8e78b",
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "message": "Merge \"MediaDrm API update\" into jb-mr2-dev"
    },
    {
      "commit": "4c63a239c404af1e055e5f9939939ab0fd09d98a",
      "tree": "5ec5bdcc0de9cb139df551a2b6e5c6010497e9ac",
      "parents": [
        "4fc3e841358164a661c78f78bc617f5ac879aa35"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 30 16:19:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 01 21:57:32 2013 -0700"
      },
      "message": "MediaDrm API update\n\nClarify offline usage of sessions and keys and implement\nimplement CryptoSession to support additional crypto use\ncases.\n\nChange-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc\n"
    },
    {
      "commit": "8856c8b8777d0e0de11b2de863a336b001024e29",
      "tree": "21ed9ba7ba5db495085440b34ec75c72bf4af943",
      "parents": [
        "c9e58fcf57d865e6c82fdd4bf49d97f89203b2e4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 30 16:19:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 01 21:57:32 2013 -0700"
      },
      "message": "MediaDrm API update\n\nClarify offline usage of sessions and keys and implement\nimplement CryptoSession to support additional crypto use\ncases.\n\nChange-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc\n"
    },
    {
      "commit": "509f4567b6e4413594c20d01b50bb2bd43ca86a8",
      "tree": "3aa4ecad0d9ebd0723778364da6a64f8a74beeb0",
      "parents": [
        "7dc726b20b3613570d399cb0ca1a99bdf5f0771f",
        "790b675533efda5b39408fc5fc3af2b8a5c1607b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 28 09:08:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 28 09:08:39 2013 -0700"
      },
      "message": "am 790b6755: am 3a1d8b51: Merge \"Camera: Add input side to camera3 HAL device\" into jb-mr2-dev\n\n* commit \u0027790b675533efda5b39408fc5fc3af2b8a5c1607b\u0027:\n  Camera: Add input side to camera3 HAL device\n"
    },
    {
      "commit": "3a1d8b515fcfcf27b4b04bd677429a7ce2db6bcb",
      "tree": "7d18cb7621c14dba1922d85b8683c772a135d476",
      "parents": [
        "8fc405fffb69cad88cfd8ee09130220f31ad28e2",
        "3b53bc9b41c262d22f094406e3751bc5a41ef2ef"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "message": "Merge \"Camera: Add input side to camera3 HAL device\" into jb-mr2-dev"
    },
    {
      "commit": "fa34724a1ffc87c059f8812e9cb3c8fb0ff55752",
      "tree": "eed400b9938c7c59edfa85fb32b22d7f672a73f3",
      "parents": [
        "b1c5fb8b938fcb127b76e0a37a569ae2c89bbf6a",
        "f76e027c43f531fc6f9287838b5c332236a4338a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "message": "Merge \"Camera: Add input side to camera3 HAL device\" into jb-mr2-dev"
    },
    {
      "commit": "08b7c1ed00b04465e66fd6c14877d4b2784c4e30",
      "tree": "122dc349f1811065aa7c8e66dd9e2755982223c1",
      "parents": [
        "16ba880fa8457f27a37467f405fe236e72032d44",
        "2a2f0ecec93bac15eb58dcf643b11867baf51804"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:20:54 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 18:20:54 2013 -0700"
      },
      "message": "am 2a2f0ece: am 681be039: ToneGenerator: fix truncated tones\n\n* commit \u00272a2f0ecec93bac15eb58dcf643b11867baf51804\u0027:\n  ToneGenerator: fix truncated tones\n"
    },
    {
      "commit": "681be0398a06da7e24db4ed934a92af64d1409b1",
      "tree": "e8b59b31d995c5cbd12c8c0f7dc6a28eeb184c75",
      "parents": [
        "2d595c0efc0eee9e0c94f4842c6fed07c19163c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 12:05:40 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:12:22 2013 -0700"
      },
      "message": "ToneGenerator: fix truncated tones\n\nThe first DTMF tone after a silent period is truncated.\nThis is because the phone app starts and stops the tone\nwhen the user presses and releases the key.\nThis combined to the fact that the tones use the low latency path\nand that when the output stream exists standby there is a period\nof several milliseconds during which no audio is mixed until the\nstream is \"warmed up\".\nThe result is that much less audio is generated than the actual\nkey press duration.\n\nThe fix consists in storing the tone start time and making sure that\nthe number of samples generated corresponds at least to the time difference\nbetween the tone start and stop commands.\n\nBug 6607077\n\nChange-Id: I070d20dd8600c25a9e5d5a60c1d3313b7917b00d\n"
    },
    {
      "commit": "857583fd2ecbeb8696ede1f93b7291449fb2d133",
      "tree": "339da426a159d401daede0ac91d45584d7d56807",
      "parents": [
        "e31881eee441f409cbe6c1e1f32183ee8a64cdf8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 12:05:40 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:12:22 2013 -0700"
      },
      "message": "ToneGenerator: fix truncated tones\n\nThe first DTMF tone after a silent period is truncated.\nThis is because the phone app starts and stops the tone\nwhen the user presses and releases the key.\nThis combined to the fact that the tones use the low latency path\nand that when the output stream exists standby there is a period\nof several milliseconds during which no audio is mixed until the\nstream is \"warmed up\".\nThe result is that much less audio is generated than the actual\nkey press duration.\n\nThe fix consists in storing the tone start time and making sure that\nthe number of samples generated corresponds at least to the time difference\nbetween the tone start and stop commands.\n\nBug 6607077\n\nChange-Id: I070d20dd8600c25a9e5d5a60c1d3313b7917b00d\n"
    },
    {
      "commit": "3b53bc9b41c262d22f094406e3751bc5a41ef2ef",
      "tree": "7e27e2d5bf18e3bb973adc272f92bcb33bb5ef69",
      "parents": [
        "8be20f50711a94426f1394ec113672e41c1224e8"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 27 18:02:26 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 27 16:54:34 2013 -0700"
      },
      "message": "Camera: Add input side to camera3 HAL device\n\n- Stream creation/deletion\n- Request submission\n- Request thread loop\n- Add get() to CameraMetadata to allow HAL submission while retaining\n  ownership.\n\nChange-Id: I271f72bcbe9557eded43cbcbfe789109857f8144\n"
    },
    {
      "commit": "f76e027c43f531fc6f9287838b5c332236a4338a",
      "tree": "c7ad20f9e6c4d414773645c286c10f0662e633ba",
      "parents": [
        "fd58f1a10a749ca72fec1012920d6e94a664cd70"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 27 18:02:26 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 27 16:54:34 2013 -0700"
      },
      "message": "Camera: Add input side to camera3 HAL device\n\n- Stream creation/deletion\n- Request submission\n- Request thread loop\n- Add get() to CameraMetadata to allow HAL submission while retaining\n  ownership.\n\nChange-Id: I271f72bcbe9557eded43cbcbfe789109857f8144\n"
    },
    {
      "commit": "2260fc0e23bad7dd073187ce64606a0b2d63f3e4",
      "tree": "c5af0cf9c38d6195b72b01fdc87f405fad2dc7ba",
      "parents": [
        "f3d8ee2adcd8e74f1935fba945044eebdb1126a2",
        "2ec46421e5c56f14c46ab9ba1e9647125a54e79d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 27 15:46:06 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 15:46:06 2013 -0700"
      },
      "message": "am 2ec46421: am ad065d38: Merge \"Camera: Add hotplug support (for fixed # of cameras)\" into jb-mr2-dev\n\n* commit \u00272ec46421e5c56f14c46ab9ba1e9647125a54e79d\u0027:\n  Camera: Add hotplug support (for fixed # of cameras)\n"
    },
    {
      "commit": "ad065d38daace14281801127bd447114b7b4daa5",
      "tree": "578cf8abe9a79b88b5c623c33f9d52e9eaef42eb",
      "parents": [
        "bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5",
        "cba2c163555cd329f49d40658ea3ee902e94dda3"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "message": "Merge \"Camera: Add hotplug support (for fixed # of cameras)\" into jb-mr2-dev"
    },
    {
      "commit": "8d012b56cbd49f33841c13aaa5b7b42020de82ed",
      "tree": "240cbe1534e19bd52b6f55e5d9623de2a7fea010",
      "parents": [
        "ac51135d48ded504af38f0bc7fda47823419332f",
        "a36381479c5c546a01188390f1e0d2e280a3dbd8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "message": "Merge \"Camera: Add hotplug support (for fixed # of cameras)\" into jb-mr2-dev"
    },
    {
      "commit": "cba2c163555cd329f49d40658ea3ee902e94dda3",
      "tree": "1d125f0012a52db51a1aec733792c1b41959734c",
      "parents": [
        "a97d15e2e2f0b317a345d3a6f02df80b8988b1f6"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 20 15:56:31 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Mar 26 17:16:11 2013 -0700"
      },
      "message": "Camera: Add hotplug support (for fixed # of cameras)\n\n* Minor: also change addListener to fire the current status upon subscription\n* Minor: STATUS_AVAILABLE is now an alias for STATUS_PRESENT and deprecated\n\nChange-Id: I254608a7332095e3ef201ffea64cff156cfc1b3e\n"
    }
  ],
  "next": "a36381479c5c546a01188390f1e0d2e280a3dbd8"
}
