)]}'
{
  "log": [
    {
      "commit": "5687da3359c7939dbd982de9fa2e5f19e41ae411",
      "tree": "d576294f7567041ffca6ed4443a0cb3132f55ac0",
      "parents": [
        "41acadea86b763f4cc6f7aeb292f943d4570ac90",
        "c95c2ddcdfc974f42408a377fbe2de51b94a8c94"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 29 09:20:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 09:20:25 2012 -0800"
      },
      "message": "Merge \"Separate the notion of \"stop\" from that of \"release\", i.e.\""
    },
    {
      "commit": "41acadea86b763f4cc6f7aeb292f943d4570ac90",
      "tree": "c494404370e89ef9d5fce555a91be9e75449b3f9",
      "parents": [
        "0f7affe1716dfd6687262008120ed128df1af214",
        "3254b25e8b0f674ccc2226609e01dd86a600802e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 28 18:49:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 28 18:49:34 2012 -0800"
      },
      "message": "Merge \"Moves TimedTextDriver.h into include/media/stagefright/timedtext.\""
    },
    {
      "commit": "c95c2ddcdfc974f42408a377fbe2de51b94a8c94",
      "tree": "24239ca3f0d24f790b73d92627de057f738f91d5",
      "parents": [
        "a3873833d518e032138cf70188b6f33cd7acec3d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 28 15:54:51 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 28 15:54:51 2012 -0800"
      },
      "message": "Separate the notion of \"stop\" from that of \"release\", i.e.\n\nstop - means transition back to LOADED state and keeping the component\ninstance allocated.\n\nrelease - means we get rid of the component completely.\n\nChange-Id: I40ad01ce70821faaad43f57999249904f9144924\n"
    },
    {
      "commit": "df712ea86e6350f7005a02ab0e1c60c28a343ed0",
      "tree": "75401d5ef563d1ae76aaae4965f65bb39f92736c",
      "parents": [
        "d3393c35259588e8ad61a43d1d1aa1568e943307"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "d3393c35259588e8ad61a43d1d1aa1568e943307",
      "tree": "7233201662164b0b3c6abe1e05cbfb079bf8756d",
      "parents": [
        "e628d515888baadba75442128678e747e930ed58"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 19:52:53 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:04 2012 -0800"
      },
      "message": "libagl shouldn\u0027t export anything\n\nChange-Id: Ia823dbc56aab2a0b8a6063df4348fe6baac124c6\n"
    },
    {
      "commit": "3254b25e8b0f674ccc2226609e01dd86a600802e",
      "tree": "04d681d4fc7da42266106bdf7ad5a3634d8bf989",
      "parents": [
        "1843df5b4f8f8f8394a96bcaeb5836d720ae9cf5"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Mon Feb 27 17:14:28 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Mon Feb 27 17:14:28 2012 +0900"
      },
      "message": "Moves TimedTextDriver.h into include/media/stagefright/timedtext.\n\nSo that other players can include TimedTextDriver.h properly.\n\nChange-Id: I15e72bf655de8555eef6244a6c853c27a0828a1d\n"
    },
    {
      "commit": "9eeafeb52fecf90882e9b44eeefcb7c3e16aa915",
      "tree": "0a09b02937d7097e042367163fbe4c9d4b5b2230",
      "parents": [
        "5ce96d97feafc6989f6141bb2633eae3d87ddf28"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 18:25:41 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 18:26:01 2012 -0800"
      },
      "message": "remove dependency on android_native{s_priv|buffer}.h\n\nChange-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89\n"
    },
    {
      "commit": "2d8bedd05437b6fccdbc6bf70f673ffd86744d59",
      "tree": "1a11658a7379249eb4f6bd73b356baa4a661f41e",
      "parents": [
        "79af02c6a813b5d31fba3e7b72686a02f0ae7e0f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 14:38:23 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 16:20:59 2012 -0800"
      },
      "message": "Add new APIs AMessage::(set|find)Buffer to make it safer to pass\n\nABuffer objects through messages.\n\nChange-Id: I9f8b4e4c4767d0d70a0105e0c0813b754379b49d\n"
    },
    {
      "commit": "5778822d86b0337407514b9372562b86edfa91cd",
      "tree": "b8faf8188dfb8865bd88b4dfc778a7d9ab89bb73",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 11:47:18 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 15:06:06 2012 -0800"
      },
      "message": "Implementation of a java media codec interface and associated tools.\n\nChange-Id: I13e54062d4de584355c5d82bb027a68aeaf2923b\n"
    },
    {
      "commit": "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99",
      "tree": "2c25b614a0145b4bbc35b835e89542489fbf6cf1",
      "parents": [
        "b9c769aa8ec26e25a7a61e14a9d521c2adf5b68d",
        "b575ddce78d266fa218006f90306158dda5c8f56"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 21 11:10:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 21 11:10:35 2012 -0800"
      },
      "message": "Merge \"Limit the amount of audio record data in each buffer\""
    },
    {
      "commit": "761defc341c5ce9019a42919c441f035f665ec0d",
      "tree": "23b76ab41456c90e80559ffbb7d8e31a38104dc4",
      "parents": [
        "ef7740be67a4d7b6b033ebed59c3d4a9c74a2c18"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 09 15:09:05 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:12 2012 -0800"
      },
      "message": "Upintegreate AAH TX and RX players from ICS_AAH\n\nUpintegrate the android at home TX and RX players developed in the\nICS_AAH branch.\n\nChange-Id: I8247d3702e30d8b0e215b31a92675d8ab28dccbb\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "4ff14bae91075eb274eb1c2975982358946e7e63",
      "tree": "e9e54fddb9832d30b69c2a11c9ed2884397f2f95",
      "parents": [
        "951bd8d1ad9581a414e171ad8605a9515d0ad667"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 08 16:37:41 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:11 2012 -0800"
      },
      "message": "Upintegrate Audio Flinger changes from ICS_AAH\n\nBring in changes to audio flinger made to support timed audio tracks\nand HW master volume control.\n\nChange-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "951bd8d1ad9581a414e171ad8605a9515d0ad667",
      "tree": "ff6c38d23fc61f39cbaa33b29a1bec5dd03c9d40",
      "parents": [
        "6dad4378f2a78d967defc8912ecf47f6ed117584"
      ],
      "author": {
        "name": "Mike J. Chen",
        "email": "mjchen@google.com",
        "time": "Mon Aug 15 11:59:47 2011 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:10 2012 -0800"
      },
      "message": "Upintegrate the common_time service from ics-aah.\n\nMove the common_time service developed in the ics-aah branch back into\nmaster.\n\nThe common_time service is a small service build to synchronize an\narbitrary timeline amongst peers on a local sub-net.  While running\nand configured, the service will elect a master from the set of\navailable devices within the subnet, define a relationship between the\ncommon_time timeline the local time timeline (provided by the local\ntime HAL), and then attempt to maintain synchronization between common\nand local time by controlling the frequency of the local time clock\nvia the HAL, or by disciplining local time in the digital domain if\nthe local time HAL implementation does not support HW slewing.\n\nOn its own, the native common time service will do nothing until it is\nconfigured.  The CommonTimeManagementService (running out of the\nsystem server process) is responsible for implementing policy\nregarding configuration and operation of the common_time service and\nwill be added in a subsequent CL.\n\nChange-Id: I71292f9b9b1797665865689c4572c9d3a0552f64\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "b575ddce78d266fa218006f90306158dda5c8f56",
      "tree": "b60d95b1f2b8cd5130e8ec6e1aef4f617d6076ca",
      "parents": [
        "7a8b0ed6419e57dd8b41d3806893d63d3df91aab"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 14 14:58:20 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 15 12:54:17 2012 -0800"
      },
      "message": "Limit the amount of audio record data in each buffer\n\no The size of each input buffer should be less than or equal to kMaxBufferSize\no related-to-bug: 5977032\n\nChange-Id: I04343169aac3df56694aad4ba7967ec45337ad7e\n"
    },
    {
      "commit": "d9b9b8d09e7471b0ffa21cfa9f944ef4ad300a71",
      "tree": "e2b8666cc7ca81254ce264129ddd70c076a63ed1",
      "parents": [
        "ed15977476a3d53103866e6d527fa3fb65d4166c",
        "99e53b86eebb605b70dd7591b89bf61a9414ed0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 09:42:32 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 09:42:32 2012 -0800"
      },
      "message": "Merge \"Update comments\""
    },
    {
      "commit": "99e53b86eebb605b70dd7591b89bf61a9414ed0e",
      "tree": "8939550ada02fe21121550a83952ebf7638c0dac",
      "parents": [
        "6dbc1359f778575d09d6da722b060a6d72c2e7c5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 08:59:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 09:17:59 2012 -0800"
      },
      "message": "Update comments\n\nWe no longer put the filename at start of file.\n\nChange-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e\n"
    },
    {
      "commit": "ed15977476a3d53103866e6d527fa3fb65d4166c",
      "tree": "8c42c9c2f1ecb0ee10359e806a68927e4d0697e9",
      "parents": [
        "8d6a2449a91f5116d7243ab039393195ebd663fe",
        "38f5d71e72f3b76c5b519614d27f051d53cd2712"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 09:09:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 09:09:03 2012 -0800"
      },
      "message": "Merge \"Remove dead code AudioTrack::getLoop\""
    },
    {
      "commit": "6dbc1359f778575d09d6da722b060a6d72c2e7c5",
      "tree": "721c46e8b89595b51a80ee71c71542895edc1308",
      "parents": [
        "7a8b0ed6419e57dd8b41d3806893d63d3df91aab"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 10:56:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 07:30:48 2012 -0800"
      },
      "message": "AudioRecord and AudioTrack client tid\n\nInform AudioFlinger of the tid of the callback thread.\n\nChange-Id: I670df92dd06749b057238b48ed1094b13aab720b\n"
    },
    {
      "commit": "7a8b0ed6419e57dd8b41d3806893d63d3df91aab",
      "tree": "da2076d221f7eb3e26db190d51173c04a91e0788",
      "parents": [
        "1f5ce8b0941c9c6baadd40d151634145f6d5a35c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 02 09:06:31 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 13 12:39:54 2012 -0800"
      },
      "message": "Playback rate on MediaPlayer\n\nAdd support for modifying the playback rate of a MediaPlayer\n by altering the sample rate of its AudioTrack.\nThe playback rate is expressed in permille, where 1000 is the\n playback at normal speed.\n\nChange-Id: I981d060ab32f7bae7a767e82c60c88ae635dceed\n"
    },
    {
      "commit": "f1d5aa162c02a16b7195a43a9bcea4d592600ac4",
      "tree": "dc270a6e1a4ee6695e309eeb29c4d9ed7f3a20a2",
      "parents": [
        "43089daaf82bd2b8e5f9a29b80af5abaae4657b3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 06 23:46:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 10 11:43:09 2012 -0800"
      },
      "message": "Move away from MediaDebug and use ADebug instead\n\nChange-Id: I963a3b6f79a7292891973cbeeaf3378b38629f08\n"
    },
    {
      "commit": "38f5d71e72f3b76c5b519614d27f051d53cd2712",
      "tree": "a27ac85c22bc55b10bdeeaa3bddaae473325caaf",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 14:12:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 14:12:12 2012 -0800"
      },
      "message": "Remove dead code AudioTrack::getLoop\n\nChange-Id: I868329c52f31bc20125f068500d8f892b4ec9796\n"
    },
    {
      "commit": "7ae4a2c130ec2cb5dec69d095b810698acc543b3",
      "tree": "40ab500ed6b99d4662be5abee1a8fe98f2d58902",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0",
        "000e18370baae60ffd9f25b509501dd8c26deabf"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 08 10:42:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 10:42:35 2012 -0800"
      },
      "message": "Merge \"Enable B frame support in MPEG4Writer\""
    },
    {
      "commit": "72ef00de10fa95bfcb948ed88ab9b7a177ed0b48",
      "tree": "beeaffd33a57a6cc5fa48f2fa905fc680c4746d1",
      "parents": [
        "dbfafaffe2e97eaf8d74ec6b6c468418a1ad2443"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:09:42 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 10:06:32 2012 -0800"
      },
      "message": "Use audio_io_handle_t consistently instead of int\n\nOther:\n - add a comment to nextUniqueId\n - made ThreadBase::mId const, since it is only assigned in constructor.\n\nChange-Id: I4e8b7bec4e45badcde6274d574b8a9aabd046837\n"
    },
    {
      "commit": "5e92a7861196ddae14638d4b7a63fc4892b7ef59",
      "tree": "6772b944a26acb22381a2eb38871b46cff9d856a",
      "parents": [
        "0a20fa9c41c96e31fa20e071074a4b6e7f6c41c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 07:40:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 09:21:39 2012 -0800"
      },
      "message": "Effect UUID inputs passed by pointer are const\n\nChange-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8\n"
    },
    {
      "commit": "b61ec89bb0c701b3bd06eb658f854230681f8b39",
      "tree": "d1281080768cd8ab98f97cc331e2e7bb27019059",
      "parents": [
        "63d2daed17ab749baa80bc808fb5083b688b771b",
        "1a0ae5be3d1273cba12584b33830d859510fbf82"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:40:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:40:15 2012 -0800"
      },
      "message": "Merge \"Don\u0027t double destruct audio_track_cblk_t\""
    },
    {
      "commit": "4f9b0c54011eb8fd2ccfb393c2dcd51cd07800e0",
      "tree": "318b28bb04ce0b4ce39f75f6a8dbac27cee1455c",
      "parents": [
        "86feafe15b3f9609e1e9f64184688c2b6f2e4834",
        "0e265cf36d201a7ccc0238b5c60b50f43d1dc450"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:34:33 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:34:33 2012 -0800"
      },
      "message": "Merge \"Remove dead mutex in AudioTrack/AudioRecord thread\""
    },
    {
      "commit": "f22147e5d2982e0c461f7ce8058c2d596d518bd4",
      "tree": "a0358efa5118e6a644c735b44c2378161ae0a8c6",
      "parents": [
        "1579d7948117e3e6541b0cfda02cc5234a3280ea",
        "a5224f319e2ba4b51ddb4287705ccf8d4b8ecc51"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:42:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:42:40 2012 -0800"
      },
      "message": "Merge \"AudioTrack declare more methods const\""
    },
    {
      "commit": "e98bbd36d67243fe987b09904956550a68af1cc7",
      "tree": "3ad396f50bb4ad8e1bbf9fa939c4978851ec998b",
      "parents": [
        "dfa75555098a385ac8f4d29a73b32d66501f133d",
        "f587ba5b991c7cd91e4df093d0d796bd419e5d67"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:39:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:39:27 2012 -0800"
      },
      "message": "Merge \"Declare more IAudioFlinger methods const\""
    },
    {
      "commit": "000e18370baae60ffd9f25b509501dd8c26deabf",
      "tree": "e447e9ceb46428f5f961534c38cef023e7206b3d",
      "parents": [
        "60c2b4ece6528d6d3f4e9e2c7e45772b65c4b87d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 06 23:46:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 07 18:32:29 2012 -0800"
      },
      "message": "Enable B frame support in MPEG4Writer\n\nThis patch allows us to automatically detect whether ctts box is needed in MPEG4Writer.\nMPEG4Writer uses ctts version 0 (non-negative offset value) store the composition time\noffset on a needed basis.\n\nCurrently, the size of the ctts box is not optimized. Optimization will be addressed\nin a subsequent patch.\n\no also changed the private method retrieveDecodingTime(bool) in OMXCodec\n  to getDecodingTime()\n\no related-to-bug: 4232183\n\nChange-Id: Ic6dc7b25ecd258c2506ca4b9c25156e922456e51\n"
    },
    {
      "commit": "60c2b4ece6528d6d3f4e9e2c7e45772b65c4b87d",
      "tree": "3df99c3e31172c3ffcb9361a46b68890891f5a0b",
      "parents": [
        "f9289a4ca88d8f72cb0d6b3ca16fbc44ef4a2aeb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Feb 04 06:19:50 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 06 12:17:44 2012 -0800"
      },
      "message": "Don\u0027t call virtual function in destructor of SurfaceMediaSource\n\nChange-Id: I3cbc2b1222335b61c814b5cdcfaefa495148b0ec\n"
    },
    {
      "commit": "f9289a4ca88d8f72cb0d6b3ca16fbc44ef4a2aeb",
      "tree": "72b693683dfd6405f6f8f70cdfde38b4b563c4c6",
      "parents": [
        "f3623993b78669a624d9b3a703b361ed6c035ad9",
        "b44c9d2bdc0d5b9cb03254022a58e017b516e9e6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Feb 04 05:54:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 04 05:54:54 2012 -0800"
      },
      "message": "Merge \"Don\u0027t call virtual functions in the destructor for audio and camera source classes\""
    },
    {
      "commit": "1a0ae5be3d1273cba12584b33830d859510fbf82",
      "tree": "8073be7b5e33ee230159f7c0aed22bb6de63d3f9",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 10:24:48 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 16:16:46 2012 -0800"
      },
      "message": "Don\u0027t double destruct audio_track_cblk_t\n\nFortunately audio_track_cblk_t doesn\u0027t have a destructor, but for clarity\nremove the double destruction.\n\nAlso add warning not to add any virtuals to audio_track_cblk_t.\n\nChange-Id: I70ebe1a70460c7002145b2cdf10f9f137396e6f3\n"
    },
    {
      "commit": "a5224f319e2ba4b51ddb4287705ccf8d4b8ecc51",
      "tree": "eb36f63045d044c840072ad95398d49b743cd6bd",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 12:41:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:48:25 2012 -0800"
      },
      "message": "AudioTrack declare more methods const\n\nChange-Id: I4999e984460893961d0d8092cff17f3cf07d7214\n"
    },
    {
      "commit": "f587ba5b991c7cd91e4df093d0d796bd419e5d67",
      "tree": "0fe274cdfa6dcae81617725b5ea376c86245b104",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 16:25:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:40:56 2012 -0800"
      },
      "message": "Declare more IAudioFlinger methods const\n\nThis is just documentation, as C++ method const-ness doesn\u0027t mean anything\nfor a binder API.  Instead, here const means \"no side effects\".\n\nChange-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6\n"
    },
    {
      "commit": "f3623993b78669a624d9b3a703b361ed6c035ad9",
      "tree": "a32c965376cfb2dfbb826a357907f3780a86711f",
      "parents": [
        "aad5bdff98ac5bc9be4288b5acf445465750711e",
        "8bcc65c753085fe3328592cceda0cf0e8f8b0a45"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 03 15:37:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 15:37:40 2012 -0800"
      },
      "message": "Merge \"Don\u0027t call virtual functions in destructors for the writer classes\""
    },
    {
      "commit": "787bae0578fbaab6219ebf23494866b224d01438",
      "tree": "935422276579d6f7c3b4e835e1a79bc9082a2b26",
      "parents": [
        "ff3c83e04ae459c4252b86dd4440b4e37ee92c16",
        "de9719b3ec71472e6bf75117152176af51d1a515"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 08:31:01 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 08:31:01 2012 -0800"
      },
      "message": "Merge \"Use audio_in_acoustics_t consistently\""
    },
    {
      "commit": "ff3c83e04ae459c4252b86dd4440b4e37ee92c16",
      "tree": "8de4de832991dd2086313b6168f8523d002f6251",
      "parents": [
        "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
        "3d2f877c1cb4e4ae4ddde7f57f4353de9341f11b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 08:00:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 08:00:52 2012 -0800"
      },
      "message": "Merge \"Use ToneGenerator::tone_type consistently\""
    },
    {
      "commit": "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
      "tree": "f052125f4720fde00179d41d4ee04e02934052e4",
      "parents": [
        "87f155d6655b2d3b27e69281a29e85c6407e4d26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:47:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:57:01 2012 -0800"
      },
      "message": "Use NULL not 0 for raw pointers\n\nUse if (p !\u003d NULL) instead of if (ptr)\n\nChange-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa\n"
    },
    {
      "commit": "62da7fbd60bee2dd57f503126266e9f04311d400",
      "tree": "22c9118701f42b77ed573001779390437d96872c",
      "parents": [
        "d45ee9d9d61af0791c7c3c51f8d4fe6794ef02a5",
        "83d86538c4c479a9225c75ab27938e8f05abb9c8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:18:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 07:18:06 2012 -0800"
      },
      "message": "Merge \"Make AudioTrack control block volume field private\""
    },
    {
      "commit": "b44c9d2bdc0d5b9cb03254022a58e017b516e9e6",
      "tree": "06a30f5984b5fd11da06bbc6bc7d8294f21d1ac2",
      "parents": [
        "2af955b7437ac5345d75a5e528ebbb749667af7e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 02 18:04:02 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 02 18:11:53 2012 -0800"
      },
      "message": "Don\u0027t call virtual functions in the destructor for audio and camera source classes\n\nChange-Id: Ia74ffc1c0cbd7971697f5e3c476e340ec5c7727a\n"
    },
    {
      "commit": "8bcc65c753085fe3328592cceda0cf0e8f8b0a45",
      "tree": "f7f9cff24dbf50e02f135b65bc1041e534c39d9c",
      "parents": [
        "2af955b7437ac5345d75a5e528ebbb749667af7e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 02 15:07:52 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 02 15:13:56 2012 -0800"
      },
      "message": "Don\u0027t call virtual functions in destructors for the writer classes\n\nHave not found any concrete bugs related to these calls yet, but we should avoid\ncalling virtual functions in destructors, regardless.\n\nChange-Id: I2d47b79d3fb2d29f418619bee83aa147d232a5d4\n"
    },
    {
      "commit": "457d4c01ec0e922771ef57158431f48e4d267905",
      "tree": "b0218b14a0b83343e151f2e5e3ec637210547abc",
      "parents": [
        "e336de43a7cf186fe9d5070f5badfad6e302d9e3",
        "211eeaf17e5565b68447d29799dbf158a33cf4cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 13:26:12 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 02 13:26:12 2012 -0800"
      },
      "message": "Merge \"More audio_stream_type_t\""
    },
    {
      "commit": "0e265cf36d201a7ccc0238b5c60b50f43d1dc450",
      "tree": "395a2c8f3685c1d1140f3ad12d2dff884d7db6ad",
      "parents": [
        "bf6954598193147cac980b8b5d7ad5215f1dec16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 10:52:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 11:23:30 2012 -0800"
      },
      "message": "Remove dead mutex in AudioTrack/AudioRecord thread\n\nThe client callback threads had mutexes called AudioTrackThread::mLock\nand ClientRecordThread::mLock.  These mutexes were only used by start()\nand stop(), and were unused by the thread itself.  But start() and\nstop() already have their own protection provided by AudioTrack::mLock\nand AudioRecord::mLock.  So the thread mutexes can be removed.\n\nChange-Id: I098406d381645d77fba06a15511e179a327848ef\n"
    },
    {
      "commit": "d459b485c61bd3e7fd81c5cd3af8ada27fc3e8d3",
      "tree": "394810d0fda09babebb89e1eff80ec54509c5a14",
      "parents": [
        "bb62819aa34b0e89090ccc50e5915e25bc137583"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 31 11:16:24 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 31 11:16:24 2012 -0800"
      },
      "message": "Slighly improve the API to discover if the OMX stack is running in the local\n\nprocess.\n\nChange-Id: Idd3c2f0d4a9542af01a3fdfd3b0bfab90e083505\n"
    },
    {
      "commit": "211eeaf17e5565b68447d29799dbf158a33cf4cf",
      "tree": "5b309757ae12403d5edd39f7e7d99cc3b405766c",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 09:37:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:33:43 2012 -0800"
      },
      "message": "More audio_stream_type_t\n\nChange-Id: I1260259efe0aa3fc1ef13de69758aaa592e1f815\n"
    },
    {
      "commit": "3d2f877c1cb4e4ae4ddde7f57f4353de9341f11b",
      "tree": "02ba1339028105733ff3897c5c72952781dc793d",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 15:25:25 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:01:44 2012 -0800"
      },
      "message": "Use ToneGenerator::tone_type consistently\n\nAlso remove defaults in startToneCommand(), they\u0027re not needed and the\ndefault for tone type was nonsense.\n\nChange-Id: I70fa8cee4f3dbb8c66ceb3719c8d3d2f447f05b9\n"
    },
    {
      "commit": "de9719b3ec71472e6bf75117152176af51d1a515",
      "tree": "d745196f8aa6832a18e380d78ad1bd1eae1e9e8f",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 12:32:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 13:31:54 2012 -0800"
      },
      "message": "Use audio_in_acoustics_t consistently\n\nChange-Id: I0a9dd668fb2e57b1c3ece3190588194974b99062\n"
    },
    {
      "commit": "fd267d7cf640225bb57f0ed1af44efc153275f6d",
      "tree": "c97f1923f3cf143a7a8cd94184335283100c6437",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27",
        "eba51fb3a361f67a6a64d5a16eba6084fe27d60e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 09:06:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 09:06:00 2012 -0800"
      },
      "message": "Merge \"Use audio_source_t consistently\""
    },
    {
      "commit": "eba51fb3a361f67a6a64d5a16eba6084fe27d60e",
      "tree": "2d3dc41818d33d596e66486dcf509086b9dde1e0",
      "parents": [
        "80a0d2de0a7db5cdcaf40fe33b14523b65d19423"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 23 13:58:49 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 16:50:19 2012 -0800"
      },
      "message": "Use audio_source_t consistently\n\nWas a mix of audio_source_t, uint8_t, and int.\n\nRelated fixes:\n - fix comments in MediaRecorder.java\n - AudioPolicyService server side was not checking source parameter at\n   all, so if the client wrapper was bypassed, invalid values could be\n   passed into audio HAL\n - JNI android_media_AudioRecord_setup was checking source for positive\n   values, but not negative values. This test is redundant, since already\n   checked at Java and now checked by AudioPolicyService also, but might\n   as well make it correct.\n\nChange-Id: Ie5e25d646dcd59a86d7985aa46cfcb4a1ba64a4a\n"
    },
    {
      "commit": "2b1892db4a2ab47bfc09e59a4c11751aea99e4ea",
      "tree": "7880f7f60262ced7a16fa7439ac0827b78c07d8d",
      "parents": [
        "244ffc8b98c8b59cf64ef3d368c3373014a2f230"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 26 14:39:50 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 26 15:45:38 2012 -0800"
      },
      "message": "The software AAC encoder is now an OMX component.\n\nYay.\n\nChange-Id: I74938a20b4e0a622836ea5184d3761180eb0f5de\n"
    },
    {
      "commit": "335787fe43596f38ea2fa50b24c54d0823a3fb1d",
      "tree": "8efb65da6c538ee243e4ac63541f8f815591aa7b",
      "parents": [
        "58f30210ea540b6ce5aa6a46330cd3499483cb97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:00:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:12:59 2012 -0800"
      },
      "message": "Remove AudioFlinger dependencies on client\n\nChange-Id: Ibb591e41a3ca5d7015e2b66b98b8fef5f415fb37\n"
    },
    {
      "commit": "83d86538c4c479a9225c75ab27938e8f05abb9c8",
      "tree": "72fdff9fb9bb7e41fe48c41bfed65ab83b64f85f",
      "parents": [
        "58f30210ea540b6ce5aa6a46330cd3499483cb97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 14:39:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 16:19:59 2012 -0800"
      },
      "message": "Make AudioTrack control block volume field private\n\nThis is part of the process of abstracting the control block\nto make it easier to maintain.\n\nChange-Id: Idb8f461e68dab3bcf268159cc0781651c6fb7094\n"
    },
    {
      "commit": "58f30210ea540b6ce5aa6a46330cd3499483cb97",
      "tree": "8c559ac8ca7892803b62e5e6d6018e9a4f4533a3",
      "parents": [
        "9bf3a2f69bbfa2562664181b779941e776b7e835"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 12:27:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 14:41:34 2012 -0800"
      },
      "message": "Use audio_format_t consistently, continued\n\nWas int or uint32_t.\n\nWhen AudioFlinger::format can\u0027t determine the correct format,\nreturn INVALID rather than DEFAULT.\n\nInit mFormat to INVALID rather than DEFAULT in the constructor.\nSubclass constructors will set mFormat to the correct value.\n\nChange-Id: I9b62640aa107d24d2d27925f5563d0d7407d1b73\n"
    },
    {
      "commit": "31acba114c686e7364fd8875c89e48acb32f9733",
      "tree": "2b40c021030aa3527c3bc2d982507a8c626c8a7f",
      "parents": [
        "d967f0a099db2b71597a3127134afd4a46287a4a",
        "03e9231e4f29a332df13d06bd90dc1fe28eb36e3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 12:15:38 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 12:15:38 2012 -0800"
      },
      "message": "Merge \"Remove dead file include/media/thread_init.h\""
    },
    {
      "commit": "ea3cc3bca949139e401b77f2ac0cce7ac6e76f8f",
      "tree": "461e74fe9f5d14b718732ff58edc35164827ae01",
      "parents": [
        "6f444c95d86936217bf49fc11d279851b0fa364d",
        "0b07b8085d7b837b4dd5f09e0c8c39408f6bdbf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "message": "Merge \"Remove dead setRingerMode(mode, mask)\""
    },
    {
      "commit": "03e9231e4f29a332df13d06bd90dc1fe28eb36e3",
      "tree": "6f8a67e165fc137edd1aa8dc265828bceb1dcd58",
      "parents": [
        "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 10:13:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 10:13:52 2012 -0800"
      },
      "message": "Remove dead file include/media/thread_init.h\n\nChange-Id: I98688bb7109b5f82953988935c7c33fe3c7f4ec0\n"
    },
    {
      "commit": "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9",
      "tree": "6bb67bb1bf2d9c069053a98a0a6d6a31bfa2fd02",
      "parents": [
        "241fc78866b2aefd75cd1890df5a75b7008728e8",
        "a3f1fa308728976fc9ca1b4f37d26e633b32b9ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "message": "Merge \"Fix incorrect includes of AudioTrack.h\""
    },
    {
      "commit": "a3f1fa308728976fc9ca1b4f37d26e633b32b9ac",
      "tree": "613598b5d86ce915b4f505c0d9c19592fa8f7d79",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:54:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 16:06:47 2012 -0800"
      },
      "message": "Fix incorrect includes of AudioTrack.h\n\nRemove unnecessary includes of AudioTrack.h.\nUse forward declaration of class names in preference to #include when possible.\n\nChange-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0\n"
    },
    {
      "commit": "0b07b8085d7b837b4dd5f09e0c8c39408f6bdbf7",
      "tree": "97068573fa84e254ad129147682603d5818c2ae2",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:56:06 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:10:31 2012 -0800"
      },
      "message": "Remove dead setRingerMode(mode, mask)\n\nChange-Id: Ia4cc8be8424a40b3dcb7ebd0264fdff4e5247f7f\n"
    },
    {
      "commit": "c813985abd8ba61e999b3505f6a332574f87a1be",
      "tree": "d87c4ec564d4f3d19db4c1032661799cce847617",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "message": "Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\n\nuntil we get updated prebuilts from vendor.\n\nChange-Id: I8aae81d2513edca0ab268053a11c8c4206879e61\n"
    },
    {
      "commit": "04eaf3e5f20d7faa956c0d672024ffb5117f4c26",
      "tree": "a1c32a1cd2e94f80e11748b6e56c0d7899492c11",
      "parents": [
        "63ad6aacc6ce6b729bf25f41376cfea731a2c1eb",
        "b1cf75c4935001f61057989ee3cf27bbf09ecd9c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "message": "Merge \"Track volume cleanup\""
    },
    {
      "commit": "63ad6aacc6ce6b729bf25f41376cfea731a2c1eb",
      "tree": "7f5a8de6e8540f2424668e5c650dee567194fb4d",
      "parents": [
        "f237a30e9344d43f832ba11db6f62c6ad2084444",
        "83844cc2f95dc279015b47fd1e18c7cb4eabe9a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "message": "Merge \"audio framework: manage stream volume per device\""
    },
    {
      "commit": "b1cf75c4935001f61057989ee3cf27bbf09ecd9c",
      "tree": "e3daaea6160475e36dedfccaabf5d8b94406d05e",
      "parents": [
        "f237a30e9344d43f832ba11db6f62c6ad2084444"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 12:20:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 16:25:17 2012 -0800"
      },
      "message": "Track volume cleanup\n\nAlways read and write track volumes atomically. In most places this was\nalready being done, but there were a couple places where the left and\nright channels were read independently.\n\nChanged constant MAX_GAIN_INT to be a uint32_t instead of a float.\nIt is always used as a uint32_t in comparisons and assignments.\nUse MAX_GAIN_INT in more places.\n\nNow that volume is always accessed atomically, removed the union\nand alias for uint16_t volume[2], and kept only volumeLR.\n\nRemoved volatile as it\u0027s meaningless.\n\nIn AudioFlinger, clamp the track volumes read from shared memory\nbefore applying master and stream volume.\n\nChange-Id: If65e2b27e5bc3db5bf75540479843041b58433f0\n"
    },
    {
      "commit": "83844cc2f95dc279015b47fd1e18c7cb4eabe9a1",
      "tree": "3e9f329efec962076a0904ce7f093a9a51bac6b1",
      "parents": [
        "263709e7be37c7040aaef385bc5c9389a9b5f514"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 18 16:43:31 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 15:15:04 2012 -0800"
      },
      "message": "audio framework: manage stream volume per device\n\nImprove volume management by keeping track of volume for each type\nof device independently.\nVolume for each stream (MUSIC, RINGTONE, VOICE_CALL...) is now maintained\nper device.\n\nThe main changes are:\n- AudioService now keeps tracks of stream volumes per device:\n volume indexes are kept in a HashMap \u003c device , index\u003e.\n active device is queried from policy manager when a volume change request\n is received\n initalization, mute and unmute happen on all device simultaneously\n- Settings: suffixes is added to volume keys to store each device\nvolume independently.\n- AudioSystem/AudioPolicyService/AudioPolicyInterface: added a device argument\nto setStreamVolumeIndex() and getStreamVolumeIndex() to address each\ndevice independently.\n- AudioPolicyManagerBase: keep track of stream volumes for each device\nand apply volume according to current device selection.\n\nChange-Id: I61ef1c45caadca04d16363bca4140e0f81901b3f\n"
    },
    {
      "commit": "0696400a6bb9abbed62b3b9c6aa105495dc600a2",
      "tree": "2368d7ccb33fbceb99585839b85420e38e59abf0",
      "parents": [
        "a9b21c5a7c24fe14d20372263c0bf5faf3d3e348",
        "f78aee70d15daf4690de7e7b4983ee68b0d1381d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "message": "Merge \"Use audio_mode_t consistently\""
    },
    {
      "commit": "a9b21c5a7c24fe14d20372263c0bf5faf3d3e348",
      "tree": "ae5642e47beac63937bc5e812532d3ddfd31507e",
      "parents": [
        "263709e7be37c7040aaef385bc5c9389a9b5f514"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "message": "Rename Visualizer::mLock\n\nThis avoids confusion with parent class AudioEffect\u0027s mLock which is\nprotected.\n\nChange-Id: I2ae0b0869fe3c606f682252973795b34477951d0\n"
    },
    {
      "commit": "613882293184e575a44bff681a3decaefe889e69",
      "tree": "052f84c8fe6e7b201f03117f617c3ad77b8b0dd0",
      "parents": [
        "0107954f72153db747a3727dc1157e9236dfed90",
        "b9980659501d0428d65d8292f3c32da69d37fbd2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "message": "Merge \"Use size_t for frame size\""
    },
    {
      "commit": "0107954f72153db747a3727dc1157e9236dfed90",
      "tree": "f279f37a12104778bdf7fa912e2205dd0c339f6e",
      "parents": [
        "b9ac2007cd141992eb5412ffb1c6527e0259b3ab",
        "fff6d715a8db0daf08a50634f242c40268de3d49"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "message": "Merge \"Use audio_stream_type_t consistently\""
    },
    {
      "commit": "05632a5fa4b88ca474294887fc92a9fcdf0e2352",
      "tree": "28e36d2cce839d66870ea066a2b334dd9b63c833",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:22:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:25:14 2012 -0800"
      },
      "message": "AudioTrack and AudioFlinger send level cleanup\n\nAdd an API to control block for getting/setting send level.\nThis allow us to make the mSendLevel field private.\n\nDocument the lack of barriers.\n\nUse 0.0f to initialize floating-point values (for doc only).\n\nChange-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4\n"
    },
    {
      "commit": "b9980659501d0428d65d8292f3c32da69d37fbd2",
      "tree": "8b703aca299f4f715a65d07cc37b753e9753a941",
      "parents": [
        "f4e76c538f81068bc2e125f3f9ef8b8dd40f2d2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 09:48:27 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 14:58:44 2012 -0800"
      },
      "message": "Use size_t for frame size\n\nexcept in the control block, where we don\u0027t have room.\n\nIn AudioFlinger::ThreadBase::TrackBase::getBuffer,\nread the frame size from control block only once.\n\nChange-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e\n"
    },
    {
      "commit": "fff6d715a8db0daf08a50634f242c40268de3d49",
      "tree": "f5331971b746b2e0d878e1127003a0dab72e5fbb",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "09192653e836b21689f004bf8dee375356641181",
      "tree": "0b8df874c2840f9dcfb9d11ba2230d91282d998c",
      "parents": [
        "4cc55d53d542c4f4ed645738cebb65b9e7eb6c44",
        "9d2f386dd2885eaffa11fd494ae258bb09fe6397"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "message": "Merge \"Separate sniffing from session initialization\""
    },
    {
      "commit": "9d2f386dd2885eaffa11fd494ae258bb09fe6397",
      "tree": "382639f8cc7f1a3677589d7dfca37b667ea4261c",
      "parents": [
        "83bc7f3cf78b28a818417f40a4f0c00593993366"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 10 08:24:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:25:12 2012 -0800"
      },
      "message": "Separate sniffing from session initialization\n\nThis avoid lengthy/duplicate sniffing for drm plugins when a decrypt session is opened\n\no The change is backward compatibile in that no update is required\n  for existing drm plug-ins if they do not plan to provide separate\n  sniffer/extractor\n\nrelated-to-bug: 5725548\n\nChange-Id: I7fc4caf82d77472da4e2bc7b5d31060fb54fd84c\n"
    },
    {
      "commit": "4cc55d53d542c4f4ed645738cebb65b9e7eb6c44",
      "tree": "417efab1bc349bfaa4bdf7fccdff0e53fb76e7c0",
      "parents": [
        "d5a8bf0bca459389cdb81fdcc30893516bdce951",
        "e1c3962e268ffc12bfd1bd9ea84da1f135f36960"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "message": "Merge \"Use audio_format_t consistently\""
    },
    {
      "commit": "f78aee70d15daf4690de7e7b4983ee68b0d1381d",
      "tree": "c84e36c036a847bdf12f44c949eacb7b3ba79698",
      "parents": [
        "d5a8bf0bca459389cdb81fdcc30893516bdce951"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:00:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 09:52:37 2012 -0800"
      },
      "message": "Use audio_mode_t consistently\n\nIt was int or uint32_t.\nAlso make getMode() const.\n\nChange-Id: Ibe45aadbf413b9158e4dd17f2b3bcc6355288d37\n"
    },
    {
      "commit": "544096247a907bc55688e5c03d5586ba5219d82a",
      "tree": "e5a79fd39e116b521df89d20d09f1e472153ce85",
      "parents": [
        "e3a067f8bc98134941ee1a4da8c2a92a15aaa9cc",
        "0049acfc8b1c33eb90afc925dacd08a487618e17"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "message": "Merge \"Fix bug in JetPlayer::loadFromFile\""
    },
    {
      "commit": "0132e12ded92529b1520ad62f5134fa31361c90b",
      "tree": "ae97a86b1eb46ac93290ca795a7c0e08773c06f9",
      "parents": [
        "2ea3410d0d3d592ce30c3ba0ce3e0e63b1244057",
        "1099586bd48a8a90bb1cc4e7c279703bc7259214"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "message": "Merge \"Declare IAudioTrack methods in binder opcode order\""
    },
    {
      "commit": "0049acfc8b1c33eb90afc925dacd08a487618e17",
      "tree": "7e4d4b45c01eddf9fe71248edc7ebd24f70d2fc5",
      "parents": [
        "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 08:41:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:43:24 2012 -0800"
      },
      "message": "Fix bug in JetPlayer::loadFromFile\n\nA long pathname would corrupt the heap due to incorrect use of strncpy.\n\nAlso was using hard-coded constant 256 instead of PATH_MAX.\n\nChange-Id: Iba382bbb38624fbc41fec91449f9814f77d4ac0d\n"
    },
    {
      "commit": "1099586bd48a8a90bb1cc4e7c279703bc7259214",
      "tree": "c1b5f494fb3a212954495539bfe0c506bfc3dd05",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:50:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:35:57 2012 -0800"
      },
      "message": "Declare IAudioTrack methods in binder opcode order\n\nThis makes it easier to match up the declarations.\n\nChange-Id: I0996c20b2903b778b356dfe52b07b0ec634855dd\n"
    },
    {
      "commit": "e1c3962e268ffc12bfd1bd9ea84da1f135f36960",
      "tree": "d24fac9434dbe5808a6c31a50414da7b5ce47c9a",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 09:36:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 13:34:54 2012 -0800"
      },
      "message": "Use audio_format_t consistently\n\nWas int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.\nAlso replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by\nAUDIO_FORMAT_PCM_16_BIT.\n\nChange-Id: Ia8804f53f1725669e368857d5bb2044917e17975\n"
    },
    {
      "commit": "9a2aaf927e56a4b4acab23ef16b3f133a9f48a63",
      "tree": "c4bbdbe2a7e0292105736849e28faf12d298e47c",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 09:42:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 11:55:24 2012 -0800"
      },
      "message": "Clean up AudioTrack::mActive and stopped()\n\nmActive is protected by mLock; volatile is meaningless on SMP.\n\nFixed a couple of places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\n\nAdded stopped_l() for cases where we already hold the lock.\n\nMade mActive a bool not int.\n\nMoved down a lock in setPosition that was being acquired too early.\n\nChange-Id: I73ff368e991c0db9f9472df0b3f96fd33fcc7311\n"
    },
    {
      "commit": "362c4e697d8e9c034e964ac7b40227e054491547",
      "tree": "dde3ca3f11e00cc82f1b6a6bd7ebe7b1c24421c5",
      "parents": [
        "eebeceec684a36222b4559e3157b0db04c0a67ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 14 10:28:06 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 14 14:38:26 2011 -0800"
      },
      "message": "Audio C++ comments\n\nChange-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1\n"
    },
    {
      "commit": "8afbf8e07fd1d75dfa0a517267beb6c1fa818027",
      "tree": "12a598f6c9508bd248943bec6bf227bca25c4a3f",
      "parents": [
        "c089d02cf2bddf1bba6eaa2b2fcce149dc44633e",
        "b96d3c5195b148c0d695a326fa9c315561d787ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 16:33:04 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 16:33:04 2011 -0800"
      },
      "message": "am 52607c53: am d12dc284: Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" into ics-mr1\n\n* commit \u002752607c5364446df6ac5b2f55cb50e146e6023a4f\u0027:\n  If an error occurs that prevents us from reallocating buffers during a format change\n"
    },
    {
      "commit": "c089d02cf2bddf1bba6eaa2b2fcce149dc44633e",
      "tree": "b1370ec48d21e9052eb0b040814f91638ebc3a18",
      "parents": [
        "eca36b5a1759970bc3d0373d72d6fec7c9b7e944",
        "6bf045c85526312b198733ac8113cc213c8d79c9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "message": "am 074133b2: am 351143fb: Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1\n\n* commit \u0027074133b260f8d12e484e93b9aa5a33a4983b7349\u0027:\n  Updated (internal) API for IStreamSource to signal discontinuities\n"
    },
    {
      "commit": "5274010d068b05333e3e5544d59ca284802b1a8e",
      "tree": "a3af410cc5f0990f5caf0bf01fc77702acdfc247",
      "parents": [
        "544ee287d01d98efbe9eeeaeb7016c8dd55e3748",
        "d3d822204249eaca4259bdf46f6f0357b96e8e21"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "message": "Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" into ics-mr1"
    },
    {
      "commit": "bfcc8d8ab7c56bc013bd221a29e1ecf3a6390813",
      "tree": "0469bc8cc740ad84a42b502ba57e02b3e520748a",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:57:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:59:10 2011 -0800"
      },
      "message": "Updated (internal) API for IStreamSource to signal discontinuities\n\nChange-Id: Idd4b9d8e7cec16b3e3c91c70e75144d42be30f96\nrelated-to-bug: 5553055\n"
    },
    {
      "commit": "404a123bed7f180724ead17f10e037b3eb347701",
      "tree": "cb569f01c8dd2bca25b44259a25d3b3d11daa0a1",
      "parents": [
        "c9260c15c1e7e2743039c964b8769379a3fff332"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:48:35 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 28 15:21:57 2011 -0800"
      },
      "message": "split ComposerService out of SurfaceComposerClient.h\n\nChange-Id: I1eb691f7ca263d5895d871ab675bb5826e0323c6\n"
    },
    {
      "commit": "c9260c15c1e7e2743039c964b8769379a3fff332",
      "tree": "cd829dd370a04344ec40f73c20dff6e8cc8b7793",
      "parents": [
        "926798f8c21ab002d9797ef8973852a2612c1f75",
        "b68a91a70bc8d0d18e7404e14443d4e4020b3635"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 28 14:54:28 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 28 14:54:28 2011 -0800"
      },
      "message": "Merge \"Make AudioTrack a RefBase so wrappers not needed\""
    },
    {
      "commit": "d3d822204249eaca4259bdf46f6f0357b96e8e21",
      "tree": "f48558114991dfd8e267b6c166367cff7353305b",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "message": "If an error occurs that prevents us from reallocating buffers during a format change\n\nwe need to transition to executing state anyway to be able to properly flush/shutdown\nin the future.\n\nChange-Id: Ie48bc09ea31942009ae3a5a45aabc9ffad9fb91f\nrelated-to-bug: 5655016\n"
    },
    {
      "commit": "a7e4865306b72e8eb97ee73719c897c432c53a0c",
      "tree": "ddf16b552a96e4e454ca8be149e5a1552ffa53d0",
      "parents": [
        "7c56bb3ac1fb758a222a0c23805704a2789657b6",
        "a0c986cc09531e208af17e62ea6f0f47841705cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:43:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 22 08:43:28 2011 -0800"
      },
      "message": "am 31626b30: am cb6fbc89: Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1\n\n* commit \u002731626b3075335f4cf579342e99436bb45870cf55\u0027:\n  Report a runtime error instead of asserting on malformed avc configuration data.\n"
    },
    {
      "commit": "e933cb5ae546d023ab756391a135c170874e7901",
      "tree": "4a538f125f876469ea59e173b9d3645000c91cd4",
      "parents": [
        "e8e5f86e9e310b065596c8cbbca1543eb833dee1",
        "71b61a960ae30df990976ca5dbe780d85a15b0d1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "message": "Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1"
    },
    {
      "commit": "7c56bb3ac1fb758a222a0c23805704a2789657b6",
      "tree": "9eadb09e607c361c36f37218f8121433eaff2574",
      "parents": [
        "c637289fdfbea45a322601ce74f743595c477339",
        "88b00e9b79a0242251435b399971be4ca9738395"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 21:08:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:08:55 2011 -0800"
      },
      "message": "am d0a25456: am 02740dc4: Merge \"Fix log spamming during time lapse video recording\" into ics-mr1\n\n* commit \u0027d0a254566f5f0be5607b4d64839a575c888c94f6\u0027:\n  Fix log spamming during time lapse video recording\n"
    },
    {
      "commit": "e8e5f86e9e310b065596c8cbbca1543eb833dee1",
      "tree": "9093e89f8a7bf9544061fdfbe52383ae314e28b4",
      "parents": [
        "6f5cc45c48c02173bfae8d54b54a92c9bae256a1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Nov 20 09:45:44 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 12:09:51 2011 -0800"
      },
      "message": "Fix log spamming during time lapse video recording\n\nChange-Id: I4fc0809203684ebb02eaf217d7abad00aefc898f\n\nrelated-to-bug: 5626569\n"
    },
    {
      "commit": "71b61a960ae30df990976ca5dbe780d85a15b0d1",
      "tree": "b8a9826f9287872f217be9cbb8d48b18ad2b234d",
      "parents": [
        "6479b955d21707609eae70008cf7956dddf12371"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "message": "Report a runtime error instead of asserting on malformed avc configuration data.\n\nChange-Id: Ibcd9c3fb5b6532eba843ed80ecdcdacaf50d8845\nrelated-to-bug: 5641069\n"
    },
    {
      "commit": "528312c36a3ded860ead1a512df51663d03767ff",
      "tree": "8e1629395fc42fe5b815f358ca32e77a7e09fb40",
      "parents": [
        "c57c82e19eca3e24ebd060f9c41f516a85538c19",
        "a23856c0ad1f49a6ebcb71d3f63f329edc999a72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 17 07:14:29 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 17 07:14:29 2011 -0800"
      },
      "message": "Merge \"JetPlayer uses C++ Thread not createThreadEtc\""
    },
    {
      "commit": "a23856c0ad1f49a6ebcb71d3f63f329edc999a72",
      "tree": "c96689b2bdef3ce5fba019ad773d997e56c29ac1",
      "parents": [
        "5c052218128013d630b4d9a84393ebfbff11f3e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 23 16:43:24 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 16 15:25:30 2011 -0800"
      },
      "message": "JetPlayer uses C++ Thread not createThreadEtc\n\nThis permits leveraging future improvements to Thread.\n\nChange-Id: I60deed8565ed54f13d9f770c76504e411b154276\n"
    },
    {
      "commit": "879135196fd1c97deefc538c888037c56c2879a7",
      "tree": "3ee39136a951bf1fbb25e0b484c3c1b6709c5868",
      "parents": [
        "5c052218128013d630b4d9a84393ebfbff11f3e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 16:15:25 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 16 14:52:55 2011 -0800"
      },
      "message": "Bug 4903178 Restore priority and cgroup on stop\n\nOn AudioTrack and AudioRecord stop or failed start, restore the priority\nand cgroup of the caller to their previous values, rather than forcing\nto NORMAL.  Dependent on new thread APIs.\n\nAlso fixes bug where priority was set to AUDIO but cgroup not set.\n\nChange-Id: Ib83893918fb4fdf57c6b87884b51038997a631d8\n"
    },
    {
      "commit": "b68a91a70bc8d0d18e7404e14443d4e4020b3635",
      "tree": "e885c21714d54383f2fad17ac4d98cd6c822550e",
      "parents": [
        "5c052218128013d630b4d9a84393ebfbff11f3e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 15 13:55:13 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 15 14:26:09 2011 -0800"
      },
      "message": "Make AudioTrack a RefBase so wrappers not needed\n\nChange-Id: I2305abe586ac41251af04a194bc818c110a1b293\n"
    },
    {
      "commit": "9621addc73c029e77fd3d50f38a34f8f264b6e38",
      "tree": "c79a225dd0af519094743dabf2b6c2871c638758",
      "parents": [
        "72ae9fd9cca0af6e5c1001eeeca80841f712b096",
        "3a9cefebd2c5d2157aefaed01c54f151dc64a5b3"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Tue Nov 15 09:42:37 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 15 09:42:37 2011 -0800"
      },
      "message": "Merge \"Fix for issue  5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\" into ics-mr1"
    },
    {
      "commit": "3a9cefebd2c5d2157aefaed01c54f151dc64a5b3",
      "tree": "33d2825031600b28086498c72925c94d6d6ed556",
      "parents": [
        "1dc0ab1d2e2c5f40193556ad1239e304563f3083"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Thu Nov 10 14:54:26 2011 -0800"
      },
      "committer": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Mon Nov 14 13:02:59 2011 -0800"
      },
      "message": "Fix for issue  5309336\n-add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\n\nChange-Id: I41ffbc192fcce4c7635e5b0a1f2835852e5ee509\n"
    }
  ],
  "next": "4948818cb91176df74c972ac27b2f392b5d148bc"
}
