)]}'
{
  "log": [
    {
      "commit": "9dbe9a57bf0ae2494ec312d6c1b06feec20e9ec9",
      "tree": "cd5c27963da0e52e42efe6bb0a5e8d97b6af6f41",
      "parents": [
        "a146a0c499e53a4f064777ab2b45407c14429fa0"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Jan 03 11:35:15 2017 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Sat Feb 18 00:57:33 2017 +0000"
      },
      "message": "MediaCas: add MediaCasService\n\nThis CL adds API only without implementation.\n\nbug: 22804304\nChange-Id: Ibb5a29cc616ec0af81957b2bfe1419c482591753\n"
    },
    {
      "commit": "cd01db5572f07e30c8b0b08e8b50b89c69ae14c1",
      "tree": "97b959d2f94653960859cdd5222e58446b7f9a7c",
      "parents": [
        "ea42da480ddd116cb70f2c8a7642df7c12b996af",
        "3cb5316c442d182ada75a1394e1505a017400526"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 17 23:30:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 23:30:16 2017 +0000"
      },
      "message": "Merge \"Support multiple codecs per crypto instance\""
    },
    {
      "commit": "ea42da480ddd116cb70f2c8a7642df7c12b996af",
      "tree": "a1acf6c39eb4ff9c9cea984bca17ade294937405",
      "parents": [
        "c0a3f679109769d8fb43b66fccbe47f8c505d12e",
        "ac4e4189db77dc0af7671b162d11be5ccec69339"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Feb 17 22:39:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:39:36 2017 +0000"
      },
      "message": "Merge \"Media metrics for android.media.MediaRecorder\""
    },
    {
      "commit": "c0a3f679109769d8fb43b66fccbe47f8c505d12e",
      "tree": "295739e8105bab75348d97544fca85d6e1d95008",
      "parents": [
        "0e701fd27a2daad2eadf83f904c68a418f93cf92",
        "13a926879249276771b0097538459c7550e2f5ce"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 17 22:26:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:26:19 2017 +0000"
      },
      "message": "Merge \"Use hidl.allocator for IAllocator.\""
    },
    {
      "commit": "0e701fd27a2daad2eadf83f904c68a418f93cf92",
      "tree": "1366c91c9df6dddc28c098e8d57e8009f673cd4c",
      "parents": [
        "c01ea695f5e55137834b5217c30ff71dccfcc989",
        "bc1713d3b85d7ce656e032da6e4b6b342f14db03"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 17 22:21:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:21:03 2017 +0000"
      },
      "message": "Merge \"fallout of splitting rect.h out of libandroid.\""
    },
    {
      "commit": "c01ea695f5e55137834b5217c30ff71dccfcc989",
      "tree": "998b024e0cbec3a4f3262956584d342379cfe944",
      "parents": [
        "ccaeb5f08d037cc0ec7a9ab69bf03364b3fad452",
        "cd5dd016657b351d9c74dcdff87547a781108ccb"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 17 22:08:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:08:37 2017 +0000"
      },
      "message": "Merge \"Implement entry iterators\""
    },
    {
      "commit": "3cb5316c442d182ada75a1394e1505a017400526",
      "tree": "cba6c593af42f45211dd149d66975c06b2185fa0",
      "parents": [
        "09b92c347ddcaf751571363e54a769eb4b95edd3"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Feb 16 12:06:32 2017 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 17 13:04:02 2017 -0800"
      },
      "message": "Support multiple codecs per crypto instance\n\nThe initial drm hidl hal implementation assumed one\ncodec per crypto instance, but in fact there can be\nmultiple codecs per crypto instance. This change\nextends the drm hal to allow multiple memory heaps\nper crypto plugin. It fixes the issue of mapping\nmemory frequently during playback.\n\nbug:35275191\n\nTest: manual verification with Play Movies on angler\nin passthrough mode and on marlin in binderized mode.\n\nChange-Id: Icada005f515483d7bc214b08caf6eea46ca354a7\n"
    },
    {
      "commit": "bc1713d3b85d7ce656e032da6e4b6b342f14db03",
      "tree": "df2747b33b188cf3b5af2505d1076984120ddc8d",
      "parents": [
        "87251eee475a53599b980334df777326fa8e1527"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 13 18:37:50 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 12:25:14 2017 -0800"
      },
      "message": "fallout of splitting rect.h out of libandroid.\n\nA lot of media makefiles didn’t specify libui or\nlibgui but included headers from these libraries\ndirectly. \n\nIt works because these headers are on the global\ninclude path. With this change, though, rect.h\nis not anymore (albeit exported from libui).\n\nTest: built and booted device\nBug: 35164655\nChange-Id: I72e8f0b7bd25c6a67eedc17afe52c4c484a147fe"
    },
    {
      "commit": "13a926879249276771b0097538459c7550e2f5ce",
      "tree": "dcf98d4122999450a70164d3ae6d3d2522c114d8",
      "parents": [
        "09b92c347ddcaf751571363e54a769eb4b95edd3"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 17 12:22:38 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 17 12:22:38 2017 -0800"
      },
      "message": "Use hidl.allocator for IAllocator.\n\nandroid.hidl.memory is being split into android.hidl.memory and\nandroid.hidl.allocator since the former is a passthrough hal and the\nlatter is a binderized service.\n\nBug: 35327976\nTest: hidl_test, lshal, youtube/camera works\nChange-Id: I7a2e72dcd3721d2689eb7ef95f5b140ecc1c446f\n"
    },
    {
      "commit": "87251eee475a53599b980334df777326fa8e1527",
      "tree": "046358b376d606a499d855d306c53a6cce53314f",
      "parents": [
        "d5973043bed640cf634a26d65dedcde5d5ab3037",
        "40a4498b967d000c93e8561db5fdd0488cc1d824"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 17 19:46:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 19:46:31 2017 +0000"
      },
      "message": "Merge \"Implement log merging.\""
    },
    {
      "commit": "8dc323ef737babc1b1c0b0347b4b895969aee77b",
      "tree": "4afdfab9a14f359bf13e87d9f120fb0363032049",
      "parents": [
        "ca8126c04c91b6b5030be2e2c8cff786c160faac",
        "c20cb50c1c14cd765874511872f087c875f43ed9"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 17 19:41:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 19:41:24 2017 +0000"
      },
      "message": "Merge \"Added process name to PID log\""
    },
    {
      "commit": "cd5dd016657b351d9c74dcdff87547a781108ccb",
      "tree": "7406a11b1a06b2abf94c72e216cb3810a4a15fc1",
      "parents": [
        "40a4498b967d000c93e8561db5fdd0488cc1d824"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Feb 13 12:09:28 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 17 11:27:56 2017 -0800"
      },
      "message": "Implement entry iterators\n\nSome code refactoring\n\nBug: 35329553\nTest: manual\nChange-Id: I06e4ac1207b5c707d663ab2f141bb08d80272642\n"
    },
    {
      "commit": "181fd9b5b64bab24bb49a34208f60a16e98488c5",
      "tree": "01f5f3e2cd59acbe4a3c7d92f09ff1f5418af206",
      "parents": [
        "42a5de6da0084fd430c70d58671559f71c738cf0"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Feb 16 15:53:03 2017 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Feb 17 03:06:13 2017 +0000"
      },
      "message": "stagefright: verbose logging for media connect/disconnect\n\nbug: 35364355\n\nChange-Id: I7b5f0aecf98733255cc27b091fea78298fa7e602\n"
    },
    {
      "commit": "40a4498b967d000c93e8561db5fdd0488cc1d824",
      "tree": "a95deb459b6b0ea0de8e711a0cb545c49eb33769",
      "parents": [
        "4da7820be451847bad698ac0f687b964d9b5d34f"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 03 13:39:57 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 16 17:04:01 2017 -0800"
      },
      "message": "Implement log merging.\n\nStill missing:\n * Put in separate periodical thread\n\nBug: 35329293\nTest: manual\nChange-Id: Ie8802fb7972e20d8dec493376ea253bb782f3a46\n"
    },
    {
      "commit": "42a5de6da0084fd430c70d58671559f71c738cf0",
      "tree": "f000de2274c93d2bc42ee4ef703940a1216568f6",
      "parents": [
        "9c47c97ecac581d66b6febafd156618247e86742",
        "764d945bfdb9dec60f2b482fbf6c5e83824ed950"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Fri Feb 17 00:26:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 00:26:05 2017 +0000"
      },
      "message": "Merge \"media: Support accurate pause/resume/stop in GraphicBufferSource.\""
    },
    {
      "commit": "764d945bfdb9dec60f2b482fbf6c5e83824ed950",
      "tree": "2967f3bc3b05f0fffd413b23f20049412d8910e7",
      "parents": [
        "4441393a9d9830de8b059b279127c6b558f194ba"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Tue Dec 13 13:07:45 2016 -0800"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Thu Feb 16 14:33:01 2017 -0800"
      },
      "message": "media: Support accurate pause/resume/stop in GraphicBufferSource.\n\nProcess all buffers that have been queued to the encoder on\nStagefrightRecorder::pause()/stop(). Furthermore, add timestamp support for\npause/stop. Buffers willi keep getting encoded until 1) a buffer with a higher\ntimestamp is queued, or 2) the bufferqueue is abandoned by the producer.\n\nTest: Recording with hacking GoogleCamera timestamp. And Mediarecorder CTS test.\nBug:32765698\nChange-Id: I9ec33d635aef269836d7a5d9f4b906cb41b46a0d\n"
    },
    {
      "commit": "c20cb50c1c14cd765874511872f087c875f43ed9",
      "tree": "4da5367ebd84ebeac6dd927d535a5b1dd84c79e4",
      "parents": [
        "2f77a2229be73b222098c45aed73728842667e12"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Wed Feb 01 12:35:24 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 16 14:22:16 2017 -0800"
      },
      "message": "Added process name to PID log\n\nBug: 35357686\nTest: included in CL\nChange-Id: Ie4d3cb66a2c766ce87ebabcc9c0d3aa988702e09\n"
    },
    {
      "commit": "9c47c97ecac581d66b6febafd156618247e86742",
      "tree": "c49b5394e42b293c0333754bf01c71d387227833",
      "parents": [
        "6ab6061131a10b7f38074c156fd529fa3719a32b"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Feb 08 04:09:38 2017 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Feb 16 11:16:06 2017 -0800"
      },
      "message": "Enable full migration of OMX to Treble.\n\n1. Toggling between Treble and non-Treble OMX will now be controlled by\ntwo properties: \"persist.hal.binderization\" and\n\"persist.media.treble_omx\". (Before this CL, this was controlled by\n\"debug.treble_omx\".)\n- If persist.media.treble_omx is not set, it will assume a default value\nof -1.\n- If persist.media.treble_omx is -1, persist.hal.binderization will be\nused to determine whether OMX will be created as a Treble or non-Treble\nservice.\n- If persist.media.treble_omx is 1, OMX will be created as a Treble\nservice.\n- If persist.media.treble_omx has any other value, OMX will be created\nas a non-Treble service.\n- persist.media.treble_omx can be changed without rebooting, but it will\nonly take effect after media.codec and mediaserver processes are killed.\n\n2. Remove all dependencies on non-Treble service. This was not done for\nMediaCodec, MediaPlayerService::Client, MediaRecorderClient, stagefright\ncommand, and omx_tests command. OMXClient and media.codec process will\nnow pick the right version of OMX based on properties mentioned above.\nBefore this CL, media.codec would always present the non-Treble version\nof OMX regardless of the flag.\n\n3. Provide workarounds for some HIDL issues.\n- A sequence of nested binder and hwbinder calls require many threads to\nhandle. (b/35283480) The workaround is to increase the number of threads\nin the thread pool of media.codec process.\n- android.hidl.base@1.0::IBase::unlinkToDeath takes a strong pointer\ninstead of a weak pointer. (b/35233970) This causes an infinite\nrecursion in the destructor of ServiceDeathNotifier in\nMediaPlayerService::Client and MediaRecorderClient. The workaround moves\ncalls to unlinkToDeath() outside of the destructor.\n\nTest: Recorded and played videos with Camera app. Ran stagefright and\nomx_tests commands.\nBug: 31399200\n\nChange-Id: Id1940ed982838e10bf10fe8ed5b7bb912a5a2d3a\n"
    },
    {
      "commit": "cefac14261a32fb856b0d1ab31541787112e306e",
      "tree": "d6fb3a4890929e05a5ffccc2d09c0b9da3d6bddc",
      "parents": [
        "2f77a2229be73b222098c45aed73728842667e12"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Mon Feb 06 21:02:02 2017 -0800"
      },
      "committer": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Wed Feb 15 18:15:37 2017 -0800"
      },
      "message": "Modular DRM for MediaPlayer\n\nBug:  34559906\nTest: Manual through the test app\n\nChange-Id: I286f9ff199c34563b7b8643de725f8d1534ea06c\n"
    },
    {
      "commit": "ac4e4189db77dc0af7671b162d11be5ccec69339",
      "tree": "7ab5eca97ac9179fc6218fb5e19cd396c4a43e6d",
      "parents": [
        "36b31c87807a4f8cd22e73da9bf2df7babdb906e"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sun Feb 12 19:26:52 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 15 10:21:12 2017 -0800"
      },
      "message": "Media metrics for android.media.MediaRecorder\n\nunderlying collection of MediaRecorder metrics for getMetrics() API\nand for media metrics cloud analysis.\n\nBug:  35150984\nTest: hacked CTS, observation of \u0027dumpsys media.metrics\u0027\nChange-Id: Ife2ab06158b0015549ed17d52d7f4c35781f5e0f\n"
    },
    {
      "commit": "30d48d9542fb3f85889108c1ee2daff98a4860e7",
      "tree": "b85955dd0493f049b91a5b4ab32527f39a4ba6e2",
      "parents": [
        "b129be34d1b08440d2867702b22e81c037be899a",
        "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 14 01:38:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 01:38:57 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Initial implementation\""
    },
    {
      "commit": "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0",
      "tree": "2d058e73f09f1822108daad51948a34c420634e3",
      "parents": [
        "ed1abbfc73d4ade0ef08239fc56ac66d70a00a92"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 24 13:36:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 14:31:46 2017 -0800"
      },
      "message": "VolumeShaper: Initial implementation\n\nThe VolumeShaper is used to apply a volume\nenvelope to an AudioTrack or a MediaPlayer.\n\nTest: CTS\nBug: 30920125\nBug: 31015569\nChange-Id: I42e2f13bd6879299dc780e60d143c2d465483a44\n"
    },
    {
      "commit": "7863c791dba8c4e5e9591b6837d410e580be0a25",
      "tree": "5199273fa3bac5303b0aa8dcdfd984f49f75e30f",
      "parents": [
        "94a20830fc0768efc138ab7f746f80e8b3d60c15",
        "6acd1d432f526ae9a055ddaece28bf93b474a776"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 10 20:24:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 20:24:22 2017 +0000"
      },
      "message": "Merge changes from topic \u0027mmap_no_irq\u0027\n\n* changes:\n  Add support for mmap stream\n  audioflinger: define MMAP HAL Stream control interface\n"
    },
    {
      "commit": "94a20830fc0768efc138ab7f746f80e8b3d60c15",
      "tree": "e163737cdd306819a8423dc7e8a42cf83b8a67fb",
      "parents": [
        "6bd0c13eaa13b089bbe414a05b0ed834c825d587",
        "032845cc878f538e3336c96e1c24668953eab971"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 10 20:04:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 20:04:59 2017 +0000"
      },
      "message": "Merge \"fallout of view::Surface / Surface split\""
    },
    {
      "commit": "032845cc878f538e3336c96e1c24668953eab971",
      "tree": "a2697cdbed6665b9de900200e4bbea86fa19d3b0",
      "parents": [
        "e2ce9366d1b138326035c643b7fec68cd2dc83c5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 08 17:05:02 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 09 23:07:17 2017 +0000"
      },
      "message": "fallout of view::Surface / Surface split\n\nTest: built and booted device\nBug: treble\nChange-Id: I022ebb581563463e93935da61a113087043dfeca\n"
    },
    {
      "commit": "551061ab211e1da0f060d7c895617814618da5c2",
      "tree": "f8010b47611e50cf67eada7498a66cdee1259579",
      "parents": [
        "e2ce9366d1b138326035c643b7fec68cd2dc83c5"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Feb 06 15:59:29 2017 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Feb 09 10:29:05 2017 -0800"
      },
      "message": "audiopolicy: Two clients can not offload concurrently\n\nIf two application are playing a compatible offload stream at the same\ntime.\nEg: two games playing MP3. At least one not taking the audio\nfocus.\n\nThe audio policy was offloading both stream resulting in audio glitches\nand one stream being dropped.\n\nConcurrent offload streams is intended to be a transitioning state when\nan application wants back to back playbacks.\n\nIt should not be allowed for two different applications to stream at the\nsame time.\n\nTest: Play mp3 while mp3 is already offloaded.\nBug: 34012147\n\nChange-Id: I98a8913d6faf5092a1e43a0bdd0f1ce1482221a9\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "ba13b7bc3d46d958bc4a395f2c162cb112ec1f3a",
      "tree": "25b98d0f3db1f6b59045880396b2ce8b77faae35",
      "parents": [
        "d2b0b504f1762cf31f61fda093b180544acd3b53"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Feb 07 10:03:18 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Feb 07 10:03:18 2017 -0800"
      },
      "message": "connect APIs to mediaextractor getMetrics()\n\nplumbing so that user level android.media.MediaExtractor.getMetrics()\nwill get down to where we keep the metrics and then haul them back\nto the application.  Includes the right hooks so that per-container-type\nmetrics will also be managed.\n\nBug: 35094936\nTest: monitor dumpsys output, augmented CTS examination\n"
    },
    {
      "commit": "8eacd8090e16c022dcbb11850cff83f984fe2357",
      "tree": "8efbb8305163d4956d8e096e769801a11e6ba2b8",
      "parents": [
        "c17c28aac0fa31be3fc4068da5e2f95731e7c361",
        "fe1e1449cadff4f946c33403aecc73b4b4a11e56"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 03 17:35:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 17:35:29 2017 +0000"
      },
      "message": "Merge \"Implemented typed, thread-specific logging system. Currently supported types are:  * Strings  * Integers  * Floats  * Timestamps  * Process IDs\""
    },
    {
      "commit": "fe1e1449cadff4f946c33403aecc73b4b4a11e56",
      "tree": "500bb66d15abbbd9b48dce430480cc35d4e6245b",
      "parents": [
        "5a3b54df3014ece49eb1f339e5598c01c6126251"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Jan 30 12:02:03 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 02 16:45:04 2017 -0800"
      },
      "message": "Implemented typed, thread-specific logging system. Currently supported types are:\n * Strings\n * Integers\n * Floats\n * Timestamps\n * Process IDs\n\nAdded printf-like formatted logging using mentioned types.\n\nTest: included in this CL\nBug: 29421410\nChange-Id: Ie07b78d8d39c32fcc8a122ffa9b1b7082800b990\n"
    },
    {
      "commit": "204e2c5ebd4047e417faa985fb0afd4d72f9d844",
      "tree": "205f7ef94b173bc0e74fa5f24cc80b37e36b518e",
      "parents": [
        "c5505da9783d88521eb6b7d6ce5f5b908efdd8df",
        "43605e237f757113b696c0ffffc7b21c12a1752c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Feb 03 00:01:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 03 00:01:53 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: f86177dd93 am: e1bdaa8fb1 am: 6cb1912505 am: 4f95157295 am: 7376ce23ad\nam: 43605e237f\n\nChange-Id: I35d434f0efc0cc77f7dc839c554fd164ae0ec4e4\n"
    },
    {
      "commit": "43605e237f757113b696c0ffffc7b21c12a1752c",
      "tree": "cf20d39af7e4aa882d0cc9544a02a87e1e9f8f01",
      "parents": [
        "29e24f225679737229364799e09b5cc19c816f3e",
        "7376ce23ad1c278822a4725ba81bd870519e64c8"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:59:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:59:31 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: f86177dd93 am: e1bdaa8fb1 am: 6cb1912505 am: 4f95157295\nam: 7376ce23ad\n\nChange-Id: I7aba21e50dc865a3ee98e85782e0232bfd9aa380\n"
    },
    {
      "commit": "7376ce23ad1c278822a4725ba81bd870519e64c8",
      "tree": "7f4548b44db15ffa1c73beba85061f069560c34a",
      "parents": [
        "8a91cf1510c006b0d734b14d1a241ed77cf39ec7",
        "4f951572955e2d7c39bd629ddbfb45d4c05a93b9"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:57:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:57:02 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: f86177dd93 am: e1bdaa8fb1 am: 6cb1912505\nam: 4f95157295\n\nChange-Id: I31c70615f0b81da32ebbd2262b262a9024e114dc\n"
    },
    {
      "commit": "6cb19125052b31023b497b5e2f03f6963f4b48aa",
      "tree": "e95e671bfe9870850641b541989e5370d6da2ed0",
      "parents": [
        "1c4083fcbff36dbb67e9e250d79598b96d9b1ed6",
        "e1bdaa8fb12da64015318eab6ee5d30d5fe2368f"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:49:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:49:01 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: f86177dd93\nam: e1bdaa8fb1\n\nChange-Id: I1c48315fdff2a24d31d62d6aaa550f7d3a02bdde\n"
    },
    {
      "commit": "e1bdaa8fb12da64015318eab6ee5d30d5fe2368f",
      "tree": "d7c8bc9db429801fe011f564dac986a967507387",
      "parents": [
        "96f48e1601731dde35ac97ccc0a5eff55cdd32ed",
        "f86177dd930680bf939ef33b9977db27628d7aff"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:47:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:47:01 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference\nam: f86177dd93\n\nChange-Id: I899d9c4b668171f6e68fdcfac9c7b973831a6a25\n"
    },
    {
      "commit": "f86177dd930680bf939ef33b9977db27628d7aff",
      "tree": "113868c2d2eef459f6538acd0a6d9ff9ffb1d84d",
      "parents": [
        "5337437a1cd62a96a0c772e2ff0738e372d8aa93"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 01 15:27:41 2017 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 12:13:16 2017 -0800"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference\n\nIf the server dies, the binder death callback clears out\nthe global camera service sp\u003c\u003e, and any current references to it\nwill become quite unhappy.\n\nTest: Camera CTS passes\nBug: 31992879\nChange-Id: I2966bed35d0319e3f26e3d4b1b8dc08006a22348\n"
    },
    {
      "commit": "8dc4ee85f02e7a40b93280fb1394c729c315e462",
      "tree": "c4554807181e83995658e41b9c34d6d9c1dfce63",
      "parents": [
        "a2db0cb965d26352e01dd930687706aec1a43b7c",
        "49dcfd2089f667f18859654d7c256974aae4e857"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Thu Feb 02 18:07:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 02 18:07:18 2017 +0000"
      },
      "message": "Merge \"media: Add 3gp output format to MediaMuxer.\""
    },
    {
      "commit": "8a21c0191f974a0b9cbd5818052e2655e0aaa306",
      "tree": "a44985c7545c869f72553865d0bbc04c0250aeb7",
      "parents": [
        "12eb31583f40220b73a5e33b427e1d8f58243939"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Dec 27 04:30:54 2016 +0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Jan 31 16:42:09 2017 -0800"
      },
      "message": "Modify ACodec to allow using Treble.\n\nACodec will connect to the Treble version of Omx if the property\n\"debug.treble_omx\" is set to true (\"1\", \"y\", \"yes\", \"true\" or \"on\").\n\nAlso, fix some bugs found so far.\n\nTest: Compiles\nBug: 31399200\nChange-Id: I52b27b5f99bc1d6797d3b83b8be794ed2de9956a\n"
    },
    {
      "commit": "c5516dcd272bda8ef4fab9999b7035f13eb2cbd8",
      "tree": "2778e00db5f650c7a5695636e4058d7e278ce0ac",
      "parents": [
        "a1ee4c28facd2e4ae0eb288178c8988bf1806148",
        "94e36c5607ec15e4c9a1dff56ca23d4001b932b3"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Feb 01 00:39:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 01 00:40:00 2017 +0000"
      },
      "message": "Merge \"Add an option to connect OMXClient to a Treble service.\""
    },
    {
      "commit": "68b3d9f49e68a11af5225175dc9e60ce88819e84",
      "tree": "750d8fe493c2ec45542968192ecfe52d83133a02",
      "parents": [
        "9b088162cb9cdeb542f106a45d06a1f802e91e6e"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jan 06 19:07:54 2017 -0800"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Mon Jan 30 15:26:51 2017 -0800"
      },
      "message": "Pass application packagename to drm plugin.\n\nPass application package name to createPlugin and createDrmPlugin.\nThe application packagename will be used as part of a unique\nidentifier for drm plugin.\n\nTest: Play Movies.\n\nTest: ANDROID_BUILD_TOP\u003d ./android-gts/tools/gts-tradefed run gts -m\nGtsMediaTestCases --test\ncom.google.android.media.gts.WidevineH264PlaybackTests#testL1With480P60\n\nVerify the application\u0027s packagename is reachable in the drm plugin\u0027s\ndebug log.\n\nbug: 27101531\n\nChange-Id: I84fb09b591a7af63f6e20004e910112a4ce6ebac\n"
    },
    {
      "commit": "49dcfd2089f667f18859654d7c256974aae4e857",
      "tree": "38f0c37fe6d13c3c149df19f0645e0db2bb502d7",
      "parents": [
        "e4806bbccc2150607d84d2df5cb91aa24c4fe10a"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Mon Jan 30 13:17:00 2017 -0800"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Mon Jan 30 14:33:09 2017 -0800"
      },
      "message": "media: Add 3gp output format to MediaMuxer.\n\nTest: CTS test.\nBug: 34281643\nChange-Id: I9f716aba6f2bcbbcdcd65959307a5013a5751f51\n"
    },
    {
      "commit": "94e36c5607ec15e4c9a1dff56ca23d4001b932b3",
      "tree": "85ec4396864895013e80626ac0e3de4583696796",
      "parents": [
        "24a8da67457267e4bac9ac2ffa07e1762510ca34"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Dec 27 04:59:25 2016 +0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Fri Jan 27 17:32:56 2017 -0800"
      },
      "message": "Add an option to connect OMXClient to a Treble service.\n\nTest: Compiles\nBug: 31399200\nChange-Id: I063a8eead79da2704ba25a864f3d2c2627341c51\n"
    },
    {
      "commit": "1784ec91786ed3a9e1fffcaa20fec8c33830b1ad",
      "tree": "64112aa6e6f4f8d6947c0edeeaa4140123a44f76",
      "parents": [
        "3a0a8b4cc0632a09fa9c669edf9c6a27be5d37d9",
        "071437a2005e39969983ec619a4c7bc54c2dc5a9"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Fri Jan 27 18:07:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 18:07:59 2017 +0000"
      },
      "message": "Merge \"Modular DRM for MediaPlayer\""
    },
    {
      "commit": "3a0a8b4cc0632a09fa9c669edf9c6a27be5d37d9",
      "tree": "236ab0766f2787b1935a9c4dd517df65f21b2238",
      "parents": [
        "45cc284af254a71ae9294585448419f91ae27ee4",
        "db1221479a7ffe7094c51c463bbd36522ed106ab"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 27 02:33:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 02:33:46 2017 +0000"
      },
      "message": "Merge \"Media Metrics for NuPlayer, Codec, Extractor\""
    },
    {
      "commit": "45cc284af254a71ae9294585448419f91ae27ee4",
      "tree": "c68a2845c1155d92657b8ef825fbde2e15ff0e56",
      "parents": [
        "2b118b8f939c0cf1b287b1641d17b057a8e25ce7",
        "e08ab77d276e83388da1f811c556d105a38a81d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 27 02:33:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 02:33:46 2017 +0000"
      },
      "message": "Merge \"Provide access for metrics-\u003eJava Bundle conversion\""
    },
    {
      "commit": "2b118b8f939c0cf1b287b1641d17b057a8e25ce7",
      "tree": "5ec25bd81b9d5e692fcab16b4f143fb3f6206ede",
      "parents": [
        "fb388a72e613d669e4de8b0e07d64a6bf640b63a",
        "eeac97b18ca5c939bf2ac59334d36d54f705af3d"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Fri Jan 27 01:16:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 01:16:33 2017 +0000"
      },
      "message": "Merge changes from topic \u0027OMX Treble 2\u0027\n\n* changes:\n  Split Treble conversion module into two sides: impl and utils.\n  Use HIDL\u0027s memory in CodecBuffer and add wrapper classes for IOmxBufferProducer and IOmxProducerListener.\n"
    },
    {
      "commit": "e08ab77d276e83388da1f811c556d105a38a81d3",
      "tree": "ce38745514e66c5d093f8a872d0b7fb9111eb050",
      "parents": [
        "fb388a72e613d669e4de8b0e07d64a6bf640b63a"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 25 17:47:51 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 27 00:40:03 2017 +0000"
      },
      "message": "Provide access for metrics-\u003eJava Bundle conversion\n\nprovide \u0027friend\u0027 access for the class that converts Media Metrics\nproperties into a Java Bundle to be handed to users through local APIs.\nActual code to do conversion is in frameworks/base/\n\nBug: 34716157\nTest: compilation passes\n"
    },
    {
      "commit": "db1221479a7ffe7094c51c463bbd36522ed106ab",
      "tree": "9d551bf00c96d22d529561669e411e3a4416c2be",
      "parents": [
        "fb388a72e613d669e4de8b0e07d64a6bf640b63a"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 25 17:51:55 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 27 00:12:08 2017 +0000"
      },
      "message": "Media Metrics for NuPlayer, Codec, Extractor\n\nCollect metrics for nuplayer/mediaplayer, codec, extractor.\npublishes them to media.metrics service\nprovides hooks that local APIs use to connect to retrieve metrics\nfrom the above when running on their behalf.\n\nSeparate set of changes does the final hop to the local APIs.\n\nBug: 34715803\nTest: build \u0026 run, observed code/extractor/player metrics in logs\nChange-Id: Ic5a0a7b3b93a5a41af93d81050ba038f0f7a4329\n"
    },
    {
      "commit": "eeac97b18ca5c939bf2ac59334d36d54f705af3d",
      "tree": "fa4ba549c27134217df62344ed01793f54364d2f",
      "parents": [
        "f62ea8018813951e8f6a182880cadb3217e4ce37"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Jan 18 05:03:07 2017 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Jan 26 00:53:44 2017 -0800"
      },
      "message": "Split Treble conversion module into two sides: impl and utils.\n\nimpl is on the HAL side. utils is on the framework side.\n\nTest: Compiles\nBug: 31399200\nChange-Id: Ib88a80f406fa2b897aa7c65f5faba6cdd9d6a700\n"
    },
    {
      "commit": "f62ea8018813951e8f6a182880cadb3217e4ce37",
      "tree": "2484670a6fcf5e32d2c700d920f9f17796cae0fe",
      "parents": [
        "1d399328e24b3ea0512e10f0925d8d09b43225ef"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Dec 20 04:24:47 2016 +0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Jan 26 00:52:10 2017 -0800"
      },
      "message": "Use HIDL\u0027s memory in CodecBuffer and add wrapper classes for\nIOmxBufferProducer and IOmxProducerListener.\n\nTest: Compiles\nBug: 31399200\nChange-Id: Ia09973ee7b25120bc35cff02b1409f33b28a4b4e\n"
    },
    {
      "commit": "29bcb38457deb3c69e0b5d2e8658446e969bd380",
      "tree": "261579eed10dce5b39c0b1e857191205decca154",
      "parents": [
        "6b2704c86f5f34217d820427da979c6bd6624bb8",
        "a53d6553fce1818bdf87833f93633c93ad1b5915"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 26 02:43:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 26 02:43:41 2017 +0000"
      },
      "message": "Merge \"Implement client code to use Drm and Crypto HALs\""
    },
    {
      "commit": "6b2704c86f5f34217d820427da979c6bd6624bb8",
      "tree": "accffac85c38dc9d2c03bb03182e19b59aa82ff0",
      "parents": [
        "3b8a6c9a638dba5584d40d00d0d38423c128e874",
        "c0dede99d99ab22f59cf34c3b7d262c80d7bbc4a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 26 01:23:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 26 01:23:24 2017 +0000"
      },
      "message": "Merge \"camera: Add enable ZSL key\""
    },
    {
      "commit": "a53d6553fce1818bdf87833f93633c93ad1b5915",
      "tree": "8fbbb7b32d753c75a7350d748d6fa08d47402289",
      "parents": [
        "2a0c6d54dc34fdd8cca4e8ed7f39ad512133a878"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jan 20 00:31:46 2017 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 25 15:41:12 2017 -0800"
      },
      "message": "Implement client code to use Drm and Crypto HALs\n\nThis change adds DrmHal \u0026 CryptoHal classes that connect to the Treble\nHAL interfaces for drm.  These classes mirror the existing Drm and\nCrypto classes that connect to the DrmPlugin and CryptoPlugin\ninterfaces. Having both allows mediadrmserver to run in either mode\nwhile the HAL is stabilized.\n\nThe shared memory interfaces between mediaserver\u0027s ACodecBufferChannel\nand ICrypto had to be reworked to use the Treble HALs. Specifically,\nthe shared memory path for returning decrypted buffers in the\nnon-secure case had to become separate instead of piggy-backing on the\nsource shared memory buffer. A separate shared memory destination\nbuffer is now allocated on the buffer channel. An abstraction for a\ndecrypt destination buffer was also introduced to clarify ICrypto\u0027s\ndecrypt method.\n\nTests: Playback using Play Movies and ExoPlayer works on angler\nwith and without the treble hal enabled.\n\nbug: 32815560\nChange-Id: I5a3dc84f99902eb8cf8eabab9ad074d307744950\n"
    },
    {
      "commit": "071437a2005e39969983ec619a4c7bc54c2dc5a9",
      "tree": "0b1b44c249e3513e1bb96395484b707c194904d0",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Mon Jan 23 09:19:40 2017 -0800"
      },
      "committer": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Wed Jan 25 15:02:11 2017 -0800"
      },
      "message": "Modular DRM for MediaPlayer\n\nBug:  34559906\nTest: Manual through the test app\nChange-Id: I752c3e2bbc2fac9c75f7ddc986014c4b8ce75d84\n"
    },
    {
      "commit": "c0461f5b18eb6d5516804810f315e6c23879a09d",
      "tree": "409c82898f26abeb75bc1b9430c08578c051ad9a",
      "parents": [
        "b4728afbf8095d5349de9fcd49f3f34b900682ad",
        "66916c26a7055c9e10471720502a29f759609819"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 25 17:03:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 25 17:03:13 2017 +0000"
      },
      "message": "Merge \"audio hal: Fix multichannel playback\""
    },
    {
      "commit": "b4728afbf8095d5349de9fcd49f3f34b900682ad",
      "tree": "7c89ffe2147137b42c8e961a029488c13bec48d2",
      "parents": [
        "a437457c4f802c8df577da452f3a26a64f55bba4",
        "758c215374dba397dabe17b8e96dd38593c09dd7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 25 01:54:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 25 01:54:21 2017 +0000"
      },
      "message": "Merge \"Camera: Combine handling of deferred surface and shared surface\""
    },
    {
      "commit": "66916c26a7055c9e10471720502a29f759609819",
      "tree": "931ce309f34c35775a11240b4f8186db1983f90b",
      "parents": [
        "ceec4a06595253a6dcc167064f318e470e1c3b58"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 17:46:33 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 24 17:46:33 2017 -0800"
      },
      "message": "audio hal: Fix multichannel playback\n\nCorrectly operate on input and output buffers in DownmixerBufferProvider\n\nNote that playback is a bit choppy, need to investigate further.\n\nChange-Id: I350175dcc9cc7142a1935585a8bd5e9abb1b8eb6\nTest: play back a 5.1 file\n"
    },
    {
      "commit": "c0dede99d99ab22f59cf34c3b7d262c80d7bbc4a",
      "tree": "5cd422223a04b98ac4ee89b26afb47d3fa2fe3ff",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e"
      ],
      "author": {
        "name": "Chien-Yu Chen",
        "email": "cychen@google.com",
        "time": "Wed Jan 11 11:10:28 2017 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jan 24 15:41:39 2017 -0800"
      },
      "message": "camera: Add enable ZSL key\n\nAdd enableZsl key so the apps can choose to allow or\ndisallow out of order frame contents and metadata like\ntimestamp.\n\nTest: Camera CTS tests on Marlin\nBug: 30983997\nChange-Id: I715ef24ab55d6941c0ece16f09f325c26b83ea54\n"
    },
    {
      "commit": "758c215374dba397dabe17b8e96dd38593c09dd7",
      "tree": "d3c1326f44d95e97d5c73270f0195c5e2b7297ae",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue Jan 10 18:26:18 2017 -0800"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue Jan 24 11:25:06 2017 -0800"
      },
      "message": "Camera: Combine handling of deferred surface and shared surface\n\n- Refactor the OutputConfiguration to contain isDeferred and isShared\n  flag, and not contain NULL surface.\n- Unify the handling of deferred surface and shared surface.\n\nTest: Camera CTS, and manual testing of GoogleCamera use cases\nBug: 33777818\nChange-Id: I5dd3472f0f2133699b0e9fbdd8ba456956222746\n"
    },
    {
      "commit": "d38e174ddbde8e7419ba01deaded4ff0ead1caaa",
      "tree": "cd62ea763bf947133d4fb6a66b693672294a2694",
      "parents": [
        "efbd36c8f57f41b0ef061cde5a88a3d384538fc9"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 23 15:17:06 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 24 09:46:01 2017 -0800"
      },
      "message": "Change from mediaanalytics to mediametrics\n\nreflect the change from \"media.analytics\" to \"media.metrics\" in\nwhat service names we use; bring the metrics service main code into the\nservice directory (vs an additional shared library).\nRemoved references to tentative binder functions that the service\nwon\u0027t be offering, at least not in the near future.\n\nBug: 34615027\nTest: build, boot, new services run, clients talking to said services.\nChange-Id: If17772a8f03c05b142e8d5779830d198710210c1\n"
    },
    {
      "commit": "d112296453154c6974433d860f270e9d8bc7d0d0",
      "tree": "da4b1c15d138189c47e7a53d529405571ecd0ecd",
      "parents": [
        "9e26267afc9bd9b80c44b50b4a40c050f79d15cd",
        "ed32086f6a93a9a22f3877c54030af5c2567939a"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 19 22:08:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 22:08:37 2017 +0000"
      },
      "message": "Merge \"mediaplayer: add getBufferingSettings.\""
    },
    {
      "commit": "ed32086f6a93a9a22f3877c54030af5c2567939a",
      "tree": "ce0af9c6ba0e532db654f80f4cffbcccf610ecca",
      "parents": [
        "13ff5b0ce7ae1d31eaa30f21c9d83290ebff0756"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Jan 18 14:03:40 2017 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 19 11:33:30 2017 -0800"
      },
      "message": "mediaplayer: add getBufferingSettings.\n\nTest: compiles\nBug: 32524218\nChange-Id: Ifd6243d524d1554dfbbfc1381414100cfafdc02d\n"
    },
    {
      "commit": "e482d3a819edb60038ba5c4ca7f33935b27dd35f",
      "tree": "a2fb03633089ff6c68104dd389a39eb996af8738",
      "parents": [
        "dffb51f4e35fe93215b025bdf4216f3b411c734b",
        "fe44e4f74fe2582cbf012687059278dbcbdaa6f7"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Thu Jan 19 18:17:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 18:17:40 2017 +0000"
      },
      "message": "Merge \"media: Support recording exceeds filesize limit by splitting files.\""
    },
    {
      "commit": "cac8d4ea54ece7aeb4b2ffa7aafd06fbec731a62",
      "tree": "ed02d8653145fded2d53bcf4c6d7033cca7eb1cf",
      "parents": [
        "d0ffd62e89bf97fa20a63f282d034b6745328210",
        "44344b05261cb9ad46a43e635f637b89aecc7afe"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 03:17:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 03:17:59 2017 +0000"
      },
      "message": "Merge \"audio policy: allows dumping Audio Policy Mix\""
    },
    {
      "commit": "addae1cfa92c3bae2b59917160da5520d2a25865",
      "tree": "d1b4f95e84a693a1f932337f9e45a47e35cf2d0a",
      "parents": [
        "7a667f6675f6dfc07892e0f9e67c60b26002e8f8",
        "0129d52df9794d6fdf06be304722b5cb51a2eab5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 01:54:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 01:55:02 2017 +0000"
      },
      "message": "Merge \"camera2: Add support for secondary surface for stream\""
    },
    {
      "commit": "1acece4c23ba36e71bc42d8b44b8b62bd4423620",
      "tree": "36498ad93f4bcbbc852a9eee54774555509ef89a",
      "parents": [
        "3670ef95286d8eb028d30a95448b8f93f8f74007",
        "d621ac82e648c8ef395068edb1af2747f49b700a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 17 23:16:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 23:16:30 2017 +0000"
      },
      "message": "Merge \"Monitor crashes of audio hal service via linkToDeath\""
    },
    {
      "commit": "d621ac82e648c8ef395068edb1af2747f49b700a",
      "tree": "3c37b8d97c0c7feec6c567d407d05c8343ec9e6e",
      "parents": [
        "a72ef28f8cc2b894119b470fe6c93d1abe566398"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 17:17:45 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 17 13:42:54 2017 -0800"
      },
      "message": "Monitor crashes of audio hal service via linkToDeath\n\nHwbinder \u0027linkToDeath\u0027 mechanism is used to track abrupt\ndisappearance of server hal objects due to hal server crash.\n\nUpon hal server crash, notifications can be sent to binder\nclients if needed, then the audioserver crashes itself as the\ncurrent audio HAL design does not provide an easy way to restore\nall the transient objects (devices, streams, effects) in their\npre-crash state.\n\nBug: 34158778\nTest: In binderized mode, kill audio hal server\nChange-Id: If9265711edc445984601fcb5c29d2c173a370762\n"
    },
    {
      "commit": "dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6",
      "tree": "45fc471ff4d3c46d91281d75b2c049bf73104748",
      "parents": [
        "c62b65fd690a585c674caa6e79559bb847e5b3bd"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jan 09 15:04:18 2017 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jan 17 10:49:33 2017 -0800"
      },
      "message": "mediaplayer: add buffering settings API\n\nTest: compiles, checked that params is passed all the way to source.\nBug:32524218\nChange-Id: I637d1ab09f94a3830a33a39e7e9f1b3efb22357f\n"
    },
    {
      "commit": "c62b65fd690a585c674caa6e79559bb847e5b3bd",
      "tree": "89d7086548553e1a1aa8d9b96a8ba9c4dce9967a",
      "parents": [
        "eadba76ec937ead68bbd267585547c0bbdd459c1",
        "4453f452577064b4907a941225f7fc6e87800e37"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 16 16:18:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 16 16:18:58 2017 +0000"
      },
      "message": "Merge \"Remove DRMExtractor\""
    },
    {
      "commit": "2872c7ab71fb554ee14d4e8b65677f9c7a97f966",
      "tree": "9f7dc45786534b506ad0804d6a1c81813a33fdaf",
      "parents": [
        "7e95f0e695f16584416881d17e6193e11ae3559a",
        "48fa06d1e80a872c7495804979256e021e566ae0"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Sat Jan 14 02:54:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 14 02:54:24 2017 +0000"
      },
      "message": "Merge \"BufferingSettings: hook up internal BufferingSettings API.\""
    },
    {
      "commit": "fe44e4f74fe2582cbf012687059278dbcbdaa6f7",
      "tree": "cbe39fbaa7b5e36134061c4e863489437a2fd5a6",
      "parents": [
        "3cc1da3dc8f367d8a29251088945d67fede8bfb8"
      ],
      "author": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Tue Jan 03 16:38:11 2017 -0800"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Fri Jan 13 14:03:48 2017 -0800"
      },
      "message": "media: Support recording exceeds filesize limit by splitting files.\n\nTest: Hacking camera app to record file larger than size limit.\nBug:28150626\nChange-Id: I500913ec96d8ef49a78989d3f973bc7e8d923cb7\n"
    },
    {
      "commit": "4453f452577064b4907a941225f7fc6e87800e37",
      "tree": "3bc5657171b31ab92eb9ade0ab9cbe48fa72f66a",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 13 12:51:08 2017 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 13 21:54:03 2017 +0000"
      },
      "message": "Remove DRMExtractor\n\nIt was not used, untested and untestable.\n\nBug: 33354165\nTest: ran forward lock and media playback CTS tests, manual playback.\nChange-Id: I4dd3f07ca5b019a5fed0c860aa573fc993464712\n"
    },
    {
      "commit": "35f537fc5aa479caa6fd9055cdc63989d029e8a3",
      "tree": "b67c9f5a8d2a60db36dc3e1b2df52d27843ac9d8",
      "parents": [
        "f95fa3333f03cf5fa45a08402d5c7a671835e042",
        "49b2b4d30a0f74314630a5ea5f0e59697d90443e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 13 20:06:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 20:06:50 2017 +0000"
      },
      "message": "Merge \"stagefright: add rangeOffset to OMXBuffer\""
    },
    {
      "commit": "8c48184651df8edb5b9490fe616844dbcfbbb0a4",
      "tree": "a394d86ba1dc2e4826c7e6376b0d2bd74d49ca8a",
      "parents": [
        "060a6c53b5022c9e539a4c9b03b16da546964bec",
        "8981605d43e24c46d395acb5f145b99589d45917"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 13 16:19:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 16:19:33 2017 +0000"
      },
      "message": "Merge \"AudioFlinger: Move RecordBufferConverter to libaudioprocessing\""
    },
    {
      "commit": "49b2b4d30a0f74314630a5ea5f0e59697d90443e",
      "tree": "824ecd9c69be3ea97ba4589ae48c73c76b9c1821",
      "parents": [
        "d825ab9d5be990a6a7fb28033cfba84441100731"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 11 17:19:42 2017 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Jan 12 15:54:01 2017 -0800"
      },
      "message": "stagefright: add rangeOffset to OMXBuffer\n\nbug: 31399200\nbug: 22804304\n\nChange-Id: I0ac9a7ee684067d40a26135ab26ebd3de3a2f06d\n"
    },
    {
      "commit": "44344b05261cb9ad46a43e635f637b89aecc7afe",
      "tree": "f088a40f3512f177136b78f02e091d42db7d0934",
      "parents": [
        "38267b773f2cdec4d684b12fde73179bcc66e0c7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 13 11:21:02 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 13:19:26 2017 -0800"
      },
      "message": "audio policy: allows dumping Audio Policy Mix\n\nThis patch adds the dump of AudioPolicyMix if registered.\nIt also adds the required conversion map to human readable strings\nof the types involved in Mixes.\n\nAdapted for the development branch from the AOSP patch:\nhttps://android-review.googlesource.com/#/c/309127/\n\nChange-Id: I91cf7afe6de5ff837970d9063ca437d4f6201e89\nTest: build, dumpsys media.audio_policy\n"
    },
    {
      "commit": "b04aa125744b7e1d5c56a4c2151eaaa890d68e4c",
      "tree": "d5f4d7530b6233288d812a93a824a39fa6410dba",
      "parents": [
        "a6f38cc3723252b0cac46912ae65adef778e6b14",
        "bdbe7ca3586ec2d4d32793fff9b3d858ad1c1dff"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 12 17:31:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 17:31:07 2017 +0000"
      },
      "message": "Merge \"Fix plugin loading\""
    },
    {
      "commit": "bdbe7ca3586ec2d4d32793fff9b3d858ad1c1dff",
      "tree": "0c2aa083f328d263f1fe0687844172c2f6fcd140",
      "parents": [
        "96966995da4418326a01dd53719c8355a0db9415"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 11 19:01:41 2017 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 11 19:08:22 2017 -0800"
      },
      "message": "Fix plugin loading\n\nChange-Id: I3572f8bc1c90c5f0697054497bde52e4cbc4e71e\nrelated-to-bug:32815560\n"
    },
    {
      "commit": "8981605d43e24c46d395acb5f145b99589d45917",
      "tree": "8bb7ee0e15081201b70730bbaafed49b47d211dc",
      "parents": [
        "d7c5ec857930496bb8a1045dc8b87b2fdd99899c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:08:23 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:19:37 2017 -0800"
      },
      "message": "AudioFlinger: Move RecordBufferConverter to libaudioprocessing\n\nTest: Recording loopback\nBug: 31015569\nChange-Id: I7897d959f36ac7424544e35f47576c99a442dd54\n"
    },
    {
      "commit": "fc23520d9c3f15e28baa81de5f7dfa6c1b0af426",
      "tree": "d612d3bd0486cae96622768c95d41849b38dd9c6",
      "parents": [
        "9476864f6a9b8d500f6c74ba40bfd2e1ce5265a2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 18:48:17 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 12:58:55 2017 -0800"
      },
      "message": "audioflinger: define MMAP HAL Stream control interface\n\nAdded definition of MmapStreamInterface used by Oboe service\nto open, configure and control MMAP streams at the audio HAl.\n\nThis interface is implemented by audioflinger and abstracts the details\nof interacting with audio policy manager and audio HAL from Oboe service.\n\nA callback interface MmapStreamCallback is also defiend to communicate\nvolume and routing changes back to Oboe service.\n\nBug: 33398120\nTest: build\nChange-Id: If953d44903aaa4eb17ff16f1922ca16e5e0e0a87\n"
    },
    {
      "commit": "068561c8e84569d51df2adbbb53b56fdfd09c06b",
      "tree": "67e6c9c383b4667adc502b0ed6928a672a6a5b6d",
      "parents": [
        "ee454fcb25bff0f9c5d3455775a4cb66429e875e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 03 17:09:32 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 10 17:06:46 2017 -0800"
      },
      "message": "AudioFlinger: Split off audio processing library\n\nTest: native AudioResampler test, general playback test\nBug: 31015569\nChange-Id: Ifb248f4402a583438d756c014dcd7a4577aef713\n"
    },
    {
      "commit": "ee454fcb25bff0f9c5d3455775a4cb66429e875e",
      "tree": "c3951ebbde22c8c3e33712ccc2241f01f4647ca3",
      "parents": [
        "b554bff208ec1af8b6a8cfd78a86103c8dd46089",
        "022b9953153bdb1984f0abb17d21ef8c1826ad49"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 10 23:22:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 10 23:22:50 2017 +0000"
      },
      "message": "Merge \"Re-implement HIDL effect processing using FMQ and IMemory\""
    },
    {
      "commit": "0129d52df9794d6fdf06be304722b5cb51a2eab5",
      "tree": "f1d74ea701960753675b03385434c90a7c3c5875",
      "parents": [
        "844800fb97bfd061f845cd13d42fbdfacdbca6c5"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Sun Oct 30 22:43:41 2016 -0700"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue Jan 10 10:31:40 2017 -0800"
      },
      "message": "camera2: Add support for secondary surface for stream\n\n- Enhance OutputConfiguration to contain multiple surfaces for one\n  underlying stream.\n- Create Camera3SharedOutputStream to handle streams with multiple\n  surfaces.\n- Create Camera3StreamSplitter to handle buffer flows between camera and\n  multiple consumers.\n\nTest: cts, and manually test camera preview/snapshot/recording\nBug: 33777818\nChange-Id: Ia010c3cc9d9b4bd5b9ea03cc42fe4e0a0d8033f1\n"
    },
    {
      "commit": "022b9953153bdb1984f0abb17d21ef8c1826ad49",
      "tree": "aff19a7663d75cbb16bc003424bacb6f97b738cd",
      "parents": [
        "e61f9e57e61cbf4d86d6385dd3cddb41e245f749"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 16:36:51 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 09 18:18:18 2017 -0800"
      },
      "message": "Re-implement HIDL effect processing using FMQ and IMemory\n\nResult: no hwbinder calls due music processing.\n\nTest: make, use Play Music with effects, check traces\nBug: 30222631\nChange-Id: I06d0e94e603688874b31824427f3b0878b5f7c8e\n"
    },
    {
      "commit": "f44271816fcdc38eee139df872d57fd513347325",
      "tree": "5948f475df6be0007db1d8d87d0b0bfc70b84ab4",
      "parents": [
        "e020b2cd79e5b0d28c4b1806814a88b7f3a8b5ec",
        "9ee321c347c64886d1078a4e4afb57ec98dd54a2"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Tue Jan 10 00:48:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 10 00:48:56 2017 +0000"
      },
      "message": "Merge changes from topic \u0027mediacodec_2b\u0027\n\n* changes:\n  stagefright: fix premature change of buffer ownership\n  Revert \"Revert \"MediaCodec refactoring part 2-b: introduce BufferChannel\"\"\n"
    },
    {
      "commit": "5e3030fd4ef828cc7254e96030f38ad64f162151",
      "tree": "5145869e0dac4277524eea0e904159bf0d954668",
      "parents": [
        "f0b3e3be1ead1cb40b50e3dc048947220acb62a5",
        "535e161e2e404dffb8389dd331be0132704b6d82"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 23:50:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 06 23:50:51 2017 +0000"
      },
      "message": "Merge \"media.log: re-implement NBLog using audio_utils_fifo\""
    },
    {
      "commit": "dff26e5f53b248fd8cc6605850240c7e7c5438dc",
      "tree": "44bf496554011f1187e0641781c2db44d031af9d",
      "parents": [
        "186673877157260cbfb05c5be51e9ac6e6a4d8bc"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Thu Dec 01 16:11:42 2016 +0900"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Sat Jan 07 00:46:17 2017 +0900"
      },
      "message": "Revert \"Revert \"MediaCodec refactoring part 2-b: introduce BufferChannel\"\"\n\n- MediaCodec stops tracking the whole buffer array from OMX.\n- BufferChannel handles array management instead, if necessary.\n- MediaCodec delegates secure buffer management to BufferChannel.\n- Remove sf2.\n\nBug: 32133435\nTest: adb shell am instrument -e size small -w \u0027android.media.cts/android.support.test.runner.AndroidJUnitRunner\u0027\nTest: Play an encrypted content in Play Movies\nTest: Mirror the screen via Cast.\nChange-Id: I1ca705687956ad972e31257853c54e29cbd7181a\n"
    },
    {
      "commit": "186673877157260cbfb05c5be51e9ac6e6a4d8bc",
      "tree": "cb9faec85a33ff26eef0c72836c71ec514e692cc",
      "parents": [
        "4efe5dcbde4266b807a2c27c004b0851ad36fe10",
        "fad01bc45bd47b8f12c89857fee20b7e37310125"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 06 01:26:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 06 01:26:48 2017 +0000"
      },
      "message": "Merge \"Revert \"MediaCodec refactoring part 2-b: introduce BufferChannel\"\""
    },
    {
      "commit": "fad01bc45bd47b8f12c89857fee20b7e37310125",
      "tree": "02131fe258f37b38db813b4215ef07596a13ab60",
      "parents": [
        "11b72100e02e02b6cd8a6b14cd2068c96dc49b7d"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Thu Jan 05 23:37:13 2017 +0000"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Thu Jan 05 23:37:13 2017 +0000"
      },
      "message": "Revert \"MediaCodec refactoring part 2-b: introduce BufferChannel\"\n\nBug: 34059849\n\nThis reverts commit 11b72100e02e02b6cd8a6b14cd2068c96dc49b7d.\n\nChange-Id: I0ab93a617477861a4e6f43152e6b03d5c88783ab\n"
    },
    {
      "commit": "e1c4b5d7a94c21b8ce0c5707b4af84de596fbb79",
      "tree": "8c448787f6c4f7bfe7647cc32601350247d4066a",
      "parents": [
        "2b934d36939c571a47cc972670176bc0356c54be"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 22 09:22:45 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 20:50:54 2017 -0800"
      },
      "message": "Re-implement HIDL stream read and write using FMQ\n\nResult: no hwbinder calls due read / write session.\n\nTest: make, perform Loopback RTT, check traces\nBug: 30222631\n\nChange-Id: I4a8792525ec374111302cfd5c0a2e41f9f4cc418\n"
    },
    {
      "commit": "856132debf024e0bb02f1bbc86caec89c57f1fc2",
      "tree": "ec6066e81b018776fdbcbe742faf71d735e22fbc",
      "parents": [
        "36867767ba86244b0d942255b9d241b092151309",
        "35dfca88f18a105dad2c4d6f718c6c4bc89498e7"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Jan 03 20:16:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 03 20:16:59 2017 +0000"
      },
      "message": "Merge \"Remove superfluous type parameter to PluginLoader\""
    },
    {
      "commit": "36867767ba86244b0d942255b9d241b092151309",
      "tree": "1fa1b0a4cf8fe6b7f780bb8950f6ad659ae7a5d5",
      "parents": [
        "af86dcee9d97e02e9069548684ef8c9db5190ff9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 29 12:03:28 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 29 12:35:25 2016 -0800"
      },
      "message": "USAGE_ASSISTANT/ACCESSIBILITY in audio policy manager\n\nAdd support for USAGE_ASSISTANT.\nFix stream type for USAGE_ACCESSIBILITY.\n\nTest: enable Talkback, check volume; make\nBug: 30947943\n\nChange-Id: Ie35adf0115dce1fac6d3deddc1e57e36b36913f6\n"
    },
    {
      "commit": "535e161e2e404dffb8389dd331be0132704b6d82",
      "tree": "61afd43df445dbf8329bd248493770ee506b5814",
      "parents": [
        "af86dcee9d97e02e9069548684ef8c9db5190ff9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 05 12:19:36 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 29 11:12:19 2016 -0800"
      },
      "message": "media.log: re-implement NBLog using audio_utils_fifo\n\nNBLog previously has its own shared memory circular buffer code.\nNow NBLog operates on top of the circular buffer code in audio_utils.\n\nTest: media.log still works\nChange-Id: Ib3026d2a96e6c0b433603e8baf19164ad97a1e1f\n"
    },
    {
      "commit": "af86dcee9d97e02e9069548684ef8c9db5190ff9",
      "tree": "e101e7b1fd7d39c4c4880f5b4a7c55819b2f1d6a",
      "parents": [
        "5fd7ccaeba88da7e170f067bfd754b3f64ff5566",
        "ed99c2b5a99a8bfc163a6ffa0b767c82032b09b5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 29 17:51:57 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 29 17:51:58 2016 +0000"
      },
      "message": "Merge \"NBAIO: re-implement NBAIO Pipe and MonoPipe using fifo\""
    },
    {
      "commit": "35dfca88f18a105dad2c4d6f718c6c4bc89498e7",
      "tree": "5089b32239fbeb53e8b7bde3c535674b5c7d670a",
      "parents": [
        "5fd7ccaeba88da7e170f067bfd754b3f64ff5566"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Dec 28 18:38:55 2016 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Dec 28 18:55:43 2016 -0800"
      },
      "message": "Remove superfluous type parameter to PluginLoader\n\nbug:32815560\nChange-Id: I70ca8c30a3e7c96671c8781ece3a45f71caceee8\n"
    },
    {
      "commit": "5fd7ccaeba88da7e170f067bfd754b3f64ff5566",
      "tree": "5e2a0f1495c8ea9a68598cea2028e3c092049e3a",
      "parents": [
        "0ce91633d8a4f5dcb3706a7734c02ddb5099eefd",
        "c6fe843463abc965f3082738c8812506cf5ba232"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35 am: fcc1132010\nam: c6fe843463\n\nChange-Id: I7812e3e4426e526b886c1a414ac8ddec7649291e\n"
    },
    {
      "commit": "c6fe843463abc965f3082738c8812506cf5ba232",
      "tree": "8818a3ad8b5a4f776510672fb5100e60b2ffba20",
      "parents": [
        "4532a36bf509d822a77cbc1b7837f9f1158c7796",
        "fcc113201018703727a0d6b17dd165efce00db1a"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:19:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:19:05 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35\nam: fcc1132010\n\nChange-Id: I4c25c229b0bb8a385a231c7a9f444b923bb46456\n"
    },
    {
      "commit": "f862bc6a7a35054e38cb50fa16ae7a07f683ee01",
      "tree": "12f33970e876ba71df008d7e38a58984c5b357b5",
      "parents": [
        "a05da2eea41306d526ce645ea44aa2e05054f651"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Dec 26 18:57:22 2016 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Dec 28 14:35:01 2016 -0800"
      },
      "message": "Add a mechanism for handling audio device configuration change\n\n* Added new call handleDeviceConfigChange() to the Media Framework.\n  That call can be used when there are device configuration changes\n  (e.g., Bluetooth A2DP codec configuration has changed).\n* Added new method AudioPolicyManager::handleDeviceConfigChange().\n  That method toggles the UNAVAILABLE/AVAILABLE connection state of the\n  device, so it can be reconfigured as appropriate - e.g., the audio\n  feeding parameters can be updated.\n* Fix ALOGVV compilation errors when extra logging is enabled.\n\nTest: A2DP streaming to headsets\nBug: 30958229\nChange-Id: I388abbbb3ec4d1a003b441cb0c77e00d80cad668\n"
    },
    {
      "commit": "704f71980464987a352a16ac95ffe1f9e24aa10b",
      "tree": "673c9cf677b7cab0da0e494f1f11f4431a4857e1",
      "parents": [
        "a96898c40c38449d4f28c72cee434eee062021a1",
        "1de11dc03234dabb5faffe74c72f17da0c1c6992"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Dec 22 17:43:17 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 22 17:43:18 2016 +0000"
      },
      "message": "Merge \"Added a plugin loader class for drm+crypto HALs\""
    },
    {
      "commit": "1de11dc03234dabb5faffe74c72f17da0c1c6992",
      "tree": "e9db6811e5862615cd8361131aef5fe65fc46e0f",
      "parents": [
        "e2bc75d146276c3cfe2b349073cf46f7706fa38d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Dec 19 15:21:26 2016 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Dec 21 23:55:49 2016 -0800"
      },
      "message": "Added a plugin loader class for drm+crypto HALs\n\nbug:32815560\nChange-Id: Iccd9451ff09e037db25eea672327912dd41c140f\n"
    },
    {
      "commit": "da913494a93667a037e7923258b46d0d1dd2bf50",
      "tree": "d030e20ef4a5dc6337f29f3241613ea54e7a5555",
      "parents": [
        "d8915d994177d93f5e6b0dee69f1d2a82db6bed5",
        "b5fac8ef36b302c12f897d06c7e097981843f3a0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Dec 21 23:11:28 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 21 23:11:28 2016 +0000"
      },
      "message": "Merge \"Refine MediaAnalytics framework\""
    }
  ],
  "next": "48fa06d1e80a872c7495804979256e021e566ae0"
}
