)]}'
{
  "log": [
    {
      "commit": "3e98ecd18c906dc3ac2ff1a890f0b3163447272d",
      "tree": "8c9227dcf79cd1d87d69d6c1ab4c66d440d3207c",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 13:13:24 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 14:37:52 2015 -0700"
      },
      "message": "Clear mAudioRecord and mAudioTrack on set() failure\n\nBug: 20818955\nBug: 20890069\nChange-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db\n"
    },
    {
      "commit": "8f469e18c307cb9dc0d16ed9225972aa8be4516f",
      "tree": "c8e07383c8bdef3b0214def08f6b2d6da7e622f4",
      "parents": [
        "635bc8f90429b2fdcaf7f8d43f7f59bcd0fe951c"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 13 10:21:33 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 13 10:49:35 2015 -0700"
      },
      "message": "stagefright: rename usePersistentInputSurface to setInputSurface\n\nand clear persistent surface pointer when MediaRecorder is reset\n\nbug: 21045118\nbug: 21045402\nChange-Id: Ifd0d6deeb969f2252123929541b30b518cecbf9a\n"
    },
    {
      "commit": "9ba21b9418d10ddcc39f08901e24fbf43d82b2bc",
      "tree": "363f0598085516cf16ddd4ee5df2d1043e2955da",
      "parents": [
        "ba21a9ac7b6b76f85681cfb5e756e947c0ae3b53"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Apr 21 14:23:06 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 08 09:51:26 2015 -0700"
      },
      "message": "libstagefright: config resource manager with secure codec co-existing policy.\n\nBug: 19620911\nChange-Id: I0d729782c1622f23e9c37b7a9231e58e3f807470\n"
    },
    {
      "commit": "d975e98aac096b8b0ed600f39c18630ba234ef7d",
      "tree": "4bd38609b632761d71440160b0e0449bdbf8dc2c",
      "parents": [
        "70c75d8c15707d5eade38fe3e622f8500c29556b",
        "37d8b27e5470d8243288a87e90871efd43f29606"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 19:33:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 07 19:33:37 2015 +0000"
      },
      "message": "Merge \"MediaHTTP: add more null ptr and init checks\" into mnc-dev"
    },
    {
      "commit": "37d8b27e5470d8243288a87e90871efd43f29606",
      "tree": "9a653e7901c7f91cdaf06bf71269f873ffc2797f",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 12:07:31 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 07 12:08:20 2015 -0700"
      },
      "message": "MediaHTTP: add more null ptr and init checks\n\nbug: 20912192\nChange-Id: I83cf59ff85fd8aa3a19a696ceb97cd8aa922b8ba\n"
    },
    {
      "commit": "831352e926c2896996df285b343cc06f39053499",
      "tree": "c204a60d9d2fd65633615565ceaaa4efab3323c6",
      "parents": [
        "5603d28707ef0f19b2b915756809424698e93d9c",
        "d7446564c3e469aea1bba5460ff1fb9441f9fc09"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 07 00:49:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 07 00:49:59 2015 +0000"
      },
      "message": "am d7446564: am 1e5670ab: am 296dc670: am d8e41553: am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u0027d7446564c3e469aea1bba5460ff1fb9441f9fc09\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d7446564c3e469aea1bba5460ff1fb9441f9fc09",
      "tree": "a458625c26498b84fbbfb53d7d583d64588d0616",
      "parents": [
        "4c85e16c9f7cbd9e9fa4713d62ed2c7f4da2f7d3",
        "1e5670abf9c1b714819ab6ec529a6bc19cbdacf4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 07 00:28:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 07 00:28:00 2015 +0000"
      },
      "message": "am 1e5670ab: am 296dc670: am d8e41553: am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u00271e5670abf9c1b714819ab6ec529a6bc19cbdacf4\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d8e41553b96432c4d4dae80fcc042b95fd9d27d9",
      "tree": "8dbbd8d07f670ca1c56a6519d80b38fb5f61b5eb",
      "parents": [
        "a05bd3c1cdff400ad92532b06d40ddc5c638c284",
        "bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "message": "am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u0027bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "d7ab7afa57ed1fa6fb9c4ce18ea0df3ec939c067",
      "tree": "ed0fd03c176ba5ae421795f4665d47faec653c52",
      "parents": [
        "eb58c6d9ee8eac81864aaecb38a1831014ebf152",
        "296fb13dd9b5e90d6a05cce897c3b1e7914a478a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 17:51:41 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 06 17:51:42 2015 +0000"
      },
      "message": "Merge \"Implement audio device callback\" into mnc-dev"
    },
    {
      "commit": "eb58c6d9ee8eac81864aaecb38a1831014ebf152",
      "tree": "842417df1ad2ffa57af8d59aa864612fd036bb67",
      "parents": [
        "a0cf6c4d7d13c73feef5b88760b52b18289b0db2",
        "ceffd8cc911bd2e685b525f838cd3d8198ab35cf"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed May 06 17:22:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 06 17:22:55 2015 +0000"
      },
      "message": "Merge \"Pass all DRM errors through ICrypto\" into mnc-dev"
    },
    {
      "commit": "296fb13dd9b5e90d6a05cce897c3b1e7914a478a",
      "tree": "d3ed4e6ff2902da6f556d038c71605c091b75f64",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:38:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 10:14:42 2015 -0700"
      },
      "message": "Implement audio device callback\n\nAdd class AudioSystem::AudioDeviceCallback notifying\nAudioSystem clients upon device selection change on a given\ninput or output thread.\nMaintain a list of installed callback per I/O handle in AudioSystem\nand call registered callbacks when an OPEN of CONFIG_CHANGED event\nis received on IAudioFlingerClient::ioConfigChanged().\nAdd methods to AudioTrack and AudioRecord to add and remove device\nchange callbacks.\nAdd methods to AudioTrack and AudioRecord to query currently selected\ndevice.\nioConfigChanged() events now convey the audio patch describing\nthe input or output thread routing.\n\nFix AudioRecord failure to start when invalidation is\nhandled by start().\n\nChange-Id: I9e938adf025fa712337c63b1e02a8c18f2a20d39\n"
    },
    {
      "commit": "ceffd8cc911bd2e685b525f838cd3d8198ab35cf",
      "tree": "8aa2467a1ce56b09aaa7725fb792d9dc551cd0d2",
      "parents": [
        "b408fa26c782c57272f11b46a235cca8c9ccb9be"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "message": "Pass all DRM errors through ICrypto\n\nPreviously only the detailed messages for vendor-defined DRM\nerrors were being passed.  This change allows detailed messages\nto be passed for any DRM error, including the ones defined in\nthe framework.\n\nbug: 20857014\nChange-Id: I72aa85b31ac852fb1fb6ad0a93f3309100b52c9d\n"
    },
    {
      "commit": "9f578d3297782be6de5373e171f3b4af49726709",
      "tree": "d6063a06edf2c17868195472d63869c069dbfbb8",
      "parents": [
        "c8a70d340f0ce610dfb8bd44d833708269484e99",
        "4cb668392ee0433462251afbee109405c6efacc8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 05 15:55:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 05 15:55:08 2015 +0000"
      },
      "message": "Merge \"AudioRecord keeps track of UID\" into mnc-dev"
    },
    {
      "commit": "4cb668392ee0433462251afbee109405c6efacc8",
      "tree": "50e324bd1af8951136ec9b7c4a7538e514490e80",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 01 18:34:17 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 05 02:04:33 2015 +0000"
      },
      "message": "AudioRecord keeps track of UID\n\nBug 20832981\n\nChange-Id: If5f3c61fae02d86b9d6fdf411711f854fd56c77d\n"
    },
    {
      "commit": "e2a2dfcbf0c9d6bb7139263ecf0d8e53b4ca1049",
      "tree": "8060421e6bb2732c1b84d0810f5e83a57a7d25ea",
      "parents": [
        "d291c222357303b9611cab89d0c3b047584ef377"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 12:36:13 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 19:18:49 2015 -0700"
      },
      "message": "MediaRecorder: implement persistent input surface APIs\n\nBug: 19127604\nBug: 19489395\n\nChange-Id: I7dd8015a8fe029f9867fcdb52322629c77eff50b\n"
    },
    {
      "commit": "d291c222357303b9611cab89d0c3b047584ef377",
      "tree": "953551d93d5a215cefb14470387ff7494c9b60e5",
      "parents": [
        "64da6f045b1a1d1b8f01391b6e37287f77f85d1e"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Apr 30 18:15:52 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 01 19:06:38 2015 -0700"
      },
      "message": "MediaCodec: implement persistent input surface APIs\n\nBug: 19127604\nBug: 19489395\n\nChange-Id: Idaf1cc9008016f66903e93907a676f54e342e1a3\n"
    },
    {
      "commit": "939270353bff5bc7497b0c77e203520b997268c9",
      "tree": "3138d9682c0449dfd2d66d46fa6a216bbf019b3f",
      "parents": [
        "cc85abcf4ac398dca240db356b8b4db052b415a4",
        "4c5a3675ed6b429dfaa2707acf2b3faf2808baf2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 21:49:38 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 01 21:49:39 2015 +0000"
      },
      "message": "Merge \"AudioTrack: reduce retrograde motion spew\" into mnc-dev"
    },
    {
      "commit": "cc85abcf4ac398dca240db356b8b4db052b415a4",
      "tree": "65f9eccab6b0d9b9f3dcee48e2c44326b0edbef4",
      "parents": [
        "0bbf8b213ad96051357e3ad6d6d2808bfa31a59a",
        "73e26b661af50be2c0a4ff6c9ac85f7347a8b235"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 19:10:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 01 19:10:26 2015 +0000"
      },
      "message": "Merge \"AudioSystem: refactor audio config cache and callbacks\" into mnc-dev"
    },
    {
      "commit": "73e26b661af50be2c0a4ff6c9ac85f7347a8b235",
      "tree": "7290cb83e5f7df830447fe2badf99c43e0afc020",
      "parents": [
        "054d9d3dea1390294650ac704acb4aa0a0731217"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 16:55:58 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:45:07 2015 -0700"
      },
      "message": "AudioSystem: refactor audio config cache and callbacks\n\nClean up implementation of audio configuration cache and\ncallback events from AudioFlinger:\n\n- Define class AudioIoDescriptor for audio input and output\nconfigurations outside of AudioSystem class.\n- Do not use void * but an AudioIoDescriptor as argument to\naudio config callbacks from AudioFlinger.\n- Remove unused configuration events.\n- Move AudioSystem audio input and output cache from static singletons to\nmembers of AudioFlingerClient subclass.\n\nChange-Id: I67c196c32c09ce2756af0755ee1fe631040c3270\n"
    },
    {
      "commit": "4c5a3675ed6b429dfaa2707acf2b3faf2808baf2",
      "tree": "b0697130f34c1957f26b84f74d00fb8455890fae",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 16:18:53 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 10:32:54 2015 -0700"
      },
      "message": "AudioTrack: reduce retrograde motion spew\n\nChange-Id: I96aced52b136ceea924aa3d9ef56374dd4c49784\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "3a474aa67fc31505740526dd249d96204c08bf79",
      "tree": "4db784ee57ffad037fa2ded86d0fd8b3a40173d5",
      "parents": [
        "a8df0b716bdfda1e10790e6f7297eeff83d2e52a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:07 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Apr 30 16:56:10 2015 -0700"
      },
      "message": "stagefright: support setting/getting playback/sync config in MediaSync\n\nBug: 18249558\nBug: 19666434\nBug: 20057497\nChange-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605\n"
    },
    {
      "commit": "5aab9254a5c4f1951c12216a71550ab95b4adeaa",
      "tree": "0680d656f421297bbac15a8ad9b7ed776c2d2d66",
      "parents": [
        "457e82586d51c6d360ce4feb4c1dff1a31dcb8d3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 14:55:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 21:58:56 2015 +0000"
      },
      "message": "AudioTrack: fix build\n\nUsing format %llu did not work for uint64_t on 64-bit systems!\n\nChange-Id: I727094e460141b9da3e433ceaa95e069dad948bc\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "dc0ac804721efff054ec9720d53e93ecca86cf5e",
      "tree": "8560f730cb37dddfccc6ea2a513d99889998e2c2",
      "parents": [
        "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
        "1b42097f38e72574ed853a35f4e8a66e4739c421"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 20:48:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 20:48:55 2015 +0000"
      },
      "message": "Merge \"AudioTrack: fix spurious retrograde messages\" into mnc-dev"
    },
    {
      "commit": "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
      "tree": "f69b635690cbc2cff9e5cfb8843e4473cc327208",
      "parents": [
        "1471e7a112aed5ff120c2b97bced9523ed39fe6c",
        "8c7e6dac6f5eb38cef627dab92eac8b38513450c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "message": "Merge \"audio policy: session routes continued.\" into mnc-dev"
    },
    {
      "commit": "8c7e6dac6f5eb38cef627dab92eac8b38513450c",
      "tree": "6aede3a6ac013462a117ffb181d93439525eebeb",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 17:37:00 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 12:43:06 2015 -0700"
      },
      "message": "audio policy: session routes continued.\n\n- Clear session routes when client process dies.\n- Enforce the route only when the requesting session is active.\n- Fix requested route not working if an output mix change is required\n(e.g forcing to SPEAKER when the default route is USB or A2DP).\n- Make sure all sessions sharing the strategy with a rerouted session\nhave the same route (needed for volume control consistency)\n\nChange-Id: I0ab347a8fb97e73e2c5965374544c5f4fe509ef1\n"
    },
    {
      "commit": "d641af3e9faf6c053ccbeea1bc20790021e57a11",
      "tree": "f2c1fa01f2321024396ac4bda949d74965a547f9",
      "parents": [
        "d707ac5a0494398cb1306ead0ba587034f610f30",
        "f613d42b12389335b2ecf06df18d0d095d6bfd44"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 30 16:43:17 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 16:43:21 2015 +0000"
      },
      "message": "Merge \"AudioSystem callback for dynamic policy mix activity\" into mnc-dev"
    },
    {
      "commit": "f613d42b12389335b2ecf06df18d0d095d6bfd44",
      "tree": "b36177007932b781d9db2bb973cb2feaab3cde13",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 23 18:41:29 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 29 17:54:12 2015 -0700"
      },
      "message": "AudioSystem callback for dynamic policy mix activity\n\nAdd method to AudioPolicyServiceClient for dynamic policy mix\n activity notification.\nPropagate notification to a dedicated callback.\n\nBug 20226914\n\nChange-Id: I37928ed38e15ea2b8fed022cccadeca8c4d6c876\n"
    },
    {
      "commit": "1b42097f38e72574ed853a35f4e8a66e4739c421",
      "tree": "e708293755e42bca48d47380b8b8568cfc3d2f1f",
      "parents": [
        "5f88cdae61079be7920aee166eaac4941f65fb9f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 22 10:52:21 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 29 23:36:01 2015 +0000"
      },
      "message": "AudioTrack: fix spurious retrograde messages\n\nThe retrograde motion was confused by some positions coming from\nthe DSP on offloaded tracks. So the retrograde check was moved up\ninto AudioTrack.cpp. This allows us to take advantage of the checks\nfor invalid positions based on timing.\n\nBug: 2047891\nChange-Id: Ifcad2349201443a7f1711347c203297100449536\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "eaa34703cb5f1acedb20cbcdff1ab79c11ff6857",
      "tree": "240ff03be0528d0abb96a8242baf960d5a8062c7",
      "parents": [
        "afc750aa3ac536067180f9714e34f626f8c981b3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ic8ae065dd912cb5ff130e8d78c98fd6bed4e11cc\n"
    },
    {
      "commit": "afc750aa3ac536067180f9714e34f626f8c981b3",
      "tree": "6a7f11f37a3ced6682a511f32a49e9e01ec0cbc9",
      "parents": [
        "1e2a0e6adc3d70879b00e5295c54a74209b71e1b",
        "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:34:40 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 29 19:34:40 2015 +0000"
      },
      "message": "Merge \"Respect the record audio app op - media\" into mnc-dev"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "4c3ba337bacce05165d37f63dfa0b7e845c391e0",
      "tree": "e65e3a9eb9e4ab52a37cc316d6e7aa48ef387f32",
      "parents": [
        "466dc8ed6ca6b7f585104806c48613dd34e608c9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 13:47:27 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 13:47:27 2015 -0700"
      },
      "message": "Check allocation\n\nBug: 20222446\nChange-Id: I2f366a907886cd65e12a6f260a2ec77af6fb7b41\n"
    },
    {
      "commit": "466dc8ed6ca6b7f585104806c48613dd34e608c9",
      "tree": "086bbd91d48e366377c02df8a65a5e2bad8675a6",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Apr 17 13:15:36 2015 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Apr 28 10:46:14 2015 -0600"
      },
      "message": "Explicit routing in AudioRecord\n\nChange-Id: I9cc5d54883a3e5c75d553fabb619fc8e49f4f9e5\n"
    },
    {
      "commit": "dae24729d0b3ced8c4a7d7f9b631e852f564db4f",
      "tree": "c48bf229b8ec7862e0fd6cebf373562b230eddfa",
      "parents": [
        "4275065e89b121fd2f9bd4e0440577348d5ce663",
        "532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Apr 28 03:18:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 28 03:18:37 2015 +0000"
      },
      "message": "Merge \"HDCP: buffer over flow check\" into mnc-dev"
    },
    {
      "commit": "532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72",
      "tree": "208f06d3e06f14286cd88a695b9a6da7106c24f7",
      "parents": [
        "11f88677e9a9405d2b5d7f7bf9b6eec035b6331d"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:38:17 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:39:12 2015 -0700"
      },
      "message": "HDCP: buffer over flow check\n\nbug: 20222489\nChange-Id: I3a64a5999d68ea243d187f12ec7717b7f26d93a3\n"
    },
    {
      "commit": "c721e71f4d7e3cd4fc9332fd55fb6942f54cec39",
      "tree": "d6dbd9af50ecfb1f8b9f0f1ecf3033920008ca8a",
      "parents": [
        "5e95559255d1abd62c78b308731ebe3991186e94"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri Apr 24 15:29:49 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Apr 27 21:22:13 2015 +0000"
      },
      "message": "DO NOT MERGE libmedia: add sub resource type audio-codec and video-codec.\n\nBug: 20559813\nChange-Id: If231cb44337ca7dc74c39fc3cd73e2b6f3cb85b8\n(cherry picked from commit d4c1f6b4ecfef7323422359fc38bd1edb1abf205)\n"
    },
    {
      "commit": "8f9dd872366f54b6260506c75c3d0cc3f9f73f81",
      "tree": "6b20eb7ca59c4c40936e27806f5d76bce005b146",
      "parents": [
        "1ac91ed2c67245ea5052182212463d3f0afe8b5a"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Apr 23 15:24:25 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Apr 23 18:03:30 2015 -0700"
      },
      "message": "mediaresourcemanager: add dumpsys support.\n\nBug: 20233206\nChange-Id: Ic253985e408b05b488e87cd5c50c0d619ac568ef\n"
    },
    {
      "commit": "983f2e02b342ef3ac4004471cbfd4cd8d5aecf7d",
      "tree": "7c2ec64cc3034b84348e96cfe120a9c87efe92e3",
      "parents": [
        "d54514d5e4b326e5dcaaf8b3f336ef31e447f355",
        "5a8a95de6dad1a3bcf3da5a37b35766e89086e13"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 18:47:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 22 18:47:33 2015 +0000"
      },
      "message": "Merge \"Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\""
    },
    {
      "commit": "5a8a95de6dad1a3bcf3da5a37b35766e89086e13",
      "tree": "64b82016eaef26f51b75470714172c06287c9c56",
      "parents": [
        "ea44f41bb142555e747cc11382296e94af99d312"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Sat Apr 18 14:47:04 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 10:57:24 2015 -0700"
      },
      "message": "Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\n\nUse this struct to handle the parameters for TimestretchBufferProvider all\nacross the system.\nAdd stretch mode and fallback mode to TimestretchBuffer Provider.\n\nChange-Id: I19099924a7003c62e48bb6ead56c785cb129fba2\n"
    },
    {
      "commit": "59cea2616269f34b1f3d046995efd8da42cd5549",
      "tree": "c2f165a35105142d715f36876ededb0311360938",
      "parents": [
        "eb204f82afd5519eb544bf8bee692e7152820c3b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 20 11:08:59 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 22 10:14:35 2015 -0700"
      },
      "message": "Add some sanity checks\n\nBug: 19400722\nChange-Id: Ib3afdf73fd4647eeea5721c61c8b72dbba0647f6\n"
    },
    {
      "commit": "493404d8c396e15ed73455acd39aa0f1940996e2",
      "tree": "a07080e7733732fd7273963cca1c93436b86b997",
      "parents": [
        "c9c3804a2caf3c0f96e7a8985f82db7ceef490df"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 15:07:36 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 22 08:12:53 2015 -0700"
      },
      "message": "audio policy: fix AudioTrack output device selection\n\nHave AudioTrack::setOutputDevice() set CBLK_INVALID flag instead\nof calling restoreTrack_l(). This allows restoreTrack_l() to be called in\na safe context.\n\nAllow device change while the AudioTrack is active by forcing a new\ndevice selection in startOutput() if the output route for this\nsession was changed.\n\nRemove some warnings.\n\nChange-Id: I2d921a63c9bfa0e122233645e2d6d39f95f5f17d\n"
    },
    {
      "commit": "f1063e2659cad01ec334a265c31734c63c319cc4",
      "tree": "9444deca08b86fec65754622ec06fbe551a06173",
      "parents": [
        "ee4e1b1a63758941460ae79a064249d3a5189443"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 15:19:42 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 17 15:20:03 2015 -0700"
      },
      "message": "libmedia: fix all warning, make warnings errors, use clang\n\nChange-Id: Ic00d2c5d0bbb1605e96666e25c9ccc22bea6d3ff\n"
    },
    {
      "commit": "0852843d304006e3ab333081fddda13b07193de8",
      "tree": "f60be26aad988e89bc135a86f6e4ae8853c69a49",
      "parents": [
        "3d66eb4128aebef31bb0fa44c4d53d6122294a26"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Apr 08 09:06:54 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Apr 16 19:01:15 2015 -0700"
      },
      "message": "stagefright: initial timed id3 support in hls\n\nChange-Id: I00a8a786b3f4b74742c34770edd94e937abe20a8\n"
    },
    {
      "commit": "71933d769c54dadb5d8618ccb1ae69a3926f890b",
      "tree": "35a881d80da4100792bad920b3d78f25cf9ba9e0",
      "parents": [
        "ff9863b206cd5d1e856dbfdf66bc85581aee7608",
        "26145643ce22d797b3b1675c82c47a2d8c79ecaa"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 16 20:12:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 16 20:12:07 2015 +0000"
      },
      "message": "Merge \"Work around lack of pitch adjustment in Timestretcher\""
    },
    {
      "commit": "c224ec53a17994fa97ab2f29304647c9f195c51c",
      "tree": "6086a1cf5720b82e7dc25b7ecd60af39d66c738d",
      "parents": [
        "f2326ac96366ec4d05f470cc4a0b407e7805bab7",
        "99f31604136d66ae10e20669fb6b5716f342bde0"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Thu Apr 16 17:06:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 16 17:06:42 2015 +0000"
      },
      "message": "Merge \"Unhide the android.media.[Media]DataSource interface.\""
    },
    {
      "commit": "26145643ce22d797b3b1675c82c47a2d8c79ecaa",
      "tree": "746a243e80e1ac95086b825999822cbdf2302c1d",
      "parents": [
        "c44111b22c26236cb0b32d3fbd1cc9fad3fb28ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 15 21:56:53 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 16 09:58:43 2015 -0700"
      },
      "message": "Work around lack of pitch adjustment in Timestretcher\n\nChange-Id: I3e057b97c250a826133248b6aa1ff9ed677d88df\n"
    },
    {
      "commit": "99f31604136d66ae10e20669fb6b5716f342bde0",
      "tree": "20e64f4f26533b37b087ce8656b1040b8189e24f",
      "parents": [
        "2f33dbc6ca08d45efea2df775c158e2a11e07ab6"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Fri Mar 20 13:06:33 2015 -0700"
      },
      "committer": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Wed Apr 15 17:12:22 2015 -0700"
      },
      "message": "Unhide the android.media.[Media]DataSource interface.\n\nThis allows apps to implement MediaDataSource, which is modeled on\nstagefright\u0027s DataSource, to supply media data to the framework. This\nwas already implemented for MediaExtractor, but it was renamed from\nDataSource.\n\nMediaExtractor, MediaPlayer and MediaMetadataRetriever each have a new\noverload: #setDataSource(android.media.MediaDataSource)\n\nOnly NuPlayer supports this new data source.\n\nThe change introduces:\n * IDataSource:        The binder interface for DataSource.\n * JMediaDataSource:   The native counterpart to the java interface. It\n                       implements IDataSource.\n * CallbackDataSource: A stagefright DataSource that wraps an\n                       IDataSource.\n\nChange-Id: Ib3c944b49cc8a792c8eb9c85e5015c07f298ebc1\n"
    },
    {
      "commit": "554a277d4e42a3d3df3d90ba0e7dfa2d31690e32",
      "tree": "3647500470a7eca8095102a0e2818acb848cdf6a",
      "parents": [
        "3249558196082087fb8bd0a847ef5c6000c8b925"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:29:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 15 23:15:38 2015 +0000"
      },
      "message": "audio policy: add binder calls for audio source control\n\nAdd binder methods to IAudioPolicyService to control activity\nof external audio sources (e.g FM tuner).\n\nChange-Id: I2008308a6a996baeae502b68a790d87281efe2ff\n"
    },
    {
      "commit": "cfdd52423cee9efea73023feeaa74279ebd45b7c",
      "tree": "154c4ea34b3fc95dbde268fb24be2f2915438c78",
      "parents": [
        "5e1c007038df74b389018e762d5059cacecff59e",
        "de80105c3f2db0eabd47640c49387ea3b44d4782"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 15 21:11:49 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 15 21:12:01 2015 +0000"
      },
      "message": "Merge \"AudioPolicyManager: notification of dynamic policy mix activity\""
    },
    {
      "commit": "de80105c3f2db0eabd47640c49387ea3b44d4782",
      "tree": "9775c7bbe30ef1ab13a888def8531cb0f87b1756",
      "parents": [
        "079e121934106860af5ff5491bd3884453d1fdb3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:10:14 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:20:20 2015 -0700"
      },
      "message": "AudioPolicyManager: notification of dynamic policy mix activity\n\nImplement non-stream type specific ref counting in output\n  descriptors to keep track of mix activity.\nNotify audio policy client of mix activity changes.\n\nBug 20226914\n\nChange-Id: Iec939cb640c58056f88947b611d23b4bb6d8a11b\n"
    },
    {
      "commit": "b23cabdb71b98dc5e852f5d06be271696fea92c7",
      "tree": "5fd928f892970e2d905fdfcc502a0204d62a149d",
      "parents": [
        "9e6955a19bf77ebf27b770e910efbe1ebf1ceac0",
        "551b5355d34aa42890811fc3606d3b63429296cd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 14 15:02:11 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 14 15:02:12 2015 +0000"
      },
      "message": "Merge \"AudioRecord::obtainBuffer() can return nonContig like AudioTrack\""
    },
    {
      "commit": "551b5355d34aa42890811fc3606d3b63429296cd",
      "tree": "a55a6f457f11025f653241a58d475fe6a8269be5",
      "parents": [
        "7d669b3551c20109f5544455ca1555499693e1e1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 11:30:28 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 13 18:02:09 2015 -0700"
      },
      "message": "AudioRecord::obtainBuffer() can return nonContig like AudioTrack\n\nAnd fix error handling in both AudioRecord and AudioTrack.\n\nChange-Id: I4853d736cc6d2c05de5b18b0eac62716edfa62ec\n"
    },
    {
      "commit": "9e6955a19bf77ebf27b770e910efbe1ebf1ceac0",
      "tree": "04fbb621d9f9262bdec827d80f9df998a48f90ff",
      "parents": [
        "5795cb168634680fd5c835849c8fcf48dd6f532b"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Mar 26 13:52:57 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Apr 13 18:01:51 2015 -0700"
      },
      "message": "media: handle overrides and measure max codec instance.\n\nBug: 19620911\nChange-Id: I68d5919284700f37ccc6c6b9f96cd87ccdd40e6a\n"
    },
    {
      "commit": "4c1efbc76f1dfeb9427617e451042a12bfb59ad3",
      "tree": "43c39c7172b3cfbbc26678a5233702a011ef27b3",
      "parents": [
        "c255757c795e5db87bafa6609c4ae052cf38b45b",
        "1849570240443d1f75775c205fa658f7070849c6"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 10 21:03:23 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 10 21:03:24 2015 +0000"
      },
      "message": "Merge \"Add a method to associate MediaDrm session with MediaCrypto\""
    },
    {
      "commit": "1849570240443d1f75775c205fa658f7070849c6",
      "tree": "86ad28892b0e8b49c8666ad39e340234c610e709",
      "parents": [
        "2fb25c873e1a7f346bd8c7c072a85ca6a74b0e95"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 10 04:10:59 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 10 04:10:59 2015 -0700"
      },
      "message": "Add a method to associate MediaDrm session with MediaCrypto\n\nPreviously, to associate a MediaDrm session with MediaCrypto,\nthe MediaDrm sessionId was passed as initData to the MediaCrypto\nconstructor.  This is not ideal for two reasons: it\u0027s pretty\nobscure and you can\u0027t change the association without tearing\ndown the MediaCodec/MediaCrypto and starting all over.  Use\ncases like key rotation require being able to update the\nMediaDrm session post-construction.  This CL addresses both of\nthese issues.\n\nbug: 19570317\nChange-Id: Ieb32d04d61742fc1dee2105dd904690d44c46c7b\n"
    },
    {
      "commit": "7d014e50b3acd60e73ed7d7a74dc58485c7a413c",
      "tree": "d2d5a07889b721c5d775c9da8c9dbc0531d19173",
      "parents": [
        "e62e16371b6c2f33072b3345e1d1853673b9a3d8",
        "8edb8dc44b8a2f81bdb5db645b6b708548771a31"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 10 03:28:12 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 10 03:28:12 2015 +0000"
      },
      "message": "Merge \"Add playback rate to AudioTrack\""
    },
    {
      "commit": "8edb8dc44b8a2f81bdb5db645b6b708548771a31",
      "tree": "663bda0f8a3d43894fa6d3d3f4283ed0df427f03",
      "parents": [
        "c5656cc900aeb4a705e27508dd82c70030a97709"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 26 19:13:55 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 18:49:15 2015 -0700"
      },
      "message": "Add playback rate to AudioTrack\n\nBug: 19196501\nChange-Id: I6411e1d3ce652b711a71a6d9df020cb5f60d4714\n"
    },
    {
      "commit": "03763a9573fcfdd0f85dd9ac0203e7da525a6c98",
      "tree": "cf48ab8ce281938ef7440a3ad67664cbbd628a39",
      "parents": [
        "31ffe45a22b72ee5d25bb4932d0525e90dbc19fe",
        "c481b5012a5f6cf72e5e93b36f1ed4c9169916f2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Apr 09 17:47:46 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 17:47:47 2015 +0000"
      },
      "message": "Merge \"Pass crypto source data using a shared buffer\""
    },
    {
      "commit": "c481b5012a5f6cf72e5e93b36f1ed4c9169916f2",
      "tree": "bbb7920204199b43cd24075d48b8fa387a43059f",
      "parents": [
        "e41b5f31148f9cfb7316295c900c7d3c695510b2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 06 18:21:05 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 08 18:33:59 2015 -0700"
      },
      "message": "Pass crypto source data using a shared buffer\n\nMediaCodec was using a binder transaction buffer\nto pass encryption source data for protected content.\nOn some 4K content, the max binder transaction buffer\nsize was being exceeded.  This change uses a shared\nbuffer for the encryption source data instead of a\nbinder transaction buffer, which avoids the problem and\nmay be more efficient.\n\nbug: 20027687\nChange-Id: I36a24ebf600d7e1064b78e48b167fdc29b2c65e9\n"
    },
    {
      "commit": "6770c6faa3467c92eabc5ec9b23d60eb556a0d03",
      "tree": "45470127b227dbda5a346bb1902f92f8998c25bb",
      "parents": [
        "73c02e4277b399c2ec1555d32b6ad5df23bb83dc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 07 13:43:36 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:58:56 2015 -0700"
      },
      "message": "Enable 8 bit and float pcm record formats for AudioFlinger\n\nUpdate sampling rate handling as well.\n\nBug: 19570772\nChange-Id: I872248e64c0578b2e48869a68fee0d51bd0640c3\n"
    },
    {
      "commit": "aa9811945f575614b3482d09e4d969792701cebb",
      "tree": "1744aa567efe78c3062ec80da19277d96def0725",
      "parents": [
        "41efeb2b477066d96ad34a048f34fb6fb34213ec"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Sat Mar 21 09:55:15 2015 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Wed Apr 08 09:51:07 2015 -0700"
      },
      "message": "Adding explicit routing API to AudioTrack\n\nChange-Id: I40c048c7644c46f4e4f7103875206c0785c4b1dc\n"
    },
    {
      "commit": "002135d149d8604e972d1b353d768f293fbce15f",
      "tree": "2b574bf6a084149bb75975e372b2f0516bf2276c",
      "parents": [
        "aa80951a578c1843708227b63456474f99e5e868",
        "d47dfcb5a2e5901c96fc92662cec7aa30f7f8843"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Apr 03 18:48:27 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 18:48:28 2015 +0000"
      },
      "message": "Merge \"HLS: misc bug fixes\""
    },
    {
      "commit": "d47dfcb5a2e5901c96fc92662cec7aa30f7f8843",
      "tree": "ac077cfad563e38bf91e4b2c95e7e28056bf7439",
      "parents": [
        "ac41a6f253a69671f6e018fcc84daf0030615ca9"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Mar 27 15:53:45 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Apr 02 16:31:09 2015 -0700"
      },
      "message": "HLS: misc bug fixes\n\n- fix no target-duration case\n\n- fix for audio-only \u003c\u003d\u003e audio/video switching\n\n- disable audio-only variants if there is at least\n  one variant with video\n\n- fix mpeg2ts PTS wraparound when bandwidth adapting\n\n- tweak up/down switch marks\n\nbug: 19567254\n\nChange-Id: Ib46144203c56dfc96eccd6ddaa3867e8a4f2c6a9\n"
    },
    {
      "commit": "f75c2fef14354024ec27bff1444f9e50b5ef55a9",
      "tree": "55e9f67a818b544ce272585969121ce914f1b31e",
      "parents": [
        "74fa6ee5904fa48f7f3caddcf0d96cd9f5575b39"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 13:49:15 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 21:13:57 2015 +0000"
      },
      "message": "IAudioFlinger: add checks on binder calls\n\nLimit number of ports and patches listed by\nLIST_AUDIO_PATCHES and LIST_AUDIO_PORTS.\n\nAlso fix typo causing wrong pointer to be used when writing to Parcel.\n\nBug: 19573085.\nChange-Id: I41a9c710e45738a4f11990160587856c429a4646\n"
    },
    {
      "commit": "b28753e19550e5051cd02e6af72ab06e4eff04e0",
      "tree": "5c9b7dabb3d4abe6aa20bf512ec025eb23d1ca04",
      "parents": [
        "d4d55cdf31a3faa619bfa043f5b0f170f6ffd139"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 01 13:06:28 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 01 16:53:33 2015 -0700"
      },
      "message": "audio port: support multiple clients\n\nAdd support for more than one audio port callback client per process.\n\nChange-Id: I657c4fc28d5d2d993307551e3e69567dc60196cb\n"
    },
    {
      "commit": "5cbb5785a58655e21f5f7805274b8c78b986216b",
      "tree": "beb100fe401a58aea703ba57875c81dba7133d38",
      "parents": [
        "91e5e043d766e39b0840f2ca2e658e2fe58987e7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 27 18:39:59 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 31 15:31:40 2015 -0700"
      },
      "message": "Reject sample rate changes for fast tracks\n\nThis is needed for a SoundPool fix.\n\nBug: 19970735\nChange-Id: I46b69e059aabf0d06b16b31ea436bb71f7146750\n"
    },
    {
      "commit": "82fd850ece75f53110d5c04b49646e5035b8cd24",
      "tree": "3c0c55403f74bd87955e1570faf33a4b52a91ff4",
      "parents": [
        "f1300d31fe80c8e14cf2bbca6c7b6768110cd5ba",
        "414af268fbc23e877680e084aeb64a4bed79c0a6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 22:00:47 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 25 22:00:47 2015 +0000"
      },
      "message": "am 414af268: am c42c4b52: am 424324b3: am 2fdd16b3: DO NOT MERGE - audio policy service: fix possible memory overflow\n\n* commit \u0027414af268fbc23e877680e084aeb64a4bed79c0a6\u0027:\n  DO NOT MERGE - audio policy service: fix possible memory overflow\n"
    },
    {
      "commit": "c42c4b526422fada02f3522a08143f738e9e60af",
      "tree": "055d8f09c85491920c54dced2498f2dc1c4103cf",
      "parents": [
        "faefd08b11d1f4955b5da6c10e1a9be1a5cbefad",
        "424324b327cc0b022ff8d10e03158b4594489ee7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 20:25:03 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 25 20:25:03 2015 +0000"
      },
      "message": "am 424324b3: am 2fdd16b3: DO NOT MERGE - audio policy service: fix possible memory overflow\n\n* commit \u0027424324b327cc0b022ff8d10e03158b4594489ee7\u0027:\n  DO NOT MERGE - audio policy service: fix possible memory overflow\n"
    },
    {
      "commit": "2fdd16b3cbe1c1e53d1c4b305f4c0174b995ad1a",
      "tree": "24e2230b0bd1fb18c7b37effe1af168757326959",
      "parents": [
        "8e2b445fabd05132de57226de71c7860a5391954"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 06 10:44:24 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 18:55:09 2015 +0000"
      },
      "message": "DO NOT MERGE - audio policy service: fix possible memory overflow\n\nAdd limit on number of audio ports and patches requested by\nlistaudioPorts() and listAudioPatches().\n\nBug: 19261727.\nChange-Id: I21dfdf11cf805734cc3b7b2a85762c5598f60580\n(cherry picked from commit 1d670b11313250442455a22f1056ad649d607fb2)\n"
    },
    {
      "commit": "1147314379fccebdb072cd0c1a246b505839a2b0",
      "tree": "2c91d537bfc2ade4684afec9d45f27197b639538",
      "parents": [
        "957af4cef721c1eec1606850e77ad2ef1fd0eb0a",
        "b7fbf7ecc6b034243ec64f79f3113675b5e3c941"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 24 21:48:03 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 21:48:04 2015 +0000"
      },
      "message": "Merge \"AudioRecord TRANSFER_OBTAIN can be used with FAST flag\""
    },
    {
      "commit": "957af4cef721c1eec1606850e77ad2ef1fd0eb0a",
      "tree": "3c05978c8a584181355db31052116afcda8db5f4",
      "parents": [
        "343dad3c1ffdd780bbf247ceebb1f2fd344a5d51",
        "3622cdff65f34a99d2f55936a895387ad41510ce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 24 20:41:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 20:41:38 2015 +0000"
      },
      "message": "Merge \"AudioRecord::read() can be non-blocking to match AudioTrack\""
    },
    {
      "commit": "82ceac025459b5b8887441d709081ec29c6b9416",
      "tree": "6400948366e9d51774601a03d149a4ba7b33e2cb",
      "parents": [
        "21b51b61ee52e6aa74d98b138d3dd4f0e17b1441",
        "bfd318402924414fbde4d31c9d23cc423f10b630"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 24 19:42:30 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 19:42:31 2015 +0000"
      },
      "message": "Merge \"set() in AudioRecord and AudioTracks needs no lock\""
    },
    {
      "commit": "ebb80468d8e31e22b867744d86b57bd4bc3186fd",
      "tree": "1871edf0c2c023d86ed394a66a0e63afb2a49fd5",
      "parents": [
        "6ce2ed7e9d003c4580e2813d657660ef18865df6",
        "231c3d169ad029689f9d688b68179af7e96b8d78"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Mar 24 16:47:09 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 16:47:10 2015 +0000"
      },
      "message": "Merge \"media: add ResourceManagerService\""
    },
    {
      "commit": "ec648447b7dcab701c436a54bd38a1abd8037be1",
      "tree": "a83bc7a008f5671316e18095b15f9fb7b746fd81",
      "parents": [
        "4c36d6f48f4eecacc148317f775f65961a4f03d2",
        "d072c909d87f8150433860f6de4c11df6e09e2f9"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 24 00:05:43 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 00:05:44 2015 +0000"
      },
      "message": "Merge \"Report key request message type for unprefixed EME\""
    },
    {
      "commit": "231c3d169ad029689f9d688b68179af7e96b8d78",
      "tree": "09dbf8d4dc47f5698c08190f498357b455a396c7",
      "parents": [
        "84b784dd4f340331d36b1be3de05a6c814d9795c"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed Mar 11 15:10:32 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Mar 23 17:02:28 2015 -0700"
      },
      "message": "media: add ResourceManagerService\n\nBug: 19620911\nChange-Id: Iea173d310d31781bc50effe3d9bd6553cb5139eb\n"
    },
    {
      "commit": "3622cdff65f34a99d2f55936a895387ad41510ce",
      "tree": "c6af21a8fb7d4252d0ac78e542bb1baa5ae29f17",
      "parents": [
        "4c36d6f48f4eecacc148317f775f65961a4f03d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 10:58:21 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 14:53:01 2015 -0700"
      },
      "message": "AudioRecord::read() can be non-blocking to match AudioTrack\n\nChange-Id: I23b9466b81ab6037d0bccd5e6f5974b7bd4aeacb\n"
    },
    {
      "commit": "bfd318402924414fbde4d31c9d23cc423f10b630",
      "tree": "35662fc06a14886bfcb74cfc6dbdf274a3497ee7",
      "parents": [
        "4c36d6f48f4eecacc148317f775f65961a4f03d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:01:44 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 14:52:03 2015 -0700"
      },
      "message": "set() in AudioRecord and AudioTracks needs no lock\n\nChange-Id: I9d61b3d117e9b21fbbfad772d8981a5abb8fafae\n"
    },
    {
      "commit": "b7fbf7ecc6b034243ec64f79f3113675b5e3c941",
      "tree": "c90e057b2756c80dd371adc82e5431bb6e044236",
      "parents": [
        "4c36d6f48f4eecacc148317f775f65961a4f03d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 18 12:57:28 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 14:50:42 2015 -0700"
      },
      "message": "AudioRecord TRANSFER_OBTAIN can be used with FAST flag\n\nChange-Id: I001ba1a88150dddf79d99baf5927f31799745eef\n"
    },
    {
      "commit": "4c36d6f48f4eecacc148317f775f65961a4f03d2",
      "tree": "5f0cdb1359376f0483d5627551f5e2a210de7ad2",
      "parents": [
        "4408d8ab70d3385ac043d0f9a210a971c3a570c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:05:01 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 12:31:57 2015 -0700"
      },
      "message": "Logging\n\nMove log of latency to where it is first computed.\nLog more parameters when a fast track is denied by client.\nLog session ID in destructor.\nRemove obsolete ALOGV that were for debugging a particular problem.\nLog more parameters of set().\n\nChange-Id: I0156bceaf397f2faa053214572c57136705685ee\n"
    },
    {
      "commit": "4408d8ab70d3385ac043d0f9a210a971c3a570c2",
      "tree": "abe90256407c6c21e2a27c15288ec04fa721e25c",
      "parents": [
        "d1e85c354bf08cbf7fb7619f91bda1c416b40627",
        "7ccdaad38054474b1d84b7c37ceffd98e9df354d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Mar 23 18:55:48 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 18:55:49 2015 +0000"
      },
      "message": "Merge \"Fix position when restoring streaming audio track\""
    },
    {
      "commit": "138d6f9b0b77d94773a8a29d3c5bdb78f38ee142",
      "tree": "e1037f06d855663b9f9521985aea6fcf49171600",
      "parents": [
        "b882e936ead71ee407a5d6f1e7194115fc13c410"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 10:54:51 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:03:16 2015 -0700"
      },
      "message": "Update AudioTrack code to match AudioRecord\n\nsession ID check\nbuffer error code check\n\nChange-Id: I092a61adfd249122f9127dceedf67c0a3bdcfe7b\n"
    },
    {
      "commit": "5014c94c1bbac4a4284576b0015ba75145237593",
      "tree": "c097348f29dcaf33b3fbd56c330ca9b7ab53b48a",
      "parents": [
        "05163541326f51cefda91df5127d378c20b5a73f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 10:06:37 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:03:03 2015 -0700"
      },
      "message": "AudioRecord::releaseBuffer() buffer is const *, like AudioTrack\n\nChange-Id: If09689a8411392281ad06fcf781f3198941c642d\n"
    },
    {
      "commit": "32860f77787f41abac08afdfc2592272ccc31bcb",
      "tree": "330b65ddca5dd7b541565b67944e739f5dc0fc8e",
      "parents": [
        "40bc906252974d0b389ae4a147232d0c9a97193f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 08:55:18 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:59 2015 -0700"
      },
      "message": "Deprecate AudioRecord::getInput() and AudioTrack::getOutput()\n\nDoes not completely fix the bug, but is a step in the right direction.\n\nBug: 12593118\nChange-Id: Id591cd700ab58fd927ae44c71c81dac55b5cac2d\n"
    },
    {
      "commit": "40bc906252974d0b389ae4a147232d0c9a97193f",
      "tree": "95301839473e4c0d3be9ef1bd2e8c1d3677964a6",
      "parents": [
        "ae4b879d04c4b07c62241a8f507c8dce11e628e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:09:33 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:57 2015 -0700"
      },
      "message": "namespace does not need a closing semicolon\n\nChange-Id: Ie8f9d42fc061f6d558f23b98414e04eb3d14b376\n"
    },
    {
      "commit": "ae4b879d04c4b07c62241a8f507c8dce11e628e4",
      "tree": "dc9dbff427144ad7d6b18f7ba65eb5720a8dadc7",
      "parents": [
        "a9757af8a140a1d5ae261c22f9d7eebef99cbe96"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:04:21 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:54 2015 -0700"
      },
      "message": "Declare and initialize in one statement\n\nChange-Id: Ie8593692907e67558f9d7654c9a4bf8cbce99bd8\n"
    },
    {
      "commit": "d2027336b45f524a196403d351ec317782793792",
      "tree": "88b2d938d53d20c4caa1cd82a69d52dbcdbdaefd",
      "parents": [
        "6991ed25d8b5c2f75325ccd7cc522762da6f2b09"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 08:59:18 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:50 2015 -0700"
      },
      "message": "Whitespace\n\nChange-Id: I4640be948ad3caff0eb7525991398a1353e4bfe6\n"
    },
    {
      "commit": "17ea1351633d4f5e4f9eafd0778eb8b59fa30f10",
      "tree": "98815310f51d9c40356f8ab8ef44bd1bfe010bb2",
      "parents": [
        "d198b85a163330b03e7507c9e8bfeb5f4d958a6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 08:54:17 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:45 2015 -0700"
      },
      "message": "Update AudioRecord comments to match AudioTrack\n\nChange-Id: I6c3620c60c0ba159e4688b42de4ec8b91920e048\n"
    },
    {
      "commit": "7ccdaad38054474b1d84b7c37ceffd98e9df354d",
      "tree": "4c6c60bae9e890801c4c3486cc2836543e6f71af",
      "parents": [
        "0e4421286b92a81e952f53210227adbf05d97c25"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 00:38:32 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 00:38:32 2015 -0700"
      },
      "message": "Fix position when restoring streaming audio track\n\nBug: 19802225\nChange-Id: I19ca7836bc89627f6cead4961641b94c6b27b5f6\n"
    },
    {
      "commit": "803b3e558022c6d0eb069308339dc84e6e8035dc",
      "tree": "ffae05f0ba870ac1f7b704a7309542444db623a4",
      "parents": [
        "377165c24968b044faccaf366a2377fa32143e2f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 18 23:26:55 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 18 23:33:44 2015 -0700"
      },
      "message": "Event driven wake for AudioRecordThread notification changes\n\nUsed for setMarkerPosition and setPositionUpdatePeriod.\n\nChange-Id: Iedd1be8725dea32bdba6908b78c5166780a66fec\n"
    },
    {
      "commit": "377165c24968b044faccaf366a2377fa32143e2f",
      "tree": "288f92e8a4368d68af7edebda91dd27d96c6b328",
      "parents": [
        "a1a847a509c5670276568d9945509677d92507ed",
        "fb7df2c355aad453f1978207e4116b2d4a61f34b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 17 22:55:46 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 17 22:55:47 2015 +0000"
      },
      "message": "Merge \"Fix periodic notification timing error for AudioRecord\""
    },
    {
      "commit": "d072c909d87f8150433860f6de4c11df6e09e2f9",
      "tree": "57ddf1e47d3ce322e10214991e01b509aeeb1155",
      "parents": [
        "eb0ee0e842d3b8294aa6c0b797eaf7aff3fd2f89"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 16 13:39:29 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 16 15:39:03 2015 -0700"
      },
      "message": "Report key request message type for unprefixed EME\n\nbug: 19771299\nChange-Id: I02f0a4532b5ea8a7e680d71f45ac0da06879f3d6\n"
    },
    {
      "commit": "f59497bd3c190e087202043de5450ef06e92b27d",
      "tree": "52ff88a5a4bd358358850e0ca16d0f9527fded4e",
      "parents": [
        "802a568f77b9a372537e4216b2a7cbb203958a87"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 26 16:35:47 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 13 16:22:16 2015 -0700"
      },
      "message": "Update comments\n\nChange-Id: I37d3c4ce22b74fe8581a886fe5a7f9fef8266dad\n"
    },
    {
      "commit": "fb7df2c355aad453f1978207e4116b2d4a61f34b",
      "tree": "340a57f10bb7ae8a5c1b47cc0a799f949d73eead",
      "parents": [
        "1a86a8adbf4ab43a6aed2c3c8aa0830c001adb77"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 13 15:55:18 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 13 16:00:53 2015 -0700"
      },
      "message": "Fix periodic notification timing error for AudioRecord\n\nChange-Id: I768d8a30c6845372ad7c306ed1bc0ec030ae1804\n"
    },
    {
      "commit": "c6bd5db9d9cf4bba1649b5b7ddea2d23f5de23a9",
      "tree": "11d3794ef66c44ae96cba25994b3c78f7e7a4e71",
      "parents": [
        "d4db9dcd7d29234893d580c329f23242197fe664"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 09 16:29:33 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 09 23:59:31 2015 +0000"
      },
      "message": "fix flush on HW A/V sync tracks\n\nFix mismatch between track flags on client and server side\nwhen HW A/V sync is requested.\n\nThe audio track was connected to a direct output by the audio policy\nmanager but the client failed to set the direct flag when creating\nthe track resulting in the direct flag not being set in audio flinger.\n\nBug: 19665934.\nChange-Id: I0a5257b20bf76c9c4d89bc2ad9b44777b81f13bf\n"
    },
    {
      "commit": "1dfe2f9c2d03fc8d0ed0cdfe0b9fb894bc0bcc11",
      "tree": "1863bd0a9a9d1c0a0ab2055e345d9f86b9986151",
      "parents": [
        "b46f394a85d704dd05287cf9bb77cf86e3c02a38"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 12:03:14 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 14:19:35 2015 -0700"
      },
      "message": "Allow TRANSFER_OBTAIN to be used for fast tracks\n\nChange-Id: I8fa20c26f076567b38210af4a680fe1cb2eacee4\n"
    },
    {
      "commit": "b46f394a85d704dd05287cf9bb77cf86e3c02a38",
      "tree": "b6f8c4c2d413ca71ef3b2ca0c5a32c97d7959979",
      "parents": [
        "54a8a456c2b4b382b3ffe3d99e40703df79c0717"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 12:00:30 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 14:17:25 2015 -0700"
      },
      "message": "AudioTrack::obtainBuffer() now returns number of non-contiguous frames\n\nChange-Id: I1f61d7e3d057c3254babe456b4aa0f6a1809da55\n"
    },
    {
      "commit": "54a8a456c2b4b382b3ffe3d99e40703df79c0717",
      "tree": "3ddae33bf1e144cfa93b9c6ee43bcc7d97ba80b3",
      "parents": [
        "3f02be2ceeaa4b67dc0b1a81aebcfa049276fad8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 12:03:00 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 14:13:15 2015 -0700"
      },
      "message": "AudioTrack::releaseBuffer parameter is const *\n\nChange-Id: I31ac20863107de05b83cd7f8cd7dd61bed98e456\n"
    },
    {
      "commit": "3f02be2ceeaa4b67dc0b1a81aebcfa049276fad8",
      "tree": "185789eccf36d1b1bd892755ada9471258267a48",
      "parents": [
        "f9d19514b3e620b6339c98a442da833a702915ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 11:59:04 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 14:13:10 2015 -0700"
      },
      "message": "AudioTrack obtain/release buffer comments\n\nChange-Id: I0eb178d1ab4eea7f72f4c55852c19b216ca55f5f\n"
    },
    {
      "commit": "d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634",
      "tree": "6e1effbb661cd90a1c09aed0db9cc44cedaf1544",
      "parents": [
        "9060199701c97b290aa4a4184d147e0311ab8897",
        "0e48d25606c82def035ad10a5b3923767a765cdd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 28 00:38:24 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 28 00:38:25 2015 +0000"
      },
      "message": "Merge \"Change AudioTrack resampling buffers from 3 to 2\""
    },
    {
      "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"
    }
  ],
  "next": "0e48d25606c82def035ad10a5b3923767a765cdd"
}
