)]}'
{
  "log": [
    {
      "commit": "5ca8f32280377dd923e72c3c6bd3994217461b8b",
      "tree": "b5146ce7885539d8b002d3270346f574e3965711",
      "parents": [
        "7aeb8c8d4437eb8f45be3ad3828764795e14ad4c",
        "63ef5a38f82d22c1f97922fe490a1fd336566d5c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9\nam: 63ef5a38f8\n\nChange-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4\n"
    },
    {
      "commit": "63ef5a38f82d22c1f97922fe490a1fd336566d5c",
      "tree": "e84028568dbcede5ffdaf58be20c6cc080028edd",
      "parents": [
        "b8750e114b6fd99768c45233d4b2ffb2b198f5d1",
        "df5d9246f9607b1c2f8b134c46a05af06e206da3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:50:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:50:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\nam: df5d9246f9\n\nChange-Id: I20767244fef48ad42334c5131e2d402f75bb7327\n"
    },
    {
      "commit": "df5d9246f9607b1c2f8b134c46a05af06e206da3",
      "tree": "7cd9fcb42c86c8cfe950db239e21e8b5ece98369",
      "parents": [
        "7ad2854adc0abe8dd7909a6ed401107ad09bc3d2",
        "fd923e7fe2779bcd69d79471b8c30c8b98918f62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 15:40:39 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 16:10:32 2016 -0700"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\n\nChange-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192\n"
    },
    {
      "commit": "36d0ca16024820df9a12903d2ac443fabcc180bc",
      "tree": "51e8f285ae66ad7cb922caeb7ba8d5f1d20367e3",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 17:56:35 2016 +0000"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\nMerged-In: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "adee56abc3749b18f90e7788990a0b5ae1bf430e",
      "tree": "98a630421dbcf4c8f27b810666ba03f2437f4310",
      "parents": [
        "e7449bf60c861f1dea7510f706004dfdb5efb2a7"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Aug 05 15:40:34 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Aug 05 15:40:34 2016 -0700"
      },
      "message": "MediaPlayerService: clear output in CallbackData when recycling AudioTrack.\n\nBug: 30365636\nChange-Id: I3832a309f78a6fa89d4afea7bdd7139f0d9013f4\n"
    },
    {
      "commit": "e0bbac912f9ea561ed96ad8b0a354cbab8f345a1",
      "tree": "286de5eb65dd7cd335648da9ae5d65f233c6e4d3",
      "parents": [
        "9f6392250bf6d02a514bd83b743906dda748dee9"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jul 18 16:04:53 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jul 18 18:18:09 2016 -0700"
      },
      "message": "AudioSink: set configurations correctly for recycled track.\n\nBug: 29838892\nChange-Id: Ib64db16aeeaa4436d082a4098a21a75376119ef0\n"
    },
    {
      "commit": "37d7af3c3a95022465b86b6cdec9db9fb5a40fd1",
      "tree": "b7d58e6a6c975599436e044a420ccd041b53ddf8",
      "parents": [
        "786ddba2862716164920b455c4d5a1b3a7454193"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 13:22:21 2016 +0000"
      },
      "message": "Add bound checks to utf16_to_utf8\n\nBug: 29250543\nChange-Id: I3518416e89ed901021970958fb6005fd69129f7c\n(cherry picked from commit 1d3f4278b2666d1a145af2f54782c993aa07d1d9)\n"
    },
    {
      "commit": "1d3f4278b2666d1a145af2f54782c993aa07d1d9",
      "tree": "a58f653e4a76988ee042eba780c6b9667ba77028",
      "parents": [
        "e8a984e43504890e0f676256a0445b9917a2af91"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:55:43 2016 +0100"
      },
      "message": "Add bound checks to utf16_to_utf8\n\nBug: 29250543\nChange-Id: I3518416e89ed901021970958fb6005fd69129f7c\n"
    },
    {
      "commit": "07b745e166ee62030960ccea37e117caadf71c32",
      "tree": "a370227e0d195f58a4e7797d8a70933730970907",
      "parents": [
        "d4c4d2248bdfd06dc7b23dd2d81541d3941f8bf9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 23 16:21:07 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 23 16:55:08 2016 -0700"
      },
      "message": "Add memory heap checks for mediaserver and audioserver\n\nMemory heap check updated and restored to mediaserver,\nadded as new option to audioserver.\n\nRequires properties to be set (example for audioserver):\n\n$ adb shell setprop libc.debug.malloc.program audioserver\n$ adb shell setprop libc.debug.malloc.options backtrace\u003d8\n$ adb shell pkill audioserver\n\n...\n\nand to dump:\n\n$ adb shell dumpsys media.audio_flinger -m\n\nBug: 28909124\nBug: 27500825\nChange-Id: Ifa8c2c02b022daf1a799ee4a1d75282a3c921763\n"
    },
    {
      "commit": "0bfa3eee31c9f99ec65158f810e65e12bae5ebf1",
      "tree": "cf5719e6a3cec8c447a053bd6a456556b86efefc",
      "parents": [
        "e35bcaa2c908c5ef404928412ade7711e6173d35"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 13 15:48:36 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 16 10:54:26 2016 -0700"
      },
      "message": "MediaPlayer/MediaRecorder: Do not notify client of audioserver death\n\nHandled internally within NuPlayer and MediaRecorder.\n\nBug: 28768023\nChange-Id: I26d94332a4668bf7a8ad54a7b25e6f0a3a6fe48d\n"
    },
    {
      "commit": "e93cc03da360a1a0d2ad937c745ce8c8e8be81c2",
      "tree": "9deae98570f41fdec272a863a2e84c7828af1a64",
      "parents": [
        "038ccfd6ff5a32d6f559e5b479d6f8e55d0b5133"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 05 10:15:10 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 11 11:38:01 2016 -0700"
      },
      "message": "audioflinger: various offload playback fixes\n\nRevert underrun sleep time optimization added for\noffload by commit 51716185 which can cause music to pause for a few\nseconds in some corner cases.\n\nAllow underruns in STOPPING_1 state to avoid dropping last buffer\nreceived by the AudioTrack callback after stop() is called by the\nclient.\n\nAllow interruption of thread loop sleep if a command is pending to\nspeed up track start sequence.\n\nDo not wait for a full AudioTrack buffer before writing to audio HAL\nwhen resuming playback or transitioning to next track.\n\nAlso moved log level for underruns in AudioSink from I to D to reduce\nspam on user builds.\n\nBug: 28545177\nBug: 27682362\nBug: 28347796\n\nChange-Id: I05b651b7878a2d2eedcac43cd669e32add171d40\n"
    },
    {
      "commit": "375a9c03550cc1bdca9e2cca862d6e549530bac6",
      "tree": "d46c5a9d62bdd1e855d97388d3c0821f45dfd73a",
      "parents": [
        "f15d88daa721d53921bfb7798dd12f7c74b44ac1",
        "6dc3a3e2292454f94c015da45f1ebfc6a493e736"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 05 16:55:50 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 05 16:55:50 2016 +0000"
      },
      "message": "Merge \"Report other servers\u0027 deaths in OnErrorListener too\" into nyc-dev"
    },
    {
      "commit": "6dc3a3e2292454f94c015da45f1ebfc6a493e736",
      "tree": "7bc7d425bc94627546428203f08c94691809162b",
      "parents": [
        "35443e32bfe0960dc6a6564426054b104977b143"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 29 15:42:06 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 29 16:25:18 2016 -0700"
      },
      "message": "Report other servers\u0027 deaths in OnErrorListener too\n\notherwise applications will be unaware of those processes dying.\n\nBug: 22775369\nChange-Id: I48577f787a97ee7627ae8e7f32e2f21ace243ed0\n"
    },
    {
      "commit": "3003807fcfa96c9cbfea18d643f47108aa116cd5",
      "tree": "a3f7b454cdf3973b6fd716ee44f4295e6c100bb5",
      "parents": [
        "c3c06c4fe329d07bd7d442206bc9eb63e92bf5bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 25 13:41:35 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 26 20:46:17 2016 -0700"
      },
      "message": "Remove MediaDrm stack from mediaserver\n\nPart of media security hardening\n\nMediaDrm was temporarily allowed to\nrun in either mediaserver or mediadrmserver\nwhile all nexus devices were implementing\nsupport for the native_handle representation\nof secure buffers.  Now that all nexus\ndevices support native_handle, the MediaDrm\nstack can be removed from mediaserver.\n\nb/22990512\n\nChange-Id: Ie5d83bfeb4c4a824e1d0edb4c9452c782d6fd386\n"
    },
    {
      "commit": "535412965145a1df2ec1770331e8477e52cd37b5",
      "tree": "6deb860bf3dab51c1f33ff2d64fb3217972ca1ea",
      "parents": [
        "0c4a97e6e1470b2d8b8810792af8d66689020c51"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 16:48:51 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 16:51:38 2016 -0700"
      },
      "message": "Add memory leak detection to mediaserver\n\nBug: 28169802\nChange-Id: I05e12ef3b12c5f0322ddf5ecc10d95205b0e44d6\n"
    },
    {
      "commit": "0c4a97e6e1470b2d8b8810792af8d66689020c51",
      "tree": "49ab98d7d2462157431b2fc830f417098f1b146b",
      "parents": [
        "24f66c69676dbb004565407215ce7185e00c5de2",
        "ff874dc957f9ea70d87f4d627bf903e1fc86d58b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "message": "Merge \"NuPlayer: Reserve buffer for 8x max speed\" into nyc-dev"
    },
    {
      "commit": "f2c87b3f88d987d2af6322e9763eb8224a2bae48",
      "tree": "e5385d3a05f9a317b7fa1ea5613a2a6f584ebdfd",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 07 19:49:29 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:03:44 2016 -0700"
      },
      "message": "NuPlayer: Notify if drain message time is unexpectedly long\n\nBug: 27940058\nChange-Id: Id8897c30e21b6b9de545a710e7766ffceb491455\n"
    },
    {
      "commit": "ff874dc957f9ea70d87f4d627bf903e1fc86d58b",
      "tree": "ea53dbbdf6db6e8fd36eebc1b9c657ddafbfb1e2",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 11 16:49:09 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:02:33 2016 -0700"
      },
      "message": "NuPlayer: Reserve buffer for 8x max speed\n\nAffects Photos with Bluetooth and 240x recording.\n\nBug: 26986060\nChange-Id: I228223221f9811e05c274d64cd42ac104db04c36\n"
    },
    {
      "commit": "8a049c2f127f95715375d5ede39b2363b3a68329",
      "tree": "e4db3ce5e7a6b79f9eb0aed5d77fb7bf8c09e9a2",
      "parents": [
        "da65b5a3502ae06a65f09d9983c89b7fd9369316",
        "833b47505c513cb5c8f22aa922a7ea20d153b319"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 09 04:57:21 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 09 04:57:21 2016 +0000"
      },
      "message": "Merge \"MediaPlayerService: Remove 64 bit compilation warnings\" into nyc-dev"
    },
    {
      "commit": "2f6e73db45995636e5405fb2e1063a55550ba10f",
      "tree": "df839761306fc04ee8816ca53d300c92c3ca133b",
      "parents": [
        "4d363d4625588bf2007d31c244c83b0965d834b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 08 12:12:58 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 08 12:29:37 2016 -0700"
      },
      "message": "NuPlayer: fetch position from track\n\nBug: 27940058\nChange-Id: Ibe730dffca4b3e2649a07f1f7583b471e13bdbed\n"
    },
    {
      "commit": "833b47505c513cb5c8f22aa922a7ea20d153b319",
      "tree": "c518c425318ecf482d2cc2f18ac3055869202842",
      "parents": [
        "4d363d4625588bf2007d31c244c83b0965d834b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 04 17:15:48 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 05 09:36:15 2016 -0700"
      },
      "message": "MediaPlayerService: Remove 64 bit compilation warnings\n\nBug: 16890215\nChange-Id: I83d27d8c0c51bd868737bc2a1d6e046702d2a91c\n"
    },
    {
      "commit": "e13f8a603867280de9b02ce4839202a182556416",
      "tree": "adfd4bef77236d67dd7c1e862740448bc82ba7d4",
      "parents": [
        "ea2b9c07b34079f0dbd8610a511e006e69a15adc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 30 14:20:42 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 01 16:56:02 2016 -0700"
      },
      "message": "NuPlayer: Play out remaining audio data when recycling isn\u0027t possible\n\nDon\u0027t flush it immediately.\n\nBug: 26530291\nChange-Id: I0427633402fa251ec62e2b70e47a0a7b451d3ea2\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "55363176be0ad1fe75d97276547929b4ca971f56",
      "tree": "3fe580b201bb18d7e81792a8a98051d372c8078a",
      "parents": [
        "c25621f0e52dbf78159b5aa28b8c19ed6a7a053b",
        "813ac23bee5b3519c2b7f410a2b24b3a94075b22"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Feb 17 09:50:43 2016 -0800"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Feb 17 09:50:43 2016 -0800"
      },
      "message": "Merge commit \u0027813ac23bee5b3519c2b7f410a2b24b3a94075b22\u0027 into HEAD\n"
    },
    {
      "commit": "1900e77bac4276f247f80fd06d19316cac598f57",
      "tree": "b97774b7b48e386a774ed817d1e3dc6defeacc42",
      "parents": [
        "687bb88d330048075e69a7fc514d92901eeb0eee"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 02 16:12:16 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 14:45:15 2016 -0800"
      },
      "message": "Run codecs in a separate process\n\nEncoders and secure decoders still run in the mediaserver, while\nall other codecs run in a separate codec process.\n\nBug: 22775369\n\nChange-Id: Ifbcab8a8f2fe77d2567830ac88f0d982e77f7b00\n"
    },
    {
      "commit": "01854c0129245d034bd99d64817dce06df20c5a6",
      "tree": "4cb8297a24a1a31870bb0845dfd15bb4e8c1e04b",
      "parents": [
        "a320c7b253afd276745b7e4e557ce7811b2035e7"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jan 12 16:22:42 2016 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Feb 09 11:25:04 2016 -0800"
      },
      "message": "stagefright: Remove deprecated AwesomePlayer\n\nBug: 17108024\nChange-Id: Ia721bdfa87b07612ad8e76cbdcda6de2b8ce2a74\n"
    },
    {
      "commit": "e4d40ad91f3516bde106658673b2cb076b5dfcb7",
      "tree": "eef674159322f2d46d3aa3201db1cf0211c28b26",
      "parents": [
        "43e08e0146b825cde52480b64764765d9a61f97c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jan 12 16:22:42 2016 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Feb 08 19:46:06 2016 -0800"
      },
      "message": "stagefright: Remove deprecated AwesomePlayer\n\nBug: 17108024\nChange-Id: Ia721bdfa87b07612ad8e76cbdcda6de2b8ce2a74\n"
    },
    {
      "commit": "260e56c9a17737bf280d776797d6dee411c9b4da",
      "tree": "5e2de882c337b17d1d06dd5dd323be134d7bb882",
      "parents": [
        "4f12d94fc26df1d0c7a566792711b8863fd39fe9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 28 21:41:25 2016 +0000"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 28 21:41:25 2016 +0000"
      },
      "message": "Revert \"Run codecs in a separate process\"\n\nThis reverts commit 4f12d94fc26df1d0c7a566792711b8863fd39fe9.\n\nChange-Id: Ic850a950119a45efd3042f40147253b37c328853\n"
    },
    {
      "commit": "4f12d94fc26df1d0c7a566792711b8863fd39fe9",
      "tree": "35c3df0045f97769878455388f4c99e2ffa65d68",
      "parents": [
        "97385561584e96c1c1149cf883e0ad1c75cfbdd0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Dec 16 11:11:59 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 22 19:53:00 2016 -0800"
      },
      "message": "Run codecs in a separate process\n\nFor now this only runs decoders and Google encoders in the codec process.\n\nBug: 22775369\nChange-Id: Iadd8b6bc2873ddcfaee3e68866642ba74c6949aa\n"
    },
    {
      "commit": "2afac0c7c42560ff5b8f133c6074b7e023279d6d",
      "tree": "f541f9d2de183b5b24c857bdf5995845b22efb2b",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 12:13:07 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 15:20:31 2016 -0800"
      },
      "message": "libmedia: check NULL pointer at binder receiver side.\n\nChange-Id: I464da96f3d6081dd8c3cc2fd977e2b96f5d477bb\n"
    },
    {
      "commit": "3f273d10817ddb2f792ae043de692efcdf1988ae",
      "tree": "85d7e25da5a8a1d7c86487821004246ccab36e03",
      "parents": [
        "c5fcd06e9c332a60ba5fcba2118270dbdf22ae42"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Nov 24 09:06:49 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Dec 02 18:18:03 2015 +0000"
      },
      "message": "Uses AudioFlinger to signal battery stats for audio.\n\nBug: 18177221\nChange-Id: I704010c037cb99bb74b98798ee8e494fa8bdc875\n"
    },
    {
      "commit": "23cba7d6b11ba47bd0408f84fb935c4d382fff59",
      "tree": "21c4d5d7e318d2557e0ae1c1d60d567e0637e958",
      "parents": [
        "ae0dd12d85bdf93a20be49e0bbc9b97a2dd3c3e7",
        "470b7752e38307305365fdaaa005b81db977d708"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 20:19:04 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 30 20:19:04 2015 +0000"
      },
      "message": "fix deadlock in MediaPlayerService BUG: 25263909 am: 7845a1f079\nam: 470b7752e3\n\n* commit \u0027470b7752e38307305365fdaaa005b81db977d708\u0027:\n  fix deadlock in MediaPlayerService BUG: 25263909\n"
    },
    {
      "commit": "470b7752e38307305365fdaaa005b81db977d708",
      "tree": "62e94f15f80d1f9c0e5f0de3ce1a5dbdece3fc49",
      "parents": [
        "e9ce1b1476ecaa29a845213de9ae1e749fb7d7b6",
        "7845a1f0790a1de9e26e99578f6ce3219cf8efc3"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 20:14:57 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 30 20:14:57 2015 +0000"
      },
      "message": "fix deadlock in MediaPlayerService BUG: 25263909\nam: 7845a1f079\n\n* commit \u00277845a1f0790a1de9e26e99578f6ce3219cf8efc3\u0027:\n  fix deadlock in MediaPlayerService BUG: 25263909\n"
    },
    {
      "commit": "7845a1f0790a1de9e26e99578f6ce3219cf8efc3",
      "tree": "1d9f0f145f690b31b03cbeacfdcbfbab0c6c3481",
      "parents": [
        "06195062e6b65b342b70cb1299ff278340eba9ff"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 12:07:52 2015 -0700"
      },
      "committer": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 12:07:52 2015 -0700"
      },
      "message": "fix deadlock in MediaPlayerService\nBUG: 25263909\n\nChange-Id: I3f08c02a851b67ab269e9aef7b2fb17eda09ea5d\n"
    },
    {
      "commit": "213f490215c2946edc2cc3f589219efe283d6548",
      "tree": "db72c5d29d73fb64e2bb7893e15b1d53dcd1fa95",
      "parents": [
        "eaf784ba41d4d06df82e864720818854ce1b9b8d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 22 08:55:25 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 22 08:55:25 2015 -0700"
      },
      "message": "MediaPlayerService: fix returned value for getPlayedOutDurationUs().\n\nChange-Id: Id38c146cb43543c83b8378752027cc292cdbd17b\n"
    },
    {
      "commit": "c4ac8173f911aeac8d5006b19ba48fb51a865115",
      "tree": "3c1945093ad340ac2d60d4f9606ed108195fca7a",
      "parents": [
        "4ecbea3ae1fcefb082dc419cb663909536138ddb"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 21 10:35:48 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 21 18:48:31 2015 +0000"
      },
      "message": "AudioSink: move getPlayedOutAudioDurationUs() from NuPlayerRenderer to AudioSink.\n\nChange-Id: Id22e10dc5f1cd7ade0e043ea56ed77497c2e32af\n"
    },
    {
      "commit": "83b0fd9997b558f6c2ebf5e6e4db20570cb233b8",
      "tree": "fba92293da0dc6927954f6a99ada889eeefc4bc4",
      "parents": [
        "1277aea8405ea3256a2b0f730506c4610cadafa4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 16 13:48:07 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 16 14:18:27 2015 -0700"
      },
      "message": "Optionally print name for fd\n\nAdd utility function to get the file name for a file descriptor,\nand use it in various places.\n\nChange-Id: I196b557a56d5ef0ef89e2020aab2699eafae61b0\n"
    },
    {
      "commit": "fcce691b9741fd8b7860645c99db4158d1cbbd92",
      "tree": "5bbe5e7622b330fcb8544f22dad5f9fdb72feee4",
      "parents": [
        "9d65efac5bbf88c03f7fa5e95120e2fbae35aa9b",
        "945d3ba77cd13061e034301b35ce308b0d926353"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 22:35:07 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 22:35:07 2015 +0000"
      },
      "message": "am 945d3ba7: Merge \"AudioSink: Fix for gapless offload playback\" into mnc-dr-dev\n\n* commit \u0027945d3ba77cd13061e034301b35ce308b0d926353\u0027:\n  AudioSink: Fix for gapless offload playback\n"
    },
    {
      "commit": "2e17eef829f1870d9bde963a356dfb11f120a6b5",
      "tree": "97bd31cddb60843f77dcb35d073eaee6b49e2bb1",
      "parents": [
        "44a63fa259233d09a4f5e2f30b498edc8ab9aff7"
      ],
      "author": {
        "name": "Preetam Singh Ranawat",
        "email": "apranawat@codeaurora.org",
        "time": "Wed Aug 12 12:11:46 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 26 12:41:08 2015 -0700"
      },
      "message": "AudioSink: Fix for gapless offload playback\n\nGapless mode is not working for offload playback due to mismatch\nin flags of current track and next track to be played.\n\nAUDIO_OUTPUT_FLAG_DIRECT is added in AudioTrack flags for current track\nwhich does not match exactly with requested flags for next track.\nBecause of this mismatch, reuse of the AudioTrack is not allowed.\n\nTo fix this, update audio sink flags with requested flags and use\ntrack flags only to setPlaybackRate if AUDIO_OUTPUT_FLAG_DIRECT flag\nis not set.\n\nBug: 23221273\n\nauthored-by: Preetam Singh Ranawat \u003capranawat@codeaurora.org\u003e\n\nChange-Id: I52761ccd854b66a7bc218e83c9b44598771c46f7\n"
    },
    {
      "commit": "f9e3617a4cc035446329be45f8b078dd917c7388",
      "tree": "008b4b13c7cff68a152ff0a3510f988e5e5d5293",
      "parents": [
        "4146f9b65b2a0e9c94f9963fcbbd8d65375d03a6",
        "ab3df6d8a0ddda175dcafc6b3007f399b8f3a8bb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 16:26:53 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 16:26:53 2015 -0700"
      },
      "message": "resolved conflicts for merge of ab3df6d8 to mnc-dr-dev-plus-aosp\n\nChange-Id: I2f6ef2d43275739d24ad8b79270f18e374d88e55\n"
    },
    {
      "commit": "308f3927dee3861586c17df267265ae0c86d79f7",
      "tree": "ac29b94144e2d2e86359516ff176a2ac4c9c27e3",
      "parents": [
        "bc2d3eba6b10c4dca96b0202a58d56b04464dfb4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:39:13 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:39:13 2015 -0700"
      },
      "message": "frameworks/av doesn\u0027t need to support the long-dead simulator.\n\nChange-Id: I43678ee1da57e7f42670f6042b2acc14db50d750\n"
    },
    {
      "commit": "9a89ceebd3a76d20ddfdbb127066b7d66fc48b96",
      "tree": "162e420898d4e673a8b0b35d782066711bc5f381",
      "parents": [
        "e52fb98b4541cffb9b729af69f17af7046d119fc",
        "31df62abf1b1bd45b217f6de7f6ffb503a885b95"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Fri Jul 24 17:37:47 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 24 17:37:47 2015 +0000"
      },
      "message": "am 31df62ab: Merge \"MediaPlayerService: prevent audio_attributes_t race conditions\" into mnc-dev\n\n* commit \u002731df62abf1b1bd45b217f6de7f6ffb503a885b95\u0027:\n  MediaPlayerService: prevent audio_attributes_t race conditions\n"
    },
    {
      "commit": "2650e9661ea1608dfb6b58bc640a66cdbbb6ae58",
      "tree": "70b66e87a1061e0b842ca054ca3482950c69ed0e",
      "parents": [
        "70c1f74f3d4c43b67949f3e742195d60f4677462"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 22 18:14:02 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 23 17:44:57 2015 -0700"
      },
      "message": "MediaPlayerService: prevent audio_attributes_t race conditions\n\nAccess to audio attributes fields in Client and AudioOutput\n was not always locked.\nAudio attributes field in AudioOutput cannot share the same pointer\n as Client because it can be indepently accessed. Save the\n attributes inside AudioOutput instead.\n\nBug 22672670\n\nChange-Id: Ib1002b57b45cea44ff5e6eb115d581dc3beec006\n"
    },
    {
      "commit": "66f1d3f01eb4d745e4abd3b96eca961e200efc3f",
      "tree": "19ccd4d7e8093f8517f7b3b33830490a112b703d",
      "parents": [
        "9f29eb31f79ba3fa2b1e8dec533a4a5eb97e4fe1",
        "f87d8341df3445fb4931a39deec2ec1d00c30918"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Jul 23 21:48:34 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 21:48:34 2015 +0000"
      },
      "message": "am f87d8341: Merge \"libmediaplayerservice: propagate caller pid to MediaCodec.\" into mnc-dev\n\n* commit \u0027f87d8341df3445fb4931a39deec2ec1d00c30918\u0027:\n  libmediaplayerservice: propagate caller pid to MediaCodec.\n"
    },
    {
      "commit": "68845c14ebf2c7282800b1abffde38d8e9a57aab",
      "tree": "c4e924999d0ed48ae4c1a08d44777cbc5b161906",
      "parents": [
        "f8f669d7a727e4ad5505cd85741f4d50dbaffbf9"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Jul 21 09:50:48 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Jul 21 19:04:41 2015 -0700"
      },
      "message": "libmediaplayerservice: propagate caller pid to MediaCodec.\n\nBug: 22630317\nChange-Id: I0337d74f4ef04bf96f2de83f33d98d0d7da47c12\n"
    },
    {
      "commit": "83582fafce2122286124710c3a9c749b4825a033",
      "tree": "13cda1fad01d52c8547d5c12edd74f46399f1e02",
      "parents": [
        "39d19327feb76affd0ab0df119aa6987e29816fa",
        "a8dc93efc9be8d5e37c7473601fb8654804188c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 16 01:36:01 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 16 01:36:01 2015 +0000"
      },
      "message": "am a8dc93ef: Merge \"mediaplayer: fix audio attributes override by stream type\" into mnc-dev\n\n* commit \u0027a8dc93efc9be8d5e37c7473601fb8654804188c1\u0027:\n  mediaplayer: fix audio attributes override by stream type\n"
    },
    {
      "commit": "4356269be6d2b62bbb945364e8fc4beb99e1aada",
      "tree": "f2ef8b7a7f84fe3901333cf2784711bd1dc6b769",
      "parents": [
        "4b33e0838fdb1b5e545449add02005916b512c99"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "message": "mediaplayer: fix audio attributes override by stream type\n\nMake sure that when audio attributes are set, the stream type\nis always derived from them.\n\nBug: 22481669.\nChange-Id: Ia10c7017eb27e7753faf97a42dd4f44e15f2c986\n"
    },
    {
      "commit": "cda7cf7f6fda88525b6827cebf6372473b3fc876",
      "tree": "56ebf4bf6236c4fc089b03c9b7dd6c3f9fc3c2b4",
      "parents": [
        "2d908114b0ce5ba0d34aab5a721f9772340f936a",
        "b6b19ca71e41276190fcd97351a0d19fae75bd34"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 10 21:45:32 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 10 21:45:32 2015 +0000"
      },
      "message": "am b6b19ca7: Merge \"libmediaplayerservice: Serialize access to AudioOutput\" into mnc-dev\n\n* commit \u0027b6b19ca71e41276190fcd97351a0d19fae75bd34\u0027:\n  libmediaplayerservice: Serialize access to AudioOutput\n"
    },
    {
      "commit": "d1c74340c9346e2bfd061e20fba9bf34c22d77db",
      "tree": "54220202e022e8ff9d53113a377ffcec120539c2",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 07 16:54:23 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 10 10:09:00 2015 -0700"
      },
      "message": "libmediaplayerservice: Serialize access to AudioOutput\n\nNuPlayerRenderer may open and close the AudioOutput while\nMediaPlayerService::Client accesses it.\n\nBug: 20069455\nBug: 22295200\nChange-Id: Ic37987c1de1919cf890b2e69778e6df71e7ee7c5\n"
    },
    {
      "commit": "c9811dc703a38add41ee3960c1d7242ed154434f",
      "tree": "78f83b42a8951addcd9f36c049817b78f5e3f0cd",
      "parents": [
        "00d9169fa3b042a7d28175e00982531c53ff157f",
        "f49b5150f87c98c389a334c3af5a9a586d40ee8f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 21:25:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 09 21:25:58 2015 +0000"
      },
      "message": "am f49b5150: Merge \"AudioSink: use flags granted by AudioTrack, instead of the requested flags.\" into mnc-dev\n\n* commit \u0027f49b5150f87c98c389a334c3af5a9a586d40ee8f\u0027:\n  AudioSink: use flags granted by AudioTrack, instead of the requested flags.\n"
    },
    {
      "commit": "f49b5150f87c98c389a334c3af5a9a586d40ee8f",
      "tree": "fb90dd7dd121f3a9f9507fe475c0bfa7a8092b50",
      "parents": [
        "984591672a6f4096ee92c4a582d4c54ee6023c43",
        "0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 21:04:34 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 09 21:04:35 2015 +0000"
      },
      "message": "Merge \"AudioSink: use flags granted by AudioTrack, instead of the requested flags.\" into mnc-dev"
    },
    {
      "commit": "0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21",
      "tree": "23e84b8e8819c1a2106f18f5957815e3ca786014",
      "parents": [
        "9cf332ca156132931da397bae94b89debb40de10"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 11:59:33 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 12:04:09 2015 -0700"
      },
      "message": "AudioSink: use flags granted by AudioTrack, instead of the requested flags.\n\nDo not call AudioTrack::setPlaybackRate when DIRECT flag is set.\n\nBug: 17459982\nChange-Id: Ib8fb07be72558234519590bcc3bb88c4f6edfa37\n"
    },
    {
      "commit": "979d0d7a73b085920345028e28714be81d83e9c5",
      "tree": "b4883afbcdbb0da5de8d6a40330e73440910fb3b",
      "parents": [
        "fffb53cfdfaaa090dec16429d62de9ccc79db053",
        "bc186651b6ff4bef5ebe0087c0e34bc8e89b14a3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 04:02:55 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 05 04:02:55 2015 +0000"
      },
      "message": "am bc186651: Merge \"NuPlayer: Add audio sink buffer configuration\" into mnc-dev\n\n* commit \u0027bc186651b6ff4bef5ebe0087c0e34bc8e89b14a3\u0027:\n  NuPlayer: Add audio sink buffer configuration\n"
    },
    {
      "commit": "179652ee2a508361df1aa18e99000373886f0816",
      "tree": "cab9a40399ab43231c8a9b9fc00985b2efaf600c",
      "parents": [
        "a7f03353d5f172016f324e2a01f301cca6794152"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 22:49:46 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 22:26:44 2015 -0700"
      },
      "message": "NuPlayer: Add audio sink buffer configuration\n\nProperty media.stagefright.audio.sink (in milliseconds)\nAlso change the default buffer size for PCM playback to 500 ms.\n\nBug: 21198655\nChange-Id: I5781288f59bf08fbecd9263a26c919570b58be0f\n"
    },
    {
      "commit": "ff96dd688f50b7ed3f4ab8fb04fb4a61e596130b",
      "tree": "00182963a9155e07ef8d0181543f365a53c2370f",
      "parents": [
        "c394dace3c6128ca719aceea9f132a1cb905bf2e",
        "4170eeec0a2dc2a9543b7e4674a43b3d2faac61d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:30:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 03 21:30:13 2015 +0000"
      },
      "message": "am 4170eeec: Merge \"MediaPlayerService: Reset the bytes written in AudioSink stop and flush\" into mnc-dev\n\n* commit \u00274170eeec0a2dc2a9543b7e4674a43b3d2faac61d\u0027:\n  MediaPlayerService: Reset the bytes written in AudioSink stop and flush\n"
    },
    {
      "commit": "91e1a4e9ffed810f94690c16f6771f302f9dcf95",
      "tree": "ec8fcf0469926659a4a18db2d2a3bee022df055c",
      "parents": [
        "ed38e31197b7a3027412f6ba6bf626794069cef3",
        "6f04a0c9bf531372ba885a82e592a0eeb27b9484"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:16:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 03 21:16:11 2015 +0000"
      },
      "message": "am 6f04a0c9: Merge \"MediaPlayerService: Remove unnecessary zero writes to AudioSink\" into mnc-dev\n\n* commit \u00276f04a0c9bf531372ba885a82e592a0eeb27b9484\u0027:\n  MediaPlayerService: Remove unnecessary zero writes to AudioSink\n"
    },
    {
      "commit": "4170eeec0a2dc2a9543b7e4674a43b3d2faac61d",
      "tree": "cb6467ecdb48f84040fe2b3efca2266aa833b1f1",
      "parents": [
        "d726a189a8a3f822106da21fcb8c8665fd48d272",
        "da17c04fa1c81ff8ffa8160df06fa5031a7884f4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:00:18 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 03 21:00:22 2015 +0000"
      },
      "message": "Merge \"MediaPlayerService: Reset the bytes written in AudioSink stop and flush\" into mnc-dev"
    },
    {
      "commit": "da17c04fa1c81ff8ffa8160df06fa5031a7884f4",
      "tree": "8f8de9064479ea370b7d5c97dd7de61cc593f018",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 01 15:53:14 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:58:39 2015 -0700"
      },
      "message": "MediaPlayerService: Reset the bytes written in AudioSink stop and flush\n\nWhen playing in non-offloaded mode with gapless playback it is\nnecessary to reset AudioSink\u0027s bytes written on stop and flush\n(e.g. seeking) so the frames written can be correctly retrieved\nfor the subsequent song in NuPlayer::Renderer::onAudioSinkChanged().\n\nWithout this change, seeks performed during playback will cause\na time position offset of the subsequent song in Play Music.\n\nBug: 21198655\nChange-Id: I0fb6cc94b5a0ff106dc8a71571ed85d75fb00660\n"
    },
    {
      "commit": "719b46bdbafa226aed3163ed8e76a2cc4dff386b",
      "tree": "58c94bb03d49a4987876f14edd034db2da4322ab",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 22:18:25 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:48:27 2015 -0700"
      },
      "message": "MediaPlayerService: Remove unnecessary zero writes to AudioSink\n\nCauses glitches in PCM playback for NuPlayer callback mode.\n\nNot sure the original intention of this with AwesomePlayer, as zeroes\nare only placed under EOS condition for AudioSink targets, not AudioTrack\ntargets.  Does not seem useful anymore as AwesomePlayer appears to\ncall stop() which should send the remaining track data out.\n\nBug: 21198655\nChange-Id: Iab80dd7bc6e2e341f92406c5d8f8085e9d877bcd\n"
    },
    {
      "commit": "1bf65efd28fffbbc600177c11799a8d7c3cb2477",
      "tree": "100f5e928de71ca5505a32fccc5af1d63ac2fbd4",
      "parents": [
        "7fcc4ef203515737cd9a8f85277aaeee6123591e",
        "cb18ec05b7097a63262b81afe1e866105d400f4a"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Jun 02 14:23:56 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 02 14:23:56 2015 +0000"
      },
      "message": "am cb18ec05: Merge \"Track camera and flashlight usage in battery stats.\" into mnc-dev\n\n* commit \u0027cb18ec05b7097a63262b81afe1e866105d400f4a\u0027:\n  Track camera and flashlight usage in battery stats.\n"
    },
    {
      "commit": "cb18ec05b7097a63262b81afe1e866105d400f4a",
      "tree": "4b13077360dfb54722298be1b793a8df5ddc6d7a",
      "parents": [
        "cc7cc67349b7a3f498882087aa42ffc05a2daf11",
        "99e69716215cd0665379bc90d708f2ea8689831d"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Jun 02 01:48:21 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 01:48:23 2015 +0000"
      },
      "message": "Merge \"Track camera and flashlight usage in battery stats.\" into mnc-dev"
    },
    {
      "commit": "99e69716215cd0665379bc90d708f2ea8689831d",
      "tree": "d013b8e9273ea6032ddf24ba701eccb755b672bb",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue May 26 17:25:07 2015 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Jun 01 16:53:45 2015 -0700"
      },
      "message": "Track camera and flashlight usage in battery stats.\n\nBug: 15986092\n\nChange-Id: I9dc6828332e4091fd93bf2d82839e8e3862a2fc2\n"
    },
    {
      "commit": "4612b1f4df00f1985d28131fbf52afc2146ded54",
      "tree": "d10e740b3c7d0fecd9526de2b5bfddb319b765cb",
      "parents": [
        "aa245565fc1c10c3de5bb2a138b8708d05e5bef3",
        "90869ff493a3e8d1aa39c146530be03dc2a7dd84"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 18:51:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 01 18:51:22 2015 +0000"
      },
      "message": "am 90869ff4: Merge \"Explicit log for AudioTrack::EVENT_UNDERRUN\" into mnc-dev\n\n* commit \u002790869ff493a3e8d1aa39c146530be03dc2a7dd84\u0027:\n  Explicit log for AudioTrack::EVENT_UNDERRUN\n"
    },
    {
      "commit": "421743b3f8d14b700f2e1be256e010756fa85af8",
      "tree": "42744bdb16ca0ccaf3b7af79ef5d9a3bbd68e1cc",
      "parents": [
        "11804f5ca4ebd3527e7cc3bcc529e8358a519f8e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 08:18:08 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 10:36:56 2015 -0700"
      },
      "message": "Explicit log for AudioTrack::EVENT_UNDERRUN\n\nPrompted by this bug, but not a fix for the bug\n\nBug: 21352202\nChange-Id: I350d9d8660a367470450c9f54d7c541d4896ebda\n"
    },
    {
      "commit": "475ed1d6c842abdb773fa8e39290375ceda39b62",
      "tree": "40cc6ff40bd4ff72ae11b4c09ce682234dcb5fbc",
      "parents": [
        "0929bee6badfd924c143a54cec27de5879be6c31",
        "0a7989f5691f161fff97dd550eb602e44a6e6185"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 19:11:53 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 22 19:11:53 2015 +0000"
      },
      "message": "am 0a7989f5: Merge \"libmediaplayerservice: try to open audio sink in offload mode in error.\" into mnc-dev\n\n* commit \u00270a7989f5691f161fff97dd550eb602e44a6e6185\u0027:\n  libmediaplayerservice: try to open audio sink in offload mode in error.\n"
    },
    {
      "commit": "faeb0f291330134dc4468359a36e099aae508449",
      "tree": "028333c0801e03826c4162cb35880236eaae3b3b",
      "parents": [
        "8eddd88568fe4da0ca0ceab5072bc488827f01b5"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu May 21 12:20:21 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 10:36:31 2015 -0700"
      },
      "message": "libmediaplayerservice: try to open audio sink in offload mode in error.\n\nBug: 19061432\nBug: 21370108\nChange-Id: Iaa757555ef37fd1ac87b6e2d5a9969bb58cc5ebc\n"
    },
    {
      "commit": "3d4d897cf6a933dd02e8d83e674a4ecfe2ea578b",
      "tree": "c74f320420b43896390519c2deb4bf4c7f0b7ed4",
      "parents": [
        "672a5ddac8ef8eeb144a1248045ed9ffd82e5dec",
        "d45d75d7c19811c5afe9b115c7282f9aa4e1ee4d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 22:48:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 18 22:48:58 2015 +0000"
      },
      "message": "am d45d75d7: Merge \"Clear mAudioRecord and mAudioTrack on set() failure\" into mnc-dev\n\n* commit \u0027d45d75d7c19811c5afe9b115c7282f9aa4e1ee4d\u0027:\n  Clear mAudioRecord and mAudioTrack on set() failure\n"
    },
    {
      "commit": "3e98ecd18c906dc3ac2ff1a890f0b3163447272d",
      "tree": "8c9227dcf79cd1d87d69d6c1ab4c66d440d3207c",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 13:13:24 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 14:37:52 2015 -0700"
      },
      "message": "Clear mAudioRecord and mAudioTrack on set() failure\n\nBug: 20818955\nBug: 20890069\nChange-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db\n"
    },
    {
      "commit": "0ab2c4ce6f669722c055f1f4d35d6a79d21ba7c7",
      "tree": "94c1085ec77573f3a51a5dc4ccf0c54a91d0fa1b",
      "parents": [
        "86e3866b82b435bb319ed79aa91416e4f73c7218",
        "3a474aa67fc31505740526dd249d96204c08bf79"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri May 01 00:28:27 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 01 00:28:27 2015 +0000"
      },
      "message": "am 3a474aa6: stagefright: support setting/getting playback/sync config in MediaSync\n\n* commit \u00273a474aa67fc31505740526dd249d96204c08bf79\u0027:\n  stagefright: support setting/getting playback/sync config in MediaSync\n"
    },
    {
      "commit": "3a474aa67fc31505740526dd249d96204c08bf79",
      "tree": "4db784ee57ffad037fa2ded86d0fd8b3a40173d5",
      "parents": [
        "a8df0b716bdfda1e10790e6f7297eeff83d2e52a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:07 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Apr 30 16:56:10 2015 -0700"
      },
      "message": "stagefright: support setting/getting playback/sync config in MediaSync\n\nBug: 18249558\nBug: 19666434\nBug: 20057497\nChange-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605\n"
    },
    {
      "commit": "7cc31f737508b7fd3205b9d8f971bffb71498740",
      "tree": "db73499694c42ed8abb81855e46d63e1286f170d",
      "parents": [
        "6fdbb3e4337722c9bdbc9a1399c1076e51c83d9a",
        "afc750aa3ac536067180f9714e34f626f8c981b3"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:55:24 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 29 19:55:24 2015 +0000"
      },
      "message": "am afc750aa: Merge \"Respect the record audio app op - media\" into mnc-dev\n\n* commit \u0027afc750aa3ac536067180f9714e34f626f8c981b3\u0027:\n  Respect the record audio app op - media\n"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "9c3e9c4ffd385abf12823cd3ffe0ee0bc688af76",
      "tree": "33960d50a8657be9dba4a2da3bb7a6358649ec05",
      "parents": [
        "56f3de5e5bf164b36521a3f90033df77e49cfd64",
        "31c81e9e4a468a448b387d5c905b4ac5c6a014fc"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 05:28:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 28 05:28:13 2015 +0000"
      },
      "message": "am 31c81e9e: am b8111f83: Merge \"Fix potential double close in IMediaMetadataRetriever::setDataSource\"\n\n* commit \u002731c81e9e4a468a448b387d5c905b4ac5c6a014fc\u0027:\n  Fix potential double close in IMediaMetadataRetriever::setDataSource\n"
    },
    {
      "commit": "55203e2e29428c2c7bd830d731f5e6ed890d9a10",
      "tree": "5e1bea82d6c97dce4d28b1ae2a6c0995e62435e8",
      "parents": [
        "4491a4ab2d6991baa1ce15f24025aa24430d15d1"
      ],
      "author": {
        "name": "Taiju Tsuiki",
        "email": "tzik@google.com",
        "time": "Tue Apr 21 17:36:22 2015 +0900"
      },
      "committer": {
        "name": "Taiju Tsuiki",
        "email": "tzik@google.com",
        "time": "Tue Apr 21 21:12:06 2015 +0900"
      },
      "message": "Fix potential double close in IMediaMetadataRetriever::setDataSource\n\nIMediaMetadataRetriever::setDataSource(fd, offset, length) takes the ownership\nof |fd| on the direct invocation, and doesn\u0027t take the ownership on invocation\nfrom Binder. This is inconsintent to other similar methods like\nIMediaPlayer::setDataSource, and causes potential double close of |fd|.\n\nThis CL changes the caller and implementations to leave the ownership to make\nthem consistent.\nAlso, fixes a double close in IMediaPlayerService::setDataSource in an error\ncase.\n\nChange-Id: Id551a1e725c4392b0fe6b7293871212eb101c0a5\n"
    },
    {
      "commit": "5fde15db465775d5c607cf069752e2e075f8fc6d",
      "tree": "95fc8fda3a591fffedc253f1ebaf3f08e1e93547",
      "parents": [
        "a7346034d597c18b63bc63fdfea8360f8b6c1283"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Apr 20 22:13:22 2015 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Apr 20 22:13:22 2015 -0700"
      },
      "message": "Fix mips build.\n\nChange-Id: I49aa83e38e90ebd20793885de9420de96062aa37\n"
    },
    {
      "commit": "6d339f1f764bbd32e3381dae7bfa7c6c575bb493",
      "tree": "3b29d455c9f3ac73327a0117d2bc18d8b199a265",
      "parents": [
        "ee4e1b1a63758941460ae79a064249d3a5189443"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 16:15:53 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 16:16:27 2015 -0700"
      },
      "message": "libmediaplayerservice: fix warnings, make warnings errors, use clang\n\nChange-Id: I1b2f6b65c5abbc366068a60b8909104f31b94228\n"
    },
    {
      "commit": "99f31604136d66ae10e20669fb6b5716f342bde0",
      "tree": "20e64f4f26533b37b087ce8656b1040b8189e24f",
      "parents": [
        "2f33dbc6ca08d45efea2df775c158e2a11e07ab6"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Fri Mar 20 13:06:33 2015 -0700"
      },
      "committer": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Wed Apr 15 17:12:22 2015 -0700"
      },
      "message": "Unhide the android.media.[Media]DataSource interface.\n\nThis allows apps to implement MediaDataSource, which is modeled on\nstagefright\u0027s DataSource, to supply media data to the framework. This\nwas already implemented for MediaExtractor, but it was renamed from\nDataSource.\n\nMediaExtractor, MediaPlayer and MediaMetadataRetriever each have a new\noverload: #setDataSource(android.media.MediaDataSource)\n\nOnly NuPlayer supports this new data source.\n\nThe change introduces:\n * IDataSource:        The binder interface for DataSource.\n * JMediaDataSource:   The native counterpart to the java interface. It\n                       implements IDataSource.\n * CallbackDataSource: A stagefright DataSource that wraps an\n                       IDataSource.\n\nChange-Id: Ib3c944b49cc8a792c8eb9c85e5015c07f298ebc1\n"
    },
    {
      "commit": "88b456640085fa0e92d66e42ddaf24449c8c4fdb",
      "tree": "4748650073a1802b6a59fbeb5e1720a737a0f408",
      "parents": [
        "366d92e0b2732406fff4153f6d3d0f7de50a425b",
        "330c8e3ff98e4cb78dad28bbacdb127da3e265ac"
      ],
      "author": {
        "name": "Vineeta Srivastava",
        "email": "vsrivastava@google.com",
        "time": "Wed Mar 11 21:29:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 11 21:29:33 2015 +0000"
      },
      "message": "Merge \"libmediaplayerservice: fix deadlock in dump()\""
    },
    {
      "commit": "330c8e3ff98e4cb78dad28bbacdb127da3e265ac",
      "tree": "f66830ef1c30d5598f693576cb883b8bdded91fc",
      "parents": [
        "bf31b3301676ad86151f632e9ca186fd02445d86"
      ],
      "author": {
        "name": "Ravi Kumar Alamanda",
        "email": "ralama@codeaurora.org",
        "time": "Mon Dec 22 10:05:29 2014 +0530"
      },
      "committer": {
        "name": "Vineeta Srivastava",
        "email": "vsrivastava@google.com",
        "time": "Wed Mar 11 13:24:05 2015 -0700"
      },
      "message": "libmediaplayerservice: fix deadlock in dump()\n\nIssue: Calling dump function while the media clients\n(sessions) are created and destroyed will result in a deadlock.\n\nDescription: MediaPlayerService::dump() takes Mutex while calling\nclient::dump() and right after that the strong reference to client\nis cleared. If there are no references to client object at this moment\n(which is the case if multiple audio sessions are created and destroyed)\nthen the client destructor gets called which tries to take\nthe same Mutex resulting in a deadlock.\n\nFix: Take a strong reference to client objects and release them only\nafter releasing the Mutex.\n\nBug: 18700631\n\nAuthor: Sidipotu Ashok\u003csashok@codeaurora.org\u003e\n\nChange-Id: I82c89771de352d2f0d914eb0a3b9fc7bfb6116b0\n"
    },
    {
      "commit": "b9a23184272a75f1585e8dd64eeccc3a3e621d5f",
      "tree": "a9f1aa8ab2cb9e59cc76b52246b36a8691edf8a1",
      "parents": [
        "f9d19514b3e620b6339c98a442da833a702915ed",
        "ed849b8266824d4c5df15466e5c02e1471192461"
      ],
      "author": {
        "name": "Warren Rehman",
        "email": "wrehman@google.com",
        "time": "Mon Mar 09 06:15:53 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 09 06:15:55 2015 +0000"
      },
      "message": "Merge \"Defensively check for batterystats service instead of blocking to get it.\""
    },
    {
      "commit": "ed849b8266824d4c5df15466e5c02e1471192461",
      "tree": "95bc30c24c381e6b9ac1703266a5c148eb12874f",
      "parents": [
        "d7e1d08c2ac21cdd2f3b7f83fec7094f6a98fc08"
      ],
      "author": {
        "name": "Warren Rehman",
        "email": "wrehman@google.com",
        "time": "Thu Mar 05 15:26:12 2015 +0900"
      },
      "committer": {
        "name": "Warren Rehman",
        "email": "wrehman@google.com",
        "time": "Thu Mar 05 17:07:50 2015 +0900"
      },
      "message": "Defensively check for batterystats service instead of blocking to get it.\n\nbug: 19189826\nChange-Id: I656e863eb68edf22812eb380ec6cd4105f4000aa\n\n On branch checkbattstats\n Changes to be committed:\n\tmodified:   MediaPlayerService.cpp\n"
    },
    {
      "commit": "7d3f4df0a77e052a7d37de9268aff8c2ed0909cc",
      "tree": "060550294c95fe8a35ba5c7c0c9d476d7c91d788",
      "parents": [
        "1ba399206f6a99fec17331186041b55c3733c8d8"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Mar 03 15:28:00 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Mar 03 15:28:00 2015 -0800"
      },
      "message": "mediaplayer: use non-blocking mode for AudioSink::write().\n\nThis cherry picks https://googleplex-android-review.git.corp.google.com/#/c/643541/ to master.\n\nBug: 19448263\nChange-Id: I43dea830212de79c2b080185b6c6b36078f517d2\n"
    },
    {
      "commit": "9816016afb2a13c6a866cd047d57020566a8b9a9",
      "tree": "176a616a7d5da21447e880158cef57516efee9c3",
      "parents": [
        "658fc18d8e632441cd5d83a4f74b53620cbac1fe"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 04 17:01:11 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Feb 24 16:34:11 2015 -0800"
      },
      "message": "mediaplayer: support dynamic playback rate\n\nBug: 19196501\n\nChange-Id: I856b1507d5fa2cedfb645706d2435683a7d3e050\n"
    },
    {
      "commit": "f09611f2f33752afc28141e1bbaa897651c05d6f",
      "tree": "0c22a41f082abda66b93bb73840a072c8837d277",
      "parents": [
        "ec0472ba9c1cfaee293636536f3951c0e6e671b4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 13 14:12:42 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 18 09:14:06 2015 -0800"
      },
      "message": "Add dumpsys info\n\nPrint a list of looper-handler pairs and the number of messages\nthey\u0027ve processed, and optionally break those stats out by\nmessage type.\n\nChange-Id: I68ce4a7003152d5c9b5cb3f42e6f3949b471aa6e\n"
    },
    {
      "commit": "b7848f1c442bc8c71020957948d1b003a62a25b7",
      "tree": "b0a1dfd418429171c0af5379a1820569775a840b",
      "parents": [
        "1ed13b3b443735e7f7b5002954f31741b0b1c572"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Dec 04 08:57:56 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 26 07:57:39 2015 -0800"
      },
      "message": "Remove MediaPlayerService::decode()\n\nand make SoundPool use MediaCodec for decoding files to PCM.\n\nBug: 18239054\nChange-Id: Ia144fc1bbb0d2787638ee972e2224339b4965310\n"
    },
    {
      "commit": "0e8928bf4f2b01b783f6da97d15e8f1abb0fd7d7",
      "tree": "915b24bd6c686000a5c4fb8af920c8a16204e30e",
      "parents": [
        "c52af00beda4477d0fd00c3071e6ffd9c465430b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 13:40:53 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 13:48:52 2015 -0800"
      },
      "message": "Replace MidiFile player with a Midi extractor\n\nThis gets rids of a bunch of special midi handling and replaces it\nwith an extractor that works with NuPlayer and MediaMetadataRetriever.\n\nChange-Id: I8d0f5bbdde2ca24267cf4d62ab26afe9630e0217\n"
    },
    {
      "commit": "bd08223c450a7a2e8e8d79e6be148ed1ac64caa3",
      "tree": "9000e08ccfaafa049601cb2ec1f205d4168719e4",
      "parents": [
        "1ec00eab663c3eb74ad50fc5fc9f6b257f89a524",
        "5225ba0632e9dcf6fab562e4632ae8d6d4312959"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Dec 22 19:24:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 22 19:24:46 2014 +0000"
      },
      "message": "Merge \"Fix double close.\""
    },
    {
      "commit": "f888020c6e2735624f2b2a30e72aca24e17b8b4d",
      "tree": "76d92b7a91a4bebd4e84d6afdc2ef4a2e4943df8",
      "parents": [
        "d02641098b16df2fd4cd32b72a30eb6f3b64e12b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 07:58:25 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 17 10:05:07 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a\n\nConflicts:\n\tmedia/libmedia/IAudioFlinger.cpp\n\tmedia/libmedia/IMediaPlayer.cpp\n\tmedia/libstagefright/CameraSource.cpp\n"
    },
    {
      "commit": "06ad1528e6dd4c866c085d3cad9235d2752eb3ed",
      "tree": "4b8411a9c418927b3916d5b5381cc8738a3ccb31",
      "parents": [
        "919b93473ebbba036f3934e92039f038c7f91a54"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 28 07:27:44 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Sep 17 23:01:24 2014 +0000"
      },
      "message": "NuPlayer: use getTimestamp instead of getPosition\n\nBug: 14659809\nBug: 16985287\nChange-Id: I59ec72fbd40a9b8d28fe548ddad082c03000c045"
    },
    {
      "commit": "4f418f9705d6c247b645cbcf255a3f56e665d216",
      "tree": "f4563f44841f147eae780f74e01a1af78d565179",
      "parents": [
        "b72726bad6c9253c26c82fea76bdf99e18b8ba6d"
      ],
      "author": {
        "name": "Hyejin Kim",
        "email": "hyejin.kim@lge.com",
        "time": "Fri Sep 05 15:50:03 2014 +0900"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 05 16:49:14 2014 +0000"
      },
      "message": "Fix to parse audio_source_t member of audio_attributes_t\n\nWhen unmarshalling audio_attributes_t typed data,\nit didn\u0027t parse the audio_source_t member between content_type and flags.\n\nBug: 16906307\n\nChange-Id: Ia0d8df9b5c31441d34dc82678bceccd8ce31423d"
    },
    {
      "commit": "a31335a4ec96ba351f25f3b26fa79a78c2723a13",
      "tree": "2c1aea6357ac46dcdeecc0b1b5b80a4b6bd05cd3",
      "parents": [
        "2a1bcb8347ad4778a49bb340c3ed28ba27caa7d7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 20 17:37:59 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 21 16:51:28 2014 -0700"
      },
      "message": "Fix SoundPool and MediaPlayerService buffer overflow\n\nOverflow occurs when SoundPool sample tracks cannot\nfit in the MediaPlayerService AudioCache buffer.\n\nUnnecessary decoding occurred with AwesomePlayer and\nan assert failure occurred with NuPlayer.  NuPlayerRenderer\nis also tweaked to handle the latter case.\n\nBug: 17122639\nChange-Id: I4d25d3e2c0c62e36a91da6bf969edabddc2ebbb0\n"
    },
    {
      "commit": "f2575571d88cd42508407e98957a19a875dcf926",
      "tree": "4a3c3ed8478e3b20013b46abb4bbece59814e33a",
      "parents": [
        "44a5a202101614302f607228d4357496b350bab4"
      ],
      "author": {
        "name": "aarti jadhav-gaikwad",
        "email": "agaikwad@nvidia.com",
        "time": "Wed Aug 13 15:04:39 2014 +0530"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Aug 18 15:09:20 2014 -0700"
      },
      "message": "stagefright: Do not add silence data for compress offload\n\nBug: 16683770\nBug: 17035257\nChange-Id: I7aef543c47214cc2854d143167b02f1603cf8bea\n"
    },
    {
      "commit": "1381d4b5c0385aec3741073e5998773b064c1fb0",
      "tree": "6087b737255d34703a90d1952d48bb97646e492a",
      "parents": [
        "60b1c0e79d12a1c70758bc8d060156924635f8ba"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 07 15:18:35 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 07 17:40:13 2014 -0700"
      },
      "message": "media/playerservice: add getCodecList() to MediaPlayerService\n\nBug: 11990470\nChange-Id: I8fa45946fd9b76f9b975fc59062819c57e6881ef\n"
    },
    {
      "commit": "0b30fd4ccf5218b15f770e778703d69cd3432446",
      "tree": "903c4ad10a590027ecda16b9fe419d3a768ca5aa",
      "parents": [
        "4730fa07a3290cc3a904dcb16dbb92fcf46c36ac"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jul 23 14:46:05 2014 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jul 23 21:51:44 2014 +0000"
      },
      "message": "reset battery stats when media player service is started\n\nBug: 12979595\nChange-Id: Ia800de3e65ed4dec8334c6fde566edab12d23c42\n"
    },
    {
      "commit": "d9d7fa0873796ac661c44a7fcd6ad5ff697ff01f",
      "tree": "237375ce1605b2d7bd896b23f0a2ba2f0235ae09",
      "parents": [
        "f92f22becdf7fce1f55d5ebd80ac2caa2ad55602"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 24 08:01:46 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 01 07:57:32 2014 -0700"
      },
      "message": "Support for audio attributes on audio output of media player\n\nChange-Id: Iae4995c98e64add1ab9e6c8ae6501515032755f5\n"
    },
    {
      "commit": "77342f72fdf96603938a95fcbb9888ec90e71e68",
      "tree": "6d2abbaa5d530c2cfe65c1449e2ab0c41558f34d",
      "parents": [
        "7e4082ff105f5b2d8fe889b04703f9b828304fbd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jun 18 16:31:32 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 20 12:43:37 2014 -0700"
      },
      "message": "libmediaplayerservice: 64-bit compile warnings\n\nChange-Id: I333e52dc377becc774f3fa971c230ecb55ea8d7b\n"
    },
    {
      "commit": "5225ba0632e9dcf6fab562e4632ae8d6d4312959",
      "tree": "5eb4153611f426c1d6b8e1cd7885538a37cf0ff4",
      "parents": [
        "3059e27d0e18a427f3c19889aac86ea31ec0d5d1"
      ],
      "author": {
        "name": "Bao Haojun",
        "email": "baohaojun@gmail.com",
        "time": "Fri May 16 13:20:19 2014 +0800"
      },
      "committer": {
        "name": "Bao Haojun",
        "email": "baohaojun@gmail.com",
        "time": "Sat May 17 15:15:41 2014 +0800"
      },
      "message": "Fix double close.\n\nThis patch will fix the double close issue in SoundPool::doLoad():\n\n        status \u003d MediaPlayer::decode(mFd, mOffset, mLength, \u0026sampleRate, \u0026numChannels, \u0026format,\n                                     mHeap, \u0026mSize);\n        ALOGV(\"close(%d)\", mFd);\n        ::close(mFd);\n        mFd \u003d -1;\n\nIn MediaPlayerService::decode() which is called directly by\nMediaPlayer::decode(), the fd will be closed, and after it return, the\nmFd will be closed again.\n\nWhen the system is idle, the second close will fail with EBADFD, but if\nthe system is busy, the mFd will be reused with another open/socket/pipe\nsystem call, and the second close will cause errors.\n\nChange-Id: If709515392cd490fea569658202524c51f8df785\nSigned-off-by: Bao Haojun \u003cbaohaojun@gmail.com\u003e\nSigned-off-by: Wang Liang \u003cwangliang@smartisan.cn\u003e\n"
    },
    {
      "commit": "adad3d7d935da176ff24941b4ae9edf7340e9b96",
      "tree": "7a8a2f8e31c7dd690805c1cfd9982d218c66296b",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 21 14:51:43 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:46:28 2014 -0700"
      },
      "message": "Use LOG_ALWAYS_FATAL instead of LOG_FATAL\n\nLOG_FATAL is compiled out in most builds, so the\nassertion checks were not being performed.\n\nChange-Id: I774f0985ab9c5ccecd8989a0f1c940386b73fc35\n"
    },
    {
      "commit": "bce50bfc3846ab008bafa75c5d3f29fd7b5395f7",
      "tree": "ebefb9f660bf71aec96bd297e155d12c9d3588e8",
      "parents": [
        "838b3d8bafa4a781e277870dee4e0390165cff52"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 15:29:51 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 07:56:38 2014 -0800"
      },
      "message": "Fix type of AudioTrack/AudioRecord parameter frameCount\n\nIt\u0027s size_t consistently\n\nChange-Id: I29638ef59ac773218025f2403a3508a307b487e0\n"
    },
    {
      "commit": "d457c970c8d08519cd77280a90b61ae1e342cfe3",
      "tree": "f0f409db4d834b4d70b2244dd97dfa707496df50",
      "parents": [
        "1d6fa7af1288b550faabe4ec2cf98684236723db"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 11 08:47:07 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 11 12:39:43 2014 -0800"
      },
      "message": "Track pid for each session\n\nso they can be properly freed.\n\nChange-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3\n"
    }
  ],
  "next": "1d6fa7af1288b550faabe4ec2cf98684236723db"
}
