)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
