)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "82db269d4797cb9909988b723d91fa2094a74b38",
      "tree": "77f2ff4451760a09704ab7676f9e680e9af0729a",
      "parents": [
        "aa7a4eae1cc93ccf90e273b9634f3a125b0b3565"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 13:59:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 15:23:46 2015 -0700"
      },
      "message": "audio policy: protect capture from telephony RX path.\n\nAdd permission check if the capture device selected is telephony\nRX path.\n\nBug: 23017158.\nChange-Id: Iaa34d836e6cf46b7cbbf2483fcd4306dcd27ce90\n"
    },
    {
      "commit": "f60b6b6c776a762827874f6f635c0577359a7ee4",
      "tree": "3eb0c3ebd27e46c40c082669e1633da4eee092e2",
      "parents": [
        "16f0c6b8146b2a993d9fe9c9076c73d39aaee81c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 06 10:53:26 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 06 10:53:26 2015 -0700"
      },
      "message": "Fix build warning\n\nChange-Id: I876edc37fb2093ee13c876c2af5c46512763154d\n"
    },
    {
      "commit": "e8726fea8a53bf3474aa3c6deaf2f6c1f565e694",
      "tree": "d72b6ffcc7e33c178e3cac7c108b102041451cb6",
      "parents": [
        "ed8505836c0b2fba0ab4be0c1eff31d4f241bc1d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 09:39:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 12:38:13 2015 -0700"
      },
      "message": "reduce number of binder calls from mediaserver\n\nReduce the number of audio port, audio patch and\nIO config changed binder calls from mediaserver to\nclient processes:\n- Do not call IO config changed callback if selected\ndevice is the same as previously selected one on a given\naudio flinger playback or capture thread.\n- Do not call the audio port or audo patch list update\ncallback on a client if this client as no listener registered.\n\nBug: 22045560.\n\nChange-Id: If780e105404de79b7cb5c80c27b793ceb6b1c423\n"
    },
    {
      "commit": "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
      "tree": "f69b635690cbc2cff9e5cfb8843e4473cc327208",
      "parents": [
        "1471e7a112aed5ff120c2b97bced9523ed39fe6c",
        "8c7e6dac6f5eb38cef627dab92eac8b38513450c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "message": "Merge \"audio policy: session routes continued.\" into mnc-dev"
    },
    {
      "commit": "8c7e6dac6f5eb38cef627dab92eac8b38513450c",
      "tree": "6aede3a6ac013462a117ffb181d93439525eebeb",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 17:37:00 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 12:43:06 2015 -0700"
      },
      "message": "audio policy: session routes continued.\n\n- Clear session routes when client process dies.\n- Enforce the route only when the requesting session is active.\n- Fix requested route not working if an output mix change is required\n(e.g forcing to SPEAKER when the default route is USB or A2DP).\n- Make sure all sessions sharing the strategy with a rerouted session\nhave the same route (needed for volume control consistency)\n\nChange-Id: I0ab347a8fb97e73e2c5965374544c5f4fe509ef1\n"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "466dc8ed6ca6b7f585104806c48613dd34e608c9",
      "tree": "086bbd91d48e366377c02df8a65a5e2bad8675a6",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Apr 17 13:15:36 2015 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Apr 28 10:46:14 2015 -0600"
      },
      "message": "Explicit routing in AudioRecord\n\nChange-Id: I9cc5d54883a3e5c75d553fabb619fc8e49f4f9e5\n"
    },
    {
      "commit": "a7401cc5e781da150b46e7ae37905ab9ca2aa758",
      "tree": "4bbbdd8effa6c7a88707a7bd0b34c074bdcfe490",
      "parents": [
        "a7346034d597c18b63bc63fdfea8360f8b6c1283"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 20 17:22:01 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 20 17:23:22 2015 -0700"
      },
      "message": "audio policy: remove permission check for ports and patches getters\n\nRemove check for MODIFY_AUDIO_ROUTING permission in\naudio policy methods just getting devices or patches state.\n\nChange-Id: Id3bafc5ad0d0bd96210822243139898e314327d8\n"
    },
    {
      "commit": "554a277d4e42a3d3df3d90ba0e7dfa2d31690e32",
      "tree": "3647500470a7eca8095102a0e2818acb848cdf6a",
      "parents": [
        "3249558196082087fb8bd0a847ef5c6000c8b925"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:29:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 15 23:15:38 2015 +0000"
      },
      "message": "audio policy: add binder calls for audio source control\n\nAdd binder methods to IAudioPolicyService to control activity\nof external audio sources (e.g FM tuner).\n\nChange-Id: I2008308a6a996baeae502b68a790d87281efe2ff\n"
    },
    {
      "commit": "cfdd52423cee9efea73023feeaa74279ebd45b7c",
      "tree": "154c4ea34b3fc95dbde268fb24be2f2915438c78",
      "parents": [
        "5e1c007038df74b389018e762d5059cacecff59e",
        "de80105c3f2db0eabd47640c49387ea3b44d4782"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 15 21:11:49 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 15 21:12:01 2015 +0000"
      },
      "message": "Merge \"AudioPolicyManager: notification of dynamic policy mix activity\""
    },
    {
      "commit": "de80105c3f2db0eabd47640c49387ea3b44d4782",
      "tree": "9775c7bbe30ef1ab13a888def8531cb0f87b1756",
      "parents": [
        "079e121934106860af5ff5491bd3884453d1fdb3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:10:14 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:20:20 2015 -0700"
      },
      "message": "AudioPolicyManager: notification of dynamic policy mix activity\n\nImplement non-stream type specific ref counting in output\n  descriptors to keep track of mix activity.\nNotify audio policy client of mix activity changes.\n\nBug 20226914\n\nChange-Id: Iec939cb640c58056f88947b611d23b4bb6d8a11b\n"
    },
    {
      "commit": "ab300c8cbf5df98fddca39e8d1698b0307432152",
      "tree": "083c508fb62b4456a2c903045a165d9ef001b8fb",
      "parents": [
        "31ffe45a22b72ee5d25bb4932d0525e90dbc19fe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 13:47:33 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 13:47:33 2015 -0700"
      },
      "message": "audio polciy: remove FM audio capture permission.\n\nChange-Id: I2607d89b0bd87cdd2f4084dfdb55135509a824d5\n"
    },
    {
      "commit": "aa9811945f575614b3482d09e4d969792701cebb",
      "tree": "1744aa567efe78c3062ec80da19277d96def0725",
      "parents": [
        "41efeb2b477066d96ad34a048f34fb6fb34213ec"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Sat Mar 21 09:55:15 2015 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Wed Apr 08 09:51:07 2015 -0700"
      },
      "message": "Adding explicit routing API to AudioTrack\n\nChange-Id: I40c048c7644c46f4e4f7103875206c0785c4b1dc\n"
    },
    {
      "commit": "884de21ca32e4a47f77e541a7284d02054ff3349",
      "tree": "d7371afc5d731f607281909dc090cb36950911b2",
      "parents": [
        "ec648447b7dcab701c436a54bd38a1abd8037be1"
      ],
      "author": {
        "name": "Wally Yau",
        "email": "wyau@google.com",
        "time": "Tue Mar 24 09:10:58 2015 -0700"
      },
      "committer": {
        "name": "Wally Yau",
        "email": "wyau@google.com",
        "time": "Tue Mar 24 09:10:58 2015 -0700"
      },
      "message": "Make sure waitRelative is called when waitTime !\u003d INT64_MAX\n\nb/19870971\n\n(cherry picked from commit c600af1459c455583e071e653f0d998032aa423e)\n\nChange-Id: Ic6bb54067d76c96ff6fc45431dc2d72db9f0a3a8\n"
    },
    {
      "commit": "56ec4ffcbae8aeac6c5245fc7b825d02e2e6cefd",
      "tree": "914941adb956f3af389b9a7b955f3534eec4fe7a",
      "parents": [
        "8f7b7fa417566e9a6a29ea9f0e220b3cd6d1a9e3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 23 16:45:18 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 18 17:29:20 2015 -0800"
      },
      "message": "Refactor AudioPolicyManager\n\nAudioPolicyManager implementation is now split into the\nfollowing files:\n\nfiles managerdefault/Gains.*\n  class AudioGain\n  class VolumeCurvePoint\n  class StreamDescriptor\n\nfiles managerdefault/Devices.*\n  class DeviceDescriptor\n  class DeviceVector\n\nfiles managerdefault/Ports.*\n  class AudioPort\n  class AudioPortConfig\n  class AudioPatch\n\nfiles managerdefault/IOProfile.*\n  class IOProfile\n\nfiles managerdefault/HwModule.*\n  class HwModule\n\nfiles managerdefault/AudioInputDescriptor.*\n  class AudioInputDescriptor\n\nfiles managerdefault/AudioOutputDescriptor.*\n  class AudioOutputDescriptor\n\nAll files for libaudiopolicyservice are moved under service/\n\nAll files for libaudiopolicymanager are moved under manager/\n\nChange-Id: I43758be1894e37d34db194b51a19ae24461e066e\n"
    }
  ]
}
