)]}'
{
  "log": [
    {
      "commit": "9de61ae0ed40fcb147e09797bfb22dcea0b89df6",
      "tree": "db3b4b9bab41d8c331ad7b4022ff420586731f02",
      "parents": [
        "c79a9eaced675d176dda570da6a08c6e54743bec",
        "79a9cd40f5ebb2453cb982bc17d9797a1cbdf8d8"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Thu May 17 16:19:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 17 16:19:30 2012 -0700"
      },
      "message": "Merge \"Fix video scaling mode validity check.\" into jb-dev"
    },
    {
      "commit": "79a9cd40f5ebb2453cb982bc17d9797a1cbdf8d8",
      "tree": "c91826b96403823a1cb71453695e89fea6bd4441",
      "parents": [
        "6a16098437665c3aab3e9980359e140b8a47858b"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Fri May 18 00:15:56 2012 +0100"
      },
      "committer": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Fri May 18 00:15:56 2012 +0100"
      },
      "message": "Fix video scaling mode validity check.\n\nChange-Id: Ib7adead2758d50cae67741364801e966a82ad5ba\n"
    },
    {
      "commit": "ab624c2fd4f0fad6ba7f422a960942e5a7035cea",
      "tree": "2dd1238bb457902178d09a627745b51d57773c1e",
      "parents": [
        "9cb376e792567b5278e0eb418a3aeb848339a283"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 17 11:08:31 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 17 14:00:34 2012 -0700"
      },
      "message": "Use FLAG_LONG_PRESS for headset long press interactions.\n\nHandle canceled key events correctly and don\u0027t synthesize\nkey events in that case.\n\nUnfortunately, the state machine was confused by some sequences\nof key events that it might receive from the input dispatcher\nwhen new activities take focus during a long-press on the headset key.\nThe audio service may receive a cancel event intended for the old\nwindow, followed by a repeated down and finally an up for the new window.\nSimplified this down to just two booleans.\n\nBug: 6484717\nChange-Id: I9587d0a5e282419ef4d7c17665940682aacea96a\n"
    },
    {
      "commit": "0a95ce9ffbfa39def9186c736f6b135d251bc810",
      "tree": "7ab648fd7951a1f554495d8082c99e12caaac5b6",
      "parents": [
        "cb5ed06ada51f3421b236c4053b6742d5306ace2",
        "722b808662eb20fa91151f1e3aa05fd911d1d226"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 17 11:14:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 17 11:14:56 2012 -0700"
      },
      "message": "Merge \"Handle media button events during phone calls and when ringing\" into jb-dev"
    },
    {
      "commit": "722b808662eb20fa91151f1e3aa05fd911d1d226",
      "tree": "e978c827f0c3dd213b2aa333276a47db5f87b9d6",
      "parents": [
        "c1c140657633cc5b0ff26da1f122fab305d21e01"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 15 15:18:33 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 17 10:38:36 2012 -0700"
      },
      "message": "Handle media button events during phone calls and when ringing\n\nAdd functionality in AudioManager/AudioService to register a\n media button receiver for telephony that, when registered, gets\n priority for media button key events during a phone call or\n when ringing.\n\nBug 6484717\n\nChange-Id: I0835fc02cb24d06ca59af5a32c3ba0ae93e54442\n"
    },
    {
      "commit": "d88404d0a1991a13cce9d5e55e4314828839311d",
      "tree": "6993318a4a43ef0d7991435cd4c7704d52200d4b",
      "parents": [
        "76c0c612cdd5eeef8ff2f7a4478f6320a713d7a3",
        "538d4925b36067dc89ad0625a69dafeaa364bd2e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 17 09:53:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 17 09:53:02 2012 -0700"
      },
      "message": "Merge \"Fix .pls playlist parsing\" into jb-dev"
    },
    {
      "commit": "538d4925b36067dc89ad0625a69dafeaa364bd2e",
      "tree": "3a3c35a0260794ee11dd2b630c61797b351078cf",
      "parents": [
        "a7ea0d3968dc990aa76f3535c213e735e6d5e186"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 16 17:10:24 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 16 17:10:24 2012 -0700"
      },
      "message": "Fix .pls playlist parsing\n\nb/6508278\n\nChange-Id: I015ecf3fa599601ba4e9d018be24d0685e153239\n"
    },
    {
      "commit": "5ddb19e5305365d23ffd46751d8963d9b739b49d",
      "tree": "550baf34c92082ecc7561f8d1dd839e0a3873262",
      "parents": [
        "ae14715284837aebe179f790e0456d2bdb367583"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 00:25:22 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 16 01:04:40 2012 -0700"
      },
      "message": "Remove dependency of libvideoeditor_jni.so on static libs from video editor engine\n\nrelated-to-bug: 6502980\n\nChange-Id: I77aa67dac73ecb6200cfc885c426c23d70929e5d\n"
    },
    {
      "commit": "f20e4f4b1a31c2103efdff01e2bf1a3b6f8d503e",
      "tree": "6b3b08efa7bf51ff53c4614398c4819531f6c6cf",
      "parents": [
        "6387c8a9cb52e6b7bb1a0fb40ee3b66c00ad6697"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 14:51:52 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 14:51:52 2012 -0700"
      },
      "message": "Revert \"Remove dependency of libvideoeditor_jni.so on static libs from video editor engine\"\n\nThis reverts commit cbaa821b7f286a54767cc8bc549504ea2ed86e4d.\n"
    },
    {
      "commit": "cbaa821b7f286a54767cc8bc549504ea2ed86e4d",
      "tree": "110cc09cc750cae481c73df5de6916ec4ce2327c",
      "parents": [
        "7b8523aaed11a3b5ee286776023233036ac0759d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 00:25:22 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 00:31:45 2012 -0700"
      },
      "message": "Remove dependency of libvideoeditor_jni.so on static libs from video editor engine\n\nrelated-to-bug: 6328360\n\nChange-Id: Ifc9ffc671f454135db31590805c38f9635e5c815\n"
    },
    {
      "commit": "8c78752f2bf786ca3e6f45b9dc6955d3b4bba59c",
      "tree": "4f0a7b7b2928897f452c4357c4ce53b98e4b7d18",
      "parents": [
        "2411c3361eb2c15b09a8bfadf5c7c4a3de092ea0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 14:09:43 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 14:13:10 2012 -0700"
      },
      "message": "Implement new volume display policy.\n\nWhenever a stream type is muted, the progress bar in volume panel\nis at 0.\nIf a stream is muted by ringer mode and does not control ringer mode,\nthe progress bar is disabled.\nPressing VOL- when in vibrate or silent mode resets the last audible\nvolume of ringtone stream (music strem on tablets) to 0.\n\nVolumePanel implementation:\n - Always prefer AudioManager APIs over AudioService APIs when available on both.\n - Do not use AudioManager.shouldVibrate() (deprecated).\n\nChange-Id: I57fcb19ada4e8d729b6b41d668496562ebe340c3\n"
    },
    {
      "commit": "d9e587137b926a56e6e339f11da6a91624df515a",
      "tree": "f047d0cb92ef71118cc5b2dd5d0c9b3d87d87677",
      "parents": [
        "2d97a70ff8bbac5ea807003d65b64e3b255e82bc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sat May 12 10:08:22 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon May 14 08:49:42 2012 -0700"
      },
      "message": "Verify AudioTrack only uses a valid multichannel configuration\n\nEnforce the same rules as for HDMI output:\n- FL/FR must be present\n- paired channels must be used in pairs (e.g. no rear left\n   without rear right)\n\nBug 6392126\n\nChange-Id: I0a39e474dcf509cb7eabd8edd1f0e44852d72b51\n"
    },
    {
      "commit": "2d97a70ff8bbac5ea807003d65b64e3b255e82bc",
      "tree": "b8dc5319fb1357057c61c519176ed6d213f1485c",
      "parents": [
        "59e2a1ea01dc646ca68c6039b39eb809fe1a7a8e",
        "4294b83927f51e5c115ebaafd2e185ba5de91436"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sat May 12 08:06:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 12 08:06:28 2012 -0700"
      },
      "message": "Merge \"Start voice-based interactions from headsethook key\" into jb-dev"
    },
    {
      "commit": "909c4b855a372dbc70ce6777df64d12ae93ad2d5",
      "tree": "1a3987f0985b841177a7c24ee3a0f94cb418b0d3",
      "parents": [
        "7fc4fbccd6129e286a1f9c640eb3229b91792bce",
        "8902097bb686752ff207e3bda12713be1a8c74eb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 11 16:45:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 11 16:45:19 2012 -0700"
      },
      "message": "Merge \"Improve notifying TimedText by reducing marshall/unmarshalling.\" into jb-dev"
    },
    {
      "commit": "4294b83927f51e5c115ebaafd2e185ba5de91436",
      "tree": "ab9165af45f4932a95f3e4f976b844216d80c48c",
      "parents": [
        "c2e393f86c39e710a06a1d452a410014295fb6e4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 30 17:39:29 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 10 18:42:31 2012 -0700"
      },
      "message": "Start voice-based interactions from headsethook key\n\nImplement the interception of long-press on keys that\n can be used to trigger voice-based interactions (here\n only HEADSETHOOK) only if the long-press hasn\u0027t been\n trapped by the foreground application:\n - if the key is not one that is used for voice input, handle\n   the event as before.\n - if the key press wasn\u0027t long enough, simulate a delayed\n   key press.\n - if long press is detected, send\n   RecognizerIntent.ACTION_WEB_SEARCH. Long press duration\n   is set to 300ms (a typical key press is under 100ms).\n\nBug 3225090\n\nChange-Id: I5b3adeb91d3c41ccd54d23fdb93d7eaec496eee7\n"
    },
    {
      "commit": "8d8176d41b8b8f08435e727f03e43e27a542dcc2",
      "tree": "cb89dd3d7f13d114fc09d5c3113f56c75ef96f3d",
      "parents": [
        "304521b7cf6f54b4ae6089d0b38eb495376061b1",
        "9841818b9a0280abf59343c9e00a2976dbc084fa"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu May 10 17:58:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 17:58:47 2012 -0700"
      },
      "message": "Merge \"AudioService: Fix problem handling USB audio disconnect\" into jb-dev"
    },
    {
      "commit": "9841818b9a0280abf59343c9e00a2976dbc084fa",
      "tree": "642c6ac897c1e52fc23372a903dd5de0bea2fac8",
      "parents": [
        "bf91046872dd711019e8dec543441601576cc950"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu May 10 17:13:20 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu May 10 17:49:30 2012 -0700"
      },
      "message": "AudioService: Fix problem handling USB audio disconnect\n\nAlso broadcast ACTION_AUDIO_BECOMING_NOISY on USB audio disconnect\n\nChange-Id: I46dfcc744df880066aea6bf651334a081c14af0f\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "244820185269991186d07068b92985624cede4a5",
      "tree": "c0cb0b540450aa3c857159576f02e83a86e1ffdd",
      "parents": [
        "24938df9e44dbed2ea9c72370907fe403674ee00"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 09:41:17 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 17:20:26 2012 -0700"
      },
      "message": "AudioService: fix various volume issues.\n\nFix various issues in adjustStreamVolume() related to stream type aliases\nusing different ranges.\n\nAlways Update last audible index on all streams sharing the same alias.\n\nAdd check on setRingerMode() to prevent setting mode to VIBRATE when no\nvibrator is present.\n\nIssue 6455831.\n\nChange-Id: Id110e05d2f16e208e1e398922617bf31967b62db\n"
    },
    {
      "commit": "24938df9e44dbed2ea9c72370907fe403674ee00",
      "tree": "1a289bee16f94292695e73852ded582ea7bc9499",
      "parents": [
        "718af32a191066822262ad05cdd525a09c66094f",
        "3172d5e3e7520a745fa37b71fc1c7bf244b57085"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 15:20:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 15:20:08 2012 -0700"
      },
      "message": "Merge \"AudioService: synchronized access to volume index\" into jb-dev"
    },
    {
      "commit": "3172d5e3e7520a745fa37b71fc1c7bf244b57085",
      "tree": "8bf131deb607bffcb70ef15856b69bbca3ff27ff",
      "parents": [
        "3fcf1c85873008df43ee80f896216fb39e4c630e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 11:38:16 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 14:55:20 2012 -0700"
      },
      "message": "AudioService: synchronized access to volume index\n\nAdd synchronization to prevent concurrent accesses to\nvolume indexes HashMap in VolumeStreamState.\n\nUse ConcurrentHashMap for VolumeStreamState mIndex and\nmLastAudibleIndex.\n\nIssue 6421841.\n\nChange-Id: I6dee805a79aa5e2cd0ba4072014a2fcdda4ed507\n"
    },
    {
      "commit": "1bc1b8a5b8a0c5fbcd670d1963235de27a5ccec4",
      "tree": "8fd291c45e23c97af3533d11f5722b1f9ef7638e",
      "parents": [
        "4fe5ebcc962ad7edb205bf988dd463854dea1044",
        "b842599e51e2d3611503c3c7db1111358f99186d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 11:42:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 11:42:15 2012 -0700"
      },
      "message": "Merge \"Make sure crop rect information is visible from java.\" into jb-dev"
    },
    {
      "commit": "b842599e51e2d3611503c3c7db1111358f99186d",
      "tree": "7816391f4463c33434983fa81763f17a18a2ca39",
      "parents": [
        "a25079e6bafcfd77135a852f0e838738d80606ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 11:32:15 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 11:32:15 2012 -0700"
      },
      "message": "Make sure crop rect information is visible from java.\n\nChange-Id: Ib914de3d42349efcd7af301d43bec82a21d24ce5\nrelated-to-bug: 6471684\n"
    },
    {
      "commit": "1870c69693d655b101fcc221eb14b1cd7592059d",
      "tree": "756ba4a975b948caa90fac7ff8bd2607b54c8509",
      "parents": [
        "b86bc1058b8b9bce045ae94f7cd703d4bfecccb3",
        "b939760679caa9fdd06c862cf8218cc8f4a90ef1"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu May 10 11:16:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 11:16:59 2012 -0700"
      },
      "message": "Merge \"Adding disconnect call to the SurfaceTextureTarget\" into jb-dev"
    },
    {
      "commit": "c2e393f86c39e710a06a1d452a410014295fb6e4",
      "tree": "3429f85a64c982cc797e73ea38f4d10e0b1e2b23",
      "parents": [
        "a25079e6bafcfd77135a852f0e838738d80606ef",
        "a75c7bbc633a6ebd35a0651be5c7a79b83d0c5c0"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Thu May 10 10:02:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 10:02:44 2012 -0700"
      },
      "message": "Merge \"pseudo random number generator in shader with limited precisions\" into jb-dev"
    },
    {
      "commit": "08fb063f078d34e66ff697163de5797a83fb1ded",
      "tree": "f711ded4f45b2d51a6bb623dc175ad15fe69e982",
      "parents": [
        "4cbb2c41ce5d9188be6badd8fa51b921467b221c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 09 18:52:49 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 09 19:16:14 2012 -0700"
      },
      "message": "Add compression level key for FLAC encoding\n\nChange-Id: Ic4c32694841b6f37ca44061d14bb81fc267696cc\n"
    },
    {
      "commit": "b939760679caa9fdd06c862cf8218cc8f4a90ef1",
      "tree": "753cfa4e05019fcb9c0a990fefd0bc2b24bc5814",
      "parents": [
        "d72ad2ac88ae8477a95e18a800062446a58c524d"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Mon May 07 22:51:58 2012 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed May 09 18:51:48 2012 -0700"
      },
      "message": "Adding disconnect call to the SurfaceTextureTarget\n\nRelated to b/5873421.\nWhen an app using the SurfaceTextureTarget filter and the activity goes\nout of focus such as onPause(), the underlying surfacetexture might not\nbe available anymore to the filter. The filter needs to be told about\nthat so that it does try to render into the surface corresponding to the\nsurfacetexture. For example, in Camera app, the VideoCamera activity has\nto let the underlying effects graph know about the disconnect in the\nonPause() method.\n\nChange-Id: Iee3af16715432d84fef4438d1671f4d6d261b3d7\n"
    },
    {
      "commit": "a75c7bbc633a6ebd35a0651be5c7a79b83d0c5c0",
      "tree": "4fa588500655c5a8fbd4e383efdf430e1ba260f2",
      "parents": [
        "87156c96f5f2a761b8d05318f8ae82ce26aa16b4"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Thu May 03 18:34:19 2012 -0700"
      },
      "committer": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Wed May 09 17:33:25 2012 -0700"
      },
      "message": "pseudo random number generator in shader with limited precisions\n\nChange-Id: I3289155824bf71b274c00d1b16366bb319588831\n"
    },
    {
      "commit": "f86374adec8bd77af7b012f788ea59575296facb",
      "tree": "642e4285603deea4f123dfff6544b2792b819559",
      "parents": [
        "2f4b10e2d4320db490b03eb198ce034302ef00fc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 09 11:25:29 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 09 11:32:51 2012 -0700"
      },
      "message": "Remove SEEK_CLOSEST constant from MediaExtractor, its implementation makes no\n\nsense for the java API.\n\nChange-Id: I3f2eabb5ca5ffb6c1f03141bfd303310111e8774\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "8902097bb686752ff207e3bda12713be1a8c74eb",
      "tree": "5be5db2d0cee6a1c89b114ce3e940465d90e632d",
      "parents": [
        "a71293f36cb6f6b906301a426c6c5f388e118552"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Tue May 01 14:13:19 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Wed May 09 20:14:09 2012 +0900"
      },
      "message": "Improve notifying TimedText by reducing marshall/unmarshalling.\n\no Removes mParcel from TimedText class.\no Converts native parcel into java parcel object directly without\ncopying to an intermediate byte array.\no JNIMediaPlayerListener::notify checks for Java exceptions, logs them,\nand clears the exception state.\n\nrelated-to-bug: 6405934\n\nChange-Id: I8b82d3cd5b9b3ef8cad27e805202a0e445a88a45\n"
    },
    {
      "commit": "3b5fdf510b8660be44121008e6c9dded8c86020c",
      "tree": "6e3b3a42db4c7daced652a6c9d7ce371931c575a",
      "parents": [
        "2aaa6bbd53319012e5eba107880c68dbc5b2d8db",
        "be0ea968bf8b3f92f6975ccd14031aec23a2c47f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 08 18:29:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 18:29:44 2012 -0700"
      },
      "message": "Merge \"Fix: Missed parcel recycling in MediaPlayer.\" into jb-dev"
    },
    {
      "commit": "c8ade15dadd680c5e4b201f3b7b0823a13dedb3e",
      "tree": "9bdbedce9405c522224b1921e0b54694d131fdf8",
      "parents": [
        "2e999d12743edf329b6991d7168099cec9f1c24f",
        "bffc3d1bd33eb2d8e00a9f8b6261d815db503311"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 15:15:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 15:15:49 2012 -0700"
      },
      "message": "Merge \"Silent and Vibrate mode clean up\" into jb-dev"
    },
    {
      "commit": "bffc3d1bd33eb2d8e00a9f8b6261d815db503311",
      "tree": "a1479697fba70c0d8bbb608f4bb9a612781b9f3f",
      "parents": [
        "c2182c67d65619041956849c346d67e77010ab7e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 07 17:43:49 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 15:10:37 2012 -0700"
      },
      "message": "Silent and Vibrate mode clean up\n\nClean up related to new Vibration policy.\nThe vibrate behavior is now only derived from:\n - presence of a vibrator on the device\n - current ringer mode selected: NORMAL, VIBRATE or SILENT\nIf no vibrator is present the ringer mode can only be NORMAL or SILENT.\n\nThe control of ringer mode via volume keys when volume keys control the \"master\"\nstream type (RING on phones, MUSIC on tablets) is as follows:\nIf a vibrator is present:\n VOL- and volume equals 1: NORMAL \u003d\u003e VIBRATE\n VOL- and volume equals 0 and not continuous press: VIBRATE \u003d\u003e SILENT\n VOL+ and in SILENT mode: SILENT \u003d\u003e VIBRATE\n VOL+ and in VIBRATE mode: VIBRATE \u003d\u003e NORMAL, volume \u003d 1\nIf no vibrator is present:\n VOL- and volume equals 0 and not continuous press: NORMAL \u003d\u003e SILENT\n VOL+ and in SILENT mode: SILENT \u003d\u003e NORMAL, volume \u003d 0\n\nVIBRATE_ON and VIBRATE_IN_SILENT settings are not stored/retreived any more.\n\nAudioService checks and corrects ringer mode and stream volumes if necessary when reading from\nDB at boot time.\n\nAlso:\n Added dump for stream volumes in AudioService.\n Added device names missing in AudioSystem for USB accessory and USB device.\n\nIssue: 6036529\nIssue: 6414950\nIssue: 6448163\n\nChange-Id: I77fb821ec63e4e566320cac2701b4ac466e86aef\n"
    },
    {
      "commit": "3dd7fd08a8a1d658b0aac8590f1fd922e056f689",
      "tree": "4f75b1766f0757eb760ce51e81a191c220c4b6db",
      "parents": [
        "c2182c67d65619041956849c346d67e77010ab7e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 13:50:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 13:50:45 2012 -0700"
      },
      "message": "Return codec buffers that are marked as having host endianness.\n\nChange-Id: Iedfd829d108e65ee368909af14ace68b63e0e168\nrelated-to-bug: 6364139\n"
    },
    {
      "commit": "8aa735f71e8921b93f2bb6fa5506d8ff414698a0",
      "tree": "f80e74abb3b1a4b6ba6a2dd104dbc5407fc1682e",
      "parents": [
        "89139d74b27305a29ca082c75d94dcbed5f84625"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 11:33:12 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 11:33:12 2012 -0700"
      },
      "message": "Clarification of MediaCodec behaviour when codec specific data is included\n\nin the format passed to configure().\n\nChange-Id: I150f52e8092c0f7d897891f02ba6b1d89b6230f4\nrelated-to-bug: 6364139\n"
    },
    {
      "commit": "1d8e5c588035550293ecd2558a2e285ee2789d38",
      "tree": "24cd516caac7e5010d7f3d029f4dac6ce8a47929",
      "parents": [
        "3c5f92432734e1e3b9bdc515628a4c09d7759cd4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon May 07 11:22:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon May 07 13:30:10 2012 -0700"
      },
      "message": "Handle silent ringtone, title without permission.\n\nSilent ringtones have a valid Uri, but isn\u0027t openable by MediaPlayer,\nso treat as no-op playback instead of throwing.  Also handle missing\npermissions when resolving title.\n\nBug: 6448074, 6447538\nChange-Id: I656675d7fc2e78a6ba05824e13bdd43193fcfdf2\n"
    },
    {
      "commit": "be0ea968bf8b3f92f6975ccd14031aec23a2c47f",
      "tree": "6d961deab229be527c0fd98b0b51ec7e121919ae",
      "parents": [
        "58d5ff875750755f166ec943ca0bf177bdba9683"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Fri May 04 20:52:57 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Mon May 07 11:31:18 2012 +0900"
      },
      "message": "Fix: Missed parcel recycling in MediaPlayer.\n\nChange-Id: I2c99f771b33bf627af10e8baea455181558360e6\nrelated-to-bug: 6405934\n"
    },
    {
      "commit": "c52c957c450ded6ecf2444595ea6ddfc9546c786",
      "tree": "8759d03066690275da5f55f929f92cc94ec86cbb",
      "parents": [
        "602290a01124b2eac045b066a87a6fc4911153c6",
        "60d610bf103379277a4b29a7ead4f013f6128e4e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 04 08:53:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 04 08:53:23 2012 -0700"
      },
      "message": "Merge \"Various changes to Media* APIs requested by the api council.\" into jb-dev"
    },
    {
      "commit": "60d610bf103379277a4b29a7ead4f013f6128e4e",
      "tree": "3bff8658e38cbe8af73dce98e9ab7ac9ba7fb42c",
      "parents": [
        "5380cdc2e1adc8511b05e7623efb44d67be88418"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 02 16:06:09 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 16:02:29 2012 -0700"
      },
      "message": "Various changes to Media* APIs requested by the api council.\n\nChange-Id: Iec2f50c99cf5f00a442737231361334e9ab46340\nrelated-to-bug: 6432753\n"
    },
    {
      "commit": "c919816155f18e2cf395abc31fc3e1c3923bde76",
      "tree": "ff71866b4935c6bcfe6307c3088844cd9e06c820",
      "parents": [
        "9b4dc0f70194c2e1c24ecc146f4f0c74970cf347",
        "f26f01784e1c733c53cad3ed31918e73448ce369"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 03 15:13:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 03 15:13:06 2012 -0700"
      },
      "message": "Merge \"Make AudioService aware of device orientation changes\" into jb-dev"
    },
    {
      "commit": "cc6475e1732ae5ad4df480fccf44e1cb3ddce153",
      "tree": "a07b9a74aaa66128452eec47cb428350b0355b34",
      "parents": [
        "c793d62613b8cee340ce6c20856f6db81575f034"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Thu May 03 13:08:15 2012 -0700"
      },
      "committer": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Thu May 03 13:08:15 2012 -0700"
      },
      "message": "Fix b/5974573 Please increase intensity of film grain effect\n\nChange-Id: Ia984aa91bf3ae8aef47e24a0074b1b0f1624c1a0\n"
    },
    {
      "commit": "f4b403159f8a89eb2158bbb6c314de3bc90fee73",
      "tree": "0752567e9c8ea334e18ff3c641eec39a7638d8ee",
      "parents": [
        "6f28f9ef315e3b5190259a943be91ecfafc69103"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Wed May 02 15:13:42 2012 -0700"
      },
      "committer": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Wed May 02 15:16:57 2012 -0700"
      },
      "message": "Fix b/5974247\n\nChange-Id: I8c5cf035f195142607875739604d163c7a43e305\n"
    },
    {
      "commit": "f26f01784e1c733c53cad3ed31918e73448ce369",
      "tree": "b9fcba8f084051fc626572c36ebcf26f685c041d",
      "parents": [
        "7a6a4bf1b5905d3136ca883fff1d432e7c260298"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 25 16:23:20 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 02 11:20:22 2012 -0700"
      },
      "message": "Make AudioService aware of device orientation changes\n\nIf the \"ro.audio.monitorOrientation\" system property is\n defined and true, monitor device configuration changes\n and see if the device orientation changed. If it did,\n set the \"orientation\" audio system parameter to one\n of \"landscape\", \"portrait\", \"square\" or \"undefined\".\nSet orientation when starting AudioService, and\n when media server restarts.\n\nChange-Id: Idce548f93abf3aab30149e5952daaa7051630232\n"
    },
    {
      "commit": "f3afe15754a3ffbc41955476081c3a29adaf32f3",
      "tree": "ff0640b5b681b1f9aa55e14a288b94bbd8b369cf",
      "parents": [
        "3e350304599eeb627065de75f3bfe3a45f58389e",
        "cd1cd73baec1f93d21f67fdded5466e507431eba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 16:29:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 01 16:29:39 2012 -0700"
      },
      "message": "Merge \"AudioManager: deprecate vibrate settings\" into jb-dev"
    },
    {
      "commit": "cd1cd73baec1f93d21f67fdded5466e507431eba",
      "tree": "ccc8243b5504f1a014eaeb524bf3ef5e9ef1deae",
      "parents": [
        "faac92942c50b12edada5e92e7c323609b2bdb5f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 11:23:07 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 16:26:04 2012 -0700"
      },
      "message": "AudioManager: deprecate vibrate settings\n\nDeprecate methods, intent and constants related to vibrate\nsettings management: getVibrateSetting(), setVibrateSetting(),\nshouldVibrate() ...\n\nAccording to new vibrate/notification policy, applications should\nmaintain their own vibrate settings.\n\nIssue 6036529.\n\nChange-Id: I99bcef2c5f602131f1d9b0222f7fb39f3bbef823\n"
    },
    {
      "commit": "cb6662ac532beeba0d3adb85fa37d307838b4325",
      "tree": "cead2d07c9ba28c2e8bf42aa86fc935502e4b2ff",
      "parents": [
        "f72d392f5deeda68af6a8a9b4a8c62f215331129",
        "454014e55fe5a0d9a4b47080f8017b5297d016a8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 01 13:34:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 01 13:34:28 2012 -0700"
      },
      "message": "Merge \"Add video scaling mode support with a new public method in MediaPlayer.java class\" into jb-dev"
    },
    {
      "commit": "48dc91b514844b04f1d8dec18a480f9591a2f989",
      "tree": "c9e9b9bad8d4deba9759b04042581519726dde80",
      "parents": [
        "7e400cfb715858a168add7fa6eaa262ab8ad0695"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 01 11:50:30 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 01 12:27:26 2012 -0700"
      },
      "message": "Make java constants consistent with native counterparts.\n\nChange-Id: I481dfc18c170b4c60682ef1b38b57e10fb73d004\n"
    },
    {
      "commit": "454014e55fe5a0d9a4b47080f8017b5297d016a8",
      "tree": "70a7dd53009bcab87ce9ac57f638a2d196eff130",
      "parents": [
        "6dbac3798128574accff64a9a2b00b2176058898"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Apr 28 16:03:55 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 01 12:22:35 2012 -0700"
      },
      "message": "Add video scaling mode support with a new public method in MediaPlayer.java class\n\no related-to-bug: 5454345\n\nChange-Id: I379b679eb6dd87f47f87a58791a5d0c7251b3a74\n"
    },
    {
      "commit": "94affdd80e20c334dd5bfff170aee878992195ad",
      "tree": "2aa8d822e7606e10b2166e88e996986e2579dd7e",
      "parents": [
        "59eaa907fef9454f6f5ff2ab727eef43bdf7f88d",
        "f740664cd808bebfc35ded46da6002bdc97a1a16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 10:47:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 01 10:47:57 2012 -0700"
      },
      "message": "Merge \"fix unmute from volume panel on tablets\" into jb-dev"
    },
    {
      "commit": "f740664cd808bebfc35ded46da6002bdc97a1a16",
      "tree": "17ee829070363e38ea8bfb7bf618c66639d0fbb9",
      "parents": [
        "faac92942c50b12edada5e92e7c323609b2bdb5f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 10:03:38 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 10:05:21 2012 -0700"
      },
      "message": "fix unmute from volume panel on tablets\n\nChanging STREAM_MUSIC from volume panel on tablets should exit silent\nmode as does changing STREAM_RING on phones.\n\nIssue 5970208.\n\nChange-Id: Ia8ed62033da07a5d4dfcfa84b0b47b27414bdd9a\n"
    },
    {
      "commit": "8ccfbdddabf3387a1ac9d46bd057bea64eb30ef3",
      "tree": "c533c8adedca1455b5627b4598a3532f4da3979d",
      "parents": [
        "6dbac3798128574accff64a9a2b00b2176058898",
        "c68022258ebd3dd97a5079ba99f4f3cd12b223b0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 01 08:57:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 01 08:57:18 2012 -0700"
      },
      "message": "Merge \"Optimize how AudioService receives media button events\" into jb-dev"
    },
    {
      "commit": "56ce3c00fb120133dbd706da8f550bc6ed9c3722",
      "tree": "fbcbbc05afaa76cc39d48837f914c7749420f3e0",
      "parents": [
        "af8978226f5e929bd5d4dab04edd11218e8ac6ce",
        "22edf6b2e4e75195b83ae1c4da61e3bf623802b0"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Mon Apr 30 17:55:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 17:55:09 2012 -0700"
      },
      "message": "Merge \"Fix b/5821633: Could not activate GLEnvironment\" into jb-dev"
    },
    {
      "commit": "c68022258ebd3dd97a5079ba99f4f3cd12b223b0",
      "tree": "231a215ad8b0f72a41cc78bda847a24150ef79a2",
      "parents": [
        "d6be37d4d9d8427ed0eccf2a333e5589b88b0cf8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 30 11:15:03 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 30 17:46:19 2012 -0700"
      },
      "message": "Optimize how AudioService receives media button events\n\nAudioService maintains a stack of registered media button event\n  receivers.\nThis change modifies the broadcasters of ACTION_MEDIA_BUTTON intents\n  let AudioService directly handle the corresponding key event instead\n  of trapping the intent sent by PhoneWindowManager, KeyguardViewBase\n  and PhoneFallbackEventHandler.\nBecause the key event may be sent through a PendingIntent,\n  AudioService now also implements the OnFinished interface to be\n  notified when the event was consumed so it can release the wake\n  lock held if it was held when the key event needed to be sent\n  (see where PassHeadsetKey was instanciated in PhoneWindowManager).\n\nChange-Id: I2e8614df94af9d54edbf714ef443cc372d21827a\n"
    },
    {
      "commit": "22edf6b2e4e75195b83ae1c4da61e3bf623802b0",
      "tree": "9cc3f039bd16a76b5f3c9cf0bdcc5d44ef5f4408",
      "parents": [
        "bfb27bbefb013220af699881d486cc04be5ec1f5"
      ],
      "author": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Mon Apr 30 17:16:44 2012 -0700"
      },
      "committer": {
        "name": "Ruei-sung Lin",
        "email": "rslin@google.com",
        "time": "Mon Apr 30 17:16:44 2012 -0700"
      },
      "message": "Fix b/5821633: Could not activate GLEnvironment\n\nChange-Id: I35a05eb24299b85a869b973599a091381369aac2\n"
    },
    {
      "commit": "b12a5390694e8525ac61d7377e266e31d124c815",
      "tree": "5b89d841558fe41d6799ef8406b645c64da8ad2b",
      "parents": [
        "f1790eb595d009118f477967b93b5814b7863a34"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 14:18:33 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 14:46:22 2012 -0700"
      },
      "message": "New API to set the video rendering mode on a MediaCodec instance.\n\nChange-Id: I6d765bb4cab7bcf29f09364293c24e8a6930078b\nrelated-to-bug: 6364139\n"
    },
    {
      "commit": "ec3f31f6215cb380bba5ab36c9e4c21b13f046a1",
      "tree": "0531fe4d8c20f7603f101a3707446a8832d460c7",
      "parents": [
        "427db9b3d10d5c203d0351e683c3cddfd270250c"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 22:02:13 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:24:01 2012 -0700"
      },
      "message": "Added support for HE-AAC recording.\n\nNot unhiding HE-AACv2 since that requires stereo mics.\n\nBug: 6275957\n\nChange-Id: I953a6d21e615c8fd23f9390e3c86d63089f5fb75\n"
    },
    {
      "commit": "6d6f233a62fc6d3aceb74966a7f38b0917dc790e",
      "tree": "13853237e9e88248ecb24bd92ad7a559e3d56515",
      "parents": [
        "04144a8b346ba169f0bb0dad8ad4208fa292ed67",
        "7a9734d769d97470ce6fac0594dd007804d33432"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 27 17:49:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 17:49:28 2012 -0700"
      },
      "message": "Merge \"Unhide APIs for timed text and multiple audio track switch APIs\" into jb-dev"
    },
    {
      "commit": "7a9734d769d97470ce6fac0594dd007804d33432",
      "tree": "ca8065dee6e8540066d992dbefed8785dfe6601a",
      "parents": [
        "665a376d245d7bbfc43e3cfa651afc7448604afa"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 19 13:30:20 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 27 15:48:46 2012 -0700"
      },
      "message": "Unhide APIs for timed text and multiple audio track switch APIs\n\no made all the member variables in helper classes for TimedText to be public and final\n  since they are read-only\no removed Text and TextPos helper classes\no added two public methods in TimedText class: getText() and getBounds()\no cleaned up the javadoc of related methods in MediaPlayer.java and TimedText.java classes\no make the inner classes of TimedText static and final\no change invoke and let it throw RuntimeException on failure (thus a test class needs to be\n  modified also).\n\no related-to-bug: 6110705,5542712\n\nChange-Id: Ia1dd1fd5eb8e9fd1b61c6c0d67405edb627a3002\n"
    },
    {
      "commit": "098d580cc2bb6c0891c756a4e5230c6c6b0d2376",
      "tree": "bd5ae0f9e87a5516e8c481cebc54321272152491",
      "parents": [
        "f5d70fd2add31cdb2e4ca1e931b47db95fa4b3e0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 26 17:30:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 27 14:15:05 2012 -0700"
      },
      "message": "Migrate ringtone playback to SystemUI.\n\nIntroduce IRingtonePlayer, which handles playback for both Ringtone\nobjects and Notifications. SystemUI now hosts this player, which it\nregisters with AudioService. It also keeps MediaPlayer instances\nwarm, and cleans them up after stop() or Binder death.\n\nMove both Ringtone and NotificationManagerService to play back audio\nthrough this new interface.\n\nBug: 6376128, 6350773\nChange-Id: I1dcb86d16ee3c4f07cdb2248d33dcff4ead3609a\n"
    },
    {
      "commit": "f5d70fd2add31cdb2e4ca1e931b47db95fa4b3e0",
      "tree": "b74a6c29363e9962271e58703af57a8203cd91d7",
      "parents": [
        "d52e0c791f83d16cb5de32b6a9a1d785aa56b454",
        "eb4cc492c93ab9635dde78b958a834120412e72a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 27 10:16:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 10:16:40 2012 -0700"
      },
      "message": "Merge \"Protect system services with DUMP permission.\" into jb-dev"
    },
    {
      "commit": "c098198eb37974ef117d3d5f0d07fb19ead036dc",
      "tree": "06ad7e58e83b2af1dbcf1e32b379470af35efdcd",
      "parents": [
        "2c9ae7538819b77c8814217b93a6ef0bf417854a",
        "6d5176638c2189595cede38fb92c3e7e8700e221"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 27 08:48:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 08:48:51 2012 -0700"
      },
      "message": "Merge \"system and UI sounds volume policy\" into jb-dev"
    },
    {
      "commit": "b33c34cc25263647e0270ab92cb7fdb5af79416c",
      "tree": "622631bb73417c02ee968d0c3b233ee63567f904",
      "parents": [
        "73214f619a824cf724ab8f60d8fc992aed6a70a6",
        "2f708ce9cc7fc2e4d498bcc20a095bdf8e9c803d"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Apr 26 22:34:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 22:34:03 2012 -0700"
      },
      "message": "Merge \"Resolving the black screen / crash in effects\" into jb-dev"
    },
    {
      "commit": "6d5176638c2189595cede38fb92c3e7e8700e221",
      "tree": "27b673ef8d8ca32894e8b62d64e40f52403d63c6",
      "parents": [
        "f18222da3cdfd3b052361369b70a4d22396039c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 23 18:42:39 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 18:36:56 2012 -0700"
      },
      "message": "system and UI sounds volume policy\n\nImplement a more consistent policy for system and UI sounds (key clicks, lock/unlock,\ncamera shutter, DTMF, low battery...):\n- All system sounds are played over STREAM_SYSTEM stream type.\n- The STREAM_SYSTEM volume that was previously fixed now tracks the volume of a \"master\"\nstream type. This \"master\" stream type is STREAM_RING for phones and STREAM_MUSIC for\ntablets which corresponds to the stream whose volume is modified by default by the volume\nkeys.\n- The STREAM_SYSTEM volume ranges from -24dB to -6dB (-24dB to -12dB over headphones) when the\n\"master\" stream volume ranges from its min to its max.\n- DTMF tones are played over STREAM_DTMF that tracks the \"master\" stream volume in the same\nmanner with the following exception: when in call, DTMF stream tracks STREAM_VOICE_CALL volume.\n- Camera shutter sound is played over STREAM_SYSTEM_ENFORCED stream that tracks the \"master\"\nstream volume except in countries where regulation enforces this sound. In this case\nits volume is fixed and cannot be muted.\n- Low battery sound is played over STREAM_SYSTEM and therefore has a tunable volume and is\nheard while in call.\n\nIssue 6344620.\nIssue 6069229.\nIssue 6213100.\n\nChange-Id: I53a237878ead596e706c5dbbb1420e62cde32bd7\n"
    },
    {
      "commit": "eb4cc492c93ab9635dde78b958a834120412e72a",
      "tree": "986003ee62bb0727a3c782e90e6f557d4a50e849",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 26 18:17:29 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 26 18:17:29 2012 -0700"
      },
      "message": "Protect system services with DUMP permission.\n\nChange-Id: I5e53859f8b8e5473e54eca43ebd7de841f1a05ff\n"
    },
    {
      "commit": "f18222da3cdfd3b052361369b70a4d22396039c1",
      "tree": "169f8a2bc268e723018d911e6218cae936c4dfe2",
      "parents": [
        "ccdf0afbd7dbd4fe2111e94d9e4f14a939ed8882",
        "e35b3e052dab756113304cb394980e9f271b1613"
      ],
      "author": {
        "name": "Yu Shan Emily Lau",
        "email": "yslau@google.com",
        "time": "Thu Apr 26 17:29:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 17:29:15 2012 -0700"
      },
      "message": "Merge \"Fix the test cases which fail to launch the camera in the device which only has one camera.\" into jb-dev"
    },
    {
      "commit": "e35b3e052dab756113304cb394980e9f271b1613",
      "tree": "754ad6830cbbb506d00a19ae9c0f4ca0b626d4a6",
      "parents": [
        "9b593a67f1e93896af4ef1050e485fb84bd5dd4f"
      ],
      "author": {
        "name": "Yu Shan Emily Lau",
        "email": "yslau@google.com",
        "time": "Thu Apr 26 17:10:29 2012 -0700"
      },
      "committer": {
        "name": "Yu Shan Emily Lau",
        "email": "yslau@google.com",
        "time": "Thu Apr 26 17:10:29 2012 -0700"
      },
      "message": "Fix the test cases which fail to launch the camera\nin the device which only has one camera.\n\nChange-Id: Ia34087715e49f1aa3e86f3f85cb4e77168323321\n"
    },
    {
      "commit": "2f708ce9cc7fc2e4d498bcc20a095bdf8e9c803d",
      "tree": "df3e27847c6b7e7f45615c4e37456567ec729106",
      "parents": [
        "1b8f499a14a4340d3422d95c7f6fdc8c0c72b3a4"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Apr 26 14:29:21 2012 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Apr 26 15:46:17 2012 -0700"
      },
      "message": "Resolving the black screen / crash in effects\n\nb:/6278826\nThe SurfaceTextureTarget Filter was not unregistering the surface\non closing leading to crashes and blank screens.\n\nChange-Id: Ia9f6fc69b92d5a5e2e1e3803969152d11528aa3d\n"
    },
    {
      "commit": "2996cf03a2fd419bc91a45d7db733e2e81bf84f4",
      "tree": "8e363ce8bb81eebb131f270e7d43505bc4c237ee",
      "parents": [
        "129a6ccbb8037ab36259329f702d12a225f75510",
        "6644a826a12babfb88aadc65c29e8bf3d4d8c1d3"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 26 10:58:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 10:58:57 2012 -0700"
      },
      "message": "Merge \"Unhide new AAC-ELD audio record type.\" into jb-dev"
    },
    {
      "commit": "129a6ccbb8037ab36259329f702d12a225f75510",
      "tree": "7d19607203d3fd758d2113cacaddf349931d1ec3",
      "parents": [
        "77974166dbb962fee42ae3f5066523349d5700ed",
        "f2855b3df5994e165b29025c4c49d8e7d634c034"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 26 10:56:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 10:56:58 2012 -0700"
      },
      "message": "Merge \"The MediaExtractor can now unselect tracks and has more control over seeking.\" into jb-dev"
    },
    {
      "commit": "f2855b3df5994e165b29025c4c49d8e7d634c034",
      "tree": "f9350506e0775e657e79319c744072087831d7a8",
      "parents": [
        "9b593a67f1e93896af4ef1050e485fb84bd5dd4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 15:57:43 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 26 10:43:31 2012 -0700"
      },
      "message": "The MediaExtractor can now unselect tracks and has more control over seeking.\n\nChange-Id: I12c28bf31fe9fb4057352999fa38213ae289a417\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "8037cad6c19cacc55f0e25a2d41e15599666973c",
      "tree": "cf5774bf31cd3ed378323ada4440af458990bfd5",
      "parents": [
        "f307268cd5b4fdc47706e9bc9d9ebdb8a84851a9",
        "45c90cefd13a03b852bb4b8da4be218876cbbb32"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:22:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 10:22:13 2012 -0700"
      },
      "message": "Merge \"Fix AudioManager.forceVolumeControlStream()\" into jb-dev"
    },
    {
      "commit": "6644a826a12babfb88aadc65c29e8bf3d4d8c1d3",
      "tree": "27b33ca78eaa9964447df0cf6f917c7e92b98ed1",
      "parents": [
        "fc8e5eaa0368e724765f0fed61b8f25fdbde917a"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 23:15:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 23:15:22 2012 -0700"
      },
      "message": "Unhide new AAC-ELD audio record type.\n\nChange-Id: Ibb9d3cd797c0b14c495776dc172ff7dadf6df7d6\n"
    },
    {
      "commit": "45c90cefd13a03b852bb4b8da4be218876cbbb32",
      "tree": "a79fb1e71e1f9ebf02571c8bd1d26ec1b930d32c",
      "parents": [
        "1b8f499a14a4340d3422d95c7f6fdc8c0c72b3a4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 24 18:44:22 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 18:28:09 2012 -0700"
      },
      "message": "Fix AudioManager.forceVolumeControlStream()\n\nAudioManager.forceVolumeControlStream() is used by VolumePanel to temporarily force the\nstream type which volume is controlled by volume keys.\n\nCurrent implementation is not working if the VolumePanel is not executed by the same process\nas the one receiving the volume key events.\n\nIssue 6302421.\n\nChange-Id: I2700587a027ffb962429b42083312cd92fe79215\n"
    },
    {
      "commit": "0b718392c1f50f45760b198a5d9e8df2cf2b5080",
      "tree": "4e9594257a438033787739c41209d3b674457817",
      "parents": [
        "d7a2a428db781b3fae5df395dccac1bcab867bd5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 24 16:54:59 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 25 16:30:42 2012 -0700"
      },
      "message": "Further speed up playlist processing\n\nPreviously when processing playlists, the entire audio table would be read for\nevery line in a playlist file. While there would be only one query, a lot of\ndata was being moved from sqlite to java over and over again, and if the data\ndidn\u0027t all fit in a CursorWindow, additional queries would be done under the\nhood.\nWith this change, playlists are first cached in memory. Then the audio table\nis queried, and for every row in the audio table, the best match from the\nplaylist cache is found. This way the audio table is only traversed once,\nso each row is only fetched once. Once the entire audio table has been read,\nthe in-memory playlist cache contains the best matching entry for each line,\nand the playlists are written out to the database. Currently, the audio table\nis traversed once for each playlist. This could be further optimized in the\nfuture by processing all playlists at the same time.\n\nb/6346786\n\nChange-Id: Iead3f9ae838d600d085e8e6d3c4874d42314468e\n"
    },
    {
      "commit": "d7a2a428db781b3fae5df395dccac1bcab867bd5",
      "tree": "f01aa3af8d53bf7dc6591dffe7cbb53645e2bec3",
      "parents": [
        "34688bbf83f5e375a54f740b3476a97be86b6c99",
        "6dcf382b1b1dde5e6303a51a27f8d3b928072415"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 25 15:25:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 25 15:25:46 2012 -0700"
      },
      "message": "Merge \"Move RINGTONE_PICKER to handle external storage.\" into jb-dev"
    },
    {
      "commit": "6dcf382b1b1dde5e6303a51a27f8d3b928072415",
      "tree": "bb3118d20a9e0a3e98d776afa8ff054aa9817306",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 17 16:03:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 25 14:56:13 2012 -0700"
      },
      "message": "Move RINGTONE_PICKER to handle external storage.\n\nTo give RINGTONE_PICKER external storage access, move it from system\nto MediaProvider.  Fix OOBE when getRingtoneUri() kicked requery().\n\nBug: 6346701\nChange-Id: I837002eef0580b8cdd8920a27b068c745995a8a3\n"
    },
    {
      "commit": "1b8f499a14a4340d3422d95c7f6fdc8c0c72b3a4",
      "tree": "57a447f816b1659b81f5383e3742ea504ecb8327",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 25 11:09:01 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 25 11:12:37 2012 -0700"
      },
      "message": "Allow multichannel configurations in android.media.AudioTrack\n\nCompare the channel configuration against a mask of the public\n channel masks in AudioFormat for up to 5.1 with back channels,\n and allow combinations within this mask.\n\nChange-Id: I84b72dfd88d4490f0c67bf10d13151a9eb06f6a8\n"
    },
    {
      "commit": "d6bdbb8da14f0162281ce18ce7573a6c5a15b04e",
      "tree": "6a316015aa65c4f92e86416bcbabd154fdaa779d",
      "parents": [
        "3521a71479488ceb75f7d3e27634d51e6302540c",
        "b4781b9b489bc8b0049e1e92b7ab00e32b02b12c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Apr 24 13:50:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 24 13:50:21 2012 -0700"
      },
      "message": "am b4781b9b: am ea8ceca8: am 90577af7: Merge \"use utf8_length() instead of local function, isValidUtf8()\"\n\n* commit \u0027b4781b9b489bc8b0049e1e92b7ab00e32b02b12c\u0027:\n  use utf8_length() instead of local function, isValidUtf8()\n"
    },
    {
      "commit": "08f70fa5b82faa00d4d536b5a220d7ce8dd8f932",
      "tree": "0e2a72c5ba9c6202c42543baf5f688a3f2b2d7c2",
      "parents": [
        "1579a67ee9a53740a09e606e071fd571ee627449"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 23 13:49:37 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 23 13:53:20 2012 -0700"
      },
      "message": "Speed up playlist processing\n\nWhen matching entries in playlists, only consider audio files.\n\nb/6346786\n\nChange-Id: Ia744d002c2821a81840303b9409593da48a08b73\n"
    },
    {
      "commit": "74a78b0f6e8c07cfc7da8f043987f6de0648bc05",
      "tree": "666ffc93f47d0f95cf0ed11bfa07e395236db82f",
      "parents": [
        "e17fc7d6693ed36058a880c69332f642ad48cf18"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 16:24:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 11:57:26 2012 -0700"
      },
      "message": "Add the ability to query the amount of cached data to MediaExtractor.\n\nChange-Id: I47ae60bc6fb8d88979c1f0d650b6ac528e811371\nrelated-to-bug: 6364341\n"
    },
    {
      "commit": "f3dbb59f1d199b6db539c84d371a2e55c7a6bd05",
      "tree": "454b4067757f513e43e143b0a0d7d970d9142440",
      "parents": [
        "0d1ba1505695815907c34339c6f80c95d6fc6b40",
        "831f0a90cad923ec6b00c5c598ac4356e5849431"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 19 14:17:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 14:17:43 2012 -0700"
      },
      "message": "Merge \"Update javadoc for timed text / multiple audio track APIs\""
    },
    {
      "commit": "0d1ba1505695815907c34339c6f80c95d6fc6b40",
      "tree": "af679af21fd5ee24128a54c0e1ba99d11bfe9cbb",
      "parents": [
        "dca2e81b7d2d20c96488888d5b706c9c9e22f1c8",
        "bfc56f497de0d18125366a02a93e61cdc0891be4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 13:51:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 13:51:10 2012 -0700"
      },
      "message": "Merge \"DRM errors signaled by the CryptoPlugin are now visible to MediaCodec clients\""
    },
    {
      "commit": "831f0a90cad923ec6b00c5c598ac4356e5849431",
      "tree": "26baed2a35ffe706281f27daa556eded1b89b937",
      "parents": [
        "3dfc82b5677a77e805511c263197c95c52a1665e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 18 18:12:12 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 19 13:46:23 2012 -0700"
      },
      "message": "Update javadoc for timed text / multiple audio track APIs\n\no Throw runtime exception when selectTrack, unselectTrack, getTrackInfo fails\no remove redundant code for selectTrack and unselectTrack methods\n\no related-to-bug: 6110705,5542712\n\nChange-Id: I59f0ed638e93d0365eccab1e33c9d50354a9c1ba\n"
    },
    {
      "commit": "bfc56f497de0d18125366a02a93e61cdc0891be4",
      "tree": "6ac44fbe8d011cfd62c1743354ace0541e3d1d26",
      "parents": [
        "5cef554cc857b2b542d2c62f8cd0c36d62e1bb9b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:47:07 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 13:42:14 2012 -0700"
      },
      "message": "DRM errors signaled by the CryptoPlugin are now visible to MediaCodec clients\n\nthrough a custom exception \"MediaCodec.CryptoException\".\n\nChange-Id: I30215e9e13bab68abad23e27dcead7c1accd07f1\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "c9496495baa031d1e6af9fd438c7d007a5d59b4e",
      "tree": "0884ae44c9466d17c3675b93f640960ec931edbb",
      "parents": [
        "f40a02f85f112e4b78fcea6f0d0390bfad15c2e2",
        "951794616f0d275faa077b25cb5979e401b0324d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 10:52:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:52:25 2012 -0700"
      },
      "message": "Merge \"Unhide Visualizer scaling mode definitions and methods\""
    },
    {
      "commit": "951794616f0d275faa077b25cb5979e401b0324d",
      "tree": "375e3260017e5f2387a845de91651b28fac700f0",
      "parents": [
        "5cef554cc857b2b542d2c62f8cd0c36d62e1bb9b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:56:59 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 10:34:50 2012 -0700"
      },
      "message": "Unhide Visualizer scaling mode definitions and methods\n\nUnhide Visualizer set/get methods, and associated constant\n definitions.\n\nChange-Id: Iaafe5f7a2f1273f72c3f7f842b416b93614dfa65\n"
    },
    {
      "commit": "6db653355bbf79f4bfe666fb96262c0df2ec34aa",
      "tree": "c2adbb3beeb52b139ad5a273e4fc0f9c3c4b3231",
      "parents": [
        "7b5f22e11c37ef481ca5bc2b7d07c3c33c6ad3e8",
        "ff2577da370f15b8288f547575c28393477d57b1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 19 10:16:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:16:38 2012 -0700"
      },
      "message": "Merge \"unhide API for synchronous audio capture.\""
    },
    {
      "commit": "125c32ebe701bb4c366f4efe35afa72c67990206",
      "tree": "b625a6cdae8f14738d127c06f781103eda3cd7f4",
      "parents": [
        "f37d87b35b9bc860487104b1870f74caa3ae2e71",
        "997592b3ce5492e500aebb87066bbeab6c4e4599"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:38:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:38:55 2012 -0700"
      },
      "message": "Merge \"Add functional tests for Visualizer volume scaling mode\""
    },
    {
      "commit": "997592b3ce5492e500aebb87066bbeab6c4e4599",
      "tree": "ca26a18db9fe00b80efc4eb472559f69f48f6605",
      "parents": [
        "e1123e7f36723a8b888501c9a22a589297849ca2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 17 11:27:28 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:13:22 2012 -0700"
      },
      "message": "Add functional tests for Visualizer volume scaling mode\n\nAdd test to set/get the volume scaling mode.\n\nAdd test to verify that volume decreases diminish the commputed\n  energy.\n\nChange-Id: I0a5d45d064a46a18e5c4b9d7a304c9572f100cdf\n"
    },
    {
      "commit": "5cef554cc857b2b542d2c62f8cd0c36d62e1bb9b",
      "tree": "4faa94cede52e04a34ab1d5da4217177f41d4317",
      "parents": [
        "9afbfb5e1339a63cff5dbe72eae02d703c9bd62f",
        "e1123e7f36723a8b888501c9a22a589297849ca2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:09:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:09:06 2012 -0700"
      },
      "message": "Merge \"Add support for scaling mode parameter in Visualizer effect\""
    },
    {
      "commit": "ff2577da370f15b8288f547575c28393477d57b1",
      "tree": "1dbbf258903a95ac2813f2305692d6dca00c9990",
      "parents": [
        "a46f7680f159571a3ca9fa5928cae2fa6309ee3a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 15:25:06 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 19 08:59:20 2012 -0700"
      },
      "message": "unhide API for synchronous audio capture.\n\nunhide MediaSyncEvent class and AudioRecord.startRecording() method with synchronization\nevent allowing to start audio capture upon occurence of a specific event.\nSo far the only event defined is playback presentation complete but more events and synchronized\nplayback/capture methods could be defined in the future.\n\nChange-Id: If05fc6cd125dd9afad451727f792a3fd9e916bef\n"
    },
    {
      "commit": "ea8ceca869e5293ba6caeadaaa13c8369df09109",
      "tree": "d5d3c9dc03b999d3621b838a7bc4a79df567613f",
      "parents": [
        "ec96305ea05355d57fd803edd57d6af1c4a9f83e",
        "90577af796cd526f842d6f07c2d95ed4fcc2f6d8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Wed Apr 18 20:39:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 18 20:39:37 2012 -0700"
      },
      "message": "am 90577af7: Merge \"use utf8_length() instead of local function, isValidUtf8()\"\n\n* commit \u002790577af796cd526f842d6f07c2d95ed4fcc2f6d8\u0027:\n  use utf8_length() instead of local function, isValidUtf8()\n"
    },
    {
      "commit": "8dfc10571a83389593fc11b92fbf9fc1f22c9f21",
      "tree": "c3740712e573060419fe181429c8301e6e0ba86f",
      "parents": [
        "83cb5807b0eaa36b417ce5c978e4e460b1fcc9e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 10 16:03:14 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 20:26:43 2012 -0700"
      },
      "message": "unhide audio pre processing API.\n\nUnhide APIs for Noise Suppressor(NS), Acoustic Echo Canceler (AEC) and\nAutomatic Gain Control (AGC) audio pre processings.\n\nAlso unhide getAudioSessionId() method on AudioRecord.\n\nChange-Id: I788f7a0724b152cc98c8167d9434e64c12bada95\n"
    },
    {
      "commit": "ab57d03bdb3010d4957fb88c8acb30575ca02ec9",
      "tree": "cf7bd81e5548da2a5c21c247a0819e6246d56c0a",
      "parents": [
        "54ffee751c44c212ee02ef848f7c3e1cfcce66b7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 15:59:43 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 15:59:43 2012 -0700"
      },
      "message": "Fix a typo and choose a reasonable default for crypto-mode (0 would be unencrypted)\n\nChange-Id: Ia46a7d7dd405bd569f319a64e43123d802c867d3\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "91befdc0c4710234840cdfd853e7d30e8f9de62c",
      "tree": "e37fa5820ab6348549d7a59a342ad3ee70e7e55c",
      "parents": [
        "26fbf27ad1e9f9c26a82097fe306f07ec36e8410"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:19:51 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:19:51 2012 -0700"
      },
      "message": "Information required to decrypt buffers is now packaged into MediaCodec.CryptoInfo\n\nNew API on MediaExtractor to retrieve a CryptoInfo structure where applicable.\n\nChange-Id: I18edfc9ac56a4544c8f17cba24401b96dacbff7d\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "f7d3bdfc22058439c1ec84165c91460a0f0850a2",
      "tree": "b808c857bb9a0257b0e6ec666ca528651bfa88d9",
      "parents": [
        "420489ca1f92b290f4737fb675bfd3db9cdbed29",
        "c4c0284e45e1b69a03309cd55f937bcc638c0bec"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 17 18:36:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 18:36:48 2012 -0700"
      },
      "message": "Merge \"AddExternalSource(String path) needs to turn the path to fd if it is a file\""
    },
    {
      "commit": "c4c0284e45e1b69a03309cd55f937bcc638c0bec",
      "tree": "aab2165dd862f2c37f6277e129487afcac4cc413",
      "parents": [
        "fbf7e1f343b4d61c48187adb123a4308e809a92d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 12 19:49:02 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 17 18:31:20 2012 -0700"
      },
      "message": "AddExternalSource(String path) needs to turn the path to fd if it is a file\n\no related-to-bug: 5542712\n\nChange-Id: Iea32012996ca9de4c86f144de916df64fcab3c52\n"
    },
    {
      "commit": "2b9d6bd092ef1d0cc142bf16f671648d1c84c307",
      "tree": "a93e9b34b8273c69e9a484dd42e614f1d226cd40",
      "parents": [
        "3844067c3c6cca954250a734d8bd8dad673bb846"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 15:02:22 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 15:02:22 2012 -0700"
      },
      "message": "Make seekTo not throw exceptions.\n\nChange-Id: I9d0469962364b86fbab920e9ac65f468fc630737\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "e1123e7f36723a8b888501c9a22a589297849ca2",
      "tree": "57686339464eebba6a7e90eea5738e5307680dcb",
      "parents": [
        "313a93ddf9dce7bdda21f29c10a464dd303871da"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Apr 15 17:22:01 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 17 14:44:23 2012 -0700"
      },
      "message": "Add support for scaling mode parameter in Visualizer effect\n\nAdd set/get methods to set how the Visualizer scales the captured\n data.\n\nChange-Id: Ia1da00fd5474dd3484b59caf7d1d0a812d0347de\n"
    },
    {
      "commit": "2952c5d03c26aec8f2aa2d69f20b47a7cc8f39e1",
      "tree": "a8eec3c0e77569d5aed2ef726e5cd410038fc4a2",
      "parents": [
        "901cb6160d694e18845be719cc3975444755ff59"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:23:06 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:24:11 2012 -0700"
      },
      "message": "MediaCrypto\u0027s constructor can throw RuntimeException.\n\nChange-Id: I5718e9abab0d1465882580e826747d6a78bdefb5\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "07ea426e3ae8915ca6bf67135f523f42cd920af0",
      "tree": "57f34be48379ccbebb5710010f8a4ee3cf29b1fc",
      "parents": [
        "7c886acf2e60d7f4a02197401d1d046ef3b870b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 12:21:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 16 10:14:05 2012 -0700"
      },
      "message": "Unhide new media related java APIs.\n\nChange-Id: If0b8201eaca74f51f3499b6ecdfb73088586ee24\n"
    }
  ],
  "next": "1a8b6c29aaa5a1591097daca0876808cc029cbda"
}
