)]}'
{
  "log": [
    {
      "commit": "27b6d228301ba750dd9b3730d1127e4f0ae2209a",
      "tree": "34a2d66ceb6cbf9f3aea15eb0c936f7f92790169",
      "parents": [
        "b24ed02a90b6050fc1822cfd43d02140fea77b18"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 17:38:48 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jul 31 10:56:06 2012 -0700"
      },
      "message": "Removed a CHECK_EQ that is not needed.\n\n\u0027what\u0027 was just compared against Renderer::kWhatFlushComplete before entering the\nif block.\n\nChange-Id: I72c5c156f814621a24439d89e150c4e0d90edcbb\n"
    },
    {
      "commit": "b24ed02a90b6050fc1822cfd43d02140fea77b18",
      "tree": "ad96c89a314e07221442f87be2fa80a6674b39dc",
      "parents": [
        "da2df4da417a4a58024cf616c292fac3687eb15b",
        "ddeeaec2dd2ff5cf10bc3f87f22401bfcbd0fd48"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jul 31 07:52:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 31 07:52:55 2012 -0700"
      },
      "message": "am ddeeaec2: Sync with jb-mr1-dev\n\n* commit \u0027ddeeaec2dd2ff5cf10bc3f87f22401bfcbd0fd48\u0027:\n  Should really compare the pos to the total number of values in get() and set() methods in ListTableEntries class\n"
    },
    {
      "commit": "ddeeaec2dd2ff5cf10bc3f87f22401bfcbd0fd48",
      "tree": "5ce28fa7e34a1246c474184705413c1686cb3ca5",
      "parents": [
        "6535723967c6dd7ce42669cd8815da82faab911a",
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jul 31 07:51:31 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jul 31 07:51:32 2012 -0700"
      },
      "message": "Sync with jb-mr1-dev\n\nChange-Id: I5bd4d44e0e33d28487c04a27652469697478ecd4\n"
    },
    {
      "commit": "da2df4da417a4a58024cf616c292fac3687eb15b",
      "tree": "519789bb5569dd039cb6a03703884191419dd862",
      "parents": [
        "823a352c39158e0cac4eb1da68e8c4cfd25bba55",
        "6535723967c6dd7ce42669cd8815da82faab911a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 02:09:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 31 02:09:11 2012 -0700"
      },
      "message": "am 65357239: am c620cbd7: Refactoring how the box table entries are stored in MPEG4Writer\n\n* commit \u00276535723967c6dd7ce42669cd8815da82faab911a\u0027:\n  Refactoring how the box table entries are stored in MPEG4Writer\n"
    },
    {
      "commit": "6535723967c6dd7ce42669cd8815da82faab911a",
      "tree": "dcc433846ff4918819ace5ed5b57e3e70290aae6",
      "parents": [
        "c23f3863ccd5dfbba5a0339a17a21ac35d3efead",
        "c620cbd7f8dc75f6819e2b862d3c09970560bc63"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 31 02:06:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 31 02:06:24 2012 -0700"
      },
      "message": "am c620cbd7: Refactoring how the box table entries are stored in MPEG4Writer\n\n* commit \u0027c620cbd7f8dc75f6819e2b862d3c09970560bc63\u0027:\n  Refactoring how the box table entries are stored in MPEG4Writer\n"
    },
    {
      "commit": "25f0d7ba1987de61c75f8c68b19de48e0ad9736c",
      "tree": "5ce28fa7e34a1246c474184705413c1686cb3ca5",
      "parents": [
        "c620cbd7f8dc75f6819e2b862d3c09970560bc63"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 30 18:06:12 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 30 18:06:12 2012 -0700"
      },
      "message": "Should really compare the pos to the total number of values in get() and set() methods in ListTableEntries class\n\no related-to-bug: 6435176\n\nChange-Id: Ib6f6e598304e7c9becfa6cb3fc925c55b2df2682\n"
    },
    {
      "commit": "823a352c39158e0cac4eb1da68e8c4cfd25bba55",
      "tree": "e97f8aed65cd24e53f41ff0c3e4c5791d936db32",
      "parents": [
        "05144f1d68c5240a1fedd42ac83814f3ecf70dfd",
        "c23f3863ccd5dfbba5a0339a17a21ac35d3efead"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 30 15:10:47 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 30 15:10:47 2012 -0700"
      },
      "message": "am c23f3863: Reconcile with jb-mr1-release\n\n* commit \u0027c23f3863ccd5dfbba5a0339a17a21ac35d3efead\u0027:\n"
    },
    {
      "commit": "c23f3863ccd5dfbba5a0339a17a21ac35d3efead",
      "tree": "7ba08233afeb658bdd59e1e0b12e96638ee796a4",
      "parents": [
        "9fbe94294ce2053d102ff5de89846a0c5015fb58",
        "8962f35049f77011ed69f168075649a66847a0c1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 30 15:04:08 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 30 15:04:08 2012 -0700"
      },
      "message": "Reconcile with jb-mr1-release\n\nChange-Id: Ic0cdae375d796efb3dc07956e03fea062557b765\n"
    },
    {
      "commit": "c620cbd7f8dc75f6819e2b862d3c09970560bc63",
      "tree": "dcc433846ff4918819ace5ed5b57e3e70290aae6",
      "parents": [
        "9fbe94294ce2053d102ff5de89846a0c5015fb58"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 27 17:14:44 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 30 13:44:37 2012 -0700"
      },
      "message": "Refactoring how the box table entries are stored in MPEG4Writer\n\no Helps drastically reduce the time writing all the box table entries for long duration video recording sessions.\n  Experiments showed that the time is reduced from multiple seconds to less than one second for around 2.5 hours of video recording.\n\nChange-Id: I6a696823e2938b76fcf2c73605f51bf5e5c2d749\n\nrelated-to-bug: 6435176\n"
    },
    {
      "commit": "05144f1d68c5240a1fedd42ac83814f3ecf70dfd",
      "tree": "06d978724b8e3423f7a7086547fd49e1726acd29",
      "parents": [
        "93d906837e0e89aa1d9c913ab2b531b809f9bb9e",
        "52008f821a5202502a82a8ba2c024e69bd336350"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:55:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 10:55:59 2012 -0700"
      },
      "message": "Merge \"Share local time frequency for all tracks \u0026 mixers\""
    },
    {
      "commit": "93d906837e0e89aa1d9c913ab2b531b809f9bb9e",
      "tree": "9e0fdd3b9cb2fb72263ca425e6cbd9403ebee372",
      "parents": [
        "91de9b56282d126ffb36344266af5fee3cefcfdd"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 23 17:05:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 30 10:36:28 2012 -0700"
      },
      "message": "AudioFlinger: Better handling for master volume/mute\n\nChanges to address bug 6842827.\n\nWhen a HAL is loaded, cache whether or not the HAL supports\nset_master_volume/mute in the AudioHwDevice structure.  Store an\nAudioHwDevice in AudioStream(In|Out) structures instead of just an\naudio_he_device_t.  This give threads (PlaybackThreads in\nparticular) access to the cached capabilities.\n\nWhen setting master volume/mute, change the system to always set the\nsetting on all HAL which support it and also to set the setting on all\nPlaybackThreads.  Change PlaybackThreads to apply the setting at the\nin SW mix stage of the pipeline if its assigned HAL does not support\nthe setting, or to ignore the setting of the assigned HAL does support\nit.\n\nChange-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "91de9b56282d126ffb36344266af5fee3cefcfdd",
      "tree": "0c934d29385a85c6e0d020398905a7a3dd47e69a",
      "parents": [
        "8bdac969e500bc61320a216539e840fe8ad78bb4"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Jul 20 14:51:35 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 30 10:36:27 2012 -0700"
      },
      "message": "Change audio flinger to user HAL master mute if available\n\nHand merge from ics-aah\n\n\u003e Change audio flinger to user HAL master mute if available: DO NOT MERGE\n\u003e\n\u003e Replicate the pattern used for HAL master volume support to make use\n\u003e of master mute support if the HAL supports it.  This is part of the\n\u003e change needed to address bug 6828363.  Because of the divergences\n\u003e between ICS and master, this change will need to be merged by hand.\n\u003e\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685\n\nChange-Id: I32280582905c969aaec2bb166ec5c61df82d737a\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "8962f35049f77011ed69f168075649a66847a0c1",
      "tree": "7ba08233afeb658bdd59e1e0b12e96638ee796a4",
      "parents": [
        "9fbe94294ce2053d102ff5de89846a0c5015fb58",
        "8bdac969e500bc61320a216539e840fe8ad78bb4"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Mon Jul 30 09:46:02 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Mon Jul 30 09:46:02 2012 -0700"
      },
      "message": "merge in jb-mr1-release history after reset to jb-mr1-dev\n"
    },
    {
      "commit": "8bdac969e500bc61320a216539e840fe8ad78bb4",
      "tree": "8e3aa07ccd07cb04ad4076e5e989709e85a31df8",
      "parents": [
        "d14639c3e817be978643d1fbcfb4fac71b7c55dc",
        "9fbe94294ce2053d102ff5de89846a0c5015fb58"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 22:40:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 29 22:40:24 2012 -0700"
      },
      "message": "am 9fbe9429: Merge remote-tracking branch \\\u0027goog/jb-dev-mako\\\u0027 into jb-mr1-dev\n\n* commit \u00279fbe94294ce2053d102ff5de89846a0c5015fb58\u0027:\n  NuPlayer: Prevents creation of Video Decoder when we use Music Player\n  Synchronize access to OMX class member variables\n  Merge from jb-dev for \"sample video corruption in MediaCodec mode.\" DO NOT MERGE\n  libstagefright: dynamically load libstagefright_chromium_http\n  Process EBD and FBD messages in ERROR state\n  Add vendor specific output color format\n"
    },
    {
      "commit": "9fbe94294ce2053d102ff5de89846a0c5015fb58",
      "tree": "7ba08233afeb658bdd59e1e0b12e96638ee796a4",
      "parents": [
        "3beb3ff4af08ea02da87e6548e0544d2ba47daf1",
        "5d246efa220a7c7b22e490576c488b3853c664dd"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "committer": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/jb-dev-mako\u0027 into jb-mr1-dev\n\nConflicts:\n\tservices/audioflinger/AudioFlinger.cpp\n\nChange-Id: If27e4ff35de1e182394cc149e1557a49f0f7c95b\n"
    },
    {
      "commit": "d14639c3e817be978643d1fbcfb4fac71b7c55dc",
      "tree": "cd9db816f5ccaadf4e40c1ec9cc383f73b10db02",
      "parents": [
        "3beb3ff4af08ea02da87e6548e0544d2ba47daf1",
        "5a17fde9ce50a4e5914863326dfa5055a8bcd25f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 27 18:22:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 27 18:22:48 2012 -0700"
      },
      "message": "Merge \"Removed a CHECK_EQ that is not needed.\""
    },
    {
      "commit": "3beb3ff4af08ea02da87e6548e0544d2ba47daf1",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "5d464eb0b8cffb994a754ff108795e858a882414",
        "b3192c5abf7321cb3437a3aedacd632311634bff"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 27 15:45:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 27 15:45:41 2012 -0700"
      },
      "message": "am b3192c5a: Reconcile with jb-release\n\n* commit \u0027b3192c5abf7321cb3437a3aedacd632311634bff\u0027:\n"
    },
    {
      "commit": "5d464eb0b8cffb994a754ff108795e858a882414",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "0ec23ce0d1ff79566c402bc30df3074f6e25a22b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:19:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:58:43 2012 -0700"
      },
      "message": "Swap the order of creating IAudioTrack and thread\n\nSimplifies the error recovery in case IAudioTrack fails.\n\nChange-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "b3192c5abf7321cb3437a3aedacd632311634bff",
      "tree": "7a0a8e099c9a90c42cb84b65d8462c7186e6b3cf",
      "parents": [
        "ec4147ed136546f0be29a68d8edbdafbcf656e58",
        "c749dade5de67424e53f844594fdb28204bfc62b"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 27 14:51:43 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 27 14:51:43 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: Iab9b19384ab6706f1dfca89f21ffc142f47225a3\n"
    },
    {
      "commit": "e4e2a37dbe2a4d923232305549101f779a2e3638",
      "tree": "7038669149e9478745fbb5e05f320cee8fd5cb88",
      "parents": [
        "3dca4c7a5622fc6aa03397d749c4b4c1201cc4f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 12:55:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:49:58 2012 -0700"
      },
      "message": "Extract methods to enter standby and standby mode\n\nAlso move initial standby from to threadLoop to avoid a race condition.\n\nChange-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3\n"
    },
    {
      "commit": "3dca4c7a5622fc6aa03397d749c4b4c1201cc4f3",
      "tree": "0867a719c65c8063b65f33d8e2304cd679245da8",
      "parents": [
        "28567defef0ba95cb38f2d80eba30b01db207a77"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 19:22:42 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 20:38:26 2012 -0700"
      },
      "message": "update to new getDisplayInfo API\n\nChange-Id: Ie273677e34b9e8475abfa0ae27620d98b3a15b77\n"
    },
    {
      "commit": "52008f821a5202502a82a8ba2c024e69bd336350",
      "tree": "5daaddaa46d47bec27af0bc5350f414452710b00",
      "parents": [
        "0a7af18d0308295405491f86603e3d119450aba0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Mar 18 09:34:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 18:49:08 2012 -0700"
      },
      "message": "Share local time frequency for all tracks \u0026 mixers\n\nChange-Id: I5e6f0e371f728a5225c2fa6f778c109449d33602\n"
    },
    {
      "commit": "28567defef0ba95cb38f2d80eba30b01db207a77",
      "tree": "4a8ca4bafe5e754fe76266c0a947de84624d94f7",
      "parents": [
        "82f517ba654ca4891b82ebe604dbd004b66a7b2d",
        "803cbf6190f16f7b2c43cbc51d0df21ec888abdd"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 16:09:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 25 16:09:34 2012 -0700"
      },
      "message": "Merge \"Camera2: Use more buffers for video encoding.\""
    },
    {
      "commit": "82f517ba654ca4891b82ebe604dbd004b66a7b2d",
      "tree": "3f4daa2e10e5bd1c69f6b0de86b5227ee8f728fe",
      "parents": [
        "0a7af18d0308295405491f86603e3d119450aba0",
        "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 16:08:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 25 16:08:40 2012 -0700"
      },
      "message": "Merge \"Camera2: Revamp recording support to allow opaque formats.\""
    },
    {
      "commit": "803cbf6190f16f7b2c43cbc51d0df21ec888abdd",
      "tree": "59dfc0f1cadc394645ee8bd0547aebf4a8c28604",
      "parents": [
        "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 15:23:36 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 15:23:36 2012 -0700"
      },
      "message": "Camera2: Use more buffers for video encoding.\n\nTo avoid starvation, set the number of simultaneously available buffers\nto the encoder to 8.\n\nBug: 6243944\nChange-Id: I6d0e9f3c0426d62d374c0ae0d427bf5189141adf\n"
    },
    {
      "commit": "0a7af18d0308295405491f86603e3d119450aba0",
      "tree": "bed6e2fe6df1d948db29bc84ff5d0a3bee02d6a6",
      "parents": [
        "58e5aa34f01d663654d8bafad65db1dda42161ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:09:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:48:11 2012 -0700"
      },
      "message": "Use valueAt instead of editValueAt when possible\n\nChange-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e\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": "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04",
      "tree": "006faa29a2ad0ca2ea18c8e876c43749d72d138d",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:28:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:41:03 2012 -0700"
      },
      "message": "Fix races in AudioRecord stop()\n\nChange-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c\n"
    },
    {
      "commit": "5d246efa220a7c7b22e490576c488b3853c664dd",
      "tree": "8258668e5e235b67d51d8f4554e77f8c2434fe2c",
      "parents": [
        "45dfb6ae94b33eea04d74afa378c1664e884f09a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Jul 09 10:36:57 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Jul 25 01:28:36 2012 -0700"
      },
      "message": "NuPlayer: Prevents creation of Video Decoder when we use Music Player\n\n- Prevents instantion of Video Decoder when we use applications like\nMusic Player  which do not support Video Playback\n- Adds a check to prevent scanning for sources when it is either an\nAudio only clip or a video only clip or an AV clip played with a\nMusic Player.\n\nChange-Id: I74dd9bc53e54fd4f3682536c987289ac252690b0\nSigned-off-by: Arvind Thatikonda \u003carvindt@codeaurora.org\u003e\n"
    },
    {
      "commit": "c749dade5de67424e53f844594fdb28204bfc62b",
      "tree": "51837c9c8163816bb896cb067e4a4a555f507a8b",
      "parents": [
        "2df63ad6bbf0ad0fd066592b44f2e15123513112",
        "70b3c7b6f3fe22d3fdd5e8926291701432d6f4e8"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jul 24 20:23:10 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jul 24 20:23:10 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a",
      "tree": "bb28c6e7d7affcf849f862c42c6664fc67eefd81",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:52:18 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 24 16:59:22 2012 -0700"
      },
      "message": "Camera2: Revamp recording support to allow opaque formats.\n\n- Avoid memcpy of buffer data by using metadata mode\n- Temporarily add MediaConsumer BufferQueue class\n\nBug: 6243944\nChange-Id: I7a8c4222b7dbd14f1b1d86fda06d38eb640e87c1\n"
    },
    {
      "commit": "bf5bea96f236adb5eef78c2f414ef82b3602a0f7",
      "tree": "ec9dcb7ffdb2de6257fcee026583ffe998fef1d8",
      "parents": [
        "7aa1b72252749c990c9a5efce3d8fe399261b88e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:46:06 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 24 16:59:21 2012 -0700"
      },
      "message": "Codecs: Add MetaDataMode support to software video encoders.\n\nThis support is needed to enable efficient video recording with\nemulator and camera HAL 2.\n\n- Update SoftAVCEncoder and SoftMPEG4Encoder to support MetaDataMode\n  extension.\n- Allow CameraSource to handle opaque pixel formats, so that\n  MetaDataMode can be used.\n- Remove hardware codec restriction for MetaDataMode\n\nBug: 6243944\nChange-Id: I970eb3d55542a413b6d75a78f76d3a8583155601\n"
    },
    {
      "commit": "7aa1b72252749c990c9a5efce3d8fe399261b88e",
      "tree": "6db390a741a1454d60372699634e6b22c3c917ab",
      "parents": [
        "69d799679c8c0308e42057e7b5ad63a7ae806480",
        "3499e2d178960ca3392855716c963eec7403a089"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 23 13:45:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 23 13:45:23 2012 -0700"
      },
      "message": "Merge \"Don\u0027t make the decrypted content available to Java applications via MediaExtractor.java API\""
    },
    {
      "commit": "69d799679c8c0308e42057e7b5ad63a7ae806480",
      "tree": "fd433daeb23326b7818031fcca0f8b87f77dbc3e",
      "parents": [
        "f1b3ee26cafc80900bae681bddf47446a6a3733f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 14:02:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 10:56:34 2012 -0700"
      },
      "message": "Use upmix/downmix utility routines\n\nChange-Id: I9ae2ec938fb695ec576ea008a42205325af7bbf1\n"
    },
    {
      "commit": "3499e2d178960ca3392855716c963eec7403a089",
      "tree": "a29b0b4d569a9b51808e88062c6ac5b2b6153c20",
      "parents": [
        "f1b3ee26cafc80900bae681bddf47446a6a3733f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 23 10:49:48 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 23 10:49:48 2012 -0700"
      },
      "message": "Don\u0027t make the decrypted content available to Java applications via MediaExtractor.java API\n\nChange-Id: I38df6a6be30a34ce3f2640f79784dc94c8ca1158\n"
    },
    {
      "commit": "f1b3ee26cafc80900bae681bddf47446a6a3733f",
      "tree": "e4458438ee1340f2810ba35be2a8cd31f8982a12",
      "parents": [
        "68ea6cab354a635ea848bc2b5cf172d7a215a057",
        "13210f3346462a86ce9fe3af72a0c200dba84e27"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 18:40:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:40:53 2012 -0700"
      },
      "message": "Merge \"Added number of encoded frames and duration to the MPEG4Writer::Track::dump\""
    },
    {
      "commit": "68ea6cab354a635ea848bc2b5cf172d7a215a057",
      "tree": "7493493a0cd877fbb77432e4ea8601286b1da020",
      "parents": [
        "e78d5c7bfda1e80223436df3faeb4a9e2e719bcf",
        "f6d9696bf1db133d16dd8981380e1bfbd2e0bc70"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:40:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:40:30 2012 -0700"
      },
      "message": "Merge \"Camera: Add OPAQUE pixel format to CameraParameters\""
    },
    {
      "commit": "e78d5c7bfda1e80223436df3faeb4a9e2e719bcf",
      "tree": "6aa675b9bac094a8af8f7d5b7a931c0c2c21f6d9",
      "parents": [
        "789e325341e73743630f45e92b77d07e31c3957e",
        "2267106c98f461b730c772a913da946c391a178c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:39:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:33 2012 -0700"
      },
      "message": "Merge \"Camera2: Stop preview: Wait until HAL is drained\""
    },
    {
      "commit": "789e325341e73743630f45e92b77d07e31c3957e",
      "tree": "f1212122587a95153efd013b483cceb1ca1618ca",
      "parents": [
        "afa1669ef8b3cf172a695f8959d94849cb9f7195",
        "9e4c3db01ba4eb1e5acbed113f78a31374900df6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:39:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:22 2012 -0700"
      },
      "message": "Merge \"Camera2: Add more verbose logging\""
    },
    {
      "commit": "afa1669ef8b3cf172a695f8959d94849cb9f7195",
      "tree": "51ff5a99dcc7d91d53dbcab1a3d857d1fe19dc74",
      "parents": [
        "f5545b962794b78a97cafa73d0b592f55ffe06d8",
        "898a9a9b867e5d209671feee4c92266f90a55aa3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:38:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:00 2012 -0700"
      },
      "message": "Merge \"Camera2: Fix recording bugs\""
    },
    {
      "commit": "2267106c98f461b730c772a913da946c391a178c",
      "tree": "64c4fe71a71405291467077ddceda6df768d2d92",
      "parents": [
        "9e4c3db01ba4eb1e5acbed113f78a31374900df6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:30:37 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:30:37 2012 -0700"
      },
      "message": "Camera2: Stop preview: Wait until HAL is drained\n\nOnce camera returns from stopPreview, all preview activity needs to\nhave stopped. So wait until that\u0027s true.\n\nBug: 6243944\nChange-Id: Ifa6cf171bd69015883e26dafb1e49e5ac098025a\n"
    },
    {
      "commit": "5a17fde9ce50a4e5914863326dfa5055a8bcd25f",
      "tree": "d1d6cafd0b58e6b67e6b2ec3efe5d47540e2abaf",
      "parents": [
        "f5545b962794b78a97cafa73d0b592f55ffe06d8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 17:38:48 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 17:39:52 2012 -0700"
      },
      "message": "Removed a CHECK_EQ that is not needed.\n\n\u0027what\u0027 was just compared against Renderer::kWhatFlushComplete before entering the\nif block.\n\nChange-Id: I72c5c156f814621a24439d89e150c4e0d90edcbb\n"
    },
    {
      "commit": "f5545b962794b78a97cafa73d0b592f55ffe06d8",
      "tree": "9a2ce9fe77de2cc8e2c3cf01145935058fcbcdeb",
      "parents": [
        "e65c89113232d070dd9153c54ca19301bca7a162",
        "a3c9d82d0f898d30982840b48d1f00fd0d831e19"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 17:13:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 17:13:21 2012 -0700"
      },
      "message": "Merge \"Bugfix: Seek on SRT external track\""
    },
    {
      "commit": "e65c89113232d070dd9153c54ca19301bca7a162",
      "tree": "09997cb32d82da8d2549044a95eb31c8c35cf39d",
      "parents": [
        "76da2635edbe0e6d023c665d5c344a3b7e070d73"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "message": "fix audio effect not destroyed when needed.\n\ncommit a5f44eba contained an error which made that audio effect\nmodules where not destroyed but left in the destroyed state\nrendering them unuseable after being released.\n\nBug 6805168.\n\nChange-Id: Ia4e683b3c970ffd01846c482fde73d799ff219de\n"
    },
    {
      "commit": "76da2635edbe0e6d023c665d5c344a3b7e070d73",
      "tree": "c797b865163cbef189704d724bb047e208190031",
      "parents": [
        "c374dae535b83d9b499dd9fe8f9dabdb8b0ac9fd",
        "f57b4ea3e409537b1d5f9aaea93d356b1cebbc6a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 15:30:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 15:30:35 2012 -0700"
      },
      "message": "Merge \"Added a callback in nuplayer via informational event to signal the start of video rendering\""
    },
    {
      "commit": "c374dae535b83d9b499dd9fe8f9dabdb8b0ac9fd",
      "tree": "9e854a53f611c1a6a08c7ac507037c9fcf49c3c9",
      "parents": [
        "33e6e35b03a726e35203e97550f32154c91d5f13"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 19:18:06 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 15:28:25 2012 -0700"
      },
      "message": "Added a callback to signal when the rendering of the video frame just occurred\n\nChange-Id: Ifbd78606ffc33483aecebf02cb18e0e52af9624d\nrelated-to-bug: 6851811\n"
    },
    {
      "commit": "f57b4ea3e409537b1d5f9aaea93d356b1cebbc6a",
      "tree": "ca0ff108318bbe53657e62ec27f241750b6a4b55",
      "parents": [
        "33e6e35b03a726e35203e97550f32154c91d5f13"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "message": "Added a callback in nuplayer via informational event to signal the start of video rendering\n\nChange-Id: Id7b9b82d4e5467ad8701bfbad4dcc5070f3703cf\n"
    },
    {
      "commit": "33e6e35b03a726e35203e97550f32154c91d5f13",
      "tree": "2648568f97f1b3f13335a044d267caa15d1d4e78",
      "parents": [
        "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 15:56:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:33:33 2012 -0700"
      },
      "message": "Miscellaneous audio record fixes\n\nCall AudioSystem::stopInput() if exitPending() after wait() returns.\n\nAcquire lock before clearing mActiveThread.\n\nChange-Id: Ia55e4c4b3accc65ad5479cbdc094fd919152af9f\n"
    },
    {
      "commit": "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4",
      "tree": "17db61cdcaeda8479f9f523c7689727a5b979470",
      "parents": [
        "a08412711b3266d336134b16a45e98baa8d11b9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 16:49:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:27:12 2012 -0700"
      },
      "message": "Use constructor to initialize instead of memcpy\n\nAlso don\u0027t check for thread parameter as it\u0027s always non-NULL\n\nChange-Id: Id23ded1370556ef3f76f81f5f0c6fa644bcba681\n"
    },
    {
      "commit": "a08412711b3266d336134b16a45e98baa8d11b9d",
      "tree": "f58f6e72ad397dda999ef18807a810f91297ca7f",
      "parents": [
        "be5f05e0fdfc4e3799653702187861a2afa072ee",
        "6f434482331b55876cb09c638149c21ca40c7690"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 20 11:15:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 11:15:51 2012 -0700"
      },
      "message": "Merge \"Ensure MEDIA_INFO_BUFFERING_END is always sent\""
    },
    {
      "commit": "be5f05e0fdfc4e3799653702187861a2afa072ee",
      "tree": "1cc15fea099c579aded967ec174f00307b2517eb",
      "parents": [
        "cf9465b83405a1ec26a164b079d9898c09d87fcd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 15:24:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 11:08:14 2012 -0700"
      },
      "message": "Internal dump methods return void not status_t\n\nOnly the IAudioFlinger::dump() needs to return a status_t.\n\nChange-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0\n"
    },
    {
      "commit": "9e4c3db01ba4eb1e5acbed113f78a31374900df6",
      "tree": "a8548d961144da923801f77ab621748530d81d22",
      "parents": [
        "898a9a9b867e5d209671feee4c92266f90a55aa3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:07:52 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:07:52 2012 -0700"
      },
      "message": "Camera2: Add more verbose logging\n\nUntil ATRACE works in emulator, add more verbose logs to help debugging\n\nBug: 6243944\nChange-Id: Ic5fbf764f2717e5edd05d37e0f7d826f1d494179\n"
    },
    {
      "commit": "898a9a9b867e5d209671feee4c92266f90a55aa3",
      "tree": "f27edb5a194a91270307f3289fd8ef6ac392b99d",
      "parents": [
        "4865aa8a84465108e044480c1d976677f138fca6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:05:20 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:05:20 2012 -0700"
      },
      "message": "Camera2: Fix recording bugs\n\n - Release recording stream on shutdown\n - Return recording gralloc buffers to queue when they are received by\n   camera service after recording has been stopped (which is normal\n   behavior thanks to pipeline latencies in camera pipelines)\n\nBug: 6243944\nChange-Id: Ia13a501c726613fd1e404733456dbd10d7b00132\n"
    },
    {
      "commit": "cf9465b83405a1ec26a164b079d9898c09d87fcd",
      "tree": "dddd46b6c96c68fd59b295c3cfb47eb0c3cc3a22",
      "parents": [
        "4865aa8a84465108e044480c1d976677f138fca6",
        "955e78180ac6111c54f50930b0c4c12395e86cf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 11:01:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 11:01:35 2012 -0700"
      },
      "message": "Merge \"AudioRecord locking\""
    },
    {
      "commit": "6f434482331b55876cb09c638149c21ca40c7690",
      "tree": "93973261c6356026e56c46700b51ab76b61266db",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 20 09:50:46 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 20 10:58:53 2012 -0700"
      },
      "message": "Ensure MEDIA_INFO_BUFFERING_END is always sent\n\nb/6620761\n\nChange-Id: Iafd2eeac7b3cbbeb42af3638628a32dc6c2bb414\n"
    },
    {
      "commit": "45dfb6ae94b33eea04d74afa378c1664e884f09a",
      "tree": "4fc280e001b95a441cc0cc4c4124ff960d477cda",
      "parents": [
        "1f1493ce72a3e823daac1b9cd94b2535e27ec8e0"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Jul 05 17:27:00 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Jul 20 07:13:13 2012 -0700"
      },
      "message": "Synchronize access to OMX class member variables\n\n- Protect access to mLiveNodes KeyedVector member variable in freeNode function\n\nChange-Id: Ic86844aabc2bc897ffb7fc91cd1f54254f5e29fe\n"
    },
    {
      "commit": "a3c9d82d0f898d30982840b48d1f00fd0d831e19",
      "tree": "f11bc23bc6447b3b6b4410f733424db3cdecac04",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Tue Jul 10 21:18:22 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Fri Jul 20 11:49:01 2012 +0900"
      },
      "message": "Bugfix: Seek on SRT external track\n\no Need to return closest upcoming subtitle when seeking time is within\ngap ranges.\no Manually cherry-picked from GTV change.\n(commit e026a83dc88888b42da77eca739b8f09a0cd6dae)\n\nrelated-to-bug: 6796228\nChange-Id: I02b7718a432d6b2f5575fa1a1a42bda6f04aa25b\n"
    },
    {
      "commit": "13210f3346462a86ce9fe3af72a0c200dba84e27",
      "tree": "0faa7e47806b95098c2dc01cf3b980d2124f0733",
      "parents": [
        "4865aa8a84465108e044480c1d976677f138fca6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 17:12:51 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 17:15:07 2012 -0700"
      },
      "message": "Added number of encoded frames and duration to the MPEG4Writer::Track::dump\n\no also removed unused varialble mMaxTimeStampUs\n\nChange-Id: I61a47e1ec8ee96a25df668637c4d4661188a1a8c\n"
    },
    {
      "commit": "4865aa8a84465108e044480c1d976677f138fca6",
      "tree": "872848b35c69752ddd53a0791645957b78b62b63",
      "parents": [
        "0dca0d2db7daf36f4f49638e120a9cf979f4d5c8",
        "5ad92f620fbbb6a8281f10169a23d38e3601e07a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 14:47:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 19 14:47:10 2012 -0700"
      },
      "message": "Merge \"Revert 94479fd5405642c67efd14cebe722feb9cbe6e77\""
    },
    {
      "commit": "0dca0d2db7daf36f4f49638e120a9cf979f4d5c8",
      "tree": "ee4a7a025fc0a24a1c362631203d6061746a5e5f",
      "parents": [
        "bb4350d3b9e9485ae59e084de270f86aecef8066",
        "77e8ae9967a078770416619e99ddb5b010def312"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 13:55:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 19 13:55:21 2012 -0700"
      },
      "message": "Merge \"When a request max file size is relatively small, don\u0027t store moov header at the beginning of a recorded mp4 file.\""
    },
    {
      "commit": "77e8ae9967a078770416619e99ddb5b010def312",
      "tree": "092570e7a1345d24c4b27761510e6a817188ebd7",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 17 19:18:29 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 19 11:47:37 2012 -0700"
      },
      "message": "When a request max file size is relatively small, don\u0027t store moov header at the\nbeginning of a recorded mp4 file.\n\nTrying to put the \u0027moov\u0027 box at the beginning of an mp4 file requires to reserve\nsome estimated space for \u0027moov\u0027. The estimate can be larger or smaller than the\nactual \u0027moov\u0027 size. When the estimate is larger, we could meet the file\nsize limit, although some space is wasted; but when the estimate is smaller than\nthe actual \u0027moov\u0027 size, we not only waste the reserved space but also have to\nuse extra space to write \u0027moov\u0027 space at the end of the file. In this case, often\nthe requested file size limit could be exceeded by a large margin.\n\nThis patch avoids putting the \u0027moov\u0027 box at the beginning when a file size limit\nis explicitly requested.\n\nChange-Id: I838443d08b5589f33f3c486c662195600e3edb9b\nrelated-to-bug: 6697505\n"
    },
    {
      "commit": "5ad92f620fbbb6a8281f10169a23d38e3601e07a",
      "tree": "c7b3d9ada1999b57f72e02e1e63ad062260d18f1",
      "parents": [
        "bb4350d3b9e9485ae59e084de270f86aecef8066"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "message": "Revert 94479fd5405642c67efd14cebe722feb9cbe6e77\n\nChange-Id: I5ca78d5462badf541868785b2ba2e3f6d0cf492a\n"
    },
    {
      "commit": "bb4350d3b9e9485ae59e084de270f86aecef8066",
      "tree": "2f38f108eb3dd420695cd07cd47a55ea030d51b5",
      "parents": [
        "cb4184c917f88a3c8d70c8bc6b99fc951b11cc37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 15:56:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 09:05:12 2012 -0700"
      },
      "message": "Use audio_devices_t more places\n\nChange-Id: Id0ace02ca6f480a6c46e11880acf6cdc66d83184\n"
    },
    {
      "commit": "cb4184c917f88a3c8d70c8bc6b99fc951b11cc37",
      "tree": "24bb02a54f694b57a7c7b2d30c5f7e9949c6e6cf",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a",
        "ec4147ed136546f0be29a68d8edbdafbcf656e58"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 19 08:52:07 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 19 08:52:07 2012 -0700"
      },
      "message": "am ec4147ed: Reconcile with jb-mr0-release\n\n* commit \u0027ec4147ed136546f0be29a68d8edbdafbcf656e58\u0027:\n"
    },
    {
      "commit": "ec4147ed136546f0be29a68d8edbdafbcf656e58",
      "tree": "7a0a8e099c9a90c42cb84b65d8462c7186e6b3cf",
      "parents": [
        "190313ec68e81c10d200ff3c20ac152cf90760d6",
        "fc938e092ecd91d877a8c86ca1027337a71f682e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 19 08:37:02 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 19 08:37:02 2012 -0700"
      },
      "message": "Reconcile with jb-mr0-release\n\nChange-Id: I783dd9fbd723bb284932123dfa9e06fb7c7ab879\n"
    },
    {
      "commit": "70b3c7b6f3fe22d3fdd5e8926291701432d6f4e8",
      "tree": "14733866f571e94c11a4d7a6ec3dade62d144e29",
      "parents": [
        "65e8d62a5b243518795cdafa498df4a49baf6940",
        "2df63ad6bbf0ad0fd066592b44f2e15123513112"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jul 18 23:04:41 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jul 18 23:04:41 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "f6d9696bf1db133d16dd8981380e1bfbd2e0bc70",
      "tree": "9599fa0f762f48aaffb17429f4b885236734d07b",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:50:46 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:53:39 2012 -0700"
      },
      "message": "Camera: Add OPAQUE pixel format to CameraParameters\n\nThis is only used to support recording with HAL 2 in the\nKEY_VIDEO_FRAME_FORMAT parameter, and is not exposed to applications.\n\nBug: 6243944\nChange-Id: I5976a748d199ae98189bd03af5bbd9e18cbd6bf0\n"
    },
    {
      "commit": "1f1493ce72a3e823daac1b9cd94b2535e27ec8e0",
      "tree": "0cc18c7a6b51033a0f81e75991d2fa5d746dfb51",
      "parents": [
        "b46ccde3610d3f1713f7ebf0e9ffe943e44b54d2",
        "65e8d62a5b243518795cdafa498df4a49baf6940"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 18:31:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 17 18:31:01 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  Revert input buffer count for the SoftAAC* decoders back to 4.\n  Reduce underruns in screen off, esp. with EQ\n  Added some informational log messages to track down ANR related issues\n  audioflinger: change session check in createTrack.\n  Fix static track activity ref counting\n  Don\u0027t allow AudioTrack frameCount to decrease\n  Fix race in AudioTrack destruction\n  AudioFlinger: fix tracks ready for mixing logic.\n  Fix regression in AudioTrack::pause()\n  Fix ToneGenerator regression\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": "b46ccde3610d3f1713f7ebf0e9ffe943e44b54d2",
      "tree": "0cc18c7a6b51033a0f81e75991d2fa5d746dfb51",
      "parents": [
        "faa5bdd1efff301962537a7b271bd31c78ec13dc"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:03:25 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:17:23 2012 -0700"
      },
      "message": "Merge from jb-dev for \"sample video corruption in MediaCodec mode.\" DO NOT MERGE\n\njb-dev commit: fa2b8f243eb048fb2b8e5a14356190f69eb31a36\n\nChange-Id: I4f08b9c8e9682a998db01c509a390e51bae60c2d\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "ea682976030a3930f6ee49b33b7e21abfc68174a",
      "tree": "24bb02a54f694b57a7c7b2d30c5f7e9949c6e6cf",
      "parents": [
        "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
        "f5926136ad328e95a79336b051d6f853443eaab9"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 14:13:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 17 14:13:34 2012 -0700"
      },
      "message": "Merge \"CameraService: Add more information to service dump.\""
    },
    {
      "commit": "f5926136ad328e95a79336b051d6f853443eaab9",
      "tree": "196d7d93abbd276f70839291eb711094d345f8c7",
      "parents": [
        "dcda3b325f465aa6ec2be11db1c56c8a5e867f33"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 13:54:20 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 13:54:20 2012 -0700"
      },
      "message": "CameraService: Add more information to service dump.\n\nAdd dumpsys information even when there\u0027s no active client. Including:\n- Camera module version / name / author\n- Number of camera devices\n- Static information for each device\n\nChange-Id: Ib97e325f6be5f989b342d24f1ae17aa9e796f8ed\n"
    },
    {
      "commit": "fc938e092ecd91d877a8c86ca1027337a71f682e",
      "tree": "14733866f571e94c11a4d7a6ec3dade62d144e29",
      "parents": [
        "65e8d62a5b243518795cdafa498df4a49baf6940",
        "2df63ad6bbf0ad0fd066592b44f2e15123513112"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jul 17 12:30:26 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jul 17 12:30:26 2012 -0700"
      },
      "message": "merge in jb-mr0-release history after reset to jb-dev\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": "fd4e20c226eca185fc789de761beae64855bfbbb",
      "tree": "7f752ff15fa1f70181281b5dad8c7c987c559b60",
      "parents": [
        "d96c5724818fb47917bb5e7abe37799735e1ec0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 11:51:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 16:49:01 2012 -0700"
      },
      "message": "Run audio at priorities 2 and 3 above kernel 1\n\nAlso run the watchdog at same priority as the fast mixer.\nrequestPriority() originally used only the caller\u0027s pid to decide which\ncgroup to assign, but in the future it might look at the priority also.\nSo it\u0027s safer to use same priority as the fast mixer to be sure we\nrun in the same cgroup.\n\nBug: 6461925\nChange-Id: Ia59c93e4b22dacbb6746bfa6ad491be7b72f2b8d\n"
    },
    {
      "commit": "d96c5724818fb47917bb5e7abe37799735e1ec0e",
      "tree": "e7cc73da27068c8c770e53fe0ed00bf7276aea5f",
      "parents": [
        "dcda3b325f465aa6ec2be11db1c56c8a5e867f33"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 13:44:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 11:57:11 2012 -0700"
      },
      "message": "Don\u0027t call virtual methods in destructor\n\nThe result of calling virtual methods from a destructor is undefined.\n\nChange-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c\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": "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
      "tree": "31327ae0fe7ad1e34a3766bf6246c26752704ce7",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 14:31:33 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 16:35:52 2012 -0700"
      },
      "message": "Use atomic ops for thread suspend count\n\nThere was a theoretical but unlikely race if two binder threads\nexecuted suspend() or restore() concurrently.  Also added comments.\n\nChange-Id: I0908acc810b83bdd66455b27ca3429de1662a2cd\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": "65e8d62a5b243518795cdafa498df4a49baf6940",
      "tree": "14733866f571e94c11a4d7a6ec3dade62d144e29",
      "parents": [
        "109347d421413303eb1678dd9e2aa9d40acf89d2",
        "fa2b8f243eb048fb2b8e5a14356190f69eb31a36"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 15:11:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 15:11:07 2012 -0700"
      },
      "message": "Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev"
    },
    {
      "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": "9cca4c6d976d2d4127286e9eaa54d1b99880c25c",
      "tree": "47231eca97c6ad4f51f32247f61bd863078bfa51",
      "parents": [
        "04cd0186305e2b59d23c9147787046c6662029cc"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jun 15 15:41:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 12:31:01 2012 -0700"
      },
      "message": "Camera2: Add recording support\n\n- Support startRecording/stopRecording\n- Support lock/unlock/connect\n- Some rearrangement of class definitions for clarity/consistency\n\nBug: 6243944\n\nChange-Id: I00c600a798572d2f69bb3f2bab3d79e4bd9a91e5\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": "39c54f68804c1ce5c85ec588f3c2c63447a807b4",
      "tree": "04b272355171e4dbfbc95652c477011264ad1518",
      "parents": [
        "4fe1ec4f40b58abff6cec147aa786cb65698161a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 09:12:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:02:23 2012 -0700"
      },
      "message": "Remove dead code\n\nChange-Id: If22a6c4e572b0734eba0c5a7ce29a2c61c581e5d\n"
    },
    {
      "commit": "4fe1ec4f40b58abff6cec147aa786cb65698161a",
      "tree": "6e289895d6a4daf62862422798a5b954c99ed5df",
      "parents": [
        "04270daf50f0c602d7c57a257a693e68246cbeb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 16:33:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:00:45 2012 -0700"
      },
      "message": "Fix check for invalid channel count\n\nChange-Id: Id9e3dce0e3d5971786212d3f70e17a17e32ce92b\n"
    },
    {
      "commit": "04270daf50f0c602d7c57a257a693e68246cbeb7",
      "tree": "bebd6ac579df8b08aca04b61b2292c42c9b6aefc",
      "parents": [
        "254af180475346b6186b49c297f340c9c4817511"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:55:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 15:51:29 2012 -0700"
      },
      "message": "Record overflow cleanup\n\nAdd comments and rename one method for clarity\n\nChange-Id: I04a9147e46e88a072256c0211b112d52202419e2\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": "4d2132c866228eaef563e8141ebf06aa25ee9ff7",
      "tree": "1f1a46a174ec55ea2cf8fa468048fd585514da0e",
      "parents": [
        "2df8f55055fe431a508148cf525df1ba40f03113",
        "cec4abb2a39eafa75cf6894170a200322aa7226e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 09:46:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 10 09:46:45 2012 -0700"
      },
      "message": "Merge \"audio policy: fix delayed command insertion\""
    },
    {
      "commit": "2df8f55055fe431a508148cf525df1ba40f03113",
      "tree": "1ab69032f07ee78a7de0df5c64ca801744f0ca15",
      "parents": [
        "a34f8ec169986c5a28600c0decaa4e2db70df8e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:46:23 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:38:01 2012 -0700"
      },
      "message": "Add comments on use of volatile for track count\n\nand add acquire load at the read\n\nChange-Id: Ib41a58f5b1f6af87a8bd63d3f77d2ec0e48cb479\n"
    },
    {
      "commit": "a34f8ec169986c5a28600c0decaa4e2db70df8e4",
      "tree": "d3a4830dd528dbef48be7e9f919217d69f91f269",
      "parents": [
        "9f34a36d9cdb9595c288e50ffe00da038bc8abb9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:57:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:34:14 2012 -0700"
      },
      "message": "Remove \u0027volatile\u0027 from mMute and add comments\n\nChange-Id: I386ba27b2305a397aba70331c6bf0d35ea727cf6\n"
    },
    {
      "commit": "9f34a36d9cdb9595c288e50ffe00da038bc8abb9",
      "tree": "6b7e7720d4856de8d88b44f5eae3f62993761b2e",
      "parents": [
        "7d6c35bf132a46c0a8a9826491882495fc98bd8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 16:46:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:28:31 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nChange-Id: I424052b4ff9218147a5cfc8e6dcd67fe8105d229\n"
    }
  ],
  "next": "7d6c35bf132a46c0a8a9826491882495fc98bd8c"
}
