)]}'
{
  "log": [
    {
      "commit": "c8cecbe19ba6bb09f0374af23b636bf3028e6af9",
      "tree": "a7e0cae7a9513d67c80075a6cc59ade117f78a01",
      "parents": [
        "cf68127174cbbf0cf87a0f4876d178b240b1de4e",
        "de9e33dfcbdabc0227ab47e4a13325b5b410ab39"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "message": "Merge \"Add transaction code to TimeCheck crash\""
    },
    {
      "commit": "de9e33dfcbdabc0227ab47e4a13325b5b410ab39",
      "tree": "bf5c5eff11ac61c1c61630a30793fc15d9d376c5",
      "parents": [
        "fd53bf2f59071766f6f2ea925a6718919eac2502"
      ],
      "author": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Wed Oct 10 18:48:33 2018 -0700"
      },
      "committer": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Thu Oct 11 18:52:14 2018 +0000"
      },
      "message": "Add transaction code to TimeCheck crash\n\nWhen there is a TimeCheck timeout crash, the transaction code will be\nuseful for debugging.\n\nTest: Manual run\nChange-Id: I8a93ead7ec7379f51b211ca31c68ec6ec2553afc\nMerged-In: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "3c5b1b7150257e33d4ee14166d577d1d644a31b2",
      "tree": "1deaf090b1cd20b4d608b25b30ad730fcf17d2d5",
      "parents": [
        "0a0cfbd2bef78f26231d9fb53546e7682f9bf4bd",
        "f4a4005adb8340b2883d0b6771bcebac5c9c75b5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "message": "Merge \"Support to play the various tones as per the Indian standard\""
    },
    {
      "commit": "f4a4005adb8340b2883d0b6771bcebac5c9c75b5",
      "tree": "01f9d062e5156a9e8247b535b111c335c09ce611",
      "parents": [
        "db44c5d13b9972a0d0dd177c31259b74bc2e4376"
      ],
      "author": {
        "name": "Nobuaki Tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Wed Sep 12 16:22:17 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Oct 03 12:42:59 2018 +0900"
      },
      "message": "Support to play the various tones as per the Indian standard\n\nTo play the following tones as per Indian standards.\n - Dial tone\n - Busy tone\n - Congestion tone\n - Call waiting tone\n - Ringing tone\n\nBug: 117161543\nTest: Play each tone in indian locale\n\nChange-Id: I6b7a2a5674a79a26fba80f987d2ed6ed555ce4bf\n"
    },
    {
      "commit": "ffe3558cb1024b39ce1e0e1dc2fb20bb3663299a",
      "tree": "05195cdd37c3c2c68aa26a66b5af1afb823c65ec",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 13:59:28 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:45:53 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in libaudioclient.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: Icafaff606364fe7bffaad1e9c2e763c444ea999c\n"
    },
    {
      "commit": "db44c5d13b9972a0d0dd177c31259b74bc2e4376",
      "tree": "9ce354b753e2018a2c42f2190d659cc1118e8c2c",
      "parents": [
        "1949fae278542569c538282a11e65cbe54c45618",
        "69ec67ef5da3adf788956ea5cc8398110fb6030d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "message": "Merge \"Fixed audioserver crash in monkey test\""
    },
    {
      "commit": "d9f80435b643029819635d15416fcde0b9998829",
      "tree": "b508fd5e4958c104c7d960da765773b3621f16be",
      "parents": [
        "eb6c38a9eb693c1f5035aaece4396d37810ced65",
        "bca742946f0c20e4227b23f2b52c43350e73ca5c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\""
    },
    {
      "commit": "eb6c38a9eb693c1f5035aaece4396d37810ced65",
      "tree": "57e10278b5b1637e17367d014b16394ad57876b3",
      "parents": [
        "1e1e06ba5fec2db825aaaa59fa566aa718df5291",
        "6e8bf981aca33625e133ab8f9daafd1652b0eced"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\""
    },
    {
      "commit": "bca742946f0c20e4227b23f2b52c43350e73ca5c",
      "tree": "9400059ddc2f410c677d6bb66ac32f925bc49737",
      "parents": [
        "51d361e77c038003d7aeab39e9d91ffb31332c1e"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Aug 10 16:06:07 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 16:01:29 2018 -0700"
      },
      "message": "Fix or suppress some google-runtime-int warnings.\n\n* Use time_t for tv_sec type.\n* Use \u0027auto\u0027 to avoid explicitly use of \u0027long\u0027.\n* Use (u)int16_t instead of (unsigned) short.\n\nBug: 112478838\nTest: build with WITH_TIDY\u003d1\nChange-Id: I023e579b071688731064e51dc94f404274cd59e2\n"
    },
    {
      "commit": "3f51b54ddc8440f4f4beb57e18202ba297356cf9",
      "tree": "d9c1225a5310362ba47e7673afe9af1c5afe3bcb",
      "parents": [
        "8be94e995403a65724c5a75e3084bc41eb69fb22"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Thu Aug 09 09:14:31 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 14 21:50:00 2018 +0800"
      },
      "message": "Prevent object of AudioEffect be deleted until construction finished\n\nThe object of AudioEffect may be deleted when construction ongoing,\nif the method of mIEffectClient invoked by the proxy in audioflinger.\n\nIf mIEffectClient cleared in the destructor of AudioEffect before IEffect\nlinkToDeath to mIEffectClient in the constructor of the AudioEffect,\nthe aforementioned case may lead to an abort, i.e.,\n\"Abort Message: \u0027linkToDeath():recipient must be non-NULL\".\n\nTest: monkey test\nChange-Id: I5fe8227b8528fb9fb9c9a1e636bd4dc0cc22c2cf\n"
    },
    {
      "commit": "6e8bf981aca33625e133ab8f9daafd1652b0eced",
      "tree": "f2d0795e2315bd37e6b598394d042e5068ac3120",
      "parents": [
        "25af42f8bff5a973205bbc36d8617a133e908c51"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Jun 09 16:17:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Aug 08 13:04:48 2018 +0900"
      },
      "message": "Prevent old callback events when track is recycled\n\nWhen a track is reused from SoundPool and started again, the\nprevious callback events could be done after track started,\nthen the new playback will be stopped unintentionally.\nClear the old cblk flags when recycled track is started again\nto avoid triggering unexpected callback events.\n\nBug: 112269355\nTest: Playback with SoundPool frequently\nChange-Id: I111b085d08b73c333fbb0fc2896efe1c013c584c\n"
    },
    {
      "commit": "69ec67ef5da3adf788956ea5cc8398110fb6030d",
      "tree": "c8e402e41171ce32ee43ec1b62d629904b9918c7",
      "parents": [
        "9d431ceffaad7334f61971abdee8e8436ffc2447"
      ],
      "author": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Sun Jul 22 22:28:29 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 07 00:17:33 2018 +0800"
      },
      "message": "Fixed audioserver crash in monkey test\n\nEnable log function in ToneGenerator.cpp, then ToneGenerator\nplays consecutively many times and do not stopTone.\n\n\"lpToneGen-\u003emNextSegSmp*1000\" will go beyond the scope of unsigned\nint, and audioserver get crashed.\n\nTest: Enable log function in ToneGenerator.cpp, alarm notification is\nplayed when the phone is online. ToneGenerator plays consecutively.\nDo not stopTone. then we get audioserver crash.\n\nChange-Id: I073590088fccb32a73353d14970dc89441045663\n"
    },
    {
      "commit": "3432e0439d3b09756f125dfa734951c654d63baf",
      "tree": "a5ccde7855da94bf284d302e61adf0d155f0dcfa",
      "parents": [
        "5eb9d967e81ace00d96ab50b9264b25560e9df1d"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Fri Apr 06 14:22:15 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 11:18:25 2018 -0700"
      },
      "message": "audiopolicy: Optimize A2DP codec config change\n\nHandle A2DP codec config change in audio HAL without\nclosing / re-opening outputs or invalidating streams\nfrom AudioPolicyManager.\n\nBug: 79476124\nTest: music playback over BT A2DP\nChange-Id: I87263da32815a4d4f6273068ef0b2a5b93c73b75\n"
    },
    {
      "commit": "f824853eabf8eab483de7387c001493dda63966b",
      "tree": "2d56a1a846f7adf1e25a7cf4465d34d648cd861a",
      "parents": [
        "625e3020f8c070c8d8449af1bdaeaa002c11cc03",
        "817729095966c338615a8a791d2dbf774fc034ef"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "fb4e361a9e49651b30c1d023ae2619143ae62665",
      "tree": "ad37800ae4377f1160ed07acae65c131ce753206",
      "parents": [
        "725128d79e5cd98cc3f289586a3a4b4d4619ec6f",
        "e17378d11b275daecd20ff840bcb7d275b6801bf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "message": "Merge \"audio policy: re enable setForceUse for system apps.\" into pi-dev"
    },
    {
      "commit": "e17378d11b275daecd20ff840bcb7d275b6801bf",
      "tree": "3f49ff9153c5bd7be9d17e38532efcfc0d98cc1a",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "message": "audio policy: re enable setForceUse for system apps.\n\nSome system apps (not having system AIDs) still need this\nhidden API due to lack of better option for media use case routing.\n\nAdd protection by privileged permission MODIFY_AUDIO_ROUTING instead.\n\nBug: 79475856\nTest: manual regression for music playback over speaker and bluetooth\nChange-Id: Icaa585a9fa4c043c291f24c9bab4a93f02406955\n"
    },
    {
      "commit": "4c5ed30aeb86b2b1aeaf7809d569e46bc75d330c",
      "tree": "26ab9e972b27d67481e428fa3d3c56c68b806aa4",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 11:16:21 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 12:03:42 2018 -0700"
      },
      "message": "AudioTrack: Allow flush in flush state to clear subsequent written data\n\nFixes Photos a/v sync issue introduced by\ncommit 1d3556d6a068f141ac390a04f6a9d92a70f8d7ed\n\nTest: Photos, pause, then seek several times, then play.\nTest: CTS AudioTrackTest, Bluetooth, Offload, Gallery, Play Music.\nBug: 79327282\nChange-Id: I9de8edd88b526b5a9dbc9cd720bf725474949dfc\n"
    },
    {
      "commit": "d9ed870e6402de3ec1253c5c2a43ed1d10078518",
      "tree": "3f7e0cfcf99216939a2e6da5a012b085f299b5cf",
      "parents": [
        "d5fa1baa8b0a985d80cbfb53c3960504314ca8f6",
        "da6a5a80b402fa0d836240d7e05cd887080c4f4d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 01:52:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 01:52:47 2018 +0000"
      },
      "message": "Merge \"audiopolicy: restore normal binder call watchdog timeout\" into pi-dev"
    },
    {
      "commit": "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107",
      "tree": "49fd8e4e911d62ac8be44ae91fdaf35902a234d9",
      "parents": [
        "527da4c9d30c977c0105a288b20a77f0f9e8d0d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 03 18:45:07 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 16:32:02 2018 +0000"
      },
      "message": "collect more media metrics around audio\n\nnew fields in the media metrics \u0027audiorecord\u0027 record for more detail\nlength of time recorded, error conditions\nadd new media metrics type \u0027audiopolicy\u0027 that describes attempts to get\nmicrophone access -- success, failure on contention, what type of access\nwas requested, and (important for the contention) which programs are\ndoing the requesting and holding of the microphones.\n\nwhitelist the \u0027audiopolicy\u0027 metrics type with the  media.metrics service.\n\nBug: 78595399\nTest: concurrent/serial recordings, dumpsys media.metrics\nChange-Id: Ia17860940d4c329b0215b4cf97c6dacacb6a8e32\n"
    },
    {
      "commit": "da6a5a80b402fa0d836240d7e05cd887080c4f4d",
      "tree": "b49bf1a71ff06f366e890e05d8ed9c265211ea80",
      "parents": [
        "3e69b248ef8805b888ea1ec76f3bab773db05589"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 02 18:47:34 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 03 15:50:19 2018 +0000"
      },
      "message": "audiopolicy: restore normal binder call watchdog timeout\n\nRemove special timeout for long binder command added to\nwork around issues b/78901123, b/72823323 and similar\n\nBug: 72823323\nTest: connect/disconnect BT headset while playing music\n\nChange-Id: Ic5b57673ee95c29e5510af3b647ff3beb84dd7d7\n"
    },
    {
      "commit": "a591fc4cde5eac46030d9d494c15056e5dd4299c",
      "tree": "7702e4d7f09d70f9b99f15b78eea8153c209994c",
      "parents": [
        "4fe8cfba169b4cc5e5eb4440c6e5bd74c8be502d",
        "ef92bff8d2e8f6ec9a526fdb4fcfead0146a10f3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 26 21:32:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 21:32:08 2018 +0000"
      },
      "message": "Merge \"audioserver: return binder call permission error in reply\" into pi-dev"
    },
    {
      "commit": "ef92bff8d2e8f6ec9a526fdb4fcfead0146a10f3",
      "tree": "85d8dac27ec4d7fd456743485085c6ff319b6676",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:44:50 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:59:56 2018 -0700"
      },
      "message": "audioserver: return binder call permission error in reply\n\nWhen a transaction to IAudioFlinger or IAudioPolicyService is detected\nfrom an unauthorized source, return the INVALID_OPERATION status in\nreply Parcel and not as transaction status.\n\nAlso removed check on SET_RINGER_MODE as it is not implemented on client\nside and allow SET_MODE from system AIDs instead of just audioserver.\n\nBug: 78615605\nTest: manual audio smoke tests.\nChange-Id: Ia4fdfc22f049da69aaa9d45075e1c502eecf4521\n"
    },
    {
      "commit": "2443760584e8e9798b65b297f1636953c287e5d8",
      "tree": "c817c62a176f0f290b88530f6febf3d9e985f3fe",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 23 15:08:59 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 17:25:08 2018 -0700"
      },
      "message": "audio policy service: fix audioserver port cb upon APS crash\n\nIn case of an audioserver crash, clients that registered AudioPort\ncb are no more notified of Port and Patch update (only Service Died\ncontinues to work).\nThe AudioPolicyService client shall upon registration set again the\ncb flag to continue beeing notified.\n\nAlso clear binder caller identity before registering a client to\naudio flinger and audio policy services to avoid registering the\nwrong client when get_audio_flinger() or get_audio_policy_service()\nis called while executing a binder call.\n\nBug: 78506562\nTest: launch a test app registering to Port Callback. Check upon\nsetDeviceConnectionState and createAudioPatch that cb are called.\nKill the audio server, and check cb continue to be called.\n\nChange-Id: If1e803f59cb02fba84b6259e9da2d7031235d9c2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "54274035905ef52c7eb88309aec5e5b8f25be471",
      "tree": "d2b51edba9e46feebaf6cb145c5a3f112b79afb5",
      "parents": [
        "6b6f4313aae039f2d73664816e45834e65f79bf5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 19 18:16:44 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 20 09:53:33 2018 -0700"
      },
      "message": "AudioTrackShared: Fix wrap condition for stop limit\n\nTest: Photos video playback and repeat accessing info\nBug: 68747620\nChange-Id: I8c4afa44c0a0a7f689fbc8797ee815e8ae960979\n"
    },
    {
      "commit": "b8ca98e81617f33e1b15a210c673b8f4c5a6de28",
      "tree": "e08139863d09057a876f66c62a121f8778ac288e",
      "parents": [
        "018c8a09a35c6da526af2bcb130522ed593e9432"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Apr 16 12:47:19 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 18:51:15 2018 +0000"
      },
      "message": "Add retry mechanism to AudioRecord::restoreRecord_l().\n\nThis is analogous to similar code in AudioTrack::restoreTrack_l().\n\nBug: 77682459\nTest: Connect USB headset. Start Skype call. Note input audio on DUT is\nheard on remote phone. Manually kill audio server, verify that input\nfrom USB headset is restored on DUT and heard on remote phone.\n\nChange-Id: Icbf624aba8a3fe6917b132d8c38c2812f9519ec6\n(cherry picked from commit 782049413376ee1833a08ba02cc5ba6b5905792f)\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": "ef22118bd17471d63040015df8e3f77230a9d2af",
      "tree": "2f1f93e3d39e322b6b312fb48d199eb66b7d5a17",
      "parents": [
        "4dce3415f7b9be55f0a889dc0451d3931b2060bb",
        "10b7123bd6ce29fe756422aeedc5cfe469c4309f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 22:20:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 22:20:06 2018 +0000"
      },
      "message": "Merge \"audiopolicy: clear caller identity before calling audio policy manager\" into pi-dev"
    },
    {
      "commit": "b0272097450ef868637e8a50d2575e16e37c90fb",
      "tree": "6a8504f06e427d89dfa6da438e06079188a7be95",
      "parents": [
        "6bcc99198f9be597705be1277977828037d48a1d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 12 11:06:56 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 13 18:42:21 2018 -0700"
      },
      "message": "Sanitize effect descriptors for AudioPolicyService binder calls.\n\nZero initialize structs before parcel read, if status is not checked.\nSanitize parcel read audio_port_config.\n\nTest: Audio CTS, See bug for POC\nBug: 73126106\nMerged-in: Iece43eb463385927e6babcf93654eea8aaebc29c\nChange-Id: Iece43eb463385927e6babcf93654eea8aaebc29c\n"
    },
    {
      "commit": "10b7123bd6ce29fe756422aeedc5cfe469c4309f",
      "tree": "340803c949b9500ce5e2873fbf874fcec782fd3f",
      "parents": [
        "258fb48d1498c8d34d6877700db993938cc89f71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 18:14:44 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 18:18:49 2018 -0700"
      },
      "message": "audiopolicy: clear caller identity before calling audio policy manager\n\nAudio policy manager methods must always be executed with the\nlevel of priviledge of audioserver process.\nAfter checking calling permissions, audio policy service will\nclear binder caller identity before calling into audio policy manager.\n\nAlso add restrictions for start source and stop source binder\ntransactions.\n\nBug: 77869640\nTest: manual audio smoke tests\nChange-Id: I993d4fddcea9bfa3f44093c38406b85d69ca8890\n"
    },
    {
      "commit": "0967c6c06d030636e2c584ce3e24924357a3a854",
      "tree": "9614233f9011d7645c95a1b84b610aa609845fe3",
      "parents": [
        "2383098d54b6503875bdf0c6b649fa66f22d79ac",
        "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "message": "Merge \"AudioTrack: Prevent server from reading client data after stop\" into pi-dev"
    },
    {
      "commit": "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed",
      "tree": "e89b4aa887013efbc8227dcf4c56addf4ab284b9",
      "parents": [
        "1f03085b596f185d91ccae11b7c0d9f0bc8cd206"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 29 16:30:14 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 02 14:19:24 2018 -0700"
      },
      "message": "AudioTrack: Prevent server from reading client data after stop\n\nPrior to this CL, if an AudioTrack client wrote audio data after\nAudioTrack stop(), but before the track was drained by the server,\nthe newly written client data would be consumed in the drain.\n\nWe now limit the server read to the client write position on stop.\nThis interlocking is essential for rapid asynchronous AudioTrack\ncommand processing.\n\nTest: AudioTrack CTS, SoundPool looping, bug test case\nBug: 75788313\nChange-Id: Ib70e3dc46afe047a8c6cf1fb906a618b3c66cc7f\n"
    },
    {
      "commit": "f2c4711aaed2a845e94a50c707c1ba7cec443443",
      "tree": "7b805d5fc23de244cb5c1c45246724390d60ce36",
      "parents": [
        "f2797b2275e808a73641190899994de639f123f2",
        "b13b35d7e2732227c1593257d4ef1353bf672a1f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 31 04:53:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 31 04:53:21 2018 +0000"
      },
      "message": "Merge \"Add retries in restoreTrack_l if the track does not start\" into pi-dev"
    },
    {
      "commit": "b13b35d7e2732227c1593257d4ef1353bf672a1f",
      "tree": "81298c334193e551bbfa240ad585678ece8b7eeb",
      "parents": [
        "5915fa32fb6ec38b90a57162bf72c3ef714f03d7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 30 17:21:14 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 30 17:57:10 2018 -0700"
      },
      "message": "Add retries in restoreTrack_l if the track does not start\n\nConnecting to a BT A2DP device supporting multiple codecs causes\na lot of churn on the audio service side, and it can reject\nstarting playback of a previously created track. As a\nworkaround, allow restoreTrack_l to retry in this case.\n\nBug: 74409267\nTest: switching between 2 HD BT headsets while playing audio\nChange-Id: I5d2ecf4da9ff680af7ae5bb837081b22ecd84f85\n"
    },
    {
      "commit": "83028d5920884992b16f34aca167cd6c27734d3c",
      "tree": "84fcfdd9dbb1186a825a77270a69819c087ade7a",
      "parents": [
        "103f5a6268e820daa6a47c560e10a25514dd2ce1",
        "9ff780e58ff96ff98acaae4166bb218880bf9e73"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "message": "Merge \"Support query microphones information.\" into pi-dev"
    },
    {
      "commit": "9ff780e58ff96ff98acaae4166bb218880bf9e73",
      "tree": "b54bf56b7f6ebc5950064d2908004abfe35d7162",
      "parents": [
        "2ca700737c14edc9141af170ee278853fd99fa87"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Mar 19 18:19:52 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Mar 28 10:17:36 2018 -0700"
      },
      "message": "Support query microphones information.\n\nGet list of all/currently active microphones from hal.\n\nBug: 64038649\nTest: Manual Testing and Cts test\nChange-Id: Id39cae38ba040f9bc91571e713487f87c2eb67b0\n"
    },
    {
      "commit": "b1eb717472814adea3daa6b276af68d71a6b892f",
      "tree": "3ebba2c3d8c3f79bbb1ddf46f2a117fd00391dae",
      "parents": [
        "4a7b86426b7139dae80d1362eddb842e675bc069",
        "96c7eed596077ff84e75b7b1c6f20c3a29219bd1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 27 16:34:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 27 16:34:36 2018 +0000"
      },
      "message": "Merge \"audioserver: fix UID checks for multi user\" into pi-dev"
    },
    {
      "commit": "96c7eed596077ff84e75b7b1c6f20c3a29219bd1",
      "tree": "cf06852ef755e4d7dccfa81a7d3d4909d6159c60",
      "parents": [
        "bebc764c6b3e90024a56c9af4517a1a68713f3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 17:57:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 27 14:49:16 2018 +0000"
      },
      "message": "audioserver: fix UID checks for multi user\n\nFix UID checks in audioserver to take into account multi user UIDs\nwhere the top part above AID_USER_OFFSET contains the user number.\n\nBug: 76439650\nTest: manual audio smoke tests.\nChange-Id: I6dbd616021bcb2639c7b7369000ce911c7e7e030\n"
    },
    {
      "commit": "09e621a7b1b417b47618e7d8bd71ebade73b9089",
      "tree": "c3d1618fb24a3aba2d74d9567b4ebe24183d624f",
      "parents": [
        "bebc764c6b3e90024a56c9af4517a1a68713f3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 16:50:47 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 16:54:34 2018 -0700"
      },
      "message": "audiopolicy: increase binder command timeout for some commmands\n\nExtend timeout for SET_DEVICE_CONNECTION_STATE and HANDLE_DEVICE_CONFIG_CHANGE\nbinder commmands in IAudioPolicyService.cpp while we investigate why BT A2DP\ndevice connection/disconnection can sometimes take more than 5 seconds.\n\nBug: 74840091\nTest: check that no timout occurs for A2DP headset connections\nChange-Id: I7dcba80059898ac1c73d580594d4956b4608ade0\n"
    },
    {
      "commit": "3528c9330f481f236f16753cb0846c7d6ddcc7ee",
      "tree": "3fb6f04c3842c26e81a68fb847596aa237b713d9",
      "parents": [
        "12cc6e7a4162ea4137f9082a3e0fea551b21aae3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 23 17:17:22 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 22 10:02:49 2018 -0700"
      },
      "message": "audio services: monitor execution time for binder commands\n\nAdd a mechanism to monitor execution time of incoming binder\ncalls to audio flinger and audio policy and cause native audioserver\nrestart in case of timeout.\n\nBug: 69250055\nTest: manual. audio smoke tests\nChange-Id: I01b5bf2599fb2a4cd265cbbe8d4e34b2b059aaf4\n"
    },
    {
      "commit": "c9685f39f807c64176ad8ea4db5bae0369817b86",
      "tree": "3dcd9304882ee8aab31192a11656678b2f6cec76",
      "parents": [
        "18c5a769d57b3420b899db1b9e29e244da8f4093",
        "7c6737146601f04dc3f3dbc6359dc4f08ecf5904"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Mar 03 00:41:17 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Mar 03 00:41:17 2018 +0000"
      },
      "message": "Merge \"Remove unreachable condition\" am: f140201ff1 am: a49a1bf9bd\nam: 7c67371466\n\nChange-Id: I79f1c1457244c708d06124453a111d33a0460029\n"
    },
    {
      "commit": "7c6737146601f04dc3f3dbc6359dc4f08ecf5904",
      "tree": "e0d658c3d00a9fcc45f184c66fa237a2fd61ff88",
      "parents": [
        "db959740904eba27582feee48234463f3553b199",
        "a49a1bf9bdeada97fb3c41f54e735b0f6c46f620"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Mar 03 00:26:11 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Mar 03 00:26:11 2018 +0000"
      },
      "message": "Merge \"Remove unreachable condition\" am: f140201ff1\nam: a49a1bf9bd\n\nChange-Id: I305a2c6cd22966c0c2918596aa5fd9c585101345\n"
    },
    {
      "commit": "e5b052ea1209bf0ced35e82a0096bf799011499e",
      "tree": "4839a961e35479374078edb02d832e2938df2f4c",
      "parents": [
        "853996e7b28fcb8707a15f70eb9c3cadd47943f0"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Mar 01 17:56:44 2018 -0500"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Mar 01 17:56:44 2018 -0500"
      },
      "message": "Remove unreachable condition\n\nComparison of unsigned enum expression \u003c 0 is always false. Fixes\ntautological-unsigned-enum-zero-compare warning.\n\nBug: 72331526\nTest: m\nChange-Id: I9b4aa103ed64d3d08d1e36abbd8f3bf960cdf5d4\n"
    },
    {
      "commit": "1bc088a918d7038603230637d640941953b314d4",
      "tree": "e231c2b22d944eaed29445fe4a35861fddb50e54",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 09 15:57:31 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 15:50:32 2018 -0800"
      },
      "message": "Call AudioMixer only from MixerThread threadLoop.\n\nAs part of change:\nRemove track name offset by TRACK0.\nMove track name management to the Tracks class.\nSync mixer track name to FastMixer track index.\n\nFixes regression introduced by commit 8ed196a.\n\nTest: SoundPool, AudioTrack CTS, Usability\nBug: 72937362\nBug: 73004420\nChange-Id: I2f1a33f6f0da66bcd7aa91e2a4b663ff822df645\n"
    },
    {
      "commit": "fee1976a2849c37a53d8a01ac10327d522a1ba93",
      "tree": "5b8a259a93f6f84a964badf5417c113a308e67c9",
      "parents": [
        "98c15702ca0c814fee9110efa14d70fc9937514e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:13 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:08:31 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: refactor audio record APIs\"\"\n\nThis reverts commit e9ebcdbb0580bd4a75f4530b957b1859e535c028.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: I9fb550a9f62d2d15cafbd7534e5e7eaa155a7213\n"
    },
    {
      "commit": "3cb0605ea4300ee997c2c7983533af8ea74df8ad",
      "tree": "b701ba15851691b54975e7869f2fe73c5d430603",
      "parents": [
        "7e193a143f52180abfc9c1c9c82f7c70f6ae5f74",
        "77973c438b758da730a72ab3bb85b67f6767bf6b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "message": "Merge \"Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\""
    },
    {
      "commit": "de15b8c160c720c48b93796016801e7ae0b6bd2d",
      "tree": "49044f23ead7f0dca058f477f5b1365a16a6e144",
      "parents": [
        "a2544c5431224995ade19611642d2b534939fb14"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 30 16:35:56 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 07 11:55:19 2018 -0800"
      },
      "message": "link media.metrics native strings to api-controlled java strings\n\nadd comments to native media.metrics code pointing to how they\nare (and aren\u0027t) to be kept in synch with their java counterparts\nthat are part of the public API (and therefore pretty much fixed).\n\nBug: 72492234\nTest: compilation\nChange-Id: Ic096545a5cdfb2160c6b66438d345d8e625384b9\n"
    },
    {
      "commit": "de2c195a218cc24eaf3a7ced149f7eb723656a97",
      "tree": "90f7ece00616bf5c905fe14ae1b17ee864041685",
      "parents": [
        "4b8dbfc9e85ca7c2cc4acdcddca997f197fee718",
        "a70eef730d7665c9f4b2dfd25faf072785f80a2d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "message": "Merge changes from topic \"fix-b-63901775-add-presentation\"\n\n* changes:\n  Audio presentation selection for AudioTrack native\n  Add presentation API interface\n"
    },
    {
      "commit": "5dd03a5825d06033c1e66353dbbfcfc7f60990c5",
      "tree": "9deed77dba8b49bf83bf5f039c4ebaee3aa5b34c",
      "parents": [
        "5dca017406b057bf71f8934ef57aab6098ecec6c",
        "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "message": "Merge \"Support query active microphones information in AudioRecord.\""
    },
    {
      "commit": "31067d4b87475dd0a90145d4849cf66f7bf93f86",
      "tree": "61656e49f84e02ae6382e94169916356f65c8e1f",
      "parents": [
        "e9ba24a984610b09d33a739034caf8949bb53f7e",
        "92d23b433bd770c22c2d4a30b573602f5565de1b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 22:37:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 22:37:49 2018 +0000"
      },
      "message": "Merge \"Remove finalized concept from media.metrics\""
    },
    {
      "commit": "77973c438b758da730a72ab3bb85b67f6767bf6b",
      "tree": "af7ef411c2b8e911ed6559e70720b9ef2c9357ac",
      "parents": [
        "d24be7ca2491048892905734cb8a1e77440df948"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "message": "Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\n\nTest: builds OK\nChange-Id: I7d2c4cb8982a3d792edf8fad7a7bae0ac3c4331c\n"
    },
    {
      "commit": "34c238eaf4af84787648c714289de9dcfa1668d3",
      "tree": "a48681eb6b1e2dcc17d829e2e049112277b22ad0",
      "parents": [
        "d54bacf09c2384987ad9186de67c4225db1eed1d",
        "4980df29f61d5fad95e17ca1d1969f6ca4c1f296"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "message": "Merge \"audio: filter reserved binder calls\""
    },
    {
      "commit": "4980df29f61d5fad95e17ca1d1969f6ca4c1f296",
      "tree": "c7e38eb5c4c223ac0a9b08e7636adf71de7a9c62",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 26 18:04:09 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 17:28:43 2018 -0800"
      },
      "message": "audio: filter reserved binder calls\n\nBlock incoming binder calls to audio flinger and audio policy service\nfor sensitive functions if they are not coming from a system UID.\n\nBug: 72278478\nTest: audio smoke tests. CTS tests for AudioTrack and AudioRecord\nChange-Id: I78e02efffe135d5450ced125e51e2084719ca03d\n"
    },
    {
      "commit": "8ec3d5d415776cf37398b6cf788a3d4be2335a73",
      "tree": "a09aa5cf817e0f81987df05d71c3f0965c011a05",
      "parents": [
        "ab0486cbc9d0cc730be7e294af83865b1ad47b10",
        "e9ebcdbb0580bd4a75f4530b957b1859e535c028"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "message": "Merge changes I6bcc87c6,If633e677\n\n* changes:\n  Revert \"audio policy: refactor audio record APIs\"\n  Revert \"audio flinger: move record permission checks to audio policy service\"\n"
    },
    {
      "commit": "92d23b433bd770c22c2d4a30b573602f5565de1b",
      "tree": "e2ff902f2be5d131e8a1cd4af09868d3a5af2794",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 12:10:30 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 14:38:27 2018 -0800"
      },
      "message": "Remove finalized concept from media.metrics\n\nthe \u0027finalized\u0027 concept didn\u0027t pan out -- remove references to it.\nSimplifies the code flow.\nAlso purged some uses of generateSessionID().\n\nBug: 71874686\nTest: logcat/dumpsys\nChange-Id: I39e48526a5696158d8195f47154881ca6ecda266\n"
    },
    {
      "commit": "e9ebcdbb0580bd4a75f4530b957b1859e535c028",
      "tree": "a603313572aeef80fb8a26d2ff38f7a6541e835c",
      "parents": [
        "67651f97c9c3880a4440c86618337f8a64c3e1a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:18 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:37:24 2018 -0800"
      },
      "message": "Revert \"audio policy: refactor audio record APIs\"\n\nThis reverts commit 0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: I6bcc87c618ac9bfe5c911915cbb37de616bc727a\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": "a70eef730d7665c9f4b2dfd25faf072785f80a2d",
      "tree": "3139b8b7898a5a539b9c1ee0533e1a386da459e9",
      "parents": [
        "9ee64f139ceff98ea5f9afcc2eaab42901922d56"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Jan 04 14:23:50 2018 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 25 12:33:52 2018 -0800"
      },
      "message": "Audio presentation selection for AudioTrack native\n\nBug: 63901775\nTest: make\nChange-Id: I63c9bdef880c7c387fd05f093b8d1094307a2754\nSigned-off-by: Previr Rangroo \u003cprang@dolby.com\u003e\n"
    },
    {
      "commit": "b2eb24b64f4a7bd367caaee345ca73271ce9af51",
      "tree": "4fe74aac2dc77144abb49a062284822c3db804cf",
      "parents": [
        "fd4fb71b83d43e3566215c9b8babe3afc99f0816",
        "8839430158e22382f0f6450c9274071eca945989"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 20:31:07 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 20:31:07 2018 +0000"
      },
      "message": "Merge \"add getMetrics() apis for AudioTrack and AudioRecord\""
    },
    {
      "commit": "8839430158e22382f0f6450c9274071eca945989",
      "tree": "7e3e0a574c5370a95bacf7281a62c5092f41036c",
      "parents": [
        "03570a65a46bd0d577aa4c860c4f32f4abf79c7c"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 14:52:05 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 17:06:59 2018 -0800"
      },
      "message": "add getMetrics() apis for AudioTrack and AudioRecord\n\nadd getMetrics() method to access media.metrics for AudioTrack and\nAudioRecord.\n\nBug: 72179020\nBug: 72178968\nTest: tweaked CTS\nChange-Id: Id69862887b8b58655f59057e06f96b20a8e7d332\n"
    },
    {
      "commit": "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe",
      "tree": "63641f2dea738a745946c63f80803557a74ec12b",
      "parents": [
        "c6116926de37cabb1d35ddd57eaff0e19fcec8bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 05 11:46:13 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 16:56:52 2018 -0800"
      },
      "message": "audio policy: refactor audio record APIs\n\nRefactor audio policy service APIs controlling audio record (startInput, stopInput, releaseInput)\nTo allow finer grain control per AudioRecord client and prepare for new concurrent capture\npolicy\n\nTest: AudioRecord CTS test. manual test of capture use cases:\ncamcorder, OK Google VoIP\n\nChange-Id: I4992fd5a115853c47be5dac5465989eb53f1287c\n"
    },
    {
      "commit": "c6116926de37cabb1d35ddd57eaff0e19fcec8bc",
      "tree": "fdc9a07eec6b4e7dc446a76149bd0c843d298edd",
      "parents": [
        "7027e8019ad974d2e474a7fcaf43adedbdf08f23",
        "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "message": "Merge \"AudioMixer: Enable 256 tracks, up from 32 tracks\""
    },
    {
      "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": "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf",
      "tree": "fda78f06eeb733b00fda71fbd401b6a787b76190",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 05 13:21:11 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 23:04:33 2018 -0800"
      },
      "message": "AudioMixer: Enable 256 tracks, up from 32 tracks\n\nClient apps can have 40 tracks, up from 14 tracks\n\nRelated code cleanup:\na) Removed State nested class\nb) Moved static functions to Track member functions\nc) Moved static function hooks to pointer-to-member-function hooks\nd) Some reorganization of touched code for recent C++ style\n\nTest: test-mixer native mixer test\nTest: SoloTester effect test\nTest: SoundPool with many tracks\nTest: CTS AudioTrackTest\nBug: 64161002\nChange-Id: I0d09620acd715d577e776bb6f76e94e87e554520\n"
    },
    {
      "commit": "34abab103a6eb3fc7417c9e9169ee172b2303952",
      "tree": "df4065ab25ab83d7380715b42ad7c79d0d436873",
      "parents": [
        "fe4e4db4615585fd70a55d52f21c55dd517d2bfa",
        "07be14fb96fc5c106ea2b874faf2b768f468eb8e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "message": "Merge \"Revert \"Audio V4: Split system and vendor Audio.h\"\""
    },
    {
      "commit": "07be14fb96fc5c106ea2b874faf2b768f468eb8e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "message": "Revert \"Audio V4: Split system and vendor Audio.h\"\n\nThis reverts commit f8ad7f85e9891b2614338330c75ae9e946fccc5a.\n\nReason for revert: Breaks the build of multiple devices\n\nChange-Id: I24f17a0fa0c7ba171c4a3639f890e7f4e42f6b1e\n"
    },
    {
      "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": "6a784e71ca122347789faa73367877d41831592f",
      "tree": "de25d71706442e18346a5785f4174aba5604454d",
      "parents": [
        "f7a14c051ee9bd5f288963f3c190642e4915250b",
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "message": "Merge changes from topic \"audio-hal-v4-tmp\"\n\n* changes:\n  Audio V4: Split system and vendor Audio.h\n  Audio V4: Use the framework audio.h instead of the HAL\u0027s\n"
    },
    {
      "commit": "766fb020a50b64bf9a808bd80df60c54c2ca8cc3",
      "tree": "acb92cb201889d2b56f41bc2a437da1aaae72c4e",
      "parents": [
        "652f9299bb8a7a50148d57a75de6ede831bfed85"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sun Jan 07 12:18:03 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:05:23 2018 +0200"
      },
      "message": "Support routing audio playback to telephony uplink\n\nThis change enables phone apps to play audio to the uplink stream\nduring a call.\nThis change maks the AUDIO_OUTPUT_FLAG_INCALL_MUSIC_UPLINK flag to be added to the flags that are sent to the HAL when an ongoing call is active, the chosen output device is the TX telephony device, the stream type is music, and the calling app has the MODIFY_PHONE_STATE permission.\nFor this change to take place, the following changes were made to the signature of getOutputForAttr in IAudioPolicyService:\n  1. Add pid (process id) parameter to getOutputForAttr.\n  2. Make the flags parameter a pointer so changed value can be\n  examined by calling function.\n\nBug: 69973354.\nTest: tested manually.\nChange-Id: I74cef3f8b66de6e0e8f87b6235130c2cdf423da7\n"
    },
    {
      "commit": "f8ad7f85e9891b2614338330c75ae9e946fccc5a",
      "tree": "957d47ddc7419c688dda1d4c1ac3068eda6d894f",
      "parents": [
        "6d7582e9ad858301b3eeff7b187af6c34808cb7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 17 15:57:39 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 21:39:40 2018 -0800"
      },
      "message": "Audio V4: Split system and vendor Audio.h\n\naudio.h and its dependencies (audio-effect.h, sound_trigger.h...)\nused to be shared between system and vendor code.\n\nThis led to multiple problems:\n\n1) Such sharing contradicts the Treble policy of\nstrict independence of framework and vendor code.\n\n2) When audio.h was changed, every vendor needed to update\nits code in the next release. This meant that audio*.h\nheaders were mostly changed in backward compatible manner.\nNevertheless, for P the HIDL interface and thus the audio.h\ninterface are changed in backward incompatible way.\n(Some enum are becoming 64 bit long).\n\n3) As the headers were common, some API used only by the framework\nneeded to be visible to the vendors (mostly enum values).\n\n4) Treble policy is to support at least one previous HAL version\n\nAs a result the audio*.h headers are now duplicated,\none set for the framework, and one for the vendor.\n\nEach set will evolve independently. After this split,\nthe framework-only APIs will be removed from the vendor headers\nand vice versa.\n\nThe split is implements as such:\n\n + for system code\n\n    - NOT moving the libaudio_system_headers\n      Eg: system/audio.h and system/audio_effects/effect_equalizer.h\n          are still in system/media/audio\n\n    - the legacy audio HAL API that were in libhardware headers\n          are now in libaudiohal_legacy_headers\n      Eg: hardware/audio.h and hardware/audio_effect.h\n          are now in frameworks/av/media/libaudiohal/legacy/\n\n + for vendor code\n\n    - moving libaudio_system_headers and the legacy audio HAL API\n          that were in libhardware_headers in\n          android.hardware.audio.common.legacy@2.0\n      Note that those headers are now versioned, so migrating to a @4.0\n          HIDL HAL will mean changing the legacy dependency too.\n      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h\n          are now in hardware/interfaces/audio/common/2.0/legacy\n\n    - the legacy audio effect HAL API that was in libaudioeffects\n          is now moved in android.hardware.audio.effect.legacy@2.0\n      Eg: audio_effects/effect*.h are now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\n    - the legacy sound trigger HAL API that were in libhardware_headers\n          is now moved in android.hardware.soundtrigger.legacy@2.0\n      Eg: hardware/sound_trigger.h is now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\nlibaudioutil being used by both system and vendor, had\nto be renamed for system to libaudioutil_system.\n\nVendor libs that now depend on the audio.h of a specific\nversion and are not extensively referenced in non google code,\nappend @2.0 to their name.\n\nNote that headers that are not expected to change in the 4.0 HAL are\nleft in all-versions folder to avoid duplication.\nThis is an implementation detail as the versioned libraries export\nthe all-versions headers.\n\nNote that strict vendor-system separation is enforced by the\nbuild-system. The system headers are not available for vendor\nlibs and vice-versa.\n\nNote that this patch is split between numerous git repository (\u003e10),\nall the commits having the same Change-id for searchability.\n\nNote that audio_policy.h is no longer exposed to vendors\nas the legacy audio policy HAL API was never officially supported.\nAs a result the audiopolicy stub implementation has been removed.\n\nTest: compile taimen-userdebug walleye-userdebug\n              sailfish-userdebug marlin-userdebug\n              gce_x86_phone-userdebug gce_x86_phone\n              full-eng aosp_arm aosp_x86-eng\nTest: check that the emulator booted and played audio\nTest: full QA on sailfish-userdebug and taimen-userdebug\nBug: 38184704\nChange-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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": "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": "0cde7e5863df60ece6986ad9b5b4358dc82380eb",
      "tree": "e5b094401bf238608095f4755450e9da93252286",
      "parents": [
        "dc3b49f3abc9f88b273cab2de9c0ba56b2173e7c",
        "a10a2d361758752715744023b4109e8007fa34d4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 21:43:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 21:43:36 2018 +0000"
      },
      "message": "Merge \"prevent null pointer in audio track media metrics\""
    },
    {
      "commit": "a10a2d361758752715744023b4109e8007fa34d4",
      "tree": "cd90dc862524a47f4ea851b848d2c68e73383ed6",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "message": "prevent null pointer in audio track media metrics\n\nDisable a piece of audio track metrics code that triggered a\nnull pointer exception.\n\nBug: 72027185\nTest: manual\n"
    },
    {
      "commit": "783bd0d74d142493b4ef0a15a2664535854e99f9",
      "tree": "60cbf56cb9d37670194d12cda8180767b6b5cfa9",
      "parents": [
        "734d186db7ec3d1f877001d71c71de6562ead7f7"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 11:10:35 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 09:25:15 2018 -0800"
      },
      "message": "media.metrics changes AString -\u003e std::string\n\nchange from AString to std::string for how media.metrics handles\nstrings.  This severs the dependency on libstagefright_foundation,\nwhere AString is implemented, so we can integrate into places\nwhich do not want to introduce a dependency on libstagefright_foundation.\n\nBug: 70805723\nTest: compilation/linking, CTS subset\nChange-Id: I66de971b6ec354444e06112607a2d7614084cef8\n"
    },
    {
      "commit": "734d186db7ec3d1f877001d71c71de6562ead7f7",
      "tree": "7c0a6a75ee915ef2bba1ac75ff48d545e2f2c8f3",
      "parents": [
        "ed30470cf0a20c0c1edb2b82075985ccaa6c75c1"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 09 10:42:14 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 12 13:30:13 2018 -0800"
      },
      "message": "Metrics for AudioRecord\n\nCollect media metrics for audiorecord. Basic framework and initial set\nof metrics.\n\nBug: 70569777\nTest: recordings, observe stats\nChange-Id: I66fce1eec46cc13a93b106c2be34d23c138920de\n"
    },
    {
      "commit": "ed30470cf0a20c0c1edb2b82075985ccaa6c75c1",
      "tree": "b90723f645ab06ca927b3e9a7d81fdef1f99d57e",
      "parents": [
        "21f6d6cbecf190724b044251576edf6ee6f48364"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 12 14:00:57 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 14:57:53 2018 -0800"
      },
      "message": "collect media.metrics from audiotrack\n\ninitial pass at collecting metrics information from audiotrack.\n\nBug: 70569777\nTest: manual via dumpsys media.metrics\nChange-Id: Ia6ed6d93bd487e4323b86dd4ffabae232f79f94b\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f",
      "tree": "d6f22c53e3603b0b69a54ec9bad1a733c46b6785",
      "parents": [
        "61e916dd6b0c8701b42f3f392e51e5b52ca38e65",
        "116a49881b35f561f6ee316990d425fad56e7487"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "message": "Merge \"AudioEffect: Convert aux buffer format from q4.27 to float\""
    },
    {
      "commit": "53ad17fd64e1415d7c29480f0cc3d413f1c71936",
      "tree": "ca9dea18793fad9c9293e5f6cecb590a5d375db0",
      "parents": [
        "28288fb0b1da843cdd37edab0cdecff32abacdce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 20 09:21:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 21 09:26:23 2017 -0800"
      },
      "message": "ToneGenerator: fix use of STREAM_VOICE_CALL\n\nToneGenerator is only used for signalling, never for voice.\nIn order to use proper audio attributes usage and content type, convert\nrequests to play on stream VOICE_CALL to stream DTMF.\nThis will produce consistent routing and volume behavior when apps use\nDTMF or VOICE_CALL streams.\nAlso use audio attributes when creating the AudioTrack\n\nTest: CTS for ToneGenerator, voice and VoIP calls\nChange-Id: Ic67abaeed0ea09f08ad5586cebe858e74fe21af9\n"
    },
    {
      "commit": "0a7885e717e498167520a6ed2fdec45fb472ceee",
      "tree": "b87587a81592d90cc382b1df6bdb999a2ca08096",
      "parents": [
        "724a1816e7bd503d7a1f491a90f76c8cf3ca6a16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 16:48:41 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:33 2017 -0800"
      },
      "message": "add test for AudioRecord constructor\n\nThis test contructs a number of AudioRecords from arguments\nlisted in an input file and outputs dumps of the constructed\nAudioRecords to an output file.\nThe output file can be compared to previous iterations to spot regressions.\nAn reference input file and the corresponding output file are added for\nfurther comparison.\n\nTest: run this test\nChange-Id: I0d1b596ca91c3c58f159887fbd48aa3f04ae38c2\n"
    },
    {
      "commit": "724a1816e7bd503d7a1f491a90f76c8cf3ca6a16",
      "tree": "e556dc3d59e6b5ad93c7015012017f914ea5ea19",
      "parents": [
        "896c9670846cc66d54ba86a978109817818c3929"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 16:59:56 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:33 2017 -0800"
      },
      "message": "add dump() method to AudioRecord\n\nAdd a dump() method to AudioRecord.\nCan be used by dumpsys or tests.\n\nTest: run test_create_audiorecord\nChange-Id: I4b3133601eeff4d5447ca2c5b13a01ff3451b6c7\n"
    },
    {
      "commit": "b1cc36b5d52de7cb3d78426d41dee87f25d7164a",
      "tree": "aa88693bc980e3209f20133052fd33e059af1334",
      "parents": [
        "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 11 12:14:16 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:28 2017 -0800"
      },
      "message": "Revert \"Revert \"restrict binder transactions to audioserver\"\"\n\nThis reverts commit 009c1e37d07936178b59346ee8f7cb19484644b6.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I263aa1ed7ef832d593bc0fb02000d986ad1a3f69\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": "3700e162a5526ada762d081de34c9abdd085c5fe",
      "tree": "87a9cf3e64431512fc413fd5833e7cb02b2bfa2a",
      "parents": [
        "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
        "009c1e37d07936178b59346ee8f7cb19484644b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "message": "Merge \"Revert \"restrict binder transactions to audioserver\"\""
    },
    {
      "commit": "009c1e37d07936178b59346ee8f7cb19484644b6",
      "tree": "0d5dc5b43b751d7ae701cf8d1afee1835b8b1d45",
      "parents": [
        "4db794441a5ef63733e109213269bb6324387b36"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "message": "Revert \"restrict binder transactions to audioserver\"\n\nThis reverts commit 4db794441a5ef63733e109213269bb6324387b36.\n\nChange-Id: Ifae4f59e4aed489bb22958674cf96d556b170d2d\n"
    },
    {
      "commit": "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
      "tree": "800a56dafa0a81c311b839a71e1184912733c9a9",
      "parents": [
        "316c3176b8b839a8465d0c0dfa3878a14d3454c0",
        "0aa3c6eba07f987fe84b5fa450274a8e730971e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "message": "Merge \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\""
    },
    {
      "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": "116a49881b35f561f6ee316990d425fad56e7487",
      "tree": "26d80d6e59138bcf42902cfee61713817cc06c09",
      "parents": [
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:48:37 2017 -0800"
      },
      "message": "AudioEffect: Convert aux buffer format from q4.27 to float\n\nTest: Solo Tester aux reverb\nBug: 69853407\nChange-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433\n"
    },
    {
      "commit": "4db794441a5ef63733e109213269bb6324387b36",
      "tree": "b191586e568eb3c75505c5624e1e5ed3ab805c76",
      "parents": [
        "1b2de88f1659106dadf31794907f4fb66d8baec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 14:11:40 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 11:13:56 2017 -0800"
      },
      "message": "restrict binder transactions to audioserver\n\nPrevent other processes from sending reserved binder transactions\nto IAudioFlinger and IAudioPolicyService.\n\nTest: Manual audio smoke tests\nTest: CTS: AudioRecordTest, AudioTrackTest, AudioEffectTest,\nAudioPreProcessingTest, AudioManagerTest\n\nChange-Id: I3643e03cb056236f5e88476d0a575cc28c220f2c\n"
    },
    {
      "commit": "2d8876492d9031978a917764bb3e38c2927284ea",
      "tree": "9a59021ff6c1e016067be3d5509089e79f741c94",
      "parents": [
        "ad95755fa20a6a058e61d4a836acbadbc7bb6364",
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:36:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 18:36:05 2017 +0000"
      },
      "message": "Merge \"refactor AudioRecord and AudioFlinger openRecord()\""
    },
    {
      "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": "0225a1883b85466e59ba479314ca7056f2c5de98",
      "tree": "ecc079816676630723bef3b4fcbd30fdd8622187",
      "parents": [
        "9c036d8c32187c1e2612d1341ac9713f13252eab",
        "6bf135b03e58c8b6399df2937358242977c77b2b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 02 23:20:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 02 23:20:51 2017 +0000"
      },
      "message": "Merge \"Export AIDL files as a filegroup for framework.jar\""
    },
    {
      "commit": "9c036d8c32187c1e2612d1341ac9713f13252eab",
      "tree": "221fb86439deccc4d9ce736c297b92df4ce0f9c3",
      "parents": [
        "62b3e7a87d1b0554cf347ba9b06978f9344c46f7",
        "f3cb11a0bc9e7b397c2ae84c56ae0574c68f9379"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 23:37:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 01 23:37:36 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization am: 39fdbd097a\nam: f3cb11a0bc\n\nChange-Id: I4334fc550cd5c2660e2e6f128d2cdd7429917a56\n"
    },
    {
      "commit": "f3cb11a0bc9e7b397c2ae84c56ae0574c68f9379",
      "tree": "91c85857527bf75c13a162ca28dcf2b5712390fb",
      "parents": [
        "a774d5f64cd710013197b842fa33f2164a1c2789",
        "39fdbd097a147b5c719dac9ad2759e6c44eb3a4e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 23:33:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 01 23:33:52 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization\nam: 39fdbd097a\n\nChange-Id: I2bccade7b7164dd3b912a1f891c4bf077120812a\n"
    },
    {
      "commit": "39fdbd097a147b5c719dac9ad2759e6c44eb3a4e",
      "tree": "a0a4b68c895c0603bfa7eea77f0115e06ea1dacd",
      "parents": [
        "28565390a1094b3d33ccec23ab5325e0442dead3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Nov 13 11:15:27 2017 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 19:29:52 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization\n\nWhen audio_attributes_t was read from the binder parcel,\nthe string tags field was copied without checking that\nit contained a \u0027\\0\u0027.\n\nThis could lead to read past the end when tags were used.\n\nThis patch always adds a \u0027\\0\u0027 at the end of the buffer when\ndeserializing.\n\nBug: 68953950\nTest: manual playback/record\nTest: send binder payload without \\0 in tags attribute, check that only\n      AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - 1 char are printed.\nChange-Id: I285258cbf7cfaf26b191d1f31b3b1e2d724c4934\nMerged-In: I285258cbf7cfaf26b191d1f31b3b1e2d724c4934\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "f32d7814f56f0a07b8aaacc88a0d8d00349fc916",
      "tree": "59bb1786ea61480ec92be9fb482480e96a83c5de",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 14:44:07 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 16:44:25 2017 -0800"
      },
      "message": "AudioTrack: fix status reporting\n\nMake sure mStatus is updated when set() is executed\nfrom outside of the constructor\nAlso update mStatus when createTrack_l() is executed.\n\nTest: manual test of audio playback use cases\nTest: AudioTrack contructor test.\nChange-Id: I70700c84800e144cbf34dac2f9d1526eaf7df292\n"
    },
    {
      "commit": "4473d78d092ffc442edeaed022c7e56366e1c504",
      "tree": "b14afb3cdeb329d4be2e687dcb7c1d96b797e445",
      "parents": [
        "cc25a713d9c3ea87299324d0f44864e78710020e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 11:53:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 12:15:23 2017 -0800"
      },
      "message": "add test for AudioTrack constructor\n\nThis test contructs a number of AudioTracks from arguments listed in an input file\nand outputs dumps of the constructed AudioTracks in an output file.\nThe output file can be compared to previous iterations to spot regressions.\n\nAn reference input file and the corresponding output file is added for\nfurther comparison.\n\nTest: run this test\nChange-Id: I88e458a194a18c9ec919e1e903d49686632c18bf\n"
    },
    {
      "commit": "6bf135b03e58c8b6399df2937358242977c77b2b",
      "tree": "64a1245f079864eb8a450028ca82999bb976732b",
      "parents": [
        "b6549b6297c7f6dcbd2c0b27b61407cde144530c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Nov 14 13:05:37 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 29 11:05:37 2017 -0800"
      },
      "message": "Export AIDL files as a filegroup for framework.jar\n\nPut AIDL files into a filegroup so they can be imported as sources\nfor framework.jar.\n\nBug: 69917341\nTest: m checkbuild\nChange-Id: Ia500ff881bcc8d4a6f0aa66e12d9e6bb5a07ecc1\n"
    }
  ],
  "next": "fec2f93fae282ad10bbb5e3fcce9f60eff2cfb48"
}
