)]}'
{
  "log": [
    {
      "commit": "cf3b71546d5bb04ba45d1d784108f1681f75c827",
      "tree": "1adddca53fd68c81789997a7f6636477209dadac",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 19 18:29:21 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 19 18:39:40 2019 -0700"
      },
      "message": "AudioTrack: Fix timestamp spam\n\nTest: logcat check during Photos playback, seek, etc.\nBug: 130586209\nChange-Id: I71c5e6b83f94485be8f2e9bb164314756a16c87a\n"
    },
    {
      "commit": "e9a90980ea48c3bb95d6aba755b4bb2095ba3e80",
      "tree": "d7a5ed3f900a75222ff0dec565292a9eada84f46",
      "parents": [
        "fa36d4b242bd0dcd2f1ce2ea6e0f838b7191a042",
        "393f0e05e3fa7351c81a470e5bd841451bcc13ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 11 01:47:12 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 11 01:47:12 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix attributes match helper function\" into qt-dev"
    },
    {
      "commit": "393f0e05e3fa7351c81a470e5bd841451bcc13ae",
      "tree": "47d865b1e143a717167b2fff0dd6da2e30b3966b",
      "parents": [
        "698d353587d6d0563a6451b2d701358e6cb4496e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 09:09:08 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:30:39 2019 -0700"
      },
      "message": "audiopolicy: fix attributes match helper function\n\nRegression caught on Attributes referred by their flags only\n(like BT SCO).\nClient may have more flags than the product strategy, checks\nto be done on all the flags of the product strategy are requested\nby the client.\n\nBug: 130284799\nTest: make\n\nChange-Id: Ie8d41a592342bc0a7a0326f9766e7e7503154e62\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "3b8c633f3907218cda99f1f65e633b76419640bf",
      "tree": "1b886e30ef072a48d9d99cc3adac29a82d102384",
      "parents": [
        "98731a2c2559d9986b0892c6a8c8ffca17cd68fc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 03 19:29:36 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 09 15:49:14 2019 -0700"
      },
      "message": "AudioTimestamp: advance first timestamp time after start if stale\n\nTest: Photos, File playback, AudioTrackSurroundTest#testPlaySineSweepBytes\nBug: 113294730\nBug: 118506063\nBug: 119895849\nBug: 120631792\nChange-Id: I83ec1e4c0ae2318fb69744a6265663a50682c485\n"
    },
    {
      "commit": "98731a2c2559d9986b0892c6a8c8ffca17cd68fc",
      "tree": "3cd6a839c5eb38b181a19c59ae008ae0c4186bee",
      "parents": [
        "0e5a1b3bb64d9a5d38903770e018379856401efd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 08 19:19:07 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 09 15:27:46 2019 -0700"
      },
      "message": "AudioTimestamp: Use current time when data pipeline is empty\n\nHandles change in Q, where we do not return an invalid kernel time\nin the extended timestamp when there is a reported error from the HAL.\n\nTest: Photos, File playback, AudioTrackSurroundTest#testPlaySineSweepBytes\nBug: 113294730\nBug: 118506063\nBug: 119895849\nBug: 120631792\nChange-Id: I90f2c7c314baa474c3dd3a24042f1d4b8bc0a12b\n"
    },
    {
      "commit": "8ebc68057e12e10a1adf644e12f10ff593576a07",
      "tree": "a5c1079714ff1edd89f19b1b2974c6de76a4ca86",
      "parents": [
        "62683a3fad1d6d699d5175a0e3e1ed9743900b5c",
        "ca35367b3d176f234bf955d2df95a45126b02287"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 07 18:45:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 07 18:45:35 2019 +0000"
      },
      "message": "Merge \"Clean up AudioTrackThread and AudioRecordThread constructor\""
    },
    {
      "commit": "d097981afa129353c42660869e284ae1784506c2",
      "tree": "c035d2a90097094a87c153fe97b3b5b5ba766c7a",
      "parents": [
        "f03cb213d22b238cbd0b72ded36048f0549f921f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Feb 21 15:51:44 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 14:50:35 2019 -0800"
      },
      "message": "AudioFlinger: Send Thread statistics to mediametrics\n\nUnify with AudioRecord and AudioTrack mediametrics.\n\nTest: mediametrics dumpsys after record, playback\nTest: CTS Audio(Record|Track)Test#testMediaMetrics\nBug: 114112762\nChange-Id: I6eb554cbf6ff760f9dea568abd3cde82366b51a7\n"
    },
    {
      "commit": "ca35367b3d176f234bf955d2df95a45126b02287",
      "tree": "af6bf618e16955aa03ecaf6cb4326affefd3c830",
      "parents": [
        "eb46cf924deae98c5edaad20da3bd123217ab947"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 11:54:38 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 11:54:38 2019 -0800"
      },
      "message": "Clean up AudioTrackThread and AudioRecordThread constructor\n\nRemove unused argument.\n\nTest: compile\nChange-Id: I1f589941686ddcdff166298f8bfe0564b147c137\n"
    },
    {
      "commit": "eb46cf924deae98c5edaad20da3bd123217ab947",
      "tree": "0e451ec457ded176ce8fc4bf6dcef686832c5a10",
      "parents": [
        "bb08e4d99b0915f4b25fefeda9c833c96ceb785a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 10:13:38 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 10:15:57 2019 -0800"
      },
      "message": "AudioTrackThread, AudioRecordThread: enable Java calling\n\nWhen an AudioTrack or AudioRecord is created by system server,\nif restoreTrack_l() or restoreRecord_l() is called from AudioTrackThread\nor AudioRecordThread, and that then calls audioserver through binder,\nwhich then calls a Java service, binder recursion may call Java\non the original calling thread.\n\nTest: bluetooth calls don\u0027t crash\nBug: 126948865\nBug: 127619936\nChange-Id: I41fcb666d07c4ab985f5590e40e0c310709e786d\n"
    },
    {
      "commit": "4463ff504dc0c13116f252466bdbba61e0b32a81",
      "tree": "59daf000cec82575573c42de2cba9809cc6f0bf2",
      "parents": [
        "ba2cf0f2e39d8302babbda3a98127daaf2ea7376"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 13:56:09 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 18:34:25 2019 -0800"
      },
      "message": "AudioSystem: more locking work on audio device callback\n\ncommit 24a9fb0d left some locking issues with management of device\ncallbacks in AudioSystem, AudioTrack and AudioRecord.\n\nThis change makes that the AudioSystem mutex is not held when\ncallbacks are called into AudioTrack and AudioRecord removing cross\ndeadlock risks and allowing AudioRecord and AudioTrack to hold their\nmutexes while installing and handling the callbacks\n\nTest: CTS RoutingTest, AudioTrackTest, AudioRecordTest\nChange-Id: I5d17e77ca26220092deb0bd6e5a33dc32348d460\n"
    },
    {
      "commit": "24a9fb0d4a3acd5d0c2ef96147650464a91eb8d9",
      "tree": "a96ff333beb672fc64379e4e35dc1e67998b6b43",
      "parents": [
        "a6d5e8b33ce1f7e3133d7474ac3bed3550c309a8"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 18 17:51:34 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 02:53:09 2019 +0000"
      },
      "message": "libaudioclient: force onAudioDeviceUpdate on registration\n\nThis CL forces the onAudioDeviceUpdate on register event.\nIt also fixes the loss of callback on AudioTrack or AudioRecord\nclient if received before ioHandle is assigned.\n\nTest: audio smoke tests\nTest: CTS for AudioTrack and AudioRouting\n\nChange-Id: I119b5c407da68a5b55162550bea5fa7e724165d1\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "58d4be5a5a5d24f18b7a207148c7caa317fef366",
      "tree": "37e0a5e790187815757bd906c7767cfcea0e1f74",
      "parents": [
        "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:30:12 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 00:18:00 2019 +0000"
      },
      "message": "audio: get rid of hardcoded translation stream \u003c--\u003e attributes\n\nIMPORTANT NOTE:\n    CL depends on another CL in frameworks/base\n    https://partner-android-review.googlesource.com/c/platform/frameworks/base/+/1206275\n\nAudioProductStrategies offers the possibility to dynamically\ntranslate attributes to stream types (and vice versa) within\naudio policy engine.\nLegacy engine has hard coded rules to maintain the translation\nservice.\n\nThis patch removes the hardcoded translation within the helper\nand replaces them by AudioProductStrategy APIs.\n\nTest: AudioPolicyTests: AudioProductStrategiesAllStreamsTest\nIt loops on all stream types supported by strategy and ensures\ndevice selection matches. Hard coded stuff would prevent right device\nselection.\nTest: CTS: AudioTrackTest AudioRecordTest\nTest: audio smoke test on sailfish, walleye blueline\n\n\nChange-Id: I76589df5555136ed49dbacc7aac9b0b5e828bef2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ab2f2f35111cf1237b8d1a42ebe33a001f28daa8",
      "tree": "a9b1107cf1d7cf8ba26a204e558b240d940b17de",
      "parents": [
        "aaaa003cb570f965908db1a08d53c4bddb588d61",
        "e79290d111a9c72aff5eecf2a5eed63d3168c112"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "message": "Merge \"Set default value to mAttributes in AudioTrack\" am: 1128b3fa1a am: 46c631d921\nam: e79290d111\n\nChange-Id: I239ab1a947eb13195e6acbfa8f096965dd14d5ae\n"
    },
    {
      "commit": "5fa32ed75e09b1f01e6fdea509ef49492f729c7f",
      "tree": "0ff92513f38f3c04deda7e232c505814f8dcc9aa",
      "parents": [
        "caa0b292536bf8f4d455536404fed785e038c51a"
      ],
      "author": {
        "name": "Ippei Murata",
        "email": "ippei.x.murata@sony.com",
        "time": "Mon Oct 01 17:37:50 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "Tomoharu.Kasahara@sony.com",
        "time": "Thu Jan 31 01:08:13 2019 +0000"
      },
      "message": "Set default value to mAttributes in AudioTrack\n\nmAttributes in AudioTrack can not be set in AudioTrack::set()\nwhen pAttributes is NULL.\nAudioTrack::getPosition() sometimes returns wrong value\nsince mAttributes is undefined value.\nThis change sets default values to mAttributes.\n\nBug: 123607740\nTest: manual\nChange-Id: Ie590c17efc466cc89cbd7e9f89fc3ebeed98eace\n"
    },
    {
      "commit": "69b73291138bf97fcdf09a4320e77f28568cf874",
      "tree": "5f6f2e069accd87b1d0ec04af4a67cd73d9f936b",
      "parents": [
        "0dd741827750e4163fb618e817b51088badb65ad"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:34:47 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:44:51 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"Add libprocessgroup dependency and fix sched_policy include\"\"\n\nThis reverts commit 7194e6da8a37a0e222b2f81e2d55a8013e657a13.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: I15797a30abcc304379db05bec1b25a0bd95b2ff4\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7194e6da8a37a0e222b2f81e2d55a8013e657a13",
      "tree": "c0a7b13fc0c2db08e5884f2cf598708aebecde70",
      "parents": [
        "855ae44d9f4acc7ac8720464ef94d159c9063e8b"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:02 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:22 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"Add libprocessgroup dependency and fix sched_policy include\"\n\nThis reverts commit 26992263865c4b30d733b1cdc0efce0d3db7d5c9.\n\nReason for revert: Broke AOSP\n\nChange-Id: Icdd182baad6a81b8fdbfd862b7eb3aada282f42f\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "26992263865c4b30d733b1cdc0efce0d3db7d5c9",
      "tree": "dcdf65d9af6cd566721cd37282b4c759e818ee42",
      "parents": [
        "4162cd732558f2e4fb1c9bf70da3e87ba23523fc"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sun Jan 20 22:05:52 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nMerged-In: I83dd6878839122e3ea71b7be6f6f312376897d56\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7435e7da371e60bed90909be6cc57a3f111fb6b4",
      "tree": "70b40fae27adde22ca7b1b9f57120fd7957cfc22",
      "parents": [
        "aa1523c14af06a2f213e570d12ce01b71422b26a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 18 02:37:14 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "f4de6114c20c3b3376806b359d527330f1891826",
      "tree": "6661fb92de4c7f145d0ae7de9d109d8a145601eb",
      "parents": [
        "341dd3bb36c4ceb77c80b8e8db9f0e1d647dc9ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "message": "Do not allow set sample rate when haptic channels exists.\n\nAs haptic playback via audio require sample rate is the same as the HAL\none, sample rate should not be changed after AudioTrack is created.\n\nBug: 121271890\nTest: Manually\nChange-Id: I1549017b3ca8523735190f62f8c9a4fb8b95e000\n"
    },
    {
      "commit": "25194a64e0bb77049d279fdb982c02425095ec01",
      "tree": "f3812f7beecd278352111c85e5b684e3937ca4af",
      "parents": [
        "20d51cca2c61b65be88b5bad43e6f363e29373b8",
        "a2b32728760a75352aadf5383e7615afd5bf435c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\" am: 8774dda490 am: e8f69f37be\nam: a2b3272876\n\nChange-Id: Ib7f787d7ca149015badfe75ec2d52f80bde0f952\n"
    },
    {
      "commit": "50fa06cf6196e6235cd24a44e5bf464b28f91a7b",
      "tree": "848bcdc1e9c24817a3e1f05d079ed7f0da0d636e",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: If3d86617594250e2a9ed79c46bf39852a9a723b2\n"
    },
    {
      "commit": "a94fbb22404ef26d12fbb3ad0376df15f84f47ec",
      "tree": "b4a8052d5ce8726541ba7a25e3f1f449d351acd9",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mzchan@dolby.com",
        "time": "Tue Apr 24 14:31:19 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 05 15:35:35 2018 -0800"
      },
      "message": "Implement AudioTrack.isDirectPlaybackSupported method\n\nThe method checks whether the provided AudioFormat can be played\nvia currently connected output devices w/o SRC or downmixing\nby the framework.\n\nThe implementation methods are called \u0027isDirectOutputSupported\u0027\nto match APM\u0027s terminology.\n\nBug: 120044865\nTest: atest CtsMediaTestCases:AudioTrackTest#testBuilderValidate\nChange-Id: I11769f796c34583fb2641415d2faab00ac526123\n"
    },
    {
      "commit": "973db02ac18fa1de9ce6221f47b01af1bdc4bec2",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "f4a342abd2959904caa18b5a0671e8107581ff24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 20 14:54:31 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio flinger: return port ID as track ID to client\n\nReturn the port ID allocated by audio policy manager instead of the\ninternal track ID allocated by audio flinger when an AudioTrack or\nAudioRecord is created.\nThis information is more useful for logs and allows to associate information coming\nfrom audiopolicy manager with a specific client instance.\n\nBug: 111438757\nTest: Manual playback and capture tests\nChange-Id: Ib467d8fcc34d9a8aa7bcaac0770a741982b847c5\n"
    },
    {
      "commit": "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": "0248a2a3ae176e4f306dbf3d869792bb93312ed5",
      "tree": "e9f5d8a65fca2a0afc53b2b5b3ebe672b4bf4b05",
      "parents": [
        "2a6038e529574bfa183ab1de1fffd01a1504fc3a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "message": "Fix double track thread initialization\n\nBug: 119870459\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\nChange-Id: I15f314ee5696ead90a09991bfe10e1ae3ff013e0\n"
    },
    {
      "commit": "a60e9a209ed7dbeaa563b3145904038064615432",
      "tree": "997b5121a13729113a1cd6aaf85dfe6f58c40cd9",
      "parents": [
        "c40d87ea8409b23e6326ffe2233e02a99ecfac15"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Nov 15 16:13:36 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 16 17:29:51 2018 -0800"
      },
      "message": "AudioTrack offload: fix EVENT_STREAM_END  not called\n\nIf the track thread is paused, EVENT_STREAM_END will not delivered\n for offload. This event is required for PRESENTATION_END to\n be delivered for Java AudioTrack offload.\n\nBug: 86837964\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\n\nChange-Id: I491cdb0a6faa69e5c37139c0364b5c9079ff1f14\n"
    },
    {
      "commit": "f4158d855b941e5c7ffcc4f119f2bd146986b0c4",
      "tree": "cdd9cc09d90ff6d43ee200233f9fa16e6124f5b6",
      "parents": [
        "0917fc25390c5f362332630e2d980480d1444e0d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 25 12:43:58 2018 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 24 10:46:30 2018 -0700"
      },
      "message": "AudioTrack: new transfer mode for Java offload support\n\nNew transfer mode for java AudioTrack using offload\n  path, where data is provided through the write method,\n  and the callback is used to notify the track owner\n  more data can be written on the track.\n\nBug 86837964\nTest: adb shell clof --source /sdcard/Music/my.mp3\n\nChange-Id: I47c760b7fb8f1431945ca24ff4a26311b63cb761\n"
    },
    {
      "commit": "6ec546dad994d3cc7ffbdf9be42d69811805085a",
      "tree": "64bb14daa86cb6ae0445bc52564369ca0ced94ae",
      "parents": [
        "66b4c2c74829721f7e12de810b936e5e323a51dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 10 16:52:14 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 11 14:16:09 2018 -0700"
      },
      "message": "audio: fix AudioTrack and AudioRecord restore\n\nAllow retry on failure to reconnected to audioserver when restoring an\nAudioTrack or AudioRecord and do not change state to inactive when\nreconnection fails. In case of failure due to temporary race conditions this will\nincrease the chances of success and avoid ending up in an inconsistent\nactive state if a later reconnection succeeds.\n\nBug: 113109529\nTest: AudioTrack CTS tests and manual playback smoke tests.\nTest: AudioRecord CTS tests and manual capture smoke tests.\nChange-Id: I570724eb46f3a0f830267396aba06297bd37df7a\n"
    },
    {
      "commit": "4c94e03cac24f172e8367e351b66adf709b2cee6",
      "tree": "0115b73acebf2f3165e1ce20d7bdb65cab08136b",
      "parents": [
        "61c80f1f4a07886a01abada34beefed9db1bec4b",
        "51e09f9cae7b3195a2799b876eea8949faae912c"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in libaudioclient.\" am: 058002e0e3 am: 8a7c2de43f\nam: 51e09f9cae\n\nChange-Id: Ifcae7a82849a698a2406279e18c74be454c596b2\n"
    },
    {
      "commit": "ffe3558cb1024b39ce1e0e1dc2fb20bb3663299a",
      "tree": "05195cdd37c3c2c68aa26a66b5af1afb823c65ec",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 13:59:28 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:45:53 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in libaudioclient.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: Icafaff606364fe7bffaad1e9c2e763c444ea999c\n"
    },
    {
      "commit": "fb8ede2a020e741cb892ee024fcfba7e689183f2",
      "tree": "702e8497e892eaa0d4d8fb7d28ec78fc2762a1f2",
      "parents": [
        "9d84af54244f7ff086afdcc6e477fe4d04874652"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:03:24 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:36 2018 -0700"
      },
      "message": "AudioTrack: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: I7c74af8962f7d3b72a7b843df906c54f79f6f009\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "d114b624ea2ec5c51779b74132a60b4a46f6cdba",
      "tree": "e9abd0ce3d951d80d5831e49d3ba5d6623fc4ab8",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 27 18:37:04 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 08:53:15 2017 -0800"
      },
      "message": "audio track: dump more data\n\nAdd more information to AudioTrack::dump();\n\nTest: run dumpsys media.player\nChange-Id: Ia0799c65c02dd27b623b53d550ebf08c5c1b724c\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": "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
      "tree": "d855fc3d7505c608fc720474d2af565feb131738",
      "parents": [
        "ea8dd2c787f88e7289ffb8f226237587f95d8a93",
        "79edadcea74151b573d5b973d5a421baee693ec1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:29:40 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:33:45 2017 -0800"
      },
      "message": "Merge commit \u002779edadcea74151b573d5b973d5a421baee693ec1\u0027 from\noc-mr1-dev-plus-aosp into stage-aosp-master\n\nChange-Id: I04234f284e3117e8343e7c888646400c81f5a131\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "156c6873a5e69af71f3c28b236c5831b9cb2ac95",
      "tree": "3e36c1490f5f2d22e6e79fac3d4f59a9559403ee",
      "parents": [
        "ef9fc7792d4995da68cb71a3e9f2304e565a016d"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 06 09:47:15 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 02 11:14:55 2017 -0700"
      },
      "message": "Add AudioRouting interface for MediaPlayer\n\nBug: 64038649\nTest: Run cts in RoutingTest\n      Switch output device when playing music/video with MediaPlayer\n\nChange-Id: I5b5c288e6557199b0a6986785f9335a18a80ab89\n"
    },
    {
      "commit": "bdfaf7e6081a3a4fc5b0b613d9b2d42f488cb0a9",
      "tree": "dab6953412fc5b7013c2772a808c1b875bb9a2d0",
      "parents": [
        "67d876b17e6589a47c5f8906201ec2494119104f",
        "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856 am: 66446e6135\nam: 53a82d0a1a\n\nChange-Id: Idf2b0e981ddbae38aeb4838595e303d0b8b1da2f\n"
    },
    {
      "commit": "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4",
      "tree": "6f8a316ed5da93173aa8a5dd91096cf007f255d7",
      "parents": [
        "db42765c36920975fbe0c02252397d1a5813197b",
        "66446e6135fa9acbfffb96f3c70a8889e60a9a79"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856\nam: 66446e6135\n\nChange-Id: I4403db70ddcbcc5f29332342531c33eb12563661\n"
    },
    {
      "commit": "9bf34d542787dd322f7ad56f8bb8607633004009",
      "tree": "f2918d263cb486b80e38917c3f5a809b370a4deb",
      "parents": [
        "55c45b33092551b11ba79a35b7dae6c3fba999f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 24 14:26:23 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 27 10:45:37 2017 -0700"
      },
      "message": "Limit notification period when a fast track denied\n\nIf client requests a fast track and this request is denied, then don\u0027t\nallow notification period to exceed FMS_20.  FMS_20 is the minimum task\nwakeup period in ms for which CFS operates reliably.  This reduces\nglitching when an app uses a buffer size that is too small for the endpoint.\nThe theory is that if the app wanted a fast track but couldn\u0027t get it,\nthen at least wake it up as often as possible (while still not waking\nup so often than CFS can\u0027t handle it).\n\nAlso clarify in the log when the denial is by client vs server.\n\nTest: as described in bug\nBug: 63040475\nChange-Id: I2c171bda7929a8f309c2286d868e09887680d234\n"
    },
    {
      "commit": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "f89090e284b8ef61eb8cae68c657c8a60877b9fb",
      "tree": "37656620e850132bfd6cc0ffed14e5fd9fcc4c20",
      "parents": [
        "19c197a3bc4c73a06a38513884da392d3fd0a49e",
        "c0e75a7d57df751ec1cb49da91cf64ab0c4c4938"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "message": "Merge \"AudioTrack, AudioRecord: Fix latency computation\" into oc-mr1-dev am: 5deda0e784\nam: c0e75a7d57\n\nChange-Id: I1f95a6372752e2e47e7f022db0333517c387eadf\n"
    },
    {
      "commit": "13969262f704ca27c82d60e3c7cf4b271e3b5918",
      "tree": "b71db061faee7352cada209170bd02dd80fc7055",
      "parents": [
        "49997ac32b61c3e3b8e0053c8c82f06e6a438f06"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 17:24:21 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 18:03:20 2017 -0700"
      },
      "message": "AudioTrack, AudioRecord: Fix latency computation\n\nForce 64 bit arithmetic to avoid integer overflow on 32 bit\nplatforms.\n\nTest: CTS AudioTrackTest\nBug: 65536481\nChange-Id: I774a7811fce08c7cbe59f0a062fd2c2d72220203\n"
    },
    {
      "commit": "5d874b5bcc9577b4e9054b6fb1d41cb6462dbb58",
      "tree": "fb0fef58c699fd188ec09c34d663c055babf11a4",
      "parents": [
        "72b054de2c3549b4186daf1a83b041fee4607158",
        "fd513fff31baea5bf8a067c70a92e4a01681e169"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev am: 310dd0a2d9\nam: fd513fff31\n\nChange-Id: Ic28d34a8cf8bed962642a7e2535d6936d69495f4\n"
    },
    {
      "commit": "310dd0a2d96e97d4f3983a6e70b5e0653a521030",
      "tree": "1400f29c182aeaaf88e2be0cdd6f130a97e902a3",
      "parents": [
        "7dca8d75871e8f275932ddcd184d45fec763ac16",
        "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev"
    },
    {
      "commit": "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1",
      "tree": "525bf9e32a2c8c1101d6633c9101c46235eedccd",
      "parents": [
        "da071c34f3378a36d39ee0f89cdef4e1f98c3750"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 06 18:20:11 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 10:18:36 2017 -0700"
      },
      "message": "Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\n\nAfter cold start, running the test will cause failure. The reason is\nthat with cold start, the buffer is being processed faster than the\nposition callback.\nCalling the callback earlier at the very start will fix this issue.\n\nBug: 63056426\nTest: adb shell am instrument -e class \u0027android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallback\u0027\n      -w \u0027android.media.cts/android.support.test.runner.AndroidJUnitRunner\u0027\n\nChange-Id: I7416cecb2837fac4a966e832412948c357e7b8dc\n"
    },
    {
      "commit": "a488402046bffd51803cc98815824a27f510d1c5",
      "tree": "fcb4480d47b663335ef5d48cb6fa3daed4a44614",
      "parents": [
        "b8ba103f7fd4a2695d20463689d898ddf5431dac",
        "12131a23cbb03c083c6f53a30c58b9182de5e5fb"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Fix extended timestamp offset\" into oc-mr1-dev am: 7966b44126\nam: 12131a23cb\n\nChange-Id: Icc86ada7ecf279827f7a43bd93dbdae1ff445cb0\n"
    },
    {
      "commit": "c4e60eb165608f08cd85ed2fccbdaa6700f271cd",
      "tree": "8f73643165520a2d88fb83353eb330f9e478b684",
      "parents": [
        "cea54cf940630bd0f462f2c9dcb2bfb75e5ebd68"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 11:14:57 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 12:03:53 2017 -0700"
      },
      "message": "AudioTrack: Fix extended timestamp offset\n\nThe extended timestamp server and kernel location positions\nneed the proper client side delta offset for native AudioTrack API calls.\nThe client location position is unaffected along with the legacy timestamp.\n\nTest: test_timestamp, Photos, kill audioserver\nBug: 65386236\nChange-Id: Idd71b6a31e0e86a323d0e5e343a2836e34c08673\n"
    },
    {
      "commit": "e247023e785e581349d8fb926c4a1bed239b623c",
      "tree": "850157e9f268725e25dd0e1b98dfd729e61e0e76",
      "parents": [
        "fdf4151313d35e0ef504955ae738550b6ffd338b",
        "0fbd5badd563360827c81b9096381096e9eadf9c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Limit timestamp time lag after start\" into oc-mr1-dev am: cea54cf940\nam: 0fbd5badd5\n\nChange-Id: I910d96c6901bad81987191ea2485435a6fcf8a7f\n"
    },
    {
      "commit": "ffa3695a012d22c6c81cf311232c5c84c06f9219",
      "tree": "9efbe30bf98b6a75977fe842083808e8b9d69806",
      "parents": [
        "90153cae7ffd321338f90678a80abd62fb56e877"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 17 10:41:51 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 05 17:02:15 2017 -0700"
      },
      "message": "AudioTrack: Limit timestamp time lag after start\n\nTest: Photos with long pause and resume\nBug: 63614330\nBug: 63976584\nChange-Id: I81ac650c821600fee507c72c3b0c1be60f5e7ab6\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": "2b01f009428797ee9154649411a64b522946e966",
      "tree": "4a92acd2cccf15d8d916bbdaa7fea1265911ab93",
      "parents": [
        "38217e0d53b14e634243d1ce36fa5d3267c71056"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 05 12:01:36 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 05 12:45:52 2017 -0700"
      },
      "message": "Replace old audio time conversion macros and functions\n\nTest: Play Movies, Youtube, CTS\nBug: 25569135\nChange-Id: Ib6e304f149c381dc7af7f4aa959c3d79d7bdb2aa\n"
    },
    {
      "commit": "66feec9ff333bbf0b2590f1b321fbf880e1405a4",
      "tree": "ebb1043a6aaf48ac109eb7022a999ae4bc31f0cc",
      "parents": [
        "d4ef5f1eafa099eb40e68a1dfc7b701e4a8d0b1a",
        "2ac7694396640821f6723672e25b2372220bf060"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 27 01:18:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 27 01:18:41 2017 +0000"
      },
      "message": "Merge \"Set initial audio device for AudioTrack and AudioRecord\" into oc-dr1-dev"
    },
    {
      "commit": "325b2997d92c4ba2c116b47e6c3d0d0045c5386b",
      "tree": "111e8c240efa9f7574f454babb623ce8d3b1de78",
      "parents": [
        "912c1c196c0783efa90ef35e73dc8efd170a6ba8",
        "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 26 19:35:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 26 19:35:28 2017 +0000"
      },
      "message": "Merge \"Set initial audio device for AudioTrack and AudioRecord\""
    },
    {
      "commit": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "adbb75af4d3224194b9b772855db93fae19cf4ce",
      "tree": "e413225939c034dd790d41acbd9dd298e0a310ca",
      "parents": [
        "a2f10fb5a0731dc54c06bd55f54ade38800069cd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 16 12:19:42 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 22 10:39:58 2017 -0700"
      },
      "message": "AudioTrack: explain why FAST mixer denied\n\nAlso for AudioRecord\n\nBug: 62692443\nTest: write_sine.cpp\nChange-Id: I5b281476af4703798129df66584d813b9a8db8bb\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "0b86e57b61b46652585008679e48b6961b40122d",
      "tree": "1bea7921ede728cd7589235175d0d1a8a3b78de6",
      "parents": [
        "c1c9b13223230f8d0e8bddd41e63c7046b7a98a5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 18:56:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 02:02:39 2017 +0000"
      },
      "message": "audio: Fix read of uninitialized memory\n\nFollow-up to fb12e20e426bc6bcff06e39fba45a931cf787040.\n\nBug: 62425341\nTest: m\nTest: Device boots, com.android.phone doesn\u0027t crash\nChange-Id: Ib54c7efae88cb0bff0f92e1cf1bd20a22fdcbdba\n"
    },
    {
      "commit": "b27f9af593c73aa8537f37f0956af7e471051d4d",
      "tree": "6206e5fdcb2a1bc433894cfb5198b9d87326c537",
      "parents": [
        "ad62a8daf6373a1adaa96e304746033bb8d93146"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 18:56:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 18:56:27 2017 -0700"
      },
      "message": "audio: Fix read of uninitialized memory\n\nFollow-up to fb12e20e426bc6bcff06e39fba45a931cf787040.\n\nBug: 62425341\nTest: m\nTest: Device boots, com.android.phone doesn\u0027t crash\nChange-Id: Ib54c7efae88cb0bff0f92e1cf1bd20a22fdcbdba\n"
    },
    {
      "commit": "5573544e1052e3cff3f98482a6258a3cba47372a",
      "tree": "7dd23312f7481754efd13f9e972d92bc6d3d1d53",
      "parents": [
        "e11c6f1082b3ff9ea63055c870bdc76fb57bd9d8",
        "fb12e20e426bc6bcff06e39fba45a931cf787040"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 01 19:27:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 01 19:27:20 2017 +0000"
      },
      "message": "Merge \"audio: Output latency update in Audio Track\""
    },
    {
      "commit": "fb12e20e426bc6bcff06e39fba45a931cf787040",
      "tree": "aa6b41e2de8d8b22fa40659e1317e103eb5f8107",
      "parents": [
        "c77b3bb4e11dd53028616454744b783a84f219de"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Apr 06 12:24:42 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 30 13:51:48 2017 -0700"
      },
      "message": "audio: Output latency update in Audio Track\n\nAudioTrack needs to query latency from the output descriptor each\ntime it uses mAfLatency to calculate timestamp or return the track\nlatency. Until now, the output descriptor latency was queried and\nstored when a track is created. On a device switch, IO descriptors\ntable saved in AudioSystem is updated to reflected the latest\nlatency values.  Unless a device switch lead to a track teardown,\nAudioTrack will be unaware of the latest latency value. Therefore\nexplicitly check the latest mAfLatency value on each getTimeStamp\ncall.\n\nTest: Podkicker 2.2x, Photos 240fps and BT\nBug: 35075600\nauthored-by: Aniket Kumar Lata \u003calata@codeaurora.org\u003e\nChange-Id: I06282182364703574a7d66d2b5cd1301679dfade\n"
    },
    {
      "commit": "ef44fb4115270883da829fea91174c8cc003b777",
      "tree": "9fde4511982c15bfb11c30cff327eb50dd0de0e1",
      "parents": [
        "159db446a230334d88e5670c8ccd3489b00fdff6",
        "0bbea62ed44e8d5cc2419b2861ea0e58d81a4917"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "message": "aaudio: fix device switch detection in legacy path am: fb00fc77f5\nam: 0bbea62ed4\n\nChange-Id: I80dfc949c206c1572f867f3ffedb6ff556a7b8f2\n"
    },
    {
      "commit": "fb00fc77f59ed5ebec4d38bac666e6521b6c1de0",
      "tree": "cf7fd5f373a5a8681d7fe4ee151367ccf3f8c9f2",
      "parents": [
        "d08f04f33b80c37bd3889f461846d59f70e726c7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 25 18:17:12 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 26 18:34:13 2017 -0700"
      },
      "message": "aaudio: fix device switch detection in legacy path\n\nImplement device switch detection on legacy path (AudioTrack and\nAudioRecord) based on audio routing callbacks forcing the stream state\nto disconnected.\n\nBug: 33355262\nBug: 62090113\nTest: tested with write_sine and input_monitor command line tools.\nChange-Id: I9e0421fee233964b1bf318acb640569196a00f13\n"
    },
    {
      "commit": "34d606c66ffcd536daccf415132facd3cbfe1a8f",
      "tree": "a04c906500e93f36fb005193716cb58cb2025790",
      "parents": [
        "4cd6042ced43e41fbca6f5095612209e3dd16005",
        "75f79038715b4b1cf28e0457abfa84ccd17bb57e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 25 16:11:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 25 16:11:45 2017 +0000"
      },
      "message": "Merge \"Add TODOs for checking return value of wait\""
    },
    {
      "commit": "47d5517331f41f8583f4e47752132de96e14a96f",
      "tree": "b70ed1acc8bfb93ef9dc0514ace6b0d6fb3ac991",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:19:30 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 13:36:15 2017 -0700"
      },
      "message": "Add comments explaining about SCHED_FIFO\n\nTest: builds OK\nChange-Id: I7fa39defb081c27eb32abb241c0aa2a210744954\n"
    },
    {
      "commit": "75f79038715b4b1cf28e0457abfa84ccd17bb57e",
      "tree": "cc7badd7a19da2a8e66c087c54e3637f8593e05b",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:22:44 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:28:22 2017 -0700"
      },
      "message": "Add TODOs for checking return value of wait\n\nTest: builds OK\nChange-Id: I750b73de54deeccbae846189fdf385e636d9e4cd\n"
    },
    {
      "commit": "2f35206b77dd7d8a8c761e0a81ea327c10787036",
      "tree": "314fad5639b5c762be3ec16f1b685056678edf44",
      "parents": [
        "dc4272365d1c875471097db907f659731c36b53c",
        "d906ad023d3608925c4afda5c3b70a24667db758"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Fixes for updated Cts test\" into oc-dev am: 2d12b8e367\nam: d906ad023d\n\nChange-Id: I27856718a4914e396a7c387da7b4f4e4b7c245e6\n"
    },
    {
      "commit": "f370264dfa5237524a3535f5242a0c68cbbb13eb",
      "tree": "b0cab4fa2ae4243ce2a870c3d91e8124dc2d3510",
      "parents": [
        "549bd02a8421b0b53a1b5e8961a41cf551fce72d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 05 17:33:32 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 10 14:17:40 2017 -0700"
      },
      "message": "VolumeShaper: Fixes for updated Cts test\n\n1) Limit number of VolumeShapers that can be created.\n   a) 16 system VolumeShapers\n   b) 16 application/client VolumeShapers\n2) Return proper volume before VolumeShaper is started.\n3) Consistent xOffset definition used internally:\n   a) this is now always the position on the volumeshaper curve\n      which can go backwards if in REVERSE.\n   b) normalized time is always forward going and is scaled\n      to 0.f and 1.f depending on progress relative to\n      the curve\u0027s duration.\n4) Fix replace method.\n5) Add comments.\n\nTest: Use updated CTS VolumeShaperTest\nBug: 37536598\nChange-Id: I837ab2a481adc0abbd3f1338bfe2cb79831b11fa\n"
    },
    {
      "commit": "296ee17ce39af4fa3173bbf21fbc719db4b8f329",
      "tree": "7fa4fd43ccce6f6fb95f7def38bfff2d8447fdac",
      "parents": [
        "abcced36e70ee6659d4e1896fb0ae3fb0880b859",
        "4e728d4bbc683a50096f052a31c8eb5cbb1e100e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 01:19:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 02 01:19:06 2017 +0000"
      },
      "message": "Merge \"ALOGW when failing to open audio track because of playback rate\""
    },
    {
      "commit": "39399b6b08b4e9fd7eae50e58e93b07216ad697f",
      "tree": "04c78ddb6186a54c9e0118a0b8f5270cdfc9d720",
      "parents": [
        "94cfe137a105ec7db047e963e18483425e0d2272"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 21 15:07:45 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 26 10:45:25 2017 -0700"
      },
      "message": "VolumeShaper: Improve restore\n\nConsider whether VolumeShaper has been started or not when\nrestoring (position). If the VolumeShaper hasn\u0027t been started\nwe restore in that state.  If it has been started already,\nwe advance to the end assuming the duration has been played out.\n\nTest: CTS and headset / kill audioserver\nBug: 37536598\nChange-Id: I4b55dca6f6a859563fd20bad4c8f67d2c92321c0\n"
    },
    {
      "commit": "4e728d4bbc683a50096f052a31c8eb5cbb1e100e",
      "tree": "2597097d30f48f7f657d0dbce14afac7b661aee3",
      "parents": [
        "399565a0797432001ee01524e3ec8e1b856ccccd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Apr 06 18:00:40 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 24 22:13:12 2017 +0000"
      },
      "message": "ALOGW when failing to open audio track because of playback rate\n\nThis will help debuging errors linked the associated bug.\n\nTest: compile\n\nBug: 36509278\nChange-Id: I3034a8a40d20cee15dc394baf0743be3d996a155\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "6d8018f0b7be9deec6b0acab10a0dca6e91d0fb8",
      "tree": "2ce104a9e93cd8604e6624517a818ef8ddedb241",
      "parents": [
        "eb12e8bd16208fdd3017e2d99fee721993efdaa4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 15:30:08 2017 +0000"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nBug: 37153050\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n(cherry picked from commit 1bfe09a0b1755a79abd32b41c0dd433b88fc260c)\n"
    },
    {
      "commit": "1bfe09a0b1755a79abd32b41c0dd433b88fc260c",
      "tree": "eec723f657fc89b21f3cfc91b27c68eceac4add7",
      "parents": [
        "a29cd562f6f5839cce7e3be2e547d19c2d27f15d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 29 11:39:04 2017 -0700"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n"
    },
    {
      "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": "4ef88d7106c01f81109ee163cb6789073d80c6ae",
      "tree": "b851ebaf0b55c4d8174dd4a744352a3d4513beee",
      "parents": [
        "10cbff139360f3f642e0e3b3ccf2d463dbed22cf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 21 19:47:53 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 24 21:05:58 2017 -0800"
      },
      "message": "VolumeShaper: Add AudioTrack restore\n\nMediaPlayer VolumeShaper can now be set before start().\n\nTest: CTS and Ducking\nBug: 31015569\nChange-Id: Idf63c167e164161b200e2467fbeb9409b3097dbe\n"
    },
    {
      "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": "fff204c192f7e16c635a79f6a85786afb8522a3d",
      "tree": "534000ce7be1b2e04dedc0899d1aaa9f7dcbe499",
      "parents": [
        "35f537fc5aa479caa6fd9055cdc63989d029e8a3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 12 19:09:55 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 18 11:46:54 2017 -0800"
      },
      "message": "AudioTrack: Control deep buffer from AudioAttributes\n\nTest: AudioTrack CTS test, Play Movies\nBug: 30687201\nChange-Id: I6a46a05dbf3fd61c8d47dade5b4baee69b923195\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": "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": "1f12a8ad958344c50733b948628ffa06db9c5bc6",
      "tree": "d9ce12941c1461657bf32779f6d18605defd5cf1",
      "parents": [
        "062bfceaefab29f0f71db7d5a248b3f5f0572b6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 07 16:10:30 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 08 16:43:39 2016 -0800"
      },
      "message": "Audio: Use uid_t for uids\n\nTest: Power manager shows correct uids for audio\nBug: 32713790\nChange-Id: If5337e17283268f74dc0f00cc66ece9153d680ef\n"
    },
    {
      "commit": "538ec5e04f389cba637b030757be317fcb8677a8",
      "tree": "c9c576057efe1f6c0bdf1a4cbf6b58dce68f5e3f",
      "parents": [
        "e085c1072f017d4910f7e49741f72e8a722b8892"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 13:21:22 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 12:14:36 2016 -0700"
      },
      "message": "Split libmedia into libmedia and libaudioclient\n\nThis makes it so audioserver doesn\u0027t need to link against the entire libmedia,\nwhich has dependencies on camera, ICU, OpenGL and other things that aren\u0027t\nneeded for audio.\n\nTest: build/boot\n\nChange-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af\n"
    },
    {
      "commit": "65ffdfc7e92f9900d72bf6dc0b7f4e1231d4da03",
      "tree": "6c562cf16c42d8718a1a70ea25ae6a243b620e85",
      "parents": [
        "4be3b831904640ca853845b3ea31f985774047de"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 10 15:52:11 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 14 15:10:33 2016 -0700"
      },
      "message": "AudioTrack: Add hasStarted method\n\nBest guess determination whether the AudioTrack\nhas started playing.\n\nTest: Photos app with pause and play.\nBug: 30502030\nChange-Id: I03c0ae78037ec05f3025ed009ef67bd376b176ba\n"
    },
    {
      "commit": "4be3b831904640ca853845b3ea31f985774047de",
      "tree": "1f0bb768d7e5f32af6bf57572f39d0c97421022f",
      "parents": [
        "52dd2e30b204949353c2dee0b1f1712677bbda43"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 17:51:43 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 14 14:51:25 2016 -0700"
      },
      "message": "AudioTrack: Clear stream end flag on start\n\nImproves readability of audioflinger dumpsys and allows\nproper detection when the AudioTrack has finally stopped.\n\nTest: NuPlayer with video clip in loop mode.\nBug: 32180119\nChange-Id: I625efffdc2f589f4869ea76605b3ed90afce7e87\n"
    }
  ],
  "next": "52dd2e30b204949353c2dee0b1f1712677bbda43"
}
