)]}'
{
  "log": [
    {
      "commit": "b57c30000ec5ffbe01c2ab728a58725396e28686",
      "tree": "0b0dd42cc99b8fcc52a4ba136da37f6026b634c0",
      "parents": [
        "a507ddf115c065b28d5e3c0eb369642ee3a20eb0"
      ],
      "author": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri May 31 22:35:41 2013 -0700"
      },
      "committer": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri May 31 22:35:41 2013 -0700"
      },
      "message": "av: camera: use legacy cam param flag and add samsung cam params\n\nChange-Id: I50cb49c02dace8a4bff855e3de032d79bf0d2531\n"
    },
    {
      "commit": "cff7870e0c4c8dc23a765d7f5a6eef651f36d622",
      "tree": "64fd8ae5e34563f85cf5168d6b9d9bb7ad29bcd8",
      "parents": [
        "e7405686b60f8738463f5e59e00da8a7c2f8be52"
      ],
      "author": {
        "name": "David Daynard",
        "email": "nardholio@gmail.com",
        "time": "Tue Mar 12 18:35:09 2013 -0400"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun May 26 21:52:06 2013 -0700"
      },
      "message": "MediaScanner: Ignore dirs with .noscanandnomtp\n\nCompletely ignore directories with .noscanandnomtp files\nin them. Placing a .nomedia file will still scan a\ndirectory but exclude it from the media database. This\nis so the file may still be presented for MTP purposes.\n\nPlacing .noscanandnomtp completely prevents the scan,\nwhich saves considerable processing power and battery\nlife on systems with numerous media files, but prevents\nthem from being seen over MTP.\n\nChange-Id: Ibff2a9f2525255a2ac34132eeee36734962fbdd7\n"
    },
    {
      "commit": "84f109bca45509828f14867f65faa3e7b9e65e43",
      "tree": "f6272d3a4cf438ec9918cc2cdedde260d1812287",
      "parents": [
        "2430257fb7fe62d01e9c083f122b62b5187759b6"
      ],
      "author": {
        "name": "Mingming Yin",
        "email": "mingming@codeaurora.org",
        "time": "Thu Dec 27 17:43:05 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun Mar 24 23:53:54 2013 -0700"
      },
      "message": "qcom-fm: audio: add support for FM feature\n\nChange-Id: Idd5c7a0364710d54809ef5d4c7b2404b22dc4cf6\n\nConflicts:\n\n\tinclude/media/IAudioFlinger.h\n\tmedia/libmediaplayerservice/StagefrightRecorder.cpp\n\tmedia/libstagefright/Android.mk\n"
    },
    {
      "commit": "200179149e3c5c618e5d3250a8f318014600e564",
      "tree": "b0fc398148b401ddac852bf11904255066c6b029",
      "parents": [
        "932e38d173dcefe09286111e6ca64707d7f8af70"
      ],
      "author": {
        "name": "Ravishankar Sarawadi",
        "email": "crsaraw@codeaurora.org",
        "time": "Wed Feb 27 18:47:54 2013 +0100"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun Mar 24 12:34:33 2013 -0700"
      },
      "message": "audio: Subsystem Restart changes\n\n - Handle new ADSP status parameter\n   - media/libmedia: Add new ADSP status audio parameter\n   - framework/av: Add handling of new key-pair value in\n     Audio Flinger\n\n - Handle Tunnel mode SubSys Restart\n   - framework/av: Post SSR event to Audio Flinger\n   - media/libmedia: Post SSR event to AudioTrack\n   - media/libmediaplayerservice: Post SSR event to\n     MediaPlayerService\n   - media/libstagefright: Post SSR event to TunnelPlayer\n\nChange-Id: I8c8385af45be91caf7d7160ab2e0236d6591b159\n"
    },
    {
      "commit": "0e69fea7806056e9e6bd5bdd9da95710d74f5672",
      "tree": "ffc6668b5afe3fa1a5beb1d203997ff5e05b9747",
      "parents": [
        "ec3f9bb5d289bd42633c2a8ecfb57292ed27fc1c"
      ],
      "author": {
        "name": "codeworkx",
        "email": "codeworkx@cyanogenmod.org",
        "time": "Mon Jan 14 20:43:57 2013 +0000"
      },
      "committer": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Sat Mar 02 22:27:58 2013 -0800"
      },
      "message": "libmedia: implement samsungs isSeparatedStream, built audioparameter\n\nChange-Id: I96ec5b79c08e37c9bca59470addb5a9f7869eaea\n"
    },
    {
      "commit": "9b3dd17a2d2e3a36da135d39bbbb58c95be52227",
      "tree": "b33d91c5955046b90a6bb97bbc15947f1064ce51",
      "parents": [
        "8ea530c20e8593e1cb593eb2cf6ded4a61d75662"
      ],
      "author": {
        "name": "Mingming Yin",
        "email": "mingming@codeaurora.org",
        "time": "Thu Jan 10 18:42:38 2013 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sat Feb 16 18:12:38 2013 -0700"
      },
      "message": "Squashed commit of updates from CodeAurora\n\nauido: Add amr-wb+ codec to ACodec.\n\n-Add an entry for amr-wb+ decoder in ACodec.\n-amr-wb+ non tunnel will be enabled by default.\n\nChange-Id: Ied8902eb83da29a3164eb99e88630570a43f681e\n\nlibstagefright: Create MP3 decoder libraries without OMX layer\n\n- With the current MP3 OMX SW decoders, the decoding time\nis increased w.r.t the libraries without OMX layer that are\npresent in GB. This increase in decoding time results reduction in\npower savings in LPA mode.\n- This commit is to remove OMX layer for MP3 to reduce the\npower consumption in LPA mode\n\nChange-Id: I835ab6d013a326f111e513586f884bacd5f7106a\n\naudioflinger: EffectModules are updated with device change\n\nIssue: Effects modules are not updated with the device change\ninformation\nFix: 1) Add setDevice information to mLPAEffectChain\n2) Remove the return after sending the device route information to\nDirect track so that mixer thread is also aware of the device\nchange for EffectsChain\n\nChange-Id: I82936cd47290946a5e4772e448669d81e0e4d6f5\n\nlibmedia : Add a NULL pointer check\n\n- Print frame count in AudioTrack::dump() only if the control\n  block is valid\n\nChange-Id: Icf594eb721b48795c43d7bd165f6086031ce6efd\nCRs-Fixed: 435050\n\nlibstagefright: Query AudioSystem for suggested record mute duration\n\n- AudioSource mutes a pre-defined duration (defined by kAutoRampStartUs)\n  at the beginning of a recording.\n- Instead, query the audio system for any ongoing playback streams\n  and use its output latency to calculate the duration to mute the incoming PCM stream.\n- This assumes all current playback threads will be paused once recording\n  is started.\n\nChange-Id: Ie9b1d62e7be803ef1d8a59127b95c73e03fa5ce6\nCRs-Fixed: 438149\n\nlibstagefright: Convert mono to stereo for LPA clips\n\n- Sound effects are not supported for mono clips\n- Repetative calling of effects_configure and effect_process for\n  mono clips is resulting in crash in the sound effects library.\n- So, Mono clips are now converted to stereo by copying the left\n  sample to right.\n- This is same as what Resampler does in Non-LPA Playback.\n\nThis commit is a port of fcc0647fab20ceaf1c07bc10bb243f14c48b114c\nCRs-Fixed: 421639\n\nChange-Id: Ie579c8d11afe3db8d42a35956e8bf23eeb88cfe6\n\naudioflinger: Fix to set volume from MediaPlayer in Tunnel mode\n\nIssue: MediaPlayer.setVolume does not have effect on Playback\nvolume in TunnelPlayer mode\nFix: the left and right volume parameters of setVolume are\nhardcoded and defaulted in DirectAudioTrack. Updating the\nparameters from the input arguments fixes the issue\n\nChange-Id: I8a107ce57284b225b17d95fed0f69e3adc5fb131\nCRs-Fixed: 441849\n\nlibstagefright: Enable Tunnel Decode for select formats\n\n- Enable tunnel mode decode only if the audio mime type\n  matches a supported list.\n\nChange-Id: I32afd83e5fda1e90cb671dd747f17cb83bb84fc1\nCRs-Fixed:437651\n\nframework/av:: Add support to decode mp3 data in mp4 container\n\n- Added support to decode mp3 data in mp4 container packed as mp4a\n  atom and .mp3 atom as well.\n\nPort of 8fa3774adf9259b33ee721cfaeff26da42c29928\n\nChange-Id: I1a04022f30a9f6516575440aba7652986ab7dc58\nCRs-Fixed: 439897\n\naudiomixer: Use High Quality resampler\n\nUse very high quality resampler to upsample to 48KHz sample\nrate.\n\nChange-Id: I1ba5b839f1e74ae71b405538d970e6a966bd1d47\nCRs-fixed: 416730\n\naudioflinger: Fix a deadlock\n\n- A deadlock will happen if the obit recipient\n  registered by the DirectAudioTrack is called.\n- Fix this by moving the lock acquisition in DirectAudioTrack::clearPowerManager()\n  to after DirectAudioTrack::releaseWakeLock() is called.\n- Also synchronize use of mPowerManager in the DirectAudioTrack\n  destructor with DirectAudioTrack::clearPowerManager()\n\nChange-Id: Ib127db1406c4a61a4054ca0cf30f4c7347a5c92a\nCRs-Fixed: 444093\n\nlibstagefright: TunnelPlayer: update condition to send SEEK_COMPLETE\n\n- If the client tries to seek to 0 (e.g as a result of LOOPING)\n  without ever calling getPosition(), we will always sent an immediate\n  seek notification without seeking.\n\nChange-Id: Id2b9d00c611278d0521cb6fd402710f0ec37bbdd\nCRs-Fixed: 441411\n\nlibstagefright: Remove unnecessary code from TunnelPlayer\n\n- TunnelPlayer tries to mimick AudioPlayer when trying\n  to delete the extractor source.\n- It is needed for AudioPlayer as the OMXCodec object\n  is referenced by the CallbackDispatcher as well as AudioPlayer.\n- This condition is not true for TunnelPlayer, so why do it.\n\nChange-Id: I79c4e17d01910e73ad01c5640ef374626313a18e\nCRs-Fixed: 442365\n\nAdd MediaDebug header from CAF\n\nChange-Id: I68dbe72f86a49685b82b64927d1aa80231647a7a\n"
    },
    {
      "commit": "b96612ab52d686f90a3c173b24e47cf6ae11f222",
      "tree": "08dd3c184d1cbf4e9d1752b2a08a6f39f9af30ea",
      "parents": [
        "7d4490fbc48fb1989b0b8cbca45f96f031d62c35",
        "f0ff908da019a44115109f1b4d1b6864b35a8a29"
      ],
      "author": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "message": "Merge tag \u0027android-4.2.2_r1\u0027 into jb422\n\nAndroid 4.2.2 release 1\n"
    },
    {
      "commit": "2192bc9d9f43ed639239641c186fdcd554d63113",
      "tree": "bde3a85a9d5aff18a8d38a0c4429fb737816b69d",
      "parents": [
        "c81084cb4c2f0ccf1ff996906595f7668a5decd0"
      ],
      "author": {
        "name": "vivek mehta",
        "email": "mvivek@codeaurora.org",
        "time": "Tue Dec 04 11:46:08 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 21:00:15 2012 -0700"
      },
      "message": "Squashed commit of audio changes from CodeAurora\n\nlibstagefright: Add QC specific media format\n\n- Add QC specific media extensions\n- Add QC specific media definitions\n\nChange-Id: I7dca90be3b977701d9537f5e017117790a030f1f\n\naudio: Compile AudioParameter as shared library\n\n- AudioParameter as shared lib is needed by BT\n  support in WFD source.\n\nChange-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032\n\nlibstagefright: Send flush on both i/p and o/p ports together\n\n- ANR occurs in music due to race condition in OMX component if\n  flush is issued separately for i/p and o/p ports as DSP only\n  handles simultaneous flush on i/p and o/p ports.\n\nChange-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3\n\nlibstagefright: Enable extended A\\V format\n\n- Add new files to support extended A\\V format\n\nChange-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4\n\nlibstagefright: Framework to plug-in propritory parser\n\n- Extend the current framework to plug-in propritory\n  parser\n\nChange-Id: Ia586a3048420ddf1515261f20035589447263b7b\n\naudio: add support for QCOM audio formats\n\n- Add support for EVRC, QCELP, and WMA formats.\n\nChange-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c\n\nframeworks/av: Support Tunnel Playback\n\n- Implement DirectTrack and DirectTrackClient\n- DirectTrack exposes API to client so it can create a direct\n  output.\n- DirectTrackClient allows notifications to be sent to the\n  client from DirectTrack\n- DirectTrack is being used for Tunnel Audio\n\nChange-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a\n\nframeworks/av: Support LPA Playback\n\nAdd support to enable Playback in LPA mode\n\nChange-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3\n\naudio: Send correct channel mask in voice call recording.\n\n-Using popCount function to get channel count gives incorrect value on\nvoice call recording.\n-Only STEREO and MONO bits to be considered to count\nchannels on input\n\nChange-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe\n\nlibstagefright: Thumbnail mode initial commit\n\n- use sync frame decoding mode when kClientNeedsFrameBuffer\n  is set for hardware decoders\n- hardware decoder will only expect I frames, OMXCodec will\n  set EOS on first ETB to stop more frames from being pulled\n- skip EOS check on FTB so that the first frame will be\n  handled\n\nChange-Id: I0e8974e088fdcc468e27764861c128cfe291499f\n\naudio: Add support for QCOM\u0027s VOIP solution\n\nChange-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93\n\naudio: define QCOM audio parameters\n\n- Define QCOM audio paramters for FM, VOIP,\n  fluence, SSR, and A2DP\n\nChange-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7\n\nAdd ifdefs for QCOM enhanced features\n\nChange-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c\n"
    },
    {
      "commit": "140a9ac76b79f06fc9d2191f2da336f1fc55ca1f",
      "tree": "4e13c8e25d2dc46d64368adf57458e8fac762d3c",
      "parents": [
        "f510d4701c16da39dcefbe5d5ee9d90ff90cbb0c"
      ],
      "author": {
        "name": "Ankit Premrajka",
        "email": "ankitp@codeaurora.org",
        "time": "Mon Nov 21 19:25:02 2011 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:59:31 2012 -0700"
      },
      "message": "Camera: Qcom parameters partial rebase\n\nAdd customized parameters for qcom camera features.\n\nSquashed commit of the following submissions to CAF:\n\ncamera: add custom camera parameters to hardware java file.\n\nChange-Id: Ic2b363df6d25a0c3a49aed30e717d10874f533ae\n\nCamera: Add support for wavelet denoise\n\nChange-Id: I97be72615fe5909987ac430034bbdc16f2d20509\n\nCamera : Add support for histogram in frameworks\n\nChange-Id: Ibf751c3b2d488f4be0afaaa3e994372bafeffbe7\n\nCamera: Add ZSL support in framework.\n\nChange-Id: I4e863020d7d407d9c3936beb83dc7abf385c4654\n\nCamera: Add touch AF/AEC support in ICS framework\n\nIn, ICS the old touch AF/AEC functions getTouchIndexAf(),\nsetTouchIndexAf() etc  are no longer valid. Added new functions  to get\nthe center of touched area.\n\nChange-Id: I37d00040f895cd8a4de2e2a438971aa2d9c1a045\n\nCamera: Add support for Red eye reduction\n\nChange-Id: Iada280ac33aee8b1114dc40d8d79e0e47ad5c2fd\n\nConflicts:\n\n\tapi/current.txt\n\nCamera: Enable streaming texture and YV12 feature\n\nChange-Id: I814c92b469e0f25baef0ce80338761d1e6443085\n\nCamera: Add frameworks support for high frame rate\n\nChange-Id: I9722e9b7e61433651ab5f76f76208853eb1fd849\n\nCamera: Simplify ASD menu and best mode menu.\n\nChange-Id: Ia7a1eca9268eec021a6e2c3f7ce2a932e8819d50\n\nCamera : Macro definition change. PIXEL_FORMAT_YV12 to \"yuv420p\"\n\nWhy: CTS testcase is expecting \"yuv420p\" as the format string for YV12 mode.\n\nCRs-Fixed: 328252\n(cherry picked from commit 0a263f67b75497e4b95b9de8c370ed9496ab59ef)\n\nChange-Id: I66f418a52775a969d81bcb332bbe500370e3ab7c\n\nCamera: Changes for face detection\n\nChange-Id: I7b2172e8690d6e23762e42f5888fecbfda15ba61\n\nCamera: Add support for burst count\n\nChange-Id: I4488a5eac1eebb0b5c8e2cc7cbbe7be0c7301be7\n\nCamera: enable HDR feature\n\n(cherry picked from commit e40770bbdadd925fc1e07a08249a15981b961570)\n\nChange-Id: Ie9ca3066e8e53710bf292d047a3724aefc029854\n\nCamera : Add API to find fullsize liveshot support\n\nChange-Id: I3c2fc3578decbe5cf87fded5362f317df0b40b5e\n(cherry picked from commit 65d80f04892776eec1c19c844eacb8c454b4bd1a)\n\nCamera: Set default camera area string\n\nThe default invalid value for KEY_FOCUS_AREA and\nKEY_METERING_AREA is changed to \"(0,0,0,0,0)\"\nCRs-fixed: 334934\n\nChange-Id: I354802c8611ee5c00a591b96b1a1ca04926969cb\n\nCamera: Change the scenemode names in framework\n\nTo comply with ICS API Specification,\nSCENE_MODE_AUTO changed to SCENE_MODE_ASD\nSCENE_MODE_OFF changed to SCENE_MODE_AUTO\n\nChange-Id: I8e744f10c728f469923b09f69d6d64bc5c7c6850\n\nCamera : Framework changes for camcorder UI menu\n\nChange-Id: Iff9e9021da44b67f81a24c828b960113ee249248\n\nCamera : Remove unwanted video resolution in Framework\n\n- FWVGA, WQVGA resolution UI options are removed for camcorder.\n\nChange-Id: If621140966b01dbc8c30a4d161e6771528b8adda\n\nCamera : Enable FWVGA and WQVGA resolutions in camcorder media profiles\n\nChange-Id: Iad9cc33f7b6d8eb7de21df372c016edeef0b99ba\n\nUnlock camera AWB lock only when white-balance is changed.\n\nbug:5633546\nChange-Id: I90bb4b5b445daedf38a64e2f8fb980fc0f0aaa81\n\nChange-Id: Ie3cc15132489502e64321776d49d96846b5705d6\n\nConflicts:\n\tcamera/Android.mk\n\tcamera/CameraParameters.cpp\n\tinclude/camera/CameraParameters.h\n\tservices/camera/libcameraservice/CameraService.cpp\n\tservices/camera/libcameraservice/CameraService.h\n"
    },
    {
      "commit": "0ee5c425a4fdb37e07cd7ed1c519d7b0feb34b78",
      "tree": "df309fe83be6177bfd6a6f49aec6eba1ff2177d6",
      "parents": [
        "018fdf4b94c17fc1c8ac22b01f2800fb4ff6deec"
      ],
      "author": {
        "name": "Hashcode",
        "email": "hashcode0f@gmail.com",
        "time": "Fri Nov 30 00:28:40 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:59:22 2012 -0700"
      },
      "message": "libmedia: add pre jb-4.2.1 signature for AudioSystem::getDeviceConnectionState\n\nWith jb-4.2.1 the type audio_devices_t found in system/core/include/system/audio.h\nwas redefined from a typedef enum to uint32_t.  This causes the signature\nof AudioSystem::getDeviceConnectionState to change in libmedia.so.\nAny older than 4.2.1 prebuilt audio.primary.___.so binaries (such as mine from ICS)\nmay refer to the old signature.  This patch adds back in that reference.\n\nChange-Id: Ie4f92eaec20d581c9bebc805cfd25f8558406e30\nSigned-off-by: Hashcode \u003chashcode0f@gmail.com\u003e\n"
    },
    {
      "commit": "54d90af6d9e7ab62a4f9c5d3dc5f61102375ecf3",
      "tree": "3f9a6d76bdbaf58455514246bca84e8f8a329efa",
      "parents": [
        "22fe2e0ca9441e483a6c93d7b3a04a411ded8936"
      ],
      "author": {
        "name": "Ricardo Cerqueira",
        "email": "cyanogenmod@cerqueira.org",
        "time": "Sun Sep 02 04:33:40 2012 +0100"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:58:34 2012 -0700"
      },
      "message": "libmedia: Add ICS audiotrack constructor\n\nChange-Id: I5c1a3d1093cbf16111638a37601093c5eb977dd4\n"
    },
    {
      "commit": "22fe2e0ca9441e483a6c93d7b3a04a411ded8936",
      "tree": "5b80a9daeec9a9345d4bb3377dd4540e3d83fe1f",
      "parents": [
        "59199b164e5ce9dd9f3540eb73e712f2f0e68f33"
      ],
      "author": {
        "name": "Ricardo Cerqueira",
        "email": "cyanogenmod@cerqueira.org",
        "time": "Thu Jul 12 01:36:11 2012 +0100"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:58:29 2012 -0700"
      },
      "message": "libmedia: Add ICS constructor for getOutput\n\nUsed by the Tegra ICS OMX libraries\n\nChange-Id: I2f6e7f10f11b53853626d1be86e7b2be870720f4\n"
    },
    {
      "commit": "ec52ea35fe8eedf1ebf2cedb27ff69871419c87e",
      "tree": "1a9cba559ffc98247c63db5e06a55113c32266a2",
      "parents": [
        "f5037ad1ebb04e99622af5e99aeac0c1b44090b7"
      ],
      "author": {
        "name": "David Ng",
        "email": "dave@codeaurora.org",
        "time": "Tue Aug 14 20:36:16 2012 -0700"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Fri Dec 07 20:41:15 2012 -0600"
      },
      "message": "Fix potential NULL pointer deference in ToneGenerator destructor\n\nInitial members in ToneGenerator so destructor can free\nallocation properly.\n\nChange-Id: I4a686084af48f99d2eefc33e56e3239846d3d34f\n"
    },
    {
      "commit": "5131d127a042ee88f903370be88845dc8c9f8578",
      "tree": "b6c2153d94a2dd57b8dfaaa12742c60c4fec0187",
      "parents": [
        "79c56d3f17d3193a0a86eb3c9bfdea90b89ae3f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 16 10:38:11 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 10:33:51 2012 -0800"
      },
      "message": "[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n\nChange-Id: Ibe42bfa73816bbfeb7e652d435254d0171b89727\nrelated-to-bug: 7638150\n"
    },
    {
      "commit": "b7c8e91880463ff4981e3e53e98e45d68e2fe374",
      "tree": "3de921dd21aa2f4899487d3c56e4bfd28f4c004f",
      "parents": [
        "41829f30e60cdb7ae8eb1f0266834d245164f70e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:02:53 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:50:08 2012 -0800"
      },
      "message": "Add support for HLS playlists of type \u0027event\u0027.\n\nrelated-to-bug: 6870049\n\nSquashed commit of the following:\n\ncommit eee2f3ba6bb7335f4e285632726db85645669929\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 15:02:01 2012 -0800\n\n    Make everything a lot less verbose by default.\n\n    Change-Id: I884d7a7901aa1e7d4ff590f065ca57a79d2af8b3\n\ncommit 6bbdb837ed5bd88008e45efb8faf595e4051ba26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:34:46 2012 -0800\n\n    HLS now properly signals media time changes at discontinuities including\n\n    the start of playback (which may not necessarily be at time 0 if the playlist\n    is of type \u0027event\u0027 and hasn\u0027t completed yet).\n\n    Change-Id: I5ab747d024f9b8d0df72a4e06a12ebb29f62802e\n\ncommit 1555589832b1878a144a976a643e1af4d61f877c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:32:28 2012 -0800\n\n    As part of a time discontinuity, clients of IStreamListener can now\n\n    signal the corresponding media time after the discontinuity, i.e. the first PTS\n    timestamp following the discontinuity will be considered equivalent to the\n    specified media time and media buffers timestamped accordingly.\n\n    Change-Id: Id7db7679b7faa6efd6270620ff52e34e884f3e92\n\ncommit 5c24c605c073a11c426d025b1e7478fc1ad8365a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 13:00:56 2012 -0800\n\n    NuPlayer sources now expose flags() and can announce\n\n    that duration may change (increase) dynamically, in which case duration\n    will be polled at 1 second intervals and communicated to the upper layers.\n\n    Change-Id: I45102909b7a19eed0dda576747e3814d742a0eea\n\ncommit ecb71de8e281e61971a2cd73e7161a97540bc357\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 12:57:47 2012 -0800\n\n    Stop caching duration in MediaPlayer, duration could increase dynamically.\n\n    Change-Id: I7bb2f16c0abe49debdf45c776d2266aa069d7791\n\ncommit 544aec5823e6d7a3e97e15b6b23546616bcd343e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 08:46:28 2012 -0800\n\n    An attempt to add support for \"event\" style HLS playlists.\n\n    Change-Id: I3dfb2e801ecaff8f5d8bdb3a4fca1b18aeeb2c60\n\nChange-Id: I48cf7f65a654d33f2f49ded74f8be22aed9e3b98\n"
    },
    {
      "commit": "b1eb1a0dd38a36dd0c0626d3d57043dbd0042a92",
      "tree": "dd1bdc77dd66e946b9ef20f56dda332e8b6de8b4",
      "parents": [
        "e384d75b95b9db30d64a18ada93e070cf07de306"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 22 17:44:24 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 22 18:26:50 2012 -0700"
      },
      "message": "stagefright: discard audio at start of capture\n\nThe new camcorder start sound is longer than previous one and we\nmust discard more audio when capture starts.\n\nIdeally, camcorder should use synchronous record start.\n\nBug 7394330.\n\nChange-Id: I219b4e231aba706776dc7ccc4f1c996eaf22f61a\n"
    },
    {
      "commit": "d7086030fcf731e4bcef6c033cc6418cd04e6b91",
      "tree": "51f233eeff7c3e17e980d1fb0f41a2ba3f030b16",
      "parents": [
        "dca0ac2193e87c57d871dd208073107408c13c0a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "message": "Support querying active record sources\n\nAdd support for querying whether there is currently a recording\n underway from the specified audio source.\n\nBug 7314859\n\nChange-Id: I986b231a10ffd368b08ec2f9c7f348d28eaeb892\n"
    },
    {
      "commit": "cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d",
      "tree": "f3522fd1ad371d1e592c8c8cfd8d0ce1d98f80c2",
      "parents": [
        "d9aa7b4db46bea5966401f9fcfbecb3269ec55c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:27:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 25 17:13:18 2012 -0700"
      },
      "message": "Implement android.media.AudioManager.getProperty()\n\nBug: 6635041\nChange-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224\n"
    },
    {
      "commit": "207e18540fefbaf530a4fdf506d266f34ddec84f",
      "tree": "d8e7d7db4c874aabfe35c5fdd4a5dcf7bf72047d",
      "parents": [
        "086f958a7e539acffb637b42f5a6998184544179"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 20 16:00:17 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 21 09:24:08 2012 -0700"
      },
      "message": "Remove legacy code and APIs in wifi display related code.\n\nChange-Id: Ia010e7a00534f9356b3247369d0ffd65591d91aa\n"
    },
    {
      "commit": "efbb781c15abf8e085f5ab8d39710bd58ea0b6e4",
      "tree": "a2f28698970fc1b62495cee5d617e1037a0a957d",
      "parents": [
        "74e58c55bc5259b957a51f1bb44a5911ad1f8400"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 18 10:36:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 19 09:28:08 2012 -0700"
      },
      "message": "HDCP module binderized\n\nChange-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6\n"
    },
    {
      "commit": "896adcd3ae6a1c7010e526327eff54e16179987b",
      "tree": "8c999b21698b1b7b45ac1d290ef3c64c808f380d",
      "parents": [
        "4362f5300162ed55f56cf167eccf7f2e5b89d435"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 11:18:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 17:03:00 2012 -0700"
      },
      "message": "audioflinger: send priority request from a thread\n\nWhen creating a fast AudioTrack, a request is sent to SchedulingPolicyService\nto elevate the requesting thread priority. This generates a binder\ncall into system_server process and to a JAVA service via JNI.\nIf the thread from which the track was created is in the system_server\nprocess and does not have the \"can call java\" attribute, a crash occurs because\nthe binder optimization reuses the same thread to process the returning binder\ncall and no JNI env is present.\n\nThe fix consists in sending the priority change request from the AudioFlinger\nmixer thread, not from the binder thread.\n\nThis also reverts the workaround in commit 73431968\n\nBug 7126707.\n\nChange-Id: I3347adf71ffbb56ed8436506d4357eab693078a3\n"
    },
    {
      "commit": "73431968e3c5cf420b5d63c54cf72d10ff7ee7bc",
      "tree": "11239e23b4a170e479addf4a102200b46e6c8ebb",
      "parents": [
        "359cf1cac2a7851a59dfe4960a1a5992ac6fdb84"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:42:34 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:42:34 2012 -0700"
      },
      "message": "Workaround for track recreation bug\n\nIgnore thread can call Java parameter to work around bug where\n AudioTrack instance gets recreated when key clicks are enabled\n and WFD gets turned on, with the wrong parameters.\n\nChange-Id: Ia42c8704b46fe3ffea560b05b60939fa2e4b29e1\n"
    },
    {
      "commit": "fd48021dfc3278b048ba99ecffe7f996751fb440",
      "tree": "95df204b201380b95ae273ab9788d81fce8e3f62",
      "parents": [
        "6ce3d19cd35a49add6893298f70b87917fc60d52",
        "e7c992c675e0075cd60b0b11c06d5956e3ddd7a3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:11:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:11:37 2012 -0700"
      },
      "message": "am e7c992c6: am 5abc91d6: Merge \"Fix libmedia and libstagefright to get expat header files from the approved location.\"\n\n* commit \u0027e7c992c675e0075cd60b0b11c06d5956e3ddd7a3\u0027:\n  Fix libmedia and libstagefright to get expat header files from the approved location.\n"
    },
    {
      "commit": "e7c992c675e0075cd60b0b11c06d5956e3ddd7a3",
      "tree": "f97adde9ae532e442c68e00e6143d613751ec7d2",
      "parents": [
        "371e121745c2e43e3c26fd1a854eaf6d3324f057",
        "5abc91d61718e334e05c6d4858bd868bd5a5769c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:07:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:07:48 2012 -0700"
      },
      "message": "am 5abc91d6: Merge \"Fix libmedia and libstagefright to get expat header files from the approved location.\"\n\n* commit \u00275abc91d61718e334e05c6d4858bd868bd5a5769c\u0027:\n  Fix libmedia and libstagefright to get expat header files from the approved location.\n"
    },
    {
      "commit": "e8057dd8208f0a185109992339a995c518b12780",
      "tree": "35734a3eee8059df684d13ef53b625a209f9659e",
      "parents": [
        "8b1525663322685ff34d9c09176feebd102e1c3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:58:14 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:58:14 2012 -0700"
      },
      "message": "Fix libmedia and libstagefright to get expat header files from the approved location.\n\nFound during a libexpat upgrade.\n\nChange-Id: I9e5abd502a884975d898486edde374fb2519164e\n"
    },
    {
      "commit": "261fd2119c70fda3af64453881a6346dd48eb956",
      "tree": "bebeb91c3c8538d93c0bdf520948e7e304a8a3ab",
      "parents": [
        "d06ab147394b0b49679c924a51d77c91dea04d82",
        "6f744d75d3439f7984245e3c489cc7cf91cea41c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 09:18:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 09:18:44 2012 -0700"
      },
      "message": "Merge \"AudioRecord: Fix minimum frame count calculation.\" into jb-mr1-dev"
    },
    {
      "commit": "6f744d75d3439f7984245e3c489cc7cf91cea41c",
      "tree": "a4e050390092ea08271e55d8178565be47c06ab7",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 06 11:52:36 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 06 11:52:36 2012 -0700"
      },
      "message": "AudioRecord: Fix minimum frame count calculation.\n\nAudioRecord::set() was calling getMinFrameCount() with\na channel count instead of a channel mask.\n\nChange-Id: Iabace7686426430fd53deac0c71b0c36aa64171c\n"
    },
    {
      "commit": "455d02eca342d8159637af317a5d83219d267812",
      "tree": "2c8a516e25ac9866d681021cd138b582a9f76bba",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "message": "Update remote display API.\n\nRenamed disconnect() to dispose() to emphasize the fact that\nthis method is intended to clean up the IRemoteDisplay\ncompletely, not just temporarily disconnect the current client\n(which might be useful someday).\n\nOther minor tweaks.\n\nChange-Id: I1209639eb0cd8af09c724206642d7e52aab48257\n"
    },
    {
      "commit": "e104596061b219e9bce6d4db49a9d15242f8d2e5",
      "tree": "d28e83486d2079284c3e04e260fe6a8952d9599f",
      "parents": [
        "6c75ad21705cde0a11f78c755dc70bdec76890e6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 04 21:38:42 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 08:47:36 2012 -0700"
      },
      "message": "Implement remote display service stubs.\n\nChange-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01\n"
    },
    {
      "commit": "cd89e8014368af1bbdfa08406d5d2eb0bbbfcca1",
      "tree": "372818c0898b8c0db85e0ebd482359e14ddba066",
      "parents": [
        "892020e46b97adfa012be7a9dd688a2d6d528de4",
        "da7ff5321539ac07ec76d0d03bd1b9b09a1823bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "message": "Merge \"Added an additional virtual method IStreamSource::flags().\" into jb-mr1-dev"
    },
    {
      "commit": "da7ff5321539ac07ec76d0d03bd1b9b09a1823bf",
      "tree": "dbbf951396f9dbae58a76bdeaa8d0bba9f9cebf6",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "message": "Added an additional virtual method IStreamSource::flags().\n\nChange-Id: I89e62d84328e12f08c8f73cbfd53cfb42569de97\n"
    },
    {
      "commit": "c3ae93f21280859086ae371428ffd32f39e76d50",
      "tree": "542d16fac64eb1f6e40c32517d60c2da5078e900",
      "parents": [
        "c9936c72c128a4a9288424fb082d7e7fe4b9b91f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "bcf09f8c995221e75c7cd328f25c7cc6d2b5f7c9",
      "tree": "12db95dcd0186648022458280b950cf4aa154849",
      "parents": [
        "86b1961a8d61086ef8d5475182f2a3cf4392b42c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "message": "Only run the wifi display RTSP server on demand, and only on the wifi direct\n\ninterface.\n\nChange-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7\n"
    },
    {
      "commit": "d8ee4e56f92eeb44ddc0997efe280b9f28ad814d",
      "tree": "8ae19d56b416a17a218c4c405939acad3fe8cb1e",
      "parents": [
        "f147b722ad2405c7f92ea8691f36b04a82d62bb1",
        "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "message": "Merge \"Initial checkin of support for acting as a wifi display source\" into jb-mr1-dev"
    },
    {
      "commit": "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c",
      "tree": "3c4c7a83313d169b13c79c9660afeb804d27b975",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:06:57 2012 -0700"
      },
      "message": "Initial checkin of support for acting as a wifi display source\n\nChange-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a\n"
    },
    {
      "commit": "1b19c9d120869c3182373a9b06a1ed98898df882",
      "tree": "f004f06f4d23698432b71da01873147a8da7c44e",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "message": "Preliminary support for HDCP as a binder service for wifi display support.\n\nChange-Id: Ie0de1c086c629a668d1c7863992eef56fb94157c\n"
    },
    {
      "commit": "6a8ea471a9f3b001bd0ffa3381eba12975dfc59f",
      "tree": "3590178bb20b7042efdaca9f7f87822f7ea1968a",
      "parents": [
        "3411fc2f3a44b22d69a359a3eb26f756d6116e4f",
        "a997e7a7c5aa2fc7e95316218316f8b7b98786ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 20 15:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 15:46:07 2012 -0700"
      },
      "message": "Merge \"Revert \"Swap the order of creating IAudioTrack and thread\"\" into jb-mr1-dev"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "a997e7a7c5aa2fc7e95316218316f8b7b98786ba",
      "tree": "4f98e352833c4de61728588cacc08d40d1d01778",
      "parents": [
        "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 09:44:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:13:42 2012 -0700"
      },
      "message": "Revert \"Swap the order of creating IAudioTrack and thread\"\n\nThis reverts commit 5d464eb0b8cffb994a754ff108795e858a882414.\nIt caused the wrong thread ID -1 to be passed to IAudioFlinger::createTrack().\n\nChange-Id: Ic221d2bb4af572d3d2d752af19238c52f6728e3a\n"
    },
    {
      "commit": "5d464eb0b8cffb994a754ff108795e858a882414",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "0ec23ce0d1ff79566c402bc30df3074f6e25a22b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:19:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:58:43 2012 -0700"
      },
      "message": "Swap the order of creating IAudioTrack and thread\n\nSimplifies the error recovery in case IAudioTrack fails.\n\nChange-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "955e78180ac6111c54f50930b0c4c12395e86cf7",
      "tree": "b4c12804643f73e9acbbf1db58f5ffa7e0bd7bc7",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:32:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 18:06:19 2012 -0700"
      },
      "message": "AudioRecord locking\n\nFix race conditions for EVENT_MARKER and EVENT_NEW_POS callbacks.\nMarker and new position update fields are protected by lock.\n\ngetSampleRate() doesn\u0027t need a lock because it reads from shared memory\ncontrol block.\n\nEnforce that the parameter passed with EVENT_MARKER and EVENT_NEW_POS\ncannot not be changed by the callback handler, and will not change during\nthe call by another thread.\n\nSession ID should never change; log if it does.\n\nChange-Id: Ia2c63cf1a71b10bb06c37981bd76437f83fffa91\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac",
      "tree": "c605d3e995f4b6be55dd4b10e1c998b059990d0d",
      "parents": [
        "fd4e20c226eca185fc789de761beae64855bfbbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 17:24:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:31:59 2012 -0700"
      },
      "message": "Use audio_channel_mask_t for channel mask\n\nChange-Id: I1c1896da48983aa9f1462a4b471f910498816f60\n"
    },
    {
      "commit": "dcda3b325f465aa6ec2be11db1c56c8a5e867f33",
      "tree": "0f7709ccea7f3c3cb5a63747adb7d5bfb82e194a",
      "parents": [
        "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
        "d64cd233eef39430561c1e1df423336a199cc5d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "message": "Merge \"AudioRecord::stop() return void\""
    },
    {
      "commit": "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
      "tree": "58b79b403e5ec36812aa8ef233cb404b2fcd7341",
      "parents": [
        "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
        "190313ec68e81c10d200ff3c20ac152cf90760d6"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "message": "am 190313ec: am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u0027190313ec68e81c10d200ff3c20ac152cf90760d6\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "d64cd233eef39430561c1e1df423336a199cc5d7",
      "tree": "34f6adda18ee4c4f2d1dea9ea4dbf0c84c2d0bfe",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:21:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 15:55:04 2012 -0700"
      },
      "message": "AudioRecord::stop() return void\n\nlike AudioTrack::stop()\n\nChange-Id: Iab62f4665151345f1ad5874c97a21d1a331f0154\n"
    },
    {
      "commit": "190313ec68e81c10d200ff3c20ac152cf90760d6",
      "tree": "7a0a8e099c9a90c42cb84b65d8462c7186e6b3cf",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939",
        "65e8d62a5b243518795cdafa498df4a49baf6940"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "message": "am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u002765e8d62a5b243518795cdafa498df4a49baf6940\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7",
      "tree": "121fce48f2765c8d13ecbc84dcf06c44d62096b4",
      "parents": [
        "9cca4c6d976d2d4127286e9eaa54d1b99880c25c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:05:58 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 14:49:12 2012 -0700"
      },
      "message": "AudioRecord client threading cleanup\n\nRename ClientRecordThread to AudioRecordThread to be more similar to\nAudioTrack naming.\n\nOnly create the thread once, and use resume() and pause() for start()\nand stop().  This will allow us to have a known client callback thread\ntid that we can pass to AudioFlinger before start().\n\nmActive:\nMade mActive a bool not int.\nmActive is protected by mLock; volatile is meaningless.\nFixed a few places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\nThese aren\u0027t used internally, so no need for _l() versions.\n\nChange-Id: I4b8a5c90f3a22d3894b344564cb1c5aef4f1fda2\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "04cd0186305e2b59d23c9147787046c6662029cc",
      "tree": "5c2da34c5489ab0741729ba6b66cec980c384720",
      "parents": [
        "5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 11:49:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 09:05:50 2012 -0700"
      },
      "message": "getMinFrameCount error handling\n\nConvention is for \"get\" APIs that directly return status_t and indirectly\nreturn a value via a pointer, to return BAD_VALUE if the pointer is NULL.\nAlso indirectly return 0 for other errors.\n\nChange-Id: I1599f20ecb26e9723f9fb384ffbf911ff3a2ce1c\n"
    },
    {
      "commit": "5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc",
      "tree": "e12cae6d070d56571a5ce2160199b4a54edd0f7a",
      "parents": [
        "1879fff068422852c1483dcf8365c2ff0e2fadfc",
        "d4070955e28ae62aa4be1657f9d32acde104bb86"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "message": "Merge \"Remove dead code in libmedia\""
    },
    {
      "commit": "1879fff068422852c1483dcf8365c2ff0e2fadfc",
      "tree": "f374fae563e2854ce20b4da16e9cae0d883aecd7",
      "parents": [
        "bf04a5d7f287fc712e0ed91849dc85c90c1e182d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 13:43:08 2012 -0700"
      },
      "message": "Add tid parameter to IAudioFlinger::openRecord\n\nNot yet implemented\n\nChange-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4\n"
    },
    {
      "commit": "d4070955e28ae62aa4be1657f9d32acde104bb86",
      "tree": "4e289a66bb82da52f8e0e1c1691b35f1309d9f35",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:03:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:09:09 2012 -0700"
      },
      "message": "Remove dead code in libmedia\n\nChange-Id: I7d8201590cda29c9fa99662a4fdba222091febfe\n"
    },
    {
      "commit": "bf04a5d7f287fc712e0ed91849dc85c90c1e182d",
      "tree": "f9fd2ffd8df5a02c9c9373f5362da76204e5a676",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:07:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:36:34 2012 -0700"
      },
      "message": "Simplify AudioRecord::getInputFramesLost()\n\nThis also fixes a benign race in reading mActive without a lock.\n\nChange-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "f89a0deef1ecafcba164045b76d4d6c7bf8eb24d",
      "tree": "2791c97dc25f847e89c4be5d5649600139cceab6",
      "parents": [
        "94479fd5405642c67efd14cebe722feb9cbe6e77",
        "d3a9ff4b725de612bf0354c035ba8f8564dbc6e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:23:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 10 08:23:31 2012 -0700"
      },
      "message": "Merge \"Move declarations of local variables to first use\""
    },
    {
      "commit": "dd8104cc5367262f0e5f13df4e79f131e8d560bb",
      "tree": "46c95f24576ec352d7d5d363606db9a46a44e9c3",
      "parents": [
        "f1da96d8cf60842538e00a9c950cc451f7da2c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:42:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:24:45 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),\ndeclare input parameter to use correct type audio_channel_mask_t.\n\nIn IAudioFlinger::getInputBufferSize(), input parameter is now channel mask\ninstead of channel count.\n\nRemove unused IAudioFlinger::channelCount(audio_io_handle_t).\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965\n"
    },
    {
      "commit": "20010053daabfa43fcfe781bbf004473b4c08538",
      "tree": "f34948205baac68d57000467e9877a0041249d33",
      "parents": [
        "624a7fcb377f2a40109c16de5109ae8ea1f67a69"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:43:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 13:51:10 2012 -0700"
      },
      "message": "Remove acoustics from AudioSystem::getInput()\n\nChange-Id: I29fb3ee5664c1f0ee0409c1bb2be087ecca637db\n"
    },
    {
      "commit": "624a7fcb377f2a40109c16de5109ae8ea1f67a69",
      "tree": "9082c6373d7a8c904183ba745697938ca30fda68",
      "parents": [
        "70be725da4d8aafb94d47c1962e897ecd5fdf823"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:24:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 10:03:30 2012 -0700"
      },
      "message": "Use audio_channel_mask_t in AudioRecord\n\nChange-Id: I9e1b918b2635d961604a4a9d88eb1c7179a167a7\n"
    },
    {
      "commit": "868a6a357018e5872e064b7a13a9b891e2078962",
      "tree": "66888ef3311ea9973ef85f31abc130a35e7d6392",
      "parents": [
        "46ec58976b3c04a99ce6e7eda2531543bfb151c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:22:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 09:31:55 2012 -0700"
      },
      "message": "Include what you use\n\nChange-Id: I12ef9367d05dbe069c037b1b4acd6347a8cf3ece\n"
    },
    {
      "commit": "f92eec53f886f43e4374a36195be55f2a7bbcf36",
      "tree": "e6db36a4f5ffb47782d0614f1defc783fcb436c0",
      "parents": [
        "a43787a8cc513715543fb5c80c7c464e2cd51b6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 08:16:36 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:49:03 2012 -0700"
      },
      "message": "Remove AudioRecord record_flags\n\nChange-Id: I021ddcc1bcb63132a4597d13e3d09db2a5f2c628\n"
    },
    {
      "commit": "d3a9ff4b725de612bf0354c035ba8f8564dbc6e8",
      "tree": "6352c2917870180111ebb84d3b1839ac2392bdae",
      "parents": [
        "a43787a8cc513715543fb5c80c7c464e2cd51b6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:11:38 2012 -0700"
      },
      "message": "Move declarations of local variables to first use\n\nChange-Id: I48b193a742b32b6746aa938b84dc405124a6a5c3\n"
    },
    {
      "commit": "4ebbabda6584aeb5ad2714e7db1702d00e84dad4",
      "tree": "275cd8ce57285b2bdcfa7e7f3668bf5d26de5718",
      "parents": [
        "c3c044ab1b2b5f9bebcff610795b6a1a9b60d01b",
        "192cbbad773979a6fe3b5a0c223356de4fc3309c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 14 12:12:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 12:12:52 2012 -0700"
      },
      "message": "am 192cbbad: Fix audio track pause.\n\n* commit \u0027192cbbad773979a6fe3b5a0c223356de4fc3309c\u0027:\n  Fix audio track pause.\n"
    },
    {
      "commit": "192cbbad773979a6fe3b5a0c223356de4fc3309c",
      "tree": "23bdbff8fd2a2b88a63a54287c6112908b050fb7",
      "parents": [
        "82233b4b5bee06f11618a558ae465abbfdedfd6e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 13 08:38:36 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 14 10:56:59 2012 -0700"
      },
      "message": "Fix audio track pause.\n\nAudioTrack::pause() should signal the control block condition\nto release threads waiting for available buffers in obtainBuffer().\nOtherwise the behavior relies on the timout on the condition\nor the fact that audioflinger will mix a new audio buffer while executing\nthe pause.\n\nBug 6653769.\n\nChange-Id: I5f8f73c471fe306070f30b814f32fd4b4dc1d575\n"
    },
    {
      "commit": "48a0bfa6f731386f2794ff36d6677d56e98fc6ea",
      "tree": "36deb7b4e31a25a8a4b313de8ffdecd1d8ae9aaa",
      "parents": [
        "cc0df657cdc8316c2b816c562f269be1706f00ea",
        "49dd5cf3469cd755321f8ec10013ad4fcfaf723d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "message": "am 49dd5cf3: Merge \"Log track name on obtain/releaseBuffer warnings\" into jb-dev\n\n* commit \u002749dd5cf3469cd755321f8ec10013ad4fcfaf723d\u0027:\n  Log track name on obtain/releaseBuffer warnings\n"
    },
    {
      "commit": "0c9d26d187017f7fb028ab52a0fbc6395142faa4",
      "tree": "35fd2f6babef082b85058fd27a69bda048687295",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:35:01 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 15:12:42 2012 -0700"
      },
      "message": "Log track name on obtain/releaseBuffer warnings\n\nThis should help diagnose problems by allowing us to correlate\nthe logs with the dumpsys media.audio_flinger output.\n\nChange-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9\n"
    },
    {
      "commit": "ea5008d8abfdf1479b4efa266cdb7c842d168aa9",
      "tree": "d963ca5cf87c18f8d14d6c1cce77edb9f56c96ac",
      "parents": [
        "98e2e030231ce99a4796d34d39a7517078d6735e",
        "28ed2f93324988767b5658eba7c1fa781a275183"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "message": "am 28ed2f93: Reduce underruns in screen off, esp. with EQ\n\n* commit \u002728ed2f93324988767b5658eba7c1fa781a275183\u0027:\n  Reduce underruns in screen off, esp. with EQ\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "721e18b75824eae3f3e79c915f4800ecad5dac80",
      "tree": "37035a80c39e676fefac4b65e3d26f37e9682a20",
      "parents": [
        "386f04ea89f858ae1a1865b6d92ae30a87930151",
        "27d33134130379cc91d936cdc742700311901a9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 19:59:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 31 19:59:12 2012 -0700"
      },
      "message": "am 27d33134: Merge \"Do not keep audio wake lock when apps underrun.\" into jb-dev\n\n* commit \u002727d33134130379cc91d936cdc742700311901a9d\u0027:\n  Do not keep audio wake lock when apps underrun.\n"
    },
    {
      "commit": "df839841d2db4cb8e2acb10205b3942622b3e7a2",
      "tree": "183ce49d98a66d866aeed85e98da6709206074ac",
      "parents": [
        "83410a85993ad6f5f0c122036ff0bda42bf1d4f7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 14:27:14 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 14:32:38 2012 -0700"
      },
      "message": "Do not keep audio wake lock when apps underrun.\n\nDo not automatically restart an AudioTrack after an underrun\nif the callback is executed but no data is written by the app.\n\nBug 6541286.\n\nChange-Id: I11e7ab8dc968d7ff087058fec68f44490d3a7731\n"
    },
    {
      "commit": "3c8889e827d95b195fe5ba077a01cb5b6042e534",
      "tree": "21f0fb2ccaa4a7643733d3f80e1443d62f44a447",
      "parents": [
        "cba7b32d8f2c47632313f54118ed3733b4b02cc8"
      ],
      "author": {
        "name": "Bernhard Rosenkraenzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Mar 29 11:38:59 2012 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu May 24 06:48:23 2012 -0700"
      },
      "message": "libmedia: Fix build with gcc 4.7\n\ngcc 4.7 doesn\u0027t like the redefinition of n in the same\nscope:\nfor(size_t n\u003d...;;) {\n  size_t n \u003d 2; // \u003c-- duplicate definition\n}\n\nChange-Id: Idfc2e768a0eb85a3dacccd3431b4ad44775432a4\nSigned-off-by: Bernhard Rosenkraenzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "2986460984580833161bdaabc7f17da1005a8961",
      "tree": "bd8aa210c0faee61dc45e23479e29cfc85f313c2",
      "parents": [
        "dfa29ab13647f22b30b2de34d4830c9e815bf120"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 18:57:51 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 17:20:12 2012 -0700"
      },
      "message": "Fix issues with synchronous record start.\n\n- Added a timeout in case the trigger event is never fired.\n- Extend AudioRecord obtainBuffer() timeout in case of\nsynchronous start to avoid spurious warning.\n- Make sure that the event is triggered if the track is\ndestroyed.\n- Reject event if the triggering track is in an incompatible state.\n\nAlso fix a problem when restoring a static AudioTrack after\na mediaserver crash.\n\nBug 6449468.\n\nChange-Id: Ib36e11111fb88f73caa31dcb0622792737d57a4b\n"
    },
    {
      "commit": "093000f7d11839b920e8dfaa42ed1d09f48e24b8",
      "tree": "ffecb5126696e2c2c83980ce8ad561b60278064a",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 03 09:35:36 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 03 10:05:00 2012 -0700"
      },
      "message": "Don\u0027t allow AudioTrack frameCount to decrease\n\nThis is a workaround for bug that client can cache return value of\nframeCount(), and is not notified when this value changes due to automatic\nre-recreation of the underlying IAudioTrack.\n\nA better long-term fix would be to notify clients when these kinds of\nparameters change, and to fix assumptions in client code that they are\nconstant (e.g. in SoundPool and maybe obtainBuffer).\n\nAlso, once a fast track request is denied, don\u0027t request it again.\n\nBug: 6431187\nChange-Id: I55b4ff30bbd9ed3a402e39452a38de52cdea53a9\n"
    },
    {
      "commit": "f4022f90db5acb680870db8c1150b673cdd211d9",
      "tree": "0ffaec361f808d5710d42298fa7d01873771cf6c",
      "parents": [
        "2c3297ab6c4daaaa7b27eed8418c64cf168fe2a1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:34:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:37:55 2012 -0700"
      },
      "message": "Fix race in AudioTrack destruction\n\nBug: 6427369\nChange-Id: Id3b4487406235b881f6f0b4b95c5a02a9b797e75\n"
    },
    {
      "commit": "31dfd1db7a4d2228d9642008af6f3dd744368eb6",
      "tree": "5182b898a5f21161ea879c4fe173f91d54366fd7",
      "parents": [
        "2409e4337b1e5968cbf75a839778f849266b64d9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 11:07:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 11:07:48 2012 -0700"
      },
      "message": "Disable fast track log spam\n\nexcept for \"denied by client\" and \"denied by server\"\n\nChange-Id: I133ab747933729cc1f386813ee06ece055bdb294\n"
    },
    {
      "commit": "1477e92867a950016579a644e74f803ed1d90cbb",
      "tree": "30a701da9df8255a188cd061e65e1998d2aa1e6c",
      "parents": [
        "27431de020e535c31365884316f656bc60b4fe4f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 10:59:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 10:59:31 2012 -0700"
      },
      "message": "Enable fast track for SoundPool\n\nChange-Id: Ia80b3a7738e4c5dbe2bd5b0f55f0ca49943e2f64\n"
    },
    {
      "commit": "98f153091e8f4190b35b9ce15250f308baf4805c",
      "tree": "00b1fe25cfb34a609fd09b477b905c3f37d271ec",
      "parents": [
        "6e66e4a9ffcb202beb2bcedb85c7d6f9ff391b4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 16:48:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 30 16:00:05 2012 -0700"
      },
      "message": "Re-enable fast track for ToneGenerator\n\nChange-Id: If4152169778df124c750dc45023322ee23c80587\n"
    },
    {
      "commit": "f60c660f048d5f5e2458cff243c20400d73757a7",
      "tree": "b2bf22e36da46fd25979df618f8661b4b0510dad",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 21:58:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:18:24 2012 -0700"
      },
      "message": "Added support for HE-AAC recording\n\nFixed bug in decoder related to sample rates / channel counts\nMade decoder follow Fraunhofer pattern\nLog if bitrate not available\nBug: 6275957\n\nChange-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe\n"
    },
    {
      "commit": "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b",
      "tree": "f8b459d895acef1717c96cb7133675dda3e458b7",
      "parents": [
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:14:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:02:58 2012 -0700"
      },
      "message": "Add Fraunhofer AAC encoder with AAC-ELD support.\n\nChange-Id: I6cd499d257d72f50a5b508bed97796a591a51506\n"
    },
    {
      "commit": "e0fa467e1150c65a7b1b1ed904c579b40f97c9df",
      "tree": "44ae1e182fd15695fccf5d1f396f99edc7942ee5",
      "parents": [
        "e370bb62b89d2f2980f519392010ea08a24c558e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 14:35:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 18:41:32 2012 -0700"
      },
      "message": "Move frame count calculations for fast tracks\n\nFor fast tracks: move the default and minimum frame count calculations\nfrom client to server.  If accepted, the default and minimum frame count\nis the fast mixer (HAL) frame count.  If denied, the default and minimum\nframe count is the same as it currently is for normal tracks.\n\nFor normal tracks: there is no change yet, preserve legacy behavior for\nnow but add a FIXME to change this later.\n\nBug fix: the test for buffer alignment matches channelCount was wrong.\n\nBug fix: check for 8-bit data in shared memory, which isn\u0027t supported.\n\nOptimizations:\n - in set(), only call AudioSystem::getOutputSamplingRate() when needed\n - in createTrack_l(), only call AudioSystem::getSamplingRate() and\n   AudioSystem::getFrameCount() when needed\n\nChange-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f\n"
    },
    {
      "commit": "a636433cbd09c0708b85f337ef45c0cdef3bcb4d",
      "tree": "8a629f33d648d1ddd8b79305f02763c539fef7cd",
      "parents": [
        "9adb12830ac2da72c91b842d24725ced6d236b16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 19 09:35:04 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 16:54:41 2012 -0700"
      },
      "message": "Use C APIs instead of C++ APIs for policy\n\nThe C++ APIs are going away.\n\nNote: we use tid \u003d\u003d 0 which is not supported yet by the C APIs,\ndo not submit this until that is added.\n\nChange-Id: I0e90789e6c81c69f2544e899c52421ea5d1342be\n"
    },
    {
      "commit": "ca8b28013c0558a4a3323a1a0f58520277200086",
      "tree": "56e351a74a524a059ed1759a6612cf88f6fd5b82",
      "parents": [
        "4a6c9c59a0297c3c6fcfadddaed7a9a976046daf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 13:58:16 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 14:15:45 2012 -0700"
      },
      "message": "Fix regression in AudioTrack::pause()\n\nBug: 6379646\nChange-Id: I12b53bc4118499ddc73a53a981f3f56328140868\n"
    },
    {
      "commit": "1d685d767a5dd1003eb62f6ad1a26b39645a474f",
      "tree": "7cd0c7e395f7072994dfcd34f3421c1f17db138d",
      "parents": [
        "0818e739bdbcf16f6dfb21d507002ceaaf664ee4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "message": "Fix ToneGenerator regression\n\nBug: 6378847\nChange-Id: Ib3324c7a5951ac95f99993bfae27ea02bfda08ff\n"
    },
    {
      "commit": "3acbd053c842e76e1a40fc8a0bf62de87eebf00f",
      "tree": "1d6dcc01039a1af770131c6b427efa27a2e5755f",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 10:39:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:50:01 2012 -0700"
      },
      "message": "Configure policy of mediaserver threads\n\nChange-Id: Ifd825590ba36996064a458f64453a94b84722cb0\n"
    },
    {
      "commit": "1948eb3ea6eee336e8cdab9b0c693f93f5f19993",
      "tree": "448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 16:50:19 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 14:17:02 2012 -0700"
      },
      "message": "Add support for deep audio buffers\n\nAllow AudioSink to use deep audio buffering when the\nsource is audio only and its duration is more than\na certain threshold.\nThis helps improve battery life but implies higher\naudio latency.\n\nChange-Id: Ie79915b61c370292f05aabda9779356570e03cbb\n"
    },
    {
      "commit": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60",
      "tree": "50cbb5bf04e41f33392563ca8847aaec8311cd3d",
      "parents": [
        "324c81a9f45614cb1d924ba0bcecddc120b2d69f",
        "3476de62fb10e76412452ef4c6bd71936c9f7db1"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "message": "Merge \"Add support for scaling mode parameter\""
    },
    {
      "commit": "3476de62fb10e76412452ef4c6bd71936c9f7db1",
      "tree": "9c814922fd33670a7cdd23c9597cbd19ad5e1ef9",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Apr 15 17:15:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:27:39 2012 -0700"
      },
      "message": "Add support for scaling mode parameter\n\nSupport VISUALIZER_PARAM__SCALING_MODE parameter.\n\nModify process() function to use new volume scaling parameter,\n used to set whether captured values are maximized by current\n headroom in the buffer (default existing behaviora) or left\n as is and thus affected by volume.\n\nModify AudioEffect to allow subclasses to override the following\n events: control status changed, enable status changed, command\n executed.\nIn Visualizer class (a subclass of AudioEffect), reset the\n scaling mode and capture size on the actual effect\n as cached when control is regained.\n This will allow the effect to be properly\n configured whenever Visualizers with different scaling\n modes or capture sizes are released (e.g. from java\n release() method).\n\nChange-Id: I05cb9f925a296dceca91bafa9fe294ef2b2c2bd5\n"
    },
    {
      "commit": "0ca3cf94c0dfc173ad7886ae162c4b67067539f6",
      "tree": "bc156e7822e663626b78ec2ad09ef3970fbb48c5",
      "parents": [
        "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 09:24:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 15:04:46 2012 -0700"
      },
      "message": "rename audio policy output flags\n\nChange-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312\n"
    },
    {
      "commit": "eee482b84bb456e87fa42e8ad02fd2d803839586",
      "tree": "0e89c90dc86877dcfbc05b88f609bafc04886e34",
      "parents": [
        "4e2293f29f2e719af1245d365747ea06d074b345",
        "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "message": "Merge \"ToneGenerator requests fast track\""
    },
    {
      "commit": "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9",
      "tree": "1de225f1859d80bff8323c89411e6fb4515ec4ac",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 11 12:33:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 15:56:17 2012 -0700"
      },
      "message": "ToneGenerator requests fast track\n\nAlso add comments to AudioTrack::set() parameter list\n\nChange-Id: I28c76e9d813778d86b15d75cf7f01a17c258b6d9\n"
    },
    {
      "commit": "77d837ae86c791c46ce019b58e09ac62780bf973",
      "tree": "4d4b7ec2d5a4699dc0c6fb650d6ff2c5c7242ebe",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "message": "Order of evaluation of parameters is not specified\n\nChange-Id: Id545e54c2ec8ed2f70ede630542ed999a9b2c5e2\n"
    },
    {
      "commit": "705868c0f2a6e85a39addefe4db9f2130627c219",
      "tree": "bf8bc411b75def4b2a70589290cb3343bf8189e8",
      "parents": [
        "e5becb51c64cb8a3f6bbd8a417f54510567f37dd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "message": "Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.\n\nChange-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf",
      "tree": "ae217f5c50a37349dce944c5d8a065a8740c88a9",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 11:06:28 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 12:16:27 2012 -0700"
      },
      "message": "New API to support submitting encrypted buffers to the decoder.\n\nChange-Id: I69dd60e43078c4211c6123cf6e0ce90e676bf873\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "a4c5a550e2a3bc237179b8684e51718e05894492",
      "tree": "be7b6d154763ed772738a0126d10e6317920767d",
      "parents": [
        "1a9ed11a472493cac7f6dfcbfac2064526a493ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 10:12:40 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 04 08:44:57 2012 -0700"
      },
      "message": "audio policy: load audio hw modules.\n\nAudio HW modules are now loaded upon request from audio policy manager\naccording to the configuration in audio_policy.conf.\nRemoved hard coded HW module loading by AudioFlinger at init time.\nAdded methods to IAudioFlinger and AudioPolicyInterface\nto control the loading of audio HW modules.\nAdded methods to open an output or input stream on a specific hw module.\n\nChange-Id: I361b294ece1a9b56b2fb39cc64259dbb73b804f4\n"
    },
    {
      "commit": "1a9ed11a472493cac7f6dfcbfac2064526a493ed",
      "tree": "5f4a3c6856f294b3c0371afd87df96277215107b",
      "parents": [
        "290ca3a767a974ce9d041e5bcb0c69153f7851d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 18:36:01 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 16:53:25 2012 -0700"
      },
      "message": "audio policy: add configuration file\n\nremoved outputs to stream mapping cache in audio system: the output for a\ngiven stream type must always be queried from audio policy manager as the cache\nis not always updated fast enough by audioflinger callback.\n\nremoved AudioFlinger::PlaybackThread::setStreamValid() not used anymore if\nstream to output mapping is not cached.\n\nChange-Id: Ieca720c0b292181f81247259c8a44359bc74c66b\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "2d6486f9112a6f0d23f17eaaad94bac62e16caab",
      "tree": "72c98b32d9865c49038dac2189dd13b410eef511",
      "parents": [
        "dca856f5cb849b8feab2d24f3248f25d887211ee",
        "edf47a8cba2d1d8985b64bf4a4fac661ba34f35a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "message": "Merge \"Update AudioParameter\""
    }
  ],
  "next": "4a4a0959bca78e03e3c3f486ba17829c28314d8c"
}
