)]}'
{
  "log": [
    {
      "commit": "3ed9daf7766fac289c891387479648052390f1da",
      "tree": "38d9a25ba17fe01dba88fa680abca3f001cdc709",
      "parents": [
        "38ad5e22885a4b02d0429ecb4c1b4446373a3551"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 17 19:22:11 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 18 09:22:45 2017 -0700"
      },
      "message": "libaudiohal: fix get supported parameters queries in HIDL mode\n\nAdd a special case for keyStreamSupportedChannels and\nkeyStreamSupportedSamplingRates in ConversionHelperHidl::keysFromHal().\nIn this case, the query also contains a key\u003dvalue pair specifying\nthe audio format to consider and it must be passed to the audio\nHAL including the value.\n\nBug: 38326193\nTest: verify format specifier is sent to HAL for supported sampling\nrates and channels queries\n\nChange-Id: I14ac40da920122ec0242ab027a2a4ac1d92381c8\n"
    },
    {
      "commit": "3a85e5623164d7dce0912224962d6ad85bdffea4",
      "tree": "6092d1cc4603c12810f3d39c833a4ff4e223b0d5",
      "parents": [
        "77994d70fe8d4805126361bbd0afbcac1cd1d2f0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 11 18:08:51 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 11 18:08:51 2017 -0700"
      },
      "message": "fix mmap fd leak inn HIDL audio stream\n\nDo not dup the fd received from HAL in StreamHalHidl::createMmapBuffer()\n\nBug: 38232872\nTest: verify that MMAP streams can be opened and closed multiple times\nChange-Id: I4813f78bd1ae1e8c705d1769a59710c9437bf246\n"
    },
    {
      "commit": "6b111f32247800dccd34dd396e731b9e7888b185",
      "tree": "bc10d592cb78523898360b28da29ba639c66266f",
      "parents": [
        "6f85f6533a25f7eeaaacba53281572c00e63759a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 27 18:52:37 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 28 20:02:40 2017 +0000"
      },
      "message": "audiohal: Always load A2DP module locally\n\nThis makes legitimate unix socket interaction between A2DP\nmodule and the Bluetooth stack.\n\nImplemented by allowing both \"local\" and \"hidl\" interface\nwrappers to co-exist for devices and streams. A \"hybrid\" device\nfactory is introduced to create an appropriate implementation\nof a device depending on the requested module name.\n\nBug: 37640821\nTest: Play Music over BT headset\nChange-Id: I5592961dd5b56840418fb122680979d11a261b6c\n"
    },
    {
      "commit": "40be8a343e8ceb7ae087bfb8988247731fa5ae75",
      "tree": "3b17c99232f656388afa202ad719ecdb226da783",
      "parents": [
        "9ba03c881f92f1bd62b28f1c38dc7579382ebdbc"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 26 17:22:00 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 27 13:51:36 2017 -0700"
      },
      "message": "audiohal: Support stateful downmixer effects\n\nFraunhofer\u0027s downmixer has additional buffering, this is incompatible\nwith how DownmixerBufferProvider used to process incomplete buffers.\n\nNow the effects HIDL wrapper delivers frameCount updates in\naudiobuffers to the server side. This fixes playback of multichannel\nsound streams.\n\nBug: 36181621\nTest: play 5.1 track from Play Music\nChange-Id: I3b2cd097d61873c6ba329f1a574235ac88b21cac\n"
    },
    {
      "commit": "f823ac7390cc6ad6c387d0b4d9ea824f03b0372e",
      "tree": "ad182274218d4b68d8edaf34bd862cf84a2f9c6d",
      "parents": [
        "bf6b34cf26323ff49758c67408a4e87954a4a396"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 14 15:17:45 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 14 15:17:45 2017 -0700"
      },
      "message": "libaudiohal: Fix broken \"legacy audio HAL\" build\n\nRestore accidenally removed #include directive\n\nBug: 33241851\nTest: build with USE_LEGACY_LOCAL_AUDIO_HAL\u003dtrue\nChange-Id: I191233f533cea11eb95bc72eb06a9ce12dcc19d0\n"
    },
    {
      "commit": "159e03c9c1b6993f7649dcfe468fad2753994f02",
      "tree": "07bf10cd883a446bae0dd6e76bcd3c3ddbb06196",
      "parents": [
        "9e7dd63dfff0cc967f025ea9e27a299aaa99fd69"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 14 09:21:50 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 14 09:21:50 2017 -0700"
      },
      "message": "libaudiohal: Remove dependencies on libeffects and libhardware\n\nThese dependencies are only needed when building with\nUSE_LEGACY_LOCAL_AUDIO_HAL\u003dtrue.\n\nTest: adb shell lsof | grep libeffects\nBug: 33241851\nChange-Id: I9c5eaf52d02c2101c55ea420780d0eb435d6493a\n"
    },
    {
      "commit": "1ba4041b6248aff42c01d27832995ebdf431bbd1",
      "tree": "61f80ecb4c40f27880485c630c0974abadc5ce43",
      "parents": [
        "5a1ebf934b4313b64b10130da3b9498d5cf72f74"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 20 10:58:07 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 20 11:00:54 2017 -0700"
      },
      "message": "audiohal: Exit instead of crashing when HAL factory can\u0027t be obtained\n\nReplace LOG_ALWAYS_FATAL with ALOGE + exit, so the process still\nrestarts, but without a crash. This avoids confusion in bug triaging\nand also helps to eliminate noise in bug reports statistics.\n\nBug: 36424777\nChange-Id: I623cbc6a5b0d3351f849810dd67708d421efd61a\nTest: reproduced error condition, checked that audio server restarts\n"
    },
    {
      "commit": "425a50282ebdcc68a4fc01a268be87426889152e",
      "tree": "2ffb313e940724f89a47dd01cafa56103ec6c607",
      "parents": [
        "1ac2e2bdf0d232b4518020de7b923c0241b27137"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 14 13:35:37 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 14 13:35:37 2017 -0700"
      },
      "message": "audiohal: Restart audioserver if HAL services can\u0027t be obtained\n\nHAL services are crucial for the audioflinger to work.\nIf for some reason device or effect factories can\u0027t be obtained,\nlog a error message and crash af. If the problem with obtaining\nservices is transient, restarting af helps to restore audio.\n\nBug: 36153684\nChange-Id: Iec17a6c6e19650cf1d1de1ec30caf05753b9bce1\nTest: reproed the bug, checked that af restarts and finds devices\n"
    },
    {
      "commit": "a843e7bac59fd8a97ab3b4d5171c5d21bbd325fd",
      "tree": "1ad51e5020f71bb07ea9ac4dd7d5d52aa9745d36",
      "parents": [
        "c7700a8abb2102c41bc4778a54143818c45e220f"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Sun Mar 12 21:41:12 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Sun Mar 12 21:51:49 2017 -0700"
      },
      "message": "audio: remove unused using statements.\n\nBug: 36099713\nTest: pass\nChange-Id: Ib7a48469788a60778186368667c7043c33129e91\n"
    },
    {
      "commit": "4ec4e6b1073b0dc1b608aeeaf4e3129ea1a725c8",
      "tree": "f42a53bfd8e47fb76e9721d83c4df808bb5691ef",
      "parents": [
        "832fcce0c4bdc748bc4cb75101615e77769ec4e8",
        "d2ae9cd57cfbb6f2f4dd0a91dbc7ea2e9e5fc447"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 03 18:49:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 03 18:49:48 2017 +0000"
      },
      "message": "Merge \"audiohal: Check for EINTR and retry when waiting for EventFlag\""
    },
    {
      "commit": "d2ae9cd57cfbb6f2f4dd0a91dbc7ea2e9e5fc447",
      "tree": "457d4d95e4dd0575af0e884ecc8124e1f9465647",
      "parents": [
        "881fc5c65fc7d8c56af0dea181d751fcec3a2b1c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 03 09:15:01 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 03 09:15:01 2017 -0800"
      },
      "message": "audiohal: Check for EINTR and retry when waiting for EventFlag\n\nEINTR can be returned in the case when a futex wait has been\ninterrupted by a signal. We need to retry in that case.\n\nBug: 35813113\nChange-Id: I7eaee5298f5c0bc5cd62309c3fd8349ee3eae629\nTest: make\n"
    },
    {
      "commit": "d15f127a54b4b04a89ca07f52c0508326bf46a92",
      "tree": "69c682b727a6d95f4ec54536957a207c7ea9d53c",
      "parents": [
        "881fc5c65fc7d8c56af0dea181d751fcec3a2b1c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 28 09:10:43 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 28 09:10:43 2017 -0800"
      },
      "message": "audiohal: Add diagnostic message to check the number of bytes written\n\nTemporary change for investigating b/35813113. Need to test\nthe hypothesis that sometimes either legacy HAL, or the wrapper\nreports more bytes written than being asked for.\n\nBug: 35813113\nChange-Id: I6916d39e40d332b45a95aad05674009266e9cd96\nTest: make\n"
    },
    {
      "commit": "c7fdfdff8582cc78938c49f9fde0e74301a503a5",
      "tree": "249bf084ed629b13eac3a365ca71439dc2a3df05",
      "parents": [
        "76f4bc38916fce8a9901168e411859e45ab8473a",
        "b1f9f0bf84f6c5a72a44a48c99ddd141e55829fb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 27 19:25:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 19:26:00 2017 +0000"
      },
      "message": "Merge \"audiohal: Do not extract value from Result unless it is Ok\""
    },
    {
      "commit": "b1f9f0bf84f6c5a72a44a48c99ddd141e55829fb",
      "tree": "89aea67a13998db5d58a7592c85b63941a72cd80",
      "parents": [
        "b4d5ec0d8f3755ccb8d5ce51798c3004330e1120"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 24 17:12:55 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 24 17:12:55 2017 -0800"
      },
      "message": "audiohal: Do not extract value from Result unless it is Ok\n\nThe 2-parameter version of processResult used to call the 3-param\nversion, and for that it was extracting the value from Result.\nNow HIDL framework checks that it shouldn\u0027t be done if the transaction\nwasn\u0027t OK.\n\nChange the code so the 2-param version now only extracts the result\nvalue if the transaction has been successful.\n\nBug: 35758741\nChange-Id: I42cb5f5220e3a952b1c304840ccb3952c1707cd0\nTest: make\n"
    },
    {
      "commit": "e2b43843fd12783188edd2c54188ea8d26864788",
      "tree": "baab518964134359128ed35e5ebfc36cf977cde4",
      "parents": [
        "b4d5ec0d8f3755ccb8d5ce51798c3004330e1120"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Thu Feb 02 13:35:37 2017 -0800"
      },
      "committer": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Fri Feb 24 11:47:45 2017 -0800"
      },
      "message": "Moved headers from include/ to appropriate libs\n\ninclude/camera -\u003e camera/include/camera\ninclude/media/audiohal -\u003e media/libaudiohal/include\ninclude/media/AudioResampler*.h -\u003e media/libaudioprocessing/include\ninclude/media/Audio*.h,IAudio*.h,IEffect*.h,ToneGenerator.h -\u003e media/libaudioclient/include\ninclude/media/EffectsFactoryApi.h -\u003e media/libeffects/include\ninclude/media/stagefright -\u003e media/libstagefright/include\ninclude/media/nbaio -\u003e media/libnbaio/include\ninclude/media/\u003crest of files\u003e -\u003e media/libmedia/include\ninclude/cpustats -\u003e media/libcpustats/include/cpustats\n\nAdded symlinks from old location to new ones\n\nBug: 33241851\n\nTest: VNDK linked modules will need to add explicit lib dep.\nAll other modules should compile the same\n\nChange-Id: I0ecf754a2132640ae781a3cc31428fb8c0bd1669\n"
    },
    {
      "commit": "8cd8df2d1f94b1a59efa19a4becdb7d8cf01ce38",
      "tree": "2e29c8191b49244748b54c85bc81ccb7304a6059",
      "parents": [
        "c61a1f2939cf8924dfc680428fdb984f0eea0a93",
        "23feba2593973e8ab251db8b63d8c2e228acbd51"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 24 00:48:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 24 00:48:52 2017 +0000"
      },
      "message": "Merge \"audiohal: Enforce flush of hwbinder commands queue after cleaning client refs\""
    },
    {
      "commit": "23feba2593973e8ab251db8b63d8c2e228acbd51",
      "tree": "816f326cb47823013305838386933af97fae9f06",
      "parents": [
        "9b2cd918052fdfda587c45b7b2b9a9e132ce6b7b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 23 11:00:55 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 23 11:06:49 2017 -0800"
      },
      "message": "audiohal: Enforce flush of hwbinder commands queue after cleaning client refs\n\nIn binderized mode, the exact time of destroying the server object\nis not defined. Enforce destruction by flusing hwbinder commands\nqueue after releasing the last client reference.\n\nBug: 35394629\nTest: capture trace while following repro steps, verify that server-side object\n      gets destroyed\n\nChange-Id: Id2756cab0f36ed4eaf290d3f5a1c750c9c75b1d3\n"
    },
    {
      "commit": "3516b25e0ef2cdc8fe9f13234d10b48612db8bbb",
      "tree": "ffc49fe261deb8765e9ecb3ca34f7b3d5560f274",
      "parents": [
        "231653e95d7343481b343d2d25e70ae8937ee77e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Feb 21 19:51:27 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Feb 21 20:14:04 2017 -0800"
      },
      "message": "Remove waitForHwService for ashmem.\n\nNow that b/34772726 is fixed, we can remove this temporary code.\n\nBug: 34772726\nTest: audio works on marlin\nChange-Id: I1a268e7030d27b4e944659bd7d82ba321be13a6e\n"
    },
    {
      "commit": "b9ad8c49766cc2682015a75cc42c59e3df0c346f",
      "tree": "74929e12ff0a22a84c06959a531def21e35dbb9a",
      "parents": [
        "929e786a8600ce26c562d19bb96574afe6cf7944",
        "dfa54faf298f6b617bf1d7684418fc8a2e6e4858"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 22 03:28:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 22 03:28:07 2017 +0000"
      },
      "message": "Merge \"audio_effects HAL uses \"default\" service name\""
    },
    {
      "commit": "dfa54faf298f6b617bf1d7684418fc8a2e6e4858",
      "tree": "c73f79d78f213856bd81c4dc7c8a4314a5e8bf48",
      "parents": [
        "673774d14c3d7e9964f94e1c0aabfce5cf72acc8"
      ],
      "author": {
        "name": "Chris Phoenix",
        "email": "cphoenix@google.com",
        "time": "Tue Jan 24 13:46:36 2017 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Feb 22 01:10:23 2017 +0000"
      },
      "message": "audio_effects HAL uses \"default\" service name\n\nThe getService() and registerAsService() methods of interface objects\nnow have default parameters of \"default\" for the service name. HALs\nwill not have to use any service name unless they want to register\nmore than one service.\n\nTest: builds; VTS HalAudioEffectHidlTargetBasicTest passes\n\nBug: 33844934\nChange-Id: I5283bf7c2d0645bd38a16e92cab05103c1bcdf26\n"
    },
    {
      "commit": "eea329e9db5244e4156f9f2a066362c47ff23c63",
      "tree": "dbc311d73c36bf127577121fcc2b0ede003650ef",
      "parents": [
        "673774d14c3d7e9964f94e1c0aabfce5cf72acc8"
      ],
      "author": {
        "name": "Chris Phoenix",
        "email": "cphoenix@google.com",
        "time": "Wed Jan 25 15:04:54 2017 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Feb 22 00:19:17 2017 +0000"
      },
      "message": "AudioDevices HAL uses \"default\" service name\n\nThe getService() and registerAsService() methods of interface objects\nnow have default parameters of \"default\" for the service name. HALs\nwill not have to use any service name unless they want to register\nmore than one service.\n\nTest: builds\n\nBug: 33844934\nChange-Id: Ifc6d297d0bbf7b28be560700c027c07acaa2466c\n"
    },
    {
      "commit": "13a926879249276771b0097538459c7550e2f5ce",
      "tree": "dcf98d4122999450a70164d3ae6d3d2522c114d8",
      "parents": [
        "09b92c347ddcaf751571363e54a769eb4b95edd3"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 17 12:22:38 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 17 12:22:38 2017 -0800"
      },
      "message": "Use hidl.allocator for IAllocator.\n\nandroid.hidl.memory is being split into android.hidl.memory and\nandroid.hidl.allocator since the former is a passthrough hal and the\nlatter is a binderized service.\n\nBug: 35327976\nTest: hidl_test, lshal, youtube/camera works\nChange-Id: I7a2e72dcd3721d2689eb7ef95f5b140ecc1c446f\n"
    },
    {
      "commit": "ed01be521e6e265dd8a27e43b581d13342e2528b",
      "tree": "c22cbf29774b526fce061288bc9282fff0f65ca5",
      "parents": [
        "55cd7161c37396c0ec41b3a3814b778f412160c4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 16 15:57:07 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 16 17:36:58 2017 -0800"
      },
      "message": "audiohal: Support 64-bit audioflinger with 32-bit hal. Part II\n\nAlso convert \"get config\" effects command. It doesn\u0027t seem to\nbe really used, but nevertheless nice to have it called correctly\nin mixed ABI case.\n\nChange-Id: Ib29124933f5bfb8fd164f29a3059b3a5a3e8052b\nTest: none\n"
    },
    {
      "commit": "f508bd4692736e1455553099f3276f43f4229e27",
      "tree": "8d76c2292bb1f6931ca4ab66350f1860e7ff2d36",
      "parents": [
        "6ab6061131a10b7f38074c156fd529fa3719a32b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 16 13:51:20 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 16 15:44:53 2017 -0800"
      },
      "message": "audiohal: Support 64-bit audioflinger with 32-bit hal\n\neffect_config_t size depends on the architecture because it\nuses pointers. Need to convert it into HIDL structure when\npassing to HAL.\n\nTest: build 64-bit af with 32-bit hal server in binderized mode\n      run Play Music, apply effects\n\nChange-Id: I16ff9cd3accc00b6cb30f86418880ca5b749fdad\n"
    },
    {
      "commit": "b4e779137c1849b7b3b09ee782e8bc14de9e2655",
      "tree": "b739c1807605f847f8227c44b59d1ef59cb9c771",
      "parents": [
        "2d6140b8dce137f89029b12468e25d5911f23420"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 15 10:23:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 15 10:28:20 2017 -0800"
      },
      "message": "audiohal: Remove timeouts in eventflag waits\n\nHaving a timeout is causing issues on hal driver thread startup.\nIf thread startup is delayed, then eventflag wait exits with\ntimeout. This leaves fmqs in an intermediate state, and a pending\nwakeup for the server enables the client and the server to run\nin parallel, causing races.\n\nThe legacy HAL interface didn\u0027t have any timeouts for read / write\noperations, so there is no good reason for having them in\nthe wrapping interface.\n\nThe only difference with legacy HAL is that Treble HAL can be in\na separate process, and can crash, but this is handled separately.\n\nTest: Check logs on startup, must be no fmq read / write errors\nBug: 35346610\nChange-Id: Id3f79d31305afab194a4543bfb4501665518a27b\n"
    },
    {
      "commit": "83f042776b131b149f803fff6ab184ae2c4d98cd",
      "tree": "d3c78a3313c94799261a927c84cddc7c0ebdd398",
      "parents": [
        "ba05ff122c080be9fafe1f8112052cacfcd2b6fe"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 07 10:45:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 09 15:51:36 2017 -0800"
      },
      "message": "audioflinger: Adjust priority of hal threads\n\nHALs are prohibited from using framework binder, and there is\nno equivalent scheduling policy service in hwbinder. Thus, in order\nto match priorities of FastCapture / Mixer threads with their\ncounterparts in the HAL, it is needed to request the priority boost\nfrom audioflinger on behalf of the HAL.\n\nTest done to verify the priority was correctly set.\n\nBug: 34131400\nChange-Id: If8b6b031c0fcba771fae901a5b8e7da89b3a1570\nTest: check priority match between audioflinger\u0027s and hal\u0027s threads\n"
    },
    {
      "commit": "c8381909c97dd939706d8b1b9069dcfb4e2bf52f",
      "tree": "9736c5a84c73424258f0e64d68b5cfc7009eec76",
      "parents": [
        "67999b020e1eec218f5aa669ebc969636f53956b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 31 13:56:25 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 03 09:03:08 2017 -0800"
      },
      "message": "audiohal: Make sure audio data transfer related commands go via FMQ\n\nWhen outputting audio, the framework issues several HAL calls\nfrom the same thread that writes into data FMQ. These calls\nalso need to be served on the same thread that writes audio data\nto HAL. The same thing happens when audio input is commenced.\n\nAdd a command FMQ for passing different commands to the HAL thread.\nThis way, depending on the calling thread, the same call may go\neither via hwbinder or via the command queue.\n\nThis dramatically reduces jitter in RTT measurements (although\ndoesn\u0027t improve the latency).\n\nBug: 30222631\nTest: scripted RTT app\nChange-Id: Ic212e33d4e2b1cf404973fe9d60762523eef9f40\n"
    },
    {
      "commit": "043291e32a86421695e04a7ea7985d8340ea5587",
      "tree": "f2907edef2ec4989690e2b59345b3b8a131eb160",
      "parents": [
        "82e1a5e928b6b73c6b568ed8bc4d0b81e503afd8",
        "ec4e6811657a099a2a8a404d81a956955b8b9b44"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 31 16:55:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 16:55:50 2017 +0000"
      },
      "message": "Merge \"audiohal: Fix legacy shim compilation\""
    },
    {
      "commit": "ec4e6811657a099a2a8a404d81a956955b8b9b44",
      "tree": "8b9300fd5f457e2b7b78e67d79b63546103c95c7",
      "parents": [
        "e4806bbccc2150607d84d2df5cb91aa24c4fe10a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 30 17:25:20 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 30 18:07:22 2017 -0800"
      },
      "message": "audiohal: Fix legacy shim compilation\n\nChange-Id: I6cb1a2ed777283c6d81e6b6907cbddc3f2a25c4e\nTest: make\n"
    },
    {
      "commit": "9b088162cb9cdeb542f106a45d06a1f802e91e6e",
      "tree": "6d508b5374cb222009affad6f9387536bd1b9aa4",
      "parents": [
        "e4806bbccc2150607d84d2df5cb91aa24c4fe10a",
        "c2656e8c22a938bf3fe389c7473acc24649c7345"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 30 19:12:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 30 19:12:41 2017 +0000"
      },
      "message": "Merge \"audiohal: Wait for IAllocator to become available\""
    },
    {
      "commit": "c2656e8c22a938bf3fe389c7473acc24649c7345",
      "tree": "9165f2af618008b3a2b274e13f7111e39cdac9bc",
      "parents": [
        "24a8da67457267e4bac9ac2ffa07e1762510ca34"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 27 16:10:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 30 08:50:56 2017 -0800"
      },
      "message": "audiohal: Wait for IAllocator to become available\n\nIAllocator is a framework service, and currently dependency on it\nisn\u0027t handled correctly.\n\nBug: 34771147\nChange-Id: Id3d50dd3bf9456aa363ae20a30ad319cf9c72e10\nTest: manual\n"
    },
    {
      "commit": "2c37fd3a0ab8ad01bd21af0f1a1efbc240a2c0bd",
      "tree": "2aa5469ef92d749198f3c91c6aee55f6908bdb35",
      "parents": [
        "2b118b8f939c0cf1b287b1641d17b057a8e25ce7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 27 14:35:02 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 27 14:37:19 2017 -0800"
      },
      "message": "audio: fix device address conversion to HIDL\n\nFix deviceAddressFromHal() method to allow empty device\naddress string which is a legit value in some contexts.\n\nBug: 34767019\nTest: run Loopback app over USB dongle.\n\nChange-Id: I1f7407d23b4cdf6011df75e854ff60595645b74d\n"
    },
    {
      "commit": "c0461f5b18eb6d5516804810f315e6c23879a09d",
      "tree": "409c82898f26abeb75bc1b9430c08578c051ad9a",
      "parents": [
        "b4728afbf8095d5349de9fcd49f3f34b900682ad",
        "66916c26a7055c9e10471720502a29f759609819"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 25 17:03:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 25 17:03:13 2017 +0000"
      },
      "message": "Merge \"audio hal: Fix multichannel playback\""
    },
    {
      "commit": "66916c26a7055c9e10471720502a29f759609819",
      "tree": "931ce309f34c35775a11240b4f8186db1983f90b",
      "parents": [
        "ceec4a06595253a6dcc167064f318e470e1c3b58"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 17:46:33 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 17:46:33 2017 -0800"
      },
      "message": "audio hal: Fix multichannel playback\n\nCorrectly operate on input and output buffers in DownmixerBufferProvider\n\nNote that playback is a bit choppy, need to investigate further.\n\nChange-Id: I350175dcc9cc7142a1935585a8bd5e9abb1b8eb6\nTest: play back a 5.1 file\n"
    },
    {
      "commit": "e67e893d0642dd345e4d7d1cc3e76b1f0936dae8",
      "tree": "5c37a597c915ad87867b39022e3658504a747987",
      "parents": [
        "ceec4a06595253a6dcc167064f318e470e1c3b58"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 10:37:10 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 10:37:10 2017 -0800"
      },
      "message": "audiohal: Check the result from IAllocator::allocate\n\nThe code wasn\u0027t checking the return from IAllocator::allocate\nresulting in a crash from HIDL framework when there was an error.\n\nBug: 34635658\nChange-Id: Ia6146ec0be972f261d35852fdc44302b67e44898\nTest: Run android.media.cts.AudioTrackTest#testPlayStreamData\n"
    },
    {
      "commit": "efbd36c8f57f41b0ef061cde5a88a3d384538fc9",
      "tree": "268b180eb5dc1bb13d783fb3b91c0f577b26686d",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e",
        "085ae9a0c72e1d1ed76533973b20ead13f5b3cac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 23 15:56:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 23 15:56:44 2017 +0000"
      },
      "message": "Merge \"Cleanup MQDescriptor usage with typedefs\""
    },
    {
      "commit": "2a0c6d54dc34fdd8cca4e8ed7f39ad512133a878",
      "tree": "150e0f89c53a6ac03304071a21f627940c4877eb",
      "parents": [
        "b20e4ef0448b1555e06dc7fd523ad4d181ab8686",
        "0688880d2862e6cddfea1fceca24e8a081a6be60"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 19 23:57:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 23:57:47 2017 +0000"
      },
      "message": "Merge \"audioflinger and hal: Compatibility fixes for Treble\""
    },
    {
      "commit": "b20e4ef0448b1555e06dc7fd523ad4d181ab8686",
      "tree": "418d88104130845d6b33202b5ef8c1d4adf90e04",
      "parents": [
        "d112296453154c6974433d860f270e9d8bc7d0d0",
        "cb9d2eb0a725fccc6fbee005f2e084b71279da16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 23:19:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 23:19:51 2017 +0000"
      },
      "message": "Merge \"Add support for stub audio HAL in HIDL mode\""
    },
    {
      "commit": "0688880d2862e6cddfea1fceca24e8a081a6be60",
      "tree": "0ddffd4d8d70f0fad63e6c1738fdd55d86b3db08",
      "parents": [
        "dffb51f4e35fe93215b025bdf4216f3b411c734b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 19 12:47:55 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 19 14:06:37 2017 -0800"
      },
      "message": "audioflinger and hal: Compatibility fixes for Treble\n\n 1. Treat both reply size being 0 and reply buffer being NULL\n    as an indication that the reply isn\u0027t needed.\n\n 2. Synchronize both input and output effect chain buffers,\n    and avoid excessive copies when the input buffer is the same as\n    the output buffer.\n\n 3. Improve effect chain debug dump by showing both\n    \"external\" and \"allocated\" pointers for effect audio data buffers.\n\nBug: 34368451\nChange-Id: I56aba6908408b5fce3f15c8d29138555101e8720\nTest: volume controls works when both Bass Boost and EQ effects enabled\n"
    },
    {
      "commit": "cb9d2eb0a725fccc6fbee005f2e084b71279da16",
      "tree": "441765fd806a1bfea6ee31979faa56cca4952b0d",
      "parents": [
        "1ec283ec15d5003fdf2769f83f624f0aaf4c7150"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 17:00:39 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 17:09:38 2017 -0800"
      },
      "message": "Add support for stub audio HAL in HIDL mode\n\nBug: 34360879\nTest: make and check stub HAL is loaded in HIDL passthrough mode\nChange-Id: Ib0d3d66aef802ae3685c17297eb87da0b5b0cc3a\n"
    },
    {
      "commit": "1acece4c23ba36e71bc42d8b44b8b62bd4423620",
      "tree": "36498ad93f4bcbbc852a9eee54774555509ef89a",
      "parents": [
        "3670ef95286d8eb028d30a95448b8f93f8f74007",
        "d621ac82e648c8ef395068edb1af2747f49b700a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 17 23:16:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 23:16:30 2017 +0000"
      },
      "message": "Merge \"Monitor crashes of audio hal service via linkToDeath\""
    },
    {
      "commit": "d621ac82e648c8ef395068edb1af2747f49b700a",
      "tree": "3c37b8d97c0c7feec6c567d407d05c8343ec9e6e",
      "parents": [
        "a72ef28f8cc2b894119b470fe6c93d1abe566398"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 17:17:45 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 17 13:42:54 2017 -0800"
      },
      "message": "Monitor crashes of audio hal service via linkToDeath\n\nHwbinder \u0027linkToDeath\u0027 mechanism is used to track abrupt\ndisappearance of server hal objects due to hal server crash.\n\nUpon hal server crash, notifications can be sent to binder\nclients if needed, then the audioserver crashes itself as the\ncurrent audio HAL design does not provide an easy way to restore\nall the transient objects (devices, streams, effects) in their\npre-crash state.\n\nBug: 34158778\nTest: In binderized mode, kill audio hal server\nChange-Id: If9265711edc445984601fcb5c29d2c173a370762\n"
    },
    {
      "commit": "bcd0a04befb085da19fec70a681096dad99afc30",
      "tree": "0bed4e2c962730f22db45ad46faeea99e28bb957",
      "parents": [
        "38267b773f2cdec4d684b12fde73179bcc66e0c7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 17 09:45:19 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 17 09:45:19 2017 -0800"
      },
      "message": "libaudiohal: Fix handling of NULL replySize param to Effect::command\n\nFix crash when the client passes NULL as \u0027replySize\u0027 for Effect::command.\n\nBug: 30222631\nChange-Id: I015a49ba8c7a3103edfcbf9df39bb32093367a7a\nTest: No crash when adjusting \"Bass Boost\" setting in Play Music\n"
    },
    {
      "commit": "38267b773f2cdec4d684b12fde73179bcc66e0c7",
      "tree": "f018480645ec57b841a4579f532675f69ccd7dc8",
      "parents": [
        "9fe81732b695d16e7f4fac12d6f6c0ff4d4fa11c",
        "d635199dcaae89ac50391bdfee4a12d4c88c519d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 20:55:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 20:55:01 2017 +0000"
      },
      "message": "Merge \"Update StreamHalHidl to use IStreamOut.WriteStatus new field\""
    },
    {
      "commit": "9fe81732b695d16e7f4fac12d6f6c0ff4d4fa11c",
      "tree": "226d5873a8f350fea4d7c6d68c268ecdcb93a9ed",
      "parents": [
        "b04aa125744b7e1d5c56a4c2151eaaa890d68e4c",
        "9dc1747e214a3d4b3c08e8c1f3d7982ef5108162"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 12 18:20:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 18:20:27 2017 +0000"
      },
      "message": "Merge \"Enable passthrough mode by default for audio, soundtrigger, and radio\""
    },
    {
      "commit": "d635199dcaae89ac50391bdfee4a12d4c88c519d",
      "tree": "c3ade6e5b14b85afca693969e2f860071c4cb0cb",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 09:35:16 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 09:39:17 2017 -0800"
      },
      "message": "Update StreamHalHidl to use IStreamOut.WriteStatus new field\n\nUpdated the client code to use the new field:\nIStreamOut.WriteStatus.presentationPositionRetval for providing\nlegacy-compatible results when calling \u0027get_presentation_position\u0027\nimmediately after \u0027write\u0027.\n\nBug: 30222631\nTest: Loopback RTT, media CTS\nChange-Id: Idf3f1d29288ddf17a5015f96291648d64d124ec7\n"
    },
    {
      "commit": "9dc1747e214a3d4b3c08e8c1f3d7982ef5108162",
      "tree": "de0cfa7c01a63f997361bff625b1b94158b13f2c",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 11 11:15:28 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 11 17:34:00 2017 -0800"
      },
      "message": "Enable passthrough mode by default for audio, soundtrigger, and radio\n\nRemove ENABLE_TREBLE flag usage for legacy hal fallback.\nIntroduce new build flag USE_LEGACY_LOCAL_AUDIO_HAL for fallback.\n\nBug: 32978887\nTest: checked \"OK Google\" (from standby), Hangouts, YouTube,\n      Play Music, fake radio hal + test app\nKI: issues when using equializer and virtualuzer in Play Music\n\nChange-Id: I1c279e622c885f799481f1287e0660ca576fcea0\n"
    },
    {
      "commit": "2f607551825066933ef2ab9cac84833306c72db0",
      "tree": "94c1662a40000316608a3157bd81d2387575a60f",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 11 16:09:03 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 11 16:13:57 2017 -0800"
      },
      "message": "Fix crash in DownmixerBufferProvider\n\nIn ag/1768960, I forgot to actually set the buffers for the effect\ninterface. Without that, a \u0027process\u0027 method was attempting to use null\nbuffers.\n\nBug: 34228998\nTest: android.media.cts.AudioNativeTest#testPlayStreamData\nChange-Id: I904a9c08aa75bd5738b3ce981ee54511f37df7ec\n"
    },
    {
      "commit": "67d0d7eb36e7c36d0a9dec9264c0cab832196d57",
      "tree": "5da2eee1631317f25aa331451748b52fb7e14e4d",
      "parents": [
        "954c7b561ba1bcc2bb1f704ec7e94c8ce763bf28"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 11 14:51:39 2017 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 11 14:52:27 2017 +0100"
      },
      "message": "Fix _treble build targets breakage.\n\nTest: ENABLE_TREBLE\u003dtrue builds again.\nChange-Id: I68470a8c9782f1938b3f8d35052baef0d1befde9\n"
    },
    {
      "commit": "085ae9a0c72e1d1ed76533973b20ead13f5b3cac",
      "tree": "0d86fd55c287d412d682b6877e18a33b518373b1",
      "parents": [
        "db057a5a6556f4ea81b710fc90ab6e8816d1525e"
      ],
      "author": {
        "name": "Hridya Valsaraju",
        "email": "hridya@google.com",
        "time": "Tue Jan 10 09:42:17 2017 -0800"
      },
      "committer": {
        "name": "Hridya Valsaraju",
        "email": "hridya@google.com",
        "time": "Tue Jan 10 09:43:16 2017 -0800"
      },
      "message": "Cleanup MQDescriptor usage with typedefs\n\nTest: mm\nBug: 34054917\n\nChange-Id: Iccfed3af89f3527318c1c3621b6f26ebd6a2e970\n"
    },
    {
      "commit": "022b9953153bdb1984f0abb17d21ef8c1826ad49",
      "tree": "aff19a7663d75cbb16bc003424bacb6f97b738cd",
      "parents": [
        "e61f9e57e61cbf4d86d6385dd3cddb41e245f749"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 16:36:51 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 09 18:18:18 2017 -0800"
      },
      "message": "Re-implement HIDL effect processing using FMQ and IMemory\n\nResult: no hwbinder calls due music processing.\n\nTest: make, use Play Music with effects, check traces\nBug: 30222631\nChange-Id: I06d0e94e603688874b31824427f3b0878b5f7c8e\n"
    },
    {
      "commit": "e83be8af690ef1ac820a63414d522e77ca9d4db6",
      "tree": "1d485de3ff2b31b17acb29c10673b1790e619012",
      "parents": [
        "db057a5a6556f4ea81b710fc90ab6e8816d1525e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jan 06 11:06:33 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jan 09 10:50:58 2017 -0800"
      },
      "message": "Remove usage of getStatus.\n\n- remove from libaudiohal\n- remove from services/radio\n- remove from soundtrigger\n- remove from omx\n\nBug: 31348667\nTest: compiles\nChange-Id: I75bb7b7388527dacfdc5bf128712cb8690bc286b\n"
    },
    {
      "commit": "e1c4b5d7a94c21b8ce0c5707b4af84de596fbb79",
      "tree": "8c448787f6c4f7bfe7647cc32601350247d4066a",
      "parents": [
        "2b934d36939c571a47cc972670176bc0356c54be"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 22 09:22:45 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 20:50:54 2017 -0800"
      },
      "message": "Re-implement HIDL stream read and write using FMQ\n\nResult: no hwbinder calls due read / write session.\n\nTest: make, perform Loopback RTT, check traces\nBug: 30222631\n\nChange-Id: I4a8792525ec374111302cfd5c0a2e41f9f4cc418\n"
    },
    {
      "commit": "b8753077cf128ad6492c10e632e118333eb00aee",
      "tree": "3dfdac2ba745d9ddea48c4ca7012e5a77e1705f8",
      "parents": [
        "be154ab3306c7629ae568a88512700a5d9bc2668"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 21 12:04:10 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 21 12:04:10 2016 -0800"
      },
      "message": "fix ENABLE_TREBLE build broken by commit af35aadb\n\nTest: build marlin-eng with and without ENABLE_TREBLE\nChange-Id: Ia8cd2c8b01e2e14557b65ae8ce9c9c4827f596f5\n"
    },
    {
      "commit": "af35aadb7ab558035b6cf45bd3930ecaa3a3b330",
      "tree": "ef709fefc01bbf3efb1f0bcddd9ecee0920977e4",
      "parents": [
        "e2bc75d146276c3cfe2b349073cf46f7706fa38d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 14:25:36 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 12:57:13 2016 -0800"
      },
      "message": "audio HAL: implement mmap stream functions\n\nBug: 33398120\nTest: make marlin-eng with ENABLE_TREBLE true\n\nChange-Id: I10df5440b9946398a73a7ee309eca860eae0bfcd\n"
    },
    {
      "commit": "9f57e3c9da8923649adff62e63c644537f565e90",
      "tree": "4ecc43b149d5801f9b378c493c725a4c790bcf42",
      "parents": [
        "e158da59b3b525cf271968bec3967414b21159fa"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 05 12:54:36 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 09 16:02:36 2016 -0800"
      },
      "message": "Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL\n\naudioflinger doesn\u0027t have a proper way to re-establish all\nthe opened streams if HAL crashes. The only valid way of dealing\nwith them is to restart the audioserver.\n\nAlthough broadcastradio and sountrigger have cleaner protocols\nfor dealing with HAL failures and can handle HAL crash and restart,\nsince the audio side will anyway get broken, it makes sense\nto also kill the audioserver when they detect HAL crash.\n\nChange-Id: I5f8e8c1d0981042cdd435a3ddbb6526e9f226e6b\nTest: kill audio-hal process, watch dmesg and logcat\n"
    },
    {
      "commit": "34e5d30e54650b210c1b9730b1e4b412ec1cdb0c",
      "tree": "0fced8935e15fc5291af3c818abf9ed86d398862",
      "parents": [
        "9f55e5f998644d58cb8f3625e06d9b7a4e78555c"
      ],
      "author": {
        "name": "Samuel Saccone",
        "email": "samccone@google.com",
        "time": "Fri Dec 09 23:24:29 2016 +0000"
      },
      "committer": {
        "name": "Samuel Saccone",
        "email": "samccone@google.com",
        "time": "Fri Dec 09 23:24:29 2016 +0000"
      },
      "message": "Revert \"Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL\"\n\nThis reverts commit 9f55e5f998644d58cb8f3625e06d9b7a4e78555c.\n\nChange-Id: Ic76c0cb5032af422699da2b43106b4b1de5ac935\n"
    },
    {
      "commit": "9f55e5f998644d58cb8f3625e06d9b7a4e78555c",
      "tree": "3696d68948cc2ebf02bb4f8d84fd7c7f748025f2",
      "parents": [
        "2b3867fb87f48a0627e3f8bb37826021df8dbd13"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 05 12:54:36 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 09 11:12:01 2016 -0800"
      },
      "message": "Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL\n\naudioflinger doesn\u0027t have a proper way to re-establish all\nthe opened streams if HAL crashes. The only valid way of dealing\nwith them is to restart the audioserver.\n\nAlthough broadcastradio and sountrigger have cleaner protocols\nfor dealing with HAL failures and can handle HAL crash and restart,\nsince the audio side will anyway get broken, it makes sense\nto also kill the audioserver when they detect HAL crash.\n\nTest: kill audio-hal process, watch dmesg and logcat\nChange-Id: Ib2150b69c791ac49de9404de08fc6c309a3fcbd5\n"
    },
    {
      "commit": "2b3867fb87f48a0627e3f8bb37826021df8dbd13",
      "tree": "0fced8935e15fc5291af3c818abf9ed86d398862",
      "parents": [
        "b15ed7a197061d688e465ac4a0d489fed65b8ceb",
        "56b41990c77deea378c9af79d76348ca6f995687"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 09 17:50:33 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 09 17:50:34 2016 +0000"
      },
      "message": "Merge \"Do not log error codes received from HAL\""
    },
    {
      "commit": "08dab5ae92ddd1f3b337b6e35f918fea8c284a56",
      "tree": "4ebbef53fa801437efecb2de9135543c5f1326c6",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Wed Dec 07 15:08:17 2016 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Thu Dec 08 18:13:28 2016 +0900"
      },
      "message": "Use libmedia_helper as shared lib.\n\nThe dependencies to static libraries in frameworks should be removed\nas many as possible to reduce a size of the system partition.\nAnd that will improve coverage of the VNDK libraries because this\neffort might find new necessary shared libs which were linked\nstatically before.\n\nSize diffs of affected binaries on angler-userdebug build are as\nfollows.\n\nlibmedia                    : 598056 -\u003e 547928 (-50128)\nlibstagefright              : 1496420 -\u003e 1492124 (-4296)\nlibaudiopolicyservice       : 75372 -\u003e 66940 (-8432)\nlibaudiopolicymanagerdefault: 613168 -\u003e 583516 (-29652)\nlibaudioflinger             : 397840 -\u003e 364380 (-33460)\nlibaudiohal                 : 114752 -\u003e 68684 (-46068)\nlibaudiopolicyenginedefault : 122096 -\u003e 71968 (-50128)\nlibmedia_helper             : 0 -\u003e 66288 (+66288)\n\ntotal                       : (-155876)\n\nTest: building succeeded, and the image was tested on angler.\nBug: 33056637\nChange-Id: I00a71e518337a1efcf7f55256145776311596991\n"
    },
    {
      "commit": "56b41990c77deea378c9af79d76348ca6f995687",
      "tree": "eb71f80bc56a568c0ceadd033b5b9fc6a54b78af",
      "parents": [
        "9b46a8f9ebcca3b86662e7ea998a2afea0153478"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 07 17:09:03 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 07 17:09:03 2016 -0800"
      },
      "message": "Do not log error codes received from HAL\n\naudio HAL server already logs them, so logging them here is just\na spam. Only log RPC errors.\n\nChange-Id: I55433d4446215b87099c9ad33f4c352f79109fd1\nTest: check logcat\n"
    },
    {
      "commit": "2f6272e17232360bcd10ae7a5179bf6cf8d86e38",
      "tree": "5f0490cbd763814ef3953129ebf2c119728fa248",
      "parents": [
        "65abff18873fab87305049418c9b7c24fc0a2ef4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 05 10:38:24 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 05 10:39:35 2016 -0800"
      },
      "message": "Fix compilation of libaudiohal with ENABLE_TREBLE\n\nAdd a missing dependency on libhidltransport.\n\nTest: ENABLE_TREBLE\u003dtrue make\nChange-Id: If4cf298eccabdcc7bc26275f743b7d4a833169ea\n"
    },
    {
      "commit": "f558e0218d2677a813c9c600886f673894eec927",
      "tree": "a2e02a7e9999fe3eb08071d09acd30d9e50f87a8",
      "parents": [
        "d71f16268227c15a0ac2043e15900db5df2c417d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Nov 14 17:45:17 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 01 09:36:07 2016 -0800"
      },
      "message": "libaudiohal: Implement simple HIDL client\n\nThis client requires both HIDL client and server to be of the same\nABI version (e.g. 32-bit).\n\nEffectHalHidl::process and EffectHalHidl::processReverse are stubs.\n\nSome extra warnings are logged due to unimplemented functions\nin the legacy HAL.\n\nBug: 30222631\nChange-Id: Id074131dec6d6c4f1031695abcf3ea066e92a5af\nTest: Play Music (play / EQ), YouTube, Loopback RTLT, Ok Google on N5X\n"
    },
    {
      "commit": "9ee0540d3a61bff03d561ca431a371c3d9335d2b",
      "tree": "1bf7817725f35ec9c0755e819cb5f58fdf0bf487",
      "parents": [
        "e7e8d636b486cf49487db1d8da5e8e7cb15d9549"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 15:58:17 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Oct 19 09:46:33 2016 -0700"
      },
      "message": "Remove last references to hardware/audio.h\n\nDeviceHalInterface transitioned to \"capabilities\" model\n(similar to the one already used by streams, e.g. \u0027supportsDrain\u0027).\nNo direct checking of the HAL version is needed.\n\nAudioPolicy uses its own version read from the configuration,\nand these values never checked against the actual HAL version,\nthus it does not need versions and macroses from hardware/*.\n\nTest: make \u0026 run on N6P\nChange-Id: Ic4a56bfa19a9a61edac2b9f9a163fd8f63a0ff87\n"
    },
    {
      "commit": "00260b5e6996b0a4b12f71c5b84e44adea040534",
      "tree": "7e93a2e3cc5f918d8f7a7409d9c98712eed0d2fe",
      "parents": [
        "47677e3edda7b15bc0b48c6863a01ae052785e0c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 12:54:24 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 14:02:38 2016 -0700"
      },
      "message": "Remove dependencies on hardware/audio_effects.h and EffectsFactoryApi.h\n\nAlso remove some outstanding dependencies on hardware/audio.h.\n\nMost of the time, only constants and structs from audio_effects.h\nare used, and no actual calls into HAL are made. Move these\ndefinitions into system/audio_effect.h, and generate constants\nfrom TREBLE HAL definition.\n\nFor parameters, always use values from AudioParameter class.\n\nThere are still some outstanding includes of hardware/audio.h\nin code that directly deals with audio modules. Need to extend\nlibaudiohal interfaces to support required functionality.\n\nTest: make\n\nChange-Id: I0bcdf8ae199485d4d65f3eeb7e7a3b9b5cdb6ab6\n"
    },
    {
      "commit": "cbc8f617c1aebef5d041fa40dcd38a5466690b99",
      "tree": "525470607c3e6436c5a73caac90830104fcde9ac",
      "parents": [
        "0c739c59dd1a3d52beb82a353c13b6c853d93f5f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 11 18:05:13 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 11 18:05:13 2016 -0700"
      },
      "message": "Eliminate dependencies on hardware/audio.h (trivial cases)\n\nframeworks/av must not depend on hardware/ (except for the code\nfrom libaudiohal that actually calls into HAL).\n\nThis CL deals with simple cases where depending on system/audio.h\nis enough.\n\nChange-Id: Ia2cb66cc8c92316ce5ab884a008d5e531263c2e4\nTest: make\n"
    },
    {
      "commit": "0358e6e645d6fb53918f9d64b68f58e73069c9bb",
      "tree": "9ea707d43e2f866a330350e71d952c3a59f3e599",
      "parents": [
        "c380f611f779dd7dc29ccf80609893d67e78167a"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 05 10:20:40 2016 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 05 10:36:05 2016 -0700"
      },
      "message": "Convert libaudiohal to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: mmma -j frameworks/av/media/libaudiohal\nChange-Id: I618dce668c2dac9a399822a4261bc1e3044077d0\n"
    },
    {
      "commit": "15897e459c5086058e73b3e91690320a7bb46d4a",
      "tree": "84e9b8f15186f485d59aa15d0f59b628d2202a4e",
      "parents": [
        "ad111520f0167c4a0bf6a37fc025e2523c313258"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 30 16:16:41 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 30 16:16:41 2016 -0700"
      },
      "message": "Fix non-blocking playback threads creation\n\nBecause PlaybackThread calls StreamOutHal::setCallback inside\nthe constructor, onFirstRef gets called while the vtable pointer\nis set to PlaybackThread\u0027s vtable, not to its subclass vtable.\nonFirstRef launches a thread which starts calling methods\nthat are abstract in PlaybackThread.\n\nFixed by changing the type of StreamOutHal::setCallback argument\nfrom \"sp\" to \"wp\", as creating a weak pointer does not increase\nstrong refs count and thus doesn\u0027t call onFirstRef.\n\nBug: 31856492\nChange-Id: I0d51bc73ca88b4b235260ed773870ecb7dac55d0\nTest: added logging to verify the order of calls\n"
    },
    {
      "commit": "a0c91339814f37ea78365afb436c9f3d1f0a0090",
      "tree": "b0075232d68758a314754a9293c65ea15091ca95",
      "parents": [
        "5090f7d3211b5517a7602c910c04462f7eee0727"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 19 10:01:12 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 26 14:53:38 2016 -0700"
      },
      "message": "Update NBAIO to use the new audio HAL abstraction layer\n\nMoved the HAL access abstraction layer to a separate library so it\ncan be used both by audioflinger and libnbaio.\n\nBug: 30222631\nTest: manual with Loopback app, Hangouts, YouTube\n\nChange-Id: Id622c2f1aa8f55a775d34f369a596c2c4d29d5be\n"
    }
  ]
}
