)]}'
{
  "log": [
    {
      "commit": "bf6b0ecd91172d6cd6cdd7c44f9ceecab4c29f27",
      "tree": "5af2b932484555dc58c2eb0ec338a4062ba99b81",
      "parents": [
        "f39a648edbb1502f278ab10310e42500692dc3df"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 12 12:30:12 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Feb 15 09:47:23 2019 -0800"
      },
      "message": "Refactor haptic constant.\n\nUse the constant from IExternalVibratorService.\n\nBug: 124318236\nTest: play audio-haptic coupled file\nChange-Id: Ice2ac13d0f6a6a749bb6243230524336144fa5f4\n"
    },
    {
      "commit": "4463ff504dc0c13116f252466bdbba61e0b32a81",
      "tree": "59daf000cec82575573c42de2cba9809cc6f0bf2",
      "parents": [
        "ba2cf0f2e39d8302babbda3a98127daaf2ea7376"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 13:56:09 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 18:34:25 2019 -0800"
      },
      "message": "AudioSystem: more locking work on audio device callback\n\ncommit 24a9fb0d left some locking issues with management of device\ncallbacks in AudioSystem, AudioTrack and AudioRecord.\n\nThis change makes that the AudioSystem mutex is not held when\ncallbacks are called into AudioTrack and AudioRecord removing cross\ndeadlock risks and allowing AudioRecord and AudioTrack to hold their\nmutexes while installing and handling the callbacks\n\nTest: CTS RoutingTest, AudioTrackTest, AudioRecordTest\nChange-Id: I5d17e77ca26220092deb0bd6e5a33dc32348d460\n"
    },
    {
      "commit": "2ec0674146dc0a9d885a18067a7a5c84786b59ad",
      "tree": "8ec5b4eadfad32fe1b4214acba36c9570300c590",
      "parents": [
        "307b00e15663d205908f3dae4003228facd22b0b",
        "24a9fb0d4a3acd5d0c2ef96147650464a91eb8d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 15:57:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 15:57:21 2019 +0000"
      },
      "message": "Merge \"libaudioclient: force onAudioDeviceUpdate on registration\""
    },
    {
      "commit": "24a9fb0d4a3acd5d0c2ef96147650464a91eb8d9",
      "tree": "a96ff333beb672fc64379e4e35dc1e67998b6b43",
      "parents": [
        "a6d5e8b33ce1f7e3133d7474ac3bed3550c309a8"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 18 17:51:34 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 02:53:09 2019 +0000"
      },
      "message": "libaudioclient: force onAudioDeviceUpdate on registration\n\nThis CL forces the onAudioDeviceUpdate on register event.\nIt also fixes the loss of callback on AudioTrack or AudioRecord\nclient if received before ioHandle is assigned.\n\nTest: audio smoke tests\nTest: CTS for AudioTrack and AudioRouting\n\nChange-Id: I119b5c407da68a5b55162550bea5fa7e724165d1\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "153f92d57b6a1d2fdc7fa601bbc86db31646a8f9",
      "tree": "0d380f13a58ff8fdf073dd974dcb55e4d18ef75c",
      "parents": [
        "45986c74cd5253bcc81b1b4954e3ff3300f7e6d8"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 18:33:28 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 15:49:11 2019 -0800"
      },
      "message": "Add secondary output to audio tracks\n\nThe secondary are returned from mixes (from DAP loopback\u0026render),\nfrom getOutputForAttr.\nAll getOutputForAttr* of the stack are update.\nInternal getOutputForAttr use descriptor, external one use handles.\n\nThe secondary output are saved in each track and the track is\ninvalidated if the list of secondary output changes.\n\nIn audio flinger, create a pair of recordTrack \u0026 patchTrack to pipe\nthe intercepted audio audio to the secondary output.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: Id6523d9e383c15a0e39313d5f355df809b7e72fe\n"
    },
    {
      "commit": "1086b05f7d3cb296d55facd88621f16c2737cf33",
      "tree": "58254c1bc6f07d5d9f8645ae32b131239e74ffa8",
      "parents": [
        "0435a4dcb66366da53cf4544c941a40ed2b9c2bd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 17:52:55 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Feb 05 17:19:46 2019 -0800"
      },
      "message": "Add MIX_ROUTE_FLAG_LOOP_BACK_RENDER\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I276a10921aac9f5e709c0a44c661cbbdc94e49db\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "58d4be5a5a5d24f18b7a207148c7caa317fef366",
      "tree": "37e0a5e790187815757bd906c7767cfcea0e1f74",
      "parents": [
        "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:30:12 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 00:18:00 2019 +0000"
      },
      "message": "audio: get rid of hardcoded translation stream \u003c--\u003e attributes\n\nIMPORTANT NOTE:\n    CL depends on another CL in frameworks/base\n    https://partner-android-review.googlesource.com/c/platform/frameworks/base/+/1206275\n\nAudioProductStrategies offers the possibility to dynamically\ntranslate attributes to stream types (and vice versa) within\naudio policy engine.\nLegacy engine has hard coded rules to maintain the translation\nservice.\n\nThis patch removes the hardcoded translation within the helper\nand replaces them by AudioProductStrategy APIs.\n\nTest: AudioPolicyTests: AudioProductStrategiesAllStreamsTest\nIt loops on all stream types supported by strategy and ensures\ndevice selection matches. Hard coded stuff would prevent right device\nselection.\nTest: CTS: AudioTrackTest AudioRecordTest\nTest: audio smoke test on sailfish, walleye blueline\n\n\nChange-Id: I76589df5555136ed49dbacc7aac9b0b5e828bef2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "c005e569c7bae3f8c49660c9388c3076046069f5",
      "tree": "8612dc3a3d69c018b303bf8e56aa142db5465e8e",
      "parents": [
        "d0ba9ed06c61ab3e66627e027fbc34ba998140ee"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:04:49 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:31:32 2019 -0800"
      },
      "message": "audiopolicy: apm: switch to new Engine APIs\n\nTest: make\nChange-Id: Iedc2268852ee0bce32b67cfd324395c48cb33424\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d0ba9ed06c61ab3e66627e027fbc34ba998140ee",
      "tree": "49948f80335bea4a358c7f455dfd6a5e59a94e30",
      "parents": [
        "7188f1ad365cd9d475723b639d521b491eaca389"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 05 11:50:42 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:54 2019 -0800"
      },
      "message": "audio policy service: Add introspection API to retrieve AudioProductStrategies\n\nThis CL adds required introspection APIs to deal with product strategies:\n\n-getter of the collection of product strategies\n-helper function to return the strategy associated to a given attributes.\nThis API is mandatory to avoid duplicating the logic that compiles the strategy\nfor a given Audio Attributes structure.\n\nTest: make\n\nChange-Id: I0e107570a44227bb52a4f359954c93215d4f8bae\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "dc7553ff1bf7ec88e17a8577b94bb9dd9a1cbb43",
      "tree": "e51119764c576e4e051cef763280f8d35c7a7b27",
      "parents": [
        "612be7ff334b6c2c1051bd6dbb4088922af0336e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 10:39:57 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:21 2019 -0800"
      },
      "message": "audiopolicy: engine: Add ProductStrategy common code\n\n-Adds new Engine APIs for Product Strategy management\n-Adds a common engine code to handle product strategies\n-Adds a parsing configuration library to feed the strategies\n-Prepare both engine for the switch\n\nTest: make\nChange-Id: I00f57ece798893bc6f9aa9ed54a3e5237e8d5cf1\n"
    },
    {
      "commit": "ae340bde6d16f0046887fa0e73fba00cdd5405d9",
      "tree": "8b84e19910fcba4e4ba54f0a7b1e6649bf7d8bb8",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396",
        "3fae037db39ff89707c3a58ef1419229a00ad71d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 01 01:53:28 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 01:53:28 2019 +0000"
      },
      "message": "Merge \"Add master audio balance\""
    },
    {
      "commit": "83dc265bde1be0f58161a4606b0a72d053288ff3",
      "tree": "c2ce03740c1639b974f21ce5941e931a2b924ba7",
      "parents": [
        "ffa6f9191ee3e50a5c140b0d3cae27d7f7c87a3f",
        "6a3052232c606bc2f74a849c6758fd44b6c01158"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 31 21:47:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 21:47:33 2019 +0000"
      },
      "message": "Merge \"use MediaAnalyticsItem::create() instead of new\""
    },
    {
      "commit": "6a3052232c606bc2f74a849c6758fd44b6c01158",
      "tree": "529ee3bb94a17c06e19c8642daf9993f23d531f2",
      "parents": [
        "2637984613a75eb2640a73e186a6dd1f08cebbc0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 28 20:33:18 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 31 11:19:44 2019 -0800"
      },
      "message": "use MediaAnalyticsItem::create() instead of new\n\nBug: 123543489\nTest: boot/logcat, select CtsMediaTests\nChange-Id: I92f8b9987b78466fae74ce4c0b177f8bb1e7dea8\n"
    },
    {
      "commit": "ab2f2f35111cf1237b8d1a42ebe33a001f28daa8",
      "tree": "a9b1107cf1d7cf8ba26a204e558b240d940b17de",
      "parents": [
        "aaaa003cb570f965908db1a08d53c4bddb588d61",
        "e79290d111a9c72aff5eecf2a5eed63d3168c112"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "message": "Merge \"Set default value to mAttributes in AudioTrack\" am: 1128b3fa1a am: 46c631d921\nam: e79290d111\n\nChange-Id: I239ab1a947eb13195e6acbfa8f096965dd14d5ae\n"
    },
    {
      "commit": "5fa32ed75e09b1f01e6fdea509ef49492f729c7f",
      "tree": "0ff92513f38f3c04deda7e232c505814f8dcc9aa",
      "parents": [
        "caa0b292536bf8f4d455536404fed785e038c51a"
      ],
      "author": {
        "name": "Ippei Murata",
        "email": "ippei.x.murata@sony.com",
        "time": "Mon Oct 01 17:37:50 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "Tomoharu.Kasahara@sony.com",
        "time": "Thu Jan 31 01:08:13 2019 +0000"
      },
      "message": "Set default value to mAttributes in AudioTrack\n\nmAttributes in AudioTrack can not be set in AudioTrack::set()\nwhen pAttributes is NULL.\nAudioTrack::getPosition() sometimes returns wrong value\nsince mAttributes is undefined value.\nThis change sets default values to mAttributes.\n\nBug: 123607740\nTest: manual\nChange-Id: Ie590c17efc466cc89cbd7e9f89fc3ebeed98eace\n"
    },
    {
      "commit": "77270b880570e07a5d80b23371f53638ec30fb5c",
      "tree": "4cdb67f28ef7bb47dad1ac19cadb48febf2be8a7",
      "parents": [
        "4b7f683cf9fbaa2b427f03bd067ee2588906ac44"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 18 15:41:29 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 30 15:18:23 2019 -0800"
      },
      "message": "Apply intensity control for haptic data.\n\nUse the same logic in VibrationEffect.scale to control the intensity of\nhaptic playback in audio framework. Note that as the maximum amplitude\nof vibrator is 255, convert the haptic data to pcm_8_bit before doing\nscaling.\n\nTest: Manually\nChange-Id: I6136d27c9255a215834b6e3092aa8ad696fbae04\n"
    },
    {
      "commit": "3fae037db39ff89707c3a58ef1419229a00ad71d",
      "tree": "33087aa031e45fdc65add4ffaaf74e6a7872cf0f",
      "parents": [
        "48f59ed61b902f0e6cb7811bd8ee5fa60ab63abe"
      ],
      "author": {
        "name": "Richard Folke Tullberg",
        "email": "richardfolke.tullberg@sony.com",
        "time": "Fri Jan 13 09:04:25 2017 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 28 16:21:52 2019 -0800"
      },
      "message": "Add master audio balance\n\nTest: Change Balance through Settings, play audio\nBug: 28390736\nCo-author: Ed Savage-Jones \u003cedward.savage-jones@sony.com\u003e\nChange-Id: I0169b436ccbaa5628584d9f4954dd7c76d021aae\n"
    },
    {
      "commit": "69b73291138bf97fcdf09a4320e77f28568cf874",
      "tree": "5f6f2e069accd87b1d0ec04af4a67cd73d9f936b",
      "parents": [
        "0dd741827750e4163fb618e817b51088badb65ad"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:34:47 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:44:51 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"Add libprocessgroup dependency and fix sched_policy include\"\"\n\nThis reverts commit 7194e6da8a37a0e222b2f81e2d55a8013e657a13.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: I15797a30abcc304379db05bec1b25a0bd95b2ff4\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7194e6da8a37a0e222b2f81e2d55a8013e657a13",
      "tree": "c0a7b13fc0c2db08e5884f2cf598708aebecde70",
      "parents": [
        "855ae44d9f4acc7ac8720464ef94d159c9063e8b"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:02 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:22 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"Add libprocessgroup dependency and fix sched_policy include\"\n\nThis reverts commit 26992263865c4b30d733b1cdc0efce0d3db7d5c9.\n\nReason for revert: Broke AOSP\n\nChange-Id: Icdd182baad6a81b8fdbfd862b7eb3aada282f42f\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "26992263865c4b30d733b1cdc0efce0d3db7d5c9",
      "tree": "dcdf65d9af6cd566721cd37282b4c759e818ee42",
      "parents": [
        "4162cd732558f2e4fb1c9bf70da3e87ba23523fc"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sun Jan 20 22:05:52 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nMerged-In: I83dd6878839122e3ea71b7be6f6f312376897d56\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "11029ad02b64c74b8d49eb5e69c4db254e9f3e68",
      "tree": "e67c2ccf2261305299eb5141a3b5e224662c1708",
      "parents": [
        "4e4647077f00c47650d6ecd66cd812073371bd10"
      ],
      "author": {
        "name": "Arun Mirpuri",
        "email": "quic_amirpuri@quicinc.com",
        "time": "Wed Dec 19 20:45:19 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 20 21:32:41 2019 +0000"
      },
      "message": "audiopolicy: Implement API for querying A2DP offload formats\n\nAdd support in AudioPolicyManager to return supported encoding\nformats for A2DP on the primary HAL. Current implementation is\nto query prop defined and convert this to a list of audio formats\n\nBug: 111812273\nTest: make\nChange-Id: Ic3ea72e19aa4c0bd4c156f62e45e6225f9ce6b11\n"
    },
    {
      "commit": "4e4647077f00c47650d6ecd66cd812073371bd10",
      "tree": "db114451fc37f571667f8fab24e88b142f49eee2",
      "parents": [
        "fa66483acb53c575fc476f04bebf0d0463752297"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Thu Jan 10 23:38:46 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 20 21:32:16 2019 +0000"
      },
      "message": "audiopolicy: Add support for hybrid mode on A2DP\n\nAdd support in AudioPolicyManager to select a module,\ndevice or output based on device type and codec.\nImplement hybrid mode with A2DP which enables runtime\nswitching between HALs for A2DP based on offload support\nfor specific A2DP codecs.\nOptimize A2DP active device change and device config\nchange in AudioPolicyManager.\n\nBug: 111812273\nTest: make\nChange-Id: I246d71dd08bacbca6ed9b0012e7d7698bd8a0953\n"
    },
    {
      "commit": "7435e7da371e60bed90909be6cc57a3f111fb6b4",
      "tree": "70b40fae27adde22ca7b1b9f57120fd7957cfc22",
      "parents": [
        "aa1523c14af06a2f213e570d12ce01b71422b26a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 18 02:37:14 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "bf06f7afdbd7019614c9e31ce43301457a3a7d55",
      "tree": "67fd35b19109aa8a9ebb0a5fec14d51486770f79",
      "parents": [
        "1dfd7ba8c05ff5c8a51f69a3042f3870d99463d4",
        "03a6e6a08dbda1c94e0c9ce6fba4a4abd3df6d59"
      ],
      "author": {
        "name": "Paul Mclean",
        "email": "pmclean@google.com",
        "time": "Thu Jan 17 21:34:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 21:34:35 2019 +0000"
      },
      "message": "Merge \"Adding Audio HAL V5: Direction API\""
    },
    {
      "commit": "17dc17828f0aedb037cf974daeb44645f390cb49",
      "tree": "a269ec1665e47843b76ef33fde2ffcc1c57f5e02",
      "parents": [
        "33d6adcebbac541a803a08013db15a84e4b82bcf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "message": "Audio policy: uid device affinity deterministic rule\n\nWhen setting a uid device affinity, make the rules deterministic\n  by applying an \"exclude\" rule on all mixes that don\u0027t reach\n  the devices (existing), but also a \"match\" on the mixes that\n  do (new).\nBug: 111647296\nTest: requires device with routing policy started by CarService\n\nChange-Id: I3bb844156ade75e4b9576c1e18200ca90ce26cf9\n"
    },
    {
      "commit": "bda70da1f0fb32d37abd704ff8618e55661be0a9",
      "tree": "a850374439d404da29938e2b038457926197d826",
      "parents": [
        "abf2929e8d084d2ca99d4d8712abbf31c2cb5178"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 19 07:30:15 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:27:35 2019 -0800"
      },
      "message": "Dynamic audio policies: multi-zone through uid/device affinity\n\nSetting audio device affinity for a given uid augments all\n audio mix criteria that do not route to the given devices\n to exclude the uid.\nAudioPolicyManager: after changing the device affinity,\n check the outputs addressing the devices to re-evaluate\n audio routing\n\nBug: 111647296\nTest: requires device with routing policy started by CarService\nChange-Id: I72de54ae067151fe6ac2ec43b78fe544a9fd9888\n"
    },
    {
      "commit": "03a6e6a08dbda1c94e0c9ce6fba4a4abd3df6d59",
      "tree": "e609e29b32764e6fd970f16c78d3bbee5be401bb",
      "parents": [
        "c2684ac61bdbfd9913cf1361a6436272756bc6d6"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Dec 04 10:54:13 2018 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Dec 20 17:37:55 2018 -0700"
      },
      "message": "Adding Audio HAL V5: Direction API\n\nBug: 119137468\nTest: Testbed app.\n\nChange-Id: I1b3c81079000958da80d36616fe06930d876aac3\n"
    },
    {
      "commit": "77a428b58b1ab5d5f7212d8b1d4dbac20a985018",
      "tree": "0792e71c0e35ec1f442ae18c8f5cbbbc441b951e",
      "parents": [
        "3c3c97ae534870c90f54e8cffc6d7d82ab8ca3da",
        "a9f86651eaaf2f702b3759ec38dbb64ca8858356"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 20 17:58:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 17:58:36 2018 +0000"
      },
      "message": "Merge changes from topic \"more_in_recording_config\"\n\n* changes:\n  audo policy: more info in onRecordingConfigurationUpdate\n  audo policy: add effects to record clients\n"
    },
    {
      "commit": "a9f86651eaaf2f702b3759ec38dbb64ca8858356",
      "tree": "913a55b14107e7f94335bec0ad6705f9557255a0",
      "parents": [
        "c241b0dfc49014087123dae92f7341db8d30d443"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 17:23:11 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 18:05:00 2018 -0800"
      },
      "message": "audo policy: more info in onRecordingConfigurationUpdate\n\nReport more information in onRecordingConfigurationUpdate() callback:\n- For client:\n  - Port ID\n  - Enabled effects\n  - Silenced by policy\n- For stream:\n  - Active effects\n  - Active audio source\n\nBug: 111438757\nTest: make\nChange-Id: I34c3d0ee6251576de7d793bfaa2bc2c34efa2319\n"
    },
    {
      "commit": "f4de6114c20c3b3376806b359d527330f1891826",
      "tree": "6661fb92de4c7f145d0ae7de9d109d8a145601eb",
      "parents": [
        "341dd3bb36c4ceb77c80b8e8db9f0e1d647dc9ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "message": "Do not allow set sample rate when haptic channels exists.\n\nAs haptic playback via audio require sample rate is the same as the HAL\none, sample rate should not be changed after AudioTrack is created.\n\nBug: 121271890\nTest: Manually\nChange-Id: I1549017b3ca8523735190f62f8c9a4fb8b95e000\n"
    },
    {
      "commit": "3c03c8ba1504003f25ee04b49609eb10b20e1bdf",
      "tree": "78956d959c2684a79768a6dffca77bdc7d561dbc",
      "parents": [
        "8dd9d107e9056283bc38c5921cff29c481adc99f",
        "245cdd91559873aeacf21b7c780655ef43c01682"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 22:38:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 22:38:27 2018 +0000"
      },
      "message": "Merge changes Ic5f780de,I3f963307\n\n* changes:\n  Support audio-haptic coupled playback.\n  Add buffer provider that can adjust channels.\n"
    },
    {
      "commit": "245cdd91559873aeacf21b7c780655ef43c01682",
      "tree": "336ec5eaea56659c21e9441c0d2b5a03102b9b32",
      "parents": [
        "dce8f8cc41cb6be63d13ad0099d61807746ff5d7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 07 17:55:15 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:33:47 2018 -0800"
      },
      "message": "Support audio-haptic coupled playback.\n\nWhen trying to play with haptic channel mask, use adjust channels\nbuffer provider to make the haptic channel the same as the output one.\nIf haptic playback is supported, use adjust channel non destructive\nbuffer provider to output haptic data to the end of the sink buffer.\nOtherwise, haptic data will be ignored.\n\nTest: Manually\nBug: 111454766\nChange-Id: Ic5f780de48c1e71de6ba5c4774d1ed2e9c8c51a0\n"
    },
    {
      "commit": "dce8f8cc41cb6be63d13ad0099d61807746ff5d7",
      "tree": "f85faa34c35ce81c45bcbd5bfed3fc93073e37f8",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 10 17:49:31 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:23:05 2018 -0800"
      },
      "message": "Add buffer provider that can adjust channels.\n\n1. Add adjust channels buffer provider, which will expand or contract\nsample data from one interleaved channel format to another. Expanded\nchannels are filled with zeros and put at the end of each frames.\nContracted channels are omitted from the end of each audio frame.\n\n2. Add adjust channels non destructive buffer provider, which could\nexpand or contract sample data from one interleaved channel format to\nanother while not destructing the buffer. Extra expanded channels are\ninterleaved in from the end of the input buffer. Contracted channels are\ncopied to the end of the output buffer. Contracted channels could be\nwritten to an output buffer with certain audio format.\n\nTest: Manually\nBug: 111454766\nChange-Id: I3f963307e73b3f7aa662d4127f78f0c61ac84510\n"
    },
    {
      "commit": "25194a64e0bb77049d279fdb982c02425095ec01",
      "tree": "f3812f7beecd278352111c85e5b684e3937ca4af",
      "parents": [
        "20d51cca2c61b65be88b5bad43e6f363e29373b8",
        "a2b32728760a75352aadf5383e7615afd5bf435c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\" am: 8774dda490 am: e8f69f37be\nam: a2b3272876\n\nChange-Id: Ib7f787d7ca149015badfe75ec2d52f80bde0f952\n"
    },
    {
      "commit": "45d34272dfa8462adda0f11ccfa169c5afa49621",
      "tree": "45450f514f133a91a4746eb6b232c86dc3280806",
      "parents": [
        "cf80f34cc5e8d16d939df21879d770200defaf6e",
        "6012f913f0772cf0b73f379778efc671ce72c557"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "message": "Merge \"Querying capability of haptic playback.\""
    },
    {
      "commit": "6012f913f0772cf0b73f379778efc671ce72c557",
      "tree": "c77bb87b93b7fd9e3ad78532761d7e4ac7cfe9e6",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 02 17:06:30 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 11 16:18:09 2018 -0800"
      },
      "message": "Querying capability of haptic playback.\n\nBug: 111454766\nTest: Manually test\nChange-Id: Ib200d6b8f02354a01cf599a96fb1a9062dcd3050\n"
    },
    {
      "commit": "50fa06cf6196e6235cd24a44e5bf464b28f91a7b",
      "tree": "848bcdc1e9c24817a3e1f05d079ed7f0da0d636e",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: If3d86617594250e2a9ed79c46bf39852a9a723b2\n"
    },
    {
      "commit": "a223769e7767765ba7a546f66887508fbb19f54d",
      "tree": "a24bbadad46856fca743a3d6d31d0c046f55f73f",
      "parents": [
        "7ce82e7ccf47ec5ea00a85a15665eb51edd9b258",
        "a94fbb22404ef26d12fbb3ad0376df15f84f47ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "message": "Merge \"Implement AudioTrack.isDirectPlaybackSupported method\""
    },
    {
      "commit": "4eb58f1f36606ad7af392a920e1d029a5fb1e797",
      "tree": "c1599fda024344eaf6da5e1d33fc410384127550",
      "parents": [
        "5a2048c3095478482a5ac16639514d3a0a214713"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:41:02 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 10 14:10:05 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: concurrent capture\"\"\n\nThis reverts commit df628924e691e01da190c1ac5db173304442e54a.\n\nBug: 120588242\nBug: 111438757\nTest: make\nChange-Id: If58ff2143fdb744678bb84394598104ced01f5b9\n"
    },
    {
      "commit": "df628924e691e01da190c1ac5db173304442e54a",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "4c1ef4b64d113be6ee1106375bd10cdc643e80d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "message": "Revert \"audio policy: concurrent capture\"\n\nThis reverts commit 4c1ef4b64d113be6ee1106375bd10cdc643e80d8.\n\nReason for revert: b/120588242\n\nBug: 120588242\nChange-Id: Iac41f371cb739c54d5ce519232688bebe2285c72\nTest: Launch QSB and capture from mic icon\n"
    },
    {
      "commit": "a94fbb22404ef26d12fbb3ad0376df15f84f47ec",
      "tree": "b4a8052d5ce8726541ba7a25e3f1f449d351acd9",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mzchan@dolby.com",
        "time": "Tue Apr 24 14:31:19 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 05 15:35:35 2018 -0800"
      },
      "message": "Implement AudioTrack.isDirectPlaybackSupported method\n\nThe method checks whether the provided AudioFormat can be played\nvia currently connected output devices w/o SRC or downmixing\nby the framework.\n\nThe implementation methods are called \u0027isDirectOutputSupported\u0027\nto match APM\u0027s terminology.\n\nBug: 120044865\nTest: atest CtsMediaTestCases:AudioTrackTest#testBuilderValidate\nChange-Id: I11769f796c34583fb2641415d2faab00ac526123\n"
    },
    {
      "commit": "4c1ef4b64d113be6ee1106375bd10cdc643e80d8",
      "tree": "203b9b1ca84efc9342514175d616c0a7c22150ad",
      "parents": [
        "973db02ac18fa1de9ce6221f47b01af1bdc4bec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 13 16:46:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio policy: concurrent capture\n\nImplement concurrent capture in audio policy manager:\n- Attach AudioRecord client to already opened input when possible\ninstead of systematically opening a new input for each client.\n- Always allow inputs to start even in case of concurrency.\n- Clients are selectively silenced based on their app state by audio\npolicy service.\n- In case of concurrency on a given input stream, device and source is\nchosen based app states and source priority.\n\nBug: 111438757\nTest: Manual capture tests with solotester and Camera, Assistant and Duo\nTest: CTS tests for AudioRecord\n\nChange-Id: I302710ff545f67361d9aca89e81de40771ce7fb0\n"
    },
    {
      "commit": "973db02ac18fa1de9ce6221f47b01af1bdc4bec2",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "f4a342abd2959904caa18b5a0671e8107581ff24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 20 14:54:31 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio flinger: return port ID as track ID to client\n\nReturn the port ID allocated by audio policy manager instead of the\ninternal track ID allocated by audio flinger when an AudioTrack or\nAudioRecord is created.\nThis information is more useful for logs and allows to associate information coming\nfrom audiopolicy manager with a specific client instance.\n\nBug: 111438757\nTest: Manual playback and capture tests\nChange-Id: Ib467d8fcc34d9a8aa7bcaac0770a741982b847c5\n"
    },
    {
      "commit": "2a2837d0dcc63d834b9ca313bf322f967a989eec",
      "tree": "3fb865132546838d1182caa5515f3e1f83d2d0ef",
      "parents": [
        "e72cb66313a21ecd218f2b9a01491bc1ebbe2c39",
        "ac917aca235ff5170f00c2ee933f41f07a40232d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 30 16:36:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 16:36:19 2018 +0000"
      },
      "message": "Merge \"Add selectPresentation API to IAudioTrack\""
    },
    {
      "commit": "73c3a18dcc23703fa51a550cca9d290f392de1bc",
      "tree": "03fa4f3e45e97b7bb6dfcb8e0031ead5f69a11b3",
      "parents": [
        "f1188418c6220f27ed7ec6491380062c039a7b42",
        "b78763e6098baa33f441abef74d53636f72c6d6e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 28 23:38:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 28 23:38:13 2018 +0000"
      },
      "message": "Merge \"audio policy: receive assistant and a11y service UIDs\""
    },
    {
      "commit": "ac917aca235ff5170f00c2ee933f41f07a40232d",
      "tree": "2927cc6419b7fe615ccdc977224f6f3ed656f58e",
      "parents": [
        "e4eb88fa5fe62a9b6b709fbf2ff26f37acf6db20"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:44:17 2018 -0800"
      },
      "message": "Add selectPresentation API to IAudioTrack\n\nThe Java AudioTrack interface has a setPresentation API. This\ncalls the setParameters API in IAudioTrack. However, this does\nnot eventuate into a call into the android.hardware.audio@4.0\nIStreamOut selectPresentation API.\n\nAdd selectPresentation API to IAudioTrack and call down to the\nandroid.hardware.audio@4.0 IStreamOut selectPresentation API.\nTranslate into calls to setParameters API for legacy HAL\ninterfaces.\n\nBug: 63901775\nTest: compile\nChange-Id: Id634a107f3f93ab18dc80d2bd0af67bda35e859f\n"
    },
    {
      "commit": "b78763e6098baa33f441abef74d53636f72c6d6e",
      "tree": "f9dbf113c768761cfa7b10ebcce917a2b7a2beba",
      "parents": [
        "f32108e7bab9ce2eb8107678c74701d1428a7b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 17 10:08:02 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 26 14:32:41 2018 -0800"
      },
      "message": "audio policy: receive assistant and a11y service UIDs\n\nAdd APIs to communicate assistant and accessibility service UIDs\nto audio policy service in order to implement the new concurrent\ncapture policy.\n\nBug: 111438757\nTest: enable and disable Google Assistant and Voice Access.\n\nChange-Id: Ia804613051edab2ebd57d317b5b7509c98e7c6b4\n"
    },
    {
      "commit": "0248a2a3ae176e4f306dbf3d869792bb93312ed5",
      "tree": "e9f5d8a65fca2a0afc53b2b5b3ebe672b4bf4b05",
      "parents": [
        "2a6038e529574bfa183ab1de1fffd01a1504fc3a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "message": "Fix double track thread initialization\n\nBug: 119870459\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\nChange-Id: I15f314ee5696ead90a09991bfe10e1ae3ff013e0\n"
    },
    {
      "commit": "a60e9a209ed7dbeaa563b3145904038064615432",
      "tree": "997b5121a13729113a1cd6aaf85dfe6f58c40cd9",
      "parents": [
        "c40d87ea8409b23e6326ffe2233e02a99ecfac15"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Nov 15 16:13:36 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 16 17:29:51 2018 -0800"
      },
      "message": "AudioTrack offload: fix EVENT_STREAM_END  not called\n\nIf the track thread is paused, EVENT_STREAM_END will not delivered\n for offload. This event is required for PRESENTATION_END to\n be delivered for Java AudioTrack offload.\n\nBug: 86837964\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\n\nChange-Id: I491cdb0a6faa69e5c37139c0364b5c9079ff1f14\n"
    },
    {
      "commit": "f4158d855b941e5c7ffcc4f119f2bd146986b0c4",
      "tree": "cdd9cc09d90ff6d43ee200233f9fa16e6124f5b6",
      "parents": [
        "0917fc25390c5f362332630e2d980480d1444e0d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 25 12:43:58 2018 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 24 10:46:30 2018 -0700"
      },
      "message": "AudioTrack: new transfer mode for Java offload support\n\nNew transfer mode for java AudioTrack using offload\n  path, where data is provided through the write method,\n  and the callback is used to notify the track owner\n  more data can be written on the track.\n\nBug 86837964\nTest: adb shell clof --source /sdcard/Music/my.mp3\n\nChange-Id: I47c760b7fb8f1431945ca24ff4a26311b63cb761\n"
    },
    {
      "commit": "cab10da0da9d9a991c4b895992b6c0e34d5b8293",
      "tree": "530cf9ac9385f696c31cffd880a4c2c0160966a3",
      "parents": [
        "f577d69b4133139a04dd7b2809c7d77edc5ca898",
        "6ec546dad994d3cc7ffbdf9be42d69811805085a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 20 02:18:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Oct 20 02:18:26 2018 +0000"
      },
      "message": "Merge \"audio: fix AudioTrack and AudioRecord restore\""
    },
    {
      "commit": "c8cecbe19ba6bb09f0374af23b636bf3028e6af9",
      "tree": "a7e0cae7a9513d67c80075a6cc59ade117f78a01",
      "parents": [
        "cf68127174cbbf0cf87a0f4876d178b240b1de4e",
        "de9e33dfcbdabc0227ab47e4a13325b5b410ab39"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "message": "Merge \"Add transaction code to TimeCheck crash\""
    },
    {
      "commit": "6ec546dad994d3cc7ffbdf9be42d69811805085a",
      "tree": "64bb14daa86cb6ae0445bc52564369ca0ced94ae",
      "parents": [
        "66b4c2c74829721f7e12de810b936e5e323a51dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 10 16:52:14 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 11 14:16:09 2018 -0700"
      },
      "message": "audio: fix AudioTrack and AudioRecord restore\n\nAllow retry on failure to reconnected to audioserver when restoring an\nAudioTrack or AudioRecord and do not change state to inactive when\nreconnection fails. In case of failure due to temporary race conditions this will\nincrease the chances of success and avoid ending up in an inconsistent\nactive state if a later reconnection succeeds.\n\nBug: 113109529\nTest: AudioTrack CTS tests and manual playback smoke tests.\nTest: AudioRecord CTS tests and manual capture smoke tests.\nChange-Id: I570724eb46f3a0f830267396aba06297bd37df7a\n"
    },
    {
      "commit": "de9e33dfcbdabc0227ab47e4a13325b5b410ab39",
      "tree": "bf5c5eff11ac61c1c61630a30793fc15d9d376c5",
      "parents": [
        "fd53bf2f59071766f6f2ea925a6718919eac2502"
      ],
      "author": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Wed Oct 10 18:48:33 2018 -0700"
      },
      "committer": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Thu Oct 11 18:52:14 2018 +0000"
      },
      "message": "Add transaction code to TimeCheck crash\n\nWhen there is a TimeCheck timeout crash, the transaction code will be\nuseful for debugging.\n\nTest: Manual run\nChange-Id: I8a93ead7ec7379f51b211ca31c68ec6ec2553afc\nMerged-In: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "afd5101b9e661fb17b8bacf7bc2293aa97088dcb",
      "tree": "c165351a8151b27e1f273ef5b6a75546a01b906e",
      "parents": [
        "b4e880abdcde87ff89937f4f8de819af0cfe371f",
        "1dd2f5bc443e15538271013052d3ed06912ec58b"
      ],
      "author": {
        "name": "Nobuaki Tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Thu Oct 04 19:17:45 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 04 19:17:45 2018 -0700"
      },
      "message": "Merge \"Support to play the various tones as per the Indian standard\" am: 3c5b1b7150 am: 9d0e47f953\nam: 1dd2f5bc44\n\nChange-Id: Iab8837922e54ad6c4af8c340e0ff75cd80418013\n"
    },
    {
      "commit": "3c5b1b7150257e33d4ee14166d577d1d644a31b2",
      "tree": "1deaf090b1cd20b4d608b25b30ad730fcf17d2d5",
      "parents": [
        "0a0cfbd2bef78f26231d9fb53546e7682f9bf4bd",
        "f4a4005adb8340b2883d0b6771bcebac5c9c75b5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "message": "Merge \"Support to play the various tones as per the Indian standard\""
    },
    {
      "commit": "f4a4005adb8340b2883d0b6771bcebac5c9c75b5",
      "tree": "01f9d062e5156a9e8247b535b111c335c09ce611",
      "parents": [
        "db44c5d13b9972a0d0dd177c31259b74bc2e4376"
      ],
      "author": {
        "name": "Nobuaki Tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Wed Sep 12 16:22:17 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Oct 03 12:42:59 2018 +0900"
      },
      "message": "Support to play the various tones as per the Indian standard\n\nTo play the following tones as per Indian standards.\n - Dial tone\n - Busy tone\n - Congestion tone\n - Call waiting tone\n - Ringing tone\n\nBug: 117161543\nTest: Play each tone in indian locale\n\nChange-Id: I6b7a2a5674a79a26fba80f987d2ed6ed555ce4bf\n"
    },
    {
      "commit": "99e9db75039f86a73d1a5052b1e3538ddda20de5",
      "tree": "46f3f12e2748a7f4feae255aedb4a3195d1cd27c",
      "parents": [
        "05fa8856abaa1e050c3c8e6ba97fc8878ed7600a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Sep 14 15:17:36 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 18 15:02:54 2018 -0700"
      },
      "message": "AudioTrackShared: Ensure proper subtraction\n\nOptimizing compilers may skip masking if the result of\nsubtraction is assigned to larger integral type.\n\nTest: long term test with 64 bit audioserver\nBug: 113763960\nChange-Id: Ida405a5a26e819891e7da7f29ebd0b78d2de1fc5\n"
    },
    {
      "commit": "4c94e03cac24f172e8367e351b66adf709b2cee6",
      "tree": "0115b73acebf2f3165e1ce20d7bdb65cab08136b",
      "parents": [
        "61c80f1f4a07886a01abada34beefed9db1bec4b",
        "51e09f9cae7b3195a2799b876eea8949faae912c"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in libaudioclient.\" am: 058002e0e3 am: 8a7c2de43f\nam: 51e09f9cae\n\nChange-Id: Ifcae7a82849a698a2406279e18c74be454c596b2\n"
    },
    {
      "commit": "ffe3558cb1024b39ce1e0e1dc2fb20bb3663299a",
      "tree": "05195cdd37c3c2c68aa26a66b5af1afb823c65ec",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 13:59:28 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:45:53 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in libaudioclient.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: Icafaff606364fe7bffaad1e9c2e763c444ea999c\n"
    },
    {
      "commit": "d975119d1ad25c64faff476b48f3d39b29244bc4",
      "tree": "9ab084833820d5343d8453ab66d5aea03f6429a9",
      "parents": [
        "6d853b134bef4bd750439023664d68542f27bb10",
        "ace588cc1e78f3a83a0e410113009fb31a0f9af7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Sep 15 01:38:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 15 01:38:23 2018 +0000"
      },
      "message": "Merge \"nblog: split NBLog.cpp into multiple files\""
    },
    {
      "commit": "ace588cc1e78f3a83a0e410113009fb31a0f9af7",
      "tree": "7b82d5a4892f8ea53620c937927b6c9eb363cdb6",
      "parents": [
        "c5fee0a8854f5decd3b567d2383cd38f0aada4f4"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Sep 12 11:44:43 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Sep 14 15:57:50 2018 -0700"
      },
      "message": "nblog: split NBLog.cpp into multiple files\n\nNBLog.cpp was deleted and split up into Entry.cpp, Merger.cpp,\nReader.cpp, Timeline.cpp, and Writer.cpp. NBLog.h was split up into\nEntry.h, Events.h, Merger.h, Reader.h, Timeline.h, and Writer.h. NBLog.h\nnow includes all of these new headers except Merger.h, which is managed\nexclusively by MediaLogService.\n\nOther changes:\n- changed NBLog from a class to a namespace\n- changed NBLog::thread_info_t.type to enum and replaced magic numbers\n- fixed some fragile build dependencies in libaudioclient and medialog\n\nNo other changes were made, and all functionalities that existed prior\nto this commit remain the same.\n\nTest: build, dumpsys media.log\nBug: 68148948\nChange-Id: I1ce6dcb7b30d004f90584edfad7103a89f7bab0c\n"
    },
    {
      "commit": "6b1c612162ce290c54e0b0a418e1791410f95d47",
      "tree": "51f1213fa8c534e8f403c40a1b6f2f34b7b7fa39",
      "parents": [
        "fb8ede2a020e741cb892ee024fcfba7e689183f2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:09:07 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:49 2018 -0700"
      },
      "message": "AudioRecord: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: Ifa9c05c0df66e372e773b5149a0f1ed49a21ef3a\n"
    },
    {
      "commit": "fb8ede2a020e741cb892ee024fcfba7e689183f2",
      "tree": "702e8497e892eaa0d4d8fb7d28ec78fc2762a1f2",
      "parents": [
        "9d84af54244f7ff086afdcc6e477fe4d04874652"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:03:24 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:36 2018 -0700"
      },
      "message": "AudioTrack: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: I7c74af8962f7d3b72a7b843df906c54f79f6f009\n"
    },
    {
      "commit": "f8219e1b52a2aa634176e9dcf7822f526a82b852",
      "tree": "14ed5d5d11af36880f87a3d856b8f55b9cbb671a",
      "parents": [
        "6e5d6f6f109f16ac36bfd90acb198156f8ba13c4",
        "9744ab45349a323ea1d9bf19d6cf05dd0eb04433"
      ],
      "author": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Wed Aug 22 04:22:18 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 22 04:22:18 2018 -0700"
      },
      "message": "Merge \"Fixed audioserver crash in monkey test\" am: db44c5d13b am: 5e64d79404\nam: 9744ab4534\n\nChange-Id: I9774f93056bcbffb4032115eedcbb719874da450\n"
    },
    {
      "commit": "db44c5d13b9972a0d0dd177c31259b74bc2e4376",
      "tree": "9ce354b753e2018a2c42f2190d659cc1118e8c2c",
      "parents": [
        "1949fae278542569c538282a11e65cbe54c45618",
        "69ec67ef5da3adf788956ea5cc8398110fb6030d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "message": "Merge \"Fixed audioserver crash in monkey test\""
    },
    {
      "commit": "333c6b74cb1806f5732344e997861c80e99407d4",
      "tree": "7b830b6d01870c8b3ac2cd0a472bf37c8023bb9d",
      "parents": [
        "2ff16ece16b54d5ffc05f58cebac794c8e153d8f",
        "d1f9e1856196463842e2149c8a75a618ae133b39"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 18:27:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 18:27:05 2018 -0700"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\" am: d9f80435b6 am: c852559529\nam: d1f9e18561\n\nChange-Id: I612fb5d62488da8f658c33ebda5ab28877eccb9d\n"
    },
    {
      "commit": "2ff16ece16b54d5ffc05f58cebac794c8e153d8f",
      "tree": "619880fd47f22d12ff1f3c8947e35f0831e22ba8",
      "parents": [
        "6b8cf11049740ef0aab5240515fb26b7933a43b2",
        "4772bfeac8ca5aab7c6a573015c4c1aba5d2d94e"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Mon Aug 20 18:24:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 18:24:40 2018 -0700"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\" am: eb6c38a9eb am: aadc33659e\nam: 4772bfeac8\n\nChange-Id: I9a9cfb2d8b4756a9b484ec4698a94a85d2a7383a\n"
    },
    {
      "commit": "d9f80435b643029819635d15416fcde0b9998829",
      "tree": "b508fd5e4958c104c7d960da765773b3621f16be",
      "parents": [
        "eb6c38a9eb693c1f5035aaece4396d37810ced65",
        "bca742946f0c20e4227b23f2b52c43350e73ca5c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\""
    },
    {
      "commit": "eb6c38a9eb693c1f5035aaece4396d37810ced65",
      "tree": "57e10278b5b1637e17367d014b16394ad57876b3",
      "parents": [
        "1e1e06ba5fec2db825aaaa59fa566aa718df5291",
        "6e8bf981aca33625e133ab8f9daafd1652b0eced"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\""
    },
    {
      "commit": "bca742946f0c20e4227b23f2b52c43350e73ca5c",
      "tree": "9400059ddc2f410c677d6bb66ac32f925bc49737",
      "parents": [
        "51d361e77c038003d7aeab39e9d91ffb31332c1e"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Aug 10 16:06:07 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 16:01:29 2018 -0700"
      },
      "message": "Fix or suppress some google-runtime-int warnings.\n\n* Use time_t for tv_sec type.\n* Use \u0027auto\u0027 to avoid explicitly use of \u0027long\u0027.\n* Use (u)int16_t instead of (unsigned) short.\n\nBug: 112478838\nTest: build with WITH_TIDY\u003d1\nChange-Id: I023e579b071688731064e51dc94f404274cd59e2\n"
    },
    {
      "commit": "2aef6ece234601519899cd863347304a06c22e8b",
      "tree": "aa3e527e081a796fa4a7cc3e795859e633adf902",
      "parents": [
        "05435244e8c93c2fcf9ea6aefdc09854c7798e73",
        "24628310591c3b4d9701ebad9df7f5750dc599b2"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Mon Aug 20 19:47:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 19:47:35 2018 +0000"
      },
      "message": "Merge \"Add dynamic source default effects\""
    },
    {
      "commit": "b40f1cf06c8949389e70ddf1e3367a1ac25b6034",
      "tree": "5fb1a6cf44e4b67e2be52b57e5270064432f2916",
      "parents": [
        "0c167267e1dd521a1288bd1746c42b0680ab5b88",
        "e21535e72848b507f899c84d134086295a22ed36"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Thu Aug 16 20:50:18 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:50:18 2018 -0700"
      },
      "message": "Merge \"Prevent object of AudioEffect be deleted until construction finished\" am: 637ee654cf am: 1b201ee707\nam: e21535e728\n\nChange-Id: I3a4e538c2e0b89be867f9d145acc0988fb697339\n"
    },
    {
      "commit": "24628310591c3b4d9701ebad9df7f5750dc599b2",
      "tree": "84cad83437f52596eec9ff5a90763550e7bb0f48",
      "parents": [
        "edf39faeee8fbd0743e25ae7071ebcf0418e6c50"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Mon Aug 13 15:01:09 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Thu Aug 16 10:53:29 2018 -0700"
      },
      "message": "Add dynamic source default effects\n\nAllows runtime modification of what effects should be default\nattached to sources of different types. The core functionality\nwas already in the AudioPolicyEffects system, this allows\nthe dynamic modification of the lists.\n\nBug: 78527120\nTest: Builds, manually tested an app adding a source effect,\ntested both media on the specified source and on a different source.\nAlso tested by Android Things integration tests.\n\nChange-Id: I4da15787278c79d80043e172f4f81d3b2a139f44\n"
    },
    {
      "commit": "3f51b54ddc8440f4f4beb57e18202ba297356cf9",
      "tree": "d9c1225a5310362ba47e7673afe9af1c5afe3bcb",
      "parents": [
        "8be94e995403a65724c5a75e3084bc41eb69fb22"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Thu Aug 09 09:14:31 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 14 21:50:00 2018 +0800"
      },
      "message": "Prevent object of AudioEffect be deleted until construction finished\n\nThe object of AudioEffect may be deleted when construction ongoing,\nif the method of mIEffectClient invoked by the proxy in audioflinger.\n\nIf mIEffectClient cleared in the destructor of AudioEffect before IEffect\nlinkToDeath to mIEffectClient in the constructor of the AudioEffect,\nthe aforementioned case may lead to an abort, i.e.,\n\"Abort Message: \u0027linkToDeath():recipient must be non-NULL\".\n\nTest: monkey test\nChange-Id: I5fe8227b8528fb9fb9c9a1e636bd4dc0cc22c2cf\n"
    },
    {
      "commit": "6e8bf981aca33625e133ab8f9daafd1652b0eced",
      "tree": "f2d0795e2315bd37e6b598394d042e5068ac3120",
      "parents": [
        "25af42f8bff5a973205bbc36d8617a133e908c51"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Jun 09 16:17:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Aug 08 13:04:48 2018 +0900"
      },
      "message": "Prevent old callback events when track is recycled\n\nWhen a track is reused from SoundPool and started again, the\nprevious callback events could be done after track started,\nthen the new playback will be stopped unintentionally.\nClear the old cblk flags when recycled track is started again\nto avoid triggering unexpected callback events.\n\nBug: 112269355\nTest: Playback with SoundPool frequently\nChange-Id: I111b085d08b73c333fbb0fc2896efe1c013c584c\n"
    },
    {
      "commit": "69ec67ef5da3adf788956ea5cc8398110fb6030d",
      "tree": "c8e402e41171ce32ee43ec1b62d629904b9918c7",
      "parents": [
        "9d431ceffaad7334f61971abdee8e8436ffc2447"
      ],
      "author": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Sun Jul 22 22:28:29 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 07 00:17:33 2018 +0800"
      },
      "message": "Fixed audioserver crash in monkey test\n\nEnable log function in ToneGenerator.cpp, then ToneGenerator\nplays consecutively many times and do not stopTone.\n\n\"lpToneGen-\u003emNextSegSmp*1000\" will go beyond the scope of unsigned\nint, and audioserver get crashed.\n\nTest: Enable log function in ToneGenerator.cpp, alarm notification is\nplayed when the phone is online. ToneGenerator plays consecutively.\nDo not stopTone. then we get audioserver crash.\n\nChange-Id: I073590088fccb32a73353d14970dc89441045663\n"
    },
    {
      "commit": "2a5675885641ac73b7e08e582f7889351c50fa4f",
      "tree": "b6f032fa829d2a188b723df4efc0e5c08f5cd2da",
      "parents": [
        "707225ae85ab7c84edefb480fe03445866f60739",
        "b2fe78f72435f475fad855d20c1ef0309e392b8f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "message": "Merge \"IAudioFlinger: fix early return in createEffect\""
    },
    {
      "commit": "b2fe78f72435f475fad855d20c1ef0309e392b8f",
      "tree": "95ce3c80168218f1e0c18eda061980329d953dde",
      "parents": [
        "c74e507ea7742da83d97768b332b17dcea60cfc0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "message": "IAudioFlinger: fix early return in createEffect\n\nBug: 112161565\nTest: make\nChange-Id: I7056ed1a3454c7e0fbe692029f75fe5b50c4c42f\n"
    },
    {
      "commit": "433722eeb72ab11bb945664fa939cf7ef737af6d",
      "tree": "194eab009f7fad2010a5baa3c82b1a497d4543e3",
      "parents": [
        "5c00d01c85430178d19f6266f1bc5c94a29853c1"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:25:22 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Thu Aug 02 11:34:36 2018 -0700"
      },
      "message": "Add dynamic stream default effects\n\nAllows runtime modification of what effects should be default\nattached to streams of different types/usages. The core functionality\nwas already in the AudioPolicyEffects system, this allows\nthe dynamic modification of the lists.\n\nBug: 78527120\nTest: Builds, manually tested an app adding a stream effect,\ntested both media on the specified stream and on a different stream.\nAlso tested by Android Things integration tests.\nChange-Id: Ie0426b17ff7daece58b8c85d72fbef620844325b\n"
    },
    {
      "commit": "5c00d01c85430178d19f6266f1bc5c94a29853c1",
      "tree": "652dbc8b4f49e1e8b384531c118dd0da3dd18a59",
      "parents": [
        "2046ec756ee59acc4cfa1d52eb97aaa84efc9754"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jun 26 17:09:11 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:28 2018 -0700"
      },
      "message": "Add helper method to convert usage to stream type.\n\nAdds audio_usage_to_stream_type method to aid in converting\naudio_usage_t to the legacy audio_stream_type_t.\n\nBug: 78527120\nTest: Builds\nChange-Id: I411bb687d0f46b82afef3a2e9ac6a974f922da91\n"
    },
    {
      "commit": "2046ec756ee59acc4cfa1d52eb97aaa84efc9754",
      "tree": "352eca0b14dc5e4a368f0475df975ad431515d9d",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:00:55 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:12 2018 -0700"
      },
      "message": "Update getEffectDescriptors() to include type\n\nAllows getting effect descriptors by type or uuid,\nnot just by uuid.\n\nBug: 78528249\nTest: Builds. Manually tested that an app playing audio with an effect works.\nChange-Id: I9d339a7d6d81161065e1adaf427dd2d3430436c2\n"
    },
    {
      "commit": "3e6c7e15913a812b8658504105100063d57d1d6e",
      "tree": "2ec1571636c46201df600aa9c25f57a727617b48",
      "parents": [
        "f344afa981e537b5f354352284272a8a51cf6759"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 17:09:23 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 11:34:53 2018 -0700"
      },
      "message": "audio policy: refactor HW audio sources\n\nRefactor management of hardware audio sources to make use of\nClientDescriptor class:\n- HW sources are now tracked by port ID and not audio patch handle.\n- startAudioSource() and stopAudioSource() APIs are updated to use\naudio_port_handle_t as source identifier.\n- AudioSourceDescriptor class is deleted and replaced by\nSourceClientDescriptor class deriving from TrackClientDescriptor\n\nTest: make.\nChange-Id: Ie418b566519a591f036b538a77319f8e30aa99a8\n"
    },
    {
      "commit": "c3fd2a4396d692d9940b09e7a933b53bc808daab",
      "tree": "767d633268e55ffc09b7bafe1257ce7fa7f4fdfd",
      "parents": [
        "c9932fb7c3fa68e3a56e44346638ce93400d6c62",
        "39b09b52e313e89c3493927b379d2e256bf04bd9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 23:19:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 23:19:27 2018 +0000"
      },
      "message": "Merge \"audioserver: log system event for binder timeouts\""
    },
    {
      "commit": "d7fe086d3b45f088083170006367dfc4246f70b0",
      "tree": "fa89edfbebbd2cffdccc0ab6f01caa9a06d02390",
      "parents": [
        "b05e9b139f8cc5c20f7e94d0a9cf2f7430b52cf2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 14 16:48:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 17 13:02:28 2018 -0700"
      },
      "message": "audio policy: refactor audio playback APIs\n\nRefactor audio policy service APIs controlling audio playback (startOutput, stopOutput, releaseOutput)\nTo allow finer grain control per AudioTrack client.\n\nTest: AudioTrack CTS test. manual test of playback use cases.\nChange-Id: I49a681f3c2a8211e524824993049b24d8086376d\n"
    },
    {
      "commit": "39b09b52e313e89c3493927b379d2e256bf04bd9",
      "tree": "04e64f327c09b0d3344884d59c35ff520c751e3e",
      "parents": [
        "cd56a1c2a0adcd21aad3a64c761aa3562d915be1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 12:24:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 09:02:26 2018 -0700"
      },
      "message": "audioserver: log system event for binder timeouts\n\nAdd event logging in case of audioserver watchdog to help\ncollect statistics.\n\nTest: make. Simulate watchdog and check events in logcat.\n\nChange-Id: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "885957513e8e86453bac323de6f6e562cc174050",
      "tree": "79c388ecd0f7587502770dd427ecde92260c3b98",
      "parents": [
        "2a4e16168061c0516c48b93450917eede7723c44"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:21:47 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:23:22 2018 -0700"
      },
      "message": "AudioTimestamp: check zero sample rate in latency computation\n\nTest: compile, no material difference\nChange-Id: I27a49ee56a16cec6937ca493ba4b1fbe0bb4121e\n"
    },
    {
      "commit": "2a4e16168061c0516c48b93450917eede7723c44",
      "tree": "059bb279ffacafb9e120b1fbb1e3b49a749b2781",
      "parents": [
        "1ee5077f7b6a0129492494aa55f92089c4cc2049"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:06:09 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:17:11 2018 -0700"
      },
      "message": "AudioTrackShared: Move framesReadySafe to ServerProxy\n\nAllows common use for latency computation.\nImplementation for AudioRecordServerProxy added.\n\nTest: audio sanity, subsequent latency tests\nBug: 80447764\nChange-Id: Ib53181cdced16606bf268769a04bd52c689d89d3\n"
    },
    {
      "commit": "f4c9c2591eca3d672e20ef428c787bb0054efc7d",
      "tree": "37b417c7880b047005a2a6f0b0ebcbac1e8fdd83",
      "parents": [
        "d85c6127ae547daa9051abda435ca4fe2cb2d624"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 29 20:01:40 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 29 20:01:40 2018 -0700"
      },
      "message": "AudioTimestamp: toString should be const\n\nTest: compile, no material difference\nChange-Id: Ie97d15a4010150202e833603ebdd4289131de87d\n"
    },
    {
      "commit": "f6ab58dfbc394e88115eb1483aaf47db91279981",
      "tree": "3a1c63e4a0e66fcb960201ec9852cc8c7e8dc8c0",
      "parents": [
        "59fef32845e5fec2f5c97c9637965b8c3ca24a6f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 25 12:50:39 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 25 14:03:16 2018 -0700"
      },
      "message": "AudioFlinger: Add latency measurements from timestamp\n\nReplaces main and aux buf from track dump.\n\nBug: 80272001\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: I5d6565410e652ec7fc6701b171d299dea9f7bc3e\n"
    },
    {
      "commit": "298e1b3db0f94396249933c823b6ff55cf8fc1cc",
      "tree": "8deeed6f3a7001d40440a130e9f377ec3fb59a89",
      "parents": [
        "868c0a9e91df17dcad52b5a0dcacc51205dd8f46",
        "4ef19fa450e8b523741a22fabee8f62691abec37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "message": "Merge \"Update audio permission checking\""
    },
    {
      "commit": "4ef19fa450e8b523741a22fabee8f62691abec37",
      "tree": "5d0eaaf73cebe029d1d8dd935d5c6fddb12ee70f",
      "parents": [
        "ab7ef300b74904bce6c5c810d9e5679abfa582e6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 17 18:11:55 2018 -0700"
      },
      "message": "Update audio permission checking\n\nChange captureAudioOutputAllowed to check client pid.\n\nCheck calling uid with AID_AUDIOSERVER instead of calling pid with\nown pid. This is consistent, and works if AudioFlinger and\nAudioPolicyManager exist as different processes.\n\nRemove getpid_cached since getpid() is very fast. This removes\nany initialization issues.\n\nReplace getuid() with AID_AUDIOSERVER to remove ambiguity of\nmultiple native audio services for multiple users. Only\none exists regardless of users.\n\nDo not use multiuser UID checks for certain native services\nthat do not spawn for multiple users to prevent accidently exposure.\n\nMove permission checks to use ServiceUtilities for control and\nconsistency.\n\nRename isTrustedCallingUid to isAudioServerOrMediaServerUid\nso that permission check is explicitly known to caller.\n\nUpdate MediaLogService to use ServiceUtilities.\n\nTest: Basic sanity\nTest: AudioTrackTest, AudioRecordTest, SoundPool, SoundTrigger\nBug: 79485140\nChange-Id: Ib8ccb36929a9b4806c01626f32fa023a046d6020\n"
    },
    {
      "commit": "b1410279236c35e05edfb7aa96dec563759d073e",
      "tree": "7228325d07710a7366a5601b11e974b2f9dfdd02",
      "parents": [
        "18a64dc9e1bdb6f0bf80a76b86b3ca96ed5be333",
        "7221451768a69fa5bc8dbbff8ea76af47d3ea70a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "message": "Merge \"audiopolicy: Optimize A2DP codec config change\" into pi-dev am: 0ba1ae398e\nam: 7221451768\n\nChange-Id: Iab6dde9d368f6647aeb1eab49dc7b45a6b96f756\n"
    },
    {
      "commit": "3432e0439d3b09756f125dfa734951c654d63baf",
      "tree": "a5ccde7855da94bf284d302e61adf0d155f0dcfa",
      "parents": [
        "5eb9d967e81ace00d96ab50b9264b25560e9df1d"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Fri Apr 06 14:22:15 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 11:18:25 2018 -0700"
      },
      "message": "audiopolicy: Optimize A2DP codec config change\n\nHandle A2DP codec config change in audio HAL without\nclosing / re-opening outputs or invalidating streams\nfrom AudioPolicyManager.\n\nBug: 79476124\nTest: music playback over BT A2DP\nChange-Id: I87263da32815a4d4f6273068ef0b2a5b93c73b75\n"
    },
    {
      "commit": "f38ae75e82876fa231cc55bca761e6e22ede1867",
      "tree": "41c05c6b412169df2cf5c392684f27b32f974803",
      "parents": [
        "8bc70f7fc17d70e3d3be44d55e17c827fb6e2fb1",
        "0e66c708f9afc27195d6854977f70f070ba1e46b"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev am: f824853eab\nam: 0e66c708f9\n\nChange-Id: If0fb97fcf33cb8b1b712238102d17f2c84c24f38\n"
    },
    {
      "commit": "f824853eabf8eab483de7387c001493dda63966b",
      "tree": "2d56a1a846f7adf1e25a7cf4465d34d648cd861a",
      "parents": [
        "625e3020f8c070c8d8449af1bdaeaa002c11cc03",
        "817729095966c338615a8a791d2dbf774fc034ef"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "2b993d08ac72b63227fdba3f5286e296673a3adc",
      "tree": "4bc58b804dac213ec133488465bd52ee3bc5f8ea",
      "parents": [
        "685faa4be5ffdb61e8508a76931bfcbda1781ee7",
        "c99607b99337028277ee2dffbb1b92ec8b51944f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 16:35:59 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 09 16:35:59 2018 -0700"
      },
      "message": "Merge \"audio policy: re enable setForceUse for system apps.\" into pi-dev am: fb4e361a9e\nam: c99607b993\n\nChange-Id: If78c24dc339365c9a232b10727e58decf35eaaa5\n"
    },
    {
      "commit": "fb4e361a9e49651b30c1d023ae2619143ae62665",
      "tree": "ad37800ae4377f1160ed07acae65c131ce753206",
      "parents": [
        "725128d79e5cd98cc3f289586a3a4b4d4619ec6f",
        "e17378d11b275daecd20ff840bcb7d275b6801bf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "message": "Merge \"audio policy: re enable setForceUse for system apps.\" into pi-dev"
    },
    {
      "commit": "e17378d11b275daecd20ff840bcb7d275b6801bf",
      "tree": "3f49ff9153c5bd7be9d17e38532efcfc0d98cc1a",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "message": "audio policy: re enable setForceUse for system apps.\n\nSome system apps (not having system AIDs) still need this\nhidden API due to lack of better option for media use case routing.\n\nAdd protection by privileged permission MODIFY_AUDIO_ROUTING instead.\n\nBug: 79475856\nTest: manual regression for music playback over speaker and bluetooth\nChange-Id: Icaa585a9fa4c043c291f24c9bab4a93f02406955\n"
    }
  ],
  "next": "be6569b3956e5d8405d42323eb5e690820fc2475"
}
