)]}'
{
  "log": [
    {
      "commit": "5f7e55ea443c80ef8b6173efd1c2551e07309b0a",
      "tree": "4cd31563d1b3922b7b04ae6ced11eb8c0d918399",
      "parents": [
        "ed68d9acdd5eae0ca6a3a6eebb99c104784707e4"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Aug 24 14:47:25 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Sep 06 12:33:35 2012 -0700"
      },
      "message": "Add a small hook to support gapless in AAH.\n\nChange-Id: Ie07eca6b45142bdd83412ee0e38d732a4c355630\n"
    },
    {
      "commit": "56cd317a35a18ba5c40b344f0a5bf436546246a1",
      "tree": "2c3eb9ae3389801959a7679b354f0abb66d8d1b6",
      "parents": [
        "3e2e7a945cf0239b2f021294fc9786958f389ef9",
        "ced24b36bbeed1ddd086a9304a9639c04ffe0962"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 06 10:15:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 10:15:31 2012 -0700"
      },
      "message": "Merge \"Update remote display API.\" into jb-mr1-dev"
    },
    {
      "commit": "ced24b36bbeed1ddd086a9304a9639c04ffe0962",
      "tree": "d9da77d64098b29ef571a3d6c12c7fe9a6d8e8cf",
      "parents": [
        "28169b107327b5db58877babf6993f0eb109c58a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "message": "Update remote display API.\n\nRenamed disconnect() to dispose() to emphasize the fact that\nthis method is intended to clean up the IRemoteDisplay\ncompletely, not just temporarily disconnect the current client\n(which might be useful someday).\n\nOther minor tweaks.\n\nChange-Id: I1209639eb0cd8af09c724206642d7e52aab48257\n"
    },
    {
      "commit": "ccd07716d105125b2eb2f1280b8c3fe9f57e78f3",
      "tree": "2c5ba74d5894a575f4100a84c75d7125fc5c7873",
      "parents": [
        "28169b107327b5db58877babf6993f0eb109c58a",
        "1e9ee018c6fa906c99270616456c32f0bb30c9c0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 05 16:22:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 05 16:22:17 2012 -0700"
      },
      "message": "Merge \"Fragmented mp4 extractor\" into jb-mr1-dev"
    },
    {
      "commit": "1e9ee018c6fa906c99270616456c32f0bb30c9c0",
      "tree": "6428e0c409971ed90ee409efc5776e8c7b7ebb25",
      "parents": [
        "62a1904e6beaa8848eddd2b635053536fbe5e804"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 28 15:09:49 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 05 14:22:07 2012 -0700"
      },
      "message": "Fragmented mp4 extractor\n\nStill experimental. Set property \"media.stagefright.use-fragmp4\" to true to\nenable.\n\nChange-Id: I210b9c5b5164b5c5eefc31309845ee881ac7db8e\n"
    },
    {
      "commit": "2013a54981d4ffb036dff279b88cc9f08c0ee1c2",
      "tree": "0be5853ec89f5d075763a8228513a6e98a27a30e",
      "parents": [
        "62a1904e6beaa8848eddd2b635053536fbe5e804"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 04 21:38:42 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 08:47:36 2012 -0700"
      },
      "message": "Implement remote display service stubs.\n\nChange-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01\n"
    },
    {
      "commit": "7f06639d375c44f260e00aa5e18cd883624b38bf",
      "tree": "bd7795b8ffae89845afcb222bcd7821ef7fe634a",
      "parents": [
        "8a61c22ecc2a38fffe978be210fe3f0a70efb71c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 16:30:49 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 16:47:21 2012 -0700"
      },
      "message": "Configure the SurfaceMediaSource to emit the same number of buffers\n\nas the video encoder allocates for its input. Do this before connecting\nthe bufferqueue through surface flinger.\n\nChange-Id: Ibc81db1359afe2d88fdb75b23fadae65c8a6f7cc\n"
    },
    {
      "commit": "3e76a27a5e57435369794016494093b5b1b29513",
      "tree": "06f55d6c53f90c3e1f2521b4031db88f5fb8e8d1",
      "parents": [
        "7468828497435ed88534508537714149aa66ead3",
        "330accb419ebfb1d8b9d7dcc3b616f56f737f29a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "message": "Merge \"Added an additional virtual method IStreamSource::flags().\" into jb-mr1-dev"
    },
    {
      "commit": "330accb419ebfb1d8b9d7dcc3b616f56f737f29a",
      "tree": "0ab51d659fd82dee0af222f934eb41f1af3a2a41",
      "parents": [
        "b2562f6faf7b1061f617586801597e0b6b4400b5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "message": "Added an additional virtual method IStreamSource::flags().\n\nChange-Id: I89e62d84328e12f08c8f73cbfd53cfb42569de97\n"
    },
    {
      "commit": "2662ac9220c9e07cd343e78bf3a0c21ca3e4ffd1",
      "tree": "35ef8577dcf4d7b411a4944654ee01d7a544f1ee",
      "parents": [
        "18910b47dfaba1b9ef830687ad19b0db764c944e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "a5cbecbc7f940902b966f12a1e4c74d43dc562e4",
      "tree": "a700b4c9973e2edb77ba6c95fc1b3884cf833127",
      "parents": [
        "f351faed1f54aac8a06b6685dc77a7764d7cf543",
        "ab1bd84889273bc21efdabe5ff6f4633eb918a85"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 15:12:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 15:12:30 2012 -0700"
      },
      "message": "Merge \"Only run the wifi display RTSP server on demand, and only on the wifi direct\" into jb-mr1-dev"
    },
    {
      "commit": "f351faed1f54aac8a06b6685dc77a7764d7cf543",
      "tree": "7e4161d4030b94fb864eb126f3488e7d0a8331b6",
      "parents": [
        "9f6f0a7eb1d7f2c35f3547779364a1a8d6d4a24c",
        "fc7992bd8220824f1404c0c54ac516d9e28b58c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:05:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 15:05:01 2012 -0700"
      },
      "message": "Merge \"Move libnbaio out of AudioFlinger\" into jb-mr1-dev"
    },
    {
      "commit": "ab1bd84889273bc21efdabe5ff6f4633eb918a85",
      "tree": "c7b13774524756c1add0ebf76de25be2ff8244e9",
      "parents": [
        "c869702b6aa0c4af48226c7385eee60a1642761c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "message": "Only run the wifi display RTSP server on demand, and only on the wifi direct\n\ninterface.\n\nChange-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7\n"
    },
    {
      "commit": "bd381af4d618a4da78de99d05d44a10c0c37207b",
      "tree": "9aabae3b0ee22c6bce79a40bf44512bdd77f795f",
      "parents": [
        "8dd92a89e09496a83bcd9221bf77dd607313f2e4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 10:56:14 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 10:56:14 2012 -0700"
      },
      "message": "Prepare for transmitting audio through AudioSource.\n\nAudioSource can now be configured to output buffers timestamped based\non looper time (absolute) instead of based on systemTime() relative to\nstart time.\n\nChange-Id: I8eca42648eb50033ac4aafbe5daac64a98a40690\n"
    },
    {
      "commit": "fc7992bd8220824f1404c0c54ac516d9e28b58c2",
      "tree": "972da8ca10068930ebb465a72c76be69a0ca6a79",
      "parents": [
        "6db33a9272da8f011be1c51675220b81655fd470"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "a2c31a786cfea83f4028c4c5ae00386ae96542e9",
      "tree": "0bc0466c8ad8e92b52c149b50437129877c841e3",
      "parents": [
        "2231a6d809344ad1e5a01b974cde498e54eed7ba",
        "35213f1420c669f43314cb75eadea450d21a75cb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "message": "Merge \"Initial checkin of support for acting as a wifi display source\" into jb-mr1-dev"
    },
    {
      "commit": "35213f1420c669f43314cb75eadea450d21a75cb",
      "tree": "6869bbe05a695fbb1df99b339e869652142ed3fb",
      "parents": [
        "f8b8f6f8738b9780067e9e56bac8c1de9449b94c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:06:57 2012 -0700"
      },
      "message": "Initial checkin of support for acting as a wifi display source\n\nChange-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a\n"
    },
    {
      "commit": "9bd5a93ed8b4c4b3361c35dd1acdc3f1f49ede33",
      "tree": "a879e3154cc26be5dd4f3a599ef5bd2974d13976",
      "parents": [
        "f8b8f6f8738b9780067e9e56bac8c1de9449b94c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "message": "Preliminary support for HDCP as a binder service for wifi display support.\n\nChange-Id: Ie0de1c086c629a668d1c7863992eef56fb94157c\n"
    },
    {
      "commit": "1c356d38527efbbee0894188c0a8f82074b0f441",
      "tree": "15a9f511a77a8817f02c558883052dd754298a2d",
      "parents": [
        "690921927f289da73556ea71c28981194af8ffcd",
        "aa8879d381918335c9d829fc279b76d53a15a550"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Aug 27 10:14:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 10:14:23 2012 -0700"
      },
      "message": "Merge \"Fixed a native crash due to unexpected state at destroy time when encoder component\u0027s source fails to start\" into jb-mr1-dev"
    },
    {
      "commit": "a0ead0a2d2ce1d114ad3a17d755dddce831abb40",
      "tree": "0908865a805a13176c98f2a9a5ffb2c28380d75d",
      "parents": [
        "ff3f75c3e827c1c1f3e3a11b1de46b19444af197"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 23 20:24:09 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Aug 26 16:25:12 2012 -0700"
      },
      "message": "SurfaceMediaSource: a few fixes / cleanups\n\n- Remove the setting of mStopped to true in onBuffersReleased\n- Cleaned up a few function call logs\n- Removed the \u0027reset\u0027 method.\n\nChange-Id: I56bab1d5cb2f3e6d59d54698c2e045d796d1849f\n"
    },
    {
      "commit": "aa8879d381918335c9d829fc279b76d53a15a550",
      "tree": "0ec909da8db12815112ba15ba266d1093ff91de8",
      "parents": [
        "9a150640a28d3fa5507a590125a6c004681bb221"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Aug 24 10:53:31 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Aug 24 13:10:16 2012 -0700"
      },
      "message": "Fixed a native crash due to unexpected state at destroy time when encoder component\u0027s source fails to start\n\no Encoder component initializes to be in the state of EXECUTING before its source gets started, because we wanted to be able\n  to configure the source to use the advertised number of input buffers. However, if the source fails to start, then the encoder\n  ends up in the state of EXECUTING when OMXCodec object gets destroyed. As a result, the assertion on the expected state in\n  OMXCodec\u0027s constructor fails. The fix is to stop the video encoder component right way when its source fails to start so to\n  bring the state of the encoder component back to the expected state.\n\no related-to-bug: 7045494\n\nChange-Id: I6d4a221eb809d7137f53e58098a04816998f7a25\n"
    },
    {
      "commit": "dbcb4c17f16230dfc6af908f176681c49f61b13e",
      "tree": "bef549ee2c80ee54309207846ab36192b0124879",
      "parents": [
        "9a150640a28d3fa5507a590125a6c004681bb221"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 24 09:53:35 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 24 10:14:37 2012 -0700"
      },
      "message": "Allow directly setting a DataSource for NuMediaExtractor\n\nThis adds NuMediaExtractor::setDataSource(const sp\u003cDataSource\u003e \u0026source),\nwhich some new code under frameworks/av will use to let applications\nprovide a custom data source for extractors.\n\nChange-Id: I8fb743441d04b4eadbda3c2d76858c3d60e2a3b2\n"
    },
    {
      "commit": "9a150640a28d3fa5507a590125a6c004681bb221",
      "tree": "d45d6e643ac0fac5d0b80258b1ec38feccff4e9f",
      "parents": [
        "0c676cd04ff15cc7eacf6144b4aead6deaccf60c",
        "bf5b3b29e31b293313788d7464cfb258ac0da803"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 22 14:50:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 22 14:50:14 2012 -0700"
      },
      "message": "Merge \"Let getOriginalMimeType() take a fd passed from drm java applications\" into jb-mr1-dev"
    },
    {
      "commit": "6a8ea471a9f3b001bd0ffa3381eba12975dfc59f",
      "tree": "3590178bb20b7042efdaca9f7f87822f7ea1968a",
      "parents": [
        "3411fc2f3a44b22d69a359a3eb26f756d6116e4f",
        "a997e7a7c5aa2fc7e95316218316f8b7b98786ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 20 15:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 15:46:07 2012 -0700"
      },
      "message": "Merge \"Revert \"Swap the order of creating IAudioTrack and thread\"\" into jb-mr1-dev"
    },
    {
      "commit": "8ec1f2a4f3c72fe7472f8b8fa227f6b7bbc9279b",
      "tree": "5a85d007f81c1d09f68f3894f8cbb0a950372250",
      "parents": [
        "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 06 13:50:00 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Move the AAH RTP code out of framework and into vendor.\n\nRelocate the AAH RTP code from framework/av into\nvendor/google_devices/phantasm.  This change is the deletion, there\nwill be a separate CL which re-introduces on the vendor side of\nthings.\n\nChange-Id: Ibe7e6d4b633a3886b87a615691a2692f2382af6c\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "bf5b3b29e31b293313788d7464cfb258ac0da803",
      "tree": "1e3e016a1f7268688be59047be835a17609977f8",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 30 17:57:39 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Aug 10 17:38:19 2012 -0700"
      },
      "message": "Let getOriginalMimeType() take a fd passed from drm java applications\n\nThis patch enables the drm framework to avoid opening files directly.\nAs a result, the drm framework no longer needs the sdcard read permision.\n\no related-to-bug: 6426185\n\nChange-Id: Ib176c35ef4b1a1a405e8e954f19a7985266f2510\n"
    },
    {
      "commit": "b3e12a4d15a329821979bf287c49a9630486e23f",
      "tree": "b79b0ca57e79e2ee19f09b150f9a60e397af24d7",
      "parents": [
        "751fa786aa9599c694219085601f9f5ebe96a516",
        "3ca352c4cd01f6df3b691f835efc68a5771e724e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 15:34:06 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 15:34:06 2012 -0700"
      },
      "message": "am 3ca352c4: am 24893fef: Merge \"MPEG2TSWriter: Write a proper CRC in PAT and PMT\"\n\n* commit \u00273ca352c4cd01f6df3b691f835efc68a5771e724e\u0027:\n  MPEG2TSWriter: Write a proper CRC in PAT and PMT\n"
    },
    {
      "commit": "3ca352c4cd01f6df3b691f835efc68a5771e724e",
      "tree": "8cc59347af40bd76345e794b934e4b9ee0483751",
      "parents": [
        "31a593b901eeb924ae5214962c628397dd0197f2",
        "24893fef8e0f816a8a21749fa3eb9eed9173a0fd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 15:32:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 15:32:40 2012 -0700"
      },
      "message": "am 24893fef: Merge \"MPEG2TSWriter: Write a proper CRC in PAT and PMT\"\n\n* commit \u002724893fef8e0f816a8a21749fa3eb9eed9173a0fd\u0027:\n  MPEG2TSWriter: Write a proper CRC in PAT and PMT\n"
    },
    {
      "commit": "24893fef8e0f816a8a21749fa3eb9eed9173a0fd",
      "tree": "3a5b5cc9b025e90a8a077059937b6ea2e228a9ad",
      "parents": [
        "2001d2ac01e36c13c1abda5f73b6404cba2648e1",
        "983995747ed3adaf25035c433df1ccbaa056a898"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 15:26:43 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 10 15:26:44 2012 -0700"
      },
      "message": "Merge \"MPEG2TSWriter: Write a proper CRC in PAT and PMT\""
    },
    {
      "commit": "751fa786aa9599c694219085601f9f5ebe96a516",
      "tree": "6b8ea38fa25a0cce13ae5d00ded028be74307cc6",
      "parents": [
        "fcfc61da927e98d18cdcb53da8fa0a8a32ee1422",
        "31a593b901eeb924ae5214962c628397dd0197f2"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:44:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:44:04 2012 -0700"
      },
      "message": "am 31a593b9: am 2001d2ac: Merge \"MPEG2TSWriter: Write proper continuity counters for PAT and PMT\"\n\n* commit \u002731a593b901eeb924ae5214962c628397dd0197f2\u0027:\n  MPEG2TSWriter: Write proper continuity counters for PAT and PMT\n"
    },
    {
      "commit": "31a593b901eeb924ae5214962c628397dd0197f2",
      "tree": "34fb25043d531d318bd192a18adaef975ab725be",
      "parents": [
        "ff4c64d6b1b58494a1b15f1a664e5c421d095d15",
        "2001d2ac01e36c13c1abda5f73b6404cba2648e1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 09:26:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 09:26:41 2012 -0700"
      },
      "message": "am 2001d2ac: Merge \"MPEG2TSWriter: Write proper continuity counters for PAT and PMT\"\n\n* commit \u00272001d2ac01e36c13c1abda5f73b6404cba2648e1\u0027:\n  MPEG2TSWriter: Write proper continuity counters for PAT and PMT\n"
    },
    {
      "commit": "2001d2ac01e36c13c1abda5f73b6404cba2648e1",
      "tree": "86b30b2d16b17aa5129743633b9d5fbcc9b2dae3",
      "parents": [
        "c64a178711bf7bb9b71d65a47156b34083311392",
        "d4e5af6bc0a012e8d43975ca8b5627631333920d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 09:03:54 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 10 09:03:55 2012 -0700"
      },
      "message": "Merge \"MPEG2TSWriter: Write proper continuity counters for PAT and PMT\""
    },
    {
      "commit": "e983aa4ff4d80af7702888e230b9aaa93a7b7e57",
      "tree": "09e62e3a573248dd1a3c7b2dae082810f16dfe79",
      "parents": [
        "f6a3576006f3fbe7d87ab49c1ebf292be5ddaa24",
        "51af4af2414cdaaf0185b971a41fc0b4f8c0b7e4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 14:08:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 14:08:28 2012 -0700"
      },
      "message": "am 51af4af2: am e28df5b9: Merge \"Store correct time stamps in recorded mp4 files\"\n\n* commit \u002751af4af2414cdaaf0185b971a41fc0b4f8c0b7e4\u0027:\n  Store correct time stamps in recorded mp4 files\n"
    },
    {
      "commit": "51af4af2414cdaaf0185b971a41fc0b4f8c0b7e4",
      "tree": "3e7a2ca1401597ed506a8725e8a0934a28404024",
      "parents": [
        "ef62009372d050b431939835d4e2c5ee77da8831",
        "e28df5b996af3480b457c7a9908dbb9d52ad8d7c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 14:04:18 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 14:04:18 2012 -0700"
      },
      "message": "am e28df5b9: Merge \"Store correct time stamps in recorded mp4 files\"\n\n* commit \u0027e28df5b996af3480b457c7a9908dbb9d52ad8d7c\u0027:\n  Store correct time stamps in recorded mp4 files\n"
    },
    {
      "commit": "a997e7a7c5aa2fc7e95316218316f8b7b98786ba",
      "tree": "4f98e352833c4de61728588cacc08d40d1d01778",
      "parents": [
        "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 09:44:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:13:42 2012 -0700"
      },
      "message": "Revert \"Swap the order of creating IAudioTrack and thread\"\n\nThis reverts commit 5d464eb0b8cffb994a754ff108795e858a882414.\nIt caused the wrong thread ID -1 to be passed to IAudioFlinger::createTrack().\n\nChange-Id: Ic221d2bb4af572d3d2d752af19238c52f6728e3a\n"
    },
    {
      "commit": "e671207115fac3914134c61b336d5fa0242c68ca",
      "tree": "466cda101e1528b81bf72c228d7060c33788dedf",
      "parents": [
        "28620ee3e9926ef07f0b4cb3e22b156b812e2d7e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 26 10:56:14 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 07 13:08:15 2012 -0700"
      },
      "message": "Make sure codec names and corresponding quirks are returned together.\n\nPreviously they were returned in separate vectors and only one of them was sorted if\nsoftware codecs were preferred, leaving the quirks no longer matching the codec name\nat the same index.\n\nChange-Id: Id3f1e6f9f7f8c9cc4b6ebfb86a203b4d59de8604\nrelated-to-bug: 6737884\n"
    },
    {
      "commit": "a6ee7bc5f9524c220377e37f6525e2d46c69b75b",
      "tree": "a400db737ac5e0c2bb7961fef314bbb975656eef",
      "parents": [
        "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Aug 06 22:02:27 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Aug 06 22:03:28 2012 -0700"
      },
      "message": "Remove obsolete hack for TI specific code\n\no related-to-bug: 6566886\n\nChange-Id: I39aad214cbf7b748a95a9d22db50cd8f421931e6\n"
    },
    {
      "commit": "a3b71fa5235b758d5f9ea00b9c58fbfd707fb9dd",
      "tree": "74897f534787e1da1855a4b87f6de0aa3de278ac",
      "parents": [
        "36cdfb185877a7f573621d19ed2b2e1cac13d62e",
        "840667883fd09d44015716d79bc3ac4d60edc0f0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 03 14:16:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 14:16:33 2012 -0700"
      },
      "message": "Merge \"experimental support for fragmented mp4 playback in nuplayer\" into jb-mr1-dev"
    },
    {
      "commit": "840667883fd09d44015716d79bc3ac4d60edc0f0",
      "tree": "cb55492dbe3ca64b2ab9ba2f5a3bb6d0a0bcf650",
      "parents": [
        "9cb20d4a41eb84bfab7f9f0d0829393f378583f4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 09:34:26 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 03 13:57:32 2012 -0700"
      },
      "message": "experimental support for fragmented mp4 playback in nuplayer\n\ncherry picked from change 170999\n\nChange-Id: I407775f0290154ad4961134839a15c9f296424c0\n"
    },
    {
      "commit": "983cf231ab2d176a14595cdae46ff1b0c239af47",
      "tree": "01942a13a082e2116f8df5dbaca1a902ac52a299",
      "parents": [
        "15d7245ed2193e4956ea87998321cbc16a3b0a46"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 01 16:39:55 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 02 17:06:05 2012 -0700"
      },
      "message": "Dynamically configure the number of video buffers used by camera source, if supported\n\no related-to-bug: 6920805\n\nChange-Id: I413bb50954cc84e32ed40bcb713842dc7b58e2b6\n"
    },
    {
      "commit": "0dff606f42292b8a31b9eee842877f9875279dab",
      "tree": "84529f95eacfe525e3ecbc0d9a6f4b49fb0c737b",
      "parents": [
        "c9729ca1cb1760da836e293e3ed7a82f769f3e07"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 01 19:32:46 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 02 14:01:25 2012 -0700"
      },
      "message": "Allocate buffers before calling start on its source in OMXCodec::start() for encoder case\n\no This makes it possible to configure the source to use the same number of input buffers\n  as requested by the video encoder, before the source starts. As a result, hardcoded\n  number of video buffers for camera source, for instance, can be avoided.\n\no related-to-bug: 6920805\n\nChange-Id: I13d2c308dce34967768cd407f02988e92ef10a89\n"
    },
    {
      "commit": "c9729ca1cb1760da836e293e3ed7a82f769f3e07",
      "tree": "7e080db5914465b3f739f68ae9a21cef94646c9f",
      "parents": [
        "6472badc497a9e748411f8c8c9ed5d83ef335a85"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Tue Jul 24 14:44:06 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Aug 02 11:56:07 2012 +0900"
      },
      "message": "Unifying TimedTextDriver\u0027s resume() and start().\n\n(cherry picked from gtv bb23a2b7e06c59f56e353fd4a2a66a9b8179d425)\n\nChange-Id: If5f14549fa315c34e32d6fed7c1ea09deabceb63\n"
    },
    {
      "commit": "bb6bc8491fe819f96e1902e56694715cb110ce94",
      "tree": "276e8c9aac3e7838ed61cdbda857ae27947975e9",
      "parents": [
        "2f0632f12cd02b0350918720443c888b48f4417b"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Tue Jul 10 15:53:44 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Aug 02 11:56:07 2012 +0900"
      },
      "message": "Adds resume() function\n\no Revived resume() function to fix pause/resume bug. (Bug: 6663740)\no Mannually cherry-picked from GTV change.\n(commit: ad1197226d1c6745959f0e469f510ca06f99489f)\n\nChange-Id: I77ac90085fb1f1d2e7eb706642978a4fa4d28b49\n"
    },
    {
      "commit": "5a81ad893eada20c32596be53dabe203b99bec3c",
      "tree": "f499f67ddf2abb203f952c84c83f8d9cb017c415",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 14:41:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 14:46:38 2012 -0700"
      },
      "message": "Allows MediaMetadataRetriever to retrieve video rotation angle\n\no related-to-bug: 6872687\n\nChange-Id: I34e74b0756f8269edefdf3a25d8806c76fd1e2f8\n"
    },
    {
      "commit": "efcdf187baab9ec29e12adcf85e63fe3e6d5aa4d",
      "tree": "d85166122a684b6020e166d4e3bb005c5285db13",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonymobile.com",
        "time": "Thu Mar 08 11:06:13 2012 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Mon Jul 30 14:52:08 2012 +0200"
      },
      "message": "Store correct time stamps in recorded mp4 files\n\nAccording to the specification (ISO_IEC_14496-12_2008 page 17, 19 and\n21) the time is \"in seconds since midnight, Jan. 1, 1904, in UTC time\"\nwhich is not the same as Unix epoch time. This is already correctly\nhandled in MPEG4Extractor.cpp when reading files.\n\nThe specification also supports 64 bit timestamps which would make\nit a bit more future proof, but unfortunately it seems like support\nfor this in players are poor (tested both Windows media player and\nQuicktime player).\n\nChange-Id: I102d728f098b8b0a21013956f017b0c4f2d69112\n"
    },
    {
      "commit": "5d464eb0b8cffb994a754ff108795e858a882414",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "0ec23ce0d1ff79566c402bc30df3074f6e25a22b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:19:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:58:43 2012 -0700"
      },
      "message": "Swap the order of creating IAudioTrack and thread\n\nSimplifies the error recovery in case IAudioTrack fails.\n\nChange-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "68ea6cab354a635ea848bc2b5cf172d7a215a057",
      "tree": "7493493a0cd877fbb77432e4ea8601286b1da020",
      "parents": [
        "e78d5c7bfda1e80223436df3faeb4a9e2e719bcf",
        "f6d9696bf1db133d16dd8981380e1bfbd2e0bc70"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:40:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:40:30 2012 -0700"
      },
      "message": "Merge \"Camera: Add OPAQUE pixel format to CameraParameters\""
    },
    {
      "commit": "c374dae535b83d9b499dd9fe8f9dabdb8b0ac9fd",
      "tree": "9e854a53f611c1a6a08c7ac507037c9fcf49c3c9",
      "parents": [
        "33e6e35b03a726e35203e97550f32154c91d5f13"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 19:18:06 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 15:28:25 2012 -0700"
      },
      "message": "Added a callback to signal when the rendering of the video frame just occurred\n\nChange-Id: Ifbd78606ffc33483aecebf02cb18e0e52af9624d\nrelated-to-bug: 6851811\n"
    },
    {
      "commit": "f6d9696bf1db133d16dd8981380e1bfbd2e0bc70",
      "tree": "9599fa0f762f48aaffb17429f4b885236734d07b",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:50:46 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:53:39 2012 -0700"
      },
      "message": "Camera: Add OPAQUE pixel format to CameraParameters\n\nThis is only used to support recording with HAL 2 in the\nKEY_VIDEO_FRAME_FORMAT parameter, and is not exposed to applications.\n\nBug: 6243944\nChange-Id: I5976a748d199ae98189bd03af5bbd9e18cbd6bf0\n"
    },
    {
      "commit": "955e78180ac6111c54f50930b0c4c12395e86cf7",
      "tree": "b4c12804643f73e9acbbf1db58f5ffa7e0bd7bc7",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:32:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 18:06:19 2012 -0700"
      },
      "message": "AudioRecord locking\n\nFix race conditions for EVENT_MARKER and EVENT_NEW_POS callbacks.\nMarker and new position update fields are protected by lock.\n\ngetSampleRate() doesn\u0027t need a lock because it reads from shared memory\ncontrol block.\n\nEnforce that the parameter passed with EVENT_MARKER and EVENT_NEW_POS\ncannot not be changed by the callback handler, and will not change during\nthe call by another thread.\n\nSession ID should never change; log if it does.\n\nChange-Id: Ia2c63cf1a71b10bb06c37981bd76437f83fffa91\n"
    },
    {
      "commit": "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac",
      "tree": "c605d3e995f4b6be55dd4b10e1c998b059990d0d",
      "parents": [
        "fd4e20c226eca185fc789de761beae64855bfbbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 17:24:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:31:59 2012 -0700"
      },
      "message": "Use audio_channel_mask_t for channel mask\n\nChange-Id: I1c1896da48983aa9f1462a4b471f910498816f60\n"
    },
    {
      "commit": "dcda3b325f465aa6ec2be11db1c56c8a5e867f33",
      "tree": "0f7709ccea7f3c3cb5a63747adb7d5bfb82e194a",
      "parents": [
        "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
        "d64cd233eef39430561c1e1df423336a199cc5d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "message": "Merge \"AudioRecord::stop() return void\""
    },
    {
      "commit": "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
      "tree": "58b79b403e5ec36812aa8ef233cb404b2fcd7341",
      "parents": [
        "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
        "190313ec68e81c10d200ff3c20ac152cf90760d6"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "message": "am 190313ec: am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u0027190313ec68e81c10d200ff3c20ac152cf90760d6\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "d64cd233eef39430561c1e1df423336a199cc5d7",
      "tree": "34f6adda18ee4c4f2d1dea9ea4dbf0c84c2d0bfe",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:21:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 15:55:04 2012 -0700"
      },
      "message": "AudioRecord::stop() return void\n\nlike AudioTrack::stop()\n\nChange-Id: Iab62f4665151345f1ad5874c97a21d1a331f0154\n"
    },
    {
      "commit": "190313ec68e81c10d200ff3c20ac152cf90760d6",
      "tree": "7a0a8e099c9a90c42cb84b65d8462c7186e6b3cf",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939",
        "65e8d62a5b243518795cdafa498df4a49baf6940"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "message": "am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u002765e8d62a5b243518795cdafa498df4a49baf6940\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7",
      "tree": "121fce48f2765c8d13ecbc84dcf06c44d62096b4",
      "parents": [
        "9cca4c6d976d2d4127286e9eaa54d1b99880c25c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:05:58 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 14:49:12 2012 -0700"
      },
      "message": "AudioRecord client threading cleanup\n\nRename ClientRecordThread to AudioRecordThread to be more similar to\nAudioTrack naming.\n\nOnly create the thread once, and use resume() and pause() for start()\nand stop().  This will allow us to have a known client callback thread\ntid that we can pass to AudioFlinger before start().\n\nmActive:\nMade mActive a bool not int.\nmActive is protected by mLock; volatile is meaningless.\nFixed a few places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\nThese aren\u0027t used internally, so no need for _l() versions.\n\nChange-Id: I4b8a5c90f3a22d3894b344564cb1c5aef4f1fda2\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc",
      "tree": "e12cae6d070d56571a5ce2160199b4a54edd0f7a",
      "parents": [
        "1879fff068422852c1483dcf8365c2ff0e2fadfc",
        "d4070955e28ae62aa4be1657f9d32acde104bb86"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "message": "Merge \"Remove dead code in libmedia\""
    },
    {
      "commit": "1879fff068422852c1483dcf8365c2ff0e2fadfc",
      "tree": "f374fae563e2854ce20b4da16e9cae0d883aecd7",
      "parents": [
        "bf04a5d7f287fc712e0ed91849dc85c90c1e182d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 13:43:08 2012 -0700"
      },
      "message": "Add tid parameter to IAudioFlinger::openRecord\n\nNot yet implemented\n\nChange-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4\n"
    },
    {
      "commit": "d4070955e28ae62aa4be1657f9d32acde104bb86",
      "tree": "4e289a66bb82da52f8e0e1c1691b35f1309d9f35",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:03:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:09:09 2012 -0700"
      },
      "message": "Remove dead code in libmedia\n\nChange-Id: I7d8201590cda29c9fa99662a4fdba222091febfe\n"
    },
    {
      "commit": "bf04a5d7f287fc712e0ed91849dc85c90c1e182d",
      "tree": "f9fd2ffd8df5a02c9c9373f5362da76204e5a676",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:07:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:36:34 2012 -0700"
      },
      "message": "Simplify AudioRecord::getInputFramesLost()\n\nThis also fixes a benign race in reading mActive without a lock.\n\nChange-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "983995747ed3adaf25035c433df1ccbaa056a898",
      "tree": "560ae326126ee657e50d7ff36119760b1992936e",
      "parents": [
        "d4e5af6bc0a012e8d43975ca8b5627631333920d"
      ],
      "author": {
        "name": "Paul Fariello",
        "email": "fariello@archos.com",
        "time": "Mon Jan 23 17:21:33 2012 +0100"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Tue Jul 10 13:36:14 2012 +0300"
      },
      "message": "MPEG2TSWriter: Write a proper CRC in PAT and PMT\n\nChange-Id: I6ec8039b176878da6f02691194d96b0a1e894055\n"
    },
    {
      "commit": "d4e5af6bc0a012e8d43975ca8b5627631333920d",
      "tree": "4fa273c0f4f7969c375f9ea0d9fe8b651a77cfd7",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939"
      ],
      "author": {
        "name": "Paul Fariello",
        "email": "fariello@archos.com",
        "time": "Mon Jan 23 17:24:35 2012 +0100"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Tue Jul 10 13:34:15 2012 +0300"
      },
      "message": "MPEG2TSWriter: Write proper continuity counters for PAT and PMT\n\nChange-Id: If94e31e51c563867db6d2376ad771f9751416084\n"
    },
    {
      "commit": "dd8104cc5367262f0e5f13df4e79f131e8d560bb",
      "tree": "46c95f24576ec352d7d5d363606db9a46a44e9c3",
      "parents": [
        "f1da96d8cf60842538e00a9c950cc451f7da2c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:42:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:24:45 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),\ndeclare input parameter to use correct type audio_channel_mask_t.\n\nIn IAudioFlinger::getInputBufferSize(), input parameter is now channel mask\ninstead of channel count.\n\nRemove unused IAudioFlinger::channelCount(audio_io_handle_t).\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965\n"
    },
    {
      "commit": "0dc6d5ef45c0721c76f0e55354ff80371d795e5d",
      "tree": "bb761a26a5536983ae84a5b6f1e5defa6fd33a8e",
      "parents": [
        "9ee836fc8cf54d26e1e0819d1467d4d39bb9295c",
        "02e84eaff54414e9f10c0f605152728a682c6874"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 17:28:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 25 17:28:11 2012 -0700"
      },
      "message": "Merge \"AudioRecord comments\""
    },
    {
      "commit": "02e84eaff54414e9f10c0f605152728a682c6874",
      "tree": "9e9cfa5e54197ce0a2f60328b1fa17bf3c1d0271",
      "parents": [
        "624a7fcb377f2a40109c16de5109ae8ea1f67a69"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 13:45:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 15:42:37 2012 -0700"
      },
      "message": "AudioRecord comments\n\nGroup the private fields according to how they are used\n\nChange-Id: I7ce3d0939510c10f34bd91a55f6e03afc8e7d43c\n"
    },
    {
      "commit": "20010053daabfa43fcfe781bbf004473b4c08538",
      "tree": "f34948205baac68d57000467e9877a0041249d33",
      "parents": [
        "624a7fcb377f2a40109c16de5109ae8ea1f67a69"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:43:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 13:51:10 2012 -0700"
      },
      "message": "Remove acoustics from AudioSystem::getInput()\n\nChange-Id: I29fb3ee5664c1f0ee0409c1bb2be087ecca637db\n"
    },
    {
      "commit": "624a7fcb377f2a40109c16de5109ae8ea1f67a69",
      "tree": "9082c6373d7a8c904183ba745697938ca30fda68",
      "parents": [
        "70be725da4d8aafb94d47c1962e897ecd5fdf823"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:24:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 10:03:30 2012 -0700"
      },
      "message": "Use audio_channel_mask_t in AudioRecord\n\nChange-Id: I9e1b918b2635d961604a4a9d88eb1c7179a167a7\n"
    },
    {
      "commit": "70be725da4d8aafb94d47c1962e897ecd5fdf823",
      "tree": "ccd550d401bdc8f73f04c0f08cd128216ff713aa",
      "parents": [
        "868a6a357018e5872e064b7a13a9b891e2078962"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:24:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 09:47:01 2012 -0700"
      },
      "message": "Remove unused AudioRecord::channels()\n\nIt was declared but never implemented or called.\n\nChange-Id: If5846147fcbd7f6d4187971e2044dd6fd3252b42\n"
    },
    {
      "commit": "868a6a357018e5872e064b7a13a9b891e2078962",
      "tree": "66888ef3311ea9973ef85f31abc130a35e7d6392",
      "parents": [
        "46ec58976b3c04a99ce6e7eda2531543bfb151c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:22:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 09:31:55 2012 -0700"
      },
      "message": "Include what you use\n\nChange-Id: I12ef9367d05dbe069c037b1b4acd6347a8cf3ece\n"
    },
    {
      "commit": "46ec58976b3c04a99ce6e7eda2531543bfb151c7",
      "tree": "722768dbc41135d0a95fe302fd791051f6bda1f1",
      "parents": [
        "a4b06651f65d2c4f4d5840e7f879fb3ae5cfaa82",
        "f92eec53f886f43e4374a36195be55f2a7bbcf36"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 08:35:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 25 08:35:48 2012 -0700"
      },
      "message": "Merge \"Remove AudioRecord record_flags\""
    },
    {
      "commit": "e6cb412b677966c25b424766dc6ceb2787d49caa",
      "tree": "6bfbcf0b8cdfa231f5638b2e9eca58c271e48123",
      "parents": [
        "5ca15ccf7336d5aa5a7b563742757fa37092eb48",
        "33e28dd3c033641f4db9d1b99c7c88d6d08c61f7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jun 22 15:20:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 15:20:48 2012 -0700"
      },
      "message": "am 33e28dd3: Merge \"SurfaceMediaSource: keep refs to current buffers\" into jb-dev\n\n* commit \u002733e28dd3c033641f4db9d1b99c7c88d6d08c61f7\u0027:\n  SurfaceMediaSource: keep refs to current buffers\n"
    },
    {
      "commit": "2cd25a9056cc150b9fd3ac9b0bca37a1334ffd47",
      "tree": "47ec6f6b47b28af67095707b65bbfef4d7dd0dbe",
      "parents": [
        "eb15716b59020f342df62bce5b293f0603b94861"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jun 22 14:42:00 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jun 22 14:43:59 2012 -0700"
      },
      "message": "SurfaceMediaSource: keep refs to current buffers\n\nThis change fixes a bug in SurfaceMediaSource where it would not keep a\nreference to all of the Gralloc buffers that the video encoder is currently\nusing.\n\nBug: 6655597\nChange-Id: Ifd99976cc7ae57ed724bbf2bbcff357a39497391\n"
    },
    {
      "commit": "f92eec53f886f43e4374a36195be55f2a7bbcf36",
      "tree": "e6db36a4f5ffb47782d0614f1defc783fcb436c0",
      "parents": [
        "a43787a8cc513715543fb5c80c7c464e2cd51b6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 08:16:36 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:49:03 2012 -0700"
      },
      "message": "Remove AudioRecord record_flags\n\nChange-Id: I021ddcc1bcb63132a4597d13e3d09db2a5f2c628\n"
    },
    {
      "commit": "48a0bfa6f731386f2794ff36d6677d56e98fc6ea",
      "tree": "36deb7b4e31a25a8a4b313de8ffdecd1d8ae9aaa",
      "parents": [
        "cc0df657cdc8316c2b816c562f269be1706f00ea",
        "49dd5cf3469cd755321f8ec10013ad4fcfaf723d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "message": "am 49dd5cf3: Merge \"Log track name on obtain/releaseBuffer warnings\" into jb-dev\n\n* commit \u002749dd5cf3469cd755321f8ec10013ad4fcfaf723d\u0027:\n  Log track name on obtain/releaseBuffer warnings\n"
    },
    {
      "commit": "0c9d26d187017f7fb028ab52a0fbc6395142faa4",
      "tree": "35fd2f6babef082b85058fd27a69bda048687295",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:35:01 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 15:12:42 2012 -0700"
      },
      "message": "Log track name on obtain/releaseBuffer warnings\n\nThis should help diagnose problems by allowing us to correlate\nthe logs with the dumpsys media.audio_flinger output.\n\nChange-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9\n"
    },
    {
      "commit": "ea5008d8abfdf1479b4efa266cdb7c842d168aa9",
      "tree": "d963ca5cf87c18f8d14d6c1cce77edb9f56c96ac",
      "parents": [
        "98e2e030231ce99a4796d34d39a7517078d6735e",
        "28ed2f93324988767b5658eba7c1fa781a275183"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "message": "am 28ed2f93: Reduce underruns in screen off, esp. with EQ\n\n* commit \u002728ed2f93324988767b5658eba7c1fa781a275183\u0027:\n  Reduce underruns in screen off, esp. with EQ\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "cba7b32d8f2c47632313f54118ed3733b4b02cc8",
      "tree": "b24101645accdc9067e7970ef22f3d934bda8edf",
      "parents": [
        "cf0bf78c28cf25c30c42c784c1dc5bc094e6035d"
      ],
      "author": {
        "name": "Kei Takahashi",
        "email": "KeiA.Takahashi@jp.sony.com",
        "time": "Wed Jan 18 17:10:19 2012 +0900"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 23 14:44:06 2012 -0700"
      },
      "message": "Add a new API on DRM Framework for streaming\n\nIn case of DRM streaming, decrypt session can start just after\nreceiving the header, and it doesn\u0027t need to wait for the entire\ncontent. However, current API of DRM framework only accepts file\nhandle or URI. With this new API, DRM session can start\nwithout waiting for the entire content.\n\nChanges are made by SEMC and Sony.\n\nChange-Id: I74375fe127df636067f1c300ea91654ba3d1aa3c\n"
    },
    {
      "commit": "bc098410be55f9d96f394b3981a0c482b83859b6",
      "tree": "45681d846f6862d558b04be1a4b36bb4a2b4c54f",
      "parents": [
        "a6490c65f93e1cbe969fba499978e8d64214108a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 22 12:55:03 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 22 12:55:03 2012 -0700"
      },
      "message": "Tell surface flinger that we want to protect output buffers from being\n\nsent to HDMI (without HDCP) and push a few black frames on IDLE-\u003eLOADED\nsimilar to OMXCodec\u0027s behaviour.\n\nChange-Id: Iea6055a115151ca881220a70a31af6ade2c58cb3\nrelated-to-bug: 6537187\n"
    },
    {
      "commit": "88ba895b5ddd8b3da364c3ceacdb698224ee746f",
      "tree": "e667815a58c7c30d94040ebcf20c5ab3cf53ff53",
      "parents": [
        "cd28dc10d49c359566c69d48a29a6f0d3eefa6d9",
        "a99a5bca365277271915cbaeea811ad87131270d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 17 09:40:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 17 09:40:55 2012 -0700"
      },
      "message": "Merge \"Stop extrapolating audio time from the anchor if we\u0027re paused or reached eos.\" into jb-dev"
    },
    {
      "commit": "50a9908f987fd5a73d8a95d6fe46b530386cdc86",
      "tree": "9f9444db2cdb8dac16daa9527f8888b169a0ca81",
      "parents": [
        "09effe3813dcdec19c6767bf754cc3834e816937",
        "8c460498c028888c533ab442be12b6d4b669b965"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 17:24:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 17:24:27 2012 -0700"
      },
      "message": "Merge \"Speed up stsz box write in MPEG4Writer\" into jb-dev"
    },
    {
      "commit": "8c460498c028888c533ab442be12b6d4b669b965",
      "tree": "f821306b7a59d4dcc9116f1948f193c78f5ad413",
      "parents": [
        "5d3d12bf58da5b48b1edb7c20b5d1edec0773f75"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 10:43:30 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 15 16:14:25 2012 -0700"
      },
      "message": "Speed up stsz box write in MPEG4Writer\n\nWith this patch, the write time for 30+ minutes recording session is reduced from 10+ seconds down to around 2-3 seconds.\n\nrelated-to-bug: 6435176\n\nChange-Id: I83b705cea42d8de798e7032c770c5c7b033e267e\n"
    },
    {
      "commit": "a99a5bca365277271915cbaeea811ad87131270d",
      "tree": "717917aace94780ef8ec47d57e1eb9d86be78dd3",
      "parents": [
        "18793d77792e12f5f63e67f721bc238b6dc497a1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 15 15:57:59 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 15 16:05:02 2012 -0700"
      },
      "message": "Stop extrapolating audio time from the anchor if we\u0027re paused or reached eos.\n\nChange-Id: I55903ba625d9c075a9a6e7bcd5ff95d450b915b2\nrelated-to-bug: 6479613\n"
    },
    {
      "commit": "c2d6427f693f1847100c8f4b9a4aff6c1a12bb29",
      "tree": "b3be5a079cf848bae0c1af96a249c42671390a74",
      "parents": [
        "2986460984580833161bdaabc7f17da1005a8961"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue May 15 15:38:27 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue May 15 15:47:29 2012 -0700"
      },
      "message": "Move CameraParameters header to join rest of camera library.\n\nCameraParameters was moved over to frameworks/native before\nframeworks/av was created, since it is referenced by HAL\nimplementations. Move it to frameworks/av to keep it together with its\nimplementation.\n\nBug: 6500863\nChange-Id: If1a3b7768bedeb825729c3cdd55e8fcea04b7369\n"
    },
    {
      "commit": "2986460984580833161bdaabc7f17da1005a8961",
      "tree": "bd8aa210c0faee61dc45e23479e29cfc85f313c2",
      "parents": [
        "dfa29ab13647f22b30b2de34d4830c9e815bf120"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 18:57:51 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 17:20:12 2012 -0700"
      },
      "message": "Fix issues with synchronous record start.\n\n- Added a timeout in case the trigger event is never fired.\n- Extend AudioRecord obtainBuffer() timeout in case of\nsynchronous start to avoid spurious warning.\n- Make sure that the event is triggered if the track is\ndestroyed.\n- Reject event if the triggering track is in an incompatible state.\n\nAlso fix a problem when restoring a static AudioTrack after\na mediaserver crash.\n\nBug 6449468.\n\nChange-Id: Ib36e11111fb88f73caa31dcb0622792737d57a4b\n"
    },
    {
      "commit": "e4451a91a61a341014f5eff61db356156c3ecb37",
      "tree": "e08424d79d2b0c341b51a180065faac801465463",
      "parents": [
        "44f84ded62bffd5f04e0f5961e8304427a7b9f34"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 14 15:55:48 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 14 15:55:48 2012 -0700"
      },
      "message": "Smoothen audio \"real\" time by compensating with system_time()\n\nfor the delay since the last buffer submission to the audio sink.\n\nChange-Id: Ib1a8672f96ba8bbef07d23372f1076fbb1f0bdcc\nrelated-to-bug: 6479613\n"
    },
    {
      "commit": "7cf0de49dbdcb2da7d9bf9421f58adf442dfeaea",
      "tree": "5b5b9ccdccfca5733ea98d7592868d9b8719e61c",
      "parents": [
        "7d5805669dea851e70115c494154a2d26b8dc39e",
        "3a2633008be4a92fbca6e76c057f86e220558197"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 11 15:39:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 11 15:39:36 2012 -0700"
      },
      "message": "Merge \"Remove unused VideoSourceDownSampler class\" into jb-dev"
    },
    {
      "commit": "3a2633008be4a92fbca6e76c057f86e220558197",
      "tree": "64aa2de3dd08bae08930da1e10e66bbe565688d3",
      "parents": [
        "240d8a84dec9f9482257a8037457a1d63193b7ff"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 11 14:50:16 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 11 14:53:22 2012 -0700"
      },
      "message": "Remove unused VideoSourceDownSampler class\n\nChange-Id: I2faf5962ff4cc366c688ef5bb27f53596f08fe0a\nrelated-to-bug: 6484217\n"
    },
    {
      "commit": "eb61431af13741aa8b7e57a39f69bba5a6c190dc",
      "tree": "160d4951d23a4ee5cb7d7880df3afb923dad4eb6",
      "parents": [
        "240d8a84dec9f9482257a8037457a1d63193b7ff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 16:43:19 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 11 10:12:45 2012 -0700"
      },
      "message": "Increase AAC software decoder\u0027s buffer count. Refactor how clients\n\nof ACodec get notified about codec buffers and buffer ids.\n\nChange-Id: I962f873262dae7aa7b43f5f68a6d60268282f91e\nrelated-to-bug: 6478823\n"
    },
    {
      "commit": "af9e6a17d7038b411b61a3cb0669694058511a05",
      "tree": "1c6aed890adfd410be4710d5f6be462964ed89b3",
      "parents": [
        "c3798d7e97cb11076310f06163417c0631cce04e",
        "7541ff5d83a3e77cb533841a0326a241550b95d9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 14:38:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 14:38:10 2012 -0700"
      },
      "message": "Merge \"Properly connect/disconnect to/from the native window in MediaCodec.\" into jb-dev"
    },
    {
      "commit": "7541ff5d83a3e77cb533841a0326a241550b95d9",
      "tree": "7ead109f66a97f4290ce58948b90703374d99ad3",
      "parents": [
        "c150ca7dda844891fa684f6898da7f7e0c40329d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 10:54:15 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 10 10:54:15 2012 -0700"
      },
      "message": "Properly connect/disconnect to/from the native window in MediaCodec.\n\nChange-Id: Ib5bf90a3b81fca8ff2346235bc28a2bd0bc7bfb1\nrelated-to-bug: 6472161\n"
    },
    {
      "commit": "2f74ef3cdc192f817ee1121f41765f0852c1d81e",
      "tree": "a088a328c59fc8fba57269e9b0dc899eb5182b35",
      "parents": [
        "c150ca7dda844891fa684f6898da7f7e0c40329d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 30 10:38:58 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 09 18:50:18 2012 -0700"
      },
      "message": "OMX IL wrapper for FLAC encoder\n\nAdd wrapper around libFLAC for FLAC encoding in OpenMAX IL.\n\nDeclare FLAC encoder in OMX component roles.\n\nBug 5525503\n\nChange-Id: I19bbce41c216870669d09365693f4ea89f8bc0f7\n"
    },
    {
      "commit": "8ee516a515c70a492c395b67ce12e19e7d159804",
      "tree": "ae968718f25cd7972a03c00e7496a6deb225fc1f",
      "parents": [
        "a62bde0a391f65a418d77c46e6ba468433d81dba"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 11:21:26 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 08 11:26:22 2012 -0700"
      },
      "message": "Submit codec specific data automatically\n\nif it is contained in the format passed to MediaCodec::configure.\n\nChange-Id: I8ef6755e8389ec47b44a9c70904ea6c03a00f4f2\nrelated-to-bug: 6364139\n"
    },
    {
      "commit": "9806555d3930be43e11106281dee354820ac1c88",
      "tree": "b5aa448cc0bfede361540f45b97c81ad398a9df4",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:33:01 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:47:08 2012 -0700"
      },
      "message": "Respect channel mask in ACodec and NuPlayer.\n\nRefactor conversion from MetaData into AMessage while we\u0027re at it.\n\nChange-Id: I5479129836ea4316e8de28cf1b472bf19e3ac4ab\nrelated-to-bug: 6439076\n"
    },
    {
      "commit": "4f6eed0d1c7972a983c075bdcf03089569e13fe1",
      "tree": "6eebbc397b99bf33e8c9991fada609d86d144caf",
      "parents": [
        "27431de020e535c31365884316f656bc60b4fe4f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 30 14:38:12 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 01 10:30:58 2012 -0700"
      },
      "message": "Impl for supporting two video scaling modes\n\no allows the video scaling mode to change at any time\no also remove the scaling mode logic in OMXCodec.cpp\n\no related-to-bug: 5454345\n\nChange-Id: I6f1714eb0c2774591ce650d56c1e779b8afd085f\n"
    }
  ],
  "next": "4c9cd95b27a638701be2ffa1713273ba2f624770"
}
