)]}'
{
  "log": [
    {
      "commit": "318b26e722112462f93df797bf47ca3dabc80048",
      "tree": "4880f2bc24b40dcf88202ae1a2423b4dc22fbc4b",
      "parents": [
        "71124db6de8b9839f71fe60830524c52b7c4b645",
        "c89c8dc5c05da392f3e6840fc909fc08c7e82978"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 17 23:48:43 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 17 23:48:43 2019 +0000"
      },
      "message": "Merge changes Idf19827e,Ifcada098\n\n* changes:\n  MediaMetrics: Add unit tests\n  MediaMetrics: Update to use STL containers\n"
    },
    {
      "commit": "c89c8dc5c05da392f3e6840fc909fc08c7e82978",
      "tree": "b09d5f0958a768588c6a7f78026b99ea6644001d",
      "parents": [
        "17dbaf280698e0a07c1391784e1045cf4d8d9d37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 16 17:48:21 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 17 13:45:41 2019 -0700"
      },
      "message": "MediaMetrics: Add unit tests\n\nDocument some interface differences.\n\nTest: mediametrics_tests\nChange-Id: Idf19827e79136dcca6522e6df53e28e3ea4a2231\n"
    },
    {
      "commit": "5b9f07a21bfa0d8f3e44a6e64d877c944bb4429f",
      "tree": "fcdda2273ad84f8f20e3e8e0f48897341e6a04df",
      "parents": [
        "935876110cb820240fcc7ad4a3ada0c1e8cb18e3",
        "c3af31b8f1a7bac5d3e3c953702c8faec3cd55e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 16 23:29:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 16 23:29:23 2019 +0000"
      },
      "message": "Merge \"Implement DrmSessionManager w mediaresourcemanager\""
    },
    {
      "commit": "935876110cb820240fcc7ad4a3ada0c1e8cb18e3",
      "tree": "21d6f0b632ed473e3e4f361388984aa10990b3aa",
      "parents": [
        "58a25b54c7247c0e39ce156e4fbeebc0253ee6f6",
        "3686203afbfa2e3a59255a9280e3f9175d3fdd7c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 16 22:54:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 16 22:54:39 2019 +0000"
      },
      "message": "Merge \"Propagate sample rate to static audio track\""
    },
    {
      "commit": "17dbaf280698e0a07c1391784e1045cf4d8d9d37",
      "tree": "8d59ae7547792d26af41062a00615f6f45167dc0",
      "parents": [
        "dbfd6388dd4618c9a387790ae0e7dd591c7f3d8d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 11 14:06:31 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 16 15:08:58 2019 -0700"
      },
      "message": "MediaMetrics: Update to use STL containers\n\nTest: dumpsys media.metrics sanity\nChange-Id: Ifcada098e755ef3d679715ed23fab9d793ebde3e\n"
    },
    {
      "commit": "b6971410f06bf229b383d27ac8b46fd03e3d8266",
      "tree": "ab1f6591778649a085756a9c277241dab4d88913",
      "parents": [
        "b9c62a552a4ed4374e19cb9a60ff6bc41b258f5c",
        "9a3361e4c6bb01db24c135921b0891e917f71419"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 16 21:16:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 16 21:16:10 2019 +0000"
      },
      "message": "Merge \"Clear up bit mask usage in audio policy.\""
    },
    {
      "commit": "33e8ef86ecfa90f9d41ab700c6f9f5e2a19c97a1",
      "tree": "fea40195e0d0e02860d709b7802f926e9f5cff70",
      "parents": [
        "4bebef8d593f62a5ee80cab04167f4a3ba3722d8"
      ],
      "author": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Fri Sep 27 09:20:42 2019 -0700"
      },
      "committer": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Mon Oct 14 10:53:27 2019 -0700"
      },
      "message": "cameraserver: Avoiding deadlocks while calling getSystemCameraKind()\n\nThe following scenario can occur:\n\n T1 serving Client A\u0027s disconnect() call:\n   T2 : serving Client B\u0027s connect() call\n     T2 : CameraProviderManager::openSession() locks mInterfaceMutex and waits on open() HAL\n          interface call\n       T1: updateStatus() locks mStatusListenerMutex\n         T1: CameraProviderManager::isPublicallyHiddenSecureCamera() / getSystemCameraKind() waits\n             on mInterfaceMutex\n           T2: while waiting on open(), gets a torchModeStatus() callback from the camera HAL\n              T2: onStatusChanged()\n                T2: broadcastTorchModeStatus() which waits on mStatusListenerMutex\n\nAs a result there\u0027s a possible circular hold and wait between T1 and T2.\n\nWe cache the system camera kind in CameraState. That doesn\u0027t completely\navoid having to hold mInterfaceLock while calling getSystemCameraKind in\nCameraService (cache updates), instead it reduces it. We instead need to\nhold mCameraStates lock which has a smaller scope.\n\nBug: 141756275\n\nTest: CTS\nTest: GCA (sanity)\n\nChange-Id: I4a697c1eaccc3603007be4a595febea981fbeb64\nSigned-off-by: Jayant Chowdhary \u003cjchowdhary@google.com\u003e\n"
    },
    {
      "commit": "9a3361e4c6bb01db24c135921b0891e917f71419",
      "tree": "3ee2499fd3e267607c9ae56f120687c4bbb5d67b",
      "parents": [
        "1865ec9e8a38506e2c7062793f39113f98da0543"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 11 17:33:15 2019 -0700"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "1865ec9e8a38506e2c7062793f39113f98da0543",
      "tree": "73157a7e89449933e9821e3de0f8062d4f150798",
      "parents": [
        "d373b0efa176f1639a860d688d0dcca3460acdb5",
        "cc34ecf2d16b64a577359cb22e37e29421c67fbf"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Oct 11 21:20:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 11 21:20:03 2019 +0000"
      },
      "message": "Merge changes from topic \"audio-histogram\"\n\n* changes:\n  aaudio: test audio_utils::Histogram\n  aaudio: add histogram to clock model\n"
    },
    {
      "commit": "d373b0efa176f1639a860d688d0dcca3460acdb5",
      "tree": "0e8cc76ab9c2eb824b9519e6ff9e64b9c4752133",
      "parents": [
        "c31ffb4af68a956225bdde1ec845f48d31c97f4f",
        "55766c4a99f4af1a09b66512b71931e48040db34"
      ],
      "author": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Fri Oct 11 10:58:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 11 10:58:26 2019 -0700"
      },
      "message": "Merge \"Camera: Set input timestamp before returning depth jpegs\" into qt-qpr1-dev am: ca7582109d\nam: 55766c4a99\n\nChange-Id: Ic6b22ffe6a2b7186673edc8fe79c10374c2f7b4a\n"
    },
    {
      "commit": "55766c4a99f4af1a09b66512b71931e48040db34",
      "tree": "2a1ce8bf091af7cf9883e7987ad8f4a05ce0994a",
      "parents": [
        "7d6446db9a810bbc172087c51452887d414ab108",
        "ca7582109dd529eb80dff3d6135a20950a9e3b47"
      ],
      "author": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Fri Oct 11 10:53:25 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 11 10:53:25 2019 -0700"
      },
      "message": "Merge \"Camera: Set input timestamp before returning depth jpegs\" into qt-qpr1-dev\nam: ca7582109d\n\nChange-Id: I031a488aba1f745014170340cddeb9ca6d2ab8d9\n"
    },
    {
      "commit": "ca7582109dd529eb80dff3d6135a20950a9e3b47",
      "tree": "5d9a5d5c6e225998ae0a1a05f819e662b567f851",
      "parents": [
        "b5dd7ae0b90cf66e68680c3f8064f78a23675f36",
        "90a839f6611a7e4ffd6c5af35ba0f16e88b9e2bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 11 17:27:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 11 17:27:11 2019 +0000"
      },
      "message": "Merge \"Camera: Set input timestamp before returning depth jpegs\" into qt-qpr1-dev"
    },
    {
      "commit": "e0d004fe12fc2535d62d52bea0666b690ba057b0",
      "tree": "a577aaf84c4c00e621d651077127352574dd8aeb",
      "parents": [
        "7db9e2b272f63641a54be1aaedd2e41d9bf0c0e2"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 17:00:19 2019 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n"
    },
    {
      "commit": "0bf9cf4f7c5e3b371b33fdcb53ef1b877582fd8b",
      "tree": "574d9c6f4532e6b4182641e1668bed629c96898e",
      "parents": [
        "a7eb3da87e5205bee31b12c634eff4c8508b13b6",
        "8f680d3582b545bb99410c0f00591f094c1b02d7"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 09:34:34 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:34:34 2019 -0700"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\" am: bb3c777e40 am: 6252c394be\nam: 8f680d3582\n\nChange-Id: I674fa62c01471433e7316c2aa28d16b81eaafa43\n"
    },
    {
      "commit": "8f680d3582b545bb99410c0f00591f094c1b02d7",
      "tree": "d916bdab05efc25a93aa41b27a47e1d561f053a5",
      "parents": [
        "92bb8155044980052112b2d02b2ff7ed68615203",
        "6252c394beff4af6a2007a285a72d3080dcf0646"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 09:28:23 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:28:23 2019 -0700"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\" am: bb3c777e40\nam: 6252c394be\n\nChange-Id: I2c4aa423fe54a0f072f1a995c53b1538104ba4b6\n"
    },
    {
      "commit": "0a632c924b1f3c3a4a7f2144d6d92e5dcfdc8327",
      "tree": "8a8f2c862771be94e86d5df7ddfb29da9ca53d0c",
      "parents": [
        "f1056773809f5c9a5d4142941c5073854620ff82",
        "a7eb3da87e5205bee31b12c634eff4c8508b13b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 09:15:24 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:15:24 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\" am: d20b5c7d6f am: 7f51413ee0 am: 92bb815504\nam: a7eb3da87e\n\nChange-Id: I41949090ba43c6fe16126580c4ea10677a942d87\n"
    },
    {
      "commit": "f1056773809f5c9a5d4142941c5073854620ff82",
      "tree": "3394bcfbcb4649a32c2a051cd847254cb08882da",
      "parents": [
        "11d5ff58b7b630e77fabed449b4c9c83751c22c7",
        "3168a7d111d21e0a66e9149428b4fcec46f6dbb9"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:15:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:15:17 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp am: 5818b453da am: a9122279e0 am: cca89a4b26\nam: 3168a7d111\n\nChange-Id: Ic1cea6e8b4e43a49022605bd0d3e8c9e71c866d5\n"
    },
    {
      "commit": "11d5ff58b7b630e77fabed449b4c9c83751c22c7",
      "tree": "f0a2d00fc241251393c97d6cd1f46b0e420a4346",
      "parents": [
        "fe27c711aaa724c8e1aebe6d91a90443c4ecb16e",
        "84b54638df2403e3bf5700e7a80bae582c337024"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:15:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:15:10 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device am: c60c369166 am: 8bae8ca137 am: 5b27eb662d\nam: 84b54638df\n\nChange-Id: Ied892f68ef649c507164e94d3234189ac77f29b3\n"
    },
    {
      "commit": "fe27c711aaa724c8e1aebe6d91a90443c4ecb16e",
      "tree": "379d2253db9c0855378c2c4369289f8af05855b2",
      "parents": [
        "3214c94a2e92c4d03ce5c4817de9578de24e4f93",
        "7dcf320a45c7e2a10270384ab938d44a7107f9aa"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:15:04 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:15:04 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue am: bc5c7de704 am: ed29c951f0 am: f05f6c3363\nam: 7dcf320a45\n\nChange-Id: I981c1f5039b2ffbac7d6500b5d8de46211f1d5b6\n"
    },
    {
      "commit": "3214c94a2e92c4d03ce5c4817de9578de24e4f93",
      "tree": "27c523c847300ea0955c151dfb40f81d18bf566f",
      "parents": [
        "40715983f3d12e4e287260244559667001db967a",
        "a1fdcd5b1ff172265d4e912ce3b4d325681670ac"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:14:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:14:57 2019 -0700"
      },
      "message": "Update PFW input source structure for Q am: 39ef510fec am: 645e43105f am: 8224a4f222\nam: a1fdcd5b1f\n\nChange-Id: Ie3a91c194e327aa6c5b15cbc4708b2c5cc5232b9\n"
    },
    {
      "commit": "6252c394beff4af6a2007a285a72d3080dcf0646",
      "tree": "ef7c1cf23422c76508b005cd19ac0bcdd9cfc03e",
      "parents": [
        "7f51413ee032a811846c805a9a5c3d9987acfa23",
        "bb3c777e401d10f379835243bfcb2e6b6c678504"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 09:09:42 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:09:42 2019 -0700"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\"\nam: bb3c777e40\n\nChange-Id: I0901b093dacaee5ada430d993792d5ea1ffee042\n"
    },
    {
      "commit": "a7eb3da87e5205bee31b12c634eff4c8508b13b6",
      "tree": "15a125db50b1a2e05880d21b4b59dc0b3d5a1218",
      "parents": [
        "3168a7d111d21e0a66e9149428b4fcec46f6dbb9",
        "92bb8155044980052112b2d02b2ff7ed68615203"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 09:08:31 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:31 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\" am: d20b5c7d6f am: 7f51413ee0\nam: 92bb815504\n\nChange-Id: I25a851c53893e1f70cce7adbc738ffdd6a82e20c\n"
    },
    {
      "commit": "3168a7d111d21e0a66e9149428b4fcec46f6dbb9",
      "tree": "e1ce60356a52ab1538ae74acbcaa3c05dbc03c3a",
      "parents": [
        "84b54638df2403e3bf5700e7a80bae582c337024",
        "cca89a4b2659d424e044fe2c48cc44c364006c34"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:18 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:18 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp am: 5818b453da am: a9122279e0\nam: cca89a4b26\n\nChange-Id: I237fcd4cf606520e22cc3c74f81489dde3d6ceb9\n"
    },
    {
      "commit": "84b54638df2403e3bf5700e7a80bae582c337024",
      "tree": "9a39d79fdcc9bbfc6d095c7a48b9849ed1f3c81f",
      "parents": [
        "7dcf320a45c7e2a10270384ab938d44a7107f9aa",
        "5b27eb662ddf0b3bf1a736a8ddfc52a8461f57bd"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:12 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:12 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device am: c60c369166 am: 8bae8ca137\nam: 5b27eb662d\n\nChange-Id: Ic6869ba24e33738e899ee46927dbaf9fe9a55df6\n"
    },
    {
      "commit": "7dcf320a45c7e2a10270384ab938d44a7107f9aa",
      "tree": "9b90125039b63e01fbc53df693efa6fcd543a3c4",
      "parents": [
        "a1fdcd5b1ff172265d4e912ce3b4d325681670ac",
        "f05f6c33633c473bcf82e27fd2c9b76b26021d80"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:05 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue am: bc5c7de704 am: ed29c951f0\nam: f05f6c3363\n\nChange-Id: Ieece3f94561cf0ce5f1022714da9665f67daa7f6\n"
    },
    {
      "commit": "a1fdcd5b1ff172265d4e912ce3b4d325681670ac",
      "tree": "1c5e6b1501ae085b6c07a02f5a82f80797abc206",
      "parents": [
        "df7a95c8a04e5ea729724105bb9ba9c1feeb429b",
        "8224a4f222719ef71671247a0679a1e89d06bf8e"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:07:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:07:51 2019 -0700"
      },
      "message": "Update PFW input source structure for Q am: 39ef510fec am: 645e43105f\nam: 8224a4f222\n\nChange-Id: Ice7a9f6b95a4329ced6f10d72c247fc66794d1c8\n"
    },
    {
      "commit": "92bb8155044980052112b2d02b2ff7ed68615203",
      "tree": "154af5ba177ba7660b4db741bc56128ca72daa89",
      "parents": [
        "cca89a4b2659d424e044fe2c48cc44c364006c34",
        "7f51413ee032a811846c805a9a5c3d9987acfa23"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 08:54:08 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:54:08 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\" am: d20b5c7d6f\nam: 7f51413ee0\n\nChange-Id: Ia00e6eeb9d81451ecb6a9316d01b22c5289e8ef6\n"
    },
    {
      "commit": "cca89a4b2659d424e044fe2c48cc44c364006c34",
      "tree": "3dab74d92f5bffff4a559d4d020facba45431e27",
      "parents": [
        "5b27eb662ddf0b3bf1a736a8ddfc52a8461f57bd",
        "a9122279e023e9b8d287e6fb9eda53a28341fb8d"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:54:04 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:54:04 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp am: 5818b453da\nam: a9122279e0\n\nChange-Id: I055d13fd126d78a1190ae7ab445998bc9d7dd43a\n"
    },
    {
      "commit": "5b27eb662ddf0b3bf1a736a8ddfc52a8461f57bd",
      "tree": "60ac97aa9b1281790da26e44dfd588e219d83e71",
      "parents": [
        "f05f6c33633c473bcf82e27fd2c9b76b26021d80",
        "8bae8ca1374a5e0ac85c520e1542fb975b6cca93"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:54:00 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:54:00 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device am: c60c369166\nam: 8bae8ca137\n\nChange-Id: I83420b56e66adec630d348e5096e9aba973ff50e\n"
    },
    {
      "commit": "f05f6c33633c473bcf82e27fd2c9b76b26021d80",
      "tree": "3fd201940e3f904857cbc1976468c407ab696e01",
      "parents": [
        "8224a4f222719ef71671247a0679a1e89d06bf8e",
        "ed29c951f02a3143842754562b380643c333156a"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:53:56 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:53:56 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue am: bc5c7de704\nam: ed29c951f0\n\nChange-Id: Ib0bd65d25252058a71a830c44095811c6fa4f2a5\n"
    },
    {
      "commit": "8224a4f222719ef71671247a0679a1e89d06bf8e",
      "tree": "11c931d8f0d05d0cdd37bfd7b7e2f4b7b4a14188",
      "parents": [
        "3ae6a9450c1dd97762817f72f442099ef03b5220",
        "645e43105f1684f9ee1043e4dee3d5e294840faf"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:53:53 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:53:53 2019 -0700"
      },
      "message": "Update PFW input source structure for Q am: 39ef510fec\nam: 645e43105f\n\nChange-Id: I2e5e6b0559ff9549ff5ce73e5ad718910fd51914\n"
    },
    {
      "commit": "bb3c777e401d10f379835243bfcb2e6b6c678504",
      "tree": "236eebbbf6ecc1e9025d76fcec178db112696440",
      "parents": [
        "d20b5c7d6fb8ae4f0a011cdc78b0522846419721",
        "20a44f84f1a80ba1464ca35b62417e33ed88ac29"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 10 15:52:37 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 10 15:52:37 2019 +0000"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\""
    },
    {
      "commit": "7f51413ee032a811846c805a9a5c3d9987acfa23",
      "tree": "c7fc0e79ae6cab94157b49c9266e40f458582cb8",
      "parents": [
        "a9122279e023e9b8d287e6fb9eda53a28341fb8d",
        "d20b5c7d6fb8ae4f0a011cdc78b0522846419721"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 08:47:16 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:16 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\"\nam: d20b5c7d6f\n\nChange-Id: Ib5b660acc0f9492d7b5345ea6f3f5772d6ee7b4d\n"
    },
    {
      "commit": "a9122279e023e9b8d287e6fb9eda53a28341fb8d",
      "tree": "a474a8f0c4e7bb6f3dbed42be2aa74709a76424d",
      "parents": [
        "8bae8ca1374a5e0ac85c520e1542fb975b6cca93",
        "5818b453da8cc675900f810655143ad55a159a11"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:12 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:12 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp\nam: 5818b453da\n\nChange-Id: I724a73886458ea9412bb85fd813e7ffb7331fa0f\n"
    },
    {
      "commit": "8bae8ca1374a5e0ac85c520e1542fb975b6cca93",
      "tree": "3d48574d8dc1e0b42598cf159fbd3af5fbb50fda",
      "parents": [
        "ed29c951f02a3143842754562b380643c333156a",
        "c60c36916666ead0ad9c599b82a86708a91eb767"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:07 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:07 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device\nam: c60c369166\n\nChange-Id: I700c3d79241453883d99c203fc627923cbf38f34\n"
    },
    {
      "commit": "ed29c951f02a3143842754562b380643c333156a",
      "tree": "f7cd07df5988ed80bf9dd71207e70938ba2baacc",
      "parents": [
        "645e43105f1684f9ee1043e4dee3d5e294840faf",
        "bc5c7de7048dfe5ca33652533582328775bd4169"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:01 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:01 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue\nam: bc5c7de704\n\nChange-Id: Icc9d796aaca2040fd8f2cb6a6669e1fac7269a49\n"
    },
    {
      "commit": "645e43105f1684f9ee1043e4dee3d5e294840faf",
      "tree": "6c080b8e2ff7df03a29bc9b2c6e4eb241f0c5135",
      "parents": [
        "448242fe095b3e72ce9779b7c09f6b0eee5721b0",
        "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:46:53 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:46:53 2019 -0700"
      },
      "message": "Update PFW input source structure for Q\nam: 39ef510fec\n\nChange-Id: I86d43d746b69dd0ac616bb9000673ffb98d62ab7\n"
    },
    {
      "commit": "d20b5c7d6fb8ae4f0a011cdc78b0522846419721",
      "tree": "bec236ab3eea46a0c925503af51c01e4cf869898",
      "parents": [
        "229c543d081cc29f1f07df8d0b1657cdb71e0c15",
        "31987fb3dc277d2b0daf32f3d2a044e8a2c88a3b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 15:22:13 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 10 15:22:13 2019 +0000"
      },
      "message": "Merge changes from topic \"pfw_python_3\"\n\n* changes:\n  audiopolicy: engineconfigurable: Update tool scripts to python 3\n  audiopolicy: engineconfigurable: continue switching to bp\n  audiopolicy: engineconfigurable: fix potential segfault if no default device\n  audiopolicy: engineconfigurable: fix PATH issue\n  Update PFW input source structure for Q\n"
    },
    {
      "commit": "20a44f84f1a80ba1464ca35b62417e33ed88ac29",
      "tree": "406a9c22867b2928338aa3e7eeae7d1f313b04eb",
      "parents": [
        "229c543d081cc29f1f07df8d0b1657cdb71e0c15"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 18 11:24:52 2019 +0100"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 13:34:23 2019 +0100"
      },
      "message": "Fix secondary output under\u0026over run\n\nThere were three issues with the implementation\nof Audio Playback Capture patches on secondary outputs.\n\n1) Patch tracks were always forced to be ready, even if there were not\nenough audio to be played. That led to playing partial buffers if the\nsource output had smaller (time wise) buffer than the secondary output.\n\nThis is fixed by avoiding setting CBLK_FORCEREADY on every buffer push\nfrom the primary output thread.\n\n2) After 1 is fixed, the patch tracks now behave like regular (non fast)\ntracks. This means that the track only starts when it is full.\nThat leads to overrun on startup as the primary and secondary outputs\nusually do not have the same write period.\n\nWhat makes the issue worst is that Remote submix has a fixed buffer in bytes,\nso its write period changes depending on sample rate contrary to the\nprimary HAL which pulls with fixed time periods (usually 20/40ms).\n\nThis patch solution is to introduce a ready threshold. The track will be\nconsidered ready to be active if there are more than frames in its buffer.\n\nTo avoid changing previous latency behaviour except for APC,\nlegacy tracks have this threshold set to their buffer size and\nnon APC patch tracks have it set to 1, similar to setting\nCBLK_FORCEREADY.\n\n3) The patch track buffer size calculation of the patch track did not take\ninto account primary and secondary output could be of different sampling\nrate.\nThis mean that the patch track buffer was usually too small as the\nsecondary output usually had smaller sampling rate (Live caption\nrequests 16kHz) than the track (music usually plays in 48kHz).\nThis made the two problems even worst.\n\nThis was easily fixed by scaling the buffer size with each side sample rate.\n\nBug: 136691300\nTest: play audio\n      adb shell audiorecorder  --target /data/file1.raw\n      # Check that the recorded file has no underrun\nChange-Id: Ib2846b2827afd1b953d4a25acb18c7cadf57cd3e\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "40715983f3d12e4e287260244559667001db967a",
      "tree": "4000f689070b321cdf478d01c5f214d237d522c2",
      "parents": [
        "40143b19a0dbb2cf3d24f100bf3844f8a4a60f8d",
        "01c7d9ee1b170a516e20b9c7aad3f9d1db982c55"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 10 12:27:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 10 12:27:10 2019 +0000"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\""
    },
    {
      "commit": "3686203afbfa2e3a59255a9280e3f9175d3fdd7c",
      "tree": "fae91b412fdf5f69ff822fff96dc98feb24c7d6d",
      "parents": [
        "40143b19a0dbb2cf3d24f100bf3844f8a4a60f8d"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:52:19 2019 +0100"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:00:10 2019 +0000"
      },
      "message": "Propagate sample rate to static audio track\n\nBug: 136691300\nTest: playback on static buffer track\nChange-Id: Ib11c39e381a1b78450ab8a688310453aa3f1daf7\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "01c7d9ee1b170a516e20b9c7aad3f9d1db982c55",
      "tree": "101e342ee5d35403385d64c6a7f8e4108ef1dfc3",
      "parents": [
        "f73f877182014e662c4c3ab650724975c884839e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 18 11:24:52 2019 +0100"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:52:05 2019 +0100"
      },
      "message": "Fix secondary output under\u0026over run\n\nThere were three issues with the implementation\nof Audio Playback Capture patches on secondary outputs.\n\n1) Patch tracks were always forced to be ready, even if there were not\nenough audio to be played. That led to playing partial buffers if the\nsource output had smaller (time wise) buffer than the secondary output.\n\nThis is fixed by avoiding setting CBLK_FORCEREADY on every buffer push\nfrom the primary output thread.\n\n2) After 1 is fixed, the patch tracks now behave like regular (non fast)\ntracks. This means that the track only starts when it is full.\nThat leads to overrun on startup as the primary and secondary outputs\nusually do not have the same write period.\n\nWhat makes the issue worst is that Remote submix has a fixed buffer in bytes,\nso its write period changes depending on sample rate contrary to the\nprimary HAL which pulls with fixed time periods (usually 20/40ms).\n\nThis patch solution is to introduce a ready threshold. The track will be\nconsidered ready to be active if there are more than frames in its buffer.\n\nTo avoid changing previous latency behaviour except for APC,\nlegacy tracks have this threshold set to their buffer size and\nnon APC patch tracks have it set to 1, similar to setting\nCBLK_FORCEREADY.\n\n3) The patch track buffer size calculation of the patch track did not take\ninto account primary and secondary output could be of different sampling\nrate.\nThis mean that the patch track buffer was usually too small as the\nsecondary output usually had smaller sampling rate (Live caption\nrequests 16kHz) than the track (music usually plays in 48kHz).\nThis made the two problems even worst.\n\nThis was easily fixed by scaling the buffer size with each side sample rate.\n\nBug: 136691300\nTest: play audio\n      adb shell audiorecorder  --target /data/file1.raw\n      # Check that the recorded file has no underrun\nChange-Id: Ib2846b2827afd1b953d4a25acb18c7cadf57cd3e\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "df7a95c8a04e5ea729724105bb9ba9c1feeb429b",
      "tree": "21daef3f8f3e2519a2d666975ef6af7df8728a37",
      "parents": [
        "bd2e267483575289a268a46a599e3e287c80ea14",
        "3ae6a9450c1dd97762817f72f442099ef03b5220"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 09 15:24:58 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 09 15:24:58 2019 -0700"
      },
      "message": "Merge \"Split datasource out of libstagefright\" am: 229c543d08 am: 448242fe09\nam: 3ae6a9450c\n\nChange-Id: I886e8c821a047c3ea303412aab78fb3885e06e85\n"
    },
    {
      "commit": "3ae6a9450c1dd97762817f72f442099ef03b5220",
      "tree": "1762fea89965e510e0196b5ea798e3784f0b0558",
      "parents": [
        "37d27065a0b93fa08d8dc0fe2edac294e267f688",
        "448242fe095b3e72ce9779b7c09f6b0eee5721b0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 09 15:13:44 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 09 15:13:44 2019 -0700"
      },
      "message": "Merge \"Split datasource out of libstagefright\" am: 229c543d08\nam: 448242fe09\n\nChange-Id: I75f9f8ee708348b40d7334b0e4216ec3eceeec22\n"
    },
    {
      "commit": "448242fe095b3e72ce9779b7c09f6b0eee5721b0",
      "tree": "709a1d38537ae95b5f0fdfbcdd91d5f607ae0d81",
      "parents": [
        "995d433aa42f3fe64c8fd9e8b892c156fa7c1ad4",
        "229c543d081cc29f1f07df8d0b1657cdb71e0c15"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 09 15:06:25 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 09 15:06:25 2019 -0700"
      },
      "message": "Merge \"Split datasource out of libstagefright\"\nam: 229c543d08\n\nChange-Id: Iebedf39dbdf0cc4627fac7add4047689c63ff329\n"
    },
    {
      "commit": "31987fb3dc277d2b0daf32f3d2a044e8a2c88a3b",
      "tree": "c38226f2997551d7d61cbd7836d5f3a48ab6de85",
      "parents": [
        "5818b453da8cc675900f810655143ad55a159a11"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Sep 03 11:57:33 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:06:16 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: Update tool scripts to python 3\n\nAs python 2 is beeing deprecated, this CL updates all the tool\nscripts to python3.\nIt also fix some issues revealed by pylint.\n\nTest: lunch audio_configurable target \u0026 build\nChange-Id: I69a201190c688be3825cbdaa238046367a5d09c7\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "5818b453da8cc675900f810655143ad55a159a11",
      "tree": "d7285f91c4ce5f85a9176c2f5544eed40b01ab77",
      "parents": [
        "c60c36916666ead0ad9c599b82a86708a91eb767"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Aug 27 16:30:04 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:06:09 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp\n\nThis CL adds genrule_defaults target to allows getting rid of mk\nfor configuration files generation.\n\nTest: build \u0026 boot\nChange-Id: Ida4ec17ab3e67788b512b95ac8d2c0f4c530014a\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "c60c36916666ead0ad9c599b82a86708a91eb767",
      "tree": "520eb229b4f475fdc7134d594b3fb9b47f72330c",
      "parents": [
        "bc5c7de7048dfe5ca33652533582328775bd4169"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Aug 09 15:41:24 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:58 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device\n\nIf no default device is available from configuration.xml, and if\nthe engine fallbacks on it anyway, it tries to get its type without checking\nthe pointer validity.\n\nThis CL fix the potential segfault and assert with explicit error message.\n\nTest: build\n\nChange-Id: Icf8d7f5ef998dad6f4033d934b48d408030c7e17\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bc5c7de7048dfe5ca33652533582328775bd4169",
      "tree": "5789839c6466d34ae8d963e68322520895e22b37",
      "parents": [
        "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Jul 16 13:37:16 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:52 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue\n\nTo avoid bypassing PATH restrictions, this CL fixes the python\nbinary dependancy by retrieving the path from the host binaries.\n\nTest: build\n\nChange-Id: Ib3356ee1a69d1a5e5a9f9d22b46e3e70c28fa991\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726",
      "tree": "68a7209c8c96dcc9a1ce5e268e508a541c51df9f",
      "parents": [
        "58ae37b5b34d6a2bddd46494230a58f5fcc3f5e3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon May 27 17:33:14 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:40 2019 -0700"
      },
      "message": "Update PFW input source structure for Q\n\nTest: make\nChange-Id: I8a79773732577ace9d81f87fe3f4bb166f4d7290\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "fa8be7d2371d66db6c7838060d5729f6fd9374ef",
      "tree": "aa00504b96299a891446e46c81c6b0d72c9aae02",
      "parents": [
        "58ae37b5b34d6a2bddd46494230a58f5fcc3f5e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 23 12:15:57 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 09 07:41:58 2019 -0700"
      },
      "message": "Split datasource out of libstagefright\n\ninto libdatasource, which contains:\n  DataSourceFactory\n  (Clear)FileSource\n  (Clear)MediaHTTP\n  DataURISource\n  HTTPBase\n  NuCachedSource2\n\nThis is needed to break a circular dependency in an upcoming CL.\n\nTest: build, boot\n\nChange-Id: I34d9937235c78f18f51b18945342a0743e209577\nMerged-In: I34d9937235c78f18f51b18945342a0743e209577\n"
    },
    {
      "commit": "54f877b5fd9c7cb6752c380d480dc1bba2b50da4",
      "tree": "ab93ee2bd8ec69a700f49d31b0df5c13f087149a",
      "parents": [
        "fe4bf25c2e3343f0c2e21a59ef07236069447e3b",
        "296036ed26b8e092b4f771800132e5b987cdcb52"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 08 16:40:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 16:40:17 2019 -0700"
      },
      "message": "Merge \"audio policy: fix virtual called from constructor\" am: 1a5100d4ad am: 0d852e4c5e\nam: 296036ed26\n\nChange-Id: I5be87d1cdcb55d281192de028823918fda34795e\n"
    },
    {
      "commit": "296036ed26b8e092b4f771800132e5b987cdcb52",
      "tree": "fd1677ca9616cba8aad553183d3473a194633166",
      "parents": [
        "2dcf28a6d4d869c2d5413313e397d6055a6cb05f",
        "0d852e4c5e51613fb51a08a271132a85eaae53e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 08 16:33:02 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 16:33:02 2019 -0700"
      },
      "message": "Merge \"audio policy: fix virtual called from constructor\" am: 1a5100d4ad\nam: 0d852e4c5e\n\nChange-Id: Id655924fe050422f41d5b525f0e091dc56cf90cc\n"
    },
    {
      "commit": "0d852e4c5e51613fb51a08a271132a85eaae53e2",
      "tree": "d6a3c80c524c675fbda231032642b277d397b253",
      "parents": [
        "6775ee2b2c403fc7846716f798c4b2e6de253290",
        "1a5100d4ad493bfa6a48b76c2c9276af7aa1d689"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 08 16:25:54 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 16:25:54 2019 -0700"
      },
      "message": "Merge \"audio policy: fix virtual called from constructor\"\nam: 1a5100d4ad\n\nChange-Id: Ie21e8efa8fdf93ff716ec304cb99ff807ef95bac\n"
    },
    {
      "commit": "a3c03a5bbab39d2ea12281f10534a3ab7bad1a1a",
      "tree": "84f3507279568d0a31a6300f4c7cd3adeef65501",
      "parents": [
        "d3dd89caab587bc2207b851da4b3333daf986b2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 10:12:45 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 08 13:53:31 2019 -0700"
      },
      "message": "audio policy: fix virtual called from constructor\n\nCall initialize() after constructing AudioPolicyManager\nfrom factory to avoid calling virtual methods from constructor.\n\nBug: 136491567\nTest: make\nChange-Id: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\nMerged-In: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\n"
    },
    {
      "commit": "a838d46e0855f0b73a7d071771fb1b95219deacb",
      "tree": "dfd30578c07f68aea55232bc24e824034feca562",
      "parents": [
        "8d8c6b7232c6d91a2cfdd1a995915aa9b0e3893b",
        "42057ce1890b2be250b95f56734a47b93c8ad537"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 08 17:54:02 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 08 17:54:02 2019 +0000"
      },
      "message": "Merge \"Split datasource out of libstagefright\""
    },
    {
      "commit": "30ae01c81c71a2ace39847aee67f1409845268e2",
      "tree": "9e68e35751f8e8bbce750d6294902e8c3591ce97",
      "parents": [
        "50279dfc4115e50e348c2c4edace91ba70c1db47",
        "aaf361b75114494490c45234c66d7ecbfe0d2c4b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:52:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:52:26 2019 -0700"
      },
      "message": "Merge \"audioflinger: Add tracing for direct tracks\" am: 1de381858f am: 7829e89a8b\nam: aaf361b751\n\nChange-Id: I54100ab0b81d2050d7c5617b5852e460da67711d\n"
    },
    {
      "commit": "50279dfc4115e50e348c2c4edace91ba70c1db47",
      "tree": "bf3ee0f1e7ffdede4f6711f0b54057e803a7cac5",
      "parents": [
        "4960fb8a2866575d4cc1b77629b56ebb2c95a58f",
        "5dbd702262e948c4451295172edfa051c37d9ac7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:51:07 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:51:07 2019 -0700"
      },
      "message": "Merge \"PassthruPatchRecord: fix null timeOut case in obtainBuffer\" am: 17437eb4b9 am: 55a5ece7ca\nam: 5dbd702262\n\nChange-Id: Ic852d7dff3c5577296f8366a440245a7bfbcf3b7\n"
    },
    {
      "commit": "aaf361b75114494490c45234c66d7ecbfe0d2c4b",
      "tree": "e91cb6590dbc48ceb7e3a7aeca5cdfe351308d95",
      "parents": [
        "5dbd702262e948c4451295172edfa051c37d9ac7",
        "7829e89a8b789211bb0ada783aa1103739446b04"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:48:20 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:48:20 2019 -0700"
      },
      "message": "Merge \"audioflinger: Add tracing for direct tracks\" am: 1de381858f\nam: 7829e89a8b\n\nChange-Id: Icc7ff3732d581b8650b04e49757c3a1e7efc99cb\n"
    },
    {
      "commit": "5dbd702262e948c4451295172edfa051c37d9ac7",
      "tree": "1ebe36765eb604e969ab3348b549307e1d2eec0c",
      "parents": [
        "4f69a426556515891bf0b0c5098a36ecca6618b3",
        "55a5ece7ca358ddaf6926c6ecf0d88d632b45a8b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:46:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:46:05 2019 -0700"
      },
      "message": "Merge \"PassthruPatchRecord: fix null timeOut case in obtainBuffer\" am: 17437eb4b9\nam: 55a5ece7ca\n\nChange-Id: I3a6a8ab69b53a00b3865f232962e7ed5b11722ad\n"
    },
    {
      "commit": "7829e89a8b789211bb0ada783aa1103739446b04",
      "tree": "c47c35ad1de8a5595e2ea616c19f2d7cd4d19771",
      "parents": [
        "55a5ece7ca358ddaf6926c6ecf0d88d632b45a8b",
        "1de381858fda2fc7bab72b6f27d0beaf08679705"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:43:11 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:43:11 2019 -0700"
      },
      "message": "Merge \"audioflinger: Add tracing for direct tracks\"\nam: 1de381858f\n\nChange-Id: Id65ffbc61d99e67d84383b41c9277ce8c960d486\n"
    },
    {
      "commit": "55a5ece7ca358ddaf6926c6ecf0d88d632b45a8b",
      "tree": "daf5880ccdc6333f63ab2a7dbd8f5a188ec207bb",
      "parents": [
        "809da62adbf58111c9f9589f88203cd4d280ea18",
        "17437eb4b9f5dd70d31192692cda181f1f8cc266"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:40:19 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:40:19 2019 -0700"
      },
      "message": "Merge \"PassthruPatchRecord: fix null timeOut case in obtainBuffer\"\nam: 17437eb4b9\n\nChange-Id: Ib3f4e9f2043cea877876c8f8ac9f1a581e1bdd88\n"
    },
    {
      "commit": "1de381858fda2fc7bab72b6f27d0beaf08679705",
      "tree": "74aee5577ebded1d39288e8465ad0ac2a50a690c",
      "parents": [
        "17437eb4b9f5dd70d31192692cda181f1f8cc266",
        "76e89c3b8e2bd864f8943a1ad015306a98a4cac7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 08 17:04:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 08 17:04:51 2019 +0000"
      },
      "message": "Merge \"audioflinger: Add tracing for direct tracks\""
    },
    {
      "commit": "17437eb4b9f5dd70d31192692cda181f1f8cc266",
      "tree": "1ceb05fc09c2d0e09710e66c229e0443c72fa9bb",
      "parents": [
        "9ee56ec1a7ace45b42b65e01fdda98114b5c0833",
        "91beec3e38677fc9d168c3e774755ace009e60db"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 08 17:04:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 08 17:04:23 2019 +0000"
      },
      "message": "Merge \"PassthruPatchRecord: fix null timeOut case in obtainBuffer\""
    },
    {
      "commit": "42057ce1890b2be250b95f56734a47b93c8ad537",
      "tree": "7bfbe8147243430c306546b6a7e5caaa1e94d9cc",
      "parents": [
        "df0b56ba22cc201e535a2efc2245214355b6adf2"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 23 12:15:57 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 08 09:30:45 2019 -0700"
      },
      "message": "Split datasource out of libstagefright\n\ninto libdatasource, which contains:\n  DataSourceFactory\n  (Clear)FileSource\n  (Clear)MediaHTTP\n  DataURISource\n  HTTPBase\n  NuCachedSource2\n\nThis is needed to break a circular dependency in an upcoming CL.\n\nTest: build, boot\n\nChange-Id: I34d9937235c78f18f51b18945342a0743e209577\n"
    },
    {
      "commit": "9ee56ec1a7ace45b42b65e01fdda98114b5c0833",
      "tree": "0690e8bd1cf46c3824b49956d5dbfae0770f0270",
      "parents": [
        "d7a1506715bf9d588210d46b8d6563fc9e92e25a",
        "59cee8cc171715174b912c326ba8a5f500e3afdd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 23:47:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 07 23:47:55 2019 +0000"
      },
      "message": "Merge \"audio policy: fix capture policy for HOTWORD source\""
    },
    {
      "commit": "76e89c3b8e2bd864f8943a1ad015306a98a4cac7",
      "tree": "bbb7c5aa0daf3416b9e7e8d9c2c0ce4a6c2fd944",
      "parents": [
        "91beec3e38677fc9d168c3e774755ace009e60db"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 15 20:18:47 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 16:24:15 2019 -0700"
      },
      "message": "audioflinger: Add tracing for direct tracks\n\nAdd missing calls to ATRACE for direct writes and frames ready\non direct thread.\n\nTest: \u003cstart direct output\u003e\n      external/chromium-trace/systrace.py audio\n\nMerged-In: Iee6ea72442f9902819628735e19cce0ba1546165\nChange-Id: Iee6ea72442f9902819628735e19cce0ba1546165\n"
    },
    {
      "commit": "91beec3e38677fc9d168c3e774755ace009e60db",
      "tree": "6016c5b7ff6fca19abf6bdd4b8e82cbd0bfa71ff",
      "parents": [
        "48f1d4579f9fe1cd6ff672fe9daa27fec83d82c7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 09:57:15 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 12:50:58 2019 -0700"
      },
      "message": "PassthruPatchRecord: fix null timeOut case in obtainBuffer\n\nProperly handle \u0027timeOut \u003d\u003d nullptr\u0027 case in\nPassthruPatchRecord::obtainBuffer.\n\nBug: 117564323\nTest: make\nMerged-In: Id352e47682c0992b817f26b3b594ec5913e663be\nChange-Id: Id352e47682c0992b817f26b3b594ec5913e663be\n"
    },
    {
      "commit": "4de4997e66a1b3d2b6021942058c4f49824ae8eb",
      "tree": "577e1d41eedd6241b38908d4a4ab9132b8e3cfbe",
      "parents": [
        "7ae95c1a44390ccfeb5bdd1d5e7fa4edd6d91725"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 09:53:58 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 12:49:58 2019 -0700"
      },
      "message": "PassthruPatchRecord: fix null timeOut case in obtainBuffer\n\nProperly handle \u0027timeOut \u003d\u003d nullptr\u0027 case in\nPassthruPatchRecord::obtainBuffer.\n\nBug: 117564323\nTest: make\nChange-Id: Id352e47682c0992b817f26b3b594ec5913e663be\n"
    },
    {
      "commit": "f2c360c33e6dcea2f662fb5031e1908ed3f5c1a1",
      "tree": "05d2f8d2c82866c7eb09847715c600fedbf69071",
      "parents": [
        "7b164330d4a674ed93dfac52d1205fbfa4670bca",
        "58f4e548c29634d606b711a45776e98f72540381"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 11:34:45 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 07 11:34:45 2019 -0700"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d,I78400f6c, ... am: d7a1506715 am: 7594c6e4d7\nam: 58f4e548c2\n\nChange-Id: Ia6173ca046268a698799c3aa263336596feb9ba5\n"
    },
    {
      "commit": "58f4e548c29634d606b711a45776e98f72540381",
      "tree": "99216d4ae040815fb2bc86f75a91f82dfd2f3189",
      "parents": [
        "495f1a5d2f09e1fd70d9705d0c602f6854fddc3c",
        "7594c6e4d7294e606d8939f15f04546a6e711454"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 11:28:42 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 07 11:28:42 2019 -0700"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d,I78400f6c, ... am: d7a1506715\nam: 7594c6e4d7\n\nChange-Id: Ia06cf02e0bfae12577860f5211bea3960c666501\n"
    },
    {
      "commit": "7594c6e4d7294e606d8939f15f04546a6e711454",
      "tree": "c73f3dc48a7a0f668652a12d6f86646c90942733",
      "parents": [
        "79645b66f19d91419b747b0620b5c7c00117f1b2",
        "d7a1506715bf9d588210d46b8d6563fc9e92e25a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 11:23:01 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 07 11:23:01 2019 -0700"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d,I78400f6c, ...\nam: d7a1506715\n\nChange-Id: Idd3ab59ad99c450d89fd47aaa1a15681f73175ac\n"
    },
    {
      "commit": "59cee8cc171715174b912c326ba8a5f500e3afdd",
      "tree": "8915d8fd854c905ff95553b78e287842c64f58f8",
      "parents": [
        "85e09b8e9403dca651e174dca57ae353b8de0a11"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:31:39 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Oct 07 11:20:07 2019 -0700"
      },
      "message": "audio policy: fix capture policy for HOTWORD source\n\nDo not consider Assistant capturing with HOTWORD source\nwhen determining lastest active capture client. As assistant\ncapturing for HOTWORD does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, place in background and trigger\nfalse OK G detection\n\nChange-Id: Ic17bfd70675ef749d6a678d067112b1dbd205746\nMerged-In: Ic17bfd70675ef749d6a678d067112b1dbd205746\n"
    },
    {
      "commit": "d7a1506715bf9d588210d46b8d6563fc9e92e25a",
      "tree": "a3d7e05be7bbb659b82055a4f26dd2a316b114d9",
      "parents": [
        "85e09b8e9403dca651e174dca57ae353b8de0a11",
        "48f1d4579f9fe1cd6ff672fe9daa27fec83d82c7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 17:53:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 07 17:53:27 2019 +0000"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d,I78400f6c, ...\n\n* changes:\n  Use PassthruPatchRecord for DIRECT to DIRECT connections\n  Add PassthruPatchRecord for low latency software patches\n  Abstract access to HAL stream via Source in RecordThread\n  Move PlaybackThread::Track::writeFrames to PatchRecord\n  audioflinger: Add tracing of buffer frames to PatchTrack/Record\n  libaudioprocessing: Extract vendor-available part of AudioMixer\n  AudioMixer: Cleanups\n  libaudioprocessing: Trivial dependency cleanups\n"
    },
    {
      "commit": "c3af31b8f1a7bac5d3e3c953702c8faec3cd55e3",
      "tree": "30533ca112d60914f2c23acda83394275b97ea25",
      "parents": [
        "32706253ce90531c94b5f2af7caacb443eb09d8c"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 20 21:45:01 2019 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Oct 04 22:05:40 2019 -0700"
      },
      "message": "Implement DrmSessionManager w mediaresourcemanager\n\nBug: 134787536\nTest: DrmSessionManagerTest\nTest: DrmSessionManager_test\nTest: ResourceManagerService_test\nChange-Id: Iab9f4f681c83f46b043cefc8633bb3e513a8e75a\n"
    },
    {
      "commit": "ef34be5426e96fa2fecc551e1fe196fbb862b220",
      "tree": "3335f4ce50a8307b0684a0c5a15fcf3b4ec84b52",
      "parents": [
        "b362012ad43022a0686cc2ca7fe2eb64d377a202"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 26 13:45:25 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Oct 04 16:56:14 2019 -0700"
      },
      "message": "aaudio: add histogram to clock model\n\nMeasure distribution of MMAP timestamp lateness.\nThis is used to discover the actual DSP timing behavior.\nTurn histogram log on or off using a property.\n\nTest: adb root\nTest: adb shell setprop aaudio.log_mask 1\nTest: run an AAudio MMAP program\nTest: adb logcat | grep ClockModel\nChange-Id: I910831d1feee43c59d1af2ac3135a910fef36fb2\n"
    },
    {
      "commit": "48f1d4579f9fe1cd6ff672fe9daa27fec83d82c7",
      "tree": "7958f3d8e8f59dbbcc0474cf84ddae8bc889ba35",
      "parents": [
        "e6eb348b793736f1f4e441b53167d0c09e614f6b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 01 16:52:14 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 16:00:03 2019 -0700"
      },
      "message": "Use PassthruPatchRecord for DIRECT to DIRECT connections\n\nWhen both input and output connected by a software patch\nare in \u0027DIRECT\u0027 mode (no framework processing), use\nPassthruPatchRecord as it helps to reduce the latency\nsignificantly by avoiding intermediate buffering.\n\nRemove \u0027std::nothrow\u0027 from tracks creation in PatchPanel\nfor consistency with other code.\n\nBug: 117564323\nTest: with MSD module\nMerged-In: I52ec5b02a207548ebc4073c1033e396f444c041c\nChange-Id: I52ec5b02a207548ebc4073c1033e396f444c041c\n"
    },
    {
      "commit": "e6eb348b793736f1f4e441b53167d0c09e614f6b",
      "tree": "d0abca0d2c30e2279a6e631a5c25b4430b7c73e9",
      "parents": [
        "af28887c617eca259444f743ef83eda85d52d31e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 14:05:29 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 15:59:52 2019 -0700"
      },
      "message": "Add PassthruPatchRecord for low latency software patches\n\nImplement a subclass of PatchRecord that uses PatchTrack\u0027s\nthread for reading from HAL. This eliminates the need for\nbuffering that adds latency.\n\nThe only modification needed for PatchTrack is to indicate\nunlimited amount of available frames to the playback thread.\nThis is to prevent PatchTrack from being deactivated by\nDirectOutputThread due to lack of frames available.\n\nRecordThread believes it reads audio data on its thread,\nand manages timestamps as usual. The data that it \"reads\"\nand passes to PassthruPatchRecord is discarded by the latter.\n\nBug: 117564323\nTest: with MSD module\nMerged-In: I376656e3c791e91e2196331ecdf2b425697c4e18\nChange-Id: I376656e3c791e91e2196331ecdf2b425697c4e18\n"
    },
    {
      "commit": "af28887c617eca259444f743ef83eda85d52d31e",
      "tree": "d1885e5d79cd7021a89276e4ebe7f81f2fd8ab73",
      "parents": [
        "d368d9166ea7df77479a2908e3a7dbf4c5f21c12"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 13:05:02 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "Abstract access to HAL stream via Source in RecordThread\n\nThis allows to replace direct reading from HAL with obtaining\naudio data from another source.\n\nIt should be possible to encapsulate reading from FastCapture\nin the same manner, but it\u0027s not required for direct inputs.\n\nTest: make\nMerged-In: I3f005583410cc9c5d4b07c127d95e236abb4a85f\nChange-Id: I3f005583410cc9c5d4b07c127d95e236abb4a85f\n"
    },
    {
      "commit": "d368d9166ea7df77479a2908e3a7dbf4c5f21c12",
      "tree": "051128854a67d74eee4d073b113b2b76ac6cf681",
      "parents": [
        "5269849effaa40a96ccffc214efaf804f3378bd0"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 14:59:54 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "Move PlaybackThread::Track::writeFrames to PatchRecord\n\nThis code logically belongs to PatchRecord because it emulates\nobtaining recorded data from a client.\n\nTest: make\nMerged-In: Icba4e33d9d0ca57e6ad964aaf3209e7db766f284\nChange-Id: Icba4e33d9d0ca57e6ad964aaf3209e7db766f284\n"
    },
    {
      "commit": "5269849effaa40a96ccffc214efaf804f3378bd0",
      "tree": "1801581cde4d446ca5e56b9fb8012a81be9659e7",
      "parents": [
        "32f0d1689bd2eea6f43d7fb53faaedc23bd101d7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 04 11:38:47 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "audioflinger: Add tracing of buffer frames to PatchTrack/Record\n\nSeeing requested / obtained buffer frame counts in trace\nhelps to identify discontinuities in software patch pipeline.\n\nThere is no need to trace requested frame count for PatchRecord\nas it always requests as much as possible (\"-1\" frameCount).\n\nBug: 117564323\nTest: with software patch active,\n      external/chromium-trace/systrace.py audio\n\nMerged-In: I78400f6cc1d1940b3290fb23bb1aacfbffe042e5\nChange-Id: I78400f6cc1d1940b3290fb23bb1aacfbffe042e5\n"
    },
    {
      "commit": "32f0d1689bd2eea6f43d7fb53faaedc23bd101d7",
      "tree": "3144c04d2bba1d717b30fe54fb4e4f08c478f982",
      "parents": [
        "a4f00e2aeadc9dc5c2f4970cd61ace72438136d4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 30 14:42:32 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "libaudioprocessing: Extract vendor-available part of AudioMixer\n\nSplit AudioMixer into the base part which doesn\u0027t rely on\nthe framework and can be used in vendor code and the derived part\nwhich is intended to be used by Audioflinger.\n\nTest: A/B compare output from test scripts, manual testing on the phone\nMerged-In: I24c390f67f20baa8109902099359ca6e34eebcfd\nChange-Id: I24c390f67f20baa8109902099359ca6e34eebcfd\n"
    },
    {
      "commit": "9b6599e1e10232e9c6e67e1d6d26265b8e8da885",
      "tree": "2543d4ef40ca7a67df0f493acf071cb773af7306",
      "parents": [
        "52a42dde3627544fabc6691afcc67df73ed6b5e7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 29 15:23:21 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "libaudioprocessing: Trivial dependency cleanups\n\n- Remove unused dependencies on libnbaio and libnblog;\n\n- Move dependencies on libaudiohal and libsonic to libaudioprocessing\n  as AudioMixer implementation does not use them.\n\nTest: make\nMerged-In: I258a450725bdacb4fcf437b6f86582d51d40e622\nChange-Id: I258a450725bdacb4fcf437b6f86582d51d40e622\n"
    },
    {
      "commit": "374bffd4f54afe95ec0101d29743030576c0c373",
      "tree": "53aa981de7d089a2a7afcb873cb2f6c7b20d328e",
      "parents": [
        "fb1fb155f9ec3a05ffa9e49f9415b565dcf8c163",
        "9515fc85a6b7de9c0520315f33c5a6d6421e738b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 04 19:48:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 04 19:48:03 2019 +0000"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d\n\n* changes:\n  Use PassthruPatchRecord for DIRECT to DIRECT connections\n  Add PassthruPatchRecord for low latency software patches\n  Abstract access to HAL stream via Source in RecordThread\n  Move PlaybackThread::Track::writeFrames to PatchRecord\n"
    },
    {
      "commit": "95db15bbbd8110349c48dd5fc45a766ea9c7cbbc",
      "tree": "1f97080499796f7bbf7b656f07e292ae122c3983",
      "parents": [
        "f2b559f0484dce32a38d18d0524598ebe67825dc",
        "b5dd7ae0b90cf66e68680c3f8064f78a23675f36"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 16:03:22 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 16:03:22 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev am: 7b254210fe am: b5a3db3e8e\nam: b5dd7ae0b9\n\nChange-Id: I003e09800154ef79bf8656b0a1909bc504c6c2b2\n"
    },
    {
      "commit": "b5dd7ae0b90cf66e68680c3f8064f78a23675f36",
      "tree": "90e0f48fde7d3f07367b62be0c2f98527fc327d6",
      "parents": [
        "63b47f918cfe8dc692ada342bec261084d102fcc",
        "b5a3db3e8ed9adef4fbeb8e3b5e97a1af50bca70"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev am: 7b254210fe\nam: b5a3db3e8e\n\nChange-Id: Iaa9c9a4b8c93143fc4277c673c0e2bbf03d430d7\n"
    },
    {
      "commit": "f11fc2260594ef0b51abd5c483cae13df81fde20",
      "tree": "8cdb1dbfa90e07f7237fb6b0a227e8f9e153e0f4",
      "parents": [
        "0ff9bd98805a1b593fd72dda96c2e4795d5106e2",
        "b5a3db3e8ed9adef4fbeb8e3b5e97a1af50bca70"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev am: 7b254210fe\nam: b5a3db3e8e\n\nChange-Id: I52e15469eefdd9f037cc09974846c21c6decff1f\n"
    },
    {
      "commit": "b5a3db3e8ed9adef4fbeb8e3b5e97a1af50bca70",
      "tree": "46515bed0c814d56357b7521fbfe805aecc9a7ac",
      "parents": [
        "678e069993547ee0c0d872d2bf0c19012960b16f",
        "7b254210fe701b9023d1db342c6d1c884d39efe7"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 15:50:49 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 15:50:49 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev\nam: 7b254210fe\n\nChange-Id: I06721afc1c0ac492fc7b1b9efbd4af3758325570\n"
    },
    {
      "commit": "7b254210fe701b9023d1db342c6d1c884d39efe7",
      "tree": "c4e1d5f2e3235e4ee8c2c561d03cb5d36167458f",
      "parents": [
        "4a47595eceb1da9150e38b02b2e5e79290300a85",
        "7307293e8befafa12b244b74cd3c8cb84b27997c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 22:18:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 03 22:18:24 2019 +0000"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev"
    },
    {
      "commit": "86903e065d2d592fa34b57a717c3859c68d3435d",
      "tree": "dbd47d0af3003b0e5848779bdd619345916535aa",
      "parents": [
        "4f0a23d0dc08aa553389f17ab7e3f89fc6125496"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 11 14:55:16 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 03 14:22:02 2019 -0700"
      },
      "message": "AudioPolicy: do not cap a11y volume during call screening\n\n  Add accessibility playback as exemption for volume capping\nduring call screening.\n\nBug: 133879660\nTest: enable Talkback, receive a call, screen it, touch responses icons,\nverify labels are read\n\nChange-Id: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\nMerged-In: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\n"
    },
    {
      "commit": "a8a70b42254125ea3987d8deafbbedad36743186",
      "tree": "ea833c0e3c1088117b6626ff5d5473394251effb",
      "parents": [
        "18ea000d7f15726e4c11c4a9e7e59e8a18a9c227",
        "4f0a23d0dc08aa553389f17ab7e3f89fc6125496"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 13:25:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 13:25:05 2019 -0700"
      },
      "message": "Merge \"Remove libmediadrm symlinks\"\nam: 4f0a23d0dc\n\nChange-Id: Id2a5c304d8b8397afe933f2ddca97d2879385494\n"
    },
    {
      "commit": "b3e4cbb217ffaefa898170c1136becfa0ff7a137",
      "tree": "77af9d60c435d007c64c08c356e1b4e9daec6371",
      "parents": [
        "a37cdc92bef77ccc6315dc8617011d6385156b4a",
        "53cf28d34130ceb0663b41c9ce37d3176fc9517b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 13:17:27 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 13:17:27 2019 -0700"
      },
      "message": "Merge changes from topic \"rename-stream-connect\" am: ad71d42389 am: 18ea000d7f\nam: 53cf28d341\n\nChange-Id: I631bbb92aefcc436be462a19881a1fb385e608ac\n"
    },
    {
      "commit": "53cf28d34130ceb0663b41c9ce37d3176fc9517b",
      "tree": "37a099c1cef7e31eede53e7af41c8e3c5f6f1b9c",
      "parents": [
        "39b4d74ca62c7760f93f9f410dcf3816b39e0f7f",
        "18ea000d7f15726e4c11c4a9e7e59e8a18a9c227"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 13:10:09 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 13:10:09 2019 -0700"
      },
      "message": "Merge changes from topic \"rename-stream-connect\" am: ad71d42389\nam: 18ea000d7f\n\nChange-Id: I6cd3f4f2ec6ceb4c586800e3b77273a534f10d4a\n"
    },
    {
      "commit": "4f0a23d0dc08aa553389f17ab7e3f89fc6125496",
      "tree": "2861f8e2557372d061486e9478248b85387d8c11",
      "parents": [
        "ad71d4238911260f0a9733b799420534ec095064",
        "55b259cf5ec16df77b52206e8209f5df2fc214c5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 20:03:44 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 03 20:03:44 2019 +0000"
      },
      "message": "Merge \"Remove libmediadrm symlinks\""
    },
    {
      "commit": "18ea000d7f15726e4c11c4a9e7e59e8a18a9c227",
      "tree": "8f5cc01f7d72b904c14e41a81ed69c3851a2aa59",
      "parents": [
        "31d882eab0161de1d237fb893e7ef17ecbad0f43",
        "ad71d4238911260f0a9733b799420534ec095064"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 12:56:59 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 12:56:59 2019 -0700"
      },
      "message": "Merge changes from topic \"rename-stream-connect\"\nam: ad71d42389\n\nChange-Id: I4d651926031dc0342ba77db97669416a86c7fe62\n"
    },
    {
      "commit": "ad71d4238911260f0a9733b799420534ec095064",
      "tree": "ad37557542330c7ed28f95f9308836130db61427",
      "parents": [
        "5a6a5a9b8223473f35c4486c0b3c8f2335e35b6f",
        "138b0a3840db6207654d8a9b3d88a383b100b9b0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 19:44:44 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 03 19:44:44 2019 +0000"
      },
      "message": "Merge changes from topic \"rename-stream-connect\"\n\n* changes:\n  Restore stream [dis]connect parameters in deprecated state\n  Fix the name of the constant for device [dis]connect parameter\n"
    },
    {
      "commit": "9515fc85a6b7de9c0520315f33c5a6d6421e738b",
      "tree": "a38e5f2becb61c48da950eaf1b03ef3bcb811b8e",
      "parents": [
        "caf5994f652e33336e7bded702c30e29c1d85eb6"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 01 16:52:14 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 12:21:41 2019 -0700"
      },
      "message": "Use PassthruPatchRecord for DIRECT to DIRECT connections\n\nWhen both input and output connected by a software patch\nare in \u0027DIRECT\u0027 mode (no framework processing), use\nPassthruPatchRecord as it helps to reduce the latency\nsignificantly by avoiding intermediate buffering.\n\nRemove \u0027std::nothrow\u0027 from tracks creation in PatchPanel\nfor consistency with other code.\n\nBug: 117564323\nTest: MS12 MSD, AOSP MSD\nChange-Id: I52ec5b02a207548ebc4073c1033e396f444c041c\n"
    },
    {
      "commit": "caf5994f652e33336e7bded702c30e29c1d85eb6",
      "tree": "9c7dd60e484c3d42ae402b504355d3872226be50",
      "parents": [
        "2534b388b5ab10712b9b6c24a49e3dc827ce0e00"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 14:05:29 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 12:20:34 2019 -0700"
      },
      "message": "Add PassthruPatchRecord for low latency software patches\n\nImplement a subclass of PatchRecord that uses PatchTrack\u0027s\nthread for reading from HAL. This eliminates the need for\nbuffering that adds latency.\n\nThe only modification needed for PatchTrack is to indicate\nunlimited amount of available frames to the playback thread.\nThis is to prevent PatchTrack from being deactivated by\nDirectOutputThread due to lack of frames available.\n\nRecordThread believes it reads audio data on its thread,\nand manages timestamps as usual. The data that it \"reads\"\nand passes to PassthruPatchRecord is discarded by the latter.\n\nBug: 117564323\nTest: MS12 MSD, AOSP MSD\nChange-Id: I376656e3c791e91e2196331ecdf2b425697c4e18\n"
    },
    {
      "commit": "01155fb2f42cb4b1ce2e0c4f8bd6cb7cc9b44bb2",
      "tree": "8b83dcccd895e42c13ee9bf938d6c89a0fd52404",
      "parents": [
        "a13be84cd6c5c3b9913bb7b0ff4fdbf3d9c108fb",
        "5070660381ef299b2ebabadfa37277ca7ed60a25"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 22:24:40 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 22:24:40 2019 -0700"
      },
      "message": "Merge \"Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\" am: 5a6a5a9b82 am: 31d882eab0 am: b592a9ff39\nam: 5070660381\n\nChange-Id: Ic4585160d54a63a3d951a319cd8f61ecd13a5e4a\n"
    },
    {
      "commit": "5070660381ef299b2ebabadfa37277ca7ed60a25",
      "tree": "4acde1fdcee9846282dc41d51107d8567bbbab4a",
      "parents": [
        "c499a089250910118da5a292794d0dc1c9053171",
        "b592a9ff39fbc8da6af2cd93dd20862d7ad29ed5"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 22:18:36 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 22:18:36 2019 -0700"
      },
      "message": "Merge \"Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\" am: 5a6a5a9b82 am: 31d882eab0\nam: b592a9ff39\n\nChange-Id: I265d446fdea63c834b1216feb7ffe19d260b6c50\n"
    }
  ],
  "next": "b592a9ff39fbc8da6af2cd93dd20862d7ad29ed5"
}
