)]}'
{
  "log": [
    {
      "commit": "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26",
      "tree": "5297ab7f4a098bd8c0c0e89e27a54e9fd450ce5a",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 17 17:48:06 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 21 14:14:49 2017 -0800"
      },
      "message": "audio policy: refactor output and input opening\n\nRefactor the way input and output streams are open so that common\nlogic is centralized in AudioOutputDescriptor and AudioInputDescriptor\nclasses.\n\nThis is in preparation of adding reference counting for ouputs and inputs\nopened for a given profile.\n\nTest: Manual\nChange-Id: Id806e23077eb41f6398400ab40aeaa694c7d5603\n"
    },
    {
      "commit": "f4e63452b37c799c9387a6a88b46e6191f6a5f7e",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "e198f26cae6f0b5c67340935c291363fdfff87f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "message": "Revert \"Revert \"audio policy: refactor getOutput() method\"\"\n\nThis reverts commit e198f26cae6f0b5c67340935c291363fdfff87f1.\n\nChange-Id: I65eb2905adb45c3809a499d85c1a8ef68cec7ed5\n"
    },
    {
      "commit": "e198f26cae6f0b5c67340935c291363fdfff87f1",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "e1dd2075105317ef8ff2b924423c88856e8fe8ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "message": "Revert \"audio policy: refactor getOutput() method\"\n\nThis reverts commit e1dd2075105317ef8ff2b924423c88856e8fe8ea.\n\nChange-Id: I4b7a2177af5bff5013ec4fe7fcdeb722f6b158c5\n"
    },
    {
      "commit": "e1dd2075105317ef8ff2b924423c88856e8fe8ea",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "9a60e1ad4762bd428ddc158e5a50641649698ec4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "message": "audio policy: refactor getOutput() method\n\ngetOtuput() was long replaced by getOutputForAttr() for the purpose of\nquerying an appropriate HAL output stream for a given playback use case.\nIt is now only used internally by AudioSystem to find an existing output\ncorresponding to a given stream type in limited cases.\n\nThis CL simplifies getOutput() by removing unused arguments and just\nreturning an output from already opened outputs.\nThis is in preparation of limiting access to audio policy binder calls\nto what is strictly needed by apps.\n\nTest: test main playback, capture and call use cases.\nChange-Id: I137c5526aa7e82303b43948326c77ec798f432f5\n"
    },
    {
      "commit": "5ff158fd499f581bdc1c3e91bbc03ce15eeeb77c",
      "tree": "75a48894b0cdb09735bd00750aa5caf03136ad32",
      "parents": [
        "ad764cd0e198a0ede404c53e2da5fd38ecb1e049"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "message": "Fix integer sanitizer in audiopolicyservice.\n\nA size_t was being converted to a ssize_t after an intended overflow\nhad already occurred. This makes the conversion explicit.\n\nunsigned integer overflow: 0 - 1 cannot be represented in type \u0027unsigned\nint\u0027\n\nTest: Compiled with the change and checked the sanitizer output.\nBug: 30969751\nChange-Id: Ic15cc4b5d8295e14e3588ffa240830f7570dcaf3\n"
    },
    {
      "commit": "0111e0fe975a4ff43e9133f4a4ab7805dc188325",
      "tree": "1de516e31ccace0773ae406bcd6ca4b82ee02d80",
      "parents": [
        "6cebbee7fcd45cce33b312e87e023173f6243225",
        "19f0196da3e386c2b73240870b3580468181903c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158 am: 122ec92c42 am: fa5a0cedea\nam: 19f0196da3\n\nChange-Id: Ia47b4f3d752e74ba9c4bf02ccb74c33c9c5f9dd4\n"
    },
    {
      "commit": "fa5a0cedea92c922e695a9846148965a519eba53",
      "tree": "98e36586f95b4c193d3e269c86f1303d433aed0f",
      "parents": [
        "337a3fbbfca38472641d88b6f659f37f6f6eb477",
        "122ec92c425ce898753d24edd4a43d634a630959"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158\nam: 122ec92c42\n\nChange-Id: Ifa8953ad8057a4d7dcddeae1793e00168ea90c58\n"
    },
    {
      "commit": "122ec92c425ce898753d24edd4a43d634a630959",
      "tree": "34f6484abb85cfc9b4eed000c1812f1f63be5fdb",
      "parents": [
        "099005643902d7a26bbefa5d316ea85cdd2d53bc",
        "8cad7241589b1473ee4dac3e4f2fdc559520da59"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb\nam: 8cad724158\n\nChange-Id: I1d0102e75a068bd6a2af21b9126b907703928db7\n"
    },
    {
      "commit": "355a18f58d63882c122db64702fdee66ce6fe857",
      "tree": "6973b6a87b1525c63ef10b465d6c88f527a31355",
      "parents": [
        "6b936f54ff3e54367a2176f455c4fb8700c91d99",
        "74f84d987be37b971f02eb0b4d824599626a9936"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2\nam: 74f84d987b\n\nChange-Id: Ie2c1acfdc523c6774dd2f90e0b42a9f274731d57\n"
    },
    {
      "commit": "74f84d987be37b971f02eb0b4d824599626a9936",
      "tree": "3207477eda89f12135465200e6e9af1ce1a58b4e",
      "parents": [
        "c66d4db7053b3e132c9b378f34f8c667b4be3f71",
        "d08327d1a2782f7ff7b8d46da106f7cc63bbef44"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415\nam: d08327d1a2\n\nChange-Id: Ia8bdb1eae19450a3c6df255945a8cded55b15909\n"
    },
    {
      "commit": "d08327d1a2782f7ff7b8d46da106f7cc63bbef44",
      "tree": "4971eea7f1bd719b3ed02c651947be3adbc9ec80",
      "parents": [
        "177ee220b9b5051065c01c8b8ca9ce7d29fe29a0",
        "b995c31415c73917f9ab907ec2334e69e638feda"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454\nam: b995c31415\n\nChange-Id: Iff099acd6ee928f37d2b91144a06d9c78a2a5aae\n"
    },
    {
      "commit": "7504b9eb4561df88550f874cf0ce95b6f4d09927",
      "tree": "0991a83bf78a67170a0707d8e300578c9c46727f",
      "parents": [
        "2c8c51d4aeffc4d561a67b06d20fff67d9a5a5aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 15 18:17:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 16 08:29:05 2017 -0700"
      },
      "message": "soundtrigger: require RECORD_AUDIO permission for DSP hotword\n\nCheck android.permission.RECORD_AUDIO permission in addition to\nandroid.permission.CAPTURE_AUDIO_HOTWORD for DSP hotword operations\nas those require access to device microphone.\n\nBug: 62265680\nTest: check \"OK Google\" detection with and without DSP\nChange-Id: Icba2520331164bcd618e91916ca701e677d419b8\n"
    },
    {
      "commit": "f759b8c4bcce2d3b3d45551be461f04297fa2bd3",
      "tree": "6b1f8510c36843e66653474c5fb06399e2e13566",
      "parents": [
        "a0388f92c70e4321ebfe3c41e08c454d63937998"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 12:48:54 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 19:55:28 2017 +0000"
      },
      "message": "AudioPolicyService: Acquire mutex for SoundTriggerSession\n\nTest: Enable always on GSA\nBug: 64340921\nChange-Id: I05d8c680be97ba4c92081425596addcc038f7dda\n"
    },
    {
      "commit": "4fb615c2774c04b4d36d8f9d88dd4aa291296288",
      "tree": "6ce96b0a49b22c440b7b70be61a862e214d8d960",
      "parents": [
        "8f5520a7378e7af0fcc6a8b693f29a6ddffbbbcd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jun 26 10:28:13 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 07 17:20:47 2017 -0700"
      },
      "message": "Audio policy: Parse new audio policy configuration file\n\nFor treble, files shared between vendor and system must have a schema.\nAs .conf did not support such feature, transition to an xml based\nconfiguration file.\n\nThis new format has several changes:\n - library path are now relative to the standard effect directories\n - effect parameters are no longer supported (nobody used them)\n\nTest: Check that the dumpsys is similar than with the legacy formal\nBug: 37492580\nChange-Id: Ie6bd84ed88124991600fa238cc13714874eefad9\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "ac4e42982d4537732b30e71c9a00ba0077944984",
      "tree": "1774e0b1cba1a173c29aaca85d4147e178c69346",
      "parents": [
        "c407bd4b32b99cab78e773ac51a57f49cd0985ea"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 22 11:39:31 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jun 19 18:03:28 2017 +0000"
      },
      "message": "Monitoring of recording: uid of recording session\n\nPass uid of recording session along with other existing information\n  in the recording monitoring callback.\nDefine new structure, record_client_info, to group uid (new),\n  session id (existing) and source (existing) and simplify\n  method signatures and marshalling code.\n\nTest: run cts -m CtsMediaTestCases -t android.media.cts.AudioRecordingConfigurationTest#testAudioManagerGetActiveRecordConfigurations\nBug 62579636\n\nChange-Id: I18f66d7e55640a21f31021416a12a3e8094c3690\n"
    },
    {
      "commit": "ac9cef5f3288df6e65cb4488e2615cc3c07b70d0",
      "tree": "3369bd965510d5c3e8ea6257bb1368a677e535c6",
      "parents": [
        "3c1ba2cd6276ee4304ba082fbe40fd870c1746c8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 09 15:46:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 10:42:59 2017 -0700"
      },
      "message": "audio policy: add method to query dB attenuation for a certain volume and device\n\nBug: 62492975\nTest: Check dB value returned to AudioService when stream volume is\nchanged\n\nChange-Id: I8d0a945e9151d230b93634e4b9e57bab68f44fa8\n"
    },
    {
      "commit": "d7c5ec857930496bb8a1045dc8b87b2fdd99899c",
      "tree": "1febd0054f7833de4bfd877faea92b6c66a3d89a",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57",
        "4b058e7e5d58fb1bc6ba82eba94f7664e5b85706"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f am: 238c48e42e am: 877f779979\nam: 4b058e7e5d\n\nChange-Id: Idc3298b161380e9ace8b7fcceb4339b0805a3123\n"
    },
    {
      "commit": "877f77997987212ae0fbfecb24b35c03a0573006",
      "tree": "784bda81ca3055da5341cb11f86e0e0fddc06d90",
      "parents": [
        "7ceeb44566c54be121136a456142143e6bc4c4ac",
        "238c48e42e9e4daafc4cde73bc5c1856e7c10614"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f\nam: 238c48e42e\n\nChange-Id: I2e9cb8ec6752506cc5445aee3d38ae92e4f5e514\n"
    },
    {
      "commit": "c694ff449bef4ca1e45a6506f34e66c613757311",
      "tree": "36f66657e3389dbb6b30b7e122ff415f9ce5f40c",
      "parents": [
        "20adbc00032d6df980a3300f1ae974610f16f81f"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Jan 09 23:27:29 2017 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 16:51:37 2017 +0000"
      },
      "message": "Add missing nullptr checks for data.readCString() strings\n\nProtect the Audio Policy Manager by adding extra checks\nfor data.readCString() strings when parsing / decoding\na Binder transaction.\n\nAlso:\n * Moved audio_is_output_device() / audio_is_input_device() checks\n   inside handleDeviceConfigChange()\n   from the AudioPolicyInterface to the AudioPolicyManager\n * Removed similar redundant checks inside\n    AudioPolicyService::setDeviceConnectionState()\n\nTest: code compilation\nChange-Id: Ib32a28ba2669b73aaf32b31bb18f41c8dd7d2605\n"
    },
    {
      "commit": "5fd7ccaeba88da7e170f067bfd754b3f64ff5566",
      "tree": "5e2a0f1495c8ea9a68598cea2028e3c092049e3a",
      "parents": [
        "0ce91633d8a4f5dcb3706a7734c02ddb5099eefd",
        "c6fe843463abc965f3082738c8812506cf5ba232"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35 am: fcc1132010\nam: c6fe843463\n\nChange-Id: I7812e3e4426e526b886c1a414ac8ddec7649291e\n"
    },
    {
      "commit": "fcc113201018703727a0d6b17dd165efce00db1a",
      "tree": "70eca9738ea18322a92ebc4bb94a0894e1735034",
      "parents": [
        "1121dfb5f30a04393ddce02fe7808589fa9e3e25",
        "a1b496ac35a8bbdcae6b0315e91a5cf52b2af00d"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947\nam: a1b496ac35\n\nChange-Id: Ie8871fad611dc16d7cd08a85e4cd748cf3c4650d\n"
    },
    {
      "commit": "f862bc6a7a35054e38cb50fa16ae7a07f683ee01",
      "tree": "12f33970e876ba71df008d7e38a58984c5b357b5",
      "parents": [
        "a05da2eea41306d526ce645ea44aa2e05054f651"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Dec 26 18:57:22 2016 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Dec 28 14:35:01 2016 -0800"
      },
      "message": "Add a mechanism for handling audio device configuration change\n\n* Added new call handleDeviceConfigChange() to the Media Framework.\n  That call can be used when there are device configuration changes\n  (e.g., Bluetooth A2DP codec configuration has changed).\n* Added new method AudioPolicyManager::handleDeviceConfigChange().\n  That method toggles the UNAVAILABLE/AVAILABLE connection state of the\n  device, so it can be reconfigured as appropriate - e.g., the audio\n  feeding parameters can be updated.\n* Fix ALOGVV compilation errors when extra logging is enabled.\n\nTest: A2DP streaming to headsets\nBug: 30958229\nChange-Id: I388abbbb3ec4d1a003b441cb0c77e00d80cad668\n"
    },
    {
      "commit": "6a308b02f138e358fb239ee2df5d54dd988f34fd",
      "tree": "730e19d7ae133e2086c37dcec42d0b88e77ba01b",
      "parents": [
        "0a2ea58394190408a3d532bfcc242ba64ca71538",
        "20b9ef0b55c9150ae11057ab997ae61be2d496ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "message": "Merge \"Add unique audio port IDs to AudioTrack and AudioRecord\""
    },
    {
      "commit": "bc7f347ff5dc890ad0fa306f58d145e934e31ed4",
      "tree": "0164bf05d87776c3e073a32fba021b041f7a45b1",
      "parents": [
        "ec982d462866b8b985b4ed13a2e99556de094c0d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 19:27:57 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "b37f28adaea5e64ba61fc6533ed9a7f5a76b9f78",
      "tree": "4f33d868a5057f6bbf77f6efc29119d3f8f7b207",
      "parents": [
        "f574a9722f1f80fc03091f5ccdcfc123c7198730"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 17:31:12 2016 -0800"
      },
      "message": "DO NOT MERGE ANYWHERE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nBug: 32707507\nBug: 32095713\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "72db998b4f41e795420055cda362847d5c5f8c92",
      "tree": "83e824d5f21d33051a683256f949d1f4c1b076e6",
      "parents": [
        "56d69ea84fb6c75cd5e855f067f90cae5a085d27",
        "993c09b27bc5b2b9f93b29fac8e212a196a52c67"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 17:55:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 15 17:55:44 2016 +0000"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety am: b378b73dd7\nam: 993c09b27b\n\nChange-Id: Ib46c5c88aa112e819fe320857b2136f14f84db1a\n"
    },
    {
      "commit": "20b9ef0b55c9150ae11057ab997ae61be2d496ef",
      "tree": "21bd57d748dd47600b1e62bfb18d4acb08e15438",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 11:03:16 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 12 12:29:41 2016 -0800"
      },
      "message": "Add unique audio port IDs to AudioTrack and AudioRecord\n\nThis will allow to track activity at the track level instead of\nat audio session level as only possible with current implementation.\n\nAudioTracks and AudioRecords will receive a unique audio port ID the\nfirst time they register to audio policy with\ngetOutputForAttr()/getInputForAttr() and keep this ID for their\nlifetime.\n\nThis CL is the first partial change and just updates the\naudio policy and audio flinger APIs used at track creation time.\n\nTest: basic regression test of audio playback and capture use cases\n\nChange-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329\n"
    },
    {
      "commit": "b378b73dd7480b584340b8028802c9ca2d625123",
      "tree": "00439baacf771d5439c6ec1747cfcdff13eeb4e5",
      "parents": [
        "5ed0c9ffdae597a023bdcade0868566832a01c2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 09 10:25:06 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "b643627a557e44b9ab5879cf71e162af2d514ce3",
      "tree": "995bc0b0fa9a614687aa8df2f119ab7fff0c7a88",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 19:24:50 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 08 12:14:32 2016 -0800"
      },
      "message": "fix client pid for effects applied by audio policy\n\nTest: Hangouts call, Play Music with and w/o effects\n\nChange-Id: Ia9b20f94be667dd92e0497f8ef9c0dc0e95afe28\n"
    },
    {
      "commit": "f10c709fda87d971a206eebd5df47356e7f2aa39",
      "tree": "98b1a47d6a12c11a4b5a02e2a7fb5129b2a6680f",
      "parents": [
        "7cdef381717e3a96acc6c5786c88bf1eaf03d2f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 06 17:09:56 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 09:40:43 2016 -0800"
      },
      "message": "audio policy: remove effects before releasing input\n\nmodify releaseInput() implementation so that effects added by policy\nrules are removed before closing the input stream to avoid\nfailure to destroy the effect chain\n\nmake sure that orphan effect chains are checked when an EffectHandle is\ndisconnected after thread destruction.\n\nTest: make and run Hangouts\nBug: 32707507\n\nChange-Id: I7833b4c5e42c0057a4477eb4485a20dd26ca2f90\n"
    },
    {
      "commit": "8243fcd644bd4b4865c3977435bb758c981ccf65",
      "tree": "82e0b1a2b2f0fa71b82e815a1f3df91b5cfb8d1d",
      "parents": [
        "bd54eef2d289f786a7ae02139ce3bb9db2b03b24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 28 17:51:14 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 28 17:53:13 2016 -0800"
      },
      "message": "remove support for legacy audio policy manager\n\nTest: make\n\nChange-Id: I7294a52674abadfdbc4da40a72c8fe1a229d0815\n"
    },
    {
      "commit": "559d439c6fe8679e3c52f1cf265d46d7d2e65b68",
      "tree": "9e23625c0b55e45e79842d6605e027dba01f0fe0",
      "parents": [
        "bd0f59e493dbd67d1871b243ddad9cce3b50d7ce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:42:57 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 19 18:19:29 2016 +0000"
      },
      "message": "Use audio_patch_handle_t in startAudioSource() and stopAudioSource()\n\nBug: 27903060\nChange-Id: Iafc2095f484b74978c6f080c54f548e293bf945e\n"
    },
    {
      "commit": "c2f710f89ec1a3ea8e448bfafcc02b03529cc681",
      "tree": "36109077cc2fd28725397002a707689faca3877f",
      "parents": [
        "9a79c8f84a6de3b942c6b0a347aece7ecb7daed5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 17 18:05:36 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 17 18:07:52 2016 -0700"
      },
      "message": "Move audio_effects_conf.h to system/audio_effects\n\nThis file is not really related to HAL.\n\nChange-Id: Ie584266c708cebac651997c8086032b4cc25832b\nTest: make\n"
    },
    {
      "commit": "61a4fac2e3ec271241e3a4f405d7357b7f6ca4c2",
      "tree": "0ce2e32297df380eb5a5d971e8daac0634a96731",
      "parents": [
        "61787b26691da285d8ab79795237006ceb018c4d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 14:44:18 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 14 09:29:54 2016 -0700"
      },
      "message": "Remove dependencies on hardware/audio_policy.h\n\nMost of the time it\u0027s not needed, may be needed when\nUSE_LEGACY_AUDIO_POLICY is enabled.\n\nTest: make\n\nChange-Id: Id25eafc05352f07614965913d367d484f2673fbd\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": "c7239f10fafe26e948d8505554f4f0f113395a93",
      "tree": "3adea1d4d94ce331e0e6ed959eef86d6707a2072",
      "parents": [
        "f2eef91ab93c715d72a0ce5765ef05c4936af0cd",
        "3c96a7253fbdadf27c6ebcea1e28d5c903b3d69c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:21:10 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 02 01:21:10 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\" am: e31f1491f8 am: d6229bb516 am: 95852cbbbb\nam: 3c96a7253f\n\nChange-Id: Ia4fd2e6fc79fea1754bd81c5fc5b847bb347dbe1\n"
    },
    {
      "commit": "3c96a7253fbdadf27c6ebcea1e28d5c903b3d69c",
      "tree": "5964f85a77078f34624ef21a9dcd75924c22adf3",
      "parents": [
        "1315e3a7c06c8eb52b4c11d973d336a1ac9d2ad0",
        "95852cbbbb3d1caabc6d03444d9a762bb78aee5d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:18:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 02 01:18:09 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\" am: e31f1491f8 am: d6229bb516\nam: 95852cbbbb\n\nChange-Id: I376781094ef5c565be1db23784636b7422b38ad8\n"
    },
    {
      "commit": "e31f1491f87804595ad2f2a4a0842ffe7f35f32f",
      "tree": "37493f4a2c0b381a55c55f485a160bd325d9d6c8",
      "parents": [
        "dd780c160d9437ec08b743842711f7a1aa587bd0",
        "2eae53c0128428f936ea1dc6b75e583c30ef1e25"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:06:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 02 01:06:02 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\""
    },
    {
      "commit": "5ca8f32280377dd923e72c3c6bd3994217461b8b",
      "tree": "b5146ce7885539d8b002d3270346f574e3965711",
      "parents": [
        "7aeb8c8d4437eb8f45be3ad3828764795e14ad4c",
        "63ef5a38f82d22c1f97922fe490a1fd336566d5c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9\nam: 63ef5a38f8\n\nChange-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4\n"
    },
    {
      "commit": "df5d9246f9607b1c2f8b134c46a05af06e206da3",
      "tree": "7cd9fcb42c86c8cfe950db239e21e8b5ece98369",
      "parents": [
        "7ad2854adc0abe8dd7909a6ed401107ad09bc3d2",
        "fd923e7fe2779bcd69d79471b8c30c8b98918f62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 15:40:39 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 16:10:32 2016 -0700"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\n\nChange-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192\n"
    },
    {
      "commit": "e964d4e421e2d1ca937227a580c0c837091a11e3",
      "tree": "876478fb4d5b18ddf8ba3b761440e46651b45ecb",
      "parents": [
        "f6d5a13c3a7a84e35e28b9840dde0f29728b6849"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 11:35:57 2016 -0700"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "36d0ca16024820df9a12903d2ac443fabcc180bc",
      "tree": "51e8f285ae66ad7cb922caeb7ba8d5f1d20367e3",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 17:56:35 2016 +0000"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\nMerged-In: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "bcb918b955a36a79aa908f392fb8a7b1cdd405f8",
      "tree": "9029b9cfadde77f86b9d9ecdc55d2cbdb0a9903b",
      "parents": [
        "bc9cb6dcdfd16aa480ada220913573be6ef95abb",
        "b7e9c3b4d88582f040857d8733e6b0b43c2d774f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 28 02:18:30 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 28 02:18:30 2016 +0000"
      },
      "message": "audio policy: fixed delayed voice volume commands am: baf35feefc am: 63fb42a81d\nam: b7e9c3b4d8\n\nChange-Id: I751778ef048e6820ce1e71762aa83e00c1022271\n"
    },
    {
      "commit": "baf35feefcd14c13a6bf5ff5b651d9f22c2c3de0",
      "tree": "27136d10a6411a2420d8c35d937b2dd83ca4c0b5",
      "parents": [
        "ca8cc535cd308cd4e7095037b3b3e327e66581be"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 27 15:36:53 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 27 15:36:53 2016 -0700"
      },
      "message": "audio policy: fixed delayed voice volume commands\n\nApply same rule as for stream volume in case of delayed voice volume\ncommand: this prevents a delayed command to cancel a non delayed\ncommand sent after.\n\nBug: 30421096\nChange-Id: I576db5eba9498c811c3a6493b3c17e1f02b1b1a1\n"
    },
    {
      "commit": "2eae53c0128428f936ea1dc6b75e583c30ef1e25",
      "tree": "1add092f645ef5f13066c6f140ea211c5c9f7cc3",
      "parents": [
        "d2a52727e30c6c413f3837378d990444fe7ac319"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Tue Jul 12 14:52:27 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 13 21:55:56 2016 +0000"
      },
      "message": "Use symbolic name for return value in legacy audio policy client\n\nChange-Id: Id27628afcbc4eb2c9bf1313c8376802a47a9596c\n"
    },
    {
      "commit": "d91a420f234e2ec0ccc4d156a56297832e21d4a6",
      "tree": "b9ef2d51e03939fee2f880d2008dbbf005c5c1fb",
      "parents": [
        "f9eb4d2ca8eee725a33618da104f843acd3b6ff5",
        "edab4257fa821c91c6e5a64cda78c9c38ea905c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 13 21:23:51 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 13 21:23:51 2016 +0000"
      },
      "message": "Merge commit \\\u0027885dd7136a999d21219a4cc9034f20ef688c0625\\\u0027 into manual_merge_885dd71\nam: edab4257fa\n\nChange-Id: I04abc72767b31fbdfd6ee82c239fbc4a94421a82\n"
    },
    {
      "commit": "fcddb0b73931d207b21bd281a7df3ba2f230a607",
      "tree": "f9b35ea1d18407f17cd1fd10d9365867abbed823",
      "parents": [
        "f81362f6cd1bb22f988c30e6b552e6a2d95c4de7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "message": "Enable strict warning checks and fix\n\nChange-Id: Id401a937911eb418e93314812f2f7c2b5ecff8d6\n"
    },
    {
      "commit": "50eb92c4d79b4cc17eeca351e5d16544cc63f63d",
      "tree": "d14b97751fe03709847e941ebff5a5a87d9231c5",
      "parents": [
        "ec834ff477a9cf78bcce906486e19108968f676e",
        "7f938bf972549e7b79aa99f88bc661f16f0dba40"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 23:19:30 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 25 23:19:30 2016 +0000"
      },
      "message": "Merge \"Fix warning in audio policy service\" into nyc-dev am: ec71c9ee92 am: d9514b39e1\nam: 7f938bf972\n\n* commit \u00277f938bf972549e7b79aa99f88bc661f16f0dba40\u0027:\n  Fix warning in audio policy service\n\nChange-Id: I628cdc674506e6dbe6f228b978fed5b0e0b6ff49\n"
    },
    {
      "commit": "9f39f8d6cc1445c338d8cb635fdbc167c4200971",
      "tree": "5cb8d9a2a519df24e5fd0db5f308568ba7b8f043",
      "parents": [
        "a2ebcc043f9b04f08f89fc6281199a34e43d4cae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 12:34:48 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 13:34:51 2016 -0700"
      },
      "message": "Fix warning in audio policy service\n\nChange-Id: I33b20b7007e19e8b2514ffdf2232e9c1d7314d9f\n"
    },
    {
      "commit": "7118308943d64f8d9e4c63b0e6d49da376be1966",
      "tree": "fbee0420bd4c801ec8e834bed6e05a8de8837944",
      "parents": [
        "d9bb4b4e2ecc8fd0002249b73a23973208d74786",
        "e52cab1f56c39b72090f53ef3b2a187191d13143"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 17:54:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 24 17:54:19 2016 +0000"
      },
      "message": "Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check am: b2379ba0a3 am: cc516cdd02\nam: e52cab1f56\n\n* commit \u0027e52cab1f56c39b72090f53ef3b2a187191d13143\u0027:\n  Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check\n\nChange-Id: Ia663aa8d975108cda5f0f2592d4bbf490bf776da\n"
    },
    {
      "commit": "b2379ba0a32638bae2ea0460644f68cf5a0967ce",
      "tree": "92313531455a4482d97d03d0f4ecb1e727b4076a",
      "parents": [
        "a0e10ff02b156738c0e5441104821b220eea3d68"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 23 17:42:12 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 17:16:57 2016 +0000"
      },
      "message": "Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check\n\nMake sure we use the correct PID and UID when checking\nandroid.permission.CAPTURE_AUDIO_OUTPUT permission from audio\npolicy service.\n\nBug: 28772898\nChange-Id: I8f0c45bf7a5728b4364a451eefb6c025892ae9a5\n"
    },
    {
      "commit": "fc732a63bd8c8c62ce75f36f03088ca6727caece",
      "tree": "046c0d9a3a9111de265c98ec822dd38119f59a0f",
      "parents": [
        "d9114cbe50b4a7be06c738581879c9a19f1d39ee",
        "b9b9fa3d28a0436bb5e267d8fc3626ebd820fe78"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 22:15:42 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 29 22:15:42 2016 +0000"
      },
      "message": "Merge \"Use audio_module_handle_t and audio_patch_handle_t consistently\" into nyc-dev am: 54b48c3\nam: b9b9fa3\n\n* commit \u0027b9b9fa3d28a0436bb5e267d8fc3626ebd820fe78\u0027:\n  Use audio_module_handle_t and audio_patch_handle_t consistently\n\nChange-Id: I100c4795ec6d0d9e9c23d6e850303a23f3bfb603\n"
    },
    {
      "commit": "a13cde98a880341f0a56d91da6364b093fb5d24e",
      "tree": "3974215c7cc52f2136c04e3e38568e0483c03129",
      "parents": [
        "45993ad8833063a50af83f76ec1ddeba673b5277"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 15:26:02 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:43:18 2016 -0700"
      },
      "message": "Use audio_module_handle_t and audio_patch_handle_t consistently\n\nBug: 27814144\nChange-Id: I54b7a73ec318779fd3addb060998f4d94141152d\n"
    },
    {
      "commit": "06320b55ceae3778645997fbb8ff5d0010228215",
      "tree": "328641e83500bf4534124ff411ad75274d9be8ae",
      "parents": [
        "a7fc93bf76bbb7c2c67f0f2c1c224d217e02dedd",
        "20f18efb29b8fea661dd4119a764d3f8d4dfe7a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 17 18:52:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 17 18:52:04 2016 +0000"
      },
      "message": "Merge \"Use audio_session_t consistently\" into nyc-dev am: 9a57e34\nam: 20f18ef\n\n* commit \u002720f18efb29b8fea661dd4119a764d3f8d4dfe7a2\u0027:\n  Use audio_session_t consistently\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "f0c6d7d940314dbec47c9b53cb99da79eb022787",
      "tree": "d57f65d0aa2cf8e620251ea22c66f7f8c76d1a5a",
      "parents": [
        "cd22ee6aa5a3ce57530f54b60347d655afc87045"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 02 00:03:16 2016 +0000"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n(cherry picked from commit eeecb980ff4c202d0a3c4b0bfe040dce2f73336d)\n"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "d51b1b247b120c7e49851d923f3c5aa0aa19a787",
      "tree": "b228978bfcb786af075bedaf906908af2ee194b4",
      "parents": [
        "b2396a3991f726f96499ff479737ad7f51f21b86",
        "1e9a65df13859b44b91610ef4cc721155ab5eaa8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 15:13:30 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 15:13:30 2016 -0800"
      },
      "message": "resolve merge conflicts of 1e9a65df13 to master\n\nChange-Id: I7c255d7813805b5ffb0d8e5ecd6fc11ee0b80c8a\n"
    },
    {
      "commit": "8c7cf3b7d0d7bccb9affbc34ae2ab2d6b332f972",
      "tree": "2ce1446fe6fe647e3e0dcbcaf82ac45c5551f492",
      "parents": [
        "809aeb1f725beed877887fe1c5ca3430d811b328"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "message": "Send audio patch in recording callback\n\nRemove direct access to patch handle in AudioInputDescriptor, replace with\n  set / get functions.\nAdd interface for AudioSession to query configuration from enclosing\n  input descriptor.\nWhen input descriptor\u0027s patch handle changes during a recording, propagate\n  the change through the recording notification callback.\n\nBug 26798796\n\nChange-Id: Ia1395d44da7ccfe69ca46877638d1eb49b3935ad\n"
    },
    {
      "commit": "c8d25af1c3c32b7671dbeb967fb86f24fa5fa313",
      "tree": "4cc46f7e8226dcc1f71feb26a005ac9df2df51b7",
      "parents": [
        "fa4cd335a9bae18c852cff8198155a0e6fd3f26e",
        "bce5dfdac0e90701f53e4f8a2c0f5a3c44a0a4ac"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 24 17:18:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 17:18:19 2016 +0000"
      },
      "message": "Merge \"Send client / device format in recording callback\" into nyc-dev am: f70077e435\nam: bce5dfdac0\n\n* commit \u0027bce5dfdac0e90701f53e4f8a2c0f5a3c44a0a4ac\u0027:\n  Send client / device format in recording callback\n"
    },
    {
      "commit": "7281aa9810b33eff47b00104db26c97c77931611",
      "tree": "1fc5afe0784f22d1ab6507d07708b48b12b1c13d",
      "parents": [
        "eafe1f9734af31730790b0abaf8c6aae01bfee77"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 17 15:33:40 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Feb 23 16:23:45 2016 -0800"
      },
      "message": "Send client / device format in recording callback\n\nBug 26798796\n\nChange-Id: Ib4f64159c8371d87da49a8f0cad9317a87d843c4\n"
    },
    {
      "commit": "c04a80ad7ecd8084372fe61b8a93e2f9c58c153e",
      "tree": "701e3d0cde020226b7eee1d89c3c47dfc18e8e8f",
      "parents": [
        "ff0cdeb52e0678e756b268946f0b31def4663a82",
        "d88c1c0044cf1db95418ebbc474677d35fec269a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:30:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 22 18:30:56 2016 +0000"
      },
      "message": "Merge \"audiopolicy: Synchronize calls to Effects state\" into nyc-dev am: c8fc480370\nam: d88c1c0044\n\n* commit \u0027d88c1c0044cf1db95418ebbc474677d35fec269a\u0027:\n  audiopolicy: Synchronize calls to Effects state\n"
    },
    {
      "commit": "c8fc4803705da79aaaeff909538a976bf0e45852",
      "tree": "bd208256ad97b494095dc87e5a13968f035e4dfe",
      "parents": [
        "f214d6936f66052bfabc51e3355f800e41b511f2",
        "bab7bf46e15f7e2e304081c5cc56f8d58f5f09f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:09:31 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 18:09:32 2016 +0000"
      },
      "message": "Merge \"audiopolicy: Synchronize calls to Effects state\" into nyc-dev"
    },
    {
      "commit": "bab7bf46e15f7e2e304081c5cc56f8d58f5f09f3",
      "tree": "1a2a1cbb763c962ac662980e9302e4060deecbca",
      "parents": [
        "b74dc56b2fd3ec872383544d4b6d4950c206259b"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Oct 30 18:02:23 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 19 18:18:00 2016 -0800"
      },
      "message": "audiopolicy: Synchronize calls to Effects state\n\nSynchronize calls that might access Effects state (alternate approach)\n\nBug: 26516500\n\nChange-Id: Ie03de9c67232e0ac7f5db5cbfe87ec058acbfc8e\n"
    },
    {
      "commit": "232f26f8b673973ffa463f80b08b731ffacc8785",
      "tree": "0722b9bc20a7b049ba6b4120138ef8845293e37f",
      "parents": [
        "b74dc56b2fd3ec872383544d4b6d4950c206259b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 17 18:06:27 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 18 22:03:21 2016 +0000"
      },
      "message": "DO NOT MERGE - audio policy: disable concurrent capture\n\nThis reverts commit 4342335fb84bfa4ec5b99e3ef82f186820c2275f.\nThis reverts commit 56afc7a5cc0f0bfc8021f6413b2e2267050bdc8a.\nThis reverts commit 313d1e7dfb4bf8e0a2f09a9adb287062dd64410c.\nThis reverts commit fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f.\n\nBug: 22702906\n\nChange-Id: I9085918f1f7b12e28430958cceb768bb29c12bdb\n"
    },
    {
      "commit": "138ed1796f8c8edd318488911a9b056877191778",
      "tree": "d13629fcc205cc2a2ed858d7caced0436ce820e8",
      "parents": [
        "e3b06f27668901d3d7ae53b6d77aafd4181045ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 10 10:40:44 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 12:10:16 2016 -0800"
      },
      "message": "audio policy: fix issues in effect parameters parsing\n\nFix several issues in AudioPolicyEffects.cpp\n- Fix old bug in growParamSize() that should take a pointer\nto the address of the parameter structure because it can\nmodify it by calling realloc()\n- Fix warnings reported by clang static analyzer\n- Add checks on memory allocations\n\nBug: 26938281\n\nChange-Id: Id0bfa64371d95356d9fc308c6ea9c74e10ab1be0\n"
    },
    {
      "commit": "4342335fb84bfa4ec5b99e3ef82f186820c2275f",
      "tree": "8cb38b5d0f1d00ec6f8e73e97b5827ceee260d1d",
      "parents": [
        "da53ce37c5283fad74d213f855ed8f4a078b860c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 05 11:57:57 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 05 11:57:57 2016 -0800"
      },
      "message": "audio policy: fix capture concurrency mode checks\n\nCapture concurrency mode indicated by policy manager\nafter startInput() is a bit field and should be handled as\nsuch by startInput() in AudioPolicyInterfaceImpl.\n\nBug: 26994864\nChange-Id: Iff093a82b8b68262abab50bc84060cf023450783\n"
    },
    {
      "commit": "d7eda8d0127fabf2d63b0890043da40e2a9e366c",
      "tree": "6feeb75bb2eca25b1eb77725a0d0c005b4332bf1",
      "parents": [
        "16558ea318c3cf25a945fc1771572f489763527e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 17:18:39 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 17:18:39 2016 -0800"
      },
      "message": "audio policy: fix overflow in condition wait timeout\n\nDo not pass a large value to Condition::waitRelative() as this\ncan cause an overflow in pthread_cond_timedwait_relative_np() when\nconverting to absolute time.\n\nBug: 26891803\nChange-Id: Ie2a00bca52d469aa08b2718089dc19cfb1f3475f\n"
    },
    {
      "commit": "fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f",
      "tree": "e08f2ecc670ee5828d5ef4bece2e962b02295afc",
      "parents": [
        "37dfacdf3e66516bd4b0c7d08e1aad5869bf5825"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 18:32:03 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 18:06:50 2016 +0000"
      },
      "message": "Revert \"Revert \"audio policy for concurrent capture.\"\"\n\nThis reverts commit 84332aaa807037baca05340875f2d94fcc519ac4.\n\nBug:26841909\n"
    },
    {
      "commit": "84332aaa807037baca05340875f2d94fcc519ac4",
      "tree": "638152ca1462b98449c8985f53c4c7986dcdf15d",
      "parents": [
        "4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 22:19:18 2016 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 22:20:23 2016 +0000"
      },
      "message": "Revert \"audio policy for concurrent capture.\"\n\nThis reverts commit 4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1.\n\nBug:26841909\n\nChange-Id: Ifc74b195394b9fb3f73d33455ad061bd896d5331\n"
    },
    {
      "commit": "4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1",
      "tree": "8d98964e142912b23352b5c67fd6a3b6568645ab",
      "parents": [
        "a03910b23a31058eea178e8d3f5e84fcf852d5c2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 15 18:00:39 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 03:09:22 2016 +0000"
      },
      "message": "audio policy for concurrent capture.\n\nFirst implementation of concurrent capture policy:\nInitially, only capture for HOTWORD or FM TUNER sources or\nre-route submix is allowed at the same time as any other capture.\nSeveral capture clients can share the same input stream. In this case\nactive clients are sorted by audio source priority level and the input\npath configuration and routing is driven by the highest priority\nactive source.\n\nBug: 22702906\n\nChange-Id: Icbedfe001c6243ecad7a7b57ab78d893b2b97402\n"
    },
    {
      "commit": "c16bf1d9e8ccdd27327e988d50f5b9640e5406f8",
      "tree": "11def686f4fa83f744f266851b0a7a204a64220a",
      "parents": [
        "31fc66042d4241f443ebbd2c7b37946edf35b8e9",
        "2f4fe9f7df8f22c6bc8745407d19df73128810ec"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 13 00:20:55 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 13 00:20:55 2016 +0000"
      },
      "message": "Merge \"AudioPolicy: callback for recording configuration change\""
    },
    {
      "commit": "2f4fe9f7df8f22c6bc8745407d19df73128810ec",
      "tree": "df7d3fe791c9256c7ca53fb36c8f563eec714a30",
      "parents": [
        "dd715cea770697ab6f424df74d69f37def701b30"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 04 16:20:59 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 11 12:06:12 2016 -0800"
      },
      "message": "AudioPolicy: callback for recording configuration change\n\nEach AudioSession tracks start / end of recording, and sends\n  a callback to AudioSystem.\nAudioSystem tracks a single recording callback tracking\n  input source and audio session number.\n\nChange-Id: Ic065751d9ba013e03f2a6ad8dde02542e5465ec0\n"
    },
    {
      "commit": "64f1901bdddf464c8f29bed34e3449762873b3e9",
      "tree": "78b461038b8ee9ab49825d180c9d21347831c9a0",
      "parents": [
        "38b85c29b5be56e660b162da8a13129ac20f8daf",
        "2ddee19245641e86bca436dda23a0f5089bf2ab5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 08 23:17:57 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 08 23:17:57 2016 +0000"
      },
      "message": "Merge \"Add setMasterMono and getMasterMono\""
    },
    {
      "commit": "2ddee19245641e86bca436dda23a0f5089bf2ab5",
      "tree": "ee665bb2097db2710211eb1d834510201b02ab59",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 18 17:34:44 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 08 14:09:31 2016 -0800"
      },
      "message": "Add setMasterMono and getMasterMono\n\nBug: 15283594\nBug: 22700363\nChange-Id: I32dc1fcecf285967a61bd508af3bb299595db57d\n"
    },
    {
      "commit": "8a397d583a4f4cf24ad88facaf2fd33990cfb811",
      "tree": "3d35ebfc3bfbc18e0983e35d1f59892c2c3ee42c",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Dec 02 11:27:57 2015 -0800"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Tue Jan 05 07:04:37 2016 -0800"
      },
      "message": "Adding UNPROCESSED to the available audio_sources\n\nbug: 25564291\nChange-Id: I86d8feda4d687352f98b640819211207a06d6b50\n"
    },
    {
      "commit": "dcb346b7dc5b88c3e85db8a70bbd6a2fee8192b9",
      "tree": "e0038e85e097843f469a6befe9fae1014435f4f5",
      "parents": [
        "ebdddf82b07fa2c4134c3c00dbbbaa1ad3286726"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 09 10:47:29 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 11:29:11 2015 -0800"
      },
      "message": "Run audio services in audioserver instead of mediaserver\n\naudioflinger, audiopolicy, (fm) radio, soundtrigger moved to audioserver.\nmedialog is removed from mediaserver.\naudioserver has same permissions and rights as mediaserver.\n\nmediaserver is allowed to specify client uid to audioserver.\n\nSubsequent CL will add medialog to audioserver.\n\nTBD: Pare down permissions.\n\nBug: 24511453\nChange-Id: Iccaa08b874a502710d142e72f8abbb3d97c44cfa\n"
    },
    {
      "commit": "d60560af7cb559762593161c8202459cc01fb0f5",
      "tree": "d2913f6eb8ded236fba95d7920cca8f7906288e6",
      "parents": [
        "0443ba44a1ebda31bc3642cd91a0570694f29ec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:31:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 16:55:40 2015 -0700"
      },
      "message": "audio policy: add support for external audio sources\n\nAdd support for activity on external audio sources.\nAn external source reflects activity on an input audio device\nthat must be controlled (both routing and volume) by the\naudio policy manager.\nFirst, the input device must be connected with setDeviceConnectionState().\nThen, the source activity is indicated with startAudioSource() and\nstopAudioSource() APIs.\nstartAudioSource() indicates the source device with an audio port configuration\nand the use case by the audio attributes.\n\nOnce a source is active, its routing and volume are controlled by the policy manager\nas it would for a software source (AudioTrack).\n\nChange-Id: If5805d58a4356b2f681f1aabf54375f62b55b98a\n"
    },
    {
      "commit": "0443ba44a1ebda31bc3642cd91a0570694f29ec1",
      "tree": "9c0c2d06ffa6b2e7aef8e859ad26de6d51adb398",
      "parents": [
        "7e64d65236e440709b004ed98fb45bffefbd4ce4",
        "f71d2618532e73db5c01e3c00595d7d2ab2cff3e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 01:05:54 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 29 01:05:54 2015 +0000"
      },
      "message": "Merge \"AudioPolicyService: Synchronize access to AudioPolicyManager\" am: 60cf8e8925 am: 62ac714617\nam: f71d261853\n\n* commit \u0027f71d2618532e73db5c01e3c00595d7d2ab2cff3e\u0027:\n  AudioPolicyService: Synchronize access to AudioPolicyManager\n"
    },
    {
      "commit": "62ac714617c3c994619afdc0666ac3359d8084e7",
      "tree": "b20328a399faff31ff955afad0079136877cdb9e",
      "parents": [
        "cf98e0b3169a73069412d58554a68339fbe06c21",
        "60cf8e892519b84bd5aa2c7ef8027304382ac4b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 00:59:47 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 29 00:59:47 2015 +0000"
      },
      "message": "Merge \"AudioPolicyService: Synchronize access to AudioPolicyManager\"\nam: 60cf8e8925\n\n* commit \u002760cf8e892519b84bd5aa2c7ef8027304382ac4b0\u0027:\n  AudioPolicyService: Synchronize access to AudioPolicyManager\n"
    },
    {
      "commit": "60cf8e892519b84bd5aa2c7ef8027304382ac4b0",
      "tree": "7c7af29ae5d5a47291cb035215c1fa1f417ccbd3",
      "parents": [
        "6bbaad1b915e832b12b735fd47a64c3660592782",
        "dfb9f3b053fa8ff7e622783a2040953442c44700"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 00:55:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 29 00:55:33 2015 +0000"
      },
      "message": "Merge \"AudioPolicyService: Synchronize access to AudioPolicyManager\""
    },
    {
      "commit": "dfb9f3b053fa8ff7e622783a2040953442c44700",
      "tree": "9e91612a20d8139dc9bd04be9c4a9ddede5f6c62",
      "parents": [
        "acd2186aa239efa58b202823083c1b8dbc1c8a16"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Oct 26 18:22:13 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 28 14:31:42 2015 -0700"
      },
      "message": "AudioPolicyService: Synchronize access to AudioPolicyManager\n\nSynchronize access to APM when getDevicesForStream is called\non APM.\n\nChange-Id: I2ba6922341f035375270b02000ef5a7e078f6b5a\n"
    },
    {
      "commit": "a2ce3c173951845c1305099314451a2f99123b05",
      "tree": "b540ac98773db3161f65ffbf14f7960b7628524c",
      "parents": [
        "acd2186aa239efa58b202823083c1b8dbc1c8a16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 23 10:25:31 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 28 10:26:45 2015 -0700"
      },
      "message": "AudioPolicyService: fix race in AudioCommandThread\n\nFixe race condition in AudioCommandThread::threadLoop() where a\ncommand can be inserted in first position in the queue after the sleep\ntime has been calculated causing a longer delay than expected.\n\nAlso fix a failure to hold a wake lock while commands are still in the queue.\n\nBug: 22707905.\nChange-Id: I813626986677bf00106acb37ee20d3dd75d5cf33\n"
    },
    {
      "commit": "f8e21a06c1b559757f1c6846b1a1abd29874cbeb",
      "tree": "febe777241b23e80215ffb2d7f6555f357eb234b",
      "parents": [
        "57a34a5163fa995b5d4827d60d9ebdb1881b11df",
        "6360955a0b34e7c48d9471c766ba6d5ca0051d97"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 02:44:43 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 27 02:44:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"audio policy: bind setMode() and setPhoneState() operations\"\"\" into mnc-dev am: 681bc45d25 am: f6224dece5 am: 5f2a15a617\nam: 6360955a0b\n\n* commit \u00276360955a0b34e7c48d9471c766ba6d5ca0051d97\u0027:\n  Revert \"Revert \"audio policy: bind setMode() and setPhoneState() operations\"\"\n"
    },
    {
      "commit": "57a34a5163fa995b5d4827d60d9ebdb1881b11df",
      "tree": "0c5f198f29f1a6929993f489fc99441e0e1fdf6b",
      "parents": [
        "7f5d179babc1dbd4a9859da92fa43a89f14ce853",
        "77249c550ffc97b5f92150d544e661e17d530332"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 02:44:34 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 27 02:44:34 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"AudioPolicyService: fix race in AudioCommandThread\"\"\" into mnc-dev am: 6919fbe40d am: 8c5b71ce47 am: 2fb59515d4\nam: 77249c550f\n\n* commit \u002777249c550ffc97b5f92150d544e661e17d530332\u0027:\n  Revert \"Revert \"AudioPolicyService: fix race in AudioCommandThread\"\"\n"
    },
    {
      "commit": "7f5d179babc1dbd4a9859da92fa43a89f14ce853",
      "tree": "017e810199db51e10b797865649d8a8f39be8631",
      "parents": [
        "0e15f1f817cad0623a719fd8871067ad1f5b8eb9",
        "e44a9c0666b3861eb2676ddf91cbeb5ecd5b23a5"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:47:05 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 27 01:47:05 2015 +0000"
      },
      "message": "Merge \"Revert \"AudioPolicyService: fix race in AudioCommandThread\"\" into mnc-dev am: cda4871486 am: 1fcbd9b0e9 am: dee38ac0da\nam: e44a9c0666\n\n* commit \u0027e44a9c0666b3861eb2676ddf91cbeb5ecd5b23a5\u0027:\n  Revert \"AudioPolicyService: fix race in AudioCommandThread\"\n"
    },
    {
      "commit": "0e15f1f817cad0623a719fd8871067ad1f5b8eb9",
      "tree": "0c5f198f29f1a6929993f489fc99441e0e1fdf6b",
      "parents": [
        "762b56bc316c484b9e7f199416e4c8e107bb7331",
        "14c54bbf9c739c8d611e5dc8990a5d220d135956"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:46:56 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 27 01:46:56 2015 +0000"
      },
      "message": "Merge \"Revert \"audio policy: bind setMode() and setPhoneState() operations\"\" into mnc-dev am: be6f10c049 am: fd16414d34 am: d53f955a4f\nam: 14c54bbf9c\n\n* commit \u002714c54bbf9c739c8d611e5dc8990a5d220d135956\u0027:\n  Revert \"audio policy: bind setMode() and setPhoneState() operations\"\n"
    },
    {
      "commit": "3994ffdd2c280aa5fad9f3c41255371cd545c7cf",
      "tree": "e815c94f3630142e34d22d8493cda4e8a95dc646",
      "parents": [
        "26ce11a1dd2a9b70865aec1b42c365dd19172511"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:29:45 2015 +0000"
      },
      "committer": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:29:45 2015 +0000"
      },
      "message": "Revert \"Revert \"audio policy: bind setMode() and setPhoneState() operations\"\"\n\nThis reverts commit 26ce11a1dd2a9b70865aec1b42c365dd19172511.\n\nChange-Id: I0affb97e7f2eb541ebd6f26c33e8f32261e9e221\n"
    },
    {
      "commit": "a754b4fa874f97a51ed2bee9257f2a870effe619",
      "tree": "da2c975edfeada4f3d1e2d7ca37cad9ada599f4b",
      "parents": [
        "75c82b50951b21190f710a638c6a26ff7ee6d86d"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:29:34 2015 +0000"
      },
      "committer": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:29:34 2015 +0000"
      },
      "message": "Revert \"Revert \"AudioPolicyService: fix race in AudioCommandThread\"\"\n\nThis reverts commit 75c82b50951b21190f710a638c6a26ff7ee6d86d.\n\nChange-Id: I1b1f147bedf205636ec20b84faf6ef597a781c0d\n"
    },
    {
      "commit": "26ce11a1dd2a9b70865aec1b42c365dd19172511",
      "tree": "da2c975edfeada4f3d1e2d7ca37cad9ada599f4b",
      "parents": [
        "9ddf1c76121caef55a05c537d6a9a1d76c1d17be"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:25:27 2015 +0000"
      },
      "committer": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:25:27 2015 +0000"
      },
      "message": "Revert \"audio policy: bind setMode() and setPhoneState() operations\"\n\nThis reverts commit 9ddf1c76121caef55a05c537d6a9a1d76c1d17be.\n\nChange-Id: I860ecc288a1798605dff46f39107f4450ca5cd56\n"
    },
    {
      "commit": "75c82b50951b21190f710a638c6a26ff7ee6d86d",
      "tree": "97d86a674d1cecec6da60dfb0ec0c2eae1e2b644",
      "parents": [
        "74ce88ff0f24a8c08fdab3a1140212183089c2b5"
      ],
      "author": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:24:55 2015 +0000"
      },
      "committer": {
        "name": "Zach Jang",
        "email": "zachjang@google.com",
        "time": "Tue Oct 27 01:24:55 2015 +0000"
      },
      "message": "Revert \"AudioPolicyService: fix race in AudioCommandThread\"\n\nThis reverts commit 74ce88ff0f24a8c08fdab3a1140212183089c2b5.\n\nChange-Id: I39114c8cdd3021951ba93716aaa0c1c03e68538d\n"
    },
    {
      "commit": "9ddf1c76121caef55a05c537d6a9a1d76c1d17be",
      "tree": "e815c94f3630142e34d22d8493cda4e8a95dc646",
      "parents": [
        "74ce88ff0f24a8c08fdab3a1140212183089c2b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 16 15:49:30 2015 -0700"
      },
      "committer": {
        "name": "Christian Bejram",
        "email": "cbejram@google.com",
        "time": "Fri Oct 16 16:49:31 2015 -0700"
      },
      "message": "audio policy: bind setMode() and setPhoneState() operations\n\nNo routing operation should be allowed between setMode() and setPhoneState()\nwhen starting a call as the audio HAL relies on a precise sequence of mode change\nand routing change to select the initial audio device for the call.\n\nBug: 24083591.\n\nChange-Id: I2d5ef62c11cf7aedc2ec7ca5e5fadd7ac875afbc\n"
    },
    {
      "commit": "74ce88ff0f24a8c08fdab3a1140212183089c2b5",
      "tree": "da2c975edfeada4f3d1e2d7ca37cad9ada599f4b",
      "parents": [
        "7b80648180feaad1e7edaecd078246f5002a8fb6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 23 10:25:31 2015 -0700"
      },
      "committer": {
        "name": "Christian Bejram",
        "email": "cbejram@google.com",
        "time": "Fri Oct 16 16:48:45 2015 -0700"
      },
      "message": "AudioPolicyService: fix race in AudioCommandThread\n\nFixe race condition in AudioCommandThread::threadLoop() where a\ncommand can be inserted in first position in the queue after the sleep\ntime has been calculated causing a longer delay than expected.\n\nAlso fix a failure to hold a wake lock while commands are still in the queue.\n\nBug: 22707905.\nChange-Id: I813626986677bf00106acb37ee20d3dd75d5cf33\n"
    },
    {
      "commit": "0a712e0c7f292821ac7a997a75dbe2388378bed4",
      "tree": "ee4812cdd4b2a16620e76d79f94257cd42625130",
      "parents": [
        "0c27d279a1a99d175b84cc530ce2bfb0665b308b",
        "1723a5879ff1295e6553730e2916e54a88b6222e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 23 23:03:37 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 23 23:03:37 2015 +0000"
      },
      "message": "am 1723a587: am 3d25b023: am 047d97b2: AudioPolicyService: fix race in AudioCommandThread\n\n* commit \u00271723a5879ff1295e6553730e2916e54a88b6222e\u0027:\n  AudioPolicyService: fix race in AudioCommandThread\n"
    },
    {
      "commit": "047d97b2d046374e2a25c81a984d9cde23f5d781",
      "tree": "9602fea6112f8b3084fc8575fecbb5ba1e4da201",
      "parents": [
        "3916845dda1289c3419fe21fbe335bcbddc2e354"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 23 10:25:31 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 23 11:13:14 2015 -0700"
      },
      "message": "AudioPolicyService: fix race in AudioCommandThread\n\nFixe race condition in AudioCommandThread::threadLoop() where a\ncommand can be inserted in first position in the queue after the sleep\ntime has been calculated causing a longer delay than expected.\n\nAlso fix a failure to hold a wake lock while commands are still in the queue.\n\nBug: 22707905.\nChange-Id: I813626986677bf00106acb37ee20d3dd75d5cf33\n"
    },
    {
      "commit": "fc2c73edef7b0a118634f75cf0ab2f3769ab0462",
      "tree": "4658cda96b758569f241beae5e0012accaaf3292",
      "parents": [
        "bc2777d5bed4f0034c9b1c7e08504f38621a976f",
        "f150772c994efa5bd80a0def10182c9c2bb2195a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 17 20:00:17 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 17 20:00:17 2015 +0000"
      },
      "message": "am f150772c: am da132d84: am 4296d7df: Merge \"audio policy: bind setMode() and setPhoneState() operations\" into mnc-dr-dev\n\n* commit \u0027f150772c994efa5bd80a0def10182c9c2bb2195a\u0027:\n  audio policy: bind setMode() and setPhoneState() operations\n"
    },
    {
      "commit": "beb07febdc0cae2f43a2008d3bd06b7bb933b19a",
      "tree": "889fadf6fd8136b134f397010846c6b0334415b3",
      "parents": [
        "20baac2a934e9d968832a44809eecc8c46c17fe2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 16 15:49:30 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 16 15:49:30 2015 -0700"
      },
      "message": "audio policy: bind setMode() and setPhoneState() operations\n\nNo routing operation should be allowed between setMode() and setPhoneState()\nwhen starting a call as the audio HAL relies on a precise sequence of mode change\nand routing change to select the initial audio device for the call.\n\nBug: 24083591.\n\nChange-Id: I2d5ef62c11cf7aedc2ec7ca5e5fadd7ac875afbc\n"
    },
    {
      "commit": "125902529aed131abc00210c36dc9ff03d9e8120",
      "tree": "c5b994e805be0f4df0310f1daddfab5af04b3301",
      "parents": [
        "9a57d1cb51ef14a666eefb32b245dd47cf79844e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 21 18:40:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 24 08:31:02 2015 -0700"
      },
      "message": "audio policy service: check registerClient() input parameter\n\nBug: 21523339.\nChange-Id: I1d1ebd54fa7b20ae01d914bb216bf3dd24fc32cd\n"
    }
  ],
  "next": "82db269d4797cb9909988b723d91fa2094a74b38"
}
