)]}'
{
  "log": [
    {
      "commit": "cd8793a325408a5f77aee9bd719d2591fa4a30fd",
      "tree": "7accb34ca7b8b5fd261bde7a5bee21f22cbb8326",
      "parents": [
        "fcb1f7fa5a99a45596230876d5072d8351cac503",
        "e25539a93f04b06361252e2aa8baab534efbc1de"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Oct 23 10:05:18 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 23 10:05:18 2019 -0700"
      },
      "message": "Merge changes from topic \"libdrmframework\" am: 84a53822a1 am: 460618a6d1 am: c317c587d5\nam: e25539a93f\n\nChange-Id: Ib8636ca3d1a5e251de8a4ce3643f0f88dfe85234\n"
    },
    {
      "commit": "9c6f790843939700fa18779f14b1df5fa1161024",
      "tree": "fe8d8bac73ced833f9b8b1bf7758bc6bee7ff097",
      "parents": [
        "79b0c24b58af5fbfec814a2a11506ef0f72541c3"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Oct 14 11:16:39 2019 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Oct 15 17:38:17 2019 -0700"
      },
      "message": "Remove libdrmframework.so dependency from libdatasource.so\n\nName changes:\nClearFileSource -\u003e FileSource\nClearMediaHTTP -\u003e MediaHTTP\nFileSource -\u003e PlayerServiceFileSource\nMediaHTTP -\u003e PlayerServiceMediaHTTP\n\nPlayerServiceXXX are able to handle OMA(forward-lock) files and now\nmoved to media/libmediaplayerservice/datasource since they only work\non mediaserver process.\n\nBug: 142567168\nTest: build and DrmTest\n\nChange-Id: I9292dba33d149efe17cf566017dcce1710cc8c88\n"
    },
    {
      "commit": "79b0c24b58af5fbfec814a2a11506ef0f72541c3",
      "tree": "2551d295da89029c75f6a9219a6bc1a3b2980b98",
      "parents": [
        "1f72838954cb3689fb58eef6276553d9a45ff0a8"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Sun Oct 13 08:17:34 2019 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Oct 15 11:00:29 2019 -0700"
      },
      "message": "Make DataSourceFactory singletone\n\nThis is preparation for having a subclass of DataSourceFactory which\nis only used in mediaserver process with OMA (forward-lock) use case.\n\nTest: build\nBug: 142567168\nChange-Id: I2a1ab3d1ae89f657a84376d9a95d4e814b545b4f\n"
    },
    {
      "commit": "fa8be7d2371d66db6c7838060d5729f6fd9374ef",
      "tree": "aa00504b96299a891446e46c81c6b0d72c9aae02",
      "parents": [
        "58ae37b5b34d6a2bddd46494230a58f5fcc3f5e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 23 12:15:57 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 09 07:41:58 2019 -0700"
      },
      "message": "Split datasource out of libstagefright\n\ninto libdatasource, which contains:\n  DataSourceFactory\n  (Clear)FileSource\n  (Clear)MediaHTTP\n  DataURISource\n  HTTPBase\n  NuCachedSource2\n\nThis is needed to break a circular dependency in an upcoming CL.\n\nTest: build, boot\n\nChange-Id: I34d9937235c78f18f51b18945342a0743e209577\nMerged-In: I34d9937235c78f18f51b18945342a0743e209577\n"
    },
    {
      "commit": "42057ce1890b2be250b95f56734a47b93c8ad537",
      "tree": "7bfbe8147243430c306546b6a7e5caaa1e94d9cc",
      "parents": [
        "df0b56ba22cc201e535a2efc2245214355b6adf2"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 23 12:15:57 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 08 09:30:45 2019 -0700"
      },
      "message": "Split datasource out of libstagefright\n\ninto libdatasource, which contains:\n  DataSourceFactory\n  (Clear)FileSource\n  (Clear)MediaHTTP\n  DataURISource\n  HTTPBase\n  NuCachedSource2\n\nThis is needed to break a circular dependency in an upcoming CL.\n\nTest: build, boot\n\nChange-Id: I34d9937235c78f18f51b18945342a0743e209577\n"
    },
    {
      "commit": "55b259cf5ec16df77b52206e8209f5df2fc214c5",
      "tree": "29989150d2cfb026f11ec5d43edb8116442e7311",
      "parents": [
        "87025d5658d1a3d78c1a634035f7126f0ba8a4f1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 27 10:21:55 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 01 13:43:37 2019 -0700"
      },
      "message": "Remove libmediadrm symlinks\n\nTest: build\nChange-Id: I53d703b6d34226926437b0207a2b3d51dff6881a\nMerged-In: I53d703b6d34226926437b0207a2b3d51dff6881a\n"
    },
    {
      "commit": "13aa1a4b6630a05fc3e48824b911009ecbb33284",
      "tree": "506fa3026d84685c2621157b9b668155c31ae0ec",
      "parents": [
        "e3cdab3c40cb71284a0e186d7d5a82257e7d34a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 27 10:21:55 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 30 14:04:37 2019 -0700"
      },
      "message": "Remove libmediadrm symlinks\n\nTest: build\nChange-Id: I53d703b6d34226926437b0207a2b3d51dff6881a\n"
    },
    {
      "commit": "51eb2f447a3239ef818975bd4d594889a8cb502e",
      "tree": "7b56d77bd39bcbb6ebfc51a36421a02ce337c13b",
      "parents": [
        "34438bed76b81d20a401ae6094e46077d83b9850",
        "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2"
      ],
      "author": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Tue Sep 17 15:05:44 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 17 15:05:44 2019 +0000"
      },
      "message": "Merge \"Improve visibility of IMemory security risks\""
    },
    {
      "commit": "ee8116b0a36739253ea41d7703102a5aeaa2d5da",
      "tree": "9e684d73c8c5c7a2c23f0eb0391aa0f51a5b81d7",
      "parents": [
        "0e1c20080a810da66062b83ad0d142e3fb4bd7e7"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Fri Jul 19 15:55:44 2019 -0700"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Mon Sep 16 15:08:45 2019 -0700"
      },
      "message": "nuplayer: wait for sync point at renderer flush\n\nBug: 136232244\nTest: atest CtsMediaTestCases:MediaRandomTest#testPlayerRandomActionH264 (100 times)\nChange-Id: I0a63df739fb15597130f50a12d6cddbe3ae815e8\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "2e26d813d76735a822c507370ea21046d9a0fbb9",
      "tree": "cee02c1870b47edf791af1bceba6e131ffa35c42",
      "parents": [
        "f53495687949faddd7666ec4b4206f99b8ec4c04"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Sep 09 13:20:10 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Sep 09 15:05:50 2019 -0700"
      },
      "message": "Check actual read bytes for TS packets\n\nCheck actual bytes read when feeding the data to TS parser.\n\nbug: 140177694\ntest: poc in bug; StreamingMediaPlayerTest\n\nChange-Id: I4b498fe375af657e17838e5839e6348e1463d559\n"
    },
    {
      "commit": "fd3bbcb596956eeaa6c0a5c0770e00779b574e04",
      "tree": "1eed9e6f8f126b8e6a7828a1864b0ba4b30baa0a",
      "parents": [
        "39d766372220af912a8912e6487f4626d56a6d04"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Aug 08 17:15:01 2019 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Aug 12 22:34:20 2019 +0000"
      },
      "message": "Close socket before posting message to RTSPSource message handler\n\nBug: 120119004\nTest: Same as b/120119004 #1\nChange-Id: If22bb575347448893032465f6c59b244ba74ef89\n"
    },
    {
      "commit": "c52abcd1b3e7bb594c3126aa28abe978fdfa0ba9",
      "tree": "9134e718f55a662a02840263f6050ee51d4e648e",
      "parents": [
        "87b6e61db314aa83c3e582ba8ae3d7c3cb1d2d61",
        "7fa5e10f6cac09a43a59a2cac0657fe7c91ee30d"
      ],
      "author": {
        "name": "Yuxiu Zhang",
        "email": "yuxiu.zhang@mediatek.com",
        "time": "Thu Jun 27 12:54:33 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 27 12:54:33 2019 -0700"
      },
      "message": "Http streaming cannot play video whose duration is less than 5s am: 6efc14faf6 am: b888dbdf1f\nam: 7fa5e10f6c\n\nChange-Id: I0588597644c1f40b325442c71a6c4b7980e5593d\n"
    },
    {
      "commit": "6efc14faf68e3e7698adbe644d264c403d04dd0a",
      "tree": "a3a3bd2661eca947a4464e5efd0f137dfdb17dff",
      "parents": [
        "2cbc7cd807382e371ad5ae71039afccb9641433c"
      ],
      "author": {
        "name": "Yuxiu Zhang",
        "email": "yuxiu.zhang@mediatek.com",
        "time": "Mon Jun 10 16:13:05 2019 +0800"
      },
      "committer": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Thu Jun 27 10:17:00 2019 +0100"
      },
      "message": "Http streaming cannot play video whose duration is less than 5s\n\nonPollBuffering() monitors EOS(finalStatus \u003d\u003d ERROR_END_OF_STREAM),\nthen notifyPreparedAndCleanup(finalStatus) notifies prepared error.\n\nPrevious Google\u0027s patch \"GenericSource: fix error handling during\npreparing or rebuffering\" should focus on error except ERROR_END_OF_STREAM.\n\nBug: 134911527\nTest: http streaming can play a mp4 video whose duration is less than 5s\nChange-Id: I5c738bbe7242314b24463679b5bd996ab59d2b04\n(cherry picked from commit 89703072ec4edf7a384ec07024debc0a6e085ae0)\n"
    },
    {
      "commit": "83f56b07f214d20a7b3e5137a72ced990fccac10",
      "tree": "fe0dd6b505d1f41128952083000f8e64c30359d7",
      "parents": [
        "ad735264bec8ee70d3ab0fbbccb9b7be796e637f"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sun Jun 23 15:13:46 2019 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sun Jun 23 15:31:12 2019 -0700"
      },
      "message": "Finer synchronization for nuplayer stats\n\nBug: 131474028\nTest: manual\nChange-Id: I4c38cc979baa91d6d23115da1d53c8152e77cb36\n"
    },
    {
      "commit": "932f63ef1219deb522f094c4cf8f1223a7fb38c2",
      "tree": "e1a77b364eda64fb5faa4b62d42447a4f1e34a37",
      "parents": [
        "c5bfbeaf974e50bf5d840186a7000d75ce9db25a"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Jun 13 17:40:32 2019 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Jun 18 18:15:25 2019 +0000"
      },
      "message": "NuPlayer::GenericSource::onPrepareAsync():Change lock order\nmLock and mDisconnect lock order interleaving,\nwhich has potential risk of deadlock if other code locks/unlocks them in a different order.\n\nBug: 135211710\nTest: (1) android.hardware.camera2.cts.FastBasicsTest#testCamera1\n      (2) android.media.cts.MediaPlayerFlakyNetworkTest\n\nChange-Id: I9486f2c6780c2f246786299a3d6c7c2f7295b768\n"
    },
    {
      "commit": "c4270cc3a9287d72163cacd0cadfa91523764855",
      "tree": "7c0e353320c0bd5120199167a1630e23db4eff3d",
      "parents": [
        "e81a326d90dfce1249917b796f69b48fe1c59971"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Jun 13 11:32:07 2019 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Jun 13 21:07:39 2019 +0000"
      },
      "message": "fix bug: release mDisconnectLock when early terminate\n\nBug: 134995545\nTests: (1) described in buganizer comment #2\n       (2) atest CtsCameraTestCases:android.hardware.camera2.cts.FastBasicsTest#testCamera1\nChange-Id: Ie134e503cd7602a754b57bcc5c1355dea19d4eab\n"
    },
    {
      "commit": "13497d02b5bd63c4867e2284833a6bf57cdf119e",
      "tree": "771ab2b5387a0451f88046e52d95fed0a48f4713",
      "parents": [
        "ca77ca26c12734407f12581854701b1d255cbba3"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Jun 06 13:54:12 2019 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Jun 06 16:06:23 2019 -0700"
      },
      "message": "Fix android.media.cts.MediaPlayerFlakyNetworkTest failure\n\nAdded mDisconnectLock to seperate it from mLock, used for protecting\nmDataSource, mHttpSource and mDisconnected in order that disconnect()\nwon\u0027t be blocked by mLock.\n\nBug: 133900877\nTest: android.media.cts.MediaPlayerFlakyNetworkTest\nChange-Id: I15693c0a61f898aad4035d0fa55c8af25de4fc96\n"
    },
    {
      "commit": "6ce27e5ffa056948b506bf7320a9f9c961150684",
      "tree": "d3c75842dba2db375a7b3b4413e902ecccbbb5ef",
      "parents": [
        "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Feb 15 10:58:05 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 06 11:35:11 2019 -0700"
      },
      "message": "connect mediametrics service to statsd\n\ntake the collected media.metrics (as they arrive) and push a copy over\nto statsd, the statistics logging subsystem.\ngather data, wrap in protobufs apppropriately, and submit it to statsd.\n\nBug: 118782504\nTest: statsd\u0027s test_drive app\nChange-Id: Ieb82c43633851075e9eaf65d2a95c8cba87441ea\n"
    },
    {
      "commit": "cc9515118a01c27f9942782606bb1de0c5d47550",
      "tree": "9466b7f89c3bd565c08dfef197abdd6a6adab949",
      "parents": [
        "0e5a1b3bb64d9a5d38903770e018379856401efd"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Apr 03 16:10:42 2019 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Apr 04 10:17:39 2019 -0700"
      },
      "message": "NuPlayerRenderer: allow video rendering after flushing audio\n\nTest: test file can play\nBug: 129733716\nChange-Id: Iaaac854267901bd577496689a2d997271c942000\n"
    },
    {
      "commit": "e1c7348e1c3fed25c16ae4673101f48b1ed95b7e",
      "tree": "0398bf5a184153694c6d2b4959c7622a10497cb6",
      "parents": [
        "e9cecf0f8865fa43d8c2977c314f9c81fb20ba3b"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Apr 01 16:18:53 2019 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Apr 02 15:18:45 2019 -0700"
      },
      "message": "NuPlayerCCDecoder: fix memory OOB\n\nTest: cts\nBug: 129068792\nChange-Id: Id78ddc983f245feda3a81da3448196340b57f5c9\n"
    },
    {
      "commit": "134d945b9119d3edd7ca36fa587e368aa0997bba",
      "tree": "2b6bca222dc1263733886fe2f996f41b79a73888",
      "parents": [
        "6ce01631b8a7710186bef4d2b4872f255613d6eb",
        "372e8f2b19f3a0018b926f226c8ad0ca62320652"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 14 01:36:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 01:36:03 2019 +0000"
      },
      "message": "Merge \"Improve concurrency access for updateMetrics()\""
    },
    {
      "commit": "afb69292957f4048866d7bdae8d76d322f95bbef",
      "tree": "78762cc3d8601295c8fa2259bc2bc47c37126348",
      "parents": [
        "3d1f734702f5053d5a69b3f797e9d902742c43ff",
        "29c6a1fa100592aed5654913ddbd9ad5adf0e775"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Feb 13 11:21:58 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 13 11:21:58 2019 -0800"
      },
      "message": "Merge \"NuPlayer: Call video flush on audio teardown\" am: d093917344 am: 436d9e9d91\nam: 29c6a1fa10\n\nChange-Id: I069065dd0660f3824108bd6489b177296781a4b4\n"
    },
    {
      "commit": "d0939173441f0ff2efcfea44de6924ef18454e6c",
      "tree": "bcb9e9d8380ee7e40dd6429ed75454e7d389b5e8",
      "parents": [
        "615d9ff50e81846a33dceace331650ddb2cae9ea",
        "eca08fb8619db79e7e47b0dba9f8f5f9e961dfef"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Feb 13 18:33:16 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 13 18:33:16 2019 +0000"
      },
      "message": "Merge \"NuPlayer: Call video flush on audio teardown\""
    },
    {
      "commit": "a13e83c2915e594f29f92033886b8565b91e511f",
      "tree": "43325d2efb737ccd6afba5e9e377b2382b74e5ce",
      "parents": [
        "8d7fea64521c9e79e81051d615875e8a4e6af610",
        "e9ab588c2cf8698e383b9139ec9f3a15c51f93cd"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Feb 12 21:34:24 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 12 21:34:24 2019 -0800"
      },
      "message": "Merge \"Fix bugs regarding clamping of numFrames variable.\" am: 615d9ff50e am: 23a9678be1\nam: e9ab588c2c\n\nChange-Id: Ieeafefed7f324a68917848e54451693d0bedd019\n"
    },
    {
      "commit": "615d9ff50e81846a33dceace331650ddb2cae9ea",
      "tree": "cdb03567d808337ed86b15ccd2c0b3b411957869",
      "parents": [
        "f4935e88d1b38756033727c6a70d1530532636b7",
        "2c2050c6b67539465a1af1f98a4a626af3c85ff0"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 13 04:51:15 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 13 04:51:15 2019 +0000"
      },
      "message": "Merge \"Fix bugs regarding clamping of numFrames variable.\""
    },
    {
      "commit": "eca08fb8619db79e7e47b0dba9f8f5f9e961dfef",
      "tree": "a3a18d87a0351ffeef559dd8c1af7f38bac39245",
      "parents": [
        "0d8553c9a1368d0837e8b154e19d15728417cd22"
      ],
      "author": {
        "name": "Praveen Chavan",
        "email": "pchavan@quicinc.com",
        "time": "Mon Jan 21 11:00:38 2019 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Feb 12 17:58:46 2019 -0800"
      },
      "message": "NuPlayer: Call video flush on audio teardown\n\nwhen audio tear down happens, audio gets flushed and seek is issued.\nIf video is not flushed before seek, previous video buffers will be\nrendered and leads to A/V sync issue. Hence call video flush.\n\nAuthor: Cong Jiajia \u003cjcong@codeaurora.org\u003e\n\nBug: 70919418\nTest: MediaPlayerTest\nChange-Id: I01f744c1eae99a1d0f81ca84f536d493a2a54b01\n"
    },
    {
      "commit": "78199b7961f104ad0dff92d2c2b668d576291ece",
      "tree": "f40486bc47b022c9b628aae16ed7950320c95224",
      "parents": [
        "90dc07267842d3b6ead6b8435f6e0aea921b70da",
        "4d94b4a7b10f0309a040737f6b57410d9052af11"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Feb 12 11:53:25 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 12 11:53:25 2019 -0800"
      },
      "message": "Merge \"video: Add null checks for MediaAnalyticsItem class\" am: ea1a0f0383 am: e57360ffa8\nam: 4d94b4a7b1\n\nChange-Id: I3f3e2159beb1ec634a8106a32444fcf0ad688da5\n"
    },
    {
      "commit": "90dc07267842d3b6ead6b8435f6e0aea921b70da",
      "tree": "6d91e2c51c5d219418e69bde41dd9f7310feb5b2",
      "parents": [
        "97767dff535081e39711445f49e446013611df28",
        "8f11d12acecfbae05b281cb5dd224b7ffc9d552c"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Feb 12 11:52:20 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 12 11:52:20 2019 -0800"
      },
      "message": "Merge \"MediaPlayerService: Clear the vector holding tracks\" am: b6229652ed am: efb1eecb65\nam: 8f11d12ace\n\nChange-Id: I27253016da23f7973587f9dd71ab76b13048538a\n"
    },
    {
      "commit": "ea1a0f0383e359645eca3e76567857e8ef4594ee",
      "tree": "4c1311924c5c452e903c39f15abce62ddeae7ce3",
      "parents": [
        "b6229652ed17ea48c39ca1fc17cca0ea6897118c",
        "f71144e8361b8e3d872d01dac71edbe8947eac3b"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Feb 12 19:27:34 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 19:27:34 2019 +0000"
      },
      "message": "Merge \"video: Add null checks for MediaAnalyticsItem class\""
    },
    {
      "commit": "b46073425ebd372f374e9681184c97b8f944f091",
      "tree": "2788d5f6298c985a59a7b67182ae510af27108db",
      "parents": [
        "0d8553c9a1368d0837e8b154e19d15728417cd22"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Feb 11 15:31:22 2019 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Feb 11 15:31:22 2019 -0800"
      },
      "message": "MediaPlayerService: Clear the vector holding tracks\n\nClear the vector which holds all tracks when the\nGenericSource is reset to prevent any stale access\n\nAuthor: Umesh Pandey \u003cumeshp@codeaurora.org\u003e\n\nBug: 70919418\nTest: TBD\nChange-Id: If7042b3344ce36ba56e38df1a43bc2bb287cc40c\n"
    },
    {
      "commit": "372e8f2b19f3a0018b926f226c8ad0ca62320652",
      "tree": "dcbae95dac10ab55bb8a999f340c0306b30cbe34",
      "parents": [
        "1342d0740e9a7accd48a7c28725ca61ded231ee1"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Feb 11 11:38:31 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Feb 11 11:43:46 2019 -0800"
      },
      "message": "Improve concurrency access for updateMetrics()\n\nnuplayer\u0027s updateMetrics() referenced an unprotected shared stats buffer.\nIt\u0027s a small buffer, so we now make a copy during updateMetrics()\n[at a point where we are mutexed] instead of putting a mutex on the\nunderlying frequently used construct.\n\nEnsure that nuplayer2 has the same protections.\n\nBug: 123256408\nTest: race condition\n"
    },
    {
      "commit": "f71144e8361b8e3d872d01dac71edbe8947eac3b",
      "tree": "974259c45814f9b059d340cd4e61b371a4489c92",
      "parents": [
        "0d8553c9a1368d0837e8b154e19d15728417cd22"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Fri Feb 08 15:18:05 2019 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Fri Feb 08 15:18:05 2019 -0800"
      },
      "message": "video: Add null checks for MediaAnalyticsItem class\n\nCheck if MediaAnalyticsItem class is valid before\ncalling any of its functions.\n\nAuthor: Paras Nagda \u003cpnagda@codeaurora.org\u003e\n\nBug: 70919418\nTest: TBD\nChange-Id: I2d5704063b9479301f03d6f57ce74108873ef4cc\n"
    },
    {
      "commit": "6a3052232c606bc2f74a849c6758fd44b6c01158",
      "tree": "529ee3bb94a17c06e19c8642daf9993f23d531f2",
      "parents": [
        "2637984613a75eb2640a73e186a6dd1f08cebbc0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 28 20:33:18 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 31 11:19:44 2019 -0800"
      },
      "message": "use MediaAnalyticsItem::create() instead of new\n\nBug: 123543489\nTest: boot/logcat, select CtsMediaTests\nChange-Id: I92f8b9987b78466fae74ce4c0b177f8bb1e7dea8\n"
    },
    {
      "commit": "2c2050c6b67539465a1af1f98a4a626af3c85ff0",
      "tree": "3cf55476bc2852da2e35192fd7fcd73c1878aecd",
      "parents": [
        "4ae8b0c37c4b9852c15098cc5ba4129745d1d07b"
      ],
      "author": {
        "name": "hyoungjun.byun",
        "email": "hyoungjun.byun@lge.com",
        "time": "Thu Jan 31 12:11:38 2019 +0900"
      },
      "committer": {
        "name": "hyoungjun.byun",
        "email": "hyoungjun.byun@lge.com",
        "time": "Thu Jan 31 12:11:38 2019 +0900"
      },
      "message": "Fix bugs regarding clamping of numFrames variable.\n\nthere is a clamping value in getDurationUsIfPlayedAtSampleRate function\nnumFrames parameter is uint32_t type. when return value, cast uint32_t to int32_t.\nthat make clamp value of numFrames\n\nSigned-off-by : Hyoungjun Byun \u003chyoungjun.byun@lge.com\u003e\n\nChange-Id: Ib97d89b33a8e5b6bea3d499e4b44d1056d7fae66\n"
    },
    {
      "commit": "db3fa5f9ff069697b70f2a702177f1db83a6d5b7",
      "tree": "5ac815ae62bcb6e6fea949385afe2c53508db0f7",
      "parents": [
        "8ce16d8609ee14dfbfafeecfb3cb5d1ebb94f1f2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jan 25 22:56:56 2019 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 30 07:09:41 2019 +0000"
      },
      "message": "Throw exception on mismatched system vs vendor\n\nWhen the system partition is a later version than vendor,\nnew MediaDrm APIs will not have HAL implementations. In\nthis case throw java.lang.UnsupportedOperationException.\n\nbug:110701831\nbug:123375769\n\ntest: cts media test cases, gts media tests\nChange-Id: Ib631bf4d4d245d857e61bd3fe0e5808e430a034d\n"
    },
    {
      "commit": "6b0b52643d064ad36a47a4bb5ad76966fc25cc0a",
      "tree": "833425ab9067ad4a87103a80d6598505a14ee77c",
      "parents": [
        "db80386712cfc0a4c7642f72992a3933a21f4458"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jan 25 19:48:31 2019 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jan 25 19:48:31 2019 -0800"
      },
      "message": "Reduce logspam in nudriver\n\nCurrently, there is a lot of logspam in nudriver. Reduce the spam.\n\nTest: flash the device and let it idle. Open \u0027adb logcat\u0027. Observe.\nBefore the change: logspam @ about 10 messages / second\nAfter the change: no logspam\nBug: 65494379\n\nChange-Id: Ie952fdcab61aa89bb72d9c6dc63487643febd974\n"
    },
    {
      "commit": "99dbfa822e277956799e987c106d4ec1b7984f1b",
      "tree": "d5ab50d0657b41554e0594ebb9a30f058ca3d1e3",
      "parents": [
        "701768e80731da3df0edac97fb8fc442ffbbd33f"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 17 17:27:06 2019 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Jan 22 23:27:10 2019 +0000"
      },
      "message": "Add securityLevel to MediaDrm isCryptoSchemeSupported API\n\nbug:110701831\ntest: cts media test cases, widevine integration tests\n\nChange-Id: Ia4308a27a11a279db1fb127c51d752ecaa86dfcb\n"
    },
    {
      "commit": "a09fa50c96278cdacf7c845821631c3dab69813a",
      "tree": "64cd6af644645d15eae988251f6063fd786bc2c6",
      "parents": [
        "b93cee2ef2464d748e77f01c536bd0f57dddd165",
        "723be42fdbbbfe0e50c044952496acb313b2a7a6"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Jan 09 15:27:46 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 15:27:46 2019 -0800"
      },
      "message": "Merge \"GenericSource: restore mLock state in error cases\" am: bccd73e209 am: f7f5ab9924\nam: 723be42fdb\n\nChange-Id: I2d4c028ed3fc0bb0dd04211947550d3c08674ecf\n"
    },
    {
      "commit": "c43464ea5bf15295ddbc30dc03bc70648a80a16a",
      "tree": "3d97e6dbd283ee75dbacaac24f676268af9188b9",
      "parents": [
        "18c84ba4ec155b58bdfa397b3fa93fb2b7bda284"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Jan 09 11:27:11 2019 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Jan 09 11:27:11 2019 -0800"
      },
      "message": "GenericSource: restore mLock state in error cases\n\ninitFromDataSource and onPrepareAsync are called with mLock acquired.\nWhen initFromDataSource returns with error, notifyPreparedAndCleanup\nwill be called and it requires mLock acquired.\n\nTest: cts\nBug: 122564587\nChange-Id: I430dbc5f1f30c06223ea22438282bd388174f7df\n"
    },
    {
      "commit": "353c3d3663e88a205925f98da5257d025de6ea43",
      "tree": "38c1821f7cab561bd7995a1d873c94d23b7bb5c7",
      "parents": [
        "c041f3043a72f17908d740175d0a00a8098df5b7"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Jan 04 12:44:38 2019 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jan 08 10:58:02 2019 -0800"
      },
      "message": "NuPlayerRenderer: handle fractional audio data before EOS\n\nWhen audio reaches EOS and MediaClock has not started, use video\ntimestamp to start MediaClock.\nTest: MediaPlayer sends MEDIA_PLAYBACK_COMPLETE\nBug: 122052445\n\nChange-Id: Ia37643b8d5260cda0e7cde22dea883804511cff6\n(cherry picked from commit 1225b9329367ab30587983c78f343734c33af4d4)\n"
    },
    {
      "commit": "1225b9329367ab30587983c78f343734c33af4d4",
      "tree": "5577c8387b58e6524d34f50c131f6fcc321012b7",
      "parents": [
        "8bd05d3cb43121321053e10f1836b5da6f61271f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Jan 04 12:44:38 2019 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Jan 04 12:52:29 2019 -0800"
      },
      "message": "NuPlayerRenderer: handle fractional audio data before EOS\n\nWhen audio reaches EOS and MediaClock has not started, use video\ntimestamp to start MediaClock.\nTest: MediaPlayer sends MEDIA_PLAYBACK_COMPLETE\nBug: 122052445\n\nChange-Id: Ia37643b8d5260cda0e7cde22dea883804511cff6\n"
    },
    {
      "commit": "c37b1908b6a054e4331465bda7d36497b8746001",
      "tree": "c67dcd817f5432b5fd568f247fcf17d9feb932cc",
      "parents": [
        "48d4fff79246d1a988b5538f9f9db5fc57746f9c"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Dec 18 11:36:13 2018 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Dec 19 18:48:40 2018 -0800"
      },
      "message": "Video frame scheduler using public APIs\n\nBug: 112555500\nTest: MediaPlayer2Test\nChange-Id: Ie4b21964c761b4350b50b23271b28cf9dcd933ad\n"
    },
    {
      "commit": "92466dd60772c38e563ec42b6b06ef5185d68396",
      "tree": "afb475ba5c923b6ab35354b896c04f84640deb3e",
      "parents": [
        "b21b5ab7c6f9925c8b63d79cefcfbd2d633868d2",
        "18343452006468a83457b9623b082f64fb479169"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 13 05:45:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 13 05:45:21 2018 +0000"
      },
      "message": "Merge \"DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master\""
    },
    {
      "commit": "20d51cca2c61b65be88b5bad43e6f363e29373b8",
      "tree": "55b3c735670490bed7ecd524ba047712f7179dda",
      "parents": [
        "45999facdf65223af739ba12d71956ebbf174085",
        "698e9e88633dcfc33eb7112c3c69cbbd4ecc49ad"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 21:14:51 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 21:14:51 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in nuplayer.\" am: 83c76fb62f am: 45dbe4cb02\nam: 698e9e8863\n\nChange-Id: Ia515d1ac2d776dc6a698378d5d2b5119e4f60bc1\n"
    },
    {
      "commit": "45dbe4cb0292c08fd511fcf3b2f719419ff5a5a3",
      "tree": "80d3be2b8a5e7c12490b813b7ca68fdb48c788d9",
      "parents": [
        "bef48edf9d5984cd9621b821cb7dc096999160e2",
        "83c76fb62ffbad4a0aa22f4f53e8ba23395bde1b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 17:18:32 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 17:18:32 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in nuplayer.\"\nam: 83c76fb62f\n\nChange-Id: I8fca7fcfb5052f67228d3c5a86cac7b21fc0736a\n"
    },
    {
      "commit": "18343452006468a83457b9623b082f64fb479169",
      "tree": "1999a7d544c9bd5b1b4c09a536f0199fd93f1805",
      "parents": [
        "c6b48fe6272db5d3ca910598565c2b48b547ce7f",
        "0cf77658fa992cef0247484ba6b43526a9d2d571"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Dec 11 13:59:12 2018 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Dec 11 13:59:12 2018 -0800"
      },
      "message": "DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master\n\nBug: 120502534\nChange-Id: Ifdd73b6dfcf3791fb8dae2b1796a34bb56aea190\n"
    },
    {
      "commit": "62309d52d5431b2dc79f66b0f4c2d30d50dd9969",
      "tree": "05b22083b907ec5a665a0313696623ff9e3ce2f6",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:54:02 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:54:02 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in nuplayer.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: Ia4124c95101ba37d7212a4de8a9a17959153db25\n"
    },
    {
      "commit": "bffb47d61fcea60a900c98f37632c93ec1a5b2d6",
      "tree": "d5f2fa0af37d15514e0662d283a9271ca7b8d033",
      "parents": [
        "25427e247dc56d8bd2aad46bc628c696fc47c1a3",
        "0cf77658fa992cef0247484ba6b43526a9d2d571"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Mon Dec 10 10:04:56 2018 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Dec 11 20:26:00 2018 +0000"
      },
      "message": "DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into stage-aosp-master\n\nBug: 120502534\nChange-Id: I674b89442ad4fb75081fb5b8fdbb8ea89be97c5c\n"
    },
    {
      "commit": "df7d3e08762a077ec6d5c909129472100c9a6649",
      "tree": "c5b6e36454a1d838d7ac56fb52c1a7cc5754cff8",
      "parents": [
        "0209452544dfd347de2ddb4e8cfaf89f51bc039c",
        "6671ea8a46da5cbeaba2da4c623353441758cf50"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 06 17:16:25 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 06 17:16:25 2018 -0800"
      },
      "message": "Merge \"Remove CFI diagnostics.\" am: 64ac8c6301 am: b89b976d77\nam: 6671ea8a46\n\nChange-Id: I4de33cfd8451cceab9ca234d884522e6e9489b08\n"
    },
    {
      "commit": "6671ea8a46da5cbeaba2da4c623353441758cf50",
      "tree": "028c90a937c4b8e8681bd7648c89faff1b325597",
      "parents": [
        "6ff493b2fe11e3ced040c16724f35c76a3e740a1",
        "b89b976d77807ba33edeafc9976cdf7b462adcaf"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 06 17:00:56 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 06 17:00:56 2018 -0800"
      },
      "message": "Merge \"Remove CFI diagnostics.\" am: 64ac8c6301\nam: b89b976d77\n\nChange-Id: I0f2c332719da81447afb695c124d7b6c6c16b80d\n"
    },
    {
      "commit": "db19f572b941e62ffd688f2198da122977c55a28",
      "tree": "3713ab1298069be97a599b88c5cae6ef0900bee8",
      "parents": [
        "8c545704ea199e13c23f47cd8f4067bcdc25071f"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 06 10:33:28 2018 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 06 10:53:33 2018 -0800"
      },
      "message": "Remove CFI diagnostics.\n\nRemove diagnostics mode from CFI across the board. This should reduce\nperformance overhead and also allows the minimal runtime to work when\nother ubsan sanitizers are enabled. CFI stack dumps should include a\ncfi related function, so it should be apparent when a crash is CFI-related.\n\nBug: 117417735\nTest: make -j\nChange-Id: Id2cb6cb64425c4c89c031d93156fb1a20be5fa7b\n"
    },
    {
      "commit": "039224f18894843ea9395d474c0d2051d036f329",
      "tree": "799ce989f5cffd1cedd04a5c46ef046547a72d2e",
      "parents": [
        "938b6ca467c19285ec89b98316a13891012887d4"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Nov 29 17:25:17 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Nov 29 17:25:17 2018 -0800"
      },
      "message": "NuPlayer: add missing getSelectedTrack in CCDecoder\n\nTest: cts\nBug: 119938763\nChange-Id: I0dcc35ec65f0912d43aa5b0e3a797334d2581a78\n"
    },
    {
      "commit": "092f74a609334e2f5e39d3afa1a35fbc69730c13",
      "tree": "9d47467655be0b0ba54e73ed822c35f5b8cd5d54",
      "parents": [
        "ce4afa6ca3a2cc61ff2855fd062c8c49a8ec86ca"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Nov 20 10:25:13 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Nov 20 10:25:13 2018 -0800"
      },
      "message": "capture frame rate for player records\n\nmedia.metrics gets the frame rate of playback within the nuplayer\nrecords.\n\nBug: 119817586\nTest: logcat\n"
    },
    {
      "commit": "2b674bbdfb1b30e5e10b42e776e5e44993d012b4",
      "tree": "1b8ba6ea551bb8ac997c8aaae12997cb2a3eb055",
      "parents": [
        "c74fafab6db73b0ee7adbba937c502d1806df5b9"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Fri Jun 22 14:53:20 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 15 14:53:46 2018 -0800"
      },
      "message": "Support float WAV \u0026 FLAC extraction\n\nPreviously all WAV/FLAC files were extracted as 16 bit data.\nChanges this so that 24/32 bit are extracted as float data\nto maintain the higher quality.\n\nNote: Update for master branch supersedes iot branches.\n\nBug: 63770882\nBug: 110480091\nTest: Used media player to play 24 bit, 32 bit, and float wav files, plus 16 bit and 24 bit FLAC files,\nensured data went through successfully without loss of quality\nChange-Id: Ic09bd2fe994bbf3ed8441549904712c534030c96\n"
    },
    {
      "commit": "af136d5c32b3ecf90741511473e974e38c50de3d",
      "tree": "ce20abad575d4be7053eb909e469d951ed024af4",
      "parents": [
        "d31283885b1d992ec59b94bee970400ab812c6ca"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 09 14:21:36 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 09 14:21:36 2018 -0800"
      },
      "message": "GenericSource: fix error handling during preparing or rebuffering\n\nTest: cts\nBug: 119271544\nBug: 115287688\nChange-Id: I18db8600c1b7d3cfa472ff376cf0f8629f0fbaff\n"
    },
    {
      "commit": "8b5eeb77158a44d3362dfdc8df30ea09c9d6d72f",
      "tree": "fbdb09b7df2d9e5d8c4b7803dfc57473c0c4c482",
      "parents": [
        "f783424b1ad040f6437ed83ffb690e8ec5c793ec",
        "3bc9597fda7cc1031e0e10296a7ccb5037732d25"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 18:04:36 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 13 18:04:36 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in nuplayer*.\" am: daba8f4f19 am: 4eabdc1237\nam: 3bc9597fda\n\nChange-Id: Ie45ea20d706e5c43d09b30be3e71021c207b771e\n"
    },
    {
      "commit": "3bc9597fda7cc1031e0e10296a7ccb5037732d25",
      "tree": "eebc7de682c7a94a7de7eae16d98b572a2484ab5",
      "parents": [
        "fd9ed407e0986dabd2c74958462d466fec14446b",
        "4eabdc123701200b91ca48602458ad254e3b0703"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 17:58:16 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 13 17:58:16 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in nuplayer*.\" am: daba8f4f19\nam: 4eabdc1237\n\nChange-Id: I814792ed988e4dfdb077ff121ccf360bd779e593\n"
    },
    {
      "commit": "c89566d5ec0b348693a354242b8fd8308f5d3b7a",
      "tree": "c238ca06e220cf2054315e7384c3e09f31c65d48",
      "parents": [
        "e91c38936da30ecee4784425f4731fb4fc3e3534"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 14:22:06 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 14:22:06 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in nuplayer*.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: I5b7ab7abb46884b363e13284382eddf7a256a3e2\n"
    },
    {
      "commit": "a70beb16195266900997f2f376d2f28017cd45a4",
      "tree": "ba0716f8eb0e1210e663bd48242c2b56deeee401",
      "parents": [
        "9985754cabf9d426bf95e3adfc27cea7fcc86e42"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 17 14:10:03 2018 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Aug 23 08:10:30 2018 -0700"
      },
      "message": "Move MediaExtractor back to libstagefright\n\nIt is no longer needed in libmediaextractor, and moving it back\nto libstagefright will avoid a circular dependency later.\n\nBug: 111407253\nTest: build, boot, play some files\n\nChange-Id: I1373a9eedee27998e7733ea23ae1a375e45cc9c3\n"
    },
    {
      "commit": "0f94463362911de14bdfbf00a1c09d3d2fa1b96f",
      "tree": "9ea151b56c847e5dd24e305ad92ca85690d4a3be",
      "parents": [
        "46f11bd30412014f9204598da0e2dd17b1db7659",
        "62e83c9512486a24f0cfd3fe25ba5f2b4f2c2fe5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 15 17:44:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 15 17:44:29 2018 +0000"
      },
      "message": "Merge \"Check for crypto size overflow\""
    },
    {
      "commit": "5a0dcbcf6b39a6fa167fb4cdfc38975a73226c9f",
      "tree": "adf21f30b50e3dbdb01ed33d950487fccf8bc6af",
      "parents": [
        "5bf00e8858de16b294174c35b338b99b5a3259fb",
        "3359c6722a2871be03078f80bbe193f2f3434ac4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Aug 07 19:15:41 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 07 19:15:41 2018 -0700"
      },
      "message": "Rework NuPlayer::getStats() synchronization am: fcb8fd352a\nam: 3359c6722a\n\nChange-Id: I8d535121bef101674d8ec14702a2b5d9c271c410\n"
    },
    {
      "commit": "3359c6722a2871be03078f80bbe193f2f3434ac4",
      "tree": "e1cbd009081dc8ed54685d66dc2a2feecedecb95",
      "parents": [
        "34e09e4a72525b05605b5f466a0e6860ba27a9f2",
        "fcb8fd352a4ab57e16d72695883533b30f630143"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Aug 07 19:10:30 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 07 19:10:30 2018 -0700"
      },
      "message": "Rework NuPlayer::getStats() synchronization\nam: fcb8fd352a\n\nChange-Id: I9e8a5da50f1cab16daba29475f52beb3c127a213\n"
    },
    {
      "commit": "fcb8fd352a4ab57e16d72695883533b30f630143",
      "tree": "677e2c12df1e72877601ed62794a926ef2038283",
      "parents": [
        "b9e822981c6f0204d7d592ae0438b7c3ce8ba0d1"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Aug 07 09:39:38 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Aug 07 17:13:48 2018 -0700"
      },
      "message": "Rework NuPlayer::getStats() synchronization\n\nundo earlier change moving this to the handler thread, instead using\na mutex to protect the contended resources: mAudioDecoder and\nmVideoDecoder.\n\nBug: 110855771\nBug: 78365291\nBug: 111910846\nTest: playback with persist.debug.sfstats\u003d\u003d{0,1}\nChange-Id: If8822dba9dae6ac0698b142166604371cd6742b2\n"
    },
    {
      "commit": "62e83c9512486a24f0cfd3fe25ba5f2b4f2c2fe5",
      "tree": "b4d27ae99d0bc9ee8e30a11f62c04217d05c1930",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 31 15:25:58 2018 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 31 15:25:58 2018 -0700"
      },
      "message": "Check for crypto size overflow\n\nBug: 111922341\nTest: build\nChange-Id: Icfe2d15c13f1b4bb77e0a9684ffc1284f557e6d5\n"
    },
    {
      "commit": "9b5a7ad0e9901bb1b4ed46f0f1aac5a75ea8e627",
      "tree": "1864c5bc84f8214fd52391e291b20cb2afb5f77b",
      "parents": [
        "93adab132cfdd6e71cee2af14eea711b49a4c76d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Jul 27 17:33:24 2018 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Jul 27 17:41:55 2018 -0700"
      },
      "message": "NuPlayerDecoder: check buffer size before memcpy\n\nTest: none\nBug: 111649621\nChange-Id: I7f19a66a11eaeb54bf9513a4f56aa1ee7d3d81f5\n"
    },
    {
      "commit": "b33e0b072019df086c9e8cddcd5076339bec9312",
      "tree": "34440e92774dd40f68aace48b0c0a6b1c8da856c",
      "parents": [
        "d3566a51e13340c633aaba5a141e3bcfec76c358",
        "0bb94af9e8113129d6ecdc15427b62f747ff7896"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed May 23 13:30:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 23 13:30:35 2018 -0700"
      },
      "message": "Merge \"NuPlayer: Do not account eos frames in dropped-frame-counter\" into pi-dev\nam: 0bb94af9e8\n\nChange-Id: Id5004add0c9da2b8113e2d400eabeee3f3618c79\n"
    },
    {
      "commit": "d3566a51e13340c633aaba5a141e3bcfec76c358",
      "tree": "27eb707da46a85ffd0f3c844e210e14beda86b37",
      "parents": [
        "e320acabd293f740034cc6b7bf2af0a362636b1a",
        "edfea741746883b3ca5898ccfcd6059b1c50204b"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed May 23 13:20:31 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 23 13:20:31 2018 -0700"
      },
      "message": "Merge \"MediaSource: treat empty track as unknown\" into pi-dev\nam: edfea74174\n\nChange-Id: I28d740f1e28e3ba137a48a01bc9587a18820dfb6\n"
    },
    {
      "commit": "0bb94af9e8113129d6ecdc15427b62f747ff7896",
      "tree": "391c9bf0233d191f2d994cca17438c593674c8cc",
      "parents": [
        "edfea741746883b3ca5898ccfcd6059b1c50204b",
        "bc5fe9ab1c55bf114fdc217df2c9bf4adfa41a2f"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed May 23 04:57:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 23 04:57:08 2018 +0000"
      },
      "message": "Merge \"NuPlayer: Do not account eos frames in dropped-frame-counter\" into pi-dev"
    },
    {
      "commit": "edfea741746883b3ca5898ccfcd6059b1c50204b",
      "tree": "32ddc0fca647e9d427acd6df14cdb5edc9ebfdf3",
      "parents": [
        "a5691fa5c6dd06f64f1524f32b3c34fbdb2051ad",
        "7926fc5817ca2c2797cf5e81ba2d2f55d316b323"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 23 00:29:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 23 00:29:35 2018 +0000"
      },
      "message": "Merge \"MediaSource: treat empty track as unknown\" into pi-dev"
    },
    {
      "commit": "7926fc5817ca2c2797cf5e81ba2d2f55d316b323",
      "tree": "93acb3ecca1184d38e2338578da2e507c9030ee1",
      "parents": [
        "c7c321335610ac2ee193c41ef673517ad43d6c42"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue May 22 12:40:22 2018 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue May 22 15:24:44 2018 -0700"
      },
      "message": "MediaSource: treat empty track as unknown\n\nThis will ensure the index of tracks when writing to parcel.\nTest: media post submit tests passed\nBug: 78175875\n\nChange-Id: Id7c26e7fa9865d89d08a344d3751090203c24055\n"
    },
    {
      "commit": "bc5fe9ab1c55bf114fdc217df2c9bf4adfa41a2f",
      "tree": "a72ca3f86392fee1de7f79b90a48060ca2a7c80a",
      "parents": [
        "7bb4333ff2298d0cc1a2125e18a21c174bced01d"
      ],
      "author": {
        "name": "Praveen Chavan",
        "email": "pchavan@codeaurora.org",
        "time": "Fri Apr 27 16:18:11 2018 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon May 21 23:01:58 2018 -0700"
      },
      "message": "NuPlayer: Do not account eos frames in dropped-frame-counter\n\neos-only frames at the end are not rendered. However, these must\nnot be counted as dropped since they are empty eos outputs\n\nBug: 79493409\nChange-Id: Idabaf5cbaaa990860a148bbc6ecafc85f053d5ef\n"
    },
    {
      "commit": "dbd89c79fce27d93c0a15647049f13217ed50433",
      "tree": "847e4c707b64a668d31855fe4a540e6ebbbb2dc3",
      "parents": [
        "a63f07bfcf6ca82d985634a2548e05de0f03fc81",
        "c2d0641bc02e08a74c458002d9460299cd1ff490"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri May 18 16:49:42 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 16:49:42 2018 -0700"
      },
      "message": "Merge \"Move NuPlayer::getStats from binder to handler thread\" into pi-dev\nam: c2d0641bc0\n\nChange-Id: I246f31e0cf3989b88ff9e58025e5f64245ed2b72\n"
    },
    {
      "commit": "ffc941f7adbde51091c3b1eea998e0a264006300",
      "tree": "16fb6d7d15dd6e321b723181967b25cf461e5be1",
      "parents": [
        "8ebe13e647fff30e9e05870b51e0ab15bdf7ef4b"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri May 18 11:08:37 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri May 18 13:46:32 2018 -0700"
      },
      "message": "Move NuPlayer::getStats from binder to handler thread\n\nmove NuPlayer::getStats() functionality to handler thread so that to avoid race condition\nwith other mVideoDecoder references.\n\nBug: 78365291\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.MediaPlayerTest\nChange-Id: Ib62a640a77c90cf3f849aa1da960169496a460e6\n"
    },
    {
      "commit": "41cd823562cb58642eb2fe0d19328259227766c4",
      "tree": "7a5c1160d00bd913f8507da52523e0b80b08b448",
      "parents": [
        "8add485d4b07deb5c84feb594c688be514a491c7"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed May 09 00:16:42 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed May 09 07:33:23 2018 +0000"
      },
      "message": "Remove unused `tags` property from Android.bp files\n\nThe tags property is (and has always been) unused by Soong. The property has\nbeen defined as a list of strings, and the `androidmk` converted any\nLOCAL_MODULE_TAGS entries over to it, but we\u0027ve never done anything with it.\n\nIn preparation for removing the definition from Soong, I\u0027m removing it from all\nAndroid.bp files in the tree.\n\nSince this has never done anything, this is a no-op, but if you really did want\nthe Android.mk behavior, the proper way to define a module to be installed in\nuserdebug / eng builds is to use PRODUCT_PACKAGES_DEBUG or PRODUCT_PACKAGES_ENG\nin the appropriate product makefile.\n\nChange-Id: I4a6a26cd7e139c19f63e02d6e1e7a2617c55b72d\nExempt-From-Owner-Approval: global no-op build change\nTest: remove `tags` from Soong, see errors go away.\n"
    },
    {
      "commit": "a67354ef2aa3c31c6fb31d5ad9426a1c57149578",
      "tree": "7efbbc53ade917e2e29a8c7a5b8ed3962dcb0455",
      "parents": [
        "b4dc74ccde9739553bace8744e4df97c67df30f7",
        "11f6d2be142196a6e902841472722637071d21a8"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu May 03 12:33:29 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 03 12:33:29 2018 -0700"
      },
      "message": "Merge \"fix position go backward after resume\" am: 334e5dff47\nam: 11f6d2be14\n\nChange-Id: Ifdfcee88bde5fdfba7e93173d1add68abcfdfebb\n"
    },
    {
      "commit": "3617795ed912785c796821c07936817e8d07a9de",
      "tree": "0baad5269cdc197ac07ace10449ce22f2e779307",
      "parents": [
        "6f4512914d90430bf135de221897887638c79f25"
      ],
      "author": {
        "name": "andysu",
        "email": "andysu@android.com",
        "time": "Fri Apr 20 15:17:13 2018 +0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Apr 25 12:31:59 2018 -0700"
      },
      "message": "NuPlayerRenderer: cancelAudioOffloadPauseTimeout() when onDisableOffloadAudio().\n\n    This fix is for an offload track if paused and invalidated.\n    when an offload track is paused, it would startAudioOffloadPauseTimeout().\n    But if the offload track is invalidated and fall back to non offload mode,\n    the timeout would not stop, and will tear down the track after timeout.\n    Test: self-tested more then 50 times when fall back to non offload happens.\n    Bug: 77182500\n\nTest: bug is fixed.\nChange-Id: I424fc96e6a5811afacd362409b472c2493c4bb71\nSigned-off-by: andysu \u003candysu@android.com\u003e\n"
    },
    {
      "commit": "db13135caa6eafd6217efb8d73e7c01f4a3e8576",
      "tree": "f8d0fd90ae177f1bd7bf4bbc7c6a0e580e483bbe",
      "parents": [
        "05fa245462238847528cd18e04aa77f85b0491a4"
      ],
      "author": {
        "name": "zengjing",
        "email": "zengjing@xiaomi.com",
        "time": "Mon Mar 19 17:23:49 2018 +0800"
      },
      "committer": {
        "name": "zengjing",
        "email": "zengjing@xiaomi.com",
        "time": "Wed Apr 25 11:21:51 2018 +0800"
      },
      "message": "fix position go backward after resume\n\nWhen audio played with MediaPlayer without offloaded, if we pause the player,\nthen call start. It may be occured that the position get from getCurrentPosition\nincrease first, and then decrease after a while. We found that, when call\ngetCurrentPosition after start() was called, mAudioSink-\u003egetPlayedOutDurationUs\nretrun 0, and MediaClock was update with mAudioFirstAnchorTimeMediaUs. In this case,\naudiosink has not start to play actually, but the pts will be caculated refered to\nmAudioFirstAnchorTimeMediaUs. After audiosink start successfully, onNewAudioMediaTime\nwill be called, which will call updateAnchor to set pts. As a result, the position get\nby calling getCurrentPosition get descreased, which will be observed from our UI.\nReturn mAudioFirstAnchorTimeMediaUs without updateAnchor before valid value obtain from\ngetPlayedOutDurationUs will fix this issue.\n\nTest: NA\n\nChange-Id: I94b644e5f31c66e1b720c7f60ed8d656842f6285\nSigned-off-by: zengjing \u003czengjing@xiaomi.com\u003e\n"
    },
    {
      "commit": "210451e595dc955124b8926cdb2abf86aae0f22c",
      "tree": "3a843ca2b27a095a9b4385400c6855040a576d62",
      "parents": [
        "44be1730bb46f706efed1014ef9a2f3403406b49"
      ],
      "author": {
        "name": "Anubhav Phukan",
        "email": "anubhavp@codeaurora.org",
        "time": "Fri Jul 28 13:05:31 2017 +0530"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 11 14:39:48 2018 -0700"
      },
      "message": "media: Print stats when application stops playback\n\nCurrently,  stats are printed only when clip reaches EOS. If\nThe app stops by calling reset(), stats are not printed. To\nget the stats in such scenarios, we need to dump the stats in\nthe reset() method.\n\nBug: 64121714\nChange-Id: If064b8391ed01a6605791625ddead4fdef50aa1d\n"
    },
    {
      "commit": "355b2bb6b32c5ca2a7a61f91f947e4f339ce520d",
      "tree": "ef12c8254a2bce3ced92da7bd7dcb487403010c7",
      "parents": [
        "4354cf89469067ef9a264d67b4bfef35213fa60a"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Apr 09 16:36:23 2018 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Apr 10 17:17:44 2018 -0700"
      },
      "message": "NuPlayer: add more logging to debug offload teardown.\n\nTest: CTS tests\nBug: 73561958\nChange-Id: I3a10b7ff98853119e105f89ec624d2732630c409\n"
    },
    {
      "commit": "0967c6c06d030636e2c584ce3e24924357a3a854",
      "tree": "9614233f9011d7645c95a1b84b610aa609845fe3",
      "parents": [
        "2383098d54b6503875bdf0c6b649fa66f22d79ac",
        "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "message": "Merge \"AudioTrack: Prevent server from reading client data after stop\" into pi-dev"
    },
    {
      "commit": "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed",
      "tree": "e89b4aa887013efbc8227dcf4c56addf4ab284b9",
      "parents": [
        "1f03085b596f185d91ccae11b7c0d9f0bc8cd206"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 29 16:30:14 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 02 14:19:24 2018 -0700"
      },
      "message": "AudioTrack: Prevent server from reading client data after stop\n\nPrior to this CL, if an AudioTrack client wrote audio data after\nAudioTrack stop(), but before the track was drained by the server,\nthe newly written client data would be consumed in the drain.\n\nWe now limit the server read to the client write position on stop.\nThis interlocking is essential for rapid asynchronous AudioTrack\ncommand processing.\n\nTest: AudioTrack CTS, SoundPool looping, bug test case\nBug: 75788313\nChange-Id: Ib70e3dc46afe047a8c6cf1fb906a618b3c66cc7f\n"
    },
    {
      "commit": "47afe0a1a6f37e7807a81acb21ef588aec0a3518",
      "tree": "7c599aacfa404d393b669e8b68abfe44ea735721",
      "parents": [
        "6dc6d938c33db5ef1f5d17779040bf3c7dd25d3f"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Mar 27 15:15:30 2018 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Mar 28 17:05:20 2018 -0700"
      },
      "message": "Add OnMediaTimeDiscontinuity notification\n\nTest: MediaPlayerTest\nBug: 63934228\nChange-Id: I7efb58d00dc86b17b9d97775d1a2672e40e841d3\n"
    },
    {
      "commit": "d83d4f4a43616f38217591ba2d3f10d77fd4e748",
      "tree": "8c4c462635c15290a3436b01dc2614caade4ff84",
      "parents": [
        "b95a5989190a427a7ea092dc18741af524009bdb"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Sat Feb 24 19:02:46 2018 -0800"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Mar 05 20:36:13 2018 +0000"
      },
      "message": "NdkMediaExtractor: per-sample format metadata API\n\nBug: 63934228\nTest: MediaPlayer2Test\nChange-Id: I8ac081ba91152b1bb2e7bb61bf6977f90bcb8e3c\n"
    },
    {
      "commit": "7c9123d1bc697dc0496374908281b7a76914574a",
      "tree": "5cfe914cb04a18b9bb9564595c15519e3deeab52",
      "parents": [
        "baea52472c0e8b1dd2f63b2c39539fd477552abd",
        "a1d39ba72fd92df6b447939b1bbede5c56df17e6"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 02 04:46:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 04:46:55 2018 +0000"
      },
      "message": "Merge \"Revert \"NdkMediaExtractor: per-sample format metadata API\"\""
    },
    {
      "commit": "a1d39ba72fd92df6b447939b1bbede5c56df17e6",
      "tree": "54fff7206b48bd7123929128a4fc1e2b1d0a44d4",
      "parents": [
        "062ffd042fcbd237f445d499bc8ea8c5baf61d98"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 02 04:33:02 2018 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 02 04:33:02 2018 +0000"
      },
      "message": "Revert \"NdkMediaExtractor: per-sample format metadata API\"\n\nThis reverts commit 062ffd042fcbd237f445d499bc8ea8c5baf61d98.\n\nBug: 63934228\nBug: 74089496\n\nReason for revert: original change bypassed presubmit, causing mediaextractor crash, \n\nChange-Id: Iac4c49659dfa7415908d60da98a2285c583a1196\n"
    },
    {
      "commit": "ca791b98577f2843c9fe8bc7ed28aadf02fb255c",
      "tree": "b95cfa1ec40d713a937b0105bb48e38141d5dc82",
      "parents": [
        "b66d56699b899ebc19d662abb0b1a3dbc3736e22",
        "062ffd042fcbd237f445d499bc8ea8c5baf61d98"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Mar 01 23:51:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 23:51:40 2018 +0000"
      },
      "message": "Merge \"NdkMediaExtractor: per-sample format metadata API\""
    },
    {
      "commit": "062ffd042fcbd237f445d499bc8ea8c5baf61d98",
      "tree": "689681687a4f67f44b6532a904718eb984919c25",
      "parents": [
        "006b7eebe4c86eba7a67471d99b061b6b76177f5"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Sat Feb 24 19:02:46 2018 -0800"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Mar 01 14:11:11 2018 -0800"
      },
      "message": "NdkMediaExtractor: per-sample format metadata API\n\nBug: 63934228\nTest: MediaPlayer2Test\nChange-Id: I3e6dc40d39bcb6d939ef7c555c2373995a9b6ae4\n"
    },
    {
      "commit": "9b887324b8c3f86f012915a6f637081b158a221b",
      "tree": "6cd32e39ff1d679900044598bbc84bafc0cf461c",
      "parents": [
        "8954d94d24e9078672b952bd29e0bb5e651c9aba",
        "eda325241ec3bca25e828b24538c7640efd7e24e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 18:50:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 18:50:59 2018 +0000"
      },
      "message": "Merge \"better playback time tracking in nuplayer\""
    },
    {
      "commit": "eda325241ec3bca25e828b24538c7640efd7e24e",
      "tree": "d8e98beab89a580fbf8df33f26212f2c80ec0c28",
      "parents": [
        "bb4bbb08398548e29e6804c5cc674b340830f719"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 28 12:08:28 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 28 12:08:28 2018 -0800"
      },
      "message": "better playback time tracking in nuplayer\n\nFixes problem where playback time was being cleared as part of\na reset before media.metrics stats were logged.\nAdded code so that getMetrics() calls will return proper in-progress\nplayback time (previously, playback time was added to the metrics data\nonly at the end).\nAdded initialization of timestamp tracking pauses for rebuffering.\n\nBug: 74008613\nTest: dumpsys media.metrics observation\n"
    },
    {
      "commit": "4f8f900d3cb8ee117980705ac5df250f9df63bfc",
      "tree": "9cb144737b86c91e2053293b611589ec79946af0",
      "parents": [
        "547921396126d2e5e6387a04bc971e616250574b",
        "7d2c6e8be2c9a4f3c1364d243856a345f17f851e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 22:02:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 22:02:33 2018 +0000"
      },
      "message": "Merge \"Move mediadrm-related headers\""
    },
    {
      "commit": "c2c0aabfef24cbf48cdf6755f8627386971abdd3",
      "tree": "9ae9ca31e811a59e6530f362f6bac9f324a30209",
      "parents": [
        "4c96b75c87bc3f8dd2da7f76b08a81333b43ce22",
        "6969da62b068aff2aee650d57590532f8fc8de69"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 26 23:30:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 26 23:30:00 2018 +0000"
      },
      "message": "Merge \"Revert \"Remove IDataSource dependency from DataSource.\"\""
    },
    {
      "commit": "3d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0",
      "tree": "4e73f99782f61c1d3d76767b9e03e2aae7ea6130",
      "parents": [
        "13cb23855c3b5242818725262d8822dd4f9be24e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 16 08:24:08 2018 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 23 10:04:34 2018 -0800"
      },
      "message": "Remove RefBase from the extractor API\n\n- Add MetaDataBase base class that MetaData derives from, but which\n  does not derive from RefBase.\n- MediaBuffer::meta_data() now returns a MetaDataBase\u0026 rather than an\n  sp\u003cMetaData\u003e\n- Rename MediaSourceBase to MediaTrack.\n- MediaSource no longer derives from MediaSourceBase (or MediaTrack)\n- MediaTrack::getFormat(), MediaExtractor::getTrackMetaData() and\n  MediaExtractor::getMetaData() all take a MetaDataBase\u0026 parameter that\n  they fill out, rather than returning a MetaData directly (the\n  corresponding methods on MediaSource and RemoteMediaExtractor continue\n  to return MetaData)\n\nBug: 67908544\nTest: CTS MediaPlayerTest, DecoderTest, EncodeDecodeTest, manually record video\n\nChange-Id: Ib531ab309061290be33d40d6100c9a8127e22083\n"
    },
    {
      "commit": "7d2c6e8be2c9a4f3c1364d243856a345f17f851e",
      "tree": "3aab41fe8acce7056a1e7b01ebc2e8882e416b9a",
      "parents": [
        "987ac7056040ed1594dc975c8a9d7cee463fa834"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 16 16:14:59 2018 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 16 17:04:00 2018 -0800"
      },
      "message": "Move mediadrm-related headers\n\nRelocate drm and crypto headers from media\nto mediadrm to have finer grained ownership\n\nbug:73556221\nChange-Id: I7d1b5944f261f9b1fdeed7605e4c0b4b4ca43e1a\n"
    },
    {
      "commit": "1889c3edad32995c0cf26ae2248fe7c957b7ec84",
      "tree": "5a4bd7fec36d039f75d04124b46d6295ac65e200",
      "parents": [
        "405b3c70ccf6c6671fbbe72557a8493e4e0f6097"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Feb 01 13:44:57 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 12 23:59:34 2018 -0800"
      },
      "message": "Add MediaBufferBase and use it in MediaSource and MediaBufferGroup.\n\nMediaBuffer class exposes internal classes, ABuffer and IMemory, which\nwe don\u0027t want to expose to plugins. This change introduces\nMediaBufferBase which does not expose any classes from system library.\n\nTest: build and post-submit media cts tests\nBug: 67908556\nChange-Id: Ic9ee239caf9b84b2b3740e2d533257afa25c8784\n"
    },
    {
      "commit": "6969da62b068aff2aee650d57590532f8fc8de69",
      "tree": "129cd94c2c16f00fa845abd2b12892acab0cdb84",
      "parents": [
        "405b3c70ccf6c6671fbbe72557a8493e4e0f6097"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 12 20:55:14 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 12 23:26:00 2018 -0800"
      },
      "message": "Revert \"Remove IDataSource dependency from DataSource.\"\n\nThis reverts commit 514674257ef6954a7479ac93a26a07061f54462d.\n\nThe original change Iaba6d9be is no longer needed since we\nseparated out DataSourceBase from DataSource. Now, DataSource\nmay have a method relying on a class from libmedia, IDataSource.\n\nTest: checked the correct wrapping path with \u0027dumpsys media.extractor\u0027\nBug: 72869975\n\nChange-Id: Ib0d5ca863fa70a4a96f97b3377c209e1f288f443\n"
    },
    {
      "commit": "de15b8c160c720c48b93796016801e7ae0b6bd2d",
      "tree": "49044f23ead7f0dca058f477f5b1365a16a6e144",
      "parents": [
        "a2544c5431224995ade19611642d2b534939fb14"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 30 16:35:56 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 07 11:55:19 2018 -0800"
      },
      "message": "link media.metrics native strings to api-controlled java strings\n\nadd comments to native media.metrics code pointing to how they\nare (and aren\u0027t) to be kept in synch with their java counterparts\nthat are part of the public API (and therefore pretty much fixed).\n\nBug: 72492234\nTest: compilation\nChange-Id: Ic096545a5cdfb2160c6b66438d345d8e625384b9\n"
    },
    {
      "commit": "92d23b433bd770c22c2d4a30b573602f5565de1b",
      "tree": "e2ff902f2be5d131e8a1cd4af09868d3a5af2794",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 12:10:30 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 14:38:27 2018 -0800"
      },
      "message": "Remove finalized concept from media.metrics\n\nthe \u0027finalized\u0027 concept didn\u0027t pan out -- remove references to it.\nSimplifies the code flow.\nAlso purged some uses of generateSessionID().\n\nBug: 71874686\nTest: logcat/dumpsys\nChange-Id: I39e48526a5696158d8195f47154881ca6ecda266\n"
    },
    {
      "commit": "49ce671c4efa4c5d038351ca441e34c5afa5241f",
      "tree": "f269ef96d9f6dbcb169e29accb4f9f1f54830e3e",
      "parents": [
        "d21fb560b26be64a588ff96979022ae4d52f5d3a"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Jan 24 10:16:25 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Jan 26 08:48:56 2018 -0800"
      },
      "message": "Remove unused includes and forward declarations in libmediaextractor/include\n\nTest: make checkbuild\nBug: 67908556\nChange-Id: If840305af5c043bb8014590eb208cf11c99e61ee\n"
    },
    {
      "commit": "bc8f53b8c1c220d9ce01526b6e3834f14af98ed5",
      "tree": "0742ac2262f28acb9c827f5ad96fae12f13fb354",
      "parents": [
        "de9a7b5caa3cd8b59630b2bc13e1cb4420618940"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jan 25 17:01:44 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jan 25 18:11:38 2018 -0800"
      },
      "message": "Revert \"Revert \"Move MediaBufferXXX from foundation to libmediaextractor\"\"\n\nThis reverts commit 95a8bfab98a73a75eb60ecf2cc8683f4a1f04b35.\nPlus, keeps \u0027virtual\u0027 keyword for ~MediaBuffer which has a child class.\n\nTest: cts-tradefed run cts-dev --module CtsMediaTestCases --compatibility:module-arg\nCtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice\nBug: 67908542\nChange-Id: Ib94d574d6bbd6245c174dd1c9bcca379015724cc\n"
    }
  ],
  "next": "4b780702948d19caef60617666c69b6d7f64aa29"
}
