)]}'
{
  "log": [
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "6c79632bbece71f7af0c2453bb62a5d6f0cca664",
      "tree": "a70a17d1f723b7e0241bb762bf5478e3c9947348",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 14:13:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 10:29:30 2019 -0700"
      },
      "message": "refactor mutexes for audio effects in audio flinger and audio policy\n\nRemove effect specific mutex (mEffectLock) in AudioPolicyService: Due to\nconcurrent capture (among other reasons), it is necessary that the audio\npolicy manager state preserved by mLock includes audio effects\nregistration and enabling.\n\nMoved all audio policy API calls from audio flinger out of locked regions\nfor audio flinger, thread and effects mutexes to avoid cross deadlocks\nbetween audioflinger and audio policy manager:\n- centralized audio policy API calls in EffectModule::updatePolicyState()\n- the enabled state now reflects the state requested by the controlling\nhandle, not the actual effect processing state: a suspended effect is\nnow considered enabled.\n\nA new audio policy manager API moveEffectsToIo() is added to atomically\nhandle moving effects to a new input or output without having to call\nunregister \u003e register \u003e enable sequence.\n\nAlso fix assert in setStreamVolume to match volume group refactoring\nin audio policy manager.\n\nBug: 128419018\nTest: CTS tests for audio effects.\nTest: manual tests with Duo calls, Play Music, Youtube, notifications\n with and without Bluetooth and wired headset.\n\nChange-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd\n"
    },
    {
      "commit": "5bcf284e8177a2dfb58e01e8e1a88ec13165c29d",
      "tree": "76d439db32a3c18870170b140ba9f14ab8248afb",
      "parents": [
        "41618a66a853a441304bb8fdefcafc903b3ab27c",
        "74e01fa7d96b71952b32ec98f1ac352e6e74186b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "message": "Merge \"Audioflinger: tracks monitor OP_PLAY_AUDIO\""
    },
    {
      "commit": "74e01fa7d96b71952b32ec98f1ac352e6e74186b",
      "tree": "c48d9297fb55046c3dc0a14d0652b8072fa0db62",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 25 12:18:09 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 02 15:04:30 2019 -0700"
      },
      "message": "Audioflinger: tracks monitor OP_PLAY_AUDIO\n\nMute/unmute tracks according to changes in OP_PLAY_AUDIO for\n  the current usage.\nIn audio policy: always assign AUDIO_STREAM_ENFORCED_AUDIBLE\n  to sonification tracks with AUDIBILITY_ENFORCED flag.\nDo not mute tracks from root / audio server.\nDo not mute UI sounds on AUDIO_STREAM_ENFORCED_AUDIBLE\n  stream type.\n\nBug: 112339570\nTest: enter DnD, play notifications, verify not heard\nChange-Id: Ia5f1118481cf0573101acf2092fbd0ce2cf8c038\n"
    },
    {
      "commit": "959e2d068b21e6b9443d5e98fa25a607d1f93993",
      "tree": "c889e8fbdd9d07065759b82e354b3ef42ad255d0",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 11:08:19 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 11:23:00 2019 -0700"
      },
      "message": "audioserver: Use timed lock instead of bouncing for dumps\n\nThe technique of bouncing lock attempts does not work well\nin the case when another lock has higher priority and acquires\nthe lock frequently. Timed lock works better in this case\nbecause the acquiring thread is then put in a queue and gets\nthe lock as soon as another thread releases it. The wait time\nin the worst case (deadlock) is the same.\n\nBug: 118842894\nTest: Run VOICE_COMMUNICATION capture + AEC effect, dump audioflinger\nChange-Id: Idc4fc2b6f5faf6988979f9354dd92441af33e600\n"
    },
    {
      "commit": "1234008771662d2b250d6d4972adb04de963fb0d",
      "tree": "d050c75b3935ed9d20676312df0e7cd1d94cd13c",
      "parents": [
        "60c73a445b632cc2e233b1a275efeee7414a41a4"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Mar 19 09:35:05 2019 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Mar 21 21:51:49 2019 -0600"
      },
      "message": "API changes in MicrophoneDirection\n\nBug: 128523813\nTest: Build, Testbed app\n\nChange-Id: I7b5ee8ba4eec1090866d8aef891a98d50cd09cc5\n"
    },
    {
      "commit": "e778c4254d3018553ff245448aa9d750c5628699",
      "tree": "c60e1d80b508471c7de9d409420e563813cabbf9",
      "parents": [
        "0a2fc30b155c92db29ed483f85c8e92c3c9cf85b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 14 15:04:30 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 14 15:37:55 2019 -0700"
      },
      "message": "AudioFlinger: createEffect always look for same session effect chain.\n\nTest: CTS AudioEffect tests\nBug: 128630419\nChange-Id: Ieb08abfcb7a983e05fa8f25f6609468d9bd4620b\n"
    },
    {
      "commit": "153f92d57b6a1d2fdc7fa601bbc86db31646a8f9",
      "tree": "0d380f13a58ff8fdf073dd974dcb55e4d18ef75c",
      "parents": [
        "45986c74cd5253bcc81b1b4954e3ff3300f7e6d8"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 18:33:28 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 15:49:11 2019 -0800"
      },
      "message": "Add secondary output to audio tracks\n\nThe secondary are returned from mixes (from DAP loopback\u0026render),\nfrom getOutputForAttr.\nAll getOutputForAttr* of the stack are update.\nInternal getOutputForAttr use descriptor, external one use handles.\n\nThe secondary output are saved in each track and the track is\ninvalidated if the list of secondary output changes.\n\nIn audio flinger, create a pair of recordTrack \u0026 patchTrack to pipe\nthe intercepted audio audio to the secondary output.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: Id6523d9e383c15a0e39313d5f355df809b7e72fe\n"
    },
    {
      "commit": "45986c74cd5253bcc81b1b4954e3ff3300f7e6d8",
      "tree": "7c549d046cb5b342affb16ac8fdfeb13d3f53f3b",
      "parents": [
        "ba98acb34e60b2bf2dac5a55c4acbb80b5408568"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 18:22:59 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 09:38:33 2019 -0800"
      },
      "message": "Audioflinger: add timeout to PatchTrack\n\nAdd support for timeout that was only supported by PatchRecord.\nThis is implemented by moving the timeout and common code in a base\nclass.\n\nAlso remove PatchRecord useless virtual inheritance of RecordTrack.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I833148f31a311ca41092be1d7e2d170f086322c5\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "ae340bde6d16f0046887fa0e73fba00cdd5405d9",
      "tree": "8b84e19910fcba4e4ba54f0a7b1e6649bf7d8bb8",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396",
        "3fae037db39ff89707c3a58ef1419229a00ad71d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 01 01:53:28 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 01:53:28 2019 +0000"
      },
      "message": "Merge \"Add master audio balance\""
    },
    {
      "commit": "57303cc4312686e02e754ba99a81f0cf71144757",
      "tree": "5118a0c03e035d13c203118e1336e33803b1de08",
      "parents": [
        "77270b880570e07a5d80b23371f53638ec30fb5c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 18 15:45:57 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 30 17:07:10 2019 -0800"
      },
      "message": "Interface between audio server and vibrator service\n\nThe haptic playback should be controlled by vibrator service. Via the\ninterface, audio server could notify vibrator service about starting or\nstopping haptic playback and get vibrator intensity from vibrator\nservice. Vibrator service could call mute/unmute to control the haptic\nplayback.\n\nTest: Manually\nChange-Id: Iad24813977e4dea0d67a91f8f8b390a016ce4ca2\n"
    },
    {
      "commit": "3fae037db39ff89707c3a58ef1419229a00ad71d",
      "tree": "33087aa031e45fdc65add4ffaaf74e6a7872cf0f",
      "parents": [
        "48f59ed61b902f0e6cb7811bd8ee5fa60ab63abe"
      ],
      "author": {
        "name": "Richard Folke Tullberg",
        "email": "richardfolke.tullberg@sony.com",
        "time": "Fri Jan 13 09:04:25 2017 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 28 16:21:52 2019 -0800"
      },
      "message": "Add master audio balance\n\nTest: Change Balance through Settings, play audio\nBug: 28390736\nCo-author: Ed Savage-Jones \u003cedward.savage-jones@sony.com\u003e\nChange-Id: I0169b436ccbaa5628584d9f4954dd7c76d021aae\n"
    },
    {
      "commit": "3903e9f58fdbdea94052f5870792f1e61a2f0f2b",
      "tree": "084a33e117db465218fdae52984e1b26d58113fa",
      "parents": [
        "aa1523c14af06a2f213e570d12ce01b71422b26a",
        "b4e037e01450cbc99191a89e507805974d347899"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 18 03:37:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 18 03:37:23 2019 +0000"
      },
      "message": "Merge \"AudioFlinger: provide downstream sink device to software patch source\""
    },
    {
      "commit": "b4e037e01450cbc99191a89e507805974d347899",
      "tree": "9e1dff2e3afe399eec542594a4ed480a9d1adf99",
      "parents": [
        "8292a716361d0f02de2b79242aec4630664bc770"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 14 15:56:33 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 14 15:56:33 2019 -0800"
      },
      "message": "AudioFlinger: provide downstream sink device to software patch source\n\nWhen opening an input stream for a software patch, pass in\nthe downstream destination device info. This helps the intermediate\nmodule to set up any device-specific processing.\n\nNote that the intermediate module must implement Audio HAL V5.0\nin order to be able to receive this information. It\u0027s not available\non the legacy audio HAL API either.\n\nBug: 120859615\nTest: make\nChange-Id: I542a47d2c299fe19f576d5f5c2b237cc00ae5b93\n"
    },
    {
      "commit": "03a6e6a08dbda1c94e0c9ce6fba4a4abd3df6d59",
      "tree": "e609e29b32764e6fd970f16c78d3bbee5be401bb",
      "parents": [
        "c2684ac61bdbfd9913cf1361a6436272756bc6d6"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Dec 04 10:54:13 2018 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Dec 20 17:37:55 2018 -0700"
      },
      "message": "Adding Audio HAL V5: Direction API\n\nBug: 119137468\nTest: Testbed app.\n\nChange-Id: I1b3c81079000958da80d36616fe06930d876aac3\n"
    },
    {
      "commit": "405733256a9cf62c9e3be2d8dbd5ccb9cb7c5d97",
      "tree": "b395e3e093aa3010b54f9227e8a7cef08ed1b2a0",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 08 12:08:02 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 11 17:18:05 2018 -0800"
      },
      "message": "Support open output stream with haptic channel mask.\n\nWhen haptic playback is supported according to audio policy\nconfiguration file, try to open the output stream with haptic channel\nmask. When trying to creat a track with haptic channel mask, use haptic\noutput if it is available.\n\nBug: 111454766\nTest: Manually test\nChange-Id: Ia8c70dd7f602a134d0509630eb734b8c540dea7d\n"
    },
    {
      "commit": "ac917aca235ff5170f00c2ee933f41f07a40232d",
      "tree": "2927cc6419b7fe615ccdc977224f6f3ed656f58e",
      "parents": [
        "e4eb88fa5fe62a9b6b709fbf2ff26f37acf6db20"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:44:17 2018 -0800"
      },
      "message": "Add selectPresentation API to IAudioTrack\n\nThe Java AudioTrack interface has a setPresentation API. This\ncalls the setParameters API in IAudioTrack. However, this does\nnot eventuate into a call into the android.hardware.audio@4.0\nIStreamOut selectPresentation API.\n\nAdd selectPresentation API to IAudioTrack and call down to the\nandroid.hardware.audio@4.0 IStreamOut selectPresentation API.\nTranslate into calls to setParameters API for legacy HAL\ninterfaces.\n\nBug: 63901775\nTest: compile\nChange-Id: Id634a107f3f93ab18dc80d2bd0af67bda35e859f\n"
    },
    {
      "commit": "2942a4e2d97edb8b14d7fac16f9cad12f78048bc",
      "tree": "97f3fd66a453766e390a4bba7e9c863834855ce8",
      "parents": [
        "ea055e6dab6bcbf9bf90711d602bcf59395f0d59"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Sep 12 17:41:27 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Sep 18 17:32:33 2018 -0700"
      },
      "message": "Remove --json option from dumpsys media.audio_flinger\n\nThe more recent work that this was supposed to become is reflected in\ndumpsys media.log, so this commit removes some code clutter that is not\nused anymore.\n\nOther Changes:\n- Use std::make_unique for creating unique_ptr objects\n\nTest: build, dumpsys media.audio_flinger\nBug: 68148948\nChange-Id: I4841e118c2cdee4ada4c6cdc0fff1ec2e12b38c4\n"
    },
    {
      "commit": "dc099c2cd3ab1d5a9adf4c39dd33e0b5037544f1",
      "tree": "5b7cc829081ef671cb075e726e8f03baa7405b34",
      "parents": [
        "05fa8856abaa1e050c3c8e6ba97fc8878ed7600a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 18 13:46:39 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 18 14:38:05 2018 -0700"
      },
      "message": "AudioFlinger: Preserve recent MMapThread history for dumpsys\n\nTest: Aaudio tests, check audioflinger dumpsys\nBug: 116026119\nChange-Id: Ib891686480b2579e4d3b2e419c83aec0a79ba812\n"
    },
    {
      "commit": "a8115dc6d814c18d1ec68067425485add3ea1af2",
      "tree": "2bed9bcf27ad65a7495f82d59ac259a0072647ff",
      "parents": [
        "51eb281710acec50c28306e03155224cf5198aad"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 24 15:51:59 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 28 15:46:05 2018 -0700"
      },
      "message": "AudioFlinger: Add Thread history to dumpsys\n\nTest: Bluetooth + audioflinger dumpsys\nBug: 80155745\nChange-Id: Icee723a9fe653395119dd639883be5b7d8f3f158\n"
    },
    {
      "commit": "99e1f06a37f484315d62c6cdad6078a7e092a900",
      "tree": "b9c6837a3c294c80d43287b976b30c60353cfb1f",
      "parents": [
        "61e9029a7da63282620acf68d8ac13fe4c080744",
        "a0a5d2a9061cfb58b6f7632117502f2061ab74cb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 21:48:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 21 21:48:22 2018 +0000"
      },
      "message": "Merge \"Add external setParameter to audioflinger dumpsys\""
    },
    {
      "commit": "5786e01d64860448d93b681a59c7d5a60bc12298",
      "tree": "5ac379a0d0ce652fd71b9f2fae34fb0b913ded6a",
      "parents": [
        "86be8728fb6efae5a35ed4840c45a2eafce06823"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Aug 15 09:03:47 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 17 14:57:40 2018 -0700"
      },
      "message": "NBLog: Restore log dump and add new logging types\n\nMerging is temporarily disabled for now because the readers managed by\nthe merger are the same as the ones used for the dumpsys log dump, and\nreading from the log effectively consumes the buffer. Eventually, the\nreaders for the two functionalities will need to be separated to avoid\nconflict. The dump of the merged buffer is also disabled, which removes\nthe dumping of histograms.\n\nThe new types added are monotonic thread cycle time, CPU thread cycle\ntime, CPU frequency, and latency (which will need to be specified in\nfurther detail later). Logging support is added only for monotonic\nthread cycle time at the moment.\n\nTest: build, log monotonic thread cycle time in FastThread, check output\nin dumpsys media.log -r.\n\nChange-Id: I1b781d6db102fb917fd0bac964eeebd0309234c0\nBug: 68148948\n"
    },
    {
      "commit": "a0a5d2a9061cfb58b6f7632117502f2061ab74cb",
      "tree": "5d97d831dbb49da3617a6b66630a83fee07c8d72",
      "parents": [
        "5bf00e8858de16b294174c35b338b99b5a3259fb"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Aug 06 15:03:18 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Aug 09 09:38:16 2018 -0700"
      },
      "message": "Add external setParameter to audioflinger dumpsys\n\nApps are not expected to send any setParameter, system should only send\nvery few keys. This log can help verify what is bypassing audioflinger\ncontrol.\n\nOnly the first 1024 characters are logged per SimpleLog limitation\nto avoid high memory retention in the privilege audio service\nin case very big strings are sent.\n\nThus in the worst case around 60*1*3\u003d180kB can be consumed in Audioflinger\nby those logs (aka: no app memory deny of service).\n\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: Ida9c21be9d20528f67a63eddf6ca7a6c962c7cc2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "442868f036df6e9966f824ec256619b2923a9ed4",
      "tree": "f823452661efd87177897ba4b82d32ef944fd6ec",
      "parents": [
        "4455af941c4d33859215b836ac03571ee7a360cf",
        "1882f16c80d6e1e047a43c1e685a005034b138e4"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 03 23:58:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 23:58:32 2018 +0000"
      },
      "message": "Merge \"Audioflinger dumpsys: Use libjsoncpp for json dump\""
    },
    {
      "commit": "1882f16c80d6e1e047a43c1e685a005034b138e4",
      "tree": "29fb74695be6d869ca6a0f51e310e6752eb8c36b",
      "parents": [
        "5b13ff8f66e4b376127af9cfb6fa3f075f17eaa2"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Thu Aug 02 18:05:39 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 03 15:44:15 2018 -0700"
      },
      "message": "Audioflinger dumpsys: Use libjsoncpp for json dump\n\nTest: dumpsys media.audio_flinger --json\nBug: 68148948\nChange-Id: Ieebe2c52e3613e48a5ec5cbb2b1f167a32d5a47d\n"
    },
    {
      "commit": "2046ec756ee59acc4cfa1d52eb97aaa84efc9754",
      "tree": "352eca0b14dc5e4a368f0475df975ad431515d9d",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:00:55 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:12 2018 -0700"
      },
      "message": "Update getEffectDescriptors() to include type\n\nAllows getting effect descriptors by type or uuid,\nnot just by uuid.\n\nBug: 78528249\nTest: Builds. Manually tested that an app playing audio with an effect works.\nChange-Id: I9d339a7d6d81161065e1adaf427dd2d3430436c2\n"
    },
    {
      "commit": "a746b36f237e6b05b207afac9a507cc706f5cdc6",
      "tree": "15cbe3725413b1345c5684c5e908620879f85482",
      "parents": [
        "c3fd2a4396d692d9940b09e7a933b53bc808daab",
        "7b651154476414dcb15b822a9ebea2b4bf25cd3d"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Sat Jul 21 00:31:51 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jul 21 00:31:51 2018 +0000"
      },
      "message": "Merge \"dumpsys: add --json option to media.audio_flinger.\""
    },
    {
      "commit": "7b651154476414dcb15b822a9ebea2b4bf25cd3d",
      "tree": "04ebf92f0b3181d4cfbcb3cf460ddd5f9fb2a846",
      "parents": [
        "8180b74a8e2c02eee7938b32fd0ecfeda53c91be"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Jul 13 10:17:19 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Jul 20 14:56:51 2018 -0700"
      },
      "message": "dumpsys: add --json option to media.audio_flinger.\n\nCurrently only extracting audio performance data.\n\nTest: dumpsys media.audio_flinger --json\nBug: 68148948\nChange-Id: If207e7e20683dcf8d8d5874417cd7466c78a5df0\n"
    },
    {
      "commit": "b261ef51db4891290647ee2fe2365b0ece6a530e",
      "tree": "9fe80b6600edce4fd80f7feaedbdf972303b9e8c",
      "parents": [
        "24b617232c7400c9165bde09542bdb41cb113089"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 16 13:34:38 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 17 13:05:34 2018 -0700"
      },
      "message": "audioflinger: Forward stream parameters to downstream patches\n\nWhen passing parameters to immediate output streams also check\nif there are any downstream patch threads that need to receive\nthese parameters.\n\nAdded AudioFlinger::forwardParametersToDownstreamPatches_l\nmethod, similar to existing broacastParametersToRecordThreads_l.\n\nBug: 63901775\nTest: make\nChange-Id: I83229fd6f4890e5e69a40d568d1c3e1eebed6504\n"
    },
    {
      "commit": "f323451b24b06c4f3375488409af7c93ce08ba73",
      "tree": "593f3e5441d6f69e653e0d7a2e7fde1a2f5190b6",
      "parents": [
        "999ad2cf2a0a687abfb7ee147c3261f609cc4806"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 03 14:51:47 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 10 10:59:21 2018 -0700"
      },
      "message": "AudioFlinger: Dump Direct and Offload timestamp statistics\n\nTest: AudioFlinger dumpsys during offload playback\nBug: 80502521\nChange-Id: I8b4cb5eb47000a075a8ecaefdf4eb4c4ee23a304\n"
    },
    {
      "commit": "2e2c0bbe19c4cc50ee9ae8bef7955229fe2fb058",
      "tree": "c7c8defc8161838cd5f7dd8f3d221493a9d441ff",
      "parents": [
        "14dc10deebda497664a5ec0943c1083f64d2ed9d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 11 19:13:11 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 18 15:16:41 2018 -0700"
      },
      "message": "Timestamp: Collect and dump statistics\n\nTest: Audioflinger dumpsys\nBug: 80502521\nChange-Id: I8c7c8b0c2f0f51dc898ed96f6a973e20490022f1\n"
    },
    {
      "commit": "8946a28aaaadf426ee22b098b4aec7be4d9edc00",
      "tree": "85a9520841616e8c1188d51fd44591543148e874",
      "parents": [
        "acb7d9ddc1955682379ea514082511b9ea44482e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 19 20:04:56 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 21 11:37:46 2018 -0700"
      },
      "message": "AudioFlinger: Fix Tee logging\n\n1) Fix bad WAV files for tee sources that aren\u0027t 16 bit PCM.\n2) Allow multiple RecordThread tees instead of one.\n3) Allow dump from non-fast MixerThreads (e.g. deep buffer).\n4) Parallelize tee dumping for improved concurrency;\n   dump outside of AF lock.\n5) Async dumping to allow dump to be issued in time critical code.\n6) Improve file naming to distinguish record vs playback tracks,\n   threads, and dump reason.\n7) Allow Tee insertion anywhere in code with global running\n   Tee management.\n8) Increase resolution of filename time to msec avoid file overwrite.\n9) Dump track data upon removal from active tracks to improve\n   timeliness of dumped data.\n10) Dump tee data on tee destruction.\n11) Refactor Tee code out of AudioFlinger.cpp; minimize footprint.\n\nAudioFlinger enabling code requires Configuration.h define TEE_SINK;\nthis is disabled, hence avoiding regression risk.\n\nTest: Enable tee log, repeatedly call dumpsys, examine files.\nBug: 78369241\nChange-Id: I7b22cfa7dbbc1601828de931522065a509ab4047\n"
    },
    {
      "commit": "444ecc3476107a1e80f1573b20ceca5e9949e4ae",
      "tree": "0c431300c26a616e77e1200f3d3b46638f1668e5",
      "parents": [
        "6205a06d20d6b92d52044e8076beaac4c7873a21"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue May 01 17:40:05 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 04 11:05:38 2018 -0700"
      },
      "message": "PatchPanel: Cleanup and refactoring\n\n  * Unified software patch endpoints management code.\n\n  * Noticed that Patch::clearConnections is only called before\n    getting rid of Patch instance, so there is no need\n    to explicitly clear references to endpoints\u0027 Track and Thread.\n\n  * Fixed out-of-memory handling when creating tracks for\n    a software patch.\n\n  * Factored out finding HAL Device by module handle.\n\nTest: verify transitions to/from BT while playing media and making calls\nChange-Id: If6459c477054d6dff60dfa13f2d99ee2d6e887ad\n"
    },
    {
      "commit": "dea53040273928d1cf4dc028c93afac706445c49",
      "tree": "2f1de9deed88e8dbe142d39dfab92a00afba09a8",
      "parents": [
        "03625f6e43934ebf53864160a6e325eefcc3336e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 26 13:10:21 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 26 16:45:06 2018 -0700"
      },
      "message": "Refactor PatchPanel\n\nMajor changes:\n\n * since PatchPanel is internal to AudioFlinger, and has the same\n   lifetime period, there is no need to use reference counting;\n\n * setAudioPortConfig moved to AudioFlinger;\n\n * store Patches in std::map instead of SortedVector, and\n   directly--not as pointers;\n\n * move {create|clear}PatchConnections into Patch class;\n\n * use __func__ in logging.\n\nTest: test basic audio functionality on taimen\nChange-Id: I813fd8430a0e97cd01cc74e6b3b828b10ff5acd4\n"
    },
    {
      "commit": "f1047e87767be1acd2c32f4d36028d1d0014f4c0",
      "tree": "4affc2ed3ee3f81e94f90dd4d3a012afa0ee364e",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:18:20 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 09:45:32 2018 -0700"
      },
      "message": "audioflinger: filter out reserved keys from setParameters()\n\nOnly allow setParameters() for reserved keys when received from\naudioserver UID. For instance, keys used to control routing or audio\nstream configuration are reserved for use by audio policy manager.\n\nAlso use multiuser_get_app_id() instead of duplicated code to\nextract application ID from UID.\n\nBug: 77869640\nTest: manual audio smoke tests.\nChange-Id: I88852e8fddf7f705e4a084fc02d9ced1f4b0de92\n"
    },
    {
      "commit": "12381092fdb5810cb27f738435ea8a0e3d2d0f42",
      "tree": "534768433f4916952e94e212fdb923b6a3ed5b40",
      "parents": [
        "80ee2722d64a73777fa76027b1568e61dec8d910"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 09:19:59 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 16:26:58 2018 +0000"
      },
      "message": "Revert \"Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\"\n\nThe original patch was breaking the fast track volume, so it was\nreverted.\nIn order to fix the original patch, revert the revert and in the\nfollowing patch apply the fix.\nThis makes review easier as only the difference to the original patch\nwill be present.\n\nBug: 38184704\nBug: 69623109\nBug: 77892019\nTest: Patch already tested for original patch and is tested for following\n      patch that fixes this patch.\nThis reverts commit 80ee2722d64a73777fa76027b1568e61dec8d910.\nChange-Id: I06914911c2435df167fff05ce5ca40dd1ed90f39\n"
    },
    {
      "commit": "80ee2722d64a73777fa76027b1568e61dec8d910",
      "tree": "e3e8744cefcf0785addf9ceb1519fceac3020293",
      "parents": [
        "c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 15:53:48 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 16:09:19 2018 +0000"
      },
      "message": "Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\n\nThis reverts commit c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5.\n\nReason for revert: fast track volume broken\nTest: none, it is a revert\nBug: 77892019\nChange-Id: If00616afae5c069cf0b6bd7c2da2a6d4af72180e\n"
    },
    {
      "commit": "c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5",
      "tree": "534768433f4916952e94e212fdb923b6a3ed5b40",
      "parents": [
        "b31f96ffee12f920d32d868c627cf34f1afeb988"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 03 09:00:09 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 09 16:19:11 2018 -0700"
      },
      "message": "Audio V4: Send volume and duplicated track attr in update metadata\n\nOnly the volume of MMAP thread was previously sent and\nthe attributes of duplicated tracks were skipped.\n\nBug: 38184704\nBug: 69623109\nTest: check that the HAL receives correct track metadata volume\nTest: check that the HAL receives correct duplicated track metadata\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n\nChange-Id: I1e3b14edd8c9a5a65d2b9f4cf8660997c81c701c\n"
    },
    {
      "commit": "54c28999afa7834a8dbc6079a2707598a37db56f",
      "tree": "2677c29642cc1c92056ac37a802f4c53d51787f7",
      "parents": [
        "218f8e3bec0070731bff41513b19f64d481dad24",
        "db959740904eba27582feee48234463f3553b199"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Feb 26 18:34:17 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 26 18:34:17 2018 +0000"
      },
      "message": "Merge \"Don\u0027t use cutils/Atomic.h\" am: 853996e7b2 am: 072aaa2e39\nam: db95974090\n\nChange-Id: I7f930bda6e51c0d4368747f8e4a0eac92e68b2fd\n"
    },
    {
      "commit": "f0c02ce99ccac584f4f4790390702aabc4d92c90",
      "tree": "f5aa741235215cd73df2025b8e42394486a52ae8",
      "parents": [
        "fa87fc3b31e273efe3a2f5090dcd9c283e414aa5"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 23 14:53:55 2018 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 23 15:02:39 2018 -0800"
      },
      "message": "Don\u0027t use cutils/Atomic.h\n\nTest: builds\nChange-Id: I56aea1dff5a2bd98d119eb374e7a28a12a20861c\n"
    },
    {
      "commit": "98e38191c37d3e324b34a6aafeef8e43366003ef",
      "tree": "349602f9c4d9dd7f4720328cc72f891f9515a0ce",
      "parents": [
        "7c9dbd5440e8119ca439e4b9315843bd348b991f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 18:31:53 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 21 12:54:41 2018 -0800"
      },
      "message": "audioflinger: remove obsolete stream volume management\n\nRemove the ability to change stream volume globally (on all outputs)\nin audio flinger as this doesn\u0027t make sense when stream volume is\nmanaged per device.\n\nAlso, do not store stream volumes globally in audio flinger and apply\nthem when a new output is opened. The ground truth for stream volume is\nin audio policy so make sure stream volumes are systematically applied\nby audio policy when an output is opened according to the selected device.\n\nBug: 70332110\nTest: audio smoke tests\nChange-Id: I7180a428af53aafdee82aadbcaf284c028ac5554\n"
    },
    {
      "commit": "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0",
      "tree": "6ce8eb9ed7297d8b2524c6e25376319175758f50",
      "parents": [
        "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 17 17:54:10 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:23:07 2018 -0800"
      },
      "message": "Support query active microphones information in AudioRecord.\n\nThis is part of device enumeration. With the new add API, developer\ncould get the active microphones information for each channel.\n\nBug: 64038649\nTest: Run cts and check the print log.\nChange-Id: Ic63d86e533a30e40697da7522a5a81f7cfcea988\n"
    },
    {
      "commit": "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6",
      "tree": "7215e85bae943107de3bf07537c28c98216f5690",
      "parents": [
        "6e075b43b0ba324a97fc0f89ef65196ed25be671"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 05 10:18:21 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:16:16 2018 -0800"
      },
      "message": "Add support for getting all available microphones characteristics.\n\nAdd MicrophoneInfo class in native side and native logic for supporting\nquery all available microphones.\n\nBug: 64038649\nTest: Run test and check the print log.\nChange-Id: Ic0a9cce55a1265a66ba08fe81b56b56cb88ba42f\n"
    },
    {
      "commit": "03570a65a46bd0d577aa4c860c4f32f4abf79c7c",
      "tree": "80f3fe537f1edeb95bd37a5a66090ce3b4f1cd1e",
      "parents": [
        "70068e8e49f3467488550d88d6130f9e00bb0624",
        "6f248bb57a6a0febe8fc0f253acc86289237ace8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Allocate client memory based on total device memory\""
    },
    {
      "commit": "6f248bb57a6a0febe8fc0f253acc86289237ace8",
      "tree": "5dcc5fe0729c85f7ef39ac298906acea444b2ae2",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 14:04:37 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 22:12:12 2018 -0800"
      },
      "message": "AudioFlinger: Allocate client memory based on total device memory\n\nTest: Debug logging\nBug: 64161002\nChange-Id: I7156748e5678c3232d1f1672439d11aecf3f458b\n"
    },
    {
      "commit": "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5",
      "tree": "d2b98e3247afd27d7272d23b226dc4e10fb8f5f9",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788",
        "f4ddfefc8ba59a8486d91826154cc9447821409e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "message": "Merge \"Don\u0027t record audio if UID is idle - media framework\""
    },
    {
      "commit": "4e1af9fc9c1108d4514e92774f750bcd434dbbcc",
      "tree": "03dc781c49ae6b37c4661c591ece2c5a4eed8cfe",
      "parents": [
        "a11f9357196db29e6f8f05b91334524de4f3207e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 03 15:54:35 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 19:48:46 2018 -0800"
      },
      "message": "aaudio: implement sessionId for effects\n\nIf a sessionID other than AAUDIO_SESSION_ID_NONE is requested\nthen legacy data path will be forced.\n\nSessionID is implemented for MMAP data path but not used.\nIt is easier to implement it now then try to figure\nit out later.\n\nBug: 33268927\nTest: test_session_id.cpp will be moved to CTS when stable\nChange-Id: I3ea67f57c1cbe24a512980f1352b917ab3cb6387\n"
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff",
      "tree": "ebe89d037006cc16ed8a9284563a475b6eee3348",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 14:20:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:28:41 2017 -0800"
      },
      "message": "Revert \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\"\n\nThis reverts commit 0aa3c6eba07f987fe84b5fa450274a8e730971e3.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I45394bccf82b922aa2b68fee3e02afc280f6729c\n"
    },
    {
      "commit": "0aa3c6eba07f987fe84b5fa450274a8e730971e3",
      "tree": "69c1c59218c8ae0e5165f71a392a8666c8b74ad6",
      "parents": [
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:13:22 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:18:50 2017 +0000"
      },
      "message": "Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\n\nThis reverts commit 3e1acc0c58b337dec4054d78c28b48b2e77e0784.\n\nbug: 70388312\n\nChange-Id: I6782d6eceeece1bad998b02af26c0119da70a13d\n"
    },
    {
      "commit": "3e1acc0c58b337dec4054d78c28b48b2e77e0784",
      "tree": "effae4bc8d462d03cb0bc1507ac0222ac47c90eb",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 01 16:07:37 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 17:33:35 2017 +0000"
      },
      "message": "refactor AudioRecord and AudioFlinger openRecord()\n\nRefactor the mechanism used by audio record tracks to query and\nattach to an input mixer/stream in audio flinger. This will:\n - reduce the number of binder transactions needed to create a record track\n - move sample rate, framecount and flags validations to audio server side\n - move audio session allocation to audio server side\n - prepare restriction of certain binder transactions to audioserver only\n\nAlso:\n - renamed openRecord() to createRecord() for consistency with AudioTrack\n - make AudioRecord mStatus update consistent when calling default\n contructor + set() or constructor with arguments\n - make AudioClient, CreateTrackXXX and  CreateRecordXXX classes derive\n from Parcelable\n - restore audio session ID validity check in AudioFlinger::createTrack()\n\nTest: CTS tests: AudioRecordTest, AudioRecordingConfigurationTest, AudioPreProcessingTest\nTest: manual test for capture use cases: camcorder, OK Google, VoIP calls\nChange-Id: I72edaa7ddef1da11c77df21e88378e3aa9012d58\n"
    },
    {
      "commit": "ef6cf3fc6cfb12e089e787efcbf1fc485ed54931",
      "tree": "a197eb396f5e84684d937da00e091a27c7de7f2e",
      "parents": [
        "693cb2bde52b4d73c391c529f1c6bf7a02be9f72",
        "94a1ee822686e920a33e312f4032f991731aea07"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 22 19:39:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 19:39:53 2017 +0000"
      },
      "message": "Merge \"Converting effect chains to float point by default.\""
    },
    {
      "commit": "94a1ee822686e920a33e312f4032f991731aea07",
      "tree": "5a8e84b19269529153e94fa2f0a6b927823f6848",
      "parents": [
        "c275189ccbfe8ca29437a24256195c61de2f2a6d"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Fri Jul 21 15:11:02 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 21 20:39:19 2017 -0800"
      },
      "message": "Converting effect chains to float point by default.\n\nRemoved additional conversions from/to int16/float.\nFixed config file restrictions.\nDetection of native format (int16/float) of effects.\nOn-the-fly conversion to/from 16 bit effects if necessary.\nWIP: testing effects in all possible configurations.\n\nBug: 63935479\nTest: Bufflog dumps, frequency analysis comparison, SoloTester\nChange-Id: Id4cabc5c5698befc90a5d68b0b996a9b9adebfc4\n"
    },
    {
      "commit": "21da647792c0b78ab3943be0f32066015d5e8c34",
      "tree": "15ad0b64bf6eaabf24223d7fd376ef9ac00eb9cc",
      "parents": [
        "a4fa4760fa417473324e009b3f4117a2d539c486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 09 16:29:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 16 11:33:12 2017 -0800"
      },
      "message": "refactor AudioTrack and AudioFlinger createTrack()\n\nRefactor the mechanism used by audio tracks to query and attach\nto an output mixer/stream in audio flinger. This will:\n- reduce the number of binder transactions needed to create a track\n- move sample rate, framecount and flags validations to audio server\nside\n- move audio session allocation to audio server side\n- prepare restriction of certain binder transactions to audioserver only\n\nTest: CTS tests for AudioTrack\n\nChange-Id: If4369aad6c080a56c0b42fbfcc97c8ade17a7439\n"
    },
    {
      "commit": "8589ce7045fd4f5520aabbc773f00c7136925fd7",
      "tree": "a02b3ba722bc13f798c9c10cc51d19b670388452",
      "parents": [
        "f24d95960d85c891fc40db6f1e9644385efb4eb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:03:42 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:06:32 2017 -0700"
      },
      "message": "Split nblog off from nbaio\n\nnbaio is an acronym for \"non-blocking audio I/O\", and nblog means\n\"non-blocking logger\" so nblog does not belong with nbaio.\n\nThere are a lot of improvements planned for nblog, and having the\nrestructuring done will make it clearer as more files are added.\n\nTest: builds OK\nChange-Id: Ib28bada2566c1d64bdbe9f5d7a5ce40e080178ef\n"
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "e32eb6dc4c087daa9b2467f97cccc0a53283ebcb",
      "tree": "94b787277ec84cffcb392c241155d6a8751763cf",
      "parents": [
        "2f1bc21fba397242af2510f6d31b4af73c44d1ef",
        "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "message": "Merge \"Generate IAudioRecord with AIDL.\""
    },
    {
      "commit": "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e",
      "tree": "1c81319f27784e4d611f7895d519b7754f869c26",
      "parents": [
        "ce10f65fb5b48d81798caa2c2914b016082b5089"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Aug 01 15:47:38 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:15:59 2017 -0700"
      },
      "message": "Generate IAudioRecord with AIDL.\n\nUse AIDL to generate the IAudioRecord interface rather than using\na manually implemented interface.\n\nBug: 64223827\nTest: Ran the AudioNativeTest and CtsMediaTestCases CTS tests.\n\nChange-Id: Iade23c73253a97c358050bbd697ebe592b89a4c0\n"
    },
    {
      "commit": "9fabbf8a8ae755c3c07637f8ca7677c63a1607bb",
      "tree": "9f3be1ca67e5ea192cdd9b2c289c9ebe6095218d",
      "parents": [
        "909f4a6cada3d5fb7594da7d1809ba62d1b47340"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 12:02:00 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 15:27:38 2017 -0700"
      },
      "message": "audioflinger: prevent crash in MmapThreadHandle destructor\n\nThe mThread smart pointer was getting cleared while the\nthread was still in use.\n\nBug: 64316921\nTest: use input_monitor.cpp, see bug for repro steps\nChange-Id: I46095b4e67648208a2fb979696fc2d655432448b\n"
    },
    {
      "commit": "d8365c54d049aade9e02ccae722f311f846cad9a",
      "tree": "b0678982480e7a46b21fd0a855fd1cfd242ffdb1",
      "parents": [
        "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 16 15:27:05 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 17 15:26:56 2017 -0700"
      },
      "message": "audio flinger: fix AEC and NS suspend logic\n\nMake sure we suspend/restore AEC and NS only when the suspend condition\nactually changes to avoid mismatch in number of suspends/restores\ncausing the ref counting mechanism to leave the effects in suspend mode\nwhile they should not.\n\nAlso clear the suspend state on an effect session before parking it in\nthe orphan chains list so that it is in default state whne attached to a\nnew record thread.\n\nBug: 63015903\nTest: verify that switching BT SCO on/off with Duo enables or disables\nAEC and NS accordingly\n\nChange-Id: I4d0f0bf818deca3952da3c67bb7e83cb500429c7\n"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "bf49308851509d38dbf3f57d9682a819d9f983c9",
      "tree": "89168af93deeb8337376b130e40db86179f4a4d2",
      "parents": [
        "064ac067e3e9c2e68d363aa5db57cdd6e2911cdd"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 17 17:37:12 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 17 17:43:36 2017 -0700"
      },
      "message": "audioflinger: Make use of android-base/macros.h\n\nReplace local definitions of \"array size\" macro, and\ndeclarations of non-copyable objects with corresponding\nconstructs from android-base/macros.h.\n\nAlso change \"protected:\" to \"private:\" for classes\nnot designed to be inherited.\n\nChange-Id: I2d1e6d153511ed84d52fe6377879f83258890653\nTest: make\n"
    },
    {
      "commit": "444841ffd7f56f7eadc3cccd59e62738626f0c33",
      "tree": "aa221059eeba7e4b10174a565a27d61a6ea2ba40",
      "parents": [
        "fbd7e12c373435c77aa5b20bdf321a0589521746"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 15:36:43 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 12:52:05 2017 -0700"
      },
      "message": "Get declarations from the proper header file\n\nTest: builds OK\nChange-Id: I759e49570cd00b3e5101f38164fcac5ac53faa6c\n"
    },
    {
      "commit": "5b2191a4a36746b66ba3e8f73b711f49fdb83b4b",
      "tree": "1a9844681191d98fe5a92c3463de78f99453e01b",
      "parents": [
        "fb91f95fb75b2c2f4247b7fef8674e46ea0bc978"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 19 11:44:47 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 09:39:48 2017 -0700"
      },
      "message": "Add a tee sink filename suffix to distinguish type\n\nTest: tee sink filenames have a _C (capture), _P (playback), or _T (track) suffix\nChange-Id: Ib8ddadb0f3e3ba3ac620e33072bb212d5cde4978\n"
    },
    {
      "commit": "eef598c5539aa2be5a106f2483b19e368e4b8c0e",
      "tree": "677e3f98c4f1b3deb9d653dc5ad00b4a7e881028",
      "parents": [
        "3ab8d66ad1c47a5ee1f87ad9f5ee2666cf89b32d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 03 14:41:13 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 14:46:35 2017 -0700"
      },
      "message": "Add histograms for FastMixer\n\nBug: 37153050\nTest: dumpsys media.log shows histograms for audio activity on FastMixer\nChange-Id: I6bb4bf19d62da1ed1d8cda43d428b03153a35de3\n"
    },
    {
      "commit": "293558ad1977e24e65f7ba78f47382d33fc77d64",
      "tree": "125f39f7efcb1c44fde136bdfefeef1bdc8af2a4",
      "parents": [
        "01c10f8cdcd58d1e7025f426a72e6e75ba5d7fc2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 21 12:19:20 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 24 17:06:30 2017 -0700"
      },
      "message": "AudioFlinger: Improve Thread logging.\n\nTest: dumpsys media.audio_flinger\nBug: 30572472\nChange-Id: I43f72354a6ece045f5f9f664946a406166974258\n"
    },
    {
      "commit": "886deb506ea2938cfec40fc0dd2bff072850386b",
      "tree": "c766adb78101eaee0cf091d14cbd26f3377f14e1",
      "parents": [
        "1e039394f351ef77592689f32294a1c73840ad0e",
        "d3bb645f0b7f567b033b8664499d685f8ec10628"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 13 16:37:07 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 13 16:37:08 2017 +0000"
      },
      "message": "Merge \"Re-format to decrease the maximum line length of files to 100 characters\""
    },
    {
      "commit": "d3bb645f0b7f567b033b8664499d685f8ec10628",
      "tree": "1f1093b9594df4691cc99a2e2c81bc67ea0de136",
      "parents": [
        "0012417ddc1320c6df79258266da1e869036b211"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 05 18:14:37 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 13 16:36:17 2017 +0000"
      },
      "message": "Re-format to decrease the maximum line length of files to 100 characters\n\nTest: compiles OK\nChange-Id: Ibe663032cd390ed2bcca6dc921d47732e6e15e21\n"
    },
    {
      "commit": "89e5a2b102b484fe19dbda2a0b118edfefc70241",
      "tree": "7d569d72d3a2e16c77a10e08de04746fab6ad52e",
      "parents": [
        "ca47e6d574cd3d02821b87657a80d84b328d4f26",
        "dcdfaecc1fa630a799e1fdb508a9b92da55abc36"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 09 22:55:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 09 22:55:06 2017 +0000"
      },
      "message": "Merge \"NBLog periodic merging thread\""
    },
    {
      "commit": "dcdfaecc1fa630a799e1fdb508a9b92da55abc36",
      "tree": "407138ab3b7cef085ca4f283ea24378910ce775e",
      "parents": [
        "cca34c05ca2d5e7ac6c2fbee3ac2db88f059143d"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Feb 14 10:18:39 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 09 12:30:24 2017 -0800"
      },
      "message": "NBLog periodic merging thread\n\nBug: 35468674\nTest: no change in functionality, everything works as before\nChange-Id: Id2cea243bc15767ca6803c9505bf23a18411500e\n"
    },
    {
      "commit": "18b570146c971fe729c391bfbb869391084e623d",
      "tree": "44427ed969851fc0e8638b508e265d6d039556b9",
      "parents": [
        "421c434e615a417d9f5443af9e52a30e3b29c256"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 13 16:23:52 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 08 00:33:34 2017 +0000"
      },
      "message": "audioflinger: add standby() method to MmapStreamInterface\n\nBug: 33398120\nTest: open/start/stop/close MMAP no IRQ stream for capture and playback\n\nChange-Id: I48ec202a71565f759c441c2a835d8c8190e76334\n"
    },
    {
      "commit": "30d48d9542fb3f85889108c1ee2daff98a4860e7",
      "tree": "b85955dd0493f049b91a5b4ab32527f39a4ba6e2",
      "parents": [
        "b129be34d1b08440d2867702b22e81c037be899a",
        "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 14 01:38:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 01:38:57 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Initial implementation\""
    },
    {
      "commit": "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0",
      "tree": "2d058e73f09f1822108daad51948a34c420634e3",
      "parents": [
        "ed1abbfc73d4ade0ef08239fc56ac66d70a00a92"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 24 13:36:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 14:31:46 2017 -0800"
      },
      "message": "VolumeShaper: Initial implementation\n\nThe VolumeShaper is used to apply a volume\nenvelope to an AudioTrack or a MediaPlayer.\n\nTest: CTS\nBug: 30920125\nBug: 31015569\nChange-Id: I42e2f13bd6879299dc780e60d143c2d465483a44\n"
    },
    {
      "commit": "7863c791dba8c4e5e9591b6837d410e580be0a25",
      "tree": "5199273fa3bac5303b0aa8dcdfd984f49f75e30f",
      "parents": [
        "94a20830fc0768efc138ab7f746f80e8b3d60c15",
        "6acd1d432f526ae9a055ddaece28bf93b474a776"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 10 20:24:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 20:24:22 2017 +0000"
      },
      "message": "Merge changes from topic \u0027mmap_no_irq\u0027\n\n* changes:\n  Add support for mmap stream\n  audioflinger: define MMAP HAL Stream control interface\n"
    },
    {
      "commit": "8981605d43e24c46d395acb5f145b99589d45917",
      "tree": "8bb7ee0e15081201b70730bbaafed49b47d211dc",
      "parents": [
        "d7c5ec857930496bb8a1045dc8b87b2fdd99899c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:08:23 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:19:37 2017 -0800"
      },
      "message": "AudioFlinger: Move RecordBufferConverter to libaudioprocessing\n\nTest: Recording loopback\nBug: 31015569\nChange-Id: I7897d959f36ac7424544e35f47576c99a442dd54\n"
    },
    {
      "commit": "6acd1d432f526ae9a055ddaece28bf93b474a776",
      "tree": "5035b942396a0e907e0c23f803a349d17dc50ad5",
      "parents": [
        "fc23520d9c3f15e28baa81de5f7dfa6c1b0af426"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 14:23:29 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 12:59:06 2017 -0800"
      },
      "message": "Add support for mmap stream\n\nAdd support for MMAP streams created by Oboe service.\n- A new audio thread class MmapThread deriving from ThreadBase\nis added to manage permissions, volume, routing and wakelocks for activity\non MMAP streams.\n- Requests received over MmapStreamInterface to open, start and stop\na MMAP stream are forwarded to audio policy manager so that activity\non MMAP capture and playback streams is visible to audio policy and\ntaken into account in volume and routing management.\n`\n\nBug: Bug: 33398120\nTest: manual test\nChange-Id: I957906495fe9277d2972d810b633f50cd1e14ec3\n"
    },
    {
      "commit": "fc23520d9c3f15e28baa81de5f7dfa6c1b0af426",
      "tree": "d612d3bd0486cae96622768c95d41849b38dd9c6",
      "parents": [
        "9476864f6a9b8d500f6c74ba40bfd2e1ce5265a2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 18:48:17 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 12:58:55 2017 -0800"
      },
      "message": "audioflinger: define MMAP HAL Stream control interface\n\nAdded definition of MmapStreamInterface used by Oboe service\nto open, configure and control MMAP streams at the audio HAl.\n\nThis interface is implemented by audioflinger and abstracts the details\nof interacting with audio policy manager and audio HAL from Oboe service.\n\nA callback interface MmapStreamCallback is also defiend to communicate\nvolume and routing changes back to Oboe service.\n\nBug: 33398120\nTest: build\nChange-Id: If953d44903aaa4eb17ff16f1922ca16e5e0e0a87\n"
    },
    {
      "commit": "068561c8e84569d51df2adbbb53b56fdfd09c06b",
      "tree": "67e6c9c383b4667adc502b0ed6928a672a6a5b6d",
      "parents": [
        "ee454fcb25bff0f9c5d3455775a4cb66429e875e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 03 17:09:32 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 10 17:06:46 2017 -0800"
      },
      "message": "AudioFlinger: Split off audio processing library\n\nTest: native AudioResampler test, general playback test\nBug: 31015569\nChange-Id: Ifb248f4402a583438d756c014dcd7a4577aef713\n"
    },
    {
      "commit": "022b9953153bdb1984f0abb17d21ef8c1826ad49",
      "tree": "aff19a7663d75cbb16bc003424bacb6f97b738cd",
      "parents": [
        "e61f9e57e61cbf4d86d6385dd3cddb41e245f749"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 16:36:51 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 09 18:18:18 2017 -0800"
      },
      "message": "Re-implement HIDL effect processing using FMQ and IMemory\n\nResult: no hwbinder calls due music processing.\n\nTest: make, use Play Music with effects, check traces\nBug: 30222631\nChange-Id: I06d0e94e603688874b31824427f3b0878b5f7c8e\n"
    },
    {
      "commit": "f28bcf5c057dd9738a09f3cb367cf0b44087135d",
      "tree": "309a55dc542ab5bf6caecbb78bf4e99809a3f1a1",
      "parents": [
        "5b4051afc26367d7accd06580c5135c8295759f9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 20 12:52:39 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 21 17:41:16 2016 -0800"
      },
      "message": "AudioFlinger: Use property for local log lines\n\ndumpsys lines can be increased up to 256 (kLogSize) by\n\nadb shell setprop persist.audio.locallog.lines 256\n\nTest: Run piano app and check audioflinger dumpsys\nBug: 30572472\nChange-Id: Ie27812b15732432856452e4c46d81abf860aaee2\n"
    },
    {
      "commit": "5b4051afc26367d7accd06580c5135c8295759f9",
      "tree": "7570bfc424d02beb1ac90b4f1e2afba02c23d222",
      "parents": [
        "1570e5805254f638ccf5bb5c29870a9c8e7a7db3",
        "dae27707fc7d8370eb200d25d1a7c6dd7ad5e201"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 20 00:35:47 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 20 00:35:47 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: Associate audio time with client uid\""
    },
    {
      "commit": "6a308b02f138e358fb239ee2df5d54dd988f34fd",
      "tree": "730e19d7ae133e2086c37dcec42d0b88e77ba01b",
      "parents": [
        "0a2ea58394190408a3d532bfcc242ba64ca71538",
        "20b9ef0b55c9150ae11057ab997ae61be2d496ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "message": "Merge \"Add unique audio port IDs to AudioTrack and AudioRecord\""
    },
    {
      "commit": "dae27707fc7d8370eb200d25d1a7c6dd7ad5e201",
      "tree": "0dd0ed540d7d58a7d19e83ee9ff648d57f218df6",
      "parents": [
        "07f49573613aee5a8e661f74a324db371ecc8551"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 31 14:01:16 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 14 17:52:54 2016 -0800"
      },
      "message": "AudioFlinger: Associate audio time with client uid\n\nGroup active track operations for add and remove together.\nPlaybackThread now uses strong pointer for active tracks.\n\nTest: Play Music, Youtube, Batterystats, CTS AudioTrack\nBug: 32361950\nChange-Id: I101df081dd8d090560a83c44c2fa9ffcbf39c84d\n"
    },
    {
      "commit": "20b9ef0b55c9150ae11057ab997ae61be2d496ef",
      "tree": "21bd57d748dd47600b1e62bfb18d4acb08e15438",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 11:03:16 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 12 12:29:41 2016 -0800"
      },
      "message": "Add unique audio port IDs to AudioTrack and AudioRecord\n\nThis will allow to track activity at the track level instead of\nat audio session level as only possible with current implementation.\n\nAudioTracks and AudioRecords will receive a unique audio port ID the\nfirst time they register to audio policy with\ngetOutputForAttr()/getInputForAttr() and keep this ID for their\nlifetime.\n\nThis CL is the first partial change and just updates the\naudio policy and audio flinger APIs used at track creation time.\n\nTest: basic regression test of audio playback and capture use cases\n\nChange-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329\n"
    },
    {
      "commit": "b643627a557e44b9ab5879cf71e162af2d514ce3",
      "tree": "995bc0b0fa9a614687aa8df2f119ab7fff0c7a88",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 19:24:50 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 08 12:14:32 2016 -0800"
      },
      "message": "fix client pid for effects applied by audio policy\n\nTest: Hangouts call, Play Music with and w/o effects\n\nChange-Id: Ia9b20f94be667dd92e0497f8ef9c0dc0e95afe28\n"
    },
    {
      "commit": "abf6ff26df459d991cdbc2dca3b78046c97469db",
      "tree": "9e6ab352b182d73d3508c32c81090ec9e355f5a2",
      "parents": [
        "26a8ba63104f3c7d4e0a750b58d56ad76dbce373",
        "2148bf0e79c436b8764b9edc4c8f2730cce98a32"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 04:33:19 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 03 04:33:20 2016 +0000"
      },
      "message": "Merge \"Log audio information to ensure complete delivery\""
    },
    {
      "commit": "0d5a2ed0a05a2bf337c68edb54f24c60e18032c1",
      "tree": "6b8dac8ec17119ad5b661b85cff30bffe1d4a645",
      "parents": [
        "0d96fa05bf3f22942c372ecc93a7f6a44ecda30a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 02 12:21:39 2016 -0800"
      },
      "message": "improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nTest: Tested with EffectTest app. Regression tests in main audio use cases.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "2148bf0e79c436b8764b9edc4c8f2730cce98a32",
      "tree": "8d380e3f69e99d4ebf76c08c51a5833dc0eca2ff",
      "parents": [
        "b54cab90d4bf84745a57232080d72a50c3b731da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 28 19:01:02 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 01 17:36:41 2016 -0800"
      },
      "message": "Log audio information to ensure complete delivery\n\nTest: Audio playback\nBug: 30572472\nChange-Id: Ibad6fc202692cd3480ae726627252afdead083f3\n"
    },
    {
      "commit": "913d06c099bd689375483a839e11057ccf284d1c",
      "tree": "25d7f40231f47897013b0984348f40bf05b72ea7",
      "parents": [
        "267e07cd8432679bcdd72b0bdf38846446c1c4ed"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Nov 01 12:49:22 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Nov 07 09:29:37 2016 -0800"
      },
      "message": "Move TypeConverter into a shared library\n\nThis will be needed for the default implementation of the audio HAL\nin TREBLE for parsing supported formats etc. provided by HAL in\na form of string literals.\n\nAs a bonus, remove some hand-written type conversions in AudioFlinger\nused in dumps.\n\nExample changes in the dump output:\n\n   HAL format: 0x1 (pcm16) \u003d\u003d\u003e HAL format: 0x1 (AUDIO_FORMAT_PCM_16_BIT)\n   Processing format: 0x5 (pcmfloat) \u003d\u003d\u003e Processing format: 0x5 (AUDIO_FORMAT_PCM_FLOAT)\n   Output device: 0x2 (SPEAKER) \u003d\u003d\u003e Output device: 0x2 (AUDIO_DEVICE_OUT_SPEAKER)\n   Input device: 0 (NONE) \u003d\u003d\u003e Input device: 0 (AUDIO_DEVICE_NONE)\n   AudioStreamOut: 0x... flags 0x6 (PRIMARY|FAST) \u003d\u003d\u003e\n       AudioStreamOut: 0x... flags 0x6 (AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST)\n\nTest: make \u0026 run\nChange-Id: I9cde640e6827b7aa6d62e9caade9e738227e299f\n"
    },
    {
      "commit": "61a4fac2e3ec271241e3a4f405d7357b7f6ca4c2",
      "tree": "0ce2e32297df380eb5a5d971e8daac0634a96731",
      "parents": [
        "61787b26691da285d8ab79795237006ceb018c4d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 14:44:18 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 14 09:29:54 2016 -0700"
      },
      "message": "Remove dependencies on hardware/audio_policy.h\n\nMost of the time it\u0027s not needed, may be needed when\nUSE_LEGACY_AUDIO_POLICY is enabled.\n\nTest: make\n\nChange-Id: Id25eafc05352f07614965913d367d484f2673fbd\n"
    },
    {
      "commit": "cbc8f617c1aebef5d041fa40dcd38a5466690b99",
      "tree": "525470607c3e6436c5a73caac90830104fcde9ac",
      "parents": [
        "0c739c59dd1a3d52beb82a353c13b6c853d93f5f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 11 18:05:13 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 11 18:05:13 2016 -0700"
      },
      "message": "Eliminate dependencies on hardware/audio.h (trivial cases)\n\nframeworks/av must not depend on hardware/ (except for the code\nfrom libaudiohal that actually calls into HAL).\n\nThis CL deals with simple cases where depending on system/audio.h\nis enough.\n\nChange-Id: Ia2cb66cc8c92316ce5ab884a008d5e531263c2e4\nTest: make\n"
    },
    {
      "commit": "a0c91339814f37ea78365afb436c9f3d1f0a0090",
      "tree": "b0075232d68758a314754a9293c65ea15091ca95",
      "parents": [
        "5090f7d3211b5517a7602c910c04462f7eee0727"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 19 10:01:12 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 26 14:53:38 2016 -0700"
      },
      "message": "Update NBAIO to use the new audio HAL abstraction layer\n\nMoved the HAL access abstraction layer to a separate library so it\ncan be used both by audioflinger and libnbaio.\n\nBug: 30222631\nTest: manual with Loopback app, Hangouts, YouTube\n\nChange-Id: Id622c2f1aa8f55a775d34f369a596c2c4d29d5be\n"
    },
    {
      "commit": "1dc98674f701dada94143b4d31b7221c58346c6c",
      "tree": "44f80a66fdff774d2229ca3aaabdd614ed1f8013",
      "parents": [
        "9debf8f6d26f7aa12c68ddfb6cdb1323d4b5adbf"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 18 17:50:29 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 21 15:58:24 2016 -0700"
      },
      "message": "Abstract away access to audio streams HAL in AudioFlinger\n\nIn this CL all direct access to audio_stream_t, audio_stream_out_t, and\naudio_stream_in_t their functions is encapsulated within the new\nhierarchy of Stream[In|Out]HalLocal classes.  AudioFlinger uses\ninterface classes Stream[In|Out]HalInterface to access these functions.\n\nNote that NBAIO still receives raw HAL stream handles and needs to be\nconverted separately.\n\nBug: 30222631\nTest: manual with Loopback app\n\nChange-Id: I6388cfa2006791c9c0aa7bb186719209726a2d48\n"
    },
    {
      "commit": "e4f1f63a2c54ee8687ad8cca18df0f6639ad7c81",
      "tree": "941cdb35111e5e01ece553475e5bbf7841a7116c",
      "parents": [
        "1724ee3caa5f0b4e73979036073f0b71a115083a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Aug 31 11:35:10 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Sep 13 16:27:15 2016 -0700"
      },
      "message": "Abstract away access to audio devices HAL\n\nIn this CL all direct access to audio_hw_device_t and its functions is\nencapsulated within the new class DeviceHalLocal. Loading of hardware\nmodules is encapsulated withing DevicesFactoryHalLocal.  AudioFlinger\nuses interface classes DevicesFactoryHalInterface and DeviceHalInterface\nto access these functions.\n\nBug: 30222631\nChange-Id: Ic88b20c55813a24b898f4a832e082c17d81935b7\n"
    },
    {
      "commit": "598857bdcfc99e8afc597ea815a9b93aa81fe0c4",
      "tree": "fa472a6907c1ec935df2a8b1c3399edf5d827b82",
      "parents": [
        "30b42b8d961b765e8c77ab8724636e98372fbf80",
        "9b7a8f94619b6847db7dc37deb5918b6f3439a43"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 31 01:32:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 01:32:49 2016 +0000"
      },
      "message": "AudioFlinger: Disable (revert) LockWatch am: deb0335714 am: d8d2728947 am: 5d819b4794\nam: 9b7a8f9461\n\nChange-Id: I1840bd725020242337af910ea3f51cd094e3c937\n"
    },
    {
      "commit": "9b7a8f94619b6847db7dc37deb5918b6f3439a43",
      "tree": "e920fdbc711e0b3dc0963a737ee2a8185ab9c944",
      "parents": [
        "0be566804e6f5c453e6fb45a876366d92fc3701f",
        "5d819b47946b936f22a45783137f246d93c81b39"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 31 00:05:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:05:25 2016 +0000"
      },
      "message": "AudioFlinger: Disable (revert) LockWatch am: deb0335714 am: d8d2728947\nam: 5d819b4794\n\nChange-Id: I4754604909ec4658aa3d12e70dbb735e34955901\n"
    },
    {
      "commit": "deb0335714cabc906098fb1d971d992027267fc6",
      "tree": "91cb7cecab0980afbd73e44f78ee13c319a0f7fa",
      "parents": [
        "d60bac90266f3862ed60852b6de5b00cab389fb7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 29 14:40:14 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 30 02:24:58 2016 +0000"
      },
      "message": "AudioFlinger: Disable (revert) LockWatch\n\n    Revert \"audioflinger: add watchdog on main mutex\"\n    This reverts commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229.\n\n    Revert \"LockWatch: Update to Mutex::timeLock specs\"\n    This reverts commit 51a6319111df875710dab25a1a99b10d002c4869.\n\nBug: 30936184\nChange-Id: I0f6df6c98c06e161038b1bf0aae5912619cb4066\n"
    },
    {
      "commit": "4a3d5c23f79189eb7ab9f31c440c7da5b15947a2",
      "tree": "6417b4b0425ae73ba9e7c7ce3e17e7dc499e0fec",
      "parents": [
        "ecb008139a952a7e5d812e7eb0f5af0f9466d25d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Aug 15 13:47:42 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Aug 29 10:22:35 2016 -0700"
      },
      "message": "Abstract away access to audio effects HAL and factory\n\nIn this CL all direct calls to functions from EffectsFactoryApi.h\nand hardware/audio_effect.h are encapsulated within two new\nclasses: EffectsFactoryHalLocal and EffectHalLocal. AudioFlinger\nuses interface classes EffectsFactoryHalInterface and\nEffectHalInterface to access these functions.\n\nBug: 30222631\nChange-Id: Id64b9c5529319077f6f968921489a13f60daa977\n"
    },
    {
      "commit": "82f5b811b2767289ebb8a9e6af1919c3b72b5121",
      "tree": "c1bff8e75017ef08e74973413f88d1d89cb78a1a",
      "parents": [
        "1d320b9d14f7e136b3d1a94e977ce2a08459f49b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 17 13:53:12 2016 +0200"
      },
      "committer": {
        "name": "Adam Seaton",
        "email": "aseaton@google.com",
        "time": "Sat Aug 20 23:25:34 2016 +0000"
      },
      "message": "DO NOT MERGE ANYWHERE (nyc-dr1-dev) audioflinger: add watchdog on main mutex\n\nCheck every 10 seconds if main audioflinger mutex can be acquired and\ntrigger audioserver process restart if not.\nThis will allow to capture tombstones of locked up situations and avoid\nthe disruption of a system_server restart.\n\nBug: 30737845\nBug: 30388410\nChange-Id: I8a78b8cf813982f70ea598a6d42affc0ecaa76c9\n(cherry picked from commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229)\n"
    },
    {
      "commit": "85d5dffa0a8f523bd577296c3759479f7db2ddec",
      "tree": "b220b70accf81ebaedcb2154b111d4733c12ab19",
      "parents": [
        "67b5bb745b1eb502cf6cfcd4fc8f7b2e4dccff59",
        "ed315827348ea496e2a8d280f743302337550fc4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 18 15:22:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 18 15:22:21 2016 +0000"
      },
      "message": "audioflinger: add watchdog on main mutex am: 17a58b2560\nam: ed31582734\n\nChange-Id: I9d5d0573220ba5811d06f2aa2217919a68d8529b\n"
    }
  ],
  "next": "17a58b2560c38a8e31a38186f9ab6eb98a38e229"
}
