)]}'
{
  "log": [
    {
      "commit": "bc7f347ff5dc890ad0fa306f58d145e934e31ed4",
      "tree": "0164bf05d87776c3e073a32fba021b041f7a45b1",
      "parents": [
        "ec982d462866b8b985b4ed13a2e99556de094c0d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 19:27:57 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "4c6e77ff8e18a1551320a6b42f6a45e19dcce748",
      "tree": "97d86a674d1cecec6da60dfb0ec0c2eae1e2b644",
      "parents": [
        "5076a51e0572246f7062e48761766c01f17233c2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 21 12:44:54 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 13 12:17:53 2015 -0700"
      },
      "message": "AudioFlinger: Clear record buffers when starting RecordThread\n\nBug: 24211743\nBug: 24267152\nChange-Id: I58c55e56b85067b71e4e300f947b4dfc159637ba\n"
    },
    {
      "commit": "5ce059661dcbab8924edab400681fc408ee76123",
      "tree": "82709f0f74d4c8e89e8acdd751784a5f9103d620",
      "parents": [
        "9f00e69c5f2702b66e9bdf8f4f75f99a338738d7",
        "eb9487e10294a4e73977f460f30eeaff503acd21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 24 20:28:43 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 24 20:28:43 2015 +0000"
      },
      "message": "Merge \"Fix capture overruns at non-primary sample rate\" into mnc-dev"
    },
    {
      "commit": "a97630bda8815958587ca31adb2d37090022af25",
      "tree": "edff2365d23d227a22248f30dd8acf217801fa8d",
      "parents": [
        "17d0efd17fbb2573adcde8dcbe77726f622817da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 23:27:24 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 23:31:54 2015 -0700"
      },
      "message": "Fix record memory buffer allocation for legacy upmix/downmix\n\nBug: 22173057\nChange-Id: I8f5056ff5a1252c71a3d3b354440551bcd9fd466\n"
    },
    {
      "commit": "eb9487e10294a4e73977f460f30eeaff503acd21",
      "tree": "fdd7dfd6fd2074f9d0684ed9b11dd851dc469d50",
      "parents": [
        "8f0547a954b39d5750488be7e060ebe1ebfdf666"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 22 09:15:17 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 22 12:20:43 2015 -0700"
      },
      "message": "Fix capture overruns at non-primary sample rate\n\nand small buffer size.  Also:\nPull out the magic number \"12 ms\" to a named constant.\nRemove obsolete AudioFlinger::mPrimaryOutputSampleRate.\n\nBug: 22662814\nChange-Id: I261f75a222c4505a84aad2493d251bd2dea59f68\n"
    },
    {
      "commit": "ca5e6143740299c877d69e97f7968cd04476d32c",
      "tree": "50101b57406c5abce066ec90120d91d3dfd0152b",
      "parents": [
        "bc24bb8a552097e7975d0c16fad80158b542ba62"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 14 09:42:29 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jul 17 20:56:04 2015 +0000"
      },
      "message": "AudioFlinger: fix repeated underruns for compressed audio\n\nThe AudioFlinger kept pausing the audio when playing compressed AC3 or DTS.\nThis caused pause/resume loops that were hard to break out of.\n\nThe AudioFlinger was thinking that the compressed audio was PCM\nbecause the HAL was in PCM mode playing SPDIF data bursts.\nIt also thought that EAC3 was at 192000 Hz instead of 48000\nHz because the data bursts are played at a higher rate.\n\nThis CL adds more calls to the shim that separates the AudioFlinger.\nNow the AudioFlinger gets information about the HAL sample rate,\nchannel masks and format from the shim instead of calling the HAL directly.\n\nThe AudioFlinger now uses a different threshold for detecting\nunderruns when the audio is compressed.\n\nBug: 19938315\nBug: 20891646\nChange-Id: Ib16f539346d1c7a273ea4feb3d3afcc3dc60237d\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "4b33e0838fdb1b5e545449add02005916b512c99",
      "tree": "e38ce9db4984ec035c05ffa7832e2bad50fe2bd2",
      "parents": [
        "9ad9e7471629f7b9061569a50555a1722047f38d",
        "0f0631eb55b1f0a7f4b62212b78a3faa0b49919b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 13 15:52:35 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 13 15:52:36 2015 +0000"
      },
      "message": "Merge \"audioflinger: flush HAL when transitioning to next direct track\" into mnc-dev"
    },
    {
      "commit": "7c1ec5f038e63a5eb8b04434577c25bc23f5f410",
      "tree": "f6b8feda43ba0bb6666171b57318ad3cea48a45e",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 09 14:52:47 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 10 10:58:41 2015 -0700"
      },
      "message": "audio: several fixes in audio routing callbacks\n\n- audio policy:\nForce device change to ensure new audio patch creation\nupon first track activity on a given output.\nFix function device_distinguishes_on_address() which could mistake\nsome output device with remote submix input device.\n\n- audio flinger:\nReduce number of binder calls upon new client registration by only\nsending ioConfigChanged() callbacks to newly registered client.\nFix first patch after output thread creation not triggering an\nioConfigChanged() callback.\n\n-audio system:\nForce client registration upon routing callback installation to force\nnew ioConfigChanged() callback from audio flinger.\n\nBug: 22381136.\n\nChange-Id: Ieb0d9f92f563a40552eb31bc0499c8ac65f78ce4\n"
    },
    {
      "commit": "0f0631eb55b1f0a7f4b62212b78a3faa0b49919b",
      "tree": "0ccee662c252bcb9741f233e5bdc6e42278c3da5",
      "parents": [
        "065f6572752dca646b7d60df8e80b6d4ac159281"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 06 18:01:25 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 07 19:30:48 2015 -0700"
      },
      "message": "audioflinger: flush HAL when transitioning to next direct track\n\nSend flush command to the audio HAL when transtioning to\nnext track on direct output thread, even if both tracks are in the\nsame audio session.\n\nCommit 43b4dcc to fix issue 21145353 did only flush the HAL if the\naudio session was different for the new track because the logic was\ncopied from the offload thread.\n\nBug: 22019044.\nChange-Id: I89b217580023ed7449a58e9bf3dc068ce7a84487\n"
    },
    {
      "commit": "b9d73333cce3f9da3a7a0b33589f6bbe0f992a92",
      "tree": "960da701639ef27e3f2f41bbf6120b351380d99f",
      "parents": [
        "dfad5454e0caf46f8732f1415d3b9a76f2a1242e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 30 17:09:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 06 12:13:30 2015 -0700"
      },
      "message": "audio: add definitions for devices connected over IP\n\nBug: 22068684.\nChange-Id: Idde0eaf7121d2e43f32eee3e6b10e99d8cff4912\n"
    },
    {
      "commit": "e8726fea8a53bf3474aa3c6deaf2f6c1f565e694",
      "tree": "d72b6ffcc7e33c178e3cac7c108b102041451cb6",
      "parents": [
        "ed8505836c0b2fba0ab4be0c1eff31d4f241bc1d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 09:39:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 12:38:13 2015 -0700"
      },
      "message": "reduce number of binder calls from mediaserver\n\nReduce the number of audio port, audio patch and\nIO config changed binder calls from mediaserver to\nclient processes:\n- Do not call IO config changed callback if selected\ndevice is the same as previously selected one on a given\naudio flinger playback or capture thread.\n- Do not call the audio port or audo patch list update\ncallback on a client if this client as no listener registered.\n\nBug: 22045560.\n\nChange-Id: If780e105404de79b7cb5c80c27b793ceb6b1c423\n"
    },
    {
      "commit": "40eb1a1f8871909c272e72afaf7d5af84fea2412",
      "tree": "93cd7cb7f509034600ea627568e2e25a159d3242",
      "parents": [
        "bd974011599b6d4ff47c1cee36d617f191dc0c2f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 13:42:02 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 13:43:51 2015 -0700"
      },
      "message": "Reduce log messages on AudioFlinger throttle\n\nBug: 21858740\nChange-Id: I8f291b64c1033867bb57ffceaa3b7d94aa998715\n"
    },
    {
      "commit": "ad9ef61e770c0751a9983aa5c9844dfeb9ed665b",
      "tree": "e8ab7db05298c171c55954e4dffbf9a99d59953c",
      "parents": [
        "cd644a3f7bd16b25a6fd202ce3eb8c7138572712",
        "43b4dcc660e6da96285e4672ae371070ab845401"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 11 18:22:43 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 11 18:22:44 2015 +0000"
      },
      "message": "Merge \"AudioFlinger: flush stream when switching tracks\" into mnc-dev"
    },
    {
      "commit": "43b4dcc660e6da96285e4672ae371070ab845401",
      "tree": "f03f4f3817afd22eb759962cde571029f312e1b6",
      "parents": [
        "afd492436efc7f66b958da14659b52232efa5910"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 09 16:53:44 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 11 10:37:21 2015 -0700"
      },
      "message": "AudioFlinger: flush stream when switching tracks\n\nFor direct threads, when recycling a stream, perform a flush so\nthat the frame position is reset.\n\nBug: 21145353\nChange-Id: I08611cd64bb249a9659c44f9e4c47e7455f4838f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "e1635ec096d1110c33a5aa46847af59c261fb7fa",
      "tree": "440b1c8f000d3a7d6eebf92f48e49e9376fa3a5f",
      "parents": [
        "d16a8ef26fd1f7a86061c396c5865564af2f1abb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 08 15:46:49 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 09 08:56:37 2015 -0700"
      },
      "message": "Take advantage of audio_channel_in_mask_from_count\n\nBug: 21375533\nBug: 21721483\nChange-Id: I1ccd5d1d68a25f415dc4a62bf7a44d9db12a256b\n"
    },
    {
      "commit": "08fb1743f80437c38b4094070d851ea7f6d485e5",
      "tree": "5c2c3d8a6401247415e5e106140afdea2113661f",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 23:22:10 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:28:27 2015 -0700"
      },
      "message": "Throttle MixerThread data pull to no more than twice expected rate\n\nThis helps prevent underruns with NuPlayer and other applications\nwhich set up buffers that are close to minimum size or use deep\nbuffers, and rely on a double-buffering sleep strategy to fill.\n\nEnabled by default.  Disabled by setting af.thread.throttle 0\n\nBug: 19062223\nBug: 21198655\nChange-Id: Ia52b48e0c99588af5db53c43fede2afd775b8899\n"
    },
    {
      "commit": "e1f939bf0e1bac806b7da1b316e70c96426dc1b6",
      "tree": "915bde554563a4d65e978430bdfa0bf4e7ada350",
      "parents": [
        "76b1d55b69f0d1d36bb96ab0c206ef1eff715d82",
        "84d61caa6040e346df68dbe6f8e4fe339906de08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 29 22:16:20 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 29 22:16:20 2015 +0000"
      },
      "message": "Merge \"Add more device codes for symbolic display\" into mnc-dev"
    },
    {
      "commit": "ad9cb8b88e4f8face23f01d8dc89fa769dacb50f",
      "tree": "bfa8ce6b4b9f6f00c6d2bcc639e482e80aa9cc0a",
      "parents": [
        "3ab77c1e93f3da5da0d18ff998f1bd6db19534f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 16:38:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 27 17:59:12 2015 +0000"
      },
      "message": "audio flinger: add suffix to time variables names\n\nAdd suffix to clarify units for the following variables:\n standbyTime -\u003e mStandbyTimeNs\n standbyDelay -\u003e mStandbyDelayNs\n activeSleepTime -\u003e mActiveSleepTimeUs\n idleSleepTime -\u003e mIdleSleepTimeUs\n sleepTime -\u003e mSleepTimeUs\n\nChange-Id: I7f5d602c39e0ef3f6fe9ef99eaf1b351c7bd4fc3\n"
    },
    {
      "commit": "3ab77c1e93f3da5da0d18ff998f1bd6db19534f3",
      "tree": "62dd0ec770bc7e883083a5cb2f2c8ba5163c124f",
      "parents": [
        "5eabb0191ab25a45ae19575a7a443ba12bd1800a",
        "5cff403679fc44c8293de81aed31c459c6129243"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 27 17:58:00 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 27 17:58:00 2015 +0000"
      },
      "message": "Merge \"audio flinger: pause direct output when underrunning\" into mnc-dev"
    },
    {
      "commit": "84d61caa6040e346df68dbe6f8e4fe339906de08",
      "tree": "eaeda93ba5803d63e142caaee24624eb3741f793",
      "parents": [
        "92d824426e4621c2e8dfdd4e0f00d19c35d3c481"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 06 18:32:13 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 27 10:11:21 2015 -0700"
      },
      "message": "Add more device codes for symbolic display\n\nChange-Id: I08553f0e94d0a0931ccf98ee04f53686b96c8b03\n"
    },
    {
      "commit": "5cff403679fc44c8293de81aed31c459c6129243",
      "tree": "6461ccb9f276df2f1f37b2e29381fd564f2e5f26",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 13:49:58 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 23:37:14 2015 +0000"
      },
      "message": "audio flinger: pause direct output when underrunning\n\nIf a direct output supports pause, pause the stream\ninstead of placing it into standby when the audio track\nunderruns. This will avoid resetting the presented frame count\nand preserve A/V sync.\n\nBug: 21437855.\n\nChange-Id: I598346edb62a1864126acdb1d9a937c82eac2191\n"
    },
    {
      "commit": "748a792be85838c429ebf46acf7d6eb02e79f00b",
      "tree": "5f9aa67825176080016baabc4cf844abd1e25ecb",
      "parents": [
        "2232aee25e4df7d04446912e8ad9e9dc44d8ec16",
        "72e3f39146fce4686bd96f11057c051bea376dfb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 21 16:12:36 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 21 16:12:37 2015 +0000"
      },
      "message": "Merge \"audio flinger: do not call JAVA services until system is ready\" into mnc-dev"
    },
    {
      "commit": "72e3f39146fce4686bd96f11057c051bea376dfb",
      "tree": "00e43a5392f717a49a3569de3a5bdce9aa7b6a6e",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 14:43:50 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 17:35:37 2015 -0700"
      },
      "message": "audio flinger: do not call JAVA services until system is ready\n\nWait for system ready indication form AudioService before enabling\ncalls to scheduling service or power manager.\n\nBug: 11520969.\nChange-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf\n"
    },
    {
      "commit": "8ef66c6662002279a606df70f41651491a349126",
      "tree": "9c49cfce7c271b0e7ff8ba0c2f24c6adb447bfdc",
      "parents": [
        "9f7eddb757d84640786174e8ce78a3221e829cd4",
        "1f439e1cf16a29347288ba9ddd06c0b6d086a145"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 19 23:42:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 19 23:42:25 2015 +0000"
      },
      "message": "Merge \"Update FastTrack channel conversion check\" into mnc-dev"
    },
    {
      "commit": "1f439e1cf16a29347288ba9ddd06c0b6d086a145",
      "tree": "d4a7b6501598b794b0ceffcf6c473520fda5e323",
      "parents": [
        "64b6cb2cd5646a5ffcdb2cccee09a170ef2882d5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 19 12:57:41 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 19 13:08:45 2015 -0700"
      },
      "message": "Update FastTrack channel conversion check\n\nChange-Id: Ia1a3124e6408859bf4d95ff9fd95dda6970a4a7f\n"
    },
    {
      "commit": "f98ec8d0d42e6952c0a7cc5027935851073f7426",
      "tree": "99379816526b00add39e7921d364f2a731668af7",
      "parents": [
        "64b6cb2cd5646a5ffcdb2cccee09a170ef2882d5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 19 12:53:24 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 19 13:04:44 2015 -0700"
      },
      "message": "Fix channel mask dump in AudioFlinger\n\nChange-Id: Iba5ccd1885775b14c44342c7b169a0672b93549b\n"
    },
    {
      "commit": "d9f493ebcd1830c76d7b1782e64c7ba9ad8ab4bd",
      "tree": "1d075b113943a8e3a032b9162100f05490213250",
      "parents": [
        "69dce3343ffe33d2ba60ab4c6755953a7ec96899",
        "db4c031f518ae5806af73756273ff32cd8d0e4f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 12 18:42:59 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 12 18:43:00 2015 +0000"
      },
      "message": "Merge \"Update sampling rate to 192kHz for devices\" into mnc-dev"
    },
    {
      "commit": "69dce3343ffe33d2ba60ab4c6755953a7ec96899",
      "tree": "71e7ceb677e83c6496e4d87bc578d3203858e1b9",
      "parents": [
        "d0e25a2529584b07e4fe3544f973c6b0ebda7fc3",
        "078538cfc6c4682889ed52de460d29c0d15bb9eb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue May 12 17:40:16 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 12 17:40:18 2015 +0000"
      },
      "message": "Merge \"Work around bug in offload driver\" into mnc-dev"
    },
    {
      "commit": "078538cfc6c4682889ed52de460d29c0d15bb9eb",
      "tree": "80c1fcdd039f5ab2481f6fb93077176d6d9331d8",
      "parents": [
        "3af8a321d06b3ee59afe159479c58e6b549c7b8f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue May 12 09:17:57 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue May 12 10:35:39 2015 -0700"
      },
      "message": "Work around bug in offload driver\n\nThere is a bug in the offload driver that causes the last offload buffer(s)\nto be dropped unless the device is on power or holding a wake lock.\nTo avoid truncated playback, we now hold a wake lock during the drain phase\nof offloaded playback.\n\nBug: 19928717\nChange-Id: I8df22e965ec791448aa5d9b74e743f48ef886fc4\n"
    },
    {
      "commit": "db4c031f518ae5806af73756273ff32cd8d0e4f8",
      "tree": "62f9e0541acccc3acacf808d2a3cdad130eb819b",
      "parents": [
        "18aa27016a94d0fee243637a80fd0741f89e08f2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 06 08:46:52 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 12 09:30:51 2015 -0700"
      },
      "message": "Update sampling rate to 192kHz for devices\n\nChange-Id: I0a83206be51d7ae18ccf85b94b2127356307be69\n"
    },
    {
      "commit": "af49160aa75d4e1750f3ed56b812ec9cc448fa46",
      "tree": "28be21137eef5113692cbf9f6ab904c7f476b1c4",
      "parents": [
        "1ea0262553d7b88849c6392585e7173d8dc4bde6",
        "d1abb8f94d7ed749ee959655db1e07d26dad074d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 12 00:30:51 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 12 00:30:52 2015 +0000"
      },
      "message": "Merge \"Allow 8 channels in RecordThread\" into mnc-dev"
    },
    {
      "commit": "f6870aefc5e31d4220f3778c4e79ff34a61f48ad",
      "tree": "6943c86c7143ffc113d91b8ed7a34d75ab183434",
      "parents": [
        "70c75d8c15707d5eade38fe3e622f8500c29556b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 10:50:03 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 13:23:51 2015 -0700"
      },
      "message": "audio flinger: fix fuzz test crash\n\nClear output stream pointer in duplicating thread\nwhen the main output to which it is attached is closed.\n\nAlso do not forward master mute and volume commands to\nduplicating threads as this is not applicable.\n\nAlso fix logic in AudioFlinger::primaryPlaybackThread_l()\nthat could accidentally return a duplicating thread.\nThis never happens because the primary thread is always\nfirst in the list.\n\nBug: 20731946.\nChange-Id: Ic8869699836920351b23d09544c50a258d3fb585\n"
    },
    {
      "commit": "296fb13dd9b5e90d6a05cce897c3b1e7914a478a",
      "tree": "d3ed4e6ff2902da6f556d038c71605c091b75f64",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:38:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 10:14:42 2015 -0700"
      },
      "message": "Implement audio device callback\n\nAdd class AudioSystem::AudioDeviceCallback notifying\nAudioSystem clients upon device selection change on a given\ninput or output thread.\nMaintain a list of installed callback per I/O handle in AudioSystem\nand call registered callbacks when an OPEN of CONFIG_CHANGED event\nis received on IAudioFlingerClient::ioConfigChanged().\nAdd methods to AudioTrack and AudioRecord to add and remove device\nchange callbacks.\nAdd methods to AudioTrack and AudioRecord to query currently selected\ndevice.\nioConfigChanged() events now convey the audio patch describing\nthe input or output thread routing.\n\nFix AudioRecord failure to start when invalidation is\nhandled by start().\n\nChange-Id: I9e938adf025fa712337c63b1e02a8c18f2a20d39\n"
    },
    {
      "commit": "d1abb8f94d7ed749ee959655db1e07d26dad074d",
      "tree": "19df13c5fcba2ebca2793ab5ac1570348b7e42af",
      "parents": [
        "8b07404cfe564885045a63bb592d6b6dc838b408"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 23:42:34 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 23:42:34 2015 -0700"
      },
      "message": "Allow 8 channels in RecordThread\n\nChange-Id: I738d4975188695e568015e1bc64d160550e958f5\n"
    },
    {
      "commit": "8ce74c3c11458faa34395591a3424e90db856bfc",
      "tree": "e3e1f5120c35890402528e2959e77be85aaa1bfd",
      "parents": [
        "8651c6f5069cca40ef805b800a9730617ff7f9b8",
        "6fc2a7c81f62b1e21487ae37e11aae6241bc3ead"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat May 02 02:31:19 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 02 02:31:20 2015 +0000"
      },
      "message": "Merge \"AudioTrack: fix direct tracks not pausing\" into mnc-dev"
    },
    {
      "commit": "6fc2a7c81f62b1e21487ae37e11aae6241bc3ead",
      "tree": "2b8396ccca007dfb36b825df49d4a430b3dd3d1c",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 16:08:10 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 17:17:44 2015 -0700"
      },
      "message": "AudioTrack: fix direct tracks not pausing\n\nWhen a Direct Track is paused and the HAL does not support\npause() and resume() then the HW never gets paused.\nThe app can just keep writing data, which gets played.\n\nBug: 18899620\nChange-Id: Ice0f360956ff7ca425f6f24a0a2a8640d8b43fa8\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "73e26b661af50be2c0a4ff6c9ac85f7347a8b235",
      "tree": "7290cb83e5f7df830447fe2badf99c43e0afc020",
      "parents": [
        "054d9d3dea1390294650ac704acb4aa0a0731217"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 16:55:58 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:45:07 2015 -0700"
      },
      "message": "AudioSystem: refactor audio config cache and callbacks\n\nClean up implementation of audio configuration cache and\ncallback events from AudioFlinger:\n\n- Define class AudioIoDescriptor for audio input and output\nconfigurations outside of AudioSystem class.\n- Do not use void * but an AudioIoDescriptor as argument to\naudio config callbacks from AudioFlinger.\n- Remove unused configuration events.\n- Move AudioSystem audio input and output cache from static singletons to\nmembers of AudioFlingerClient subclass.\n\nChange-Id: I67c196c32c09ce2756af0755ee1fe631040c3270\n"
    },
    {
      "commit": "054d9d3dea1390294650ac704acb4aa0a0731217",
      "tree": "4d67c48a2cf367d661f1e33a6670cda052a569a3",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 24 08:48:48 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 28 19:05:19 2015 -0700"
      },
      "message": "PatchPanel: do not use setParameters() internally.\n\nDo not use setParameters() with AUDIO_PARAMETER_STREAM_ROUTING\nwhen communicating the input or output device selected to playback or\nrecord threads, even for HAL version less than 3.0.\nUse createAudioPatch()/releaseAudioPatch() instead.\nThis allows to send more information on the output or input device being\nselected.\n\nAlso fix a regression introduced in L where the output device selection\nwas not communicated to effects on record threads.\n\nChange-Id: I4780ada53241d56694b005c992171e173c3bf8f5\n"
    },
    {
      "commit": "d330ee46022f34da76d14d0c4d2910526ecc2321",
      "tree": "05df908a6cd115a92eb1e15a2daa191c14a441b2",
      "parents": [
        "f27e2fbfc3284c00a60fa68edc51d436f75b1e32"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 20 13:23:41 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 12:42:52 2015 -0700"
      },
      "message": "Add floating and multichannel record to AudioFlinger\n\nChange-Id: Ia388fb012a0b6d81613ef87142a97d76836338f9\n"
    },
    {
      "commit": "04f07fd61022dac46ddda9c815d65bc3d3278b84",
      "tree": "d7d4a83f5190b4f917a608de504814e824862569",
      "parents": [
        "20bd9bfc3ae429412c8eb98619b40fb8e3671bbc",
        "5744661e85981f8a9456bf470e2761235fc026da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 19:16:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 22 19:16:26 2015 +0000"
      },
      "message": "Merge \"Make record buffer in RecordThread variable format\""
    },
    {
      "commit": "5a8a95de6dad1a3bcf3da5a37b35766e89086e13",
      "tree": "64b82016eaef26f51b75470714172c06287c9c56",
      "parents": [
        "ea44f41bb142555e747cc11382296e94af99d312"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Sat Apr 18 14:47:04 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 10:57:24 2015 -0700"
      },
      "message": "Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\n\nUse this struct to handle the parameters for TimestretchBufferProvider all\nacross the system.\nAdd stretch mode and fallback mode to TimestretchBuffer Provider.\n\nChange-Id: I19099924a7003c62e48bb6ead56c785cb129fba2\n"
    },
    {
      "commit": "5744661e85981f8a9456bf470e2761235fc026da",
      "tree": "ff5478072359cf1a910140000fa844322004c1f0",
      "parents": [
        "73e62e2ea12e46825958eba718bd8d5e23064ec5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Apr 19 23:56:46 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 21 15:30:49 2015 -0700"
      },
      "message": "Make record buffer in RecordThread variable format\n\nChange-Id: Id4bb9b973eeea16946fba3bc084c7ac270d9fa33\n"
    },
    {
      "commit": "8edb8dc44b8a2f81bdb5db645b6b708548771a31",
      "tree": "663bda0f8a3d43894fa6d3d3f4283ed0df427f03",
      "parents": [
        "c5656cc900aeb4a705e27508dd82c70030a97709"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 26 19:13:55 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 18:49:15 2015 -0700"
      },
      "message": "Add playback rate to AudioTrack\n\nBug: 19196501\nChange-Id: I6411e1d3ce652b711a71a6d9df020cb5f60d4714\n"
    },
    {
      "commit": "6770c6faa3467c92eabc5ec9b23d60eb556a0d03",
      "tree": "45470127b227dbda5a346bb1902f92f8998c25bb",
      "parents": [
        "73c02e4277b399c2ec1555d32b6ad5df23bb83dc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 07 13:43:36 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:58:56 2015 -0700"
      },
      "message": "Enable 8 bit and float pcm record formats for AudioFlinger\n\nUpdate sampling rate handling as well.\n\nBug: 19570772\nChange-Id: I872248e64c0578b2e48869a68fee0d51bd0640c3\n"
    },
    {
      "commit": "73c02e4277b399c2ec1555d32b6ad5df23bb83dc",
      "tree": "c42d75e42eda5b09915c0962107083f1c55dc74a",
      "parents": [
        "97a893eb34f8687485c88eaf15917974a203f20b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Mar 29 01:13:58 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:55:46 2015 -0700"
      },
      "message": "Improve ResamplerBufferProvider\n\nChange-Id: I3cc3af221ad5797ff219d75227350733afa180db\n"
    },
    {
      "commit": "97a893eb34f8687485c88eaf15917974a203f20b",
      "tree": "6a103ab6f76dcabb0416677055dab4a8454f9fd7",
      "parents": [
        "6b3b7e304e0f8f167241b2c75f1eb04a9ef192ec"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Mar 29 01:03:07 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:23:30 2015 -0700"
      },
      "message": "Add RecordBufferConverter for RecordThread data processing\n\nChange-Id: Ia3aab8590cd41e8a7cba0a7345d70d2866d92045\n"
    },
    {
      "commit": "b369cafd67beb63dd0278dba543f519956208a7f",
      "tree": "c50687a52df6b28cb071b36a5377cae9054bbefa",
      "parents": [
        "253930b927d375413a42f170fa1ef8d98b8f7cb4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 30 20:51:47 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 01 00:03:48 2015 +0000"
      },
      "message": "audio flinger: fix standby on output with HW A/V sync\n\nFix a bug in audio HAL pause logic on output threads with\nHW A/V sync preventing the HAL to enter standby when\nthe audio track is stopped and detroyed.\n\nBug: 19980184.\n\nChange-Id: Ia497dad23159038b447fcbc18a67bb61b70b79cc\n"
    },
    {
      "commit": "ae9710473b88592c557488bfcae71616d9e9b75f",
      "tree": "40878341868ee948401ae73696fa857d1ce7a156",
      "parents": [
        "40272963eb8f8d8d7a1f39e6a25ae73bc755e553",
        "062e67a26e0553dd142be622821f493df541f0c6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Mar 24 22:51:26 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 22:51:26 2015 +0000"
      },
      "message": "Merge \"AudioFlinger: call SPDIF wrapper from AudioFlinger\""
    },
    {
      "commit": "062e67a26e0553dd142be622821f493df541f0c6",
      "tree": "125d28264adfc5b7bd993bb343569eea63bfb95d",
      "parents": [
        "21b51b61ee52e6aa74d98b138d3dd4f0e17b1441"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 11 13:40:50 2015 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Mar 24 13:24:18 2015 -0700"
      },
      "message": "AudioFlinger: call SPDIF wrapper from AudioFlinger\n\nCreate an interface layer between the AudioFlinger and the HAL\nthat manages the wrapping and format conversion.\n\nRemoved unnecessary includes.\nHandle rate conversion in getRenderPosition().\nTry to open HAL with encoded format before wrapping with SPDIF.\n\nBug: 17566660\nChange-Id: I00ad888ca15ff0f85b85efb8167c7f5ea761a244\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "b7fbf7ecc6b034243ec64f79f3113675b5e3c941",
      "tree": "c90e057b2756c80dd371adc82e5431bb6e044236",
      "parents": [
        "4c36d6f48f4eecacc148317f775f65961a4f03d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 18 12:57:28 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 14:50:42 2015 -0700"
      },
      "message": "AudioRecord TRANSFER_OBTAIN can be used with FAST flag\n\nChange-Id: I001ba1a88150dddf79d99baf5927f31799745eef\n"
    },
    {
      "commit": "d198b85a163330b03e7507c9e8bfeb5f4d958a6c",
      "tree": "0c682560d50acec9efeca2a1d706b3a09c6ecdc5",
      "parents": [
        "0e4421286b92a81e952f53210227adbf05d97c25"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 16 14:55:53 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:41 2015 -0700"
      },
      "message": "Fix typos\n\nFix typos in comments\nAdd formal parameter name to declaration where it was missing\nFix out of order comments\n\nChange-Id: I1de81ae82af5ca507864e4c7b959111bac898b98\n"
    },
    {
      "commit": "5a23aa949188fafe1d8d35966ff5a73974294dfd",
      "tree": "51100d1057123aa3d7b6fd40a54c2b5611a82172",
      "parents": [
        "d58b2ac7244a964caa3f4e386b8280ae2f5d2125",
        "17c9c998afed5ed9df7495eeed5822f3ed53ebec"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 19 14:49:46 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 19 14:49:47 2015 +0000"
      },
      "message": "Merge \"Initial implementation of fast capture dump\""
    },
    {
      "commit": "b4f18f964cba9f124e5a264428290ada6eb4aa00",
      "tree": "758ad996c40893bbb89b04b248f2cb28e35dc448",
      "parents": [
        "172e2c5a41275efbd5a9c343fa8b8c4c653061b4",
        "1dfe2f9c2d03fc8d0ed0cdfe0b9fb894bc0bcc11"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 21:34:23 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 09 21:34:24 2015 +0000"
      },
      "message": "Merge \"Allow TRANSFER_OBTAIN to be used for fast tracks\""
    },
    {
      "commit": "1dfe2f9c2d03fc8d0ed0cdfe0b9fb894bc0bcc11",
      "tree": "1863bd0a9a9d1c0a0ab2055e345d9f86b9986151",
      "parents": [
        "b46f394a85d704dd05287cf9bb77cf86e3c02a38"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 12:03:14 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 14:19:35 2015 -0700"
      },
      "message": "Allow TRANSFER_OBTAIN to be used for fast tracks\n\nChange-Id: I8fa20c26f076567b38210af4a680fe1cb2eacee4\n"
    },
    {
      "commit": "17c9c998afed5ed9df7495eeed5822f3ed53ebec",
      "tree": "9b146046584a7093410ecb23b1265d770383c376",
      "parents": [
        "44182c206f7c5584ef2cf504da6be98fab665dbf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 15:53:01 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:35:19 2015 -0800"
      },
      "message": "Initial implementation of fast capture dump\n\nChange-Id: I898d903e539f760ef7caa80f41ca21c223f67264\n"
    },
    {
      "commit": "44182c206f7c5584ef2cf504da6be98fab665dbf",
      "tree": "6b3c4134c8cdd0d92aff4f917dfa3134c2c43bf4",
      "parents": [
        "0b89bc0d285b8fd4798df1ff0ba9f93851a3bd48"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 17:12:23 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:31:03 2015 -0800"
      },
      "message": "Dump generic information first for each thread\n\nalso mBufferSize was already being displayed as part of dumpBase\n\nChange-Id: I17f3062fcc076c594b5fd6b8fca286b27067e07c\n"
    },
    {
      "commit": "0b89bc0d285b8fd4798df1ff0ba9f93851a3bd48",
      "tree": "9c7813d20bf4cd16d9cec1ae464877432751703e",
      "parents": [
        "d7dca050c630bddbd73a6623271b34b4290460ee"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 16:37:47 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:29:51 2015 -0800"
      },
      "message": "Display more fields in thread dumpBase\n\nChange-Id: Ice15e999dda2f6cf9d23685ade4a87f74180322d\n"
    },
    {
      "commit": "d7dca050c630bddbd73a6623271b34b4290460ee",
      "tree": "c95d8f92b3fcaa95a712f862486bc07589ac746f",
      "parents": [
        "bcb1486d052e329ae4790d93055d1c51017286c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 16:05:54 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:23:25 2015 -0800"
      },
      "message": "Rename mName to mThreadName and kNameLength to kThreadNameLength\n\nChange-Id: I0adfcdcab7923a07a840ec0e04528cb8bfc41f10\n"
    },
    {
      "commit": "bcb1486d052e329ae4790d93055d1c51017286c3",
      "tree": "27c26a78aea2bfe71a07b61543b4a488e422a4e0",
      "parents": [
        "2f55e7632dfa0dafde58efd8cb2af6593217fd91"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 17:11:21 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:23:23 2015 -0800"
      },
      "message": "Whitespace\n\nswitch indent\n\nChange-Id: I652c798dd37a80634d247c4d881fb1cce92c4bd6\n"
    },
    {
      "commit": "0f5b562737d6b5457aa83a4fdce9c6fb32584d9d",
      "tree": "a3d8ffcaf5015d9d66ef5a3f10c7d13bbb278e94",
      "parents": [
        "6ffc14ab6b43d4239f5adb4e6c642b7875d26432"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 18 14:33:30 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:16:41 2015 -0800"
      },
      "message": "Add devicesToString, inputFlagsToString, and sourceToString\n\nChange-Id: I0c09d76c204ffc5579f62d2ed1faef07922a5962\n"
    },
    {
      "commit": "dfb0e115d827887e2f56a8877fe41b256d24360e",
      "tree": "6a43958eaf694d463f19a68193d37e285d548beb",
      "parents": [
        "e8c9a8f78a9f9213060e5d54a15cde364df3e0d0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 18 14:33:39 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 17:33:48 2015 -0800"
      },
      "message": "Fix typo in string table\n\nChange-Id: Iaf3d3c77129c62cf3dcad21fc754f390eb43b28e\n"
    },
    {
      "commit": "fbdb2aceab7317aa44bc8f301a93eb49e17b2bce",
      "tree": "97defd36379d3d4770dbd02dbacf046084889761",
      "parents": [
        "63238efb0d674758902918e3cdaac322126484b7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 14:47:19 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 03 08:50:40 2015 -0800"
      },
      "message": "Pull up increaseSamplingN and kSamplingNforLowRamDevice\n\nfrom FastMixerDumpState to FastThreadDumpState, and remove unused parameter\nfrom FastMixerDumpState constructor.\n\nChange-Id: Ib8937b106622a8da28a6ef6043de4528ae82cb05\n"
    },
    {
      "commit": "63238efb0d674758902918e3cdaac322126484b7",
      "tree": "07fdf37a2bc73a886d8ea41f69e722ed914754af",
      "parents": [
        "d7e1d08c2ac21cdd2f3b7f83fec7094f6a98fc08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 15:50:29 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 03 08:50:40 2015 -0800"
      },
      "message": "Remove redundant semicolon from namespace closing\n\nChange-Id: I163f9d3d216c283ae1160ce4802e5247cf44fba7\n"
    },
    {
      "commit": "d797a9d5daad3051f9ac1d348abc2f434ea3ddcf",
      "tree": "ce8626ab8016e1d162c2adcb14bbf2e3d9731267",
      "parents": [
        "214b406c813e5baca3e4b5cdc1d986de35f09bbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 14:19:25 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 14:50:26 2015 -0800"
      },
      "message": "Fix compile error if FAST_THREAD_STATISTICS not defined\n\nChange-Id: I3a4ac558e61ad956a7a6e325534e722066e49b2f\n"
    },
    {
      "commit": "d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634",
      "tree": "6e1effbb661cd90a1c09aed0db9cc44cedaf1544",
      "parents": [
        "9060199701c97b290aa4a4184d147e0311ab8897",
        "0e48d25606c82def035ad10a5b3923767a765cdd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 28 00:38:24 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 28 00:38:25 2015 +0000"
      },
      "message": "Merge \"Change AudioTrack resampling buffers from 3 to 2\""
    },
    {
      "commit": "ad8510a339ffab330c2c46e5c247dd1cf9e15c22",
      "tree": "f8643e6711ce756876c02cbb2c0ed4ed459c6187",
      "parents": [
        "04333cdc8d6a3c8e4a11835371e8ad13adf3f7f0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 17 16:24:07 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 19 09:47:41 2015 -0800"
      },
      "message": "Include what you use\n\nChange-Id: I1967861f383bb5ed6743fb69e3bd439907ed7033\n"
    },
    {
      "commit": "0e48d25606c82def035ad10a5b3923767a765cdd",
      "tree": "2811d0042ca0c670bb6fb9cffa83b82de33f8ff8",
      "parents": [
        "c42ab4fcd42875ef74f8e9b8d8150f7bcfd0cd3b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 26 11:43:15 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 06 11:51:26 2015 -0800"
      },
      "message": "Change AudioTrack resampling buffers from 3 to 2\n\nMove computation of minimum AudioTrack buffer size to server\nfor normal streaming PCM tracks.\n\nUse server-side computation to exactly determine requirements\nfor the resampler to avoid triple buffering.\n\nThis reduces latency for normal audio tracks that require resampling,\nand makes things consistent with the minimum buffer size.\n\nChange-Id: I2f2ca0e599ee20e16559bc5c5dab61ed100da16c\n"
    },
    {
      "commit": "dce27d0ebab31e82543bb777ed3eb04955cd18ff",
      "tree": "f3dcc003f0c96b18d74c46547c10ef819e083b07",
      "parents": [
        "2d2bd6af573383bced45e2f610e11193e28fdcdb",
        "fbfc3959f4aac839445edc7075532067fef497c2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Jan 17 01:36:52 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 17 01:36:52 2015 +0000"
      },
      "message": "Merge \"Update duplicating thread to use float audio\""
    },
    {
      "commit": "2d2bd6af573383bced45e2f610e11193e28fdcdb",
      "tree": "9adcafb234c0c027683f08538322e0fa0fa601aa",
      "parents": [
        "50870c983127f2c9e0a3c04a46ea7c24ad2271cf",
        "c25b84abdd7ff229d0af663fbf3a37bd9512939d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 16 21:17:12 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 16 21:17:12 2015 +0000"
      },
      "message": "Merge \"Allow duplicating thread to use native mixing audio format\""
    },
    {
      "commit": "fbfc3959f4aac839445edc7075532067fef497c2",
      "tree": "75c11d45346280301eb7206d7189881c523fddf3",
      "parents": [
        "c25b84abdd7ff229d0af663fbf3a37bd9512939d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 15 13:33:51 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 15 18:18:27 2015 -0800"
      },
      "message": "Update duplicating thread to use float audio\n\nPreviously device format was used, typically pcm 16 bit.\n\nChange-Id: I70a8b594820e948a2caa299194807ec17348b0e9\n"
    },
    {
      "commit": "c25b84abdd7ff229d0af663fbf3a37bd9512939d",
      "tree": "f6b95e15432dfac6410a1c61bd34e1f8aacdbb3e",
      "parents": [
        "abdb990953ffe94a9dc544aea0bed17ef7d5f484"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 14 19:04:10 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 15 16:57:42 2015 -0800"
      },
      "message": "Allow duplicating thread to use native mixing audio format\n\nUpdate OutputTrack to take variable formats.\nPreviously conversion to AUDIO_FORMAT_PCM_16_BIT was required.\n\nChange-Id: I4a96a60ddd8d8dfe651405a0bcd4f98c89bc1ade\n"
    },
    {
      "commit": "81879df8dc51df4d8a3880349e9e1e6b5e3cebfb",
      "tree": "920af202ad4576e997a540bfc98479aa97b2a0e2",
      "parents": [
        "197f84845ccea9319a1589b85edeb2dcf56b81b3",
        "69158e3e7b565a5ca131a2efaa9b76615ca80cbb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 07 16:02:57 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 07 16:02:57 2015 +0000"
      },
      "message": "am 69158e3e: am 6ab33981: am 610255e8: Merge \"audioflinger: pause HW A/V sync output when AudioTrack underruns\" into lmp-mr1-dev\n\n* commit \u002769158e3e7b565a5ca131a2efaa9b76615ca80cbb\u0027:\n  audioflinger: pause HW A/V sync output when AudioTrack underruns\n"
    },
    {
      "commit": "69158e3e7b565a5ca131a2efaa9b76615ca80cbb",
      "tree": "4dfbea14cb9503808fab3f532c1335d457142e40",
      "parents": [
        "644afb88421ac0e71d526f9b6726404a90c7cccd",
        "6ab33981d45cd69e683a143fec6530e66bd3e371"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 07 15:57:49 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 07 15:57:49 2015 +0000"
      },
      "message": "am 6ab33981: am 610255e8: Merge \"audioflinger: pause HW A/V sync output when AudioTrack underruns\" into lmp-mr1-dev\n\n* commit \u00276ab33981d45cd69e683a143fec6530e66bd3e371\u0027:\n  audioflinger: pause HW A/V sync output when AudioTrack underruns\n"
    },
    {
      "commit": "b187de1ada34a9023c05d020a4592686ba761278",
      "tree": "31dea84d078f6198ce17ca856fcbb76c402f37b6",
      "parents": [
        "64cbdee08a18b25448a5fb0b058d3b83d5630d7f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 30 08:18:15 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 30 08:18:15 2014 -0800"
      },
      "message": "Line length 100\n\nChange-Id: I6c8fe626a3825fa9e139319656d682a57b887c97\n"
    },
    {
      "commit": "0f7b5f2b231caf87da9b20b74d086e5a9d6f4a9d",
      "tree": "f6f15345f054cdc13116a1443b80454e256b7c71",
      "parents": [
        "e48cf5b8f823c30af93577c1e380d752ac69b871"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 10:43:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 16:41:52 2014 -0800"
      },
      "message": "audioflinger: pause HW A/V sync output when AudioTrack underruns\n\nDo not standby, starve or feed 0s to the audio HAL on direct\noutput using HW A/V sync mode.\n\nBug: 17883772.\n\nChange-Id: I11e6c97ec24360d75f9b602814d40a54b60cb7a7\n"
    },
    {
      "commit": "23c8dc13787186dc98731055858b2fba3aedc105",
      "tree": "08ed5ebd4244095641a3d7494e9dab6b6d471eb5",
      "parents": [
        "c30943f7485fa84a32e7d070234b3def692d9d16",
        "85aca658ac7d20584b0647427256df50a5f243ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 17 18:08:04 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 17 18:08:04 2014 +0000"
      },
      "message": "am 85aca658: am d33712d7: am 145cf5d8: Merge \"audioflinger: implement pause/resume for direct outputs\" into lmp-mr1-dev\n\n* commit \u002785aca658ac7d20584b0647427256df50a5f243ef\u0027:\n  audioflinger: implement pause/resume for direct outputs\n"
    },
    {
      "commit": "85aca658ac7d20584b0647427256df50a5f243ef",
      "tree": "0a368cd14a99953de3943fa6f43334a8aea9f19f",
      "parents": [
        "22dfb93254de370d401706728aba1f032ef1b172",
        "d33712d7ec5dcf427cc0be9b7d2ca1c99823c8e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 17 18:04:15 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 17 18:04:15 2014 +0000"
      },
      "message": "am d33712d7: am 145cf5d8: Merge \"audioflinger: implement pause/resume for direct outputs\" into lmp-mr1-dev\n\n* commit \u0027d33712d7ec5dcf427cc0be9b7d2ca1c99823c8e6\u0027:\n  audioflinger: implement pause/resume for direct outputs\n"
    },
    {
      "commit": "d1f69b0b17acbd96987ecb2f3378abd394d05903",
      "tree": "e3061c609dfaa2c217bb79a8d85e4571e8bd0d3d",
      "parents": [
        "8ddb02230d02968d471aa41b22433957c38827c0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 15 14:33:13 2014 -0800"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Tue Dec 16 01:38:34 2014 +0000"
      },
      "message": "audioflinger: implement pause/resume for direct outputs\n\nExtend pause/resume support to direct output threads\n(was only for offload threads).\n\nIf the HAL implements pause/resume, track pause/resume is forwarded to\nthe HAL.\n\nPause, flush, resume sequence is respected by executing the HAL\ncalls in the playback thread (same as offload).\n\nMake sure the track flags on client side are consistent with the\nflags on server side.\n\nBug: 17883772.\nChange-Id: I89b360d69818f7a9204bd36e3ec63a79e106ecf1\n"
    },
    {
      "commit": "65575de268f4c0d75e6c1172469001ace765fc14",
      "tree": "fe1df7262459e2a7a1b86e60389cbec35a62b698",
      "parents": [
        "9ae34ec4f2a78d98643cf8428cd8eafdc48e6245",
        "2592184c976ef83aa9fdad7d63bfdb408c95aa7d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 11 16:21:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 11 16:21:43 2014 +0000"
      },
      "message": "am 2592184c: am 6baa8fe7: am 94a92c69: Merge \"[audio][audioflinger] Consume all frames when a DirectThread is done.\" into lmp-mr1-dev\n\n* commit \u00272592184c976ef83aa9fdad7d63bfdb408c95aa7d\u0027:\n  [audio][audioflinger] Consume all frames when a DirectThread is done.\n"
    },
    {
      "commit": "2592184c976ef83aa9fdad7d63bfdb408c95aa7d",
      "tree": "044c942ccc4dbe4b51dbc3312af4dc22923650b9",
      "parents": [
        "b6ac4d49e468e155aa1591f3c400e1c06442e7b1",
        "6baa8fe747621b7121ff18dcdfab15d99c349c15"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 11 16:11:49 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 11 16:11:49 2014 +0000"
      },
      "message": "am 6baa8fe7: am 94a92c69: Merge \"[audio][audioflinger] Consume all frames when a DirectThread is done.\" into lmp-mr1-dev\n\n* commit \u00276baa8fe747621b7121ff18dcdfab15d99c349c15\u0027:\n  [audio][audioflinger] Consume all frames when a DirectThread is done.\n"
    },
    {
      "commit": "94a92c69af528edf6ec17d7978a0c3bb6ab51e63",
      "tree": "409f45229ea21089bdfb2aadd131288383581b07",
      "parents": [
        "f484952edd94c1b7ee82d7b108edc1ce08671cc4",
        "99adee3c3d9cde6819741a38163954808fea270a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 11 01:59:39 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 11 01:59:40 2014 +0000"
      },
      "message": "Merge \"[audio][audioflinger] Consume all frames when a DirectThread is done.\" into lmp-mr1-dev"
    },
    {
      "commit": "99adee3c3d9cde6819741a38163954808fea270a",
      "tree": "b877a4a43bd36864d8109a42ecdc6b337e6838d1",
      "parents": [
        "9257000c453c1a6f6bf073ff0bf3ba7ef9baf183"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 10 16:46:30 2014 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 10 17:00:18 2014 -0800"
      },
      "message": "[audio][audioflinger] Consume all frames when a DirectThread is done.\n\nThis bug was causing movies to think there was still data left to play so they never finished.\n\nBug: 18360054\nChange-Id: If7aee81d62b7af8532abd14579677848a06fe2b1\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "b67eb5856203e9869aa1e5b5a13c1eff62790335",
      "tree": "7206b055805ef953e85b9157f6472e8f97c7584f",
      "parents": [
        "e62e2637458931d20623b76d0080a56c2f316334",
        "b279f5adfa2fd6f22c87b3a7106fbb62a0b9a5d2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 10 22:23:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 10 22:23:26 2014 +0000"
      },
      "message": "am b279f5ad: am c49d9cda: am 2dda40d6: Merge \"audio policy: add support for custom mixes\" into lmp-mr1-dev\n\n* commit \u0027b279f5adfa2fd6f22c87b3a7106fbb62a0b9a5d2\u0027:\n  audio policy: add support for custom mixes\n"
    },
    {
      "commit": "b279f5adfa2fd6f22c87b3a7106fbb62a0b9a5d2",
      "tree": "3e53a23fbf31379eab4d76b68af9f6b20b4c7e0c",
      "parents": [
        "a2bc118cfe860f9c108ba089b021d3b003185c56",
        "c49d9cda49dab8b7dd0376cf56476b3e1895d5c6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 10 21:55:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 10 21:55:52 2014 +0000"
      },
      "message": "am c49d9cda: am 2dda40d6: Merge \"audio policy: add support for custom mixes\" into lmp-mr1-dev\n\n* commit \u0027c49d9cda49dab8b7dd0376cf56476b3e1895d5c6\u0027:\n  audio policy: add support for custom mixes\n"
    },
    {
      "commit": "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c",
      "tree": "c22e1c0b8541aa04fd6c8d803e4fa6704a84e6e2",
      "parents": [
        "82a69ea8b090d57bff5e02774688b546a711bbb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Nov 30 15:14:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:19 2014 -0800"
      },
      "message": "audio policy: add support for custom mixes\n\nAdd support for custom mixes in AudioPolicyManager.\n\nTwo methods are added to register or unregister a list of custom mixes\nwith their attributes and format.\n\ngetOutputForAttr() and getInputForAttr() first look for a match in\nregistered mixes before defaulting to normal output/input selection\n\nRemote submix device connection disconnection now takes address into\naccount to identify the correspnoding custom mix.\n\nBug: 16009464.\n\nChange-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408\n"
    },
    {
      "commit": "f849e1984ae639112e125a91e27098cf0ebc68c1",
      "tree": "4eea9fd5416a58567491624048663ae5263fc2da",
      "parents": [
        "5a246de63468f2da0e6e6250a001da0dcefded4e",
        "900f6535af232298e4a77477907a40f68e8dc61b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 09 00:57:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 00:57:40 2014 +0000"
      },
      "message": "am 900f6535: am 561f50de: am db995fe3: Merge \"Fix getTimestamp if offload thread is not initialized.\" into lmp-mr1-dev\n\n* commit \u0027900f6535af232298e4a77477907a40f68e8dc61b\u0027:\n  Fix getTimestamp if offload thread is not initialized.\n"
    },
    {
      "commit": "900f6535af232298e4a77477907a40f68e8dc61b",
      "tree": "73e79999d2cd094243eecc48eaf18e1809072aa1",
      "parents": [
        "4eb26aa2b549aef5a2e0863a95a5cd2c1138cd7b",
        "561f50de82ce47f11ba8d4f25db1ca1d8467b2a7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 08 19:13:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 08 19:13:54 2014 +0000"
      },
      "message": "am 561f50de: am db995fe3: Merge \"Fix getTimestamp if offload thread is not initialized.\" into lmp-mr1-dev\n\n* commit \u0027561f50de82ce47f11ba8d4f25db1ca1d8467b2a7\u0027:\n  Fix getTimestamp if offload thread is not initialized.\n"
    },
    {
      "commit": "9a1c8892f6835325db6931529dc74bf98cf0aee8",
      "tree": "8b6d6b4dcaf964cf16c68bdc5080239126d2caac",
      "parents": [
        "ab05b4ccb8ea59079d7f773aa0e090029c479bad"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 03 11:37:42 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 03 16:12:35 2014 -0800"
      },
      "message": "Fix getTimestamp if offload thread is not initialized.\n\nReturns INVALID_OPERATION.\n\nBug: 18605649\nChange-Id: I440fb687fbf9249098e049982fa83bcd1515fd80\n"
    },
    {
      "commit": "3458bb2356e711419487056fe1dd474e100466a3",
      "tree": "1373847b3427ae0d27b5a178e4bcf3ad43e5970e",
      "parents": [
        "127d79425e668077baf1edbbfe80b344f522b7a6",
        "121143d5242a790d0bd01fe1b9cec5d28a1ba1d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 19:57:31 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 19:57:31 2014 +0000"
      },
      "message": "am 121143d5: am bf14c62e: am 72bf901c: Merge \"audio policy: new getOutputForAttr() prototype.\" into lmp-mr1-dev\n\n* commit \u0027121143d5242a790d0bd01fe1b9cec5d28a1ba1d7\u0027:\n  audio policy: new getOutputForAttr() prototype.\n"
    },
    {
      "commit": "121143d5242a790d0bd01fe1b9cec5d28a1ba1d7",
      "tree": "ede3e199b33b12c6c5767f2bd566e4664905bada",
      "parents": [
        "0e47b16ffcf78acb81b0ebf14d058db191f74af0",
        "bf14c62e7973ed793a3b00c2c67beca4484c1c7a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 18:41:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 18:41:26 2014 +0000"
      },
      "message": "am bf14c62e: am 72bf901c: Merge \"audio policy: new getOutputForAttr() prototype.\" into lmp-mr1-dev\n\n* commit \u0027bf14c62e7973ed793a3b00c2c67beca4484c1c7a\u0027:\n  audio policy: new getOutputForAttr() prototype.\n"
    },
    {
      "commit": "3a3e87005fdfbfe4564605220a044b8023d0f539",
      "tree": "657e4b6b3ca4d8d7030333975203c91a895b30dd",
      "parents": [
        "5ecbdf58b0674ac4a8b9d56b49ebeb1033e5bd27",
        "72215491c60fbcdb9a2f0be782e24e39cca249c5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 12:10:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:10:00 2014 +0000"
      },
      "message": "am 72215491: am 1a475921: am 223fd5c9: audio: new routing strategies and stream types\n\n* commit \u002772215491c60fbcdb9a2f0be782e24e39cca249c5\u0027:\n  audio: new routing strategies and stream types\n"
    },
    {
      "commit": "72215491c60fbcdb9a2f0be782e24e39cca249c5",
      "tree": "ac366bd0aad25d9575b19f77a75f23518a8810e8",
      "parents": [
        "fd2711ca8c9108d25f18b48b924afd925f41344a",
        "1a475921c0577a4650d1bbe40a85b732d1766939"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 12:01:49 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:01:49 2014 +0000"
      },
      "message": "am 1a475921: am 223fd5c9: audio: new routing strategies and stream types\n\n* commit \u00271a475921c0577a4650d1bbe40a85b732d1766939\u0027:\n  audio: new routing strategies and stream types\n"
    },
    {
      "commit": "e83b55dc29ca16092ba02f36f55fa6e0e37fd78c",
      "tree": "f8232611b6372b74579e3ed03dfbeb167011d257",
      "parents": [
        "0f78eabb733e1413d7febd00c0bad0f0add02314"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 14 10:06:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 12:48:19 2014 -0800"
      },
      "message": "audio policy: new getOutputForAttr() prototype.\n\nUpdate getOutputForAttr() prototype and group all logic\ndealing with audio attributes to stream type conversion in\naudio policy manager.\n\ngetOutputForAttr():\n- specifies the audio session (for future use)\n- returns a status code\n- receives either stream type (for legacy) or audio attributes\n- returns an updated streamtype\n\nRemove logic dealing with legacy stream types to attributes conversion\nfrom AudioTrack.\n\nUse correct type for audio sessions in other APIs (startOutput() ...).\n\nreleaseOutput() specifies the audio session (for future use).\n\nBug: 18067208.\n\nChange-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817\n"
    },
    {
      "commit": "223fd5c9738e9665e495904d37d4632414b68c1e",
      "tree": "33e0afab9a7479cdc4c688a742a8977c8ead21e4",
      "parents": [
        "bc0f452b9a76dd8c8244e775bc9c5aa85cae3ddf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 11 13:43:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 21 10:41:13 2014 -0800"
      },
      "message": "audio: new routing strategies and stream types\n\nAdded new routing strategies and stream type for internal use\nby audio policy manager and audio flinger:\n- One for accessibility to allow different routing than media\n- One for re-routing (remote submix) in preparation of dynamic\npolicies\n- Added stream type for \"internal\" audio flinger tracks used\nfor audio patches and duplication.\n\nBug: 18067208.\nChange-Id: I88f884b552e51e4a49c29125e5a1204cf58ff434\n"
    },
    {
      "commit": "994242df089e1abbd7d1d21d8183b4ad32710948",
      "tree": "f1d9f618e7bd1aab810cdcabb093356d48a8cea3",
      "parents": [
        "8518168a1bdb81e56f4324a72224a724337a5844",
        "c63c09738772133e9b20a7c8576ad116ff855ee2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 21 02:57:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 21 02:57:55 2014 +0000"
      },
      "message": "am c63c0973: am f50db74f: Merge \"Fix format conversion in DuplicatingThread\" into lmp-mr1-dev automerge: d48f1b6\n\n* commit \u0027c63c09738772133e9b20a7c8576ad116ff855ee2\u0027:\n  Fix format conversion in DuplicatingThread\n"
    },
    {
      "commit": "c63c09738772133e9b20a7c8576ad116ff855ee2",
      "tree": "2ab99e4bc77c0dd3e7b01f5679b43d5a6d808f76",
      "parents": [
        "f108dc85443936ca219567cc3a8556daa4a20fb3",
        "d48f1b68b2b824ffcfdbf6aa67ad4696020a8a11"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 21 02:45:58 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 21 02:45:58 2014 +0000"
      },
      "message": "am f50db74f: Merge \"Fix format conversion in DuplicatingThread\" into lmp-mr1-dev\nautomerge: d48f1b6\n\n* commit \u0027d48f1b68b2b824ffcfdbf6aa67ad4696020a8a11\u0027:\n  Fix format conversion in DuplicatingThread\n"
    },
    {
      "commit": "3dd2eb810af471df146cb16a680b1b0ca7364be5",
      "tree": "2ab99e4bc77c0dd3e7b01f5679b43d5a6d808f76",
      "parents": [
        "30e0138abb68adb246e610ac5e7d8c5807dacc4a",
        "d48f1b68b2b824ffcfdbf6aa67ad4696020a8a11"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 21 02:43:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 21 02:43:17 2014 +0000"
      },
      "message": "am d48f1b68: am f50db74f: Merge \"Fix format conversion in DuplicatingThread\" into lmp-mr1-dev\n\n* commit \u0027d48f1b68b2b824ffcfdbf6aa67ad4696020a8a11\u0027:\n  Fix format conversion in DuplicatingThread\n"
    },
    {
      "commit": "ec0eeafa8a7fd882e8206e9cf8c4c7e1db81857b",
      "tree": "a40aab7cb04a88cc63a45cffa376ec12ce5bc3b9",
      "parents": [
        "ec9459c63d1c2969505ffdc4a100646fd07223bd"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Nov 20 11:32:27 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 20 13:04:15 2014 -0800"
      },
      "message": "Fix format conversion in DuplicatingThread\n\nDuplicatingThread converts PCM data from the format of the source thread\nto PCM_16BIT before writing to all connected output tracks.\nThis needs to be done just once before writing to all tracks.\n\nBug: 18461844\nChange-Id: If05254f87f9198e09a0fa3c4e857afbb53ae7073\n"
    },
    {
      "commit": "77e79a509d19ab50b1867fe3903b5a8fae450591",
      "tree": "881d068bdc54d4835665e48649165f07393caafa",
      "parents": [
        "575174d62b665900203d70a4d410329b8918c2af",
        "e78a27ca9c701aa996eee0e47fa26dd69d80ffcf"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 17 10:50:55 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 17 10:50:55 2014 -0800"
      },
      "message": "resolved conflicts for merge of e78a27ca to lmp-mr1-dev-plus-aosp\n\nChange-Id: If10a9cc17245f95d5e10b1507445abbb4020670e\n"
    },
    {
      "commit": "f888020c6e2735624f2b2a30e72aca24e17b8b4d",
      "tree": "76d92b7a91a4bebd4e84d6afdc2ef4a2e4943df8",
      "parents": [
        "d02641098b16df2fd4cd32b72a30eb6f3b64e12b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 07:58:25 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 17 10:05:07 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a\n\nConflicts:\n\tmedia/libmedia/IAudioFlinger.cpp\n\tmedia/libmedia/IMediaPlayer.cpp\n\tmedia/libstagefright/CameraSource.cpp\n"
    }
  ],
  "next": "06b46062d2f8bc82ca3061a23d197734ae51918b"
}
