)]}'
{
  "log": [
    {
      "commit": "49d2b1864c3dfec6faff74d67cb2527a8f1af5a8",
      "tree": "2717d50ecfd85f7b558b2ead2d82bed6ea237dde",
      "parents": [
        "021df141ed8fdc0bc73b8bcb17106e2c7512b372"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 18:11:20 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 18:11:20 2012 -0800"
      },
      "message": "move CursorWindow from libbinder to libandroidfw\n\nChange-Id: I3b304e4f74e0d0ec8b20c57296c62449c9a0f792\n"
    },
    {
      "commit": "6f15cc959ef11fd2fbba71bc996d4a669b518b25",
      "tree": "257f97f19a8587a02f43ba82917fe561f24cf805",
      "parents": [
        "cbd01c31bfa40f4e1b8df9d0d6f57b10aebc5fe9"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Sun Jan 22 15:26:27 2012 -0800"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Feb 27 16:40:48 2012 -0800"
      },
      "message": "Removed dependecies between BufferQueue and SurfaceTexture\n\nRefactored SurfaceTexture and BufferQueue such that share\nno protected members.  Created an consumer facing interface\nfor BufferQueue in preparation of connecting SurfaceTexture\nand BufferQueue through a binder.\n\nChange-Id: I938e63e085128148c58d0e26c7213b30145c109f\n"
    },
    {
      "commit": "f6b53db704ed449d9376b31ee5a5c97b2796f559",
      "tree": "a08fbbdb56bb35d8bbf5a19dcfa01dfa1c5fc9c8",
      "parents": [
        "fa28f57f29007fdeacaddd31b86ba97abf235adf",
        "f217df6819f7cdf7e4ef857dd61036c1812d09f5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 27 13:35:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 13:35:30 2012 -0800"
      },
      "message": "Merge \"libutils: add a system-wide tracing utility\""
    },
    {
      "commit": "c7d47ec6222690c9433023cb8a5d9a1bdd5f9c70",
      "tree": "57e8c9fad3bc36827d693aceb0745252d73fd768",
      "parents": [
        "e912404f85f9b4e10d2ba4123de5098bd6b9b0d3",
        "05221052c5bf1f14db30e57ce3b60e37431c07a5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 27 13:15:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 13:23:51 2012 -0800"
      },
      "message": "Merge \"Revert \"Removed dependecies between BufferQueue and SurfaceTexture\"\""
    },
    {
      "commit": "8335f1ccccedb6655d96d9d5b697a7f0938235dd",
      "tree": "30a7f8b3e646157365dd51222665a68753fa25e3",
      "parents": [
        "57235fc65b5920f4867e66c8263efab49e92a21b"
      ],
      "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": "57235fc65b5920f4867e66c8263efab49e92a21b",
      "tree": "2cfcc7c76dcc59329f776baa4e6ac2e744e491a5",
      "parents": [
        "7d3916ff9cd464bd064a7e075c555f9ec6ff4349"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 23:02:14 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:04 2012 -0800"
      },
      "message": "split utils/threads.h into multiple headers\n\nAndroidDefs.h - C/C++ enums and types\nMutex.h - Mutex class declaration\nCondition.h - Condition class declaration\nRWLock.h - RWLock class declaration\nThread.h - Thread class declaration\nAndroidThreads.h - low-level thread creation functions\nthreads.h - includes all the above for backward source compatibility\n\nChange-Id: Ia2f80c175333b59a41d1720985810bb2346e94cb\nNote: implementations are still in Threads.cpp\n"
    },
    {
      "commit": "7d3916ff9cd464bd064a7e075c555f9ec6ff4349",
      "tree": "025df9fd125dfc921a5d6cb258b1824ee23cc80f",
      "parents": [
        "12aba767c78c19b5f087c1deed5d2f9170ff5f75"
      ],
      "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": "05221052c5bf1f14db30e57ce3b60e37431c07a5",
      "tree": "45cc93138d0ead7a6336f5a3ee1710c649f3eb27",
      "parents": [
        "a631399f71dbc7659d2f241968f85d337726ae61"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Feb 27 11:32:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 11:32:06 2012 -0800"
      },
      "message": "Revert \"Removed dependecies between BufferQueue and SurfaceTexture\"\n\nThis reverts commit a631399f71dbc7659d2f241968f85d337726ae61"
    },
    {
      "commit": "c108613fb8ef0fabb3f08198a52bd0877e382937",
      "tree": "df3673454690178e90343b66d5ae85e7a473d73c",
      "parents": [
        "7fbedadb62db7e11f4616499458c85976f71e637",
        "a631399f71dbc7659d2f241968f85d337726ae61"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 26 17:06:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Feb 26 17:06:42 2012 -0800"
      },
      "message": "Merge \"Removed dependecies between BufferQueue and SurfaceTexture\""
    },
    {
      "commit": "f217df6819f7cdf7e4ef857dd61036c1812d09f5",
      "tree": "4482df7503bc27076312e6ceea6acab94c9b1014",
      "parents": [
        "7fbedadb62db7e11f4616499458c85976f71e637"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 23 11:28:28 2012 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 26 16:06:53 2012 -0800"
      },
      "message": "libutils: add a system-wide tracing utility\n\nThis change adds some utility functionality for doing userland tracing\ninto the kernel trace log.\n\nChange-Id: Id0a8cee9ea515b1d8765afd1cecf472a88b4b9e8\n"
    },
    {
      "commit": "af01feafc30152baf8e0a5cfddbf02bd14731fd2",
      "tree": "e19b244ff773d206d21ecccf29296f1848790dd6",
      "parents": [
        "cc0eaa6582563f51c98db1b232200ac4d2a9a996"
      ],
      "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": "cc0eaa6582563f51c98db1b232200ac4d2a9a996",
      "tree": "68fcede9c118f7a72de79d0402e92c97b4edfaf3",
      "parents": [
        "7b49b4bea8090bb8e5015225eb05686d3676205c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 16:42:46 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 16:42:46 2012 -0800"
      },
      "message": "remove libui dependency on libEGL\n\nChange-Id: I1194f04085637d5c384e134967249430cc43b6ee\n"
    },
    {
      "commit": "e9d4c71f47f74ee9a4a490f62769ad010a17d19b",
      "tree": "8227f4727eb45324bf96bb18e4290f206f19108f",
      "parents": [
        "2d77b5332ac4ef5b252fbd8f56a195e0fce03292"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 14:58:36 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 14:58:36 2012 -0800"
      },
      "message": "deprecate L_8, LA_88 and RGB_332 in sdk\n\nre-add support for pixelformats L_8, LA_88 and RGB_332 in libui\nfor backward compatibility.\n\nThis may or may not fix 6058926\n\nBug: 6049685\nChange-Id: Ic1b8b4cc994522f7fe664da64c0ef76b98bc6d53\n"
    },
    {
      "commit": "6822c97898ef6c73528d17beb161059e5032f34a",
      "tree": "22281d2edf52465ecc2ae33e83d6f0fb1d29f4be",
      "parents": [
        "afb902be6710d240bec3d98bd81d97dfb286ffdb",
        "32916f7a22f2abf5c1e7021f44c2337ca172f2e5"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Feb 23 12:22:35 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 23 12:22:35 2012 -0800"
      },
      "message": "am 32916f7a: am fc4215ee: am 2d03a93e: Merge \"Xcode 4.3 compatibility checkin\"\n\n* commit \u002732916f7a22f2abf5c1e7021f44c2337ca172f2e5\u0027:\n  Xcode 4.3 compatibility checkin\n"
    },
    {
      "commit": "a631399f71dbc7659d2f241968f85d337726ae61",
      "tree": "0005b7b149c11ed9943e679ce458282cf7d51a47",
      "parents": [
        "8181201c6e55765fd58d2ff07921a143b879edd9"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Sun Jan 22 15:26:27 2012 -0800"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Wed Feb 22 20:12:27 2012 -0800"
      },
      "message": "Removed dependecies between BufferQueue and SurfaceTexture\n\nRefactored SurfaceTexture and BufferQueue such that share\nno protected members.  Created an consumer facing interface\nfor BufferQueue in preparation of connecting SurfaceTexture\nand BufferQueue through a binder.\n\nChange-Id: Iff55e740e36a7f70c9f7a17ee7a5af38e3d21f0f\n"
    },
    {
      "commit": "5c850396b39a57baabd37a9c0c8324f1bee408ca",
      "tree": "f96a99dcb625214edb4262fc26e7f4cb6a18dcfa",
      "parents": [
        "592b213608b67b6c9a72ed080db56fa9fb2cdcf8"
      ],
      "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": "88572f7a3e9d7ef85c26865a0150f3c2041561c2",
      "tree": "30627dcff98dfa4a4058054ef198301b374be82c",
      "parents": [
        "745e02ae45d97fd5672ffc22ea854f011895a4e6"
      ],
      "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": "3e3681151a231225b2b25c996bb9e85948a345a8",
      "tree": "4f22d76c270b119b1bb9399cb524147008e5723f",
      "parents": [
        "edabdcf5acc7d607e74590f9207696702d45bf2f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 21 18:56:08 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 21 18:56:08 2012 -0800"
      },
      "message": "remove libui\u0027s dependency on libpixelflinger\n\nthis also remove support for unused pixelformats.\n\nChange-Id: I2c759a6d2daa740f3786ed62095def8047ae933d\n"
    },
    {
      "commit": "f65934a7213b39859966a7054ea5ae1a7530dcbe",
      "tree": "13429506d9f4fbe52d0f7b45422ac7e368ac462b",
      "parents": [
        "c10e48901c6531167dd001280ad9207023a01431",
        "745fcc0571f2143dd0c1f45309bae47788612999"
      ],
      "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": "7a4d92af9bdcf94d770bfa8313ad5b21c829ed96",
      "tree": "547b7020c3b87ee0f011ff4227f4e64b6d0b5aa7",
      "parents": [
        "44c1f012c4ffa75853a068963b212ee1c965b6ea"
      ],
      "author": {
        "name": "Al Sutton",
        "email": "al@funkyandroid.com",
        "time": "Sun Feb 19 08:31:19 2012 +0000"
      },
      "committer": {
        "name": "Al Sutton",
        "email": "al@funkyandroid.com",
        "time": "Sun Feb 19 08:31:19 2012 +0000"
      },
      "message": "Xcode 4.3 compatibility checkin\n\nThe update compiler in Xcode 4.3 (and 4.4) requires lookups into dependant\nbases of class templates to be qualified. This checkin fixes the issues\nraised by the compiler by implementing the this-\u003e recommendation from\nthe llvm page at http://clang.llvm.org/compatibility.html#dep_lookup_bases\n\nSigned-off-by: Al Sutton \u003cal@funkyandroid.com\u003e\n"
    },
    {
      "commit": "b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4",
      "tree": "2b90dc39a35d8081ea47b038893624b69a01202d",
      "parents": [
        "6db0608dff408130b35e6f21abe746a635648b18"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 18:27:36 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 19:01:26 2012 -0800"
      },
      "message": "frameworks/base refactoring.\n\nstep 2: move libutils headers to their new home: androidfw\n\nChange-Id: I14624ba23db92a81f2cb929f104386e1fab293ef\n"
    },
    {
      "commit": "b93a03f841d93498bfea6cc92a22faa34bce1337",
      "tree": "b5c2e1c097ad9dc4a3580ee661223794e0560f60",
      "parents": [
        "e97df97b6cb5e4bff8f9da9ecff7cddb7d04ff41"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:34:57 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:36:10 2012 -0800"
      },
      "message": "frameworks/base refactoring.\n\nFirst step. Move libui includes to their new home: androidfw.\n\nChange-Id: Ic042b52fdba72f30edc3cc6339bf30b4c1b99662\n"
    },
    {
      "commit": "d72031cee315438c4728fd3f0cce1971a9f00717",
      "tree": "1b7e0fb053ae129e69040f09066b3db1812984d6",
      "parents": [
        "4fbe95ede28e9de22404fc38645667fd3a401b14"
      ],
      "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": "d8cf2960d0828121d67ad0234c648f193a90c86a",
      "tree": "8c1cada90151accd18c4b1a36552d7e79a77087f",
      "parents": [
        "c157673a590e670a9a509ec13d47ffada0b56335"
      ],
      "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": "6c929510474caa14dc9d56826b2c65552861d6b3",
      "tree": "cfa4a959e65db46ae2469104ba5ccdc63e15cd38",
      "parents": [
        "cb46d80d217899e51c3d1ad6fc930d9b61883cf9"
      ],
      "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": "745fcc0571f2143dd0c1f45309bae47788612999",
      "tree": "e3ca684ae193633ec29878c7385e3ad18b77e521",
      "parents": [
        "a9daa164a58fc70d08702787e69a56212f5ad8c9"
      ],
      "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": "91ec0b722f659bb5e4bcc64339f2fbbe30a31287",
      "tree": "2a664637f4b65eeb528a9ff256d9380c9c089adf",
      "parents": [
        "79952ee29a8fc67b6d76a8db747bb72dd7d6ecd1",
        "91e328984c0d1e0f95b3d37f779d9d4fa9bfe8f8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 17:11:41 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 17:11:41 2012 -0800"
      },
      "message": "Merge \"Clean up InputChannel file descriptor data type.\""
    },
    {
      "commit": "39eb8074deba507e037a1596168e7b762508c63f",
      "tree": "b583296958fe42c7c9b9ac81a4d498c846c4ae05",
      "parents": [
        "ea555e27407ad2a32d2682c08f423d2af71f2a91",
        "f7c761e5d31146a1fbd2a51d9adfe17cc61ad4c1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Feb 14 16:29:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 16:29:02 2012 -0800"
      },
      "message": "Merge \"Refactored query function from SurfaceTexture into BufferQueue\""
    },
    {
      "commit": "91e328984c0d1e0f95b3d37f779d9d4fa9bfe8f8",
      "tree": "d34bec78b0c35e3d35110564f39c3a05050d41f5",
      "parents": [
        "58aedbc9bea13415e2d42cf7c9fe8a7efd243e66"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:56:29 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:57:59 2012 -0800"
      },
      "message": "Clean up InputChannel file descriptor data type.\n\nFile descriptors are ints.\n\nChange-Id: Ie36733bf36ddfeaa9a09ef6ebd7bd2f1788f5d27\n"
    },
    {
      "commit": "4f7adcf76a6f97076c05720d9c20a221a57692cb",
      "tree": "9b7b6e374d61861cee5b9bf0da389b7f0b2d0d52",
      "parents": [
        "c87b0084e3dbf5c0862d29f039ee908bccf39e9d",
        "b3db213eb55acb661e4b9ea40bcc00af4b76fab9"
      ],
      "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": "b3db213eb55acb661e4b9ea40bcc00af4b76fab9",
      "tree": "53cdccc6ea5bfd7a549b67ac15dcd66e2735e01d",
      "parents": [
        "d23d2b1662dc61222541310f7297cbee4e8b2b9d"
      ],
      "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": "f4e1bdc13e0c9bb6352e458bef283dfc7165e23f",
      "tree": "686bacdffabc2bf4e88b64808e97ddb431e5f6aa",
      "parents": [
        "150d238f3a5218846c5f16e64958079d22ac11c4",
        "6c9ddd2cbbdf59eaa1bdd83e7b6b0bc7d32bf7ca"
      ],
      "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": "6a20b26d99d40b32a711e6fd5da51da73949aa73",
      "tree": "4f62a6a7f8a688ba9ccb30c1adca7b375c3045f8",
      "parents": [
        "4212d3fc736712d6e5fb69d5067ce8d9a83806ef"
      ],
      "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": "fbd2e64346c3b86f62fdf2c94f0e3c558e029a6d",
      "tree": "2c8af45d74acf97ab7c087ef6690f875ad4b2d7c",
      "parents": [
        "a17032eeb91f709360b6271b71b85e67f729bcc1",
        "e901a5c29b81ace1c7f185ca4e62404f03c4c43d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 13 14:21:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 13 14:21:36 2012 -0800"
      },
      "message": "Merge \"Playback rate on MediaPlayer\""
    },
    {
      "commit": "2d34e0cfe7e2586b75a6f2c6646dd2e1e52c973f",
      "tree": "fbec10b21b79e9055f2deef4fbbb3ca4294c0334",
      "parents": [
        "90fde93c473aca5a33dc41c989bb2fdc5f2b1485"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:18:09 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:59:32 2012 -0800"
      },
      "message": "Accurately track the sequence numbers of batched events.\n\nInstead of sending finished signals immediately when appending to\na batch, record the chain of sequence numbers that were part of\nthe batch and then send finished signals all at once when done.\nThis change helps the dispatcher keep track of the true state\nof the application and can improve ANR detection slightly.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I463c2221e2aa8fdf1c3d670c18e39e59ab69b0db\n"
    },
    {
      "commit": "90fde93c473aca5a33dc41c989bb2fdc5f2b1485",
      "tree": "8011cef8b049d51018daa6b386491c427c400229",
      "parents": [
        "072ec96a4900d4616574733646ee46311cb5d2cb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 12:44:01 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 12:44:01 2012 -0800"
      },
      "message": "Enable deferred input messages to be batched.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I6874d2128e880a35c6c33890c858cc6ee22af0fd\n"
    },
    {
      "commit": "e901a5c29b81ace1c7f185ca4e62404f03c4c43d",
      "tree": "99e4aa6056c130b892d77b0e55514bb75c97260e",
      "parents": [
        "65b8bbd3c9842588702ac3a7860851f0496ed33c"
      ],
      "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": "072ec96a4900d4616574733646ee46311cb5d2cb",
      "tree": "9172f3e3295f9d4ff3517a47dec360c2f0a99948",
      "parents": [
        "1adee11b5e644c74a2ed40344f4836de3bd3ac56"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 14:46:57 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Implement batching of input events on the consumer side.\n\nTo support this feature, the input dispatcher now allows input\nevents to be acknowledged out-of-order.  As a result, the\nconsumer can choose to defer handling an input event from one\ndevice (because it is building a big batch) while continuing\nto handle input events from other devices.\n\nThe InputEventReceiver now sends a notification when a batch\nis pending.  The ViewRoot handles this notification by scheduling\na draw on the next sync.  When the draw happens, the InputEventReceiver\nis instructed to consume all pending batched input events, the\ninput event queue is fully processed (as much as possible),\nand then the ViewRoot performs traversals as usual.\n\nWith these changes in place, the input dispatch latency is\nconsistently less than one frame as long as the application itself\nisn\u0027t stalled.  Input events are delivered to the application\nas soon as possible and are handled as soon as possible.  In practice,\nit is no longer possible for an application to build up a huge\nbacklog of touch events.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d\n"
    },
    {
      "commit": "cbee6d6ede0499fb4a2c00bfc00d5db8d9ed5139",
      "tree": "2ccbec05bbcd99c514673407ca21fb58fc7dd687",
      "parents": [
        "3241b6b7bd7eff64f0118ba2d636030e505a98f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 20:11:27 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Rewrite input transport using sockets.\n\nSince we will not longer be modifying events in place, we don\u0027t need\nto use an ashmem region for input.  Simplified the code to instead\nuse a socket of type SOCK_SEQPACKET.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I05909075ed8b61b93900913e44c6db84857340d8\n"
    },
    {
      "commit": "8e9d67a1356881d7dce75c83d8c6639a562d1a7a",
      "tree": "56593c0b48cf5014a7041c98a5dc32af0840e9f9",
      "parents": [
        "55ee84154b3afe07afef6311f707928856840f89"
      ],
      "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": "a573f6a1d9b12393fbdfd2c0850499973849854b",
      "tree": "b44ae056ae7688ef8698c42bb401d55760b9ccf5",
      "parents": [
        "7ff3144aa6a4c5e6f0f64933ce174b424cfbfd6e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 09 16:12:18 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 09 18:06:01 2012 -0800"
      },
      "message": "Some hardening of isolated processes by restricting access to services.\n\nServices now must explicitly opt in to being accessed by isolated\nprocesses.  Currently only the activity manager and surface flinger\nallow this.  Activity manager is needed so that we can actually\nbring up the process; SurfaceFlinger is needed to be able to get the\ndisplay information for creating the Configuration.  The SurfaceFlinger\nshould be safe because the app doesn\u0027t have access to the window\nmanager so can\u0027t actually get a surface to do anything with.\n\nThe activity manager now protects most of its entry points against\nisolated processes.\n\nChange-Id: I0dad8cb2c873575c4c7659c3c2a7eda8e98f46b0\n"
    },
    {
      "commit": "f7c761e5d31146a1fbd2a51d9adfe17cc61ad4c1",
      "tree": "7a07a63b0c5d1565b66ba2abb1d46b0b90000258",
      "parents": [
        "4f0106cca0c40cd506367c894436f91c4920a5e1"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Jan 30 15:51:27 2012 -0800"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Thu Feb 09 16:16:51 2012 -0800"
      },
      "message": "Refactored query function from SurfaceTexture into BufferQueue\n\nChange-Id: Id1cb6cc38d01edb4fcfcad867c5a7693bdcc3ab1\n"
    },
    {
      "commit": "1c90e73f5d22c3d8e07b236ec8f33a42c01e056f",
      "tree": "b44faacc1e2e542991bbd24d056ac7c114d43385",
      "parents": [
        "0777d2df89e4c5269fce6054ee1a0446043ce112",
        "70e80aacf98414a6acee0d0e5eb1a7b5df7daccb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 09 11:08:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 09 11:08:02 2012 -0800"
      },
      "message": "Merge \"Refactored ISurfaceTexture calls from SurfaceTexture into BufferQueue.\""
    },
    {
      "commit": "6c9ddd2cbbdf59eaa1bdd83e7b6b0bc7d32bf7ca",
      "tree": "19c294f5fc7100b26acf431cef2ee5f9318ee788",
      "parents": [
        "52835f5d201ac05743586f3553ced856d62a08fb"
      ],
      "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": "e1a409ba68087c66238c986b270c17932e39f0ba",
      "tree": "9f40fba1733771e551f7f48d51917f50b80e9c36",
      "parents": [
        "52835f5d201ac05743586f3553ced856d62a08fb",
        "7251673821202960b38742f14d8bfa122a1843d2"
      ],
      "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": "39d00cb442985723295540468610b5c612d251c9",
      "tree": "65c1f26c9a8a770f27891d153ef433a9068a7a1b",
      "parents": [
        "f31d05007c9cc5db90e0641e4f8621f5463dcb4e"
      ],
      "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": "6731333584b3065b30a371519a14ea005057061a",
      "tree": "9711b0f5303788837a4929d309ed0bb1c2a4e201",
      "parents": [
        "a5a6580d17acbad9407a92e7372598aeed3d0a70"
      ],
      "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": "1b33107f3798636cb85cc876b17d4e2adbf1294a",
      "tree": "1e8dc27f754dfc344bef129483d9c70a7e0e841e",
      "parents": [
        "cd330e7f38bf72290c1a230cb93b8177470e88bf",
        "d9d68dcb62760e561fadc061b593e8c76bce85d6"
      ],
      "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": "1e3a8d3090f2a33562201f95f736949a8d2df576",
      "tree": "01ab0e142e205a6ca799d22ad6e86a771f084e2e",
      "parents": [
        "cbe8b722479c7777c1ada27a898cefa47c1acdc7",
        "4b80abcdd5e28deb6991bd50a208b66162f90024"
      ],
      "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": "09b9ba0db29aaebe682b7391d93ae179b8bd8ee8",
      "tree": "cbc69890dba1fe8460f71cb1832025cc9767007b",
      "parents": [
        "01a802692f6bf2c97a623683d073e949af61d7a9",
        "7c2e37dd32d42f1398a48d2ca6a51cf2e96b9893"
      ],
      "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": "16d64ad699b2dc91d5e1f149a3de645cf83ec965",
      "tree": "7046158b847127a6c18185e67ff72211be1af9ca",
      "parents": [
        "e0efd5f6c19e8944e5dd65e8c537fcb32b1b9fd2",
        "3f6d83a68a2d95905904b3352db677e55363591c"
      ],
      "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": "7251673821202960b38742f14d8bfa122a1843d2",
      "tree": "65c225737e4fbf5d703f53d60cec2e57c2015c50",
      "parents": [
        "fb2cfa223b47db3ee46df22dcdb92f4fb013dcdd"
      ],
      "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": "68c02e25e84e9814d313b43680631b98e25fa6d5",
      "tree": "7b034f83dfd888709acd33de27bd8fbc4bc2554e",
      "parents": [
        "ec159352fe7fb4c6a476c3542dc65037cb57f982",
        "967e2bf3ac8943a8e8a374bf86021915445cda67"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 07 17:07:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 07 17:07:00 2012 -0800"
      },
      "message": "Merge \"Preliminary support for clipRect(Rect, Op)\""
    },
    {
      "commit": "967e2bf3ac8943a8e8a374bf86021915445cda67",
      "tree": "1534a056ce117ebd6c0b8e39bd6a2ed2a6eb46c8",
      "parents": [
        "0afa7e2d95a1ae047ceddf2ca67f05c67ac30770"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 07 17:04:34 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 07 17:04:34 2012 -0800"
      },
      "message": "Preliminary support for clipRect(Rect, Op)\n\nThis adds basic support for clip regions. It is currently disabled at compile\ntime. Enabling clip regions will require setting up a stencil buffer.\n\nChange-Id: I638616a972276e38737f8ac0633692c3845eaa74\n"
    },
    {
      "commit": "70e80aacf98414a6acee0d0e5eb1a7b5df7daccb",
      "tree": "c9872a1478e025b50fffb06a53e687963566805c",
      "parents": [
        "e7171effdf9ef0700782520187c0a292b0a74759"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Sun Jan 22 15:26:27 2012 -0800"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Tue Feb 07 13:57:01 2012 -0800"
      },
      "message": "Refactored ISurfaceTexture calls from SurfaceTexture into BufferQueue.\n\nChange-Id: I514f6b802f6b49c9ae27bed37bf0b9d23da03c9a\n"
    },
    {
      "commit": "f5a9f439b6560f286a9326212c8cd44034cc6d78",
      "tree": "58fe5852645a8c7a5e3e22c36164b46e4bec00d2",
      "parents": [
        "cea2c396c5846a77c1427b9301e712beabe3f13d"
      ],
      "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": "cea2c396c5846a77c1427b9301e712beabe3f13d",
      "tree": "96d26c236730aa7365fd498fbcccdf695cb516de",
      "parents": [
        "ffd121233a38adfa49f7bb29bdceba7a4700e0c7",
        "946ab0ff302608f3209a3aa50d811d54932c3d8e"
      ],
      "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": "d9d68dcb62760e561fadc061b593e8c76bce85d6",
      "tree": "4e48c1b6ed2404a10d9d4c52b800b5ece4467a12",
      "parents": [
        "f55bc56490660e8eff92ff1f97607d6e78826629"
      ],
      "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": "7c2e37dd32d42f1398a48d2ca6a51cf2e96b9893",
      "tree": "823cae479f17737133119b957dd28748f30b1668",
      "parents": [
        "f55bc56490660e8eff92ff1f97607d6e78826629"
      ],
      "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": "3f6d83a68a2d95905904b3352db677e55363591c",
      "tree": "f4632e291615a04c46791b3b5f1bd35a1efc6c5d",
      "parents": [
        "f55bc56490660e8eff92ff1f97607d6e78826629"
      ],
      "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": "4651c0ea80d0b64f8c689d8257b86414628daf9d",
      "tree": "e89299815910c6b4696e082cddfa76a38173c0ab",
      "parents": [
        "4d10ed3210ef6beb28f525d1a064268b149f0736",
        "c2240b127b6651968e51b5209a9826645009b872"
      ],
      "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": "1ef7d13172248848805b9ceb6161b0741d8580dd",
      "tree": "5166ec77df9727efecbb2672774c99a072def65f",
      "parents": [
        "2d315df64118da9b03cfa4f65a43850299084730",
        "742a67127366c376fdf188ff99ba30b27d3bf90c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 03 12:04:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 12:04:40 2012 -0800"
      },
      "message": "Merge \"Multi-user - 1st major checkin\""
    },
    {
      "commit": "742a67127366c376fdf188ff99ba30b27d3bf90c",
      "tree": "4a801b0b2e9ee10fb322e3b450e2af9eb6e3002f",
      "parents": [
        "8ca8a69d5801ad4b809e7b9dbf53bd728820924b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 04 14:49:28 2011 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 03 12:01:47 2012 -0800"
      },
      "message": "Multi-user - 1st major checkin\n\nSwitching activity stacks\nCache ContentProvider per user\nLong-press power to switch users (on phone)\n\nAdded ServiceMap for separating services by user\nLaunch PendingIntents on the correct user\u0027s uid\nFix task switching from Recents list\nAppWidgetService is mostly working.\n\nCommands added to pm and am to allow creating and switching profiles.\n\nChange-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed\n"
    },
    {
      "commit": "f55bc56490660e8eff92ff1f97607d6e78826629",
      "tree": "d9ac1b2452a7dbad2dbacdf1f0e7c95aa74c7653",
      "parents": [
        "191c849283e8045a64a8f2c3472798c029416086",
        "882c0a20c5ff34e320e0dd5a30b441954335adae"
      ],
      "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": "191c849283e8045a64a8f2c3472798c029416086",
      "tree": "075cdd01f9c3ac037275bda093726e9b434eb9f9",
      "parents": [
        "ed4dc900f75be015bf015e1ed93e2c72c6b7a202",
        "23f7ad39ef52c0ac0a94934a71b6802c0a806b7f"
      ],
      "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": "3694ec1f19070e49480afefc52b8f0a50cedcc20",
      "tree": "f3ed002ec2a0d5dbc1720177adc0fdef0f88aba7",
      "parents": [
        "7bd4f6f4d0d44cd67d4d251cfacbe6a1161fe8ae"
      ],
      "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": "08d5eb9885a9c0e7ed5c3b6ae436af15b9cf3b54",
      "tree": "ad0447484578856ce84be5813ac4c4c04e743a94",
      "parents": [
        "cc2daede56257f0f1f490a1aebf5b9b898d9816a",
        "bc4de888c12f1ad9aec8c9b2a0addaaa73dceae9"
      ],
      "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": "946ab0ff302608f3209a3aa50d811d54932c3d8e",
      "tree": "a1fcc9293069e005e07622587f04c95c9ed1696a",
      "parents": [
        "3a29869d0b4a28d663cfbf7d4400d99520a840ea"
      ],
      "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": "b545eaa9cbe39b8209a40044aa0a5f00846278d4",
      "tree": "618f5cec3d31dbafbedb8bee8a0ff5bac4bd0b0c",
      "parents": [
        "5122453f9c45fbf1358b243fbf1ab9c9b2dab82b",
        "9a9dbd5921b6c138673eea206a1a067a01928cb5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 02 16:28:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 02 16:28:05 2012 -0800"
      },
      "message": "Merge \"separate transactions from updates\""
    },
    {
      "commit": "c2240b127b6651968e51b5209a9826645009b872",
      "tree": "fecb434c9ea4ec25df8bbb747ac94be0eff77545",
      "parents": [
        "3a29869d0b4a28d663cfbf7d4400d99520a840ea"
      ],
      "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": "91a7b145dfc677fa511c1aea44c1ef8b09a77e96",
      "tree": "417a892e22dca9b854c325941854129ef7b19410",
      "parents": [
        "ca050ab2732a67bd989b5111a8e33ea011d6406c",
        "b7cffb41400a3ecba1a68705a51e9127ff6b8fef"
      ],
      "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": "ac1748ce3301b3dab3c1aa6c0d35fa877554ebbb",
      "tree": "0bbe2b26403df9aea0df826061ccce960d629490",
      "parents": [
        "2c5674aa7ba006a712cf885be1657f754f2dee96",
        "06a864413f03627ba7671d1c19ae114e3afaad4b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 13:24:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 02 13:24:52 2012 -0800"
      },
      "message": "Merge \"Thread::getTid returns pid_t gettid() after run\""
    },
    {
      "commit": "4b80abcdd5e28deb6991bd50a208b66162f90024",
      "tree": "c815abc57baf806cad84c1b7dbd7435bdefcc2bf",
      "parents": [
        "26daa02bdb0c62f8162ad8d4d771cabce8644b4a"
      ],
      "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": "9a9dbd5921b6c138673eea206a1a067a01928cb5",
      "tree": "3505a7dd951f0fa46d0245aa9d84a354a35e3857",
      "parents": [
        "26daa02bdb0c62f8162ad8d4d771cabce8644b4a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 31 18:24:27 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 01 20:43:06 2012 -0800"
      },
      "message": "separate transactions from updates\n\nwith this changes, SF transactions are handled as soon as possible\nbut do not trigger updates. the update is delayed until the next\nvsync.\n\nthis allows us to work much better without requiring triple-buffering.\n\nChange-Id: I1fa10794d0cf742129f0877698b7b1e1f2ec7401\n"
    },
    {
      "commit": "dcaf1adcb685759bad2b4720b650a63b76b278b9",
      "tree": "2370553c3015f6627eb345a058a76c0fbdf5c20f",
      "parents": [
        "b17932fe84f84a660194d25d56ce06324b1bf28d",
        "58737fe96d9e5027e36a983161ab1888592b3eb8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 31 16:46:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 16:46:27 2012 -0800"
      },
      "message": "Merge \"fix an issue with vsync event delivery\""
    },
    {
      "commit": "58737fe96d9e5027e36a983161ab1888592b3eb8",
      "tree": "c8ead9a6ea9f41519b79b917dea7c14b4f2f647d",
      "parents": [
        "a403a2e0f0d55a709821a6310de849176dc9b426"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 31 16:42:54 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 31 16:42:54 2012 -0800"
      },
      "message": "fix an issue with vsync event delivery\n\nvsync events were sometimes delivered to connected\nclient who didn\u0027t request them. this happened if\nanother client requested the delivery and that client\nwas first in the client list.\n\nalso fix the vsync test which didn\u0027t request any events as\nwell as DisplayEventReveiver documentation which was misleading\nabout the necessity to request vsync events.\n\nChange-Id: Ie990fda3f337f8f0042745c4b2cde67936c45686\n"
    },
    {
      "commit": "6c997a9e880e08c354ffd809bd62df9e25e9c4d4",
      "tree": "593504e8a7d67bf57e0799daff1e8eb9e4797857",
      "parents": [
        "2247e3f0dc00762b44ef6adcbb2a91c8bbc1be58"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 11:27:43 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 15:41:30 2012 -0800"
      },
      "message": "aapt now sorts the strings in the resource string pool.\n\nIn our current environment with very many translations, this can\nsave a lot of RAM -- for example over 200K in Gmail just by sorting\nthe strings in the Gmail .apk (not the framework).\n\nAlso add a new aapt command to print the contents of the resource\ntable string pool.\n\nChange-Id: I1da037b3e2c377b890833ff57ab158965314ac48\n"
    },
    {
      "commit": "f6b4ca408e6690cebfd52badd6f73c01b3c45037",
      "tree": "a876985c8d0daac969cb4dbd64ceeb35cd81b679",
      "parents": [
        "0056c739c5674f7f18d0c8dd2b13b42db97cec5a"
      ],
      "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": "b7cffb41400a3ecba1a68705a51e9127ff6b8fef",
      "tree": "84101e25a054d253ba60baa6355b2b58a5b87c1c",
      "parents": [
        "cf0c7d1031ea213c1b728aca972522afcd4a92c3"
      ],
      "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": "23f7ad39ef52c0ac0a94934a71b6802c0a806b7f",
      "tree": "0bfdcf0cd063baff963652e1cf1c9a365b406483",
      "parents": [
        "c1f63ddba76717db4f42ec04a06a0be12f22b2dc"
      ],
      "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": "882c0a20c5ff34e320e0dd5a30b441954335adae",
      "tree": "49fe912b42fe5e4c7c7ca45ccdb9876cc57d1c5a",
      "parents": [
        "c1f63ddba76717db4f42ec04a06a0be12f22b2dc"
      ],
      "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": "c14639a9a1dfda34f828e2a6d774edfe5c3c6919",
      "tree": "4e201e6168fff1e8dd26a3870b51026d93e96bc2",
      "parents": [
        "c1f63ddba76717db4f42ec04a06a0be12f22b2dc",
        "0f0fbd9441f40c6f99470b89774e397f99bf61eb"
      ],
      "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": "0f0fbd9441f40c6f99470b89774e397f99bf61eb",
      "tree": "adf3ce158913a54fe6526ada1220424fe9de6d68",
      "parents": [
        "0f73d75da069e8af200092c0c6a8487108fdcbfb"
      ],
      "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": "afe02df45e6c58aa2d6779f7b51a05bf9d413446",
      "tree": "773d8f47122f02367ebac28fda5e42a9fffab643",
      "parents": [
        "9413752f30a505dfd36fcedb26dc1dd933c9840d"
      ],
      "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": "d96e3dfa02b203b1fc826e80d6f9aa074ba9c250",
      "tree": "a91a318c43620b6523bd2e83be01632f223b153c",
      "parents": [
        "43ea4e10dc402d20f506cdb4b4f27e49b4dc0443"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:12:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:14:50 2012 -0800"
      },
      "message": "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.\n\nChange-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598\n"
    },
    {
      "commit": "34f9f8bb8384b9045bc6aff9289bd1cb8705f427",
      "tree": "24e206f7cb1eb96c75016f2eefca6f69c95d418b",
      "parents": [
        "0a204ed0f58a9baaac5630864cd75495486c6cbe"
      ],
      "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": "bc4de888c12f1ad9aec8c9b2a0addaaa73dceae9",
      "tree": "0dece8e783d706b57edff22ccc33d469069ccdd8",
      "parents": [
        "0a204ed0f58a9baaac5630864cd75495486c6cbe"
      ],
      "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": "0a204ed0f58a9baaac5630864cd75495486c6cbe",
      "tree": "5f81caa2a24b7a993c231cbd76bfaacd955a0355",
      "parents": [
        "2772143eff6a69ae7182e0c2628809d8dbd8d355"
      ],
      "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": "15f51ccee1fb4aaf9296998e68156903f0657098",
      "tree": "9387131809cd7084461b858b30a00c5fb9dad506",
      "parents": [
        "ea46649a1cce7447ece812e60168f2bb3db47122",
        "96f46033b4ea89992160cf0ec5a64528b003ed3e"
      ],
      "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": "7524a592526a14d20ec3f3acffd61fe18afaa4b4",
      "tree": "2eb574a61a11e29cf85c502fafe38098c1908455",
      "parents": [
        "1b4d60497c6c89ae1457e802446c83ca7c8c0017",
        "ee7fea9f2fd536107450204c9c2058bbe215f713"
      ],
      "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": "933e85615059b85a87747da57288384541cc56da",
      "tree": "5475260306fb9ddb48b2c7fcfe939ed59752e900",
      "parents": [
        "1afd5bab4e0eaba8b5bc2ab5c7b556cd602cf2e7"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:56 2012 -0800"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n\nChange-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a\n"
    },
    {
      "commit": "96f46033b4ea89992160cf0ec5a64528b003ed3e",
      "tree": "e1f734ec9775398a65ddcf38e9a84c683889a9ae",
      "parents": [
        "92ecdd63033a53b3c6301a9dc94c2438e498f27b"
      ],
      "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": "92ecdd63033a53b3c6301a9dc94c2438e498f27b",
      "tree": "787c5dfc67dbd03247411de308a0dcefc6bedd87",
      "parents": [
        "adf10837719627e725187e26a2e3654ba97245c8",
        "a6dafea172ac344f38cf4255c8896766f10b7b55"
      ],
      "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": "a6dafea172ac344f38cf4255c8896766f10b7b55",
      "tree": "001a395bf1753e632aa35f056e45c77741641942",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "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": "ee7fea9f2fd536107450204c9c2058bbe215f713",
      "tree": "b7486337ab00e4edd6f9e93f600e2689765e06fe",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "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": "28ea013f25626ca2a24600b5916ebe0dfc9e46cf",
      "tree": "ce5e1ee95b62c5aeaeb3b35d8b936c67c0a60f97",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "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": "540c35f7aa01f7eba849148ea8b22eff351ce16d",
      "tree": "da40eb567c9bc1eb47292dc03d4295ea1554aa4d",
      "parents": [
        "96c804af0b4eef79f6d3cdb0f20682e243f1b73d",
        "0632bad8bad41bc44184596478ec2d203d52096f"
      ],
      "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": "ad3f5145fe513c4abb36388ab41508edf2be2a7c",
      "tree": "b5f25e5fd304344492803dace330f682287a5aa6",
      "parents": [
        "b4cee0f871e0f5a2abd6c6f05b65710b69423f2c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 12 17:27:03 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 18 11:08:20 2012 +0000"
      },
      "message": "Rename (IF_)LOG() to (IF_)ALOG()\n\nChange-Id: If49c81a2793182771c6160fbca93905daa6f44c1\n"
    },
    {
      "commit": "1be4afecb752559092654c0e9f4ca302b6d04e9c",
      "tree": "797734f3693ef5ef035837fbd75d525024fd5253",
      "parents": [
        "d33f97f1965b34aae673585ad4734b536c3894ef",
        "9bc8358ddaa01c3490f9709991989633a6a3dd42"
      ],
      "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": "0632bad8bad41bc44184596478ec2d203d52096f",
      "tree": "43aa40695d8efeeeef9b90c2fc90baff395a1ada",
      "parents": [
        "73d27c3d46ce9a19c0cc358d0b2788f1f51706d7"
      ],
      "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"
    }
  ],
  "next": "9bc8358ddaa01c3490f9709991989633a6a3dd42"
}
