)]}'
{
  "log": [
    {
      "commit": "f33115ddd726e1bb3b76565b7350a49c433afe40",
      "tree": "69db6ec5330f39b9ae64cdf65deafe04b404d617",
      "parents": [
        "d6fe406c865072f4d139756a48487d34fed0f07f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 23 00:04:22 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nTest: atest libmedia_helper_tests\nChange-Id: Ia0e725026be80621bdc797299e63e134419b2b3d\n"
    },
    {
      "commit": "78d02237ebe6c90d36dca7b6da5e867ac6295318",
      "tree": "fb81c7a5bacfec08f2d9c4d71f0559a26c95d8e3",
      "parents": [
        "0f243bbaf628bf8aa873e978feb720d3354b476c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "message": "Revert \"Use system/audio to/from string converters in TypeConverter\"\n\nRevert \"audio: Align lists of enum values between framework and HAL\"\n\nRevert submission 12851233-hal-enum-strings\n\nReason for revert: breaks slider device\nReverted Changes:\nI4f64a8b61:Use system/audio to/from string converters in Type...\nIddaa92bf2:Move enums shared with HAL to audio-hal-enums.h\nIe5896775b:audio: Align lists of enum values between framewor...\n\nBug: 171262726\nChange-Id: I7568c41c5641cf120ffacbfda4751c3bb1c4e4f8\n"
    },
    {
      "commit": "0f243bbaf628bf8aa873e978feb720d3354b476c",
      "tree": "3c065d2ff4b39a12ea3b830e82ada2597e907ece",
      "parents": [
        "e3bca196dbe931f0d7c26394c6224784224da459"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 16 23:00:44 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nChange-Id: I4f64a8b6164bb5ad94cbf1da1709cb379f4a75fa\n"
    },
    {
      "commit": "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5",
      "tree": "54bc894243fa3c52e611c85aed75ee6677056c13",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 08 18:12:55 2020 -0700"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "2e0239dfded6307f5a787ac0a64f2066b8340e7b",
      "tree": "4d5bce7f68a341b59a0c09049c61fadb8b460602",
      "parents": [
        "1a207dbf25e983845ce47ae04016504a4d092a92",
        "b7d8c5aa7a9c182e695e456c4aea8f8f6c550850"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 29 00:10:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 29 00:10:23 2020 +0000"
      },
      "message": "Merge \"Add getExternalPosition in MMapStreamInterface.\""
    },
    {
      "commit": "98ab408b41cbaea86106eac85ec361ffbcc246f5",
      "tree": "ff1460860b9cfe9c6df59f0285ae98ef1d8e30eb",
      "parents": [
        "2f0bf51fb362149cfd88d55b93a3a0bb89779e92"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 25 21:46:34 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 25 23:33:15 2020 +0000"
      },
      "message": "audioflinger: only hold wakeLock when started\n\nThe AAudio MMAP streams used to hold a wakeLock from\nthe time they were opened until closed.\nNow it is acquired when the first stream is started\nand released when the first stream is stopped.\n\nThis was tested by creating shared streams using\nOboeTester and write_sine_callback and input_monitor_callback and\nthen adding lots of logs to see when the\nwakeLock was acquired and released.\n\nNote that ~ThreadBase() calls releaseWakeLock_l() so ~MmapThread()\ndoes not need to.\n\nBug: 167345722\nTest: Launch OboeTester\nTest: Tap TEST OUTPUT\nTest: Tap OPEN\nTest: Enter: adb shell dumpsys power\nTest: See no MmapPlayback wakelock\nTest: Tap START\nTest: Enter: adb shell dumpsys power\nTest: See \"ACQ MmapPlayback\"\nTest: Tap STOP\nTest: Enter: adb shell dumpsys power\nTest: See \"REL MmapPlayback\"\n\nTest: atest AAudioTests\nChange-Id: Iad87f5ebd22f20c89699e8b1a75d8df482046360\n"
    },
    {
      "commit": "b7d8c5aa7a9c182e695e456c4aea8f8f6c550850",
      "tree": "8d602524e90bf46e4cbe1e33a71fa472e7998c34",
      "parents": [
        "8dbd241e279e1a637502e38af32ef6ead483768f"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 26 17:24:52 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Wed Sep 23 21:45:29 2020 +0000"
      },
      "message": "Add getExternalPosition in MMapStreamInterface.\n\nGetExternalPosition will return a recent count of the number of\naudio frames presented/received to/from an external observer. Using\nthe new API can return a precise timestamp to client, which can\nhelp on A/V sync.\n\nTest: atest AAudioTests\nBug: 158609200\nChange-Id: If74e1d859a2bb2b4dba6af0e4e9164f05d19d962\n"
    },
    {
      "commit": "18a4b1c31bd8f9df114c1fece02c15a4fcf5579e",
      "tree": "7fa6d6a95b08ee4d8185040ff25dbe87f8aa2c26",
      "parents": [
        "84d711ca7d00aa04dd53db0ed7f0e81e400e35a5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 17 11:40:42 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 17 19:24:23 2020 +0000"
      },
      "message": "Release AudioTrackCallback when the track is removed.\n\nThe AudioTrackCallback is cached as a strong pointer in PlaybackThread.\nRemove the callback when the corresponding track is removed to avoid\nmemory leak.\n\nBug: 168675247\nTest: repo steps in the bug\nChange-Id: I09d78ca31c43db4d017f9e8c540628bcb6c44727\n"
    },
    {
      "commit": "b8a9dbbf791adf7f1a0ab87d7a35770074e88cc8",
      "tree": "a2f91436efd8587def9e765d333387fed6a03b7f",
      "parents": [
        "763136770b0bb6828cf7628a9b3bbf09b0741ae2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "message": "Revert \"Snap for 6793014 from 424180bdc4aa18249e678daebfd0fcf936...\"\n\nRevert \"Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d148e6e...\"\n\nRevert \"Snap for 6793014 from 7594ec6384c4da320726def34f477736f9...\"\n\nRevert \"Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c4223e1d0...\"\n\nRevert \"Snap for 6793014 from 44725f06b7f7d6407b5ee82d989bdd6c7a...\"\n\nRevert \"Snap for 6793014 from f22ad3164937a8f2e309965c102b6366d5...\"\n\nRevert \"Snap for 6793014 from 11467102abddb6026aaa164c1361439c2d...\"\n\nRevert \"Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5f7ae65...\"\n\nRevert \"Snap for 6793014 from f2989f9c65556d5155dbd57f82f0c93a16...\"\n\nRevert \"Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab1222ffd6...\"\n\nRevert \"Snap for 6793014 from 3777d883a3857b1a1589181c436d9018d7...\"\n\nRevert \"Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528460c8b...\"\n\nRevert \"Snap for 6793014 from a43295d1825da62af038d345a7a861ed7a...\"\n\nRevert \"Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb386109...\"\n\nRevert \"Snap for 6793014 from d0e31526c62b2aeb35c293ac96feb180fc...\"\n\nRevert \"Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376efabd2...\"\n\nRevert \"Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293b79684...\"\n\nRevert \"Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57a8e7d5...\"\n\nRevert \"Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aad87a67...\"\n\nRevert \"Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24af9964...\"\n\nRevert \"Snap for 6793014 from 14cb57e107a3abce8b14937b1f92c28d18...\"\n\nRevert \"Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc03a606...\"\n\nRevert \"Snap for 6793014 from 8c65adad0bcdfb3acc561063b4048dca24...\"\n\nRevert \"Snap for 6793014 from b3061942700265e2bf04af9997775dcbbb...\"\n\nRevert \"Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd0ac3be...\"\n\nRevert \"Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec70d8da6...\"\n\nRevert \"Snap for 6793014 from 988d4244914e0c749655e8cb6db18ba44f...\"\n\nRevert submission 12465146-release-request-6b259cbc-1f45-4b05-bc7e-c9b893b79d68-for-git_main-busytown-release-6793014\n\nReason for revert: b/166531456\nReverted Changes:\nI5ff7a6c0d:Snap for 6793014 from f2989f9c65556d5155dbd57f82f0...\nI77bdff943:Snap for 6793014 from a43295d1825da62af038d345a7a8...\nI2ac5c520a:Snap for 6793014 from c3f124cca05579acf0a6cb589ebd...\nI023b9702f:Snap for 6793014 from 98756d6d3e2bb0ba28eb125caa7a...\nIbc7893d72:Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d...\nIc27847bee:Snap for 6793014 from 8c65adad0bcdfb3acc561063b404...\nIf20bc9352:Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376...\nI6542d17e8:Snap for 6793014 from 3777d883a3857b1a1589181c436d...\nI66e6bb8a9:Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab12...\nI3cd190b6b:Snap for 6793014 from 424180bdc4aa18249e678daebfd0...\nIf92db7402:Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc...\nIaced03c87:Snap for 6793014 from d0e31526c62b2aeb35c293ac96fe...\nI5d28c6b4b:Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aa...\nI30d07bea3:Snap for 6793014 from 7594ec6384c4da320726def34f47...\nI473205f48:Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd...\nI0656b41af:Snap for 6793014 from 44725f06b7f7d6407b5ee82d989b...\nI0f9796067:Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec7...\nI9a38cda8f:Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb...\nI876a82f51:Snap for 6793014 from 11467102abddb6026aaa164c1361...\nI749d7d023:Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293...\nI038daea41:Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24...\nI47aa3131c:Snap for 6793014 from 14cb57e107a3abce8b14937b1f92...\nI32dba8a95:Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528...\nI2ebc9f9db:Snap for 6793014 from 988d4244914e0c749655e8cb6db1...\nIae7c3370f:Snap for 6793014 from 9ffb8852294e06e2d387dc1fb868...\nI6467a7f1b:Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57...\nI8c6375203:Snap for 6793014 from b3061942700265e2bf04af999777...\nI843b2e1f3:Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5...\nIe254f7079:Snap for 6793014 from f22ad3164937a8f2e309965c102b...\nI01e0974ed:Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c42...\n\nChange-Id: I00c786b898b73e58db8bcb1dd0cf3fdaa1ae3038\n"
    },
    {
      "commit": "d52a28ca2c19db7d10bc6c4639a8bd78e1afd5f1",
      "tree": "c687eda00e2c45823cdb1857c64ad48b67578819",
      "parents": [
        "615364792b6fe07869c685e4bccbf7837e1ba97b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 21 17:10:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 25 13:33:12 2020 -0700"
      },
      "message": "audio flinger: handle race condition in AudioRecord creation\n\nA rare race condition can cause a failure to create an AudioRecord if\ntwo creation requests are processed concurrently and thread preemption happens\nat a specific time within the sequence between audioflinger and\naudio policy manager.\n\nThis CL implements a retry mechanism on client side when this particular failure\nis detected.\n\nBug: 161656190\nTest: Regression tests for audio capture use cases.\nTest: CTS tests for AudiRecord\nChange-Id: I155ee4899baeec21e10a1141cb9e323cbc8aa23b\n"
    },
    {
      "commit": "f1a36052bf6c752cec6b60bec058971765bdfa7b",
      "tree": "c0704722e3353375e96e636be4577e64cd2065aa",
      "parents": [
        "4a603cd0594d22d1a3a2bae5bb22009343d4b5bb"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 19 14:33:31 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 19 14:33:31 2020 -0700"
      },
      "message": "Use ALOGD when fails setting event callback.\n\nThe codec changed callback is not mandatory. In that case, it is not\nconsidered as error when fails setting event callback. Use ALOGD instead\nas the information will be useful to debug codec changed event.\n\nBug: 165629960\nTest: make\nChange-Id: I077c7a75acfb474344cd278394a778176471f224\n"
    },
    {
      "commit": "9cd898172de61db05bc49b93d5d8f822bc2fa6f5",
      "tree": "6e84e9f40da4f9d9c4a6e3517d7c6b951fd83492",
      "parents": [
        "37934a22fc6159c2cae85fc5b877424d5bf38628"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jul 01 17:12:06 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 17 11:19:20 2020 -0700"
      },
      "message": "Convert IEffect and IEffectClient to AIDL\n\nThis change replaces the manually-parceled IEffect and IEffectClient\nwith AIDL definitions.\n\nIn addition, this includes a small library that facilitates shared\nmemory regions over AIDL.\n\nBug: 160253486\nTest: Ran effects-related CTS tests. Manual verification of basic\n      audio functionality on Sargo.\n\nChange-Id: I5a9c5f2f24c10072ad5067acc71aa30581af41c1\n"
    },
    {
      "commit": "c9c49cdffb5c344d3ed81f3b4f9575d5b93b83e1",
      "tree": "6edf6d93a7a67eeefe765aa1e1b58097fd13baa2",
      "parents": [
        "6559924d9f035c5707a2a2de0d415cd463e4c831"
      ],
      "author": {
        "name": "yucliu",
        "email": "yucliu@google.com",
        "time": "Mon Jul 13 16:25:21 2020 -0700"
      },
      "committer": {
        "name": "Yuchen Liu",
        "email": "yucliu@google.com",
        "time": "Thu Aug 13 19:08:20 2020 +0000"
      },
      "message": "Add flag DIRECT to track flags for track running on DirectOutputThread\n\nIf the playback thread is DirectOutputThread, add\nAUDIO_OUTPUT_FLAG_DIRECT to the track\u0027s flags. This allows HAL to\nreceive `Flush`, as well as many other control signals, when client\nsends the commands.\n\nBug: 111196161\nTest: On device\nChange-Id: I48fae1e05cfb7aabf53a050c72ec78d18e478b0a\n"
    },
    {
      "commit": "0a488938fa1c1b2b0c02b1c101281c01ff8ed103",
      "tree": "4686aa2bca38cccbbc572bbb75a2bd82d2b9153b",
      "parents": [
        "6a02d53b76d0a3ccb234a3e3d56318883cadd733"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 16:19:35 2020 -0700"
      },
      "message": "Introduce device(s) role for strategy.\n\nAdding interface to get/set/removeDevicesRoleForStrategy. The interfaces\nallows to modify the devices\u0027 role, such as preferred, for strategy.\nGet/set/removePreferredDeviceForStrategy is reimplemented by the new\ninterfaces.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest AudioServiceTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: I0af737542a8599938cae4e142b733159f21ed5a8\n"
    },
    {
      "commit": "660609e595150aa988b8f92a9841626f407ba900",
      "tree": "b7e96a3dd25d10d1a60c6e77cea9200d37adeb64",
      "parents": [
        "7f1fd94d88517edf0d304b1ef30f50901b50842e",
        "9dae45838b759b4d23df36a7a707890c85b38689"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 04:21:39 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 04 04:21:39 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 97937ef8f2 am: fa47739ebe am: 2a9274cd2c am: e98479eb76 am: 9dae45838b\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1385922\n\nChange-Id: I680cc43da8a4d19ac1f9bd8bf6b14489395bc223\n"
    },
    {
      "commit": "2a9274cd2c815d9992527f7b8a4c1d75cc372057",
      "tree": "bde10f8015bbee45ba8d139117e8350abb0946c4",
      "parents": [
        "7c9913d5d5a35242a617ccb82ba4659e777ee007",
        "fa47739ebe4049c51f01b5e86ab40204cf1a27fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 03:07:41 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 04 03:07:41 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 97937ef8f2 am: fa47739ebe\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1385922\n\nChange-Id: I387370424b74c3414cad6796bdf311577c47fe91\n"
    },
    {
      "commit": "a2f59b339b498d38224cb807782f0b59d4378e91",
      "tree": "ec12fb4788066f863a47993818845bdcce08711d",
      "parents": [
        "1fc724e954b4b0384ae12b095424214754c15d94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 03 16:37:24 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 00:13:45 2020 +0000"
      },
      "message": "Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\nBug: 161896447\nTest: N/A\nChange-Id: I7cc02d672a35025650a515247d268693b8bc2dc5\n"
    },
    {
      "commit": "e70bc7fc5910583a4495e3c7f96cf5cad4b947a2",
      "tree": "a86c77b36f12df749cc41a4b9ebc3e8cc12a8b02",
      "parents": [
        "eb3bda06752f9539db64f289039968f8395bf9f5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 22:07:55 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:52:16 2020 -0700"
      },
      "message": "Support scaling haptic data in HapticGenerator\n\nMove function of scaling haptic data from AudioMixer to vibrator\nlibrary. Scaling haptic data in HapticGenerator according to the haptic\nintensity.\n\nBug: 136490803\nTest: play audio-coupled-haptic files\nTest: play audio with HapticGenerator effect\nChange-Id: I6bac63c085332ea87cc6612a8f2f368ad7ef7826\n"
    },
    {
      "commit": "eb3bda06752f9539db64f289039968f8395bf9f5",
      "tree": "5140c44fa37f9a7f6063c72db17624d4289c3e31",
      "parents": [
        "98b8a370059a1e142f3eed4bafdcc9b1e0b230fd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 14:07:03 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:34:29 2020 -0700"
      },
      "message": "Force selecting haptic supported thread when creating HapticGenerator.\n\nHapticGenerator is the haptic-generating effect, which will generate\nhaptic data based on audio data. As haptic data will be truncated on\nnon-haptic supported thread, HapticGenerator makes sense only on haptic\nsupported thread. In that case, force selecting haptic supported thread\nwhen creating HapticGenerator. If there is no thread supporting haptics\nchannel, return a failure.\n\nBug: 136490803\nTest: make, manually\nChange-Id: I865d211c613c793d75d23f5d10c9a01d294fdc36\n"
    },
    {
      "commit": "c0fc041ddb3a9cb379403083a72a262e9283125d",
      "tree": "37e1512196015d3e50e618b70afc7a9a18a9d9fc",
      "parents": [
        "85f96074b1751d5bb671b46470ee982d965121ae",
        "c8ab37b6c6666ab6d69a4c028b7efd3241c754eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 22:20:58 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 22:20:58 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev am: 16c41dd97f am: 2256838714 am: 93a4b15097 am: c8ab37b6c6\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12059582\n\nChange-Id: I433726242391016f6b408214ee7a333db3d7a08f\n"
    },
    {
      "commit": "93a4b15097a5df0ff0ced1d326eb3bf873509cdb",
      "tree": "c61b65121dbd72ba6a09d5cae6730bc41f5f4e33",
      "parents": [
        "36c862a532b69b299106a5cf2a71814389b7931a",
        "22568387142d764a0653493809a6c79d2813760a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 21:43:19 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 21:43:19 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev am: 16c41dd97f am: 2256838714\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12059582\n\nChange-Id: I964ca35c2e0abba151b48a0ff25ade25fb1bec31\n"
    },
    {
      "commit": "40eb0159372c16376a0755e5b86a3f7586fc3294",
      "tree": "c61b65121dbd72ba6a09d5cae6730bc41f5f4e33",
      "parents": [
        "f62ee0193ef91d52c36cc48e62e959720b9ad0f1",
        "16c41dd97f4c0728b8135773e3289c63e37a20f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 21:31:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 21:31:23 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev am: 16c41dd97f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12059582\n\nChange-Id: Ife0a72e4b17c96c39c743be8ed75a52fbe66c2f6\n"
    },
    {
      "commit": "16c41dd97f4c0728b8135773e3289c63e37a20f2",
      "tree": "9d80dc255c81bb2515ee6169ee55455ac539cb8c",
      "parents": [
        "2038329cf5ec113112ba67c205fb6d890be788c1",
        "c435e5f936374098c485a77123cddda8c4f4ea52"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 21:16:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 21:16:42 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev"
    },
    {
      "commit": "c435e5f936374098c485a77123cddda8c4f4ea52",
      "tree": "ae20e4e48fc2ccda1611c3010b378e4dc34b2e63",
      "parents": [
        "f7667505a23d017d984e03fbb71a6fc28be34449"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 01 15:13:17 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 01 16:56:33 2020 +0000"
      },
      "message": "Revert \"Force DIRECT flag on direct output thread.\"\n\nThis reverts commit f7667505a23d017d984e03fbb71a6fc28be34449.\n\nReason for revert: b/160316553\n\nBug: 130296239\nBug: 160316553\nChange-Id: Ib1d3a9bbbba66455585e0c4a2826f3c05263334e\n"
    },
    {
      "commit": "c0b7da80416bb6ce1dd1bb1809bfa71f88320a5b",
      "tree": "e5b5d3b80ed3994350dbf3f39e8ded552c637ee3",
      "parents": [
        "3b19f5a3c73c3809bb909069bbc0ff4d2d695298",
        "3b8af70d026e8a4ef7f73ecaef45e07a02c974b7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jul 01 16:36:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 16:36:14 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003ccutils/bitops.h\u003e for popcount\" am: 48ac45e0e8 am: 8beb417636 am: 2d970888a3 am: 2f13acc6b5 am: 3b8af70d02\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1353586\n\nChange-Id: I7b6ff6dfd6742976dff13254dd686b5083d71085\n"
    },
    {
      "commit": "2d970888a3440fd4e5bf769a8da372c5317f4231",
      "tree": "00b9c60616f6827bc7ef90d6a0bd169b86f99665",
      "parents": [
        "e67841bed62ee078b5456df93a4978996e694f94",
        "8beb417636108658b5843a54650504fec22ed5de"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jul 01 15:49:11 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 15:49:11 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003ccutils/bitops.h\u003e for popcount\" am: 48ac45e0e8 am: 8beb417636\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1353586\n\nChange-Id: I91d2ae019eced64a560602b90b03165c4a7c82c8\n"
    },
    {
      "commit": "c9a2367f660473fbf1b47b2ae46098ae337f89f2",
      "tree": "cd56d5ba761c0795d6dfd4cb8c5f467ea8b8b62d",
      "parents": [
        "c1d40b64b1ee652f173153fb2520201bbed56679"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 30 12:12:42 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 30 12:12:42 2020 -0700"
      },
      "message": "Include what you use: \u003ccutils/bitops.h\u003e for popcount\n\nTest: builds OK\nChange-Id: I46e27589936415dbf5da5722cd4132002c076c99\n"
    },
    {
      "commit": "4c75ca3755fdb9d3f9db2d3542dcd723150cec2b",
      "tree": "63df573ddd25366d4583d776357529511d1cae0a",
      "parents": [
        "75dc68954e41e9148d861d94c195e412e2d9dc86",
        "a04c5c37b227f10650d5f90b61825368e5400a5b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 00:56:35 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 18 00:56:35 2020 +0000"
      },
      "message": "Revert \"audio: allow standby for direct track\" am: eeb744f5f9 am: a19e52def2 am: 039ab6908d am: a04c5c37b2\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11901472\n\nChange-Id: I3860293592fe15f67acd04661282b1ce80622528\n"
    },
    {
      "commit": "a19e52def2419b191b1021171e226856441a4fd2",
      "tree": "3e0cfb7225614beee94de19fbcfb80b2f36b4451",
      "parents": [
        "612623f9301edf7df0c86090042d20a68d9d3963",
        "eeb744f5f985ab272552e1f1a0e5c553a50f5f65"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 00:24:31 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 18 00:24:31 2020 +0000"
      },
      "message": "Revert \"audio: allow standby for direct track\" am: eeb744f5f9\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11901472\n\nChange-Id: Ic27f77bea74dd628a34aa0838a3bfbd47af90f4b\n"
    },
    {
      "commit": "eeb744f5f985ab272552e1f1a0e5c553a50f5f65",
      "tree": "540f8005c5da017fe84777c3b13e98dba5c1629e",
      "parents": [
        "e28883fe1be2f291516adb167ff0dc4367f8adf5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 17 11:10:04 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 17 15:39:57 2020 -0700"
      },
      "message": "Revert \"audio: allow standby for direct track\"\n\nThis reverts commit 9cd7ad101315e0bff4c5f171706c6f80c7e22644.\n\nPrior CL allows Direct PCM tracks to enter standby on pause\nwhich unfortunately causes timestamp frame position to reset to 0.\n\nTest: Audio sanity test\nTest: Verified in bug to remove the regression above.\nBug: 157609403\nChange-Id: I5e0d43a0e50981a300bc05711b71efe0b7e22f98\n"
    },
    {
      "commit": "c31abe46cb5f4b671ca56015c64b17eb3dc3cce2",
      "tree": "ef999ff57b474a76c3ee45b8d88661c25cce55c5",
      "parents": [
        "04830d70120875938430fcf1c66e227297319c04",
        "a476d2f4ab32a2f2386105f96cf6529ef826569b"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Jun 17 02:15:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 17 02:15:23 2020 +0000"
      },
      "message": "Merge \"Adding sanity checks for invalid frame sizes\" into rvc-dev am: d36b149191 am: 810d91562b am: 9fc8fccc36 am: a476d2f4ab\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11851234\n\nChange-Id: Ifb531402bfc3a0b49a0299b3690afa70d81ce4e9\n"
    },
    {
      "commit": "810d91562b9196e6b7e8b97d5e024910965c742b",
      "tree": "775958d67b58efb1335f9a609193814ee8a214d0",
      "parents": [
        "80fcaeecbeaf8c1c96239c798859ba1fbc98f8b2",
        "d36b1491911b73cba7aec2164e2d4b2d333ed243"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Jun 17 01:15:30 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 17 01:15:30 2020 +0000"
      },
      "message": "Merge \"Adding sanity checks for invalid frame sizes\" into rvc-dev am: d36b149191\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11851234\n\nChange-Id: I247c99e417a48a3f751d561d21c5c0371113e5ab\n"
    },
    {
      "commit": "1a89ab3cbe122a8de9c8e001536afef8cd15f28e",
      "tree": "2f50130862b83f92dbd63a02496c2e6f18d8376c",
      "parents": [
        "19d51164324653a7312c6d7bc0fd0ac43d581503"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Jun 12 11:05:47 2020 -0700"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Jun 15 14:23:45 2020 -0700"
      },
      "message": "Adding sanity checks for invalid frame sizes\n\nInvalid frame size can cause the audio server to crash due to a\ndivide-by-zero error. Adding sanity checks to make that issue easier to\ndiagnose.\n\nBug: 155646578\nTest: Ran CarAudioManagerSystemTest suite which was encountering the\nerror\n\nChange-Id: Ibc5b8e13738eb8957d21509b7f87ddaf3115cd4a\n"
    },
    {
      "commit": "00e50dca8efe210386a4572b26d30bdf2f2c5464",
      "tree": "9878118ddda064a5d0f9797b0483095a846f10cf",
      "parents": [
        "39d2f0ae448af990f429587cfd702d28073641ff",
        "5d909bee1f844b74bf05cc11b5906b885664c8fc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 05:56:07 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 05:56:07 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Fix read timestamp if HAL returns error\" into rvc-dev am: 2db0250676 am: 985793c95f am: d262ceef0f am: 5d909bee1f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11722687\n\nChange-Id: If7132488ccdae51cdf9a8ab12eef24ced70a9c7a\n"
    },
    {
      "commit": "d262ceef0f0373f615968bf34cfc162393f5187d",
      "tree": "b70f35d9112b225328bdc0edf07de63998c5218a",
      "parents": [
        "8e4f26a2a9ca90da168d5b83bed1e9dd455e61df",
        "985793c95f2a6588c8300dfedb0080a2b2616409"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 05:27:22 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 05:27:22 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Fix read timestamp if HAL returns error\" into rvc-dev am: 2db0250676 am: 985793c95f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11722687\n\nChange-Id: I2dde377574611251a262e3fa8830a4e58100a06f\n"
    },
    {
      "commit": "b5f23bc69dcf2ad145f9c647246983eac7ef873b",
      "tree": "b70f35d9112b225328bdc0edf07de63998c5218a",
      "parents": [
        "ac739dc9ebfd9c58e0ab2af19f6144f24080372b",
        "2db025067669613aaef043e6471d7035925e4df0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 05:13:53 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 05:13:53 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Fix read timestamp if HAL returns error\" into rvc-dev am: 2db0250676\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11722687\n\nChange-Id: I83702234cd71cc2d194af4e1edaf5943cfe080a3\n"
    },
    {
      "commit": "743f640339310f980cc6480514fb67bcd26cc717",
      "tree": "75f7c4cb4c3682850fddb8ff4080acd2307a4931",
      "parents": [
        "4e48c2477d084919f13ee191a6c36713d83063f3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:17:04 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 16:58:35 2020 -0700"
      },
      "message": "AudioFlinger: Fix read timestamp if HAL returns error\n\nTest: android.media.cts.AudioRecordTest#testTimestamp\nBug: 158112444\nChange-Id: Ibb35c6247ab94e63d586eddd1c95b7fc186e7822\n"
    },
    {
      "commit": "887c01b47397330ea1d199ec5c34d5e74406a2f5",
      "tree": "b3c547ccf26aa69d8c59229d2a79fe90286252ce",
      "parents": [
        "4d8d65a8e6cb3b4f9f20300865486e5a0eabb37a",
        "e3322328a80fa699fc29e7a984be7b8ae85a072d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 21:49:43 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 02 21:49:43 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: fix fast capture silence\" into rvc-dev am: 044eaa62c7 am: 71f517e729 am: 5dd776dd26 am: e3322328a8\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11671291\n\nChange-Id: Ia1c01f75b0010d92aea70cd60dab022b278c562a\n"
    },
    {
      "commit": "e3322328a80fa699fc29e7a984be7b8ae85a072d",
      "tree": "9e7125ca1f513f0b92ee5b44b09fee4fd7b66f21",
      "parents": [
        "c59ab9e1b7a9dd4cb91f25d4574976a259ff3d1b",
        "5dd776dd2684816e13b290130737743ffef42e66"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 21:23:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 02 21:23:06 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: fix fast capture silence\" into rvc-dev am: 044eaa62c7 am: 71f517e729 am: 5dd776dd26\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11671291\n\nChange-Id: I946a022142790e677cffc565b9c9913a9bcc2897\n"
    },
    {
      "commit": "2b32fa03f81f189f088aa5fbd245176a5b7149f9",
      "tree": "9e7125ca1f513f0b92ee5b44b09fee4fd7b66f21",
      "parents": [
        "b42e12ab323c62f313954a247cb68e561e3d6c1f",
        "71f517e7295e90c76b8a09db0032c2a68c78a173"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 21:11:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 02 21:11:47 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: fix fast capture silence\" into rvc-dev am: 044eaa62c7 am: 71f517e729\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11671291\n\nChange-Id: Ia192b7f71f8873019ae5c688514a829480405259\n"
    },
    {
      "commit": "3c726ad0ef8a452a83db4634f2b141d8e60eeaa7",
      "tree": "9e7125ca1f513f0b92ee5b44b09fee4fd7b66f21",
      "parents": [
        "87d6ead1bf25bd53c0eeab936365e0e84bdc2367",
        "044eaa62c79775870cbf08e323b152752edcfb9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 20:55:28 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 02 20:55:28 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: fix fast capture silence\" into rvc-dev am: 044eaa62c7\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11671291\n\nChange-Id: I71ec34d86f122c9aa9661824ffc7055abf006045\n"
    },
    {
      "commit": "33403f0ef8ec7e6217f4969879fa81101e6b84ee",
      "tree": "6036db6c23094fc0aadb3703349aa97f0a86c5dd",
      "parents": [
        "ea63cf2b4479bcef697592e57025b63b60b2af4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:35:06 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:44:33 2020 -0700"
      },
      "message": "AudioFlinger: fix fast capture silence\n\nSilencing fast catpure tracks was not properly implemented.\nFix by zeroing fast capture thread HAL read buffer if the silenced\ntrack is the only active, or by invalidating the silenced track\nif other non fast tracks are active.\n\nBug: 157708122\nTest: repro steps in the bug\nChange-Id: I88b19540815bc1491b9e76c1ae6b6f85e32afa8f\n"
    },
    {
      "commit": "b4f0c8b9b497c7a34485c1a3fa0f93acbf89f017",
      "tree": "4257087735d21ac58d966860701d223aecda5bfa",
      "parents": [
        "a2b2857328d36e9e696aa49bc728854f7bfcc7cc",
        "395acb6b4deb189cc1f2324a3f9ac4bf485e958f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 15 01:10:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 15 01:10:23 2020 +0000"
      },
      "message": "Merge \"av: remove a redundant NULL check\" am: 74e4b7bc7f am: 0e40bab475 am: 43af1ebfdd am: 8da5ebf405 am: 395acb6b4d\n\nChange-Id: I0c4cd7355cbf625c8159e98e08b359f8d014fdce\n"
    },
    {
      "commit": "43af1ebfdd59a7bd43f4bc553dfa5db3787e4ee2",
      "tree": "a4717f143dbbd9f1f643c0939664968423e268e0",
      "parents": [
        "8a79a986c96c442d17ce350b6bdc701739b65fbe",
        "0e40bab4753287d2763c2e7ee64e4f4925466b4d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 15 00:23:43 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 15 00:23:43 2020 +0000"
      },
      "message": "Merge \"av: remove a redundant NULL check\" am: 74e4b7bc7f am: 0e40bab475\n\nChange-Id: I204b6302f9ffa0dd3164cbfaff6c78451f7158e1\n"
    },
    {
      "commit": "a8f90c19feb419a9bd77dac3fcdf92e90eb925af",
      "tree": "67e0624e76cbce8d13146c381fc472b8b09f42e8",
      "parents": [
        "3ec7c256a8e5f5e3ec1dd1338fbc005838c2ff60"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 14 11:27:19 2020 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 14 11:27:19 2020 -0700"
      },
      "message": "av: remove a redundant NULL check\n\nThe unconditional `readInputParameters_l` call below this condition\nimmediately and unconditionally dereferences `mInput`. Either\n`readInputParameters_l` needs to handle a null `mInput` reasonably, or\n`mInput` can never be null. This CL assumes the latter.\n\nBug: None\nTest: TreeHugger\nChange-Id: I46f89f918257f9d4aa762a03c3d03e030a17b4a9\n"
    },
    {
      "commit": "9400a51ff265c8dc41ddf9076213fb589e3c93ec",
      "tree": "9a221ac8bc823cb5740d330185c75baf26d80981",
      "parents": [
        "54ccb4e501ec6a182af0485f5ff22ef20daa4468",
        "4e4b2f47402e1ab5ebe52508cf371dc459d6a09a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 23:24:35 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 23:24:35 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Prepare statistics for protos\" into rvc-dev am: 09869a1c36 am: 2e34a502ab am: eb9e6b337e am: 4e4b2f4740\n\nChange-Id: I584da3823a98084b0f36f40e74356695cf295adc\n"
    },
    {
      "commit": "4e4b2f47402e1ab5ebe52508cf371dc459d6a09a",
      "tree": "7c8678fb84dcec99aa1408dc1cfc66b0c652e6bc",
      "parents": [
        "f408d69ee9484632ab00dd258eba5d8ada37108a",
        "eb9e6b337ea01a028987eb8fd472607b9d1ee502"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 23:12:40 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 23:12:40 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Prepare statistics for protos\" into rvc-dev am: 09869a1c36 am: 2e34a502ab am: eb9e6b337e\n\nChange-Id: I684aae1c161ea80fcd618b8fbb603d221592ebf4\n"
    },
    {
      "commit": "e5f6cd42a9f1e86a318e429fb9fdd956bcbcefe3",
      "tree": "7c8678fb84dcec99aa1408dc1cfc66b0c652e6bc",
      "parents": [
        "fc2a78ee9796a7ecb8436e7cbe884a1d90314a45",
        "09869a1c369e0edc421a379c2ffb3cb3afbbe392"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Prepare statistics for protos\" into rvc-dev am: 09869a1c36\n\nChange-Id: Ia61b527808d26235709725188cf1639c1cbe69a9\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\n"
    },
    {
      "commit": "34fe84b37bdd9fc244c809d6aaad6ca873e8dd92",
      "tree": "3bf9f750b0128c7562dcc15c94a0bf45676ec093",
      "parents": [
        "911dc5b670249f2946496e525c30839f518b175b",
        "fe06191f25f2735edddcfb58e2108b8134f3f96c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 12 00:19:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 12 00:19:13 2020 +0000"
      },
      "message": "Merge \"Set timestamp correction and downstream latency logging as very verbose\" am: 3ec7c256a8 am: 240a1ebca6 am: ff9fc0702f am: e9bef508e7 am: fe06191f25\n\nChange-Id: Ia80fdd773841edbdbf77a9d8e211b84d61c2f863\n"
    },
    {
      "commit": "ff9fc0702faf39f86291d9b05e1bcd7bb9782632",
      "tree": "845da2650c256fa393187659e5a02406c696ac6d",
      "parents": [
        "5279846017b1c7532768b0e3f24302ca7b336fed",
        "240a1ebca637b27df7ee723f365f7e9bb467623f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 11 23:33:56 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon May 11 23:33:56 2020 +0000"
      },
      "message": "Merge \"Set timestamp correction and downstream latency logging as very verbose\" am: 3ec7c256a8 am: 240a1ebca6\n\nChange-Id: Ia598782ee86415718cd1812d3c2a2c6205b81bf9\n"
    },
    {
      "commit": "56a583e0c8927f7fe3efd1611c2be2f99fb88fb8",
      "tree": "fce4b44a354808312f0d26025f8218ef7c44eadf",
      "parents": [
        "b15c79859d290512490393abbe4719fae3c84937"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Fri May 08 15:12:17 2020 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon May 11 20:05:56 2020 +0000"
      },
      "message": "Set timestamp correction and downstream latency logging as very verbose\n\nAllow ALOGV to be set without the above threadloop logs spamming\nthe output.\n\nTest: enable verbose logging, check logcat\nChange-Id: I584f2a255857626c3781b6ff56557fe919480620\n"
    },
    {
      "commit": "b9c27305caf15cfd036f93a5402a086dba3d14f3",
      "tree": "76886414af9c8fe60924aa74f87218e670daeba4",
      "parents": [
        "0ab39985aa1940d5260db54045255cfeb84f3533",
        "f3b980f551f4544e8046f21ef7eb6c3e5e894013"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 08 02:34:22 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 08 02:34:22 2020 +0000"
      },
      "message": "Merge \"Force DIRECT flag on direct output thread.\" into rvc-dev am: 07f031e889 am: e30255e6a9 am: 1006e4c8a2 am: f3b980f551\n\nChange-Id: I4e846842f5a70e41cb026f9c51bcd6aa14bfa164\n"
    },
    {
      "commit": "f7667505a23d017d984e03fbb71a6fc28be34449",
      "tree": "45e9d5370330e051307878944a68468333892420",
      "parents": [
        "cc79094c69bdc85c7c8f52247a00bae1dff68473"
      ],
      "author": {
        "name": "yucliu",
        "email": "yucliu@google.com",
        "time": "Tue Apr 28 15:33:55 2020 -0700"
      },
      "committer": {
        "name": "Yuchen Liu",
        "email": "yucliu@google.com",
        "time": "Wed May 06 18:02:52 2020 +0000"
      },
      "message": "Force DIRECT flag on direct output thread.\n\nForce DIRECT flag if current playback thread is direct output thread.\n\nThis can happen when the playback is re-routed to direct output stream\nby dynamic audio policy.\n\nBug: 130296239\nTest: manual\nChange-Id: I24efd87f74bacf6b769d3663e9521eb27b1704e9\n"
    },
    {
      "commit": "5811ac80806d38d1fee168ec332387e0d8adbd99",
      "tree": "b950c2d1b0410b530217e935daccd1db079d8756",
      "parents": [
        "a5ac8806261537c0330e5b5a8eb1fce66aa0a3ea",
        "14b8bfa6e2299361865d4735a0dc8ff38f8108c3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 01 20:56:53 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 01 20:56:53 2020 +0000"
      },
      "message": "Merge \"ThreadMetrics: Add device-based statistics for audio\" into rvc-dev am: 25b1e25a72 am: a36f994f6c am: 855e8746e9 am: 14b8bfa6e2\n\nChange-Id: I25983fddcf4bb23660c5086ea7700c6e660c945d\n"
    },
    {
      "commit": "a5ac8806261537c0330e5b5a8eb1fce66aa0a3ea",
      "tree": "73d291d9db5ce76bf01b01dad68ec05941c1a6de",
      "parents": [
        "8ea979df863aaa37dcb361218ae7559d51ea2401",
        "9ec29638a746b139b0722cd06d9b5853043957b2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 01 20:56:24 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 01 20:56:24 2020 +0000"
      },
      "message": "Merge \"TrackMetrics: Add device-based statistics for audio\" into rvc-dev am: 31300b43da am: a1d771f00c am: 5abdc47975 am: 9ec29638a7\n\nChange-Id: I1471225e2a92ee49cb498f4b9c672d6a24f18858\n"
    },
    {
      "commit": "cf10d743aedcd29a53f3a4f16a25565f5b462dd8",
      "tree": "17f4ba2cd404347873f8f059d620a2ec890a7529",
      "parents": [
        "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 28 15:38:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:39:50 2020 -0700"
      },
      "message": "ThreadMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire Audio Thread duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ie6d459b06b4a469401ee9e0c194e45ea5ce380c6\n"
    },
    {
      "commit": "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a",
      "tree": "dedee4f6e9c95af20ef76e79bddbc79ed850781a",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 09:04:01 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:18:26 2020 -0700"
      },
      "message": "TrackMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire AudioTrack or AudioRecord duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ia3a5707c43c4530f5a6ac90f52901bd2e0bd0bab\n"
    },
    {
      "commit": "5f998e52181c3e1a1f68411639f04d7058b14373",
      "tree": "6f9a67c3d624fca533e137bd8a4ff7a020184d02",
      "parents": [
        "98448a6349c3804b4232aa8260c707bf82fb56cc",
        "7f763568fbfb0099a432f5b60f6d0a14d14a50d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 29 21:01:46 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Apr 29 21:01:46 2020 +0000"
      },
      "message": "Merge \"Check silent mode when updating output device.\" into rvc-dev am: b79d3b8d4b am: dc4509bc56 am: 0bfce6eddd am: 7f763568fb\n\nChange-Id: I1506271c0de62823375ca59aaeac3664c34d1109\n"
    },
    {
      "commit": "0a957d32556294b0f4209bb5b7914fd05d742751",
      "tree": "5890a5b9d69c9df0905b8652cb30e274c08b6d81",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "message": "Check silent mode when updating output device.\n\nAfter refactoring audio device type, the output devices will only be set\nwhen create/release audio patch. In that case, the output devices are\nempty when creating the thread. If the \"ro.audio.silent\" is set, it will\nmake master muted if the output devices are empty. To fix the issue, do\nnot check silent mode when the output devices are empty, but check\nsilent mode when output devices are updated.\n\nTest: atest AudioHostTest with setting \"ro.audio.silent\"\nBug: 154037767\nChange-Id: I6cb219353e541ba99ba9acebd6ce853128d963d3\n"
    },
    {
      "commit": "1fe174dc13fcf6b41dddf5f998ef36ee0a92f0f5",
      "tree": "70c60e8e688d269f211dd7c36dbdc343c13d5362",
      "parents": [
        "bf2cfdc26d69ddacb24c2946f13b00bb83993d06",
        "6597d73adf83bbf9bb22adb883da5330d1759a8a"
      ],
      "author": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Mon Apr 06 19:35:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 06 19:35:26 2020 +0000"
      },
      "message": "Merge \"Migrate to AIDL generated native power manager interface.\""
    },
    {
      "commit": "d1f1cb68f567363a0b1e4cd4db6286afc6c8a1e2",
      "tree": "3b32985218612d05bf95fed08c18025d1735b2d4",
      "parents": [
        "06675ff30f63323905ff18c3c4e0d34a9fee4c60"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Mar 24 11:57:57 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Mar 27 11:33:09 2020 -0700"
      },
      "message": "Add audio attributes info when starting aaudio tracks on MMAP mix.\n\nIn aaudio, when adding tracks to mixed stream, it is needed to update\naudio attributes to HAL whenever the tracks are added or removed.\nCurrently, only the audio attributes used to open the stream will be\nsent to the HAL. In that case, adding audio attributes of the clients\nwhen starting the stream can help solve the problem. In audio flinger,\nthe client\u0027s audio attributes will be used to create MmapTrack.\n\nTest: play multiple aaudio tracks, add log\nBug: 77279923\nChange-Id: Ic1c536049e194a2bb7513425ee4828d52769d27f\n"
    },
    {
      "commit": "57a3769fb12dc8b2df457e0919850bd976716706",
      "tree": "f170ceb064b6be5d9443af5f2f95ac55c612c270",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Mar 23 17:27:25 2020 -0700"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 16:20:36 2020 +0000"
      },
      "message": "Revert \"Allow call audio access for default dialer application\"\n\nThis reverts commit ac26cf749f457e12a3d8d7456bbcd58a3e028d69.\n\nReason for revert: Feature has been postponed\nBug: 151761909\n\nChange-Id: I90a977a23c5b97ddf95976cf2c4d517165f8e8c2\n"
    },
    {
      "commit": "b3e62a0302fb4d3b51b860d2badbc72663746dd9",
      "tree": "5bf1a4ede6eb601f3639a059ef55ee6d737d50f7",
      "parents": [
        "6437df87da8175a05e2a522c7c71eddcde88f97c",
        "04cb8f72e799d6045583304d1b90cd16875b9bd0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Add master volume to the dumpsys\" into rvc-dev"
    },
    {
      "commit": "04cb8f72e799d6045583304d1b90cd16875b9bd0",
      "tree": "23c22ea54fe8c2df03107e08c578554c4b885514",
      "parents": [
        "8d386f779d76eb2a87ec570bf6ee3c0ce674085f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 13:44:33 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 14:00:23 2020 -0700"
      },
      "message": "AudioFlinger: Add master volume to the dumpsys\n\nNow PlaybackThreads shows master volume, which enables tracking\nsubtle silence issues. (Note MmapThreads already dump master volume.)\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 145107983\nChange-Id: I2efc1a133c0ea07929c646b7e7148a9f3f311912\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "6597d73adf83bbf9bb22adb883da5330d1759a8a",
      "tree": "c77ee775a02f310b2ec3efbab56e3c9fd27e18e5",
      "parents": [
        "bdccc992097e538da25e29a6b663698488539a44"
      ],
      "author": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Fri Feb 28 22:38:25 2020 -0800"
      },
      "committer": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Mon Mar 16 10:06:23 2020 -0700"
      },
      "message": "Migrate to AIDL generated native power manager interface.\n\nMigrate to AIDL generated native power manager interface, use\naidl-cpp generated cpp header file from IPowerManager.aidl.\n\nBug: 149479744\nChange-Id: Icf4e71b5e78a6e3101b423686556ac5393c5e91c\n"
    },
    {
      "commit": "f6eb4c388b6499752c2ee47b663956dcbf0dd7e4",
      "tree": "032329fc713202ce01d5e17420f47bd6025f041c",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 25 14:06:25 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Feb 26 16:16:44 2020 -0800"
      },
      "message": "Add callback for codec format change.\n\nWhen creating native audio track, a IAudioTrackCallback will be created\nsystematically. All callbacks will be cached in Threads and protected by\na lock. Whenever there is a callback event from audio HAL, it will\nfinally trigger callback to native audio track. Currently, there is only\none callback event, which is codec format change.\n\nBug: 150301890\nTest: manual\nChange-Id: I32293627ed923b17dd25f11f0ee0a0c35cd7c01f\n"
    },
    {
      "commit": "ac26cf749f457e12a3d8d7456bbcd58a3e028d69",
      "tree": "0d3ba6751d1bee73ac1d6bf5c50771a2bfede68f",
      "parents": [
        "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Jan 06 14:43:38 2020 -0800"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Feb 18 22:54:20 2020 +0000"
      },
      "message": "Allow call audio access for default dialer application\n\nThe access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.\n\nTest: Compilation and manual tests\nBug: 135197853\n\nChange-Id: I65ca823c235d4d3420630837427103783ad1d1b0\n"
    },
    {
      "commit": "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571",
      "tree": "b24e61ac061d57ac858650b5a6d0940b144b50b3",
      "parents": [
        "ae3b9539cead752af48515f2e43c9985c3fc04e6",
        "5e4d86f837c1b978d4c5d69964a769c5a26e3fae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "message": "Merge \"audioflinger: remove null checks\""
    },
    {
      "commit": "5e4d86f837c1b978d4c5d69964a769c5a26e3fae",
      "tree": "feebebe3255fa50f93a2679c8639d25d1ff6242d",
      "parents": [
        "697aec8505c99b66313aa5c58e3bb68776db82f0"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 12:55:36 2020 -0800"
      },
      "committer": {
        "name": "George Burgess",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 21:21:13 2020 +0000"
      },
      "message": "audioflinger: remove null checks\n\nThis code has null checks with intervening unconditional dereferences of\nthe potentially-null variable.\n\nIt\u0027s not clear that `mOutput` can ever be null to begin with. If it can\nbe, we have a few dereferences to guard. :)\n\nCaught by the static analyzer:\n\nframeworks/av/services/audioflinger/Threads.cpp:2671:19: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\nframeworks/av/services/audioflinger/Threads.cpp:2852:9: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: TreeHugger\n\nChange-Id: I456581204718390088998a1fe2514dff63f6578f\n"
    },
    {
      "commit": "35f8c7c32aa45f0b95cec7e1d31fc92ce79d57ee",
      "tree": "d9225d987f9948174710ad18b7a51bc45686205d",
      "parents": [
        "39d1f3e01dae5f6794e95074118d3f0466c95a7d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 08 11:42:35 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 18:07:26 2020 -0800"
      },
      "message": "audio policy: add call assistant volume stream\n\nRouting strategy call assistant was added without\nassociated volume stream and wass reusing AUDIO_STREAM_PATCH.\nThis is violating the rule that two strategies cannot\nshare the same volume stream.\n\nBug:148588565\nTest: play music and check volume\nChange-Id: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\n"
    },
    {
      "commit": "69d367771be73184f6eb0c0d84bc64afdb311f18",
      "tree": "f8caaf7fdb8510296ba1414309908a5368b867ae",
      "parents": [
        "33873dec8be145a09321009ecabd50cb8c62c090",
        "9930037fa8bba06f299a87d8b427a4ec01f3e16c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "message": "Merge \"Reset direct output thread timestamp on flush\" am: 394b76dd52 am: 1976ed32df am: 9930037fa8\n\nChange-Id: If04ea2471db4615c5baa33377767453c47158a00\n"
    },
    {
      "commit": "999f0e88d2d4dde2bc8f78adefee8b8237a52de4",
      "tree": "a4ed574e8903d7edf213f031eaa720d5cb5bf778",
      "parents": [
        "733c728752ae6958c88b2da4a4c662d266294b70"
      ],
      "author": {
        "name": "Sampath Shetty",
        "email": "Sampath.Shetty@dolby.com",
        "time": "Wed Jan 15 10:19:06 2020 +1100"
      },
      "committer": {
        "name": "Sampath Shetty",
        "email": "sampath.shetty@dolby.com",
        "time": "Thu Jan 30 23:49:42 2020 +0000"
      },
      "message": "Reset direct output thread timestamp on flush\n\nIn order to avoid subsequent tracks using stale kernel timestamps while\ncomputing track timestamps, clear the timestamp info upon flush.\n\nChange-Id: I2b8af33b287aee986871b6415b89f9c53d92f3a6\n"
    },
    {
      "commit": "b68f5ebb53434e800c43715127e2d1032e3a9b54",
      "tree": "7e1c75e02cb63d4c9d1f0b7dc3322001e1463b33",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 16:49:17 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:03:22 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioFlinger logging\n\nTest: atest mediametrics_tests\nTest: mediametrics dumpsys\nBug: 138583596\nChange-Id: I2086c5a780744d409052fde4c5ebc1dc92d95ea8\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "e0b9a360c32f8ab2238b4b3779659e565b221946",
      "tree": "aafbd84d809aa976554c4de7597db1234560ee8e",
      "parents": [
        "5d88539848f2416e327da743f0c38ed597f8f089"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:23 2020 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\nMerged-In: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "5d88539848f2416e327da743f0c38ed597f8f089",
      "tree": "416773cefe0ae261b15f850bff1c35bedead9680",
      "parents": [
        "d700529501d45ab3d0a0b506b2b76cb0212cf5ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:13 2020 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\nMerged-In: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13",
      "tree": "9d5ccc5886dbf0cede2c4b63265f51f8f77eb283",
      "parents": [
        "e5f01a7d5edd517c3a52ca11e6908aead47ba916"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:27 2020 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\nMerged-In: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "a96f9f950d08b1492b10acb2adbc087b49c34c1b",
      "tree": "319ac25407b90f74c881d25ef93beb33c7189a1e",
      "parents": [
        "231bcdc0177f618f18a32512744949938440dd5f",
        "41709559999108cce9b1d725779fc513cc19138d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "message": "Merge \"audioflinger: refactor EffectModule class\""
    },
    {
      "commit": "41709559999108cce9b1d725779fc513cc19138d",
      "tree": "edb0537f270f40e04de64f608824bf7d9d782bcd",
      "parents": [
        "c43423a6c6b6b0506d7b38f8062012a91fbef050"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 18 09:34:08 2019 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "94e872e6894dce7d89954d0515c140ec626d20ba",
      "tree": "3b8a0acc0c514e139b767f255e77a23fbf7d55c2",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4",
        "f27e987d277c186010e8bdd1d5e781158b31f9af"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "message": "Merge \"Naming consistency: MediaAnalytics to MediaMetrics\""
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "6b446ce95d99373c9b1210336fa66d8c4f2d7409",
      "tree": "f67c7be3149340c3066970d3e33125ae7c26d00b",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 15:43:24 2019 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "3fd6a2ccfd9305619289e2cd514fdfa803210f9e",
      "tree": "d0290d31cf14167bad8ce9e769eb8e873dfc1cd3",
      "parents": [
        "c0abc6239e1134ed224a10aa66a364baff71cd07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "message": "Revert \"Audio effects: define interface between EffectModule and audio framework\"\n\nThis reverts commit c0abc6239e1134ed224a10aa66a364baff71cd07.\n\nReason for revert: broken build on target cf_x86_phone-userdebug_coverage\n\nChange-Id: Ic6808bfd31bedfa85b7d7a120e4c6f6273678f73\n"
    },
    {
      "commit": "c0abc6239e1134ed224a10aa66a364baff71cd07",
      "tree": "4471ea4e788da6d7909121a289fe692438d26f28",
      "parents": [
        "880971c8f204ae755f1d4d3be7287aeb1041c42d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 17:53:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:33:05 2019 +0000"
      },
      "message": "Audio effects: define interface between EffectModule and audio framework\n\nThis is in preparation of the addition of audio effects attached to a\nspecific audio device that will not be attached to a particular\nThreadBase or Effectchain.\n\nCreate an clean callback interface used by the EffectModule to interact\nwith the rest of the audio framework. This callback must be implemented\nby the EffectModule parent (e.g an EfffectChain).\n\nAls refactor EffectHandle enabled(), disable() and disconnect methods()\nto avoid dealing with the ThreadBase directly.\n\nBug: 136294538\nTest: make\nChange-Id: I9160f88f7fbb0447b5e679260bf0401d3af591d2\n"
    },
    {
      "commit": "3f75a5bc38894cb6635837c49247c3fa50ed6c47",
      "tree": "a6a256606f82ae742012ec1532ef22009ab0ab25",
      "parents": [
        "602e1ae3a3d4e2ffe158dacfd268547d94a06b38"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 17:22:42 2019 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "39260a69ca1f66f29f250f30fde07fd628785708",
      "tree": "f2126fd1052011c2fe3e35559aa472581193b96e",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd",
        "c76d3a273d0336ffa5d71c11b7a566721eca77f1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\" am: 80a288ad82 am: 68e6412024\nam: c76d3a273d\n\nChange-Id: I7c365f5f22927382788cbe7ecc4383af6565fa65\n"
    },
    {
      "commit": "80a288ad82f21b3254248c2b2df0dfe8a1443929",
      "tree": "c79d326a095f4ce0fb45490893bc41763cfa52d7",
      "parents": [
        "fefdf667a0c093ae069461bd75fa8dfa0289fa68",
        "32dc26e71cb0493f15b4b6480d991ad283405b42"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\""
    },
    {
      "commit": "998004649870bc1ceb51a409ba340f0ea8de31b6",
      "tree": "d4ff3eaf49a7a9bef7daa7ec53d271fbb07f702a",
      "parents": [
        "27d7e20fa30756cadc6613e637e53fd9ada24ffd",
        "e0b975b56ab140c494ed12e71575f44154a8374b"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\" am: 74cfcdf823 am: 8cc35dd935\nam: e0b975b56a\n\nChange-Id: I0dab7e32ef1489c7eac5972dcca7b7c88d2234d7\n"
    },
    {
      "commit": "74cfcdf8237a455f8b8ec8e1b2a08fe777cf7512",
      "tree": "b2a807ef98f524f4ae78e3a26ce4564862725aaa",
      "parents": [
        "9410d2ed179da5df8087b588cf3b8965f8fe8957",
        "f8726f00877d2e9628537da771b12829afb92229"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\""
    },
    {
      "commit": "b8269fd0946976cc820b0abb815f0fb67fc88b76",
      "tree": "1b65e96a5a38d1f9f37675c7e7e16f6f8389cd43",
      "parents": [
        "7946fbe6782ce25599d917d9357389ad1729f2db"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 10:09:03 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\nMerged-In: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "f8726f00877d2e9628537da771b12829afb92229",
      "tree": "109f413c13e023c78416d559686740476079b612",
      "parents": [
        "0287266a3e2543268938e1b91129fb934b92b356"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Mon Dec 02 14:12:01 2019 +1100"
      },
      "committer": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Dec 05 06:44:35 2019 +1100"
      },
      "message": "Allow OFFLOAD timestamp correction for MSD/BUS combinations\n\nTest: audioflinger dumpsys for MSD BUS offload threads show\n      timestamp correction enabled\nChange-Id: I044aaa5d1754ea08b3c78de75e7a4f0bc58dd269\n"
    },
    {
      "commit": "10d86fd087218d43254ec781612a9f86c0022e9d",
      "tree": "35246193cf7aaf924548f3cd15d763bd297d44aa",
      "parents": [
        "c010683e081f48eb72e21cbcf0458efc17184e6b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:23 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\nMerged-In: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "e2e830fd3b444c27abf258718cfba5ad8d209ec4",
      "tree": "4e0642cbfe2b8de89c0abab3b9fd9238515fcabd",
      "parents": [
        "eff0d0824c9c087c00153dece27e5dc3f8cd0c15"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 12:54:46 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 13:23:11 2019 -0800"
      },
      "message": "AudioFlinger: Fix incorrect underrun count on track pause\n\nAlso add track state name helper function for logging.\n\nTest: Play video clip then pause and resume several times\nBug: 145613591\nChange-Id: If4fc2565da9b3d4964fb9fdb6f5854ff6fbadfb8\n"
    },
    {
      "commit": "4f3ac4d0555229a41273107ff0987018ef6b69e1",
      "tree": "b17a402fe68ef0b1c80d234d14ff6d6b7f45715e",
      "parents": [
        "bde7aa5551cc67c2b47f1f67cb66c56b824c1a65",
        "d6f189b4c790f88d72c2227cebbbb8a59cbe8a4e"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 22 10:56:08 2019 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Nov 24 05:16:33 2019 +0000"
      },
      "message": "DO NOT MERGE - Merge QQ1A.191205.011 into stage-aosp-master\n\nBug: 144955631\nMerged-In: I242aebe71ffe7d348eca213252f1691fd444703e\nChange-Id: I40ae7732b4435dc9aa9a3edb57275505e4112a4c\n"
    },
    {
      "commit": "32dc26e71cb0493f15b4b6480d991ad283405b42",
      "tree": "670c5f2c708143dc5e0a106eb256b7686b178f09",
      "parents": [
        "429f364cc4eb0f42298461b88cc3b197f46c04f3"
      ],
      "author": {
        "name": "Jindong",
        "email": "jindong.yue@nxp.com",
        "time": "Mon Nov 11 18:10:01 2019 +0800"
      },
      "committer": {
        "name": "fang hui",
        "email": "hui.fang@nxp.com",
        "time": "Wed Nov 20 10:41:15 2019 +0000"
      },
      "message": "Sometimes no audio output after playing some clips using Files.apk\n\nSometimes after switching songs in Files, audio driver\nenters \"PAUSED\" state, and no sound anymore.\n\nIn normal case, \"paused\" track will be removed from active tracks,\nthen audio hal will make this stream enter standby mode.\n\nActually there are two paths to move paused tracks into standby mode:\n1\u003e track underruns twice:\n    if (--(track-\u003emRetryCount) \u003c\u003d 0) {  // mRetryCount is 2\n        tracksToRemove-\u003eadd(track);\n    } else {\n        doHwPause \u003d true;   // pause\n    }\nUnfortunately, this issue happened exactly in the middle state:\ntrack underrun for the first time, it enters to paused state;\nthen before it underrun for second time, it is stopped due to MediaPlayer.\n\n2\u003e track is paused and code goes here:\n    if (mStandby || !last ||\n            track-\u003epresentationComplete(framesWritten, audioHALFrames) ||\n            track-\u003eisPaused() ||\n+           track-\u003eisStopped()) {\n        tracksToRemove-\u003eadd(track);\n    }\nBut when the issue happens, track is in stopped state,\nthere is no logic to standby it anymore, so add one.\n\nChange-Id: I70cac1f3d6b065690400f6a2363712d4642a9763\n"
    },
    {
      "commit": "8f278eea9deff0d368e1b770cb8c58e4ccb4b359",
      "tree": "f8c22c1f4657e45860da41320aaf86ee6b6400a8",
      "parents": [
        "e6cbccaef91a63e0a739f084fdc94a216a08efd6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 15:32:54 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "c52b1ffec2ad11ad0ea1fb7e702da1086c9df437",
      "tree": "b55dcb697023b715848166282b3b588c0aa72530",
      "parents": [
        "c76250c8279552db0be9068e49f65696f931c011"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 08 11:37:27 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    }
  ],
  "next": "b0de569edd2d27b8dae9e3048f9c131b6ebc2d45"
}
