)]}'
{
  "log": [
    {
      "commit": "5d464eb0b8cffb994a754ff108795e858a882414",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "0ec23ce0d1ff79566c402bc30df3074f6e25a22b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:19:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:58:43 2012 -0700"
      },
      "message": "Swap the order of creating IAudioTrack and thread\n\nSimplifies the error recovery in case IAudioTrack fails.\n\nChange-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "955e78180ac6111c54f50930b0c4c12395e86cf7",
      "tree": "b4c12804643f73e9acbbf1db58f5ffa7e0bd7bc7",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:32:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 18:06:19 2012 -0700"
      },
      "message": "AudioRecord locking\n\nFix race conditions for EVENT_MARKER and EVENT_NEW_POS callbacks.\nMarker and new position update fields are protected by lock.\n\ngetSampleRate() doesn\u0027t need a lock because it reads from shared memory\ncontrol block.\n\nEnforce that the parameter passed with EVENT_MARKER and EVENT_NEW_POS\ncannot not be changed by the callback handler, and will not change during\nthe call by another thread.\n\nSession ID should never change; log if it does.\n\nChange-Id: Ia2c63cf1a71b10bb06c37981bd76437f83fffa91\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac",
      "tree": "c605d3e995f4b6be55dd4b10e1c998b059990d0d",
      "parents": [
        "fd4e20c226eca185fc789de761beae64855bfbbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 17:24:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:31:59 2012 -0700"
      },
      "message": "Use audio_channel_mask_t for channel mask\n\nChange-Id: I1c1896da48983aa9f1462a4b471f910498816f60\n"
    },
    {
      "commit": "dcda3b325f465aa6ec2be11db1c56c8a5e867f33",
      "tree": "0f7709ccea7f3c3cb5a63747adb7d5bfb82e194a",
      "parents": [
        "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
        "d64cd233eef39430561c1e1df423336a199cc5d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "message": "Merge \"AudioRecord::stop() return void\""
    },
    {
      "commit": "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
      "tree": "58b79b403e5ec36812aa8ef233cb404b2fcd7341",
      "parents": [
        "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
        "190313ec68e81c10d200ff3c20ac152cf90760d6"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "message": "am 190313ec: am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u0027190313ec68e81c10d200ff3c20ac152cf90760d6\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "d64cd233eef39430561c1e1df423336a199cc5d7",
      "tree": "34f6adda18ee4c4f2d1dea9ea4dbf0c84c2d0bfe",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:21:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 15:55:04 2012 -0700"
      },
      "message": "AudioRecord::stop() return void\n\nlike AudioTrack::stop()\n\nChange-Id: Iab62f4665151345f1ad5874c97a21d1a331f0154\n"
    },
    {
      "commit": "190313ec68e81c10d200ff3c20ac152cf90760d6",
      "tree": "7a0a8e099c9a90c42cb84b65d8462c7186e6b3cf",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939",
        "65e8d62a5b243518795cdafa498df4a49baf6940"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 15:12:24 2012 -0700"
      },
      "message": "am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u002765e8d62a5b243518795cdafa498df4a49baf6940\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7",
      "tree": "121fce48f2765c8d13ecbc84dcf06c44d62096b4",
      "parents": [
        "9cca4c6d976d2d4127286e9eaa54d1b99880c25c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:05:58 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 14:49:12 2012 -0700"
      },
      "message": "AudioRecord client threading cleanup\n\nRename ClientRecordThread to AudioRecordThread to be more similar to\nAudioTrack naming.\n\nOnly create the thread once, and use resume() and pause() for start()\nand stop().  This will allow us to have a known client callback thread\ntid that we can pass to AudioFlinger before start().\n\nmActive:\nMade mActive a bool not int.\nmActive is protected by mLock; volatile is meaningless.\nFixed a few places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\nThese aren\u0027t used internally, so no need for _l() versions.\n\nChange-Id: I4b8a5c90f3a22d3894b344564cb1c5aef4f1fda2\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "04cd0186305e2b59d23c9147787046c6662029cc",
      "tree": "5c2da34c5489ab0741729ba6b66cec980c384720",
      "parents": [
        "5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 11:49:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 09:05:50 2012 -0700"
      },
      "message": "getMinFrameCount error handling\n\nConvention is for \"get\" APIs that directly return status_t and indirectly\nreturn a value via a pointer, to return BAD_VALUE if the pointer is NULL.\nAlso indirectly return 0 for other errors.\n\nChange-Id: I1599f20ecb26e9723f9fb384ffbf911ff3a2ce1c\n"
    },
    {
      "commit": "5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc",
      "tree": "e12cae6d070d56571a5ce2160199b4a54edd0f7a",
      "parents": [
        "1879fff068422852c1483dcf8365c2ff0e2fadfc",
        "d4070955e28ae62aa4be1657f9d32acde104bb86"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 07:20:47 2012 -0700"
      },
      "message": "Merge \"Remove dead code in libmedia\""
    },
    {
      "commit": "1879fff068422852c1483dcf8365c2ff0e2fadfc",
      "tree": "f374fae563e2854ce20b4da16e9cae0d883aecd7",
      "parents": [
        "bf04a5d7f287fc712e0ed91849dc85c90c1e182d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 13:43:08 2012 -0700"
      },
      "message": "Add tid parameter to IAudioFlinger::openRecord\n\nNot yet implemented\n\nChange-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4\n"
    },
    {
      "commit": "d4070955e28ae62aa4be1657f9d32acde104bb86",
      "tree": "4e289a66bb82da52f8e0e1c1691b35f1309d9f35",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:03:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 11:09:09 2012 -0700"
      },
      "message": "Remove dead code in libmedia\n\nChange-Id: I7d8201590cda29c9fa99662a4fdba222091febfe\n"
    },
    {
      "commit": "bf04a5d7f287fc712e0ed91849dc85c90c1e182d",
      "tree": "f9fd2ffd8df5a02c9c9373f5362da76204e5a676",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:07:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:36:34 2012 -0700"
      },
      "message": "Simplify AudioRecord::getInputFramesLost()\n\nThis also fixes a benign race in reading mActive without a lock.\n\nChange-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "f89a0deef1ecafcba164045b76d4d6c7bf8eb24d",
      "tree": "2791c97dc25f847e89c4be5d5649600139cceab6",
      "parents": [
        "94479fd5405642c67efd14cebe722feb9cbe6e77",
        "d3a9ff4b725de612bf0354c035ba8f8564dbc6e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:23:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 10 08:23:31 2012 -0700"
      },
      "message": "Merge \"Move declarations of local variables to first use\""
    },
    {
      "commit": "dd8104cc5367262f0e5f13df4e79f131e8d560bb",
      "tree": "46c95f24576ec352d7d5d363606db9a46a44e9c3",
      "parents": [
        "f1da96d8cf60842538e00a9c950cc451f7da2c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:42:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:24:45 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),\ndeclare input parameter to use correct type audio_channel_mask_t.\n\nIn IAudioFlinger::getInputBufferSize(), input parameter is now channel mask\ninstead of channel count.\n\nRemove unused IAudioFlinger::channelCount(audio_io_handle_t).\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965\n"
    },
    {
      "commit": "20010053daabfa43fcfe781bbf004473b4c08538",
      "tree": "f34948205baac68d57000467e9877a0041249d33",
      "parents": [
        "624a7fcb377f2a40109c16de5109ae8ea1f67a69"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:43:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 13:51:10 2012 -0700"
      },
      "message": "Remove acoustics from AudioSystem::getInput()\n\nChange-Id: I29fb3ee5664c1f0ee0409c1bb2be087ecca637db\n"
    },
    {
      "commit": "624a7fcb377f2a40109c16de5109ae8ea1f67a69",
      "tree": "9082c6373d7a8c904183ba745697938ca30fda68",
      "parents": [
        "70be725da4d8aafb94d47c1962e897ecd5fdf823"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:24:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 10:03:30 2012 -0700"
      },
      "message": "Use audio_channel_mask_t in AudioRecord\n\nChange-Id: I9e1b918b2635d961604a4a9d88eb1c7179a167a7\n"
    },
    {
      "commit": "868a6a357018e5872e064b7a13a9b891e2078962",
      "tree": "66888ef3311ea9973ef85f31abc130a35e7d6392",
      "parents": [
        "46ec58976b3c04a99ce6e7eda2531543bfb151c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:22:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 25 09:31:55 2012 -0700"
      },
      "message": "Include what you use\n\nChange-Id: I12ef9367d05dbe069c037b1b4acd6347a8cf3ece\n"
    },
    {
      "commit": "f92eec53f886f43e4374a36195be55f2a7bbcf36",
      "tree": "e6db36a4f5ffb47782d0614f1defc783fcb436c0",
      "parents": [
        "a43787a8cc513715543fb5c80c7c464e2cd51b6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 08:16:36 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 13:49:03 2012 -0700"
      },
      "message": "Remove AudioRecord record_flags\n\nChange-Id: I021ddcc1bcb63132a4597d13e3d09db2a5f2c628\n"
    },
    {
      "commit": "d3a9ff4b725de612bf0354c035ba8f8564dbc6e8",
      "tree": "6352c2917870180111ebb84d3b1839ac2392bdae",
      "parents": [
        "a43787a8cc513715543fb5c80c7c464e2cd51b6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:11:38 2012 -0700"
      },
      "message": "Move declarations of local variables to first use\n\nChange-Id: I48b193a742b32b6746aa938b84dc405124a6a5c3\n"
    },
    {
      "commit": "4ebbabda6584aeb5ad2714e7db1702d00e84dad4",
      "tree": "275cd8ce57285b2bdcfa7e7f3668bf5d26de5718",
      "parents": [
        "c3c044ab1b2b5f9bebcff610795b6a1a9b60d01b",
        "192cbbad773979a6fe3b5a0c223356de4fc3309c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 14 12:12:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 12:12:52 2012 -0700"
      },
      "message": "am 192cbbad: Fix audio track pause.\n\n* commit \u0027192cbbad773979a6fe3b5a0c223356de4fc3309c\u0027:\n  Fix audio track pause.\n"
    },
    {
      "commit": "192cbbad773979a6fe3b5a0c223356de4fc3309c",
      "tree": "23bdbff8fd2a2b88a63a54287c6112908b050fb7",
      "parents": [
        "82233b4b5bee06f11618a558ae465abbfdedfd6e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 13 08:38:36 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 14 10:56:59 2012 -0700"
      },
      "message": "Fix audio track pause.\n\nAudioTrack::pause() should signal the control block condition\nto release threads waiting for available buffers in obtainBuffer().\nOtherwise the behavior relies on the timout on the condition\nor the fact that audioflinger will mix a new audio buffer while executing\nthe pause.\n\nBug 6653769.\n\nChange-Id: I5f8f73c471fe306070f30b814f32fd4b4dc1d575\n"
    },
    {
      "commit": "48a0bfa6f731386f2794ff36d6677d56e98fc6ea",
      "tree": "36deb7b4e31a25a8a4b313de8ffdecd1d8ae9aaa",
      "parents": [
        "cc0df657cdc8316c2b816c562f269be1706f00ea",
        "49dd5cf3469cd755321f8ec10013ad4fcfaf723d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 08:43:56 2012 -0700"
      },
      "message": "am 49dd5cf3: Merge \"Log track name on obtain/releaseBuffer warnings\" into jb-dev\n\n* commit \u002749dd5cf3469cd755321f8ec10013ad4fcfaf723d\u0027:\n  Log track name on obtain/releaseBuffer warnings\n"
    },
    {
      "commit": "0c9d26d187017f7fb028ab52a0fbc6395142faa4",
      "tree": "35fd2f6babef082b85058fd27a69bda048687295",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:35:01 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 15:12:42 2012 -0700"
      },
      "message": "Log track name on obtain/releaseBuffer warnings\n\nThis should help diagnose problems by allowing us to correlate\nthe logs with the dumpsys media.audio_flinger output.\n\nChange-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9\n"
    },
    {
      "commit": "ea5008d8abfdf1479b4efa266cdb7c842d168aa9",
      "tree": "d963ca5cf87c18f8d14d6c1cce77edb9f56c96ac",
      "parents": [
        "98e2e030231ce99a4796d34d39a7517078d6735e",
        "28ed2f93324988767b5658eba7c1fa781a275183"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 10:28:45 2012 -0700"
      },
      "message": "am 28ed2f93: Reduce underruns in screen off, esp. with EQ\n\n* commit \u002728ed2f93324988767b5658eba7c1fa781a275183\u0027:\n  Reduce underruns in screen off, esp. with EQ\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "721e18b75824eae3f3e79c915f4800ecad5dac80",
      "tree": "37035a80c39e676fefac4b65e3d26f37e9682a20",
      "parents": [
        "386f04ea89f858ae1a1865b6d92ae30a87930151",
        "27d33134130379cc91d936cdc742700311901a9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 19:59:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 31 19:59:12 2012 -0700"
      },
      "message": "am 27d33134: Merge \"Do not keep audio wake lock when apps underrun.\" into jb-dev\n\n* commit \u002727d33134130379cc91d936cdc742700311901a9d\u0027:\n  Do not keep audio wake lock when apps underrun.\n"
    },
    {
      "commit": "df839841d2db4cb8e2acb10205b3942622b3e7a2",
      "tree": "183ce49d98a66d866aeed85e98da6709206074ac",
      "parents": [
        "83410a85993ad6f5f0c122036ff0bda42bf1d4f7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 14:27:14 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 31 14:32:38 2012 -0700"
      },
      "message": "Do not keep audio wake lock when apps underrun.\n\nDo not automatically restart an AudioTrack after an underrun\nif the callback is executed but no data is written by the app.\n\nBug 6541286.\n\nChange-Id: I11e7ab8dc968d7ff087058fec68f44490d3a7731\n"
    },
    {
      "commit": "3c8889e827d95b195fe5ba077a01cb5b6042e534",
      "tree": "21f0fb2ccaa4a7643733d3f80e1443d62f44a447",
      "parents": [
        "cba7b32d8f2c47632313f54118ed3733b4b02cc8"
      ],
      "author": {
        "name": "Bernhard Rosenkraenzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Mar 29 11:38:59 2012 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu May 24 06:48:23 2012 -0700"
      },
      "message": "libmedia: Fix build with gcc 4.7\n\ngcc 4.7 doesn\u0027t like the redefinition of n in the same\nscope:\nfor(size_t n\u003d...;;) {\n  size_t n \u003d 2; // \u003c-- duplicate definition\n}\n\nChange-Id: Idfc2e768a0eb85a3dacccd3431b4ad44775432a4\nSigned-off-by: Bernhard Rosenkraenzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "2986460984580833161bdaabc7f17da1005a8961",
      "tree": "bd8aa210c0faee61dc45e23479e29cfc85f313c2",
      "parents": [
        "dfa29ab13647f22b30b2de34d4830c9e815bf120"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 18:57:51 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 17:20:12 2012 -0700"
      },
      "message": "Fix issues with synchronous record start.\n\n- Added a timeout in case the trigger event is never fired.\n- Extend AudioRecord obtainBuffer() timeout in case of\nsynchronous start to avoid spurious warning.\n- Make sure that the event is triggered if the track is\ndestroyed.\n- Reject event if the triggering track is in an incompatible state.\n\nAlso fix a problem when restoring a static AudioTrack after\na mediaserver crash.\n\nBug 6449468.\n\nChange-Id: Ib36e11111fb88f73caa31dcb0622792737d57a4b\n"
    },
    {
      "commit": "093000f7d11839b920e8dfaa42ed1d09f48e24b8",
      "tree": "ffecb5126696e2c2c83980ce8ad561b60278064a",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 03 09:35:36 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 03 10:05:00 2012 -0700"
      },
      "message": "Don\u0027t allow AudioTrack frameCount to decrease\n\nThis is a workaround for bug that client can cache return value of\nframeCount(), and is not notified when this value changes due to automatic\nre-recreation of the underlying IAudioTrack.\n\nA better long-term fix would be to notify clients when these kinds of\nparameters change, and to fix assumptions in client code that they are\nconstant (e.g. in SoundPool and maybe obtainBuffer).\n\nAlso, once a fast track request is denied, don\u0027t request it again.\n\nBug: 6431187\nChange-Id: I55b4ff30bbd9ed3a402e39452a38de52cdea53a9\n"
    },
    {
      "commit": "f4022f90db5acb680870db8c1150b673cdd211d9",
      "tree": "0ffaec361f808d5710d42298fa7d01873771cf6c",
      "parents": [
        "2c3297ab6c4daaaa7b27eed8418c64cf168fe2a1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:34:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:37:55 2012 -0700"
      },
      "message": "Fix race in AudioTrack destruction\n\nBug: 6427369\nChange-Id: Id3b4487406235b881f6f0b4b95c5a02a9b797e75\n"
    },
    {
      "commit": "31dfd1db7a4d2228d9642008af6f3dd744368eb6",
      "tree": "5182b898a5f21161ea879c4fe173f91d54366fd7",
      "parents": [
        "2409e4337b1e5968cbf75a839778f849266b64d9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 11:07:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 11:07:48 2012 -0700"
      },
      "message": "Disable fast track log spam\n\nexcept for \"denied by client\" and \"denied by server\"\n\nChange-Id: I133ab747933729cc1f386813ee06ece055bdb294\n"
    },
    {
      "commit": "1477e92867a950016579a644e74f803ed1d90cbb",
      "tree": "30a701da9df8255a188cd061e65e1998d2aa1e6c",
      "parents": [
        "27431de020e535c31365884316f656bc60b4fe4f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 10:59:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 01 10:59:31 2012 -0700"
      },
      "message": "Enable fast track for SoundPool\n\nChange-Id: Ia80b3a7738e4c5dbe2bd5b0f55f0ca49943e2f64\n"
    },
    {
      "commit": "98f153091e8f4190b35b9ce15250f308baf4805c",
      "tree": "00b1fe25cfb34a609fd09b477b905c3f37d271ec",
      "parents": [
        "6e66e4a9ffcb202beb2bcedb85c7d6f9ff391b4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 16:48:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 30 16:00:05 2012 -0700"
      },
      "message": "Re-enable fast track for ToneGenerator\n\nChange-Id: If4152169778df124c750dc45023322ee23c80587\n"
    },
    {
      "commit": "f60c660f048d5f5e2458cff243c20400d73757a7",
      "tree": "b2bf22e36da46fd25979df618f8661b4b0510dad",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 21:58:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:18:24 2012 -0700"
      },
      "message": "Added support for HE-AAC recording\n\nFixed bug in decoder related to sample rates / channel counts\nMade decoder follow Fraunhofer pattern\nLog if bitrate not available\nBug: 6275957\n\nChange-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe\n"
    },
    {
      "commit": "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b",
      "tree": "f8b459d895acef1717c96cb7133675dda3e458b7",
      "parents": [
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:14:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:02:58 2012 -0700"
      },
      "message": "Add Fraunhofer AAC encoder with AAC-ELD support.\n\nChange-Id: I6cd499d257d72f50a5b508bed97796a591a51506\n"
    },
    {
      "commit": "e0fa467e1150c65a7b1b1ed904c579b40f97c9df",
      "tree": "44ae1e182fd15695fccf5d1f396f99edc7942ee5",
      "parents": [
        "e370bb62b89d2f2980f519392010ea08a24c558e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 14:35:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 18:41:32 2012 -0700"
      },
      "message": "Move frame count calculations for fast tracks\n\nFor fast tracks: move the default and minimum frame count calculations\nfrom client to server.  If accepted, the default and minimum frame count\nis the fast mixer (HAL) frame count.  If denied, the default and minimum\nframe count is the same as it currently is for normal tracks.\n\nFor normal tracks: there is no change yet, preserve legacy behavior for\nnow but add a FIXME to change this later.\n\nBug fix: the test for buffer alignment matches channelCount was wrong.\n\nBug fix: check for 8-bit data in shared memory, which isn\u0027t supported.\n\nOptimizations:\n - in set(), only call AudioSystem::getOutputSamplingRate() when needed\n - in createTrack_l(), only call AudioSystem::getSamplingRate() and\n   AudioSystem::getFrameCount() when needed\n\nChange-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f\n"
    },
    {
      "commit": "a636433cbd09c0708b85f337ef45c0cdef3bcb4d",
      "tree": "8a629f33d648d1ddd8b79305f02763c539fef7cd",
      "parents": [
        "9adb12830ac2da72c91b842d24725ced6d236b16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 19 09:35:04 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 16:54:41 2012 -0700"
      },
      "message": "Use C APIs instead of C++ APIs for policy\n\nThe C++ APIs are going away.\n\nNote: we use tid \u003d\u003d 0 which is not supported yet by the C APIs,\ndo not submit this until that is added.\n\nChange-Id: I0e90789e6c81c69f2544e899c52421ea5d1342be\n"
    },
    {
      "commit": "ca8b28013c0558a4a3323a1a0f58520277200086",
      "tree": "56e351a74a524a059ed1759a6612cf88f6fd5b82",
      "parents": [
        "4a6c9c59a0297c3c6fcfadddaed7a9a976046daf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 13:58:16 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 14:15:45 2012 -0700"
      },
      "message": "Fix regression in AudioTrack::pause()\n\nBug: 6379646\nChange-Id: I12b53bc4118499ddc73a53a981f3f56328140868\n"
    },
    {
      "commit": "1d685d767a5dd1003eb62f6ad1a26b39645a474f",
      "tree": "7cd0c7e395f7072994dfcd34f3421c1f17db138d",
      "parents": [
        "0818e739bdbcf16f6dfb21d507002ceaaf664ee4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "message": "Fix ToneGenerator regression\n\nBug: 6378847\nChange-Id: Ib3324c7a5951ac95f99993bfae27ea02bfda08ff\n"
    },
    {
      "commit": "3acbd053c842e76e1a40fc8a0bf62de87eebf00f",
      "tree": "1d6dcc01039a1af770131c6b427efa27a2e5755f",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 10:39:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:50:01 2012 -0700"
      },
      "message": "Configure policy of mediaserver threads\n\nChange-Id: Ifd825590ba36996064a458f64453a94b84722cb0\n"
    },
    {
      "commit": "1948eb3ea6eee336e8cdab9b0c693f93f5f19993",
      "tree": "448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 16:50:19 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 14:17:02 2012 -0700"
      },
      "message": "Add support for deep audio buffers\n\nAllow AudioSink to use deep audio buffering when the\nsource is audio only and its duration is more than\na certain threshold.\nThis helps improve battery life but implies higher\naudio latency.\n\nChange-Id: Ie79915b61c370292f05aabda9779356570e03cbb\n"
    },
    {
      "commit": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60",
      "tree": "50cbb5bf04e41f33392563ca8847aaec8311cd3d",
      "parents": [
        "324c81a9f45614cb1d924ba0bcecddc120b2d69f",
        "3476de62fb10e76412452ef4c6bd71936c9f7db1"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "message": "Merge \"Add support for scaling mode parameter\""
    },
    {
      "commit": "3476de62fb10e76412452ef4c6bd71936c9f7db1",
      "tree": "9c814922fd33670a7cdd23c9597cbd19ad5e1ef9",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Apr 15 17:15:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:27:39 2012 -0700"
      },
      "message": "Add support for scaling mode parameter\n\nSupport VISUALIZER_PARAM__SCALING_MODE parameter.\n\nModify process() function to use new volume scaling parameter,\n used to set whether captured values are maximized by current\n headroom in the buffer (default existing behaviora) or left\n as is and thus affected by volume.\n\nModify AudioEffect to allow subclasses to override the following\n events: control status changed, enable status changed, command\n executed.\nIn Visualizer class (a subclass of AudioEffect), reset the\n scaling mode and capture size on the actual effect\n as cached when control is regained.\n This will allow the effect to be properly\n configured whenever Visualizers with different scaling\n modes or capture sizes are released (e.g. from java\n release() method).\n\nChange-Id: I05cb9f925a296dceca91bafa9fe294ef2b2c2bd5\n"
    },
    {
      "commit": "0ca3cf94c0dfc173ad7886ae162c4b67067539f6",
      "tree": "bc156e7822e663626b78ec2ad09ef3970fbb48c5",
      "parents": [
        "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 09:24:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 15:04:46 2012 -0700"
      },
      "message": "rename audio policy output flags\n\nChange-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312\n"
    },
    {
      "commit": "eee482b84bb456e87fa42e8ad02fd2d803839586",
      "tree": "0e89c90dc86877dcfbc05b88f609bafc04886e34",
      "parents": [
        "4e2293f29f2e719af1245d365747ea06d074b345",
        "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "message": "Merge \"ToneGenerator requests fast track\""
    },
    {
      "commit": "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9",
      "tree": "1de225f1859d80bff8323c89411e6fb4515ec4ac",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 11 12:33:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 15:56:17 2012 -0700"
      },
      "message": "ToneGenerator requests fast track\n\nAlso add comments to AudioTrack::set() parameter list\n\nChange-Id: I28c76e9d813778d86b15d75cf7f01a17c258b6d9\n"
    },
    {
      "commit": "77d837ae86c791c46ce019b58e09ac62780bf973",
      "tree": "4d4b7ec2d5a4699dc0c6fb650d6ff2c5c7242ebe",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "message": "Order of evaluation of parameters is not specified\n\nChange-Id: Id545e54c2ec8ed2f70ede630542ed999a9b2c5e2\n"
    },
    {
      "commit": "705868c0f2a6e85a39addefe4db9f2130627c219",
      "tree": "bf8bc411b75def4b2a70589290cb3343bf8189e8",
      "parents": [
        "e5becb51c64cb8a3f6bbd8a417f54510567f37dd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "message": "Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.\n\nChange-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf",
      "tree": "ae217f5c50a37349dce944c5d8a065a8740c88a9",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 11:06:28 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 12:16:27 2012 -0700"
      },
      "message": "New API to support submitting encrypted buffers to the decoder.\n\nChange-Id: I69dd60e43078c4211c6123cf6e0ce90e676bf873\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "a4c5a550e2a3bc237179b8684e51718e05894492",
      "tree": "be7b6d154763ed772738a0126d10e6317920767d",
      "parents": [
        "1a9ed11a472493cac7f6dfcbfac2064526a493ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 10:12:40 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 04 08:44:57 2012 -0700"
      },
      "message": "audio policy: load audio hw modules.\n\nAudio HW modules are now loaded upon request from audio policy manager\naccording to the configuration in audio_policy.conf.\nRemoved hard coded HW module loading by AudioFlinger at init time.\nAdded methods to IAudioFlinger and AudioPolicyInterface\nto control the loading of audio HW modules.\nAdded methods to open an output or input stream on a specific hw module.\n\nChange-Id: I361b294ece1a9b56b2fb39cc64259dbb73b804f4\n"
    },
    {
      "commit": "1a9ed11a472493cac7f6dfcbfac2064526a493ed",
      "tree": "5f4a3c6856f294b3c0371afd87df96277215107b",
      "parents": [
        "290ca3a767a974ce9d041e5bcb0c69153f7851d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 18:36:01 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 16:53:25 2012 -0700"
      },
      "message": "audio policy: add configuration file\n\nremoved outputs to stream mapping cache in audio system: the output for a\ngiven stream type must always be queried from audio policy manager as the cache\nis not always updated fast enough by audioflinger callback.\n\nremoved AudioFlinger::PlaybackThread::setStreamValid() not used anymore if\nstream to output mapping is not cached.\n\nChange-Id: Ieca720c0b292181f81247259c8a44359bc74c66b\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "2d6486f9112a6f0d23f17eaaad94bac62e16caab",
      "tree": "72c98b32d9865c49038dac2189dd13b410eef511",
      "parents": [
        "dca856f5cb849b8feab2d24f3248f25d887211ee",
        "edf47a8cba2d1d8985b64bf4a4fac661ba34f35a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "message": "Merge \"Update AudioParameter\""
    },
    {
      "commit": "4a4a0959bca78e03e3c3f486ba17829c28314d8c",
      "tree": "5fbfe5302ca28741483ae64d0ccf2630830f167e",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 11:38:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 07:34:39 2012 -0700"
      },
      "message": "AudioTrack client fast policy\n\nChange-Id: I42ce691df3f586ac061b62237f35a263a0116f1f\n"
    },
    {
      "commit": "edf47a8cba2d1d8985b64bf4a4fac661ba34f35a",
      "tree": "b97857a666d64b1633ba6598db61158010de4cc8",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 01 13:49:17 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 01 13:49:17 2012 -0700"
      },
      "message": "Update AudioParameter\n\nUse definitions for AUDIO_PARAMETER_STREAM_* from \u003chardware/audio.h\u003e\ninstead of repeating these constants.\n\nString constants are const char * const.\n\nChange-Id: I1c9ebe0bc9c827d719d3181aea55251c6db28ec4\n"
    },
    {
      "commit": "a1472d9883e35edd280201c8be3191695007dfd4",
      "tree": "22d33eed0e95560b5fe989ace6a2e0f53aff3790",
      "parents": [
        "40a1da57d21bbc883630e7a854a279685fe1fa61"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 30 14:36:54 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 30 21:21:36 2012 -0700"
      },
      "message": "Make AudioTrack/AudioRecord handle more than 2^32 frames\n\nb/6160363\nChange-Id: I471815012c6a113ec2c4dd7676e8fa288a70bc76\n"
    },
    {
      "commit": "a011e35b22f95f558d81dc9c94b68b1465c4661d",
      "tree": "3f8c46c8c7e30f36c3b629174a26bc4ca2a860b2",
      "parents": [
        "b4c0c4b800332fe55c60aa328ece8d849cee3a4d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 15:51:43 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 19:50:49 2012 -0700"
      },
      "message": "implemented synchronous audio capture\n\nAdded the infrastructure to support the synchronization of playback and\ncapture actions on specific events.\nThe first requirement for this feature is to synchronize the audio capture\nstart with the full rendering of a given audio content.\nThe applications can further be extended to other use cases\n(synchronized playback start...) by adding new synchronization events and\nnew synchronous control methods on player or recorders.\n\nAlso added a method to query the audio session from a ToneGenerator.\n\nChange-Id: I51f1167290d9cafdf2fbcdf9e4785156973af44c\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "15147270aa1c56503902b424f946389294875665",
      "tree": "921f7bb25e8b743485ccc62bc6ee5ddaa345fb54",
      "parents": [
        "b14f18245d64b38aae1c02db79b2ad516d69891c",
        "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "message": "Merge \"Provisional support for secure decryption of media streams.\""
    },
    {
      "commit": "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6",
      "tree": "99d5bb3a2f48f9a3ba3eaaf17e630b589e97bef1",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "131c36ef343a604e9aee10c830ebe9c55a743379",
      "tree": "67c436447533b4074c1823865550ca1885bb33e7",
      "parents": [
        "1f08900408927bd2b3bef59aaa15ab68ec765c06",
        "2e66a7896c9a9da3a15fc6cff9be28b4174d8719"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "message": "Merge \"reorganize SoundPool and JetPlayer code.\""
    },
    {
      "commit": "1f08900408927bd2b3bef59aaa15ab68ec765c06",
      "tree": "30e562853bad2571ad87381d21df89e73e7b18ad",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5",
        "60d3a4160f3edb38fa6168237f3275f4d6d9e019"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Mar 26 11:22:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:22:29 2012 -0700"
      },
      "message": "Merge changes Ib4d0e0c0,Iea8f4a23\n\n* changes:\n  libmedia: remove skia include\n  stagefright: remove dependency on skia\n"
    },
    {
      "commit": "2e66a7896c9a9da3a15fc6cff9be28b4174d8719",
      "tree": "bc6d8e86ae45de8f4b1a36eda9d11f774bde9bea",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:47:22 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:54:41 2012 -0700"
      },
      "message": "reorganize SoundPool and JetPlayer code.\n\nReorganize SoundPool and JetPlayer code to be ready for the\ncreation of libmedia_native.\n\nSplit SoundPool between libsoundpool (JNI) and libmedia(sound pool implementation).\nRemove dependencies on nativehelper/jni.h from JetPlayer.\n\nChange-Id: I130c6014173b714329929dd82c5dfb70b757a610\n"
    },
    {
      "commit": "b83d38feeeb88a8a2a6219e1fca2480b5a14fb0d",
      "tree": "7e1392f0427d0300d8140ef0a6c18dc32f393831",
      "parents": [
        "8f7f7ad54c698cb57a2a369cf1ae5b917853917b",
        "a075db4ff9b086ac2885df77bb6da0869293df92"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "message": "Merge \"IAudioFlinger::createTrack and openRecord flags\""
    },
    {
      "commit": "60d3a4160f3edb38fa6168237f3275f4d6d9e019",
      "tree": "0ecdd2331efce8864a802d4021686e6c1c2de25b",
      "parents": [
        "26a417f68526fee861bb527f1a4e3ed548979f93"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 16:09:29 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 23:34:44 2012 -0700"
      },
      "message": "libmedia: remove skia include\n\nskia is not used in this file, remove the unnecessary include.\n\nChange-Id: Ib4d0e0c0090c6b37ff8cfb816c0d8ba82a9638a4\n"
    },
    {
      "commit": "3ee26944b082def647fe5bb2b75116ffb0267059",
      "tree": "61d6c7d15b281eb465f6af35365428e3762f13cf",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:48:40 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:59:14 2012 -0700"
      },
      "message": "Remove JNI in LOCAL_C_INCLUDE from non-JNI related Android.mk files.\n\no related-to-bug: 6214141\n\nChange-Id: Ic88d1732b3e014af47532a0809e01f6086e8464d\n"
    },
    {
      "commit": "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883",
      "tree": "17179b49680f4c242c80ecd1dc9887fcab6ecbdb",
      "parents": [
        "fdac94af1d925a983f63aa50d50f1e1559844928",
        "78b5e82f421bfdf5c1c72bd0ca2fb7f3bc1a45ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:06:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:06:00 2012 -0700"
      },
      "message": "Merge \"Revert \"Split libmedia into libmedia and libmedia_native\"\""
    },
    {
      "commit": "78b5e82f421bfdf5c1c72bd0ca2fb7f3bc1a45ff",
      "tree": "b3446119a9b6c03dcca98d1d9ee31a83adb8acad",
      "parents": [
        "c524ffda17017d8467a237a1eddfd7e7c03c6617"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:05:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:05:52 2012 -0700"
      },
      "message": "Revert \"Split libmedia into libmedia and libmedia_native\"\n\nThis reverts commit 0a3edd38df0743dcc7091bb7ebf29e7e7dadc7cb"
    },
    {
      "commit": "a411f779465504ff3e1a59c8ffa43d18385852b8",
      "tree": "a152f05bd2b5dd70ee5bfaa261fcbdeb5ee6d8ac",
      "parents": [
        "a98478bfbcc0f7fb4b164d3dce40ca96df75667d",
        "291f4d505aff81969e6666049d3cc3446f836af2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "message": "Merge \"Remove enforceFrameCount\""
    },
    {
      "commit": "c524ffda17017d8467a237a1eddfd7e7c03c6617",
      "tree": "f474647ebc3c87fe7aee804d558a3cfbd38fcfe3",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 09:08:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:45:29 2012 -0700"
      },
      "message": "Split libmedia into libmedia and libmedia_native\n\nThis is still in the old location\n\nChange-Id: Ic1be549b5b607cfd519cb4cecc581624510a4ee1\n"
    },
    {
      "commit": "291f4d505aff81969e6666049d3cc3446f836af2",
      "tree": "f2ad96c1acfb08c190148f8f12a7f86825cd7728",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:16:56 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:41:02 2012 -0700"
      },
      "message": "Remove enforceFrameCount\n\nIt was only used to decide whether to issue a warning.\nThe warning was issued the first time track was created but\nnot at re-creation.  Now it is a verbose message every time,\nnot a warning since it happens all the time with key clicks on A2DP.\n\nChange-Id: I9d39f53c0a7eb84b666e55b1b76ff830cf8f37ba\n"
    },
    {
      "commit": "63c1faa8dea7feb90255d31ef2a133d8f2818844",
      "tree": "973c66b51e7e85b6ea753b5643f7d99c66d82dde",
      "parents": [
        "7153494670bdac8b650cb10b8b1838651e0ca418",
        "17a736c3e1d062d7fc916329eb32aef8935614af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "message": "Merge \"Update comments\""
    },
    {
      "commit": "7153494670bdac8b650cb10b8b1838651e0ca418",
      "tree": "94c6c21f7100bdb9aefc82bb0c6d77482742a455",
      "parents": [
        "a26ff6f22f4e86d09514c2819237bd9748455018",
        "ea7939a079b3600cab955760839b021326f8cfc3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "message": "Merge \"Whitespace\""
    },
    {
      "commit": "ea7939a079b3600cab955760839b021326f8cfc3",
      "tree": "570fb56838735a46a28e28a4f083d763f758ea24",
      "parents": [
        "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:26 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:53:33 2012 -0700"
      },
      "message": "Whitespace\n\nFix indentation, and add blank lines in key places for clarity\n\nChange-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c\n"
    },
    {
      "commit": "1bb8e81b066a2311fd238fc6dae8f026e33ed99e",
      "tree": "b532516a844ab20331120a4d6f7777c27c36548c",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093",
        "b12153e36ae5e514d96c77d660b327d1a8f5000f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "message": "Merge \"Add libmedia_native\""
    },
    {
      "commit": "17a736c3e1d062d7fc916329eb32aef8935614af",
      "tree": "7fb73e48de8641ce6ad7b65fb4204bc60cd3e5f0",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 08:52:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 14:12:01 2012 -0700"
      },
      "message": "Update comments\n\nChange-Id: I327663a020670d0a72ff57bd0b682e2ce0528650\n"
    },
    {
      "commit": "a075db4ff9b086ac2885df77bb6da0869293df92",
      "tree": "2496dbf3d7fbb569b843780535bcea450157eb25",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 11:22:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 09:04:23 2012 -0700"
      },
      "message": "IAudioFlinger::createTrack and openRecord flags\n\ncreateTrack and openRecord don\u0027t need the \"old\" flags parameter,\nwhich was either audio_policy_output_t or audio_in_acoustics_t\nshifted left by 16 bits.  But they do need \"new\" flags, which\nare defined by the application use case.  Initially, the only\napplication use case flag is timed output, but others are planned.\n\nFor output, the audio_policy_output_t flags are passed to\nAudioSystem::getOutput, which returns an audio_io_handle_t, and that\nhandle is then passed to createTrack. So createTrack doesn\u0027t need the\nold flags parameter.\n\nFor input, the audio_in_acoustics_t flags are passed to\nAudioSystem::getInput, which returns an audio_io_handle_t, and that\nhandle is then passed to openRecord. So openRecord doesn\u0027t need the\nold flags parameter.\n\nChange-Id: I18a9870911846cca69d420c19fe6a9face2fe8c4\n"
    },
    {
      "commit": "b12153e36ae5e514d96c77d660b327d1a8f5000f",
      "tree": "fbfe8dc937f925b7075786b969522fb9012ae69b",
      "parents": [
        "6469edeeac6079b118e8f81252116c40574c9841"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:42:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:51:30 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7\n"
    },
    {
      "commit": "ab334fd351ae5a0e18903da123d63e565b536874",
      "tree": "9bcc5a6151326d9ca345f9dfac0d9d68d48e73b4",
      "parents": [
        "3c5bbaee376d235404f267fbe1693d1960bfaaef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 15 13:15:27 2012 -0700"
      },
      "message": "audio_channel_in/out_mask_from_count\n\nand avoid ambiguous term \"channels\" where it might be confusing\nas to whether it is a channel mask or channel count\n\nChange-Id: I744fa08ccb6001a98c97bd638d2c9d56836c4234\n"
    },
    {
      "commit": "33b383948e8f270bff30378476f00dce289004eb",
      "tree": "a42eeb76674395b36611da694166ddd4144a0fa8",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 15:59:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:44:34 2012 -0700"
      },
      "message": "Remove dependency on audio_* location\n\nChange-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8\n"
    },
    {
      "commit": "36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab",
      "tree": "eec0f805e2e83ed1d720519748527c03affafc29",
      "parents": [
        "5e7616cc0e5493241211333134555d74aec89982",
        "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44",
      "tree": "44092c52e8439f1991f23601287d424db916c814",
      "parents": [
        "887c5d2ac34d81bde66dadbd7b2ff07501744778"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\n"
    },
    {
      "commit": "5e7616cc0e5493241211333134555d74aec89982",
      "tree": "e2a972018a13cbf8c2ad6c3d7592dbbb73fec3a8",
      "parents": [
        "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
        "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "message": "Merge \"Switched to use the header files in /frameworks/native and deleted the duplicate header files in /frameworks/base\""
    },
    {
      "commit": "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
      "tree": "4bcde0bc9a797851ec1bee4f630c8c4f0735f623",
      "parents": [
        "b87396f9ebabbb7b47683bceca96cbe635a1ca00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 16:29:55 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 11:09:47 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nFix indentation to be multiple of 4.\nMake it easier to search:\n  sp\u003c not sp \u003c to\n  \"switch (...)\" instead of \"switch(...)\" (also \"if\" and \"while\")\nRemove redundant blank line at start or EOF.\nRemove whitespace at end of line.\nRemove extra blank lines where they don\u0027t add value.\n\nUse git diff -b or -w to verify.\n\nChange-Id: I966b7ba852faa5474be6907fb212f5e267c2874e\n"
    },
    {
      "commit": "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb",
      "tree": "307356be51d237ee22f88affdc3376270d571be9",
      "parents": [
        "aa4397f07c43bd83bc3100b749401dc3d15e7622"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 14:37:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 21:28:57 2012 -0700"
      },
      "message": "Switched to use the header files in /frameworks/native\nand deleted the duplicate header files in /frameworks/base\n\no related-to-bug: 6044887\n\nChange-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795\n"
    },
    {
      "commit": "18868c5db2f90309c6d11e5837822135e4a0c0fa",
      "tree": "58c7505f59a1a93ab729fc039aa5cb1eaa49652e",
      "parents": [
        "f2015b625cd6bea86da7401e725332c35b90e7cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:15:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:32:22 2012 -0800"
      },
      "message": "Use audio_policy_output_flags_t consistently\n\nThis affects:\n - IAudioFlinger::openOutput\n - AudioTrack::AudioTrack\n - AudioTrack::set\n - apps that call these\n\nChange-Id: I26fb281bac6cb87593d17697bc9cb37a835af205\n"
    },
    {
      "commit": "f2015b625cd6bea86da7401e725332c35b90e7cf",
      "tree": "3ec55cd1f89c6c1ae8ea4614e32c654df9c72869",
      "parents": [
        "5e9ce08417c36aa572c3f18b40ff9335d409b1e9",
        "679ab0b0792846a89162ce41c953819d70030112"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "message": "Merge \"Use AudioRecord::record_flags consistently\""
    },
    {
      "commit": "679ab0b0792846a89162ce41c953819d70030112",
      "tree": "ecd714f568d940051e492b313f3af5bd5d9b4193",
      "parents": [
        "f3c2e3bd65449b413c378219e08c71bf744cfbf3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:04:02 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 18:11:55 2012 -0800"
      },
      "message": "Use AudioRecord::record_flags consistently\n\nChange-Id: I6f369a2b99eb515603bc7d5629a07db2b96783fe\n"
    },
    {
      "commit": "a19ffb656616feec70613ba67ddfe15a504a4e76",
      "tree": "4fdde29e9a31aa2ea250b4d2cf2b26bc556d3432",
      "parents": [
        "5e5631bbf2403b8242e77977792318d65362ed91",
        "6374252107fd6539397598195ea6defd5870fafb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "message": "Merge \"audio policy: use audio_devices_t when appropriate\""
    },
    {
      "commit": "6374252107fd6539397598195ea6defd5870fafb",
      "tree": "ab13f5d0fd4aeaee695d58d7f8f4723d923754ae",
      "parents": [
        "f2eda12fb968829ee6f67e9b45e01eb4e2105c09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 13:42:42 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 15:57:09 2012 -0800"
      },
      "message": "audio policy: use audio_devices_t when appropriate\n\nChange-Id: I1b3a5879e81c789fb53d356af3d3a1ee2dca955f\n"
    },
    {
      "commit": "b81cc8c6f3eec9edb255ea99b6a6f243585b1e38",
      "tree": "a3cad338817394b18b441bbb3f31853bfd9ed4f5",
      "parents": [
        "f8edf68a1e39da273eafe8c85bdbedc26636c4ec"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 01 09:14:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 16:43:19 2012 -0800"
      },
      "message": "IAudioFlingerClient::ioConfigChanged param2 const\n\nThe 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged\nis used as an input.  So changed it from void * to const void *.\nIt is then cast to const OutputDescriptor *\nor const audio_stream_type_t * depending on the event.\n\nChange-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee\n"
    },
    {
      "commit": "d8d6185c978c9b27ca69e7791785e0983ed9e8b8",
      "tree": "cda49b71e787cf1bcf68671e237389f70706cff3",
      "parents": [
        "985ed9a1a22ec7e6e245d3fb8e93d3a23bdc539b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:06:40 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:18:36 2012 -0800"
      },
      "message": "AudioTrack: relax check on minimum buffer size\n\nCurrent AudioTrack implementation enforces that the requested audio\nbuffer size is at least corresponding the audio latency.\nThis requirement is too strong and leads to problems with current\nstagefright and AudioSink implementations when playing over output\nstreams with long latency.\n\nUltimately, the AudioSink design should be changed to specify a minimum\nbuffer size in time or frames units but not in buffer count units.\n\nChange-Id: I8ba603956f92ac49143a8249572665aa548f2f0f\n"
    }
  ],
  "next": "c795b64060c3af9d7961fc1371e4ccfa8ee3e450"
}
