)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "52dd2e30b204949353c2dee0b1f1712677bbda43",
      "tree": "032af23d4d64db820ace87b6293369fafff536bc",
      "parents": [
        "f9125c36b47a3bb510b8317e64d70f01fd65b28f",
        "5d313803bdd61d59f28e518e7a793f33832f1901"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 19:36:48 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 13 19:36:48 2016 +0000"
      },
      "message": "Merge \"AudioTrack: Advance timestamp time during pause\""
    },
    {
      "commit": "f20a4e9f84bbb8748f28ca326caeba7a9947a369",
      "tree": "835aabaa4dadc25764381edd7048567bdc1dc2ab",
      "parents": [
        "8922c251072bf338cd22b237a25ef55ba41cf9b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 15 19:10:34 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 11:00:12 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp restore\n\nTest: Photos with BT on and off.\nBug: 29946998\nChange-Id: I729590451126e180ee85e1ab3dee2a0b24f0572d\n"
    },
    {
      "commit": "5d313803bdd61d59f28e518e7a793f33832f1901",
      "tree": "e27874f7602aa13bdd8a94be74c573271473c9ac",
      "parents": [
        "8922c251072bf338cd22b237a25ef55ba41cf9b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 10 15:09:39 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 11 12:59:27 2016 -0700"
      },
      "message": "AudioTrack: Advance timestamp time during pause\n\nUpdate MediaPlayer code to match.\n\nThis will change the behavior on the AudioTrack Java side,\nbut is within the API and should make timestamp handling easier.\n\nTest: Photos app with pause and play.\nBug: 30502030\nChange-Id: I0e9129ce6af5b920ad71e63ad0c205de7561acf2\n"
    },
    {
      "commit": "3c901299c6c0a8a7f52b2a2895cff80886777ada",
      "tree": "d2cbfda50058af0f380308ff2a47058cb0eb64a9",
      "parents": [
        "8acb47a973c0b0eecdc36f0bccd513a11be9ccd7",
        "b2544bcc983661420fedd1d92944c556d721fe66"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 22:54:22 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 22:54:22 2016 +0000"
      },
      "message": "sched_getscheduler may include SCHED_RESET_ON_FORK am: 8255ba7b40 am: f4da60ebc2\nam: b2544bcc98\n\nChange-Id: I8e28c76bf3936f67f4a503b0d7cf438c19c8e472\n"
    },
    {
      "commit": "8255ba7b40774b2b8868482f1a302db3ae98e905",
      "tree": "abba9d2c478e9add3fc31ce7836d8a4ce00011b5",
      "parents": [
        "2180a83292987f2289650ff0853e031cd3c796ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 13:54:23 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 14:06:33 2016 -0700"
      },
      "message": "sched_getscheduler may include SCHED_RESET_ON_FORK\n\nThe SCHED_RESET_ON_FORK flag is visible in the policy value returned by sched_getscheduler()\n\nBug: 31020591\nChange-Id: I5243fadce2a5f629fa2dc61888d8aa9aff32d9ca\n"
    },
    {
      "commit": "0e0c9f059b5ec9136367203880757a9b7758e86f",
      "tree": "18de23b2867e5c8ccd9898f029853b148c45b396",
      "parents": [
        "1c1fb278beee64ed090c2257e7fd2c7406730751",
        "0a2f151f37c715078351ae0be99b0c4dbabc2a23"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 26 15:02:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 26 15:02:04 2016 +0000"
      },
      "message": "Fix AudioRecord::read and AudioTrack::write return\nam: 0a2f151f37\n\nChange-Id: I9926f0046a6e2f550be852faf4b4d08d8c444260\n"
    },
    {
      "commit": "0a2f151f37c715078351ae0be99b0c4dbabc2a23",
      "tree": "837f0234dd3a5836512f85971f72072a59167afe",
      "parents": [
        "00bbc1d5ee0ad847ed07a273d103e2996862e98b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 22 08:06:37 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 22 08:06:37 2016 -0700"
      },
      "message": "Fix AudioRecord::read and AudioTrack::write return\n\nvalue to only be one of the documented status codes.\n\nBug: 30158307\nChange-Id: If1ba16ce2ee10ba5ccb1674003a4b8fa086f27bc\n"
    },
    {
      "commit": "b18af48e3c1e64aa99954eaf04ed857b61a135aa",
      "tree": "4fb5948ecba8245bc477d6d7efc0299224f72d3f",
      "parents": [
        "d34b3d544b3da2f699526f38621b4bb2d4142561",
        "aeffd19df0a23cfcd09ef81ba136ce02ec76a37a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 22 20:05:47 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 20:05:47 2016 +0000"
      },
      "message": "Merge \\\\\"Limit cached timestamp use if HW fails to provide them\\\\\" into nyc-dev am: 0256917c88\nam: aeffd19df0\n\nChange-Id: I6f4c59ef161ef67395adecba15592868acc1b545\n"
    },
    {
      "commit": "aeffd19df0a23cfcd09ef81ba136ce02ec76a37a",
      "tree": "600c99a510e2b57ed6a42dd333e0144029698e7e",
      "parents": [
        "311b46f57e43c62615d0abf78546ede5491b5db0",
        "0256917c88690e07604f725872321cbe2870ed8b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 22 20:00:59 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 20:00:59 2016 +0000"
      },
      "message": "Merge \\\"Limit cached timestamp use if HW fails to provide them\\\" into nyc-dev\nam: 0256917c88\n\nChange-Id: I1186034edf91d3b136b2571fa0acadc9b21de891\n"
    },
    {
      "commit": "07eee80b3422c0304491f24bbc415deb0badbefc",
      "tree": "9fca1712dc24e9e7ca66ea8c394c6bbf6c5c2946",
      "parents": [
        "37a9de26f6403955a19b81ce5ffe87998e9bf46e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 21 16:47:16 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 18:37:59 2016 +0000"
      },
      "message": "Limit cached timestamp use if HW fails to provide them\n\nOn some devices, if the HDMI cable is disconnected during use,\ncached timestamp info can become very old.\n\nBug: 29423451\nChange-Id: Ieecf5e98bad14d00b4f5f14b032c2cf66ae94ceb\n"
    },
    {
      "commit": "b70868bb337f0b12f993494f4d110979a33ddd24",
      "tree": "bde43cc6ef3f51829fd1875013e0191ffa2b4915",
      "parents": [
        "fa877e53915259d8288fa6cf16d9ebe68d4a806d",
        "2f8e63b5be5b0160302cffe1f1f18e560d31d3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "message": "Merge \"Add AudioTrack and AudioRecord flag checks\" into nyc-mr1-dev\nam: 2f8e63b5be\n\n* commit \u00272f8e63b5be5b0160302cffe1f1f18e560d31d3e7\u0027:\n  Add AudioTrack and AudioRecord flag checks\n\nChange-Id: If9043721f4763ce0f4db96c63595f92c5ba22556\n"
    },
    {
      "commit": "050677873c10d4da308ac222f8533c96cca3207e",
      "tree": "fa2d3e91f74c5d838330f52cf158be8c774eec7f",
      "parents": [
        "53c87d5bb06a168290575099378bc7bfe1dca02b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 01 18:27:28 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 03 16:46:38 2016 -0700"
      },
      "message": "Add AudioTrack and AudioRecord flag checks\n\nVerify that the requested flags are compatible with the input\nor output flags when creating and AudioRecord or AudioTrack\n\nGet rid of IAudioFlinger::track_flags_t which was redundant\nwith audio_input_flags_t and audio_output_flags_t.\n\nChange-Id: I0dd9232f857b2737e99a8c668806e45bce09cdbd\n"
    },
    {
      "commit": "4c39b9c74224782a6ceb299554f4abc9e1cf5733",
      "tree": "36615ae0cfaa565987875be2995d528d5445317f",
      "parents": [
        "f69feffd84bc736a8cdee7902bfcf988409af7c1",
        "9764d5292bcd936ff2442de69371913f88489189"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 27 11:38:26 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 27 11:38:26 2016 -0700"
      },
      "message": "resolve merge conflicts of 9764d52 to nyc-dev-plus-aosp\n\nChange-Id: I52d001d9dff4b250769e5fa59f9aea461b435193\n"
    },
    {
      "commit": "69488c4ef115c9de52c85f4fcae27c7774720298",
      "tree": "9f1be0c3a13dec3768aa3e314f346afa7aa96ff0",
      "parents": [
        "f3d9908a888203e7e70b8c2d43ee741a95e154ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 16 18:43:33 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 24 18:59:42 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp startup condition\n\nSuppress timestamps without valid kernel information or\na server update.\n\nUpdate timing of server timestamp location to better indicate\nwhen the server pull occurs.\n\nUpdate write timing logic to suppress unneeded time calls\nand to ensure proper throttling.\n\nBug: 28771691\nChange-Id: I2cd25dad638ca1d0b1355d87d175d908f3bddb26\n"
    },
    {
      "commit": "9ea77cdba8c422940adb57a790b44ac04fe0353f",
      "tree": "1e7c588ce1add16e6991eaae918d38414b17d879",
      "parents": [
        "f0f4f1e494a80ce300a68cfce0e1dc627c09c29a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Apr 06 17:07:48 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 00:48:20 2016 +0000"
      },
      "message": "audioflinger: Pass pid of process creating track or opening record\n\nAudioFlinger allocates a Client heap for each unique pid.\nIf two applications use mediaplayer APIs, the same Client heap\nis reused as the pid used is not the application pid but that\nof mediaserver. With this change, the pid of the application\npid is used to decide the heap to be used.\n\nBug: 23525542\nBug: 28772898\nChange-Id: I31a695b0b321eff6e2aca80c3bc4aeb3e1cd9ac7\n"
    },
    {
      "commit": "d6baf6f91afc194669fbffda83117ac2059eb04c",
      "tree": "f717fe8ce0f3c6e8369b14256b89de5a198e4329",
      "parents": [
        "0603c5dfc34923095218307674a60429bfa5873a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:28:38 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:28:38 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\nBug: 28705665\nChange-Id: I51f09c5d6537b864a53db891ba5f86cf6c195dac\n"
    },
    {
      "commit": "6d7b119a416c9f10288051e562f294365e5d954c",
      "tree": "734bff32a20de4a97c24271b745795db3871cd0f",
      "parents": [
        "0b667e2f6f9e871e2fdc89100b8ef4cc623adec2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat May 07 22:59:48 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 09 11:42:57 2016 -0700"
      },
      "message": "Improve timestamp jitter fix\n\nUse last valid kernel timestamp on server side, not client side.\n\nBug: 28465713\nChange-Id: I33590d6922980f288355f947bc56279245058429\n"
    },
    {
      "commit": "7aa45dd7fc5c2bd959f1571231556ac06b7ec8ae",
      "tree": "93445d577ff2a865f26116d78a59dd612fe53229",
      "parents": [
        "9b04a0225085acdf6dd4944fb43695f246669014",
        "b01faa31462e19957ae3c0c3ada07c9576a9494f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 03 17:25:38 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 03 17:25:38 2016 +0000"
      },
      "message": "Merge \"AudioTrack: Fix timestamp jitter\" into nyc-dev"
    },
    {
      "commit": "aebe9dc29988c94a774208ba659c4f156d274d79",
      "tree": "48a77c49fdc9d1bd0b8e43e4fe1b9ca29a75fefc",
      "parents": [
        "5bdfad1a45a7d5fd03732c75768eef65975660dc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 02 14:38:21 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 02 14:38:21 2016 -0700"
      },
      "message": "Normal tracks use triple buffering if resampling\n\nBug: 26230944\nChange-Id: I40f6cd7147db1be95f297af406c77c6404a76f37\n"
    },
    {
      "commit": "b01faa31462e19957ae3c0c3ada07c9576a9494f",
      "tree": "8e01ae4c10bb12e81745787526c34ba3b6abf2af",
      "parents": [
        "ecd0a41d9a2cc9efbc4ad6d4c91d417461772933"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 27 12:51:32 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 29 18:16:03 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp jitter\n\nWhen HAL out_get_presentation_position returns error,\nuse server position adjusted for latency.\n\nBug: 28250436\nChange-Id: I3dbcb9b7c4e56d34e7e161d1a02d8f64afd602b9\n"
    },
    {
      "commit": "ea38ee7742e799b23bd8675f5801ef72f94de0f4",
      "tree": "49a00a228e6304a36d19ff4126293c8fce16ff73",
      "parents": [
        "ecd0a41d9a2cc9efbc4ad6d4c91d417461772933"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 18 11:08:01 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 28 16:36:22 2016 -0700"
      },
      "message": "Can now indicate the desired number of notifications (sub-buffers)\n\nper fast track buffer when using the default buffer size.\n\nThere is no change for normal tracks, or fast tracks with a non-default buffer size.\n\nAlso fix related bugs:\nNotification period was not set correctly when fast multiplier is not 1.\nIncorrect warning when client adjusted notification frames.\n\nBug: 27819623\nBug: 28117362\nChange-Id: Ifc2121e874f51718cd56ec04e4bd5f89f4963132\n"
    },
    {
      "commit": "0c4a97e6e1470b2d8b8810792af8d66689020c51",
      "tree": "49ab98d7d2462157431b2fc830f417098f1b146b",
      "parents": [
        "24f66c69676dbb004565407215ce7185e00c5de2",
        "ff874dc957f9ea70d87f4d627bf903e1fc86d58b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "message": "Merge \"NuPlayer: Reserve buffer for 8x max speed\" into nyc-dev"
    },
    {
      "commit": "f2c87b3f88d987d2af6322e9763eb8224a2bae48",
      "tree": "e5385d3a05f9a317b7fa1ea5613a2a6f584ebdfd",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 07 19:49:29 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:03:44 2016 -0700"
      },
      "message": "NuPlayer: Notify if drain message time is unexpectedly long\n\nBug: 27940058\nChange-Id: Id8897c30e21b6b9de545a710e7766ffceb491455\n"
    },
    {
      "commit": "ff874dc957f9ea70d87f4d627bf903e1fc86d58b",
      "tree": "ea53dbbdf6db6e8fd36eebc1b9c657ddafbfb1e2",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 11 16:49:09 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:02:33 2016 -0700"
      },
      "message": "NuPlayer: Reserve buffer for 8x max speed\n\nAffects Photos with Bluetooth and 240x recording.\n\nBug: 26986060\nChange-Id: I228223221f9811e05c274d64cd42ac104db04c36\n"
    },
    {
      "commit": "e1e9846a786a0d77a13b44f8e798e03b4cba9d77",
      "tree": "57580c6e48c242f5338e6ed4e99f03cb2511824f",
      "parents": [
        "8a049c2f127f95715375d5ede39b2363b3a68329"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 12 10:18:51 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 12 14:57:36 2016 -0700"
      },
      "message": "AudioTrack: Reset position on flush for extended timestamps.\n\nBug: 27940058\nChange-Id: If91320669e2e84803e601137b1ce66b361b129f1\n"
    },
    {
      "commit": "e13f8a603867280de9b02ce4839202a182556416",
      "tree": "adfd4bef77236d67dd7c1e862740448bc82ba7d4",
      "parents": [
        "ea2b9c07b34079f0dbd8610a511e006e69a15adc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 30 14:20:42 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 01 16:56:02 2016 -0700"
      },
      "message": "NuPlayer: Play out remaining audio data when recycling isn\u0027t possible\n\nDon\u0027t flush it immediately.\n\nBug: 26530291\nChange-Id: I0427633402fa251ec62e2b70e47a0a7b451d3ea2\n"
    },
    {
      "commit": "ea2b9c07b34079f0dbd8610a511e006e69a15adc",
      "tree": "95898426bb80bdc743a0746bc8149f1ba313dfde",
      "parents": [
        "1b9e52cd6553e60f02663c02e7b75f05ec2ef351"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 12 17:06:53 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 31 14:45:36 2016 -0700"
      },
      "message": "Implement client playback timestamps with 64 bit accuracy\n\nProvide server timestamps if the HAL doesn\u0027t provide it.\nProvide monotonic - boottime translation.\n\nBug: 17472992\nBug: 26682703\nBug: 27749434\nChange-Id: I6c9b213d9f9284092e34d57f52870e02c72df62a\n"
    },
    {
      "commit": "5fe2151459fd6c88958c5ebd71f28004d49d8b65",
      "tree": "a6cc27e2e0e5646c01c8e3bbbf53f89a1bbccb99",
      "parents": [
        "eb130ab1c351801ea9f8cf91e2e141036a0fe5c9",
        "7a490e7ab39ef0b22baf24b03f2463c46dc068ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 29 17:51:14 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 29 17:51:15 2016 +0000"
      },
      "message": "Merge \"Read from proxy for PCM direct and offloaded track position\" into nyc-dev"
    },
    {
      "commit": "7a490e7ab39ef0b22baf24b03f2463c46dc068ed",
      "tree": "067f8a45cc1e8e95e938caa96ea3d9d186607289",
      "parents": [
        "fdb90f355b269737fe48a2da0593b37d5c2b83c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 23 15:58:10 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Mar 28 17:22:50 2016 -0700"
      },
      "message": "Read from proxy for PCM direct and offloaded track position\n\nBug: 27776737\nChange-Id: I721bf2b4d46271bf84ad9fc29ff5c4ecd4759206\n"
    },
    {
      "commit": "9b3359feabbf138bb965da5173434da78bfe0929",
      "tree": "3df815199a5a03f0f2e06ddbf02ef9c565dbe518",
      "parents": [
        "15ac558b0f1873dbe0d9c1e6fed042a349f8b5a4"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Mar 23 19:09:10 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 25 10:15:37 2016 -0700"
      },
      "message": "libmedia: Initialize state vars to avoid possible crash\n\nIf playback or record track creation fails on server side,\nsome state is left initialized incorrectly.\nThis can cause a crash when the object is destroyed\nbecause of a reference to a NULL object.\n\nInitialize state vars properly in the initialization list\nto avoid this behavior.\n\nauthored-by: Zhou Song \u003czhous@codeaurora.org\u003e\n\nCRs-Fixed: 992608\nChange-Id: If8c3611e3229c0c1b14b81285e07b9357fec7658\n"
    },
    {
      "commit": "79629f0716f04e79064256362be56730077b8c50",
      "tree": "5fb1f5adf8a0f6a7196afaca4a96a9e3bd55c1e1",
      "parents": [
        "5a898236109c3cb705241e66583d80df413198d2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 24 13:57:40 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 24 15:50:39 2016 -0700"
      },
      "message": "AudioTrack: Do not resume callback thread on start failure\n\nBug: 27673375\nChange-Id: I1df1db51e75cee57f19824ac6506bf02000714fd\n"
    },
    {
      "commit": "fc1337d079ba7e6ffd7ce07706cfeeeb355c0200",
      "tree": "1a70a9e62e19bc4c0dbc2160c13a051039d10106",
      "parents": [
        "7c9ea89cbe3e42e0d94b1790ae1d424a9c16ce08",
        "e8972b0a27fac327c997fceb20d9abae1dc1d899"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 18 03:37:20 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 18 03:37:21 2016 +0000"
      },
      "message": "Merge \"AudioTrack: fix stall if setBufferSizeInFrames() called before play()\" into nyc-dev"
    },
    {
      "commit": "e8972b0a27fac327c997fceb20d9abae1dc1d899",
      "tree": "ff3812507f2eb266870eac29c56921f4a548dacf",
      "parents": [
        "f56a02a5e7d1bfaeabf8b918e56bf49ea509bd42"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 04 11:29:57 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 17 16:09:38 2016 -0700"
      },
      "message": "AudioTrack: fix stall if setBufferSizeInFrames() called before play()\n\nThe server was waiting for a full buffer.\nBut the buffer was only getting partly filled.\nSo the stream was not starting.\n\nThe fix involves having the server look at the adjustable threshold.\n\nBug: 27505889\nChange-Id: I5dbf686413e670dacbbecc9e0f838744e465f44f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "4d231dc0ee34380956c71cbe18a750e487a69601",
      "tree": "cee9e9b9ff4d3aa17bca9269622e9f40d470ff09",
      "parents": [
        "f56a02a5e7d1bfaeabf8b918e56bf49ea509bd42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 11 18:38:23 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 14 15:50:19 2016 -0700"
      },
      "message": "audio: Fix race condition in AudioTrack underrun.\n\nWhen audio flinger mixer removes an AudioTrack from the\nactive list in case of underrun, it is possible that the\nclient has written a full buffer just after the underrun detection and\nis blocked waiting for more space to write. In this case, the client\nwill never detect the DISABLED flag and the track never be restarted.\n\nAlso implement missing DISABLE flag detection in server side audio tracks\n(OutputTrack and PatchTrack).\n\nbug: 27567768\nChange-Id: I8d0753429d4113498258b1f61bd8ac5939a612f0\n"
    },
    {
      "commit": "ae34ed2bcc9fa49a22fe7497327adb689ef27e8d",
      "tree": "c0b9d4912875fcf99e2538aacb086e55f5564bab",
      "parents": [
        "633666975ff9a85475a7d134d297eec4e1e513f8"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Jan 28 11:58:39 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 09 10:19:10 2016 -0800"
      },
      "message": "AudioTrack: Use original flags during track recreation\n\nAlso the OFFLOAD and DIRECT flags aren\u0027t denied by server.\n\nauthored-by: Pavan Chikkala\u003cpavanc@codeaurora.org\u003e\nBug: 27554925\nChange-Id: I6fd6b129928af4513bb0cba271019288605310f8\n"
    },
    {
      "commit": "7fd0422fbd17af3b24eb04421d37fce50f3826e2",
      "tree": "b06fbc7c5d058d4f1cb5491b1befa238642e71b8",
      "parents": [
        "2c073da0f02c3cf7cd4795af2d861222cbcab72a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 02 12:38:16 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:33:03 2016 -0800"
      },
      "message": "Sample rate 0 means a route-dependent rate\n\nRemove check for primary _output_ [sic] sampling rate for fast capture.\nClean up AudioRecord handling of frame count and sample rate.\nClean up AudioTrack handling of notification period updates.\nMake AudioRecord and AudioTrack more similar in order of operation, comments, and whitespace.\n\nBug: 25641253\nBug: 21019153\nChange-Id: I24a6677945987fc39a9bf93f70357e4bc7410f98\n"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "818e7a32ce3633980138aff2c2bfcc5158b3cfcc",
      "tree": "61104149c08955e55a10b9353f80ed140ad3df26",
      "parents": [
        "6ae5843c281301a9ffd1059d185620a9337e15a2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 16 18:08:07 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 19 13:15:16 2016 -0800"
      },
      "message": "Implement server side playback timestamps with 64 bit accuracy\n\nProvide server timestamps if the HAL doesn\u0027t provide it.\nProvide monotonic - boottime translation.\nIntegrate record timestamps and playback timestamps together.\n\nBug: 17472992\nBug: 22871200\nBug: 26400089\nBug: 26682703\nChange-Id: If1974f94232fcce7ba0bbcdf63d9e54ed51918ff\n"
    },
    {
      "commit": "6ae5843c281301a9ffd1059d185620a9337e15a2",
      "tree": "5c97c15b705c079bf8b2dc9ebb0a1ba17df8ca07",
      "parents": [
        "d25c45526d9598218433b0fa59e1f5accbd5b639"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 16 18:32:24 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Feb 18 16:04:55 2016 -0800"
      },
      "message": "Enable FastTrack timestamps\n\nBug: 26413951\nChange-Id: Id54c32cb0f0be83d443f6cf1007181ebc461c586\n"
    }
  ],
  "next": "8ce8e264d0bf09ec131e4a7701fe1ebc3a678f8b"
}
