)]}'
{
  "log": [
    {
      "commit": "375283dd6031a71e44fc17efad05b741302c78e5",
      "tree": "da9cbab41fb7a3610201cfe17d09d7a5e9d3a37e",
      "parents": [
        "b77e219423638bd958a5673dba017ea72aaa2e39"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 21 18:14:43 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Sep 15 18:02:58 2020 +0000"
      },
      "message": "Add package name when creating AudioTrack.\n\nThe package name can be used when starting an external vibration, which\nis used by vibrator service to check if the application has the\npermission to start vibration.\n\nBug: 165910728\nBug: 162343845\nTest: atest AudioTrackTest MediaPlayerTest\nTest: start audio-coupled-haptic playback\nChange-Id: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\nMerged-In: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\n"
    },
    {
      "commit": "9b79f50b4a71a2b68ed46b4fac874d48af8fc773",
      "tree": "1acccfae5b4422be91e2dc2215fe7b931784352a",
      "parents": [
        "b247f19b890fbbeb5d20470104057f33b18d44cb",
        "bd0b5d47624141e32d08887ff40a597b6593a321"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jul 30 06:34:48 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 06:34:48 2020 +0000"
      },
      "message": "Merge \"MediaTesting: Add Audio StagefrightRecorder Unit Test\" am: e2fcd29925 am: bd0b5d4762\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1345156\n\nChange-Id: Ibf41a39ee54c6c06f196e9ef4717dc5daaf56508\n"
    },
    {
      "commit": "505b3e404434367f78262f0ea3979834f78d3a52",
      "tree": "794ed45f9834f0992b365760ecacbfd71f388f5b",
      "parents": [
        "3fd4dee8960cd6bccbb21227d43dfef839d33875"
      ],
      "author": {
        "name": "Ruchika Ashtankar",
        "email": "ruchika.ashtankar@ittiam.com",
        "time": "Thu Jun 11 21:40:24 2020 +0530"
      },
      "committer": {
        "name": "Ruchika Ashtankar",
        "email": "ruchika.ashtankar@ittiam.com",
        "time": "Wed Jul 29 00:06:54 2020 +0530"
      },
      "message": "MediaTesting: Add Audio StagefrightRecorder Unit Test\n\nTest: atest StagefrightRecorderTest\n\nBug: 159410389\n\nChange-Id: Ia0a7e9aa867918468c6f8a3670bd34c1532706f3\n"
    },
    {
      "commit": "85355f0e81ce401de2914c6108569c6b1a1dbb7d",
      "tree": "c89c95317bf8a84caba2cf7d87b2cbfaae2da300",
      "parents": [
        "1928cddbe98a24e173d1b83b870c67cd8f2deffb"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Sat Jun 27 22:38:45 2020 +0100"
      },
      "committer": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Tue Jun 30 17:23:50 2020 +0100"
      },
      "message": "Fix FD ownership for local FileSource\n\nPlayerServiceFileSource took ownership of the GenericSource\u0027s FD and\nclosed it if extraction failed, causing a SIGABRT from fdsan. Fix this\nby dup\u0027ing the FD before passing to PlayerServiceFileSource.\n\nBug: 160136562\nBug: 159810405\nTest: manually tested SIGABRT disappears after this change\nChange-Id: I3f1f5daadba27bc75e2b550884d7bba559d6f2e7\n"
    },
    {
      "commit": "8a5bfc35916863759285af1a292d8989b6421c59",
      "tree": "2c9c4b79e52633bb80d4e59a260dce95fe2c8819",
      "parents": [
        "6d5a5c10a5b9389cd84b5a10d5814e65eeb004aa"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Thu Jun 04 15:20:27 2020 +0100"
      },
      "committer": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Fri Jun 05 09:07:09 2020 +0100"
      },
      "message": "Clamp audio seek to non-zero timestamp\n\nSeeking first seeks the video source, then uses the \u0027resolved\u0027 seek\nposition for video to seek the audio source. If an edit list is handled\nby prerolling from a preceding keyframe in the video track, this can\nlead to negative resolve seek positions from video, and seeks to\nnegative values are ignored.\n\nClamp the resolved seek position from the video source to be\nnon-negative so that the seek is not ignored. This fixes looping for\nfiles with edit lists that require prerolling from before zero, though\nvideo rendering needs to catch up after looping back to zero.\n\nBug: 156762034\nTest: Manually verified using the APK in b/156762034#comment1\nChange-Id: I59753b36d0f1272d4a7b4292b5edd787f9575dfa\n"
    },
    {
      "commit": "aad519df7fe3b69c8247669ea77ce339a44e8c51",
      "tree": "9daf955e79a48d66549b365794e9342bdf25c4ca",
      "parents": [
        "e658962c4246669810fc756b098f7fee8d220659"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Wed May 20 16:49:23 2020 +0100"
      },
      "committer": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Wed May 20 16:59:34 2020 +0100"
      },
      "message": "Fix potential use-after-free issue\n\nNuPlayerListener passed this out of its constructor to\nIStreamSource-\u003esetListener, and it would get wrapped in a smart pointer,\nthen free\u0027d when that method returned.\n\nMove the setListener call after instantiation of NuPlayerListener to\navoid passing this out of the NuPlayerListener constructor.\n\nTest: tested in presubmit\nBug: 151456667\nChange-Id: I996d9ad9eaf0e52992b7f9e10fd94a94c350ad73\n"
    },
    {
      "commit": "db0b34440ac627f7d153ec7849d7590ab199d334",
      "tree": "9af209e1b9d5deec7524adc73adfc814e37897c8",
      "parents": [
        "d3d11c6dd5e520db0aba8ad17fdfe9f57d47a4df",
        "116913ac5307d9d31f280f5328740ce3d439f5ce"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Tue May 19 00:33:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 19 00:33:29 2020 +0000"
      },
      "message": "Merge \"MPEG4Writer:Ignore sample table of malformed track\" into rvc-dev"
    },
    {
      "commit": "116913ac5307d9d31f280f5328740ce3d439f5ce",
      "tree": "815c818846d8e34f630f901a84380d4f4615076f",
      "parents": [
        "fd267eb2f96969b8cb19389a06a6c1dbbc2ec40a"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Sat May 02 22:10:12 2020 -0700"
      },
      "committer": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Mon May 18 13:47:50 2020 -0700"
      },
      "message": "MPEG4Writer:Ignore sample table of malformed track\n\n1. Don\u0027t write sample table box for malformed tracks.\n   Return error to the client about malformed track.\n   MOOV atom would be finalized with other well-formed tracks.\n2. Throw relevant track id and recorder-error on error while making\n   codec specific data from input buffers for AVC, HEIC, HEVC and MPEG4.\n3. Capture and log errors returned by system calls.\n4. Bubble up other relevant errors.\n5. Good to release internal buffer and stop source before notifying client.\n6. Don\u0027t need to update filesize for every preallocation.\n   Use fallocate in FALLOC_FL_KEEP_SIZE mode.\n7. Added some important logs\n8. Added and corrected some comments.\n9. Added TrackId subclass to validate track ids for MediaRecorder and\n   MediaMuxer.\n\nBug: 153923798\nBug: 156657952\n\nTest: atest android.media.cts.MediaMuxerTest\n      atest android.media.cts.MediaRecorderTest\n      atest android.mediav2.cts.MuxerTest\n\nChange-Id: I87f9b8cc9cbd23789f7fb69490e8a6f81469907a\n"
    },
    {
      "commit": "e99bcf2fa81dc5192349f3d222d46e4fbf23f919",
      "tree": "5d6257291e11aafdc9bb3a727714aa067dcb03bc",
      "parents": [
        "07f031e889d78edd549d8ad4254cd31902b46479"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 04 16:18:33 2020 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat May 09 12:23:53 2020 -0700"
      },
      "message": "Expand nuplayer mutex for mediametrics management\n\nrefactor some mutex for how nuplayer sets up mediametrics data.\nexpanded locking to eliminate a couple race conditions.\n\nBug: 151644303\nBug: 151643722\nTest: poc attached to bugs\nChange-Id: I75f29a6254c5eab5d4f524ee7a7ef59f93a0b405\n"
    },
    {
      "commit": "a6b270399fdacb09826e751657b7bb321652e3ac",
      "tree": "10091ff0524d2d29dcda00e63630d0f51b300655",
      "parents": [
        "669acb12c3092e581a1ecc347e6d573e96c8ca0e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 10:34:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 11:41:38 2020 -0700"
      },
      "message": "MediaMetrics: Track AudioTrack and AudioRecord callers\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nBug: 153658358\nChange-Id: If2b0a792cf4cc6c5b125513861b3dfb257bb3cbe\n"
    },
    {
      "commit": "e9eb03e9db8f66c711e2824e0f96d1fdc8f727b5",
      "tree": "77671b8d041a66b35884657fc4e05c5e5214787a",
      "parents": [
        "95ec1b8ea487abbf4ef50d53c227338f559e9599"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 04 14:08:23 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 06 09:48:59 2020 -0700"
      },
      "message": "MediaUtils: Move MemoryLeakTrackUtil.h to the proper library.\n\nTest: dumpsys sanity check of mediaserver, audioflinger, drmmanager\nBug: 149850236\nChange-Id: I7a3694444de0f940beacb699bc6f07ebb6a7cc7d\n"
    },
    {
      "commit": "f0f0311eebbe7b60be5ef86e4fe7f2fc116efc19",
      "tree": "e5380e750d99ae636eede73f8cd06573f913d460",
      "parents": [
        "c42069ac43575462429c8dd83fda7730dda1771d"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Mon Feb 24 18:47:09 2020 -0800"
      },
      "committer": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Wed Mar 04 01:18:01 2020 +0000"
      },
      "message": "Mpeg4Writer/MediaMuxer:allow empty tracks\n\n1) Don\u0027t count tracks with no samples as malformed for MediaMuxer, but\nkeep the old behavior as it is for MediaRecorder.\n2) When there are no samples to be written in a track, skip that one, but\ncompose mpeg4 file with all other tracks in it.\n3) Allow notifications in MediaMuxer during stop() process.\n\nBug: 144108285\nBug: 146423844\nBug: 148754639\n\nTest: 1) Unit tested by adding a video and an audio track, once leaving\n      audio track with no samples and once leaving video with no\n      samples.  Mpeg4 file with expected track was created both the times\n      and played well.\n      2) android.mediav2.cts.MuxerUnitTest$TestApi#testSimpleStartStopMuxer\n      3) android.media.cts.MediaMuxerTest\n      4) android.media.cts.MediaRecorderTest\n\nChange-Id: If76a1f3b60d09836d53bce6f6e759e6a751f5538\nMerged-In: If76a1f3b60d09836d53bce6f6e759e6a751f5538\n(cherry picked from commit afc9f27233fa7dfb8c03e0fc83f612e7a19f27f2)\n"
    },
    {
      "commit": "3784ab5009e070491c12bbddbf4948eddeac3de6",
      "tree": "04fe406dfa253947440716bbbe234a84bf9b22d5",
      "parents": [
        "ae3b9539cead752af48515f2e43c9985c3fc04e6"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 18 17:18:24 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 18 20:03:09 2020 -0800"
      },
      "message": "Accommodate the move of AudioPlaybackRate to system/audio.h\n\nAudioPlaybackRate is now defined in system/audio.h\nas \u0027struct audio_playback_rate_t\u0027 (in global namespace).\nSimilar for the related enums.\n\nTo accommodate the existing code, introduce AudioPlaybackRate\nas a typedef in the \u0027android\u0027 namespace.\n\nUpdate code that was forward declaring AudioPlaybackRate\nas it\u0027s not a struct anymore.\n\nBug: 133526565\nTest: m\nChange-Id: Iba20f1de1e8779cd78ac4573f2082416f2b428e2\n"
    },
    {
      "commit": "1b41d44972c2c4bdce23c2400c3d7b7604387c65",
      "tree": "9a3d039edda4756f954dab78e3069096fa63b033",
      "parents": [
        "04e4465aa7b58c07c4a278b9ddc2731b20b645ad"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 06 09:10:40 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 06 09:10:40 2020 -0800"
      },
      "message": "Avoid reading at negative offsets\n\nPlayerServiceFileSource had the same logic as FileSource that could\ncause reading at negative data source offsets, so fix that too.\n\nTest: build\nBug: 141242340\nChange-Id: I60226d85ece83339444d9ec1c0a741271e33e127\n"
    },
    {
      "commit": "5277625231db4f313115fbcb6cefca7f2dfc2ce0",
      "tree": "288802a30819352b91c3b270329fb41b577928a0",
      "parents": [
        "bccf38e3fa6bc2a372c3a0d38c6274b68c0e5fb7",
        "7c96ea7ff84e1084332548583841735b694bfebd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sat Jan 25 03:44:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 25 03:44:28 2020 +0000"
      },
      "message": "Merge \"Remove mediametrics include symlinks\""
    },
    {
      "commit": "0bc6f60e1f036380bd48d022631e6561b90f210c",
      "tree": "cb680a3b14d22c16c8d9d419f99e3ac5c5d7f7bc",
      "parents": [
        "f5614e2fa3fa1a38e3a6fa4c058424fc053be651",
        "bf4f332a55ccb01d821e05dd0a3c7431a46e964b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 20:33:59 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 20:33:59 2020 +0000"
      },
      "message": "Merge \"Revert \"Prime cache for tone mappers in mediaserver\"\""
    },
    {
      "commit": "bf4f332a55ccb01d821e05dd0a3c7431a46e964b",
      "tree": "ff0f220dd8f096a0c77df0b5b81d80c260c41260",
      "parents": [
        "d4fe6b1339be666fd1df2a6a7ed3ce8528ea8064"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 22 19:11:06 2020 +0000"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 22 19:16:00 2020 +0000"
      },
      "message": "Revert \"Prime cache for tone mappers in mediaserver\"\n\nThis reverts commit d4fe6b1339be666fd1df2a6a7ed3ce8528ea8064.\n\nReason for revert:\nThis CL was meant to pre-init the RenderEngine to save time\non the actual thumbnail extraction. But it is using more\nmemory after boot.\n\nSince HDR clips are less common at present, we\u0027ll delay the\ninit to first use for now.\n\nbug: b/147047966\ntest: atest android.media.cts.MediaMetadataRetrieverTest\n\nChange-Id: I5b8799bbe2f4ae496e15b5ba699203223fe3013b\n"
    },
    {
      "commit": "7c96ea7ff84e1084332548583841735b694bfebd",
      "tree": "eb5d7c1bcb91cea21469e46b7c014ae44635a217",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 10 15:46:22 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 16 15:55:18 2020 -0800"
      },
      "message": "Remove mediametrics include symlinks\n\nBug: 143245419\nTest: build\nChange-Id: I6c836e60c0fe078f5ab7370aec156bdd6e8dcbf0\n"
    },
    {
      "commit": "2efe5c702e0401016eb7f6bce583751905ebc6f1",
      "tree": "2653c1b468dddfdc0b20d84568df37db47d2b004",
      "parents": [
        "b54d7da58b5458e268468dc4ad5ce299e2dfa7e6",
        "f4b7e72b55f1d0a6e54eee10694901153e235850"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 07:38:15 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 07:38:15 2020 +0000"
      },
      "message": "Merge \"Adds a null check in NuPlayer::closeAudioSink.\" am: 54b00e6d06 am: 8b0bb18079 am: f4b7e72b55\n\nChange-Id: I3b5a63825217ec0e387f58d807809ef978b413a1\n"
    },
    {
      "commit": "f4b7e72b55f1d0a6e54eee10694901153e235850",
      "tree": "d9d6aff45affb65224688d9f5f4db23deedf9883",
      "parents": [
        "f980ebd16cb49f06c9ef983d8ba0723045945061",
        "8b0bb18079358c9d7f9735e0d280c8c04ebf81f8"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 07:22:35 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 07:22:35 2020 +0000"
      },
      "message": "Merge \"Adds a null check in NuPlayer::closeAudioSink.\" am: 54b00e6d06 am: 8b0bb18079\n\nChange-Id: I6b584b9ae601206f0d481f391117dee8a4bafd57\n"
    },
    {
      "commit": "1e0d88b26a3605d4c620932f4bf9af54e37da376",
      "tree": "a66dfdc7b8bb43301d7ba075e9599f61de0ec023",
      "parents": [
        "982ecd07f4da2f93704aa84a3b4f61fa79466b8b"
      ],
      "author": {
        "name": "Daniel Norman",
        "email": "danielnorman@google.com",
        "time": "Tue Jan 07 15:02:54 2020 -0800"
      },
      "committer": {
        "name": "Daniel Norman",
        "email": "danielnorman@google.com",
        "time": "Tue Jan 07 15:05:10 2020 -0800"
      },
      "message": "Adds a null check in NuPlayer::closeAudioSink.\n\nThis was causing a null deref in cts/security/gce-all.\n\nBug: 142652210\nTest: Run cts/security/gce-all, observe no more crash.\nChange-Id: If2003b650f69e88825219113ce1b7d70edc4731d\n"
    },
    {
      "commit": "b7b2f5d8658b5d08831f91c25400c9717b05dac1",
      "tree": "fbdb1e2d6576d8f62d54bd53bd5fc44bbcd23305",
      "parents": [
        "fe0d920eddef871f8c392cafd45023eea40f3800",
        "7291da64f5c19d4f9144014601bca58f7562ddef"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Dec 20 20:54:55 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 20 20:54:55 2019 +0000"
      },
      "message": "Merge \"Remove header symlinks\""
    },
    {
      "commit": "cb257970c1921db3cbfd15823ef0a561257b4690",
      "tree": "67a00104391a68c4eafff2d125b4c349fb4f8011",
      "parents": [
        "dc857dc042bc8f111449faffe9a10aed34bfa24c",
        "a7a3bbdf43253ee759f8ebaaa40fab68b66fba55"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Dec 20 20:38:51 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Dec 20 20:38:51 2019 +0000"
      },
      "message": "Merge \"Check actual read bytes for TS packets\" into qt-qpr1-dev am: 8f72d008d0 am: a7a3bbdf43\n\nChange-Id: I65cf62f55d0d5c34eb35440dfd3528ae4b575271\n"
    },
    {
      "commit": "2475cf40fe3b60cf96d37c81f2927c13a3565607",
      "tree": "3723b7af79f7644f0556ce66de098293889d480a",
      "parents": [
        "2b15f76dac93be35e20bff4fb11e7168a43927b9",
        "28d4d67a41c1774dfa69e205da5c0478b1752948"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 20 19:54:29 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 20 19:54:29 2019 +0000"
      },
      "message": "Merge \"MPEG4Writer:64bit offset + fallocate\""
    },
    {
      "commit": "1eba80de4e733a5222459020517ed93327966640",
      "tree": "59430bb806951a0ed4f52f63b9ec770c967e35ac",
      "parents": [
        "9ed54cdf4d8970bdeb88e4488dabb56e1d6c79b7"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Sep 09 13:20:10 2019 -0700"
      },
      "committer": {
        "name": "Bryan Ferris",
        "email": "bferris@google.com",
        "time": "Fri Dec 20 10:33:53 2019 -0800"
      },
      "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\nMerged-In: I4b498fe375af657e17838e5839e6348e1463d559\nChange-Id: I4b498fe375af657e17838e5839e6348e1463d559\n"
    },
    {
      "commit": "79673cfb78356afb4bb531d5f6fe115ab41930cc",
      "tree": "82f9a497a3221f4043e4af36f19abd4ee00fbb96",
      "parents": [
        "c1a82b91f050f4b496b2d373046cb4c9fc32c8eb"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 20 21:45:01 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Dec 20 15:58:46 2019 +0000"
      },
      "message": "Implement DrmSessionManager w mediaresourcemanager\n\nBug: 134787536\nTest: DrmSessionManagerTest\nTest: DrmSessionManager_test\nTest: ResourceManagerService_test\nChange-Id: Iab9f4f681c83f46b043cefc8633bb3e513a8e75a\nMerged-In: Iab9f4f681c83f46b043cefc8633bb3e513a8e75a\n"
    },
    {
      "commit": "28d4d67a41c1774dfa69e205da5c0478b1752948",
      "tree": "69877b9052a09ba3ca4a0052b3fbe3f98d690230",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Mon Dec 09 20:25:56 2019 -0800"
      },
      "committer": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Wed Dec 18 14:37:02 2019 -0800"
      },
      "message": "MPEG4Writer:64bit offset + fallocate\n\nUse 64bit offset in mpeg4writer. Allows us to compose/mux files more\nthan 4GB in size.  Notify MediaMuxer and MediaRecorder users about any failure during\nwrite() and seek(), with best effort attempt to save moov box.\nSDK and NDK MediaMuxer.WriteSampleData() would throw IllegalStateException and return\nINVALID_OPERATION as before, but in the very next call to this function after failure.\nEarlier, writeSampleData wasn\u0027t aware of any write/seek failure.\nSDK MediaMuxer.Stop() would throw relevant exception with error message.\nNDK stop() would return relevant errors.\nfallocate() is used to pre-allocate space for MOOV atom dynamically during\nrun time. If required space couldn\u0027t be allocated, then recording is\nstopped and moov atom would be written to the file successfully.\nAdded logic to stop and release looper.\n\nBug: 135685864\nBug: 142060459\nBug: 142915394\nBug: 145235586\n\nTest:  1) atest CtsMediaTestCases -- \\\n\t--module-arg CtsMediaTestCases:size:small\n       2) Composed files of size around 32GB using MediaMuxer and it is playing fine on the phone\n       \tand linux workstation.\n       3) Filled up most of the flash memory in phone and tried to compose files using MediaMuxer\n       \tand MediaRecorder separately. Writing was stopped  when ::write failed due to out of space,\n\tand all threads exited gracefully in both cases. Expected errors were reported in Java layer.\n       \t(pre-allocation was disabled in this step).\n       4) The same experiment as in step 3 with pre-allocation enabled, recording was stopped\n\twhen there was not enough space and moov atom was written to the output file. File played\n\twell on phone and linux workstation.\n       5) atest android.media.cts.MediaMuxerTest\n\nChange-Id: I33de67d9dce3550ce3730a99c4aa92bc71c9f7b8\n"
    },
    {
      "commit": "7291da64f5c19d4f9144014601bca58f7562ddef",
      "tree": "1ba21f95d03a85b24a699d39736d5c4bf481c2f7",
      "parents": [
        "94e872e6894dce7d89954d0515c140ec626d20ba"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Dec 17 13:01:55 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Dec 17 15:32:57 2019 -0800"
      },
      "message": "Remove header symlinks\n\nTest: build\nChange-Id: Ie90eb4fc0233ae6ee152a7bccb182a223b2ceff0\n"
    },
    {
      "commit": "94e872e6894dce7d89954d0515c140ec626d20ba",
      "tree": "3b8a0acc0c514e139b767f255e77a23fbf7d55c2",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4",
        "f27e987d277c186010e8bdd1d5e781158b31f9af"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "message": "Merge \"Naming consistency: MediaAnalytics to MediaMetrics\""
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "51207514eb834ee1a3c1d3218a9615116dc15bab",
      "tree": "1af90c549976b7d12f5b776daf1345853f2ade06",
      "parents": [
        "fa12f52ba2c0f528277bfe7d7543f5f53361850c"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Dec 03 16:24:48 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Dec 13 09:27:38 2019 +0900"
      },
      "message": "unique_fd is passed by value in AIDL interfaces\n\nFileDescriptor type in AIDL was translated into const unique_fd\u0026 in C++.\nNow, it is unique_fd, i.e. passed by value, to make it easier to keep it\nbeyond the scope of the call.\n\nBug: 144943748\nTest: m\nChange-Id: Ic6b1a4cba71c0fedb206b5ca3fb65b9944bbd69f\n"
    },
    {
      "commit": "630f74baaf5280a78350fa1ecb7283768a5c4bf9",
      "tree": "e20620e03a8ef5db88b55dfe70edfaa926ef6c43",
      "parents": [
        "643a5692fb1d1b7b0e2c90faa217816f7b524c51",
        "d17c85023ac2058233121b8a94603687c855c997"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "message": "Merge \"Add explicit private audio recording request\""
    },
    {
      "commit": "d17c85023ac2058233121b8a94603687c855c997",
      "tree": "39fc63d6f1037eafb71dc8046aefedfadfee9b53",
      "parents": [
        "d203cb92c9c9628b3bead45ec08f826544c1d649"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 15:58:35 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 04 17:58:34 2019 -0800"
      },
      "message": "Add explicit private audio recording request\n\nAdd the possibility for apps to indicate that their\ncapture use case is private and that a privileged Assistant\nshould not be able to capture concurrently.\nThis allows to override the default behavior tied to the audio\nsource (e.g VOICE_COMMUNICATION is private by default but\nUNPROCESSED is not).\n\n- Add AAudio API to set and get privacy sensitive mode on input stream\n- Add MediaRecorder API to set and get privacy sensitive mode\n- Modify AudioSource constructor to accept audio attributes instead of an\naudio source to specify the use case.\n- Modify audio policy concurrent capture logic to use audio attributes\nflag instead of audio source to decide of a capture client has\nrequested privacy mode or not.\n\nBug: 137850106\nTest: CTS AudioRecordTest and MediaRecorderTest, manual audio smoke tests\n\nChange-Id: I250ea5da4c1da809ceac0da22ae9bee15b937001\n"
    },
    {
      "commit": "d054bb721892704815137cfd3d49d9f224dec76a",
      "tree": "0674eee7d8aa55b8e8ccf672bb73fdfd0ab7dbde",
      "parents": [
        "15ccc647468f14ffedf5a6e5eda7290f0131f358",
        "e45ac608ee16361fa4246e38330262fbcc9e0078"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 20:50:55 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 02 20:50:55 2019 +0000"
      },
      "message": "Merge changes from topic \"ndk-binder\"\n\n* changes:\n  DrmSessionManager_test: remove ndk wrappers for IResourceManagerService\n  convert ResourceManager usage in MediaCodec to ndk aidl\n"
    },
    {
      "commit": "817fc5bbbec408d13bbfb23be1f22ea0e1d5d041",
      "tree": "6fcd085282bc0f21597817a16cc3f5b5d472d2a1",
      "parents": [
        "3717431b08a34499eacbc2663c6da19449db5941",
        "dab79b3d09783e5053dc91b860eac06bd415cbfd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Dec 02 17:47:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 02 17:47:24 2019 +0000"
      },
      "message": "Merge \"AIDLize MediaExtractorService\""
    },
    {
      "commit": "e45ac608ee16361fa4246e38330262fbcc9e0078",
      "tree": "a6ab27a4b9976cc790d9ee52a22af403169807ee",
      "parents": [
        "fdd512ab3eaeee9bfb12a5e9c6f4dfe18ff2f2cf"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Nov 26 14:35:06 2019 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Nov 27 17:04:14 2019 -0800"
      },
      "message": "DrmSessionManager_test: remove ndk wrappers for IResourceManagerService\n\nThese wrappers shouldn\u0027t be needed if client and server sides\nare using matching interfaces.\n\nbug: 142396029\ntest: DrmSessionManager_test builds \u0026 passes\nChange-Id: I07573797af0ed8424e222be7f0119bd3f0ee4aaa\n"
    },
    {
      "commit": "dab79b3d09783e5053dc91b860eac06bd415cbfd",
      "tree": "229183838216adea270164035e0544354f4bfb5b",
      "parents": [
        "68db3a07ae337de45b82c6e45d41c2c325f8e2dd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 18 08:25:47 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 21 14:15:00 2019 -0800"
      },
      "message": "AIDLize MediaExtractorService\n\nUse .aidl instead of handwritten binder code for MediaExtractorService.\n\nTest: build, CTS\n\nChange-Id: Ibc93eca9128552c23359218ac3bf12319391e1b1\n"
    },
    {
      "commit": "6cd0b54b36b83922eb569d1cbcd6c0528d0ad8a1",
      "tree": "04bc0e6579c9c51ab7ac7cb343335b106f47e925",
      "parents": [
        "369b4e0cd1c37e4d1603a74dcf741800ba92ea16",
        "a90aee3a45f3381de6bb940d77f652e1cddba38d"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Nov 20 19:06:13 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 20 19:06:13 2019 +0000"
      },
      "message": "Merge \"DrmSessionManager_test: use ndk resourcemanager\""
    },
    {
      "commit": "19b0be6e8b5ffe28215dc00e2c551be46483d0aa",
      "tree": "2bf28aa0a6f9667c0c92de2c3355302e163b0e24",
      "parents": [
        "0501baaa032a55226be40aeeb945dcebba635164"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 15 07:51:15 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Nov 19 12:20:24 2019 -0800"
      },
      "message": "Remove DrmInitialization from IDataSource\n\nDrmInitialization only needs to be called on PlayerServiceFileSource\nand PlayerServiceMediaHTTP, so just have those initialize the forward\nlock engine automatically, which removes the need to have this in the\nIDataSource interface.\n\nTest: atest cts/tests/tests/drm/src/android/drm/cts/DRMTest.java\n\nChange-Id: I344f46b65b5c473930b16b9b4041e4897384dc18\nMerged-In: I344f46b65b5c473930b16b9b4041e4897384dc18\n"
    },
    {
      "commit": "a90aee3a45f3381de6bb940d77f652e1cddba38d",
      "tree": "deb96456d3203788653ebb79ff7bc597f899e553",
      "parents": [
        "f1e974b95c11fe975ba2231c54a6c70a3ec30edf"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Nov 14 15:43:39 2019 -0800"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Nov 15 13:54:07 2019 -0800"
      },
      "message": "DrmSessionManager_test: use ndk resourcemanager\n\nBug: 134787536\nTest: DrmSessionManager_test\nChange-Id: Ib79db7b7db07006675e3fae1955de84841df4c7e\n"
    },
    {
      "commit": "f9656ff1f117830f2f3d3e24be354fa3a4db3ada",
      "tree": "b8958bc6b2700ebc86cb2afdd992a177c2c1ae23",
      "parents": [
        "7e5e530d39e3de6f904c8587b1c60bed631178c1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 15 07:51:15 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 15 11:18:27 2019 -0800"
      },
      "message": "Remove DrmInitialization from IDataSource\n\nDrmInitialization only needs to be called on PlayerServiceFileSource\nand PlayerServiceMediaHTTP, so just have those initialize the forward\nlock engine automatically, which removes the need to have this in the\nIDataSource interface.\n\nTest: atest cts/tests/tests/drm/src/android/drm/cts/DRMTest.java\n\nChange-Id: I344f46b65b5c473930b16b9b4041e4897384dc18\n"
    },
    {
      "commit": "5452a4dabe1dadb6e4e9b10876df933b8b5c8f38",
      "tree": "a6107bdaaf3c729628ac840c92db414929576426",
      "parents": [
        "e6cbccaef91a63e0a739f084fdc94a216a08efd6",
        "d4fe6b1339be666fd1df2a6a7ed3ce8528ea8064"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 11 20:07:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 11 20:07:11 2019 +0000"
      },
      "message": "Merge \"Prime cache for tone mappers in mediaserver\""
    },
    {
      "commit": "b1150c2023250d8d72b3ac78d5f868046f3831c8",
      "tree": "52c2f340dd8fd0c0b9518ece9b951933a58d8749",
      "parents": [
        "c932c7fbae25c19c8c8aeecae3bdec6cdbe7be3a",
        "28c2ed3985ebf92177d8002a859409fb93d36ae0"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Nov 06 02:05:49 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 02:05:49 2019 +0000"
      },
      "message": "Merge \"DrmUtils: refactor IDrm/ICrypto creation\""
    },
    {
      "commit": "3253f2d6f3c2b1b27871aa291b0efd5db97c8c48",
      "tree": "c9c75eda60ccc0ab5ea1bc71704ae0f954fd6fed",
      "parents": [
        "afa8feb251a71eebce8c659a25202037232fbe59"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 21 14:50:07 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 31 17:43:51 2019 -0700"
      },
      "message": "MediaMetrics: Update Item serialization code\n\nAdd for bounds checking errors\nUpdate key checks to omit length, use C primitive types\n\nTest: atest mediametrics_tests, adb shell dumpsys media.metrics\nChange-Id: I1e6d5bd7a9611f6d59e15a1dbebc646405e5a018\n"
    },
    {
      "commit": "d4fe6b1339be666fd1df2a6a7ed3ce8528ea8064",
      "tree": "7639460f339e0bd7defb74bb9cd55371e313ffb9",
      "parents": [
        "9ef4f8d690bc42a0f17d6036d70f6769578a76b5"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Oct 02 14:29:18 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Oct 30 15:49:28 2019 +0000"
      },
      "message": "Prime cache for tone mappers in mediaserver\n\nInstantiate media side renderengine when mediaserver\nstarts, and prime shader cache for the tone mapper\nshaders only.\n\nbug: 140894732\nbug: 135717526\n\ntest: manually check that shader should be compiled\nalready when test run for first time\n\nChange-Id: Ib02569bec948838ace0f3162206dbbcadad5b641\n"
    },
    {
      "commit": "7480dcc47c1e96a7692a6c7301ac93c875a9e90b",
      "tree": "8e9728f448f16698cf0485f3d42857503b761ce2",
      "parents": [
        "d82222ee2ffb430e0874e7912771c8d40b57797a",
        "58a0dd832177e58a53fc428ab3e9ab86156b576d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 29 15:48:55 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 29 15:48:55 2019 +0000"
      },
      "message": "Merge \"Audio policy: modify permission needed to capture from source FM_TUNER\""
    },
    {
      "commit": "28c2ed3985ebf92177d8002a859409fb93d36ae0",
      "tree": "bd37a3ce59ef3e49c2f80ca5b39f6a6b738c2e80",
      "parents": [
        "7f84dcf500a7c98e76f95283de3a6abc0be858ff"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Sun Oct 27 22:55:12 2019 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Sun Oct 27 23:06:38 2019 -0700"
      },
      "message": "DrmUtils: refactor IDrm/ICrypto creation\n\nAdded utilities to:\n* Query config for IMediaDrmService usage\n* Create remote vs local IDrm/ICrypto object based on aforementioned config\n\nBug: 134787536\nTest: MediaDrmClearkeyTest#testClearKeyPlaybackCenc\nChange-Id: I72df528c0bbd8a6dbd3c4962ac91eb89696bcaf7\n"
    },
    {
      "commit": "e67eb5dc326136815a413dbd61ac6afb92be67ff",
      "tree": "b632b9e41f7a59f9d9772a7e860abb8a0cd3a7c2",
      "parents": [
        "9f03917ce011e4c860306d42c3f3cc70d2061190",
        "c5212a6794d1bb4b10b5aaffefa9b00c763bdaa5"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Oct 25 10:11:14 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 25 10:11:14 2019 -0700"
      },
      "message": "Merge \"nuplayer: fix a use-of-uninit-value\" am: e75850d70a am: e18118e006 am: 38322d4445\nam: c5212a6794\n\nChange-Id: I318b8258c956495fb8d323fe82605b9f34c220de\n"
    },
    {
      "commit": "58a0dd832177e58a53fc428ab3e9ab86156b576d",
      "tree": "d4db6d477b38b251b9a1a14031791daa4cf2cebe",
      "parents": [
        "9f03917ce011e4c860306d42c3f3cc70d2061190"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 12:42:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 25 09:35:47 2019 -0700"
      },
      "message": "Audio policy: modify permission needed to capture from source FM_TUNER\n\nCapturing from source AUDIO_SOURCE_FM_TUNER is possible only via @SystemApi\non one end and does not capture from an actual on the other end.\nAccordingly, do not check android.permission.RECORD_AUDIO anymore but\ncheck privileged permission android.permission.CAPTURE_AUDIO_OUTPUT instead.\nAlso bypass App Ops OP_RECORD_AUDIO check which is applicable only to capture from\nmicrophones.\n\nAlso fix audio recording permission check in MediaRecordClient to use\nrecordingAllowed() from ServiceUtilities\n\nBug: 135717621\nTest: CTS tests for AudioRecord\nChange-Id: Ibb1d72f018d2e3ceee195338f2e262183eee2a23\n"
    },
    {
      "commit": "e75850d70aecf270430f4713a2ac02ddba70c849",
      "tree": "fa8203ce436cbb5187e35b834ba9febec8e55773",
      "parents": [
        "f7902c01f85ba4941cbfa19fe105e9235426d857",
        "61318c55b26fde06801a09f10f324f487b011bdc"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Oct 25 16:34:16 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 25 16:34:16 2019 +0000"
      },
      "message": "Merge \"nuplayer: fix a use-of-uninit-value\""
    },
    {
      "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": "181e6950a1ce5b9705c47c4b4e288d978cb7283a",
      "tree": "b92dc19041aec4465161b112f45185cd4598c09a",
      "parents": [
        "318b26e722112462f93df797bf47ca3dabc80048"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Oct 09 13:23:39 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Oct 18 14:55:23 2019 -0700"
      },
      "message": "Convert IResourceManagerService to stable AIDL\n\nConvert with minimal change to the interface itself.\n\nAdd additional test to cover DrmSessionManager\u0027s usage\nof possible negative value field (which is signed now).\n\nbug: 142396029\ntest: ResourceManagerService_test, DrmSessionManager_test,\nCTS ResourceManagerServiceTest;\nManually check battery stats reporting.\n\nChange-Id: I5c537a54efc2663281c96ddbdbd4ee56f23c1adf\n"
    },
    {
      "commit": "61318c55b26fde06801a09f10f324f487b011bdc",
      "tree": "5c2871c2d5ab47a544d9dd140af336a705276ea8",
      "parents": [
        "342d7bcf44b3edcce763f0417ad0a13b11bde285"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Oct 17 11:29:39 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Oct 17 11:29:39 2019 -0700"
      },
      "message": "nuplayer: fix a use-of-uninit-value\n\n`readBuffer` might not set `nextSubTimeUs`. It\u0027s not clear that\n`mMediaClock-\u003eaddTimer(msg, nextSubTimeUs);` is only called in cases\nwhere `nextSubTimeUs` is set, so initialize it to 0 here.\n\nThis is consistent with what\u0027s done in `fetchTextData`.\n\nCaught by the static analyzer:\n\nframeworks/av/media/libmediaplayerservice/nuplayer/GenericSource.cpp:799:9:\nwarning: 2nd function call argument is an uninitialized value\n[clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: TreeHugger\nChange-Id: Iae6f9d71757c1bcc6e994a448b6169b4d69c4a38\n"
    },
    {
      "commit": "5b9f07a21bfa0d8f3e44a6e64d877c944bb4429f",
      "tree": "fcdda2273ad84f8f20e3e8e0f48897341e6a04df",
      "parents": [
        "935876110cb820240fcc7ad4a3ada0c1e8cb18e3",
        "c3af31b8f1a7bac5d3e3c953702c8faec3cd55e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 16 23:29:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 16 23:29:23 2019 +0000"
      },
      "message": "Merge \"Implement DrmSessionManager w mediaresourcemanager\""
    },
    {
      "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": "a42a62d8633fa6fcabc8129a2c798da860630821",
      "tree": "77e009a25a0a222aba1cabdc276b5bc9da549d04",
      "parents": [
        "342d7bcf44b3edcce763f0417ad0a13b11bde285"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Sep 23 17:48:14 2019 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Oct 11 21:40:26 2019 -0700"
      },
      "message": "libmedia: separate codeclist from libmedia\n\nTest: build.\nBug: 139201422\nChange-Id: I150c3bd04cc68a3b96a8762ba193fc1595ee6da3\nMerged-In: I150c3bd04cc68a3b96a8762ba193fc1595ee6da3\n"
    },
    {
      "commit": "8c0039cad0dc13284fdf7887708c56b26bd96ee6",
      "tree": "572b876a886927a0b946b1045123edc05df9dba5",
      "parents": [
        "0213086e4a3b8b385a1d1ce66e08c7b48c98312d",
        "d579f3efb69bd96bf58c81514ca2428cb4b73231"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Thu Oct 10 20:31:34 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 10 20:31:34 2019 +0000"
      },
      "message": "Merge \"Fix dumpsys media.player\""
    },
    {
      "commit": "d579f3efb69bd96bf58c81514ca2428cb4b73231",
      "tree": "602ab71931f895e18006cf29543e67c180676132",
      "parents": [
        "5871ab512193274898baca9a4efa734392019ebf"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Mon Oct 07 14:14:09 2019 -0700"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Thu Oct 10 11:00:47 2019 -0700"
      },
      "message": "Fix dumpsys media.player\n\n- check dump permission\n- fix truncation happening when details field is too long\n\nBug: 140444741\nTest: dumpsys media.player\nTest: atest CtsSecurityTestCases:android.security.cts.ServicePermissionsTest#testDumpProtected\nChange-Id: Id04afba8195347c6a174e13743cedb422c8624a1\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": "53f78b65a144bd04f7b007f2a0776658fc4176cc",
      "tree": "3156f6604446132b26261bc163aa241d69f94b57",
      "parents": [
        "9ee56ec1a7ace45b42b65e01fdda98114b5c0833"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 30 13:08:50 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 08 09:41:49 2019 -0700"
      },
      "message": "Clean up libaudioclient includes\n\nTest: build\nChange-Id: I1b2cd96e99564cd3944aa20a36207bd91287f7c8\nMerged-In: I1b2cd96e99564cd3944aa20a36207bd91287f7c8\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": "c3af31b8f1a7bac5d3e3c953702c8faec3cd55e3",
      "tree": "30533ca112d60914f2c23acda83394275b97ea25",
      "parents": [
        "32706253ce90531c94b5f2af7caacb443eb09d8c"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 20 21:45:01 2019 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Oct 04 22:05:40 2019 -0700"
      },
      "message": "Implement DrmSessionManager w mediaresourcemanager\n\nBug: 134787536\nTest: DrmSessionManagerTest\nTest: DrmSessionManager_test\nTest: ResourceManagerService_test\nChange-Id: Iab9f4f681c83f46b043cefc8633bb3e513a8e75a\n"
    },
    {
      "commit": "5d05fbe8ba38d16c21974688edd7ad567fe6205c",
      "tree": "49a1c1e3490131bbcb16df72a70fbcc4c6b37aaa",
      "parents": [
        "fb1fb155f9ec3a05ffa9e49f9415b565dcf8c163"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 30 13:08:50 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 04 08:17:31 2019 -0700"
      },
      "message": "Clean up libaudioclient includes\n\nTest: build\nChange-Id: I1b2cd96e99564cd3944aa20a36207bd91287f7c8\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": "23a180b0c2dfd317d55c1abe632aa81461a8856a",
      "tree": "c6547ba9a18fdbf766b6d8a753216489677e6728",
      "parents": [
        "3b93ca583af5296df1b4d45e4d16b5fba82205d2"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Sep 23 17:48:14 2019 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Sep 26 15:50:30 2019 -0700"
      },
      "message": "libmedia: separate codeclist from libmedia\n\nTest: build.\nBug: 139201422\nChange-Id: I150c3bd04cc68a3b96a8762ba193fc1595ee6da3\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": "6f67577935bf3516302ebcc19e7dfae009457860",
      "tree": "d0e8f3068c2ea42555c07a522b5909bbe50dc088",
      "parents": [
        "4811014a958f7cf233b8284fb4a422990c7a3549"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Tue Aug 20 17:06:53 2019 -0700"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Aug 21 17:01:04 2019 -0700"
      },
      "message": "media: add list of codecs in dumpsys media.player\n\nTest: adb shell dumpsys media.player\nChange-Id: I4e074c472496ebaa0ec2b966088949ce2eea4671\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": "76a49d617cd817d5be4618757e8d8400aeaad8c9",
      "tree": "360bd0ba999213cf9463c6613d155eb4e57d8f12",
      "parents": [
        "175c7b7e4d9450e017e4453b97cb836da199db67"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jul 12 11:20:33 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jul 12 20:01:55 2019 +0000"
      },
      "message": "Reuse frame decoder for sequential frame retrievel\n\nAllow sequential frame retrieval to reuse the decoder without\nre-init and re-seek.\n\nGet rid of IMediaMetadataRetriever api that retrieves multiple\nframes at a time, this method could hold up more memory than\nwhat\u0027s needed, because the client side has to copy the frames\nto a separate set of bitmaps anyways.\n\nThis change is needed to support animation Drawbles efficiently\nwhich typically get one frame at a time.\n\nbug: 120414514\ntest: cts MediaMetadataRetrieverTest, local tests that tests MetadataRetriever thumbnails\n\nChange-Id: I09924408b51bc7491fc5dee121dce9a286c5911f\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": "270dd6a1a6fc700dde00f982dcd87bf98e4b73a4",
      "tree": "e8b02ec7624fa1d1a55c0f49fcca1996545fcddf",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Apr 06 04:41:15 2019 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Apr 18 23:55:37 2019 -0700"
      },
      "message": "Make mediaserver listen to Codec2 services\u0027 deaths\n\nTest: Kill media.extractor or mediaswcodec and observe logcat\n\nBug: 130071409\n\nChange-Id: Ie785642da99dfe4ff13e78d878817dae3de9f34a\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": "a1acff23ff51603762cd0fa9f06fa0e74322c558",
      "tree": "fc72d5dd3c687e7d68e1832f103c7a314ca64923",
      "parents": [
        "ecd19f37e673adcf04ea68b7001b3200c692eb14",
        "e1c7348e1c3fed25c16ae4673101f48b1ed95b7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 00:07:15 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 00:07:15 2019 +0000"
      },
      "message": "Merge \"NuPlayerCCDecoder: fix memory OOB\""
    },
    {
      "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": "5635b7d126c46bb33d80f1518fe75702e4c2e179",
      "tree": "6b9778a41873e4c88b63e5325fc6dd670886f37d",
      "parents": [
        "32fa5079485232f3cb22afab91a275bba28d841b",
        "e4da6c62ba4a9ee1b414b91afcba0c84de0cf329"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 02 14:30:16 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 14:30:16 2019 +0000"
      },
      "message": "Merge \"Notify software service\""
    },
    {
      "commit": "e4da6c62ba4a9ee1b414b91afcba0c84de0cf329",
      "tree": "ec417eeeef2e81674e8ffac892ea05d07c87ee07",
      "parents": [
        "ea58eede918025b277dadd69192590c4ad0a6b74"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 01 15:01:41 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 01 15:16:30 2019 -0700"
      },
      "message": "Notify software service\n\nBug: 129426284\nTest: manual\nChange-Id: Ie938f73d79574bcfff5818766ded58b280136110\n"
    },
    {
      "commit": "9c63fbe4e0ccbc32086fe96d14877293763f3846",
      "tree": "901c81a2c6350a209ddb6715c160d6bf7fd58c33",
      "parents": [
        "ea58eede918025b277dadd69192590c4ad0a6b74",
        "11966872eedd949041dfe0a905794654a3df49cf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 01 20:11:13 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 01 20:11:13 2019 +0000"
      },
      "message": "Merge \"Remove subdirs from Android.bp\""
    },
    {
      "commit": "a0c98417c829c0b85ab207c8117a147f6b8c3040",
      "tree": "50cb7fd86e18de4bb75baaacbeaaca8498c1ee6f",
      "parents": [
        "71028253b21dfee4e3908916c4182cd0ea140f11"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 29 12:10:19 2019 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Mar 30 01:46:35 2019 -0700"
      },
      "message": "Notify swcodec crashes too\n\nBug: 129426284\nTest: manual/CTS\nChange-Id: I086a2b8253757f941e4dd2e160490cbb59edb627\n"
    },
    {
      "commit": "11966872eedd949041dfe0a905794654a3df49cf",
      "tree": "7ad77e435903461790f78282853777f389b7bfd0",
      "parents": [
        "71028253b21dfee4e3908916c4182cd0ea140f11"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Fri Feb 22 17:54:19 2019 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Mar 28 23:54:38 2019 -0700"
      },
      "message": "Remove subdirs from Android.bp\n\nsubdirs is meaningless now.\n\nTest: Builds\n\nBug: 129513796\n\nChange-Id: I60130e38b5924b73c5520d884868dd580f5345bf\n"
    },
    {
      "commit": "125f082b2862243db9c26b5f7aa3b8ba1769034d",
      "tree": "cd579b19cdb96a42160b2852c4612315b6750395",
      "parents": [
        "f8420218f94a175a9bf3e0b9f661670ef2319821",
        "c30f0d8ed4166f88650798b11026b3b897ed9095"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Mar 22 18:50:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 22 18:50:21 2019 +0000"
      },
      "message": "Merge \"skip -1 default values in stagefrightrecorder metrics\""
    },
    {
      "commit": "1234008771662d2b250d6d4972adb04de963fb0d",
      "tree": "d050c75b3935ed9d20676312df0e7cd1d94cd13c",
      "parents": [
        "60c73a445b632cc2e233b1a275efeee7414a41a4"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Mar 19 09:35:05 2019 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Mar 21 21:51:49 2019 -0600"
      },
      "message": "API changes in MicrophoneDirection\n\nBug: 128523813\nTest: Build, Testbed app\n\nChange-Id: I7b5ee8ba4eec1090866d8aef891a98d50cd09cc5\n"
    },
    {
      "commit": "c30f0d8ed4166f88650798b11026b3b897ed9095",
      "tree": "50809ef44bb61de5b524c6cf7a476536f34a9193",
      "parents": [
        "b9df1597c794855106dc8225050f5fc2011d07d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Mar 21 15:07:54 2019 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Mar 21 15:07:54 2019 -0700"
      },
      "message": "skip -1 default values in stagefrightrecorder metrics\n\ndon\u0027t emit the -1 (default, unspecified) values for\nmovie, audio, and video timescale fields in the \u0027recorder\u0027\nmediametrics type.\n\nBug: 78600173\nTest: y\n"
    },
    {
      "commit": "14c10ebbf4d05c5dc8ca08371410437f47077bde",
      "tree": "5672a7254d5843fae9b40a40dcf010758959756a",
      "parents": [
        "baf2d2c69a281803c039c92b74cf8d7223f88c48"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Sat Mar 09 13:33:41 2019 -0800"
      },
      "committer": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Tue Mar 12 20:08:48 2019 -0700"
      },
      "message": "StagefrighRecorder:check mWriter before using fd\n\nftruncate(fd) would be useless if mWriter was NULL already.\nHence moved mWriter nullptr check before ftruncate(fd).\n\nBug: 128366317\n\nTest: atest CtsMediaTestCases:android.media.cts.MediaRecorderTest\n\nChange-Id: I46b8c4718bc8a90712b7ec0b54d8239106106018\n"
    },
    {
      "commit": "baf2d2c69a281803c039c92b74cf8d7223f88c48",
      "tree": "69d72e0d8d5dc3c79f303a9d3a47bb02d5e0a6c6",
      "parents": [
        "11993758113707b5e13fdda10af904148742a6c7",
        "b2ba4859b9b1c0ff6332916f2826cd1c0c496ec2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 12 23:57:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 23:57:21 2019 +0000"
      },
      "message": "Merge \"StagefrightRecorder:close next filedescriptor\""
    },
    {
      "commit": "b2ba4859b9b1c0ff6332916f2826cd1c0c496ec2",
      "tree": "70938be97c4b8e6561335ed529bc82ec9a7b6d81",
      "parents": [
        "d77619a5643b3cff502d38c8c9b8e91f94c1439c"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Sat Mar 09 16:45:42 2019 -0800"
      },
      "committer": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Tue Mar 12 12:24:18 2019 -0700"
      },
      "message": "StagefrightRecorder:close next filedescriptor\n\nBug: 127693962\n\nStagefrightRecorder receives next file descriptor in it\u0027s function setNextOutputFile() from\nMediaRecorder.setNextOutputFile(). It duplicates the received file descriptor, but doesn\u0027t close\nthe duplicated one when done.\n\nThis CL fixes that issue by not duplicating it in StagefrighRecorder as it has to just pass it on\nto Mpeg4Writer.  Mpeg4Writer duplicates received file descriptor.  It frees them during release.\n\nTest: \tcts-tradefed run cts-dev -m CtsMediaTestCases --compatibility:module-arg\n\tCtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice\n\nChange-Id: I24fc12bd957a2abdb8785625261c95da62952736\n"
    },
    {
      "commit": "366b643d1e674684d7095cdbe36b6791e842fdbc",
      "tree": "1eaa875ba8bb14b2def251f7f0bdd27fce37cca5",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Feb 25 10:35:51 2019 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Wed Mar 06 14:55:55 2019 -0700"
      },
      "message": "Surface MicrophoneDirection API in MediaRecorder\n\nBug: 126185930\nTest: MicrophoneDirectionTest testbed.\nChange-Id: I6024ede50999aa751d63f272a087f578b8aea93d\n"
    },
    {
      "commit": "c3ce3cb96eda9876d614d6dbb2664199ed1ac007",
      "tree": "b7d77477245675a2aaf83285bf91302e158b7be3",
      "parents": [
        "15c6b6df6338529e10b4fc3ce1a904e82c0d6b6b"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Feb 12 14:18:05 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Feb 25 16:10:18 2019 -0800"
      },
      "message": "build mediaserver in 64 bit mode\n\nmediaserver is no longer forced to 32-bit mode, floating to primary\narchitecture which is usually 64 bits.\n\nBug: 16890215\nTest: boot, record video, android.media.cts.MediaPlayerTest\nChange-Id: If5265e251a4201e7037ddaa2f36fa998936622aa\n"
    },
    {
      "commit": "091aa6d37f8d3fb407f6a59b20135b6045a5495e",
      "tree": "73008ceadcdbc0315f0080efab73f0dd7efbd8e1",
      "parents": [
        "b5d428af44ab91fcc0c1e537e2094163d39a36ab"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Feb 15 11:46:00 2019 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Feb 15 11:46:00 2019 -0800"
      },
      "message": "Mark functions in MediaPlayerBase::AudioSink as pure virtual\n\nBug: http://b/116873221\n\nMark the functions in this class that aren\u0027t defined as pure virtual.\nIf not, Clang assumes that the TU which defines the first undefined\nfunction will contain the vtable for the class as well.  Since there\u0027s\nno out-of-line definition of this funciton, no TU ends up with the\nvtable.\n\nThis causes a problem with coverage builds, which are built with -O0,\nwhere calls don\u0027t get inlined, thereby requiring a definition of the\nvtable.  For non -O0 builds, the vtable is not required since the\nvirtual calls get inlined/optimized-out.\n\nTest: Build with and without coverage\nChange-Id: I4644dcd892c5f47031f1603b0f809c1da95314db\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()\""
    }
  ],
  "next": "f294a074ce2c79f6abeadaccbd26ae0353c336cf"
}
