)]}'
{
  "log": [
    {
      "commit": "f0658f4ed2282f1e73d1bafdd4235d3bc549d65a",
      "tree": "c7e334605bc292fea0690732d7dce35e7142a537",
      "parents": [
        "a38152074c8a326f622d774f3349545246d26c1b"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Oct 26 11:51:14 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 03 16:21:12 2020 -0800"
      },
      "message": "Remove manual parceling from Interpolator and VolumeShaper\n\nCreated stable parcelables to hold all the data that gets parceled.\nReplaced manual parceling with a two-step approach, where we first\nwrite into the auto-generated parcelable, then parcel it.\n\nTest: Ran audio-related CTS tests\nBug: 160253486\nChange-Id: I5a4d51fb1244ed49bcd70e446aaa26e2aa8ed7b1\n"
    },
    {
      "commit": "7adaefea55a905fb07257685f460609c3bd72566",
      "tree": "40f5465faa1f82c355f4c28dc4d4d8a7d1eaf8a2",
      "parents": [
        "c9ff3299caae6d3732225ade5708ad780a78d19d",
        "932ca9fb417823e1ec71e2ef18c84a69ea33f03e"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Nov 04 00:16:50 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Nov 04 00:16:50 2020 +0000"
      },
      "message": "Merge \"Add a null check in RTSPSource::stop\" am: 2a692162a4 am: 40db8afe2a am: 371bfe9628 am: 932ca9fb41\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1456267\n\nChange-Id: I460e8d9160db16bf76e2b5b1c57c07e9536f4e29\n"
    },
    {
      "commit": "932ca9fb417823e1ec71e2ef18c84a69ea33f03e",
      "tree": "5cd365d97376b49632008109df150159fef98592",
      "parents": [
        "56cc4b9794fb1dc75f79769232fda09be115ec3d",
        "371bfe9628b09b69d58246c5c46575df19036be7"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Tue Nov 03 23:27:20 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Nov 03 23:27:20 2020 +0000"
      },
      "message": "Merge \"Add a null check in RTSPSource::stop\" am: 2a692162a4 am: 40db8afe2a am: 371bfe9628\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1456267\n\nChange-Id: I80c3abc3d9cd1a3cfa8760ff2986f401ae5cfcc8\n"
    },
    {
      "commit": "1db9d0fa54db8ccaf8e7ad49f783431a04cc1f33",
      "tree": "30aa5964de0f6d1149e72766827ce4d6d32280c2",
      "parents": [
        "627c3b7cf2531976ad061af0ee20beb539e3af09",
        "5790aacad0c5bfc9b3027ade72e03593aa8ec5fd"
      ],
      "author": {
        "name": "Vignesh Venkatasubramanian",
        "email": "vigneshv@google.com",
        "time": "Tue Oct 27 21:31:50 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 27 21:31:50 2020 +0000"
      },
      "message": "Merge \"media, non-mainline: Add basic AVIF decoding support\""
    },
    {
      "commit": "5790aacad0c5bfc9b3027ade72e03593aa8ec5fd",
      "tree": "3cca4f759b46240c536b5301191e55aeab2e207c",
      "parents": [
        "b79b20f897835ed7b8d1556c7b444f810ef9b812"
      ],
      "author": {
        "name": "Vignesh Venkatasubramanian",
        "email": "vigneshv@google.com",
        "time": "Mon Oct 05 17:30:24 2020 -0700"
      },
      "committer": {
        "name": "Vignesh Venkatasubramanian",
        "email": "vigneshv@google.com",
        "time": "Mon Oct 26 21:38:31 2020 -0700"
      },
      "message": "media, non-mainline: Add basic AVIF decoding support\n\nThis CL contains files that are not part of mainline.\n\nParse the AVIF boxes and pass the data along to a compatible AV1\ndecoder (similar to how HEIC frames are passed to the HEVC\ndecoder).\n\nTest: BitmapFactory.decodeByteArray() is now able to decode valid AVIF images.\nTest: HEIF related CTS tests still pass.\n\nCTS tests to come in a different CL.\n\nBug: 141654151\nChange-Id: I4b84ae825232bb34f357725247a4531b87b3e029\n"
    },
    {
      "commit": "dbf1892d7ad13b64973772f275bacd1eac2489ad",
      "tree": "81a731045e69a934246c1d406ccc87d647e8b582",
      "parents": [
        "2fe55fea4507c2be4087487025e86c55a560ec83",
        "749d1946a5109eb54da0afe91ff0c37b5cbc5474"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Oct 27 03:32:20 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 27 03:32:20 2020 +0000"
      },
      "message": "Merge \"recast StagefrightMetadataRetriver CHECK()s to be recoverable\""
    },
    {
      "commit": "749d1946a5109eb54da0afe91ff0c37b5cbc5474",
      "tree": "6b19306bbe2406d96bbd4367facf730597c1d2f7",
      "parents": [
        "9ecf2ddd93969a1f89eefa1d75d5369f62b99f32"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Oct 14 13:07:36 2020 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sun Oct 25 14:17:37 2020 -0700"
      },
      "message": "recast StagefrightMetadataRetriver CHECK()s to be recoverable\n\nreworks code around several CHECK() invocations so that instead of\naborting the process, they take appropriate recovery action.\n\nBug: 170132564\nTest: playback files with \u0026 without metadata\nChange-Id: I8233753e237a176d6b197a1bf3abda1c7309b221\n"
    },
    {
      "commit": "f33115ddd726e1bb3b76565b7350a49c433afe40",
      "tree": "69db6ec5330f39b9ae64cdf65deafe04b404d617",
      "parents": [
        "d6fe406c865072f4d139756a48487d34fed0f07f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 23 00:04:22 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nTest: atest libmedia_helper_tests\nChange-Id: Ia0e725026be80621bdc797299e63e134419b2b3d\n"
    },
    {
      "commit": "78d02237ebe6c90d36dca7b6da5e867ac6295318",
      "tree": "fb81c7a5bacfec08f2d9c4d71f0559a26c95d8e3",
      "parents": [
        "0f243bbaf628bf8aa873e978feb720d3354b476c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "message": "Revert \"Use system/audio to/from string converters in TypeConverter\"\n\nRevert \"audio: Align lists of enum values between framework and HAL\"\n\nRevert submission 12851233-hal-enum-strings\n\nReason for revert: breaks slider device\nReverted Changes:\nI4f64a8b61:Use system/audio to/from string converters in Type...\nIddaa92bf2:Move enums shared with HAL to audio-hal-enums.h\nIe5896775b:audio: Align lists of enum values between framewor...\n\nBug: 171262726\nChange-Id: I7568c41c5641cf120ffacbfda4751c3bb1c4e4f8\n"
    },
    {
      "commit": "0f243bbaf628bf8aa873e978feb720d3354b476c",
      "tree": "3c065d2ff4b39a12ea3b830e82ada2597e907ece",
      "parents": [
        "e3bca196dbe931f0d7c26394c6224784224da459"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 16 23:00:44 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nChange-Id: I4f64a8b6164bb5ad94cbf1da1709cb379f4a75fa\n"
    },
    {
      "commit": "5021b88f2bf7421d65c4e68b7810bcb677ccbe1f",
      "tree": "149818a440274e3d107d8e4130194d3f428734ff",
      "parents": [
        "4c5c1298d463e13e67ae0cf07828221c5a46a183",
        "d55868f7191f11430a3e431c95832b62912edc19"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 14 15:41:39 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Oct 14 15:41:39 2020 +0000"
      },
      "message": "Merge \"Check for disabled camera in MediaRecorderClient\" into rvc-qpr-dev am: d55868f719\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12826963\n\nChange-Id: I607e60fd565a4fb8a87bb3fe1fc49758ee0998fe\n"
    },
    {
      "commit": "8087057ba5787e0ce25a3c89e78f6b16e1db840c",
      "tree": "f17c7ba6c1239de56f5acf160f00fa0b06ef52c2",
      "parents": [
        "5e710feacb9b8d8f7db1f4e15d2e9d2aac83da0e"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Sep 09 16:34:10 2020 -0700"
      },
      "committer": {
        "name": "Fei Wang",
        "email": "wangzfei@google.com",
        "time": "Tue Oct 13 19:08:24 2020 +0000"
      },
      "message": "Check for disabled camera in MediaRecorderClient\n\nTo avoid encountering the getService timeout, we should first check if\nthe camera service has been disabled before fetching it.\n\nBug: 163322246\nTest: ran on device with disabled camera to verify getService was\nskipped\n\nChange-Id: I47e8878182fe82c1473da59c8054ee7281efe23e\nMerged-In: I47e8878182fe82c1473da59c8054ee7281efe23e\n(cherry picked from commit fa344e04ff81b4bfed83888c53b3913b13505e41)\n"
    },
    {
      "commit": "5c46d1b25b602d8a684ef618dc8ebb27a8ccacf1",
      "tree": "a16a2fbfc1c22bf4c7035f92143c03d1b88b0b7b",
      "parents": [
        "0ef686e76bdeb0a9dd72f918418d8c1a02c40e18",
        "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 13 05:05:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 13 05:05:42 2020 +0000"
      },
      "message": "Merge \"Convert mask types from uint32_t to enum type\""
    },
    {
      "commit": "db09dbcbde810f0f430f06c67d654a7bada80a9c",
      "tree": "10993753d1ac58da3918d0dd79c039a652eab596",
      "parents": [
        "7ec362b7ec959c6e3b4ff99633667d2553bba34a"
      ],
      "author": {
        "name": "Daniel Bonnevier",
        "email": "daniel.bonnevier@sony.com",
        "time": "Wed Aug 19 15:54:49 2020 +0200"
      },
      "committer": {
        "name": "Edward Savage-Jones",
        "email": "edward.savage-jones@sony.com",
        "time": "Mon Oct 12 19:42:48 2020 +0200"
      },
      "message": "Add a null check in RTSPSource::stop\n\nThis was causing a nullpointer dereference in stop.\n\nBug: 170643945\nTest: pass cts tests\nChange-Id: I17966dcae10136bf114b1b1e2446e9ea051f8517\n"
    },
    {
      "commit": "feb4060473911ccf201a9a9c58fb1a007777fe17",
      "tree": "ab879d84b83420e035b68b3c3049fdec5cb3ccbf",
      "parents": [
        "358a08446b6657151ad064edf44635e7d021c0af"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 24 17:30:32 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Sat Oct 10 02:08:23 2020 +0000"
      },
      "message": "Expose video codec type in MediaMetadataRetriever\n\nbug: 163086057\ntest: android.media.cts.MediaMetadataRetriever\n\nChange-Id: Iac752e63ae582db1771c7a85b318675d44b8ab0b\n"
    },
    {
      "commit": "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5",
      "tree": "54bc894243fa3c52e611c85aed75ee6677056c13",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 08 18:12:55 2020 -0700"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "97d367b26286afca53b2c47d643792ea5d18f361",
      "tree": "bf4d4dbbf2e1571aedddb0c1578b9ee25deee6d0",
      "parents": [
        "2526250c329d30b4456d99e9dd9be46633da4f7e"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Sep 16 12:53:14 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 22 19:29:13 2020 -0700"
      },
      "message": "Allow native process to set procinfo in ResourceManager\n\nAnd set the override in transcoding service to allow\nResourceManager to reclaim from it.\n\nbug: 168307955\ntest: mediatranscodingservice unit tests;\nResourceManager unit tests;\nCTS ResourceManagerTest; manually verify that binderDied\nevents are handled correctly.\n\nChange-Id: I3193a0e29c1efbaf641e8c6b391241233d9cc404\n"
    },
    {
      "commit": "fd90fdfe2a611ae824a32e236da288b1fdfd445d",
      "tree": "bdeb9f47bd72f0a8743ec7325841bdef6c0bec2b",
      "parents": [
        "b281445c6e7a40cc144752db8fbf8ddf7bd56b5f"
      ],
      "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": "Wed Sep 16 00:13:40 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": "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": "fa344e04ff81b4bfed83888c53b3913b13505e41",
      "tree": "af49ac600c91f9ce1b4b6c711f47c0423d73a536",
      "parents": [
        "c3ffbec518f26fc0798164141ab4878279d400f1"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Sep 09 16:34:10 2020 -0700"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Sep 11 09:16:58 2020 -0700"
      },
      "message": "Check for disabled camera in MediaRecorderClient\n\nTo avoid encountering the getService timeout, we should first check if\nthe camera service has been disabled before fetching it.\n\nBug: 163322246\nTest: ran on device with disabled camera to verify getService was\nskipped\n\nChange-Id: I47e8878182fe82c1473da59c8054ee7281efe23e\n"
    },
    {
      "commit": "2e40c302d6117ec6eb65f25832a71488367b4dfb",
      "tree": "ce2cff004a09076114faabf595b1a116bcb461ff",
      "parents": [
        "054de8d6440fd30238fa9330bcc038cda745b244",
        "924eccfd6f6d3aaed5db627a0bdcfcaaf9b09a18"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 08:38:54 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 21:23:54 2020 -0700"
      },
      "message": "Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)\n\nBug: 166295507\nMerged-In: Ie94127c1e981cb18671d5137ba0d39355d1353da\nChange-Id: Ib22ad33bda8d561af537499b6d31ab6134eeae02\n"
    },
    {
      "commit": "b8a9dbbf791adf7f1a0ab87d7a35770074e88cc8",
      "tree": "a2f91436efd8587def9e765d333387fed6a03b7f",
      "parents": [
        "763136770b0bb6828cf7628a9b3bbf09b0741ae2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "message": "Revert \"Snap for 6793014 from 424180bdc4aa18249e678daebfd0fcf936...\"\n\nRevert \"Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d148e6e...\"\n\nRevert \"Snap for 6793014 from 7594ec6384c4da320726def34f477736f9...\"\n\nRevert \"Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c4223e1d0...\"\n\nRevert \"Snap for 6793014 from 44725f06b7f7d6407b5ee82d989bdd6c7a...\"\n\nRevert \"Snap for 6793014 from f22ad3164937a8f2e309965c102b6366d5...\"\n\nRevert \"Snap for 6793014 from 11467102abddb6026aaa164c1361439c2d...\"\n\nRevert \"Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5f7ae65...\"\n\nRevert \"Snap for 6793014 from f2989f9c65556d5155dbd57f82f0c93a16...\"\n\nRevert \"Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab1222ffd6...\"\n\nRevert \"Snap for 6793014 from 3777d883a3857b1a1589181c436d9018d7...\"\n\nRevert \"Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528460c8b...\"\n\nRevert \"Snap for 6793014 from a43295d1825da62af038d345a7a861ed7a...\"\n\nRevert \"Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb386109...\"\n\nRevert \"Snap for 6793014 from d0e31526c62b2aeb35c293ac96feb180fc...\"\n\nRevert \"Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376efabd2...\"\n\nRevert \"Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293b79684...\"\n\nRevert \"Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57a8e7d5...\"\n\nRevert \"Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aad87a67...\"\n\nRevert \"Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24af9964...\"\n\nRevert \"Snap for 6793014 from 14cb57e107a3abce8b14937b1f92c28d18...\"\n\nRevert \"Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc03a606...\"\n\nRevert \"Snap for 6793014 from 8c65adad0bcdfb3acc561063b4048dca24...\"\n\nRevert \"Snap for 6793014 from b3061942700265e2bf04af9997775dcbbb...\"\n\nRevert \"Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd0ac3be...\"\n\nRevert \"Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec70d8da6...\"\n\nRevert \"Snap for 6793014 from 988d4244914e0c749655e8cb6db18ba44f...\"\n\nRevert submission 12465146-release-request-6b259cbc-1f45-4b05-bc7e-c9b893b79d68-for-git_main-busytown-release-6793014\n\nReason for revert: b/166531456\nReverted Changes:\nI5ff7a6c0d:Snap for 6793014 from f2989f9c65556d5155dbd57f82f0...\nI77bdff943:Snap for 6793014 from a43295d1825da62af038d345a7a8...\nI2ac5c520a:Snap for 6793014 from c3f124cca05579acf0a6cb589ebd...\nI023b9702f:Snap for 6793014 from 98756d6d3e2bb0ba28eb125caa7a...\nIbc7893d72:Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d...\nIc27847bee:Snap for 6793014 from 8c65adad0bcdfb3acc561063b404...\nIf20bc9352:Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376...\nI6542d17e8:Snap for 6793014 from 3777d883a3857b1a1589181c436d...\nI66e6bb8a9:Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab12...\nI3cd190b6b:Snap for 6793014 from 424180bdc4aa18249e678daebfd0...\nIf92db7402:Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc...\nIaced03c87:Snap for 6793014 from d0e31526c62b2aeb35c293ac96fe...\nI5d28c6b4b:Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aa...\nI30d07bea3:Snap for 6793014 from 7594ec6384c4da320726def34f47...\nI473205f48:Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd...\nI0656b41af:Snap for 6793014 from 44725f06b7f7d6407b5ee82d989b...\nI0f9796067:Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec7...\nI9a38cda8f:Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb...\nI876a82f51:Snap for 6793014 from 11467102abddb6026aaa164c1361...\nI749d7d023:Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293...\nI038daea41:Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24...\nI47aa3131c:Snap for 6793014 from 14cb57e107a3abce8b14937b1f92...\nI32dba8a95:Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528...\nI2ebc9f9db:Snap for 6793014 from 988d4244914e0c749655e8cb6db1...\nIae7c3370f:Snap for 6793014 from 9ffb8852294e06e2d387dc1fb868...\nI6467a7f1b:Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57...\nI8c6375203:Snap for 6793014 from b3061942700265e2bf04af999777...\nI843b2e1f3:Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5...\nIe254f7079:Snap for 6793014 from f22ad3164937a8f2e309965c102b...\nI01e0974ed:Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c42...\n\nChange-Id: I00c786b898b73e58db8bcb1dd0cf3fdaa1ae3038\n"
    },
    {
      "commit": "ed809da358d7ac1e7b9ab10f00a12c2177a80844",
      "tree": "32a5e13f5d5fb281be9cf5b724a8b4d1f4de49e7",
      "parents": [
        "67122dfeda707c7316173973293446839cac1ee9"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Aug 17 16:53:02 2020 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Aug 19 23:45:19 2020 -0700"
      },
      "message": "Miscellaneous fixups for VT contribution update.\n\nfixed misc. spacing and style issues\nAAVCAssembler/AHEVCAssembler: fix OOB reads in checkIFrameProvided,\n  checkSpsUpdated and dropFramesUntilIFrame\nARTPWriter: fix OOB read in SpsPpsParser, VpsSpsPpsParser and sendVPSSPSPPSIfIFrame\nARTPWriter: use KMP algorithm for VpsSpsPpsParser\nARTPSource/ARTPConnection/RTPSource: rename jbTIme to jbTimeMs\n\nBug: 165061754\nChange-Id: Iceeb3851aed0ba9b1c2c50b1a2378df06faa29d6\n"
    },
    {
      "commit": "6b0bf0bde24e3615eb9cd8c643f5c9860b26581e",
      "tree": "5b0d11e7af89fc00773c245bbcdb3b42b7bb187c",
      "parents": [
        "6b538065eef3e234c7c3b73781e5ba3b32aa83db"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Wed Oct 16 16:38:24 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:09 2020 -0700"
      },
      "message": "VT: Enhancements on RTP depacketizer (2)\n\n  - Send FIR if there was no I-frame within a sec in packetLost\n  - Fixed an issue dropped frame even it is completed. caused by\n      ABuffer marked as \u0027damaged\u0027.\n  - Provides completed I-Frame only to prevent codec stuck.\n  - Change time mapping as realtime since rtp time is already covered\n      by jitter buffer.\n  - Removed periodic RTCP:FIR requests if video call. Cause i-frame\n      insertion should happened only if video stream is broken.\n  - Give default value for uninitialize TrackInfo Value because\n    video stucked at the first frame all the times by Uninitialized\n    trash TimeScale \u0026 NormalPlaytime values make AccessUnit\u0027s ntp time\n    wrong.\n\nBug: 165061754\nChange-Id: Ied41ea57d4fa96d4c05d7f8eba3d96bcb8f3fc69\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "23b2393a25e08c7a72e5db25aa458109e62e98df",
      "tree": "d2b2a9de01ea03614700848b949171744e1aa124",
      "parents": [
        "0aedeb3a6cecb54f8ade6d01bd59d0b3f1944fcb"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Thu Jul 18 17:48:32 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:09 2020 -0700"
      },
      "message": "VT: Report all data about packet receiving up to application\n\n - A design change of RTP/RTCP recovery logic.\n - It\u0027s better to move logics about decision(ex. Call downgrading, TMMBR)\n   to application side. So all ingredients for the decision must be sent to upper layer.\n - RTP stastics will be reported to upper layer for every seconds.\n\nBug: 165061754\nChange-Id: I567a55926c27aafb2510313d9cd41acbc8110194\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "0aedeb3a6cecb54f8ade6d01bd59d0b3f1944fcb",
      "tree": "931193e73b14f17d257657217162ebad116e4b48",
      "parents": [
        "666397565bcbfbabfaca3577ca20c481ebf1d669"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Mon May 20 13:15:04 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:08 2020 -0700"
      },
      "message": "VT: Enhancements on RTP depacketizer\n\n 1) Do not merge FU pkts if rtptimes are different.\n   [Problem] There was a case that Fragmented Units of RTP be merged as\n     an one frame even Fragmented Units are has different timestamp.\n   [Solution] Added a condition to check rtptime between Fragmented Units.\n\n 2) Implementation of a new frame drop rule for p-frame.\n   [Problem] P-frame should be dropped only if FU packets damaged\n     more than half of amount of frame.\n   [Solution] Implemented a rule for p-frame drop.\n\n 3) Discards a rtp buffer that has unexpected ssrc.\n   [Problem] so many packet loss observed and video loss because about\n     4 different video stream coming at the same time.\n   [Solution] Allow only one stream that matched SSRC of first stream.\n\nBug: 165061754\nChange-Id: If840df274a6fc4b04910f9201359b7c09fd2bc85\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "666397565bcbfbabfaca3577ca20c481ebf1d669",
      "tree": "e124464f9b8d3664816c11d271f6d7911904d4b2",
      "parents": [
        "7143c0771e197ed26d5a84d10624b8ea77b235aa"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Mon Apr 29 13:49:44 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:08 2020 -0700"
      },
      "message": "VT: Enhancements on RTP packetizer.\n\n  1) Apply discounted bitrate for initial RTP case\n    [Problem] There is a possibility that sending bitrate\n      overs the AS value, if there is no TMMBR signal.\n    [Solution] Apply the discounting also in inital bitrate.\n\n  2) Correction of UDP fragmentation.\n    [Problem] Packets can not be sent to remote in some network\n      environment(R\u0026S ATT TE). Packet should be fragmented up to\n      1280bytes in case of IPv6.\n    [Solution] make a condition to build a packet up to 1280bytes.\n\n  3) Correct a condition to check last of the FU-A.\n    [Problem] Marker bit (of RTP header) was 0 even it was last FU-A packet.\n      A RTP buffer size checked with RTP header extension, but it filled\n      without header extension size.\n    [Solution] Correct a condition to set market bit as 1.\n\nBug: 165061754\nChange-Id: Ic70b06b330394b40b1c756aba85e175fba178b8d\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "7143c0771e197ed26d5a84d10624b8ea77b235aa",
      "tree": "a20e51b933b21a297aad91fe6d96ef79ff3b6442",
      "parents": [
        "d9db048e1333c330b63c8a2015d153f240c226da"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Mon Sep 23 13:31:37 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:08 2020 -0700"
      },
      "message": "VT: Added an interface to set JitterBufferTime.\n\nJitter buffer time can be adjusted according to packet jitter\nsituation. Jitter buffer time will be decided by upper layer\nand then RTP Assemblers just apply a value of jitter time.\n\nAdded an interface to set video-param-jitter-buffer-time.\n - Minimum jitter buffer time \u003d 40ms.\n - Maximum jitter buffer time \u003d 3000ms.\n\nBug: 144795638\nBug: 165061754\nChange-Id: Idc6ef462a91aab87c3f0ad46c504ebf0b89c36c4\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "d9db048e1333c330b63c8a2015d153f240c226da",
      "tree": "49d8edba6e777a991452b3cd242033001d242e48",
      "parents": [
        "dbc585c96f980c434dca1e9e34234155dfa26121"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Tue Jun 09 16:55:32 2020 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 18 02:00:08 2020 -0700"
      },
      "message": "VT: Some parameters not provided to encoder if source is surface.\n\n[Problem] Encoded video rotated 270 degrees after apply camera api2.\n[Cause] encoding-rotation feature was applied only if\n  source type was camera.\n[Solution] provides VT specific parameters regardless source type.\n\nBug: 148889911\nBug: 165061754\nChange-Id: Ic777e8252f373a92fb5595750cb4a899135b29a2\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "03bbceb9c4d1334a5349d7527885f7e188ab9dde",
      "tree": "cd61c8d32b9c19ae2236ae25b9df78935f61a97c",
      "parents": [
        "d092df14c28ee2909e353092793f7f205b942ea1",
        "30d531636688ac478116ba4b7600c9b5f24b4bf4"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Aug 04 15:30:26 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Aug 05 17:39:28 2020 +0000"
      },
      "message": "Merge QQ3A.200805.001\n\nBug: 162879794\nMerged-In: I996d9ad9eaf0e52992b7f9e10fd94a94c350ad73\nChange-Id: I2c8cc8f9337639e22ea3affeeab586442bbffdda\n"
    },
    {
      "commit": "42b0fb2462832c9a2e0901977d205d59a40b52e7",
      "tree": "753879c8ec11deb77cc5612cb85f8113bf4fc57f",
      "parents": [
        "aacaf2d4cdf898109d8027e39dbd0befc87251e9",
        "a21668ff8661a1f0d753ee2c16ec2b5db701c78d"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jul 30 07:34:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 07:34:57 2020 +0000"
      },
      "message": "Merge \"MediaTesting: Add Audio StagefrightRecorder Unit Test\" am: e2fcd29925 am: bd0b5d4762 am: 9b79f50b4a am: 9033ec731d am: a21668ff86\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1345156\n\nChange-Id: Ie3d056863e3d0f7575f086a5514778c2fe32577e\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": "ef2f300138c0c9a54ac0fe84b5eeebada3fbe548",
      "tree": "670df0dbd2e50779bdc3733ab831df8235621fb1",
      "parents": [
        "a069304fe522a0849b075940768fcc8fb79be6d7",
        "5fded10151a97929c20732d9b4215cf14c4572e1"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Tue Jun 30 18:00:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 30 18:00:49 2020 +0000"
      },
      "message": "Merge \"Fix FD ownership for local FileSource\" into rvc-dev am: 61375308e2 am: 971bb0305f am: 8796ef6a8a am: 5fded10151\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12023202\n\nChange-Id: I870497e167a8160c2d0fe041db83f28b4bf6f203\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": "82f267012f29089c284340868de7375e77510e62",
      "tree": "fc2fe7adf2c022af88bdeddb63deb2baf4a8e5fb",
      "parents": [
        "f191963f5645f59390b640136fd928e5a492aa84"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Wed May 20 16:49:23 2020 +0100"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jun 10 00:35:54 2020 +0000"
      },
      "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(cherry picked from commit aad519df7fe3b69c8247669ea77ce339a44e8c51)\n(cherry picked from commit 6aaef5a99f15da847a8c55a137bfc6263829e8ff)\n"
    },
    {
      "commit": "f191963f5645f59390b640136fd928e5a492aa84",
      "tree": "0039e37227cb90eb114817f08da26bfa9d4a5d89",
      "parents": [
        "7df13bfc992178008d56a01f79f8effc5b1504c9"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 04 16:22:15 2020 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jun 10 00:35:49 2020 +0000"
      },
      "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\nMerged-In: I75f29a6254c5eab5d4f524ee7a7ef59f93a0b405\nChange-Id: Ia2e68ef616e249a6e8746b9068f22bd208a0ffc8\n(cherry picked from commit e5767553f55fb30d9d58ba211ec68e64a6266e52)\n"
    },
    {
      "commit": "a427f198c7588c5e0422e83b868d5c691c952192",
      "tree": "5a111a1143659b3b1ddfd4c242f7bcaf89341d66",
      "parents": [
        "5ffd2fd2c9890502f7413dd83825b885d7c41a52",
        "edc4465d0f4f2623ec37c76c386cb80ea22bba50"
      ],
      "author": {
        "name": "Andrew Lewis",
        "email": "andrewlewis@google.com",
        "time": "Fri Jun 05 12:40:40 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 12:40:40 2020 +0000"
      },
      "message": "Merge \"Clamp audio seek to non-zero timestamp\" into rvc-dev am: 7a0d96e922 am: 68460b7541 am: 68656358a6 am: edc4465d0f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11733625\n\nChange-Id: Ica89c8ce7c2c44574d75225e0d5971faf105137d\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": "7cf06d26eb599939e2b400fbd67b038de08103f7",
      "tree": "15a0bed0180f8762d7c3df8949c370c481ccaa52",
      "parents": [
        "610dda9535bda6cbba9084a7a3c04b768de6f9b5",
        "e2288aa957f6b49b33760acfd7c54f9e95d89a1e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 21 04:59:54 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu May 21 04:59:54 2020 +0000"
      },
      "message": "Merge \"Fix potential use-after-free issue\" into rvc-dev am: 557bdaa8d2 am: 282b2897ed am: 95a1d0514b am: e2288aa957\n\nChange-Id: I589c8b50ca32a6e5f6b5c8743069cfa509ff6a4d\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": "b1399ca7e121ea3838c64df8594c95c2f9dc1b11",
      "tree": "9e2b30341f9c2820ff50f49f246e3af730d3215e",
      "parents": [
        "80093fe8eb1080d343d0e07900c24e47a2f01bee",
        "33cce9cc6ae674f460cbbdf2578e8260921c13dc"
      ],
      "author": {
        "name": "Gopalakrishnan Nallasamy",
        "email": "gokrishnan@google.com",
        "time": "Tue May 19 01:08:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 19 01:08:09 2020 +0000"
      },
      "message": "Merge \"MPEG4Writer:Ignore sample table of malformed track\" into rvc-dev am: db0b34440a am: aed64eda19 am: 9eb7b04d13 am: 33cce9cc6a\n\nChange-Id: Iaab7c6240b3adc3fb68e4b57955b0858320a4ff4\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": "fe37b7e7d7b1f83d5ab8d7b9216c35ccbd013338",
      "tree": "848dc5be44cf0fa3927cffc3e6c054c11786f37a",
      "parents": [
        "47075395b1ddb6b6d1cb6146104a685f1a40dffe",
        "14fe0af61a3337725b56703fac86f205a76e950d"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 11 22:08:50 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon May 11 22:08:50 2020 +0000"
      },
      "message": "Merge \"Expand nuplayer mutex for mediametrics management\" into rvc-dev am: d6bca9b588 am: 68b6105fd9 am: 55470ea17f am: 14fe0af61a\n\nChange-Id: I905f124eb7743acdb15ffddd81738d19caa758ee\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": "f8f9e3d9affbbf95cbdcfeaecc6a189464f6e492",
      "tree": "50acc7d8761f1f5819aff22118d7d6f65b73b5b5",
      "parents": [
        "1af407a2298ebb369cb781658e483724f710c7cc"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 08:13:10 2020 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Apr 27 16:44:18 2020 -0700"
      },
      "message": "media: further miscellaneous fixes to VT contribution\n\n- remove unnecessary shared library dependencies\n  (this frees up about 2MB runtime space)\n- ASessionDescription: pull out default AS as a constant\n- ASessionDescription: populate frame size only for video session\n\nBug: 153907802\nBug: 121230209\nTest: build\nChange-Id: I29d38b96d794615f4aead2bb98d147831070d25c\n"
    },
    {
      "commit": "03675d39999b4e712cbd0e87de1794e9782f1e7d",
      "tree": "53b21a6b3f37d15391d9f5b80c694f91b84ab6b2",
      "parents": [
        "b3dde8e92a8685b3a2e299cd241fb372c52dd19b",
        "4a7b8e414c7e613fb5e1d5946d3bb7da696ae5b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 23:15:38 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Apr 27 23:15:38 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Track AudioTrack and AudioRecord callers\" into rvc-dev am: 2578a95a57 am: 164ceef8b6 am: 2e28a7bafb am: 4a7b8e414c\n\nChange-Id: Idbd49b54a4e4877e03eb5432fab1d098394b79e9\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": "7630aa995d0873750dddaa18dd7abd71d77ec535",
      "tree": "55be667516b7daa5464847fbb9c323358420a7a5",
      "parents": [
        "7259511be29e0b52480a259e64ecbd02246cee6e",
        "1982933a51657282434879faea07ceba929defa5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 10 23:06:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 10 23:06:31 2020 +0000"
      },
      "message": "Merge changes from topic \"SLSI_VT\"\n\n* changes:\n  media: miscellaneous fixes to VT contribution\n  VT: DSCP implementation.\n  VT: SFR: Added missing rtp-param-opponent-id in stagefright.\n  VT: SFP: bind socket to specific network\n  VT: SFR: bind socket to specific network.\n  VT: Remove assertion in send() function.\n  VT: ARTPConnection: added an event to notify first-rtcp packet.\n  VT: Print assembler queue status for the first frame\n  VT: Enlarge jitter buffer range from 200ms to 300ms\n  VT: Postpone bitrate down for considering camera switch\n  VT: Rotation parameter should be applied only for video call.\n  VT: Add OMX_Video_ControlRateConstant feature\n  VT: OMX_ErrorStreamCorrupt should be skipped only for RTP scenario.\n  VT: Retain RTP sequence number between SFR stop and start\n  VT: Skip unknown payload type packet\n  VT: Update payload value at runtime for SFR\n  VT: Add FIR, PLI reaction\n  VT: Add auto downgrade function\n  VT: Add TMMBR feature for RTP Rx side\n  VT: Add TMMBN feature on RTP Tx side\n  VT: SFP: H264: CVO implementation for Rx side\n  VT: SFR: H264: CVO implementation for Tx side.\n  VT: Change socket option to REUSEADDR\n  VT: Add TMMBR function on Rx\n  VT: Recorder gets payload type value from param\n  VT: Player/Recoder gets its SSRC ID from param\n  VT: Add RTCP feedback message(TSFB \u0026 PSFB) parser to RTP source\n  VT: StagefrightRecorder: Added a function for TMMBR\n  VT: AHEVCAssembler: Supports H265(HEVC) for Rx.\n  VT: ARTPWriter: Supports H265(HEVC) for Tx.\n  VT: ARTPWriter: Supports ipv6\n  VT: ARTPSource: Jitter buffer implementation.\n  VT: ARTPConnection: Supports ipv6\n  VT: SFP: Implements interface for RTP parameters.\n  VT: RTPSource: Added a component as an one of NuPlayer::Source\n  VT: ARTPConnection: bind RTP/RTCP sockets to specific IP.\n  VT: ASessionDescription: Added SDPStringFactory.\n  VT: SFR: added parameters to handle RTP IP Addresses through setParameters().\n  VT: ARTPWriter: Enhanced ARTPWriter as a RTP output\n"
    },
    {
      "commit": "eda3483c92959e04ece8da6ff4829a6782575a84",
      "tree": "a8f290f9c169ad6719f13d83546d5e52a1aadbd8",
      "parents": [
        "0794f54fc7ab2ba98c8c75402c39660b18d5e87e",
        "5554d3fce086f17d5faa35a3a8706262f9ca334d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 07 00:35:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 07 00:35:57 2020 +0000"
      },
      "message": "Merge \"MediaUtils: Move MemoryLeakTrackUtil.h to the proper library.\" into rvc-dev am: 65328604de am: 7987613047 am: ae26b0232f am: 5554d3fce0\n\nChange-Id: Id4fe11729f29f571a7c2cd157b4d96522ac0c224\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": "1982933a51657282434879faea07ceba929defa5",
      "tree": "69012e70e440591a0033c1551a282c354f053d0b",
      "parents": [
        "2c7a0cc74ec5dd94f31f585c728f2cef5cd5f099"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 08:13:10 2020 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 01 08:19:05 2020 -0700"
      },
      "message": "media: miscellaneous fixes to VT contribution\n\n- fix MediaSource.h path\n- fix setDataSource binder code\n- use MediaCodecConstants instead of OMX/ACodec constants\n- fix spacing\n- fix typos\n- remove unused code\n- commented some tricky code segments\n- AAVC/HEVCAssembler: re-read next buffer if buffer was deleted\n- RTPSource: pull out constants kMinVideoBitrate and kBufferingPollIntervalUs\n- RTPSource: check state early in prepareAsync\n- RTPSource: fix potential null dereference in setSource\n- ARTPAssembler: make showing queue runtime configurable via debug.stagefright.rtp bool property\n- ARTPWriter: fix security issues: protect against reading OOB in\n  sendSPSPPSIfIFrame and StripStartcode\n- ARTPWriter: free buffers early in destructor\n- ARTPWriter: create PPS buffer only if there is PPS\n- ARTPConnection: fix security issues: protect against reading OOB in\n  parseRTPExt, parseTSFB, and parsePSFB. Also remove remote null-dereference.\n- AHEVCAssembler: fix security issues: protect against reading OOB in\n  addFragmentedNALUnit\n\nBug: 121230209\nTest: build\nChange-Id: Iada8b878e396452c1d281c60f3754e13e34bcddb\n"
    },
    {
      "commit": "2c7a0cc74ec5dd94f31f585c728f2cef5cd5f099",
      "tree": "33c897904deb19240291370255c7ab7d97b53e30",
      "parents": [
        "a9f97782254f08f6ad440e9652173f70171c0347"
      ],
      "author": {
        "name": "JainishKumar Anghan",
        "email": "jai.anghan@samsung.com",
        "time": "Mon Nov 25 13:08:18 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: DSCP implementation.\n\n[Related Issue] b/142345921\n\n[Problem] dscp value needs to be updated based on operator\u0027s\n  requirement. but there is no interface to update the dscp value.\n\n[Solution] Implement interface to set dscp value into socket by\n  setsockopt(). dscp value will be taking care by upper layer.\n\nBug: 121230209\nChange-Id: I1468a08f64b71db0f12d96b393263b520109be6d\nSigned-off-by: JainishKumar Anghan \u003cjai.anghan@samsung.com\u003e\n"
    },
    {
      "commit": "a9f97782254f08f6ad440e9652173f70171c0347",
      "tree": "71ad437fca982cb078fa12618f8f2c27ff31413b",
      "parents": [
        "88068dcd814f901e37561ad916ec0d7fa0c686a8"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Mon Sep 09 12:50:04 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: SFR: Added missing rtp-param-opponent-id in stagefright.\n\n$ setParameter: failed to find key rtp-param-opponent-id\n\n[Problem] TMMBN not supported due to missing parameter.\n[Cause] rtp-param-opponent-id is not integrated due to it has dependency\n   with with a patch of frameworks/base.\n[Solution] Added a parameter named rtp-param-opponent-id to support TMMBN.\n\nBug: 121230209\nChange-Id: Ifd8e30fd8032a2d7e306b5bcee72642fba2c266c\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "88068dcd814f901e37561ad916ec0d7fa0c686a8",
      "tree": "69b98c931573394383f049d0e573117c0726e470",
      "parents": [
        "0f0ba3996ab69e17da6494c6cdea87d07678ccce"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Fri Mar 29 15:04:10 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: SFP: bind socket to specific network\n\nThis will call an API of android_setsocknetwork().\n\n\"rtp-param-set-socket-network\" is added to update routing table\nfrom media engine of android.\n\nRTP/RTCP sockets will be bound to the networkhandle provided\nthrough the above parameter.\n\nThis patch is effected only for Rx(NuPlayer) session.\n\nBug: 121230209\nChange-Id: Id14708049e684f8dd5711c2b9fefb67c6cafbfc6\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "0f0ba3996ab69e17da6494c6cdea87d07678ccce",
      "tree": "9dd4c56792627e0e7bc49c91474c75679c27dce9",
      "parents": [
        "449a19c7b7bacc0bc64fcb1cf107ee5926487f11"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Mon Mar 18 18:04:10 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: SFR: bind socket to specific network.\n\nThis will call an API of android_setsocknetwork().\n\n\"rtp-param-set-socket-network\" is added to update routing table\nfrom media engine of android.\n\nRTP/RTCP sockets will be bound to the networkhandle provided\nthrough the above parameter.\n\nThis patch is effected only for Tx(StagefrightRecorder) session.\nRx(NuPlayer) is not implemented yet.\n\nBug: 121230209\nChange-Id: I5443e2071906576783db995421f997af5bc84424\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "73f6fc82b8a0dd45759e5b8139bccea5909d5cb4",
      "tree": "398a55c923c4ece28b102d33c8c15e4855fb26a4",
      "parents": [
        "87130afc44b76aff01c97a0014bacbaa10bc8a12"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Aug 23 16:19:58 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: ARTPConnection: added an event to notify first-rtcp packet.\n\n[Related JIRA] RAMEN9610-4400\n\n[Problem] Call downgrade is not triggered from UE if there is no\nrtcp packet received even call is started long time ago.\n\n[Cause] There is no logic for auto-downgrade if there is no any single packet.\n\n[Solution] A new logic for auto-downgrade implemented both\nStagefrightPlayer and IMSService.\n\nBug: 121230209\nChange-Id: I44bf7131ba2cdb7a1c8760b62ea81427b43afcb1\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "b654738d8df53af1adad5e588d9140e85287f06d",
      "tree": "0c13118bf7168633abff036409e224878e1de275",
      "parents": [
        "15f27dd370962872c04d0e5ae0213e18263a6c5e"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Tue Jul 10 19:58:05 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Rotation parameter should be applied only for video call.\n\n[Problem] Recorderd video that captured by native app is\nrotated as 270 degrees.\n\n[Cause]\nEncoder rotation has been applied even it was normal video\nrecording scenario.\n\n[Solution]\nRotation parameter should not be applied in normal video\nrecording scenario.\n\nBug: 121230209\nChange-Id: I83cd0c6bb78ee95ef2781ad7deeec393a3174aab\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "15f27dd370962872c04d0e5ae0213e18263a6c5e",
      "tree": "72d9e1d9ff45aee0c70d3a979d869b63946fe5f9",
      "parents": [
        "5e27b1b884a5201194803f0cea2634e1a7c97515"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Thu Jul 05 22:22:07 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add OMX_Video_ControlRateConstant feature\n\nThe OMX_Video_ControlRateConstant is a sutiable OMX option\nto stablize encoder bandwidth.\n\nThis helps encoder to make more regular bps.\n\nBug: 121230209\nChange-Id: I67a08be8b8a19b573c873e96d317e16c7105084e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "5e27b1b884a5201194803f0cea2634e1a7c97515",
      "tree": "bc6976023c29c726e710d8659117876475b90e00",
      "parents": [
        "16121f6259f69e284f80c94342264156d03d90cd"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Jul 12 15:36:03 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: OMX_ErrorStreamCorrupt should be skipped only for RTP scenario.\n\n[Problem]\nAOSP take care OMX_ErrorStreamCorrupt as an error.\nMediaplayer will be stopped once an error occured.\n\n[Cause]\nOMX_ErrorStreamCorrupt is not handled as an error due to\na patch from video call scenario.\n\n[Solution]\nOMX_ErrorStreamCorrupt should be skipped only for\nvideo call(RTP) scenarios.\n\nBug: 121230209\nChange-Id: I5e1fe7f993776a74619ddc88d664799a54bd604e\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "16121f6259f69e284f80c94342264156d03d90cd",
      "tree": "20f5c9d5cdeb40e47b132ccf91e5fea5d6661fb8",
      "parents": [
        "934af7734b647dface7e595c9cd0868e7e83b279"
      ],
      "author": {
        "name": "Somraj Mani",
        "email": "som.mani@samsung.com",
        "time": "Sat May 05 00:08:24 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Retain RTP sequence number between SFR stop and start\n\nThere was an issue that remote side dropped a video packets\nwhen local camera has been switched.\n\nIt caused we are sending discontinuous (RTP) sequence number\nwhen the camera is switched during video call is going on.\n\nWhen we switch a camera, we just stopped a MediaRecorder\nand then re-start with different camera-id.\n\nRTP sequence number is gone when an ARTPWriter is stopped.\nand Then ARTPWriter will take a random RTP sequence number from\nthe re-start of ARTPWriter.\n\nThis patch makes ARTPWriter can start from the RTP sequence number\nthat the stopped last time.\n\nBug: 121230209\nChange-Id: I7dde2c89f2b378600a080b7a4f4de385f81e6ee1\nSigned-off-by: Somraj Mani \u003csom.mani@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "113f16476f4b052ce93486fcf35f612ccfc90f61",
      "tree": "b3357ee071455044ef26c6cdc921ab5ae3d748de",
      "parents": [
        "e60d813d66a2ce88077cff19fddda9e4f57798c4"
      ],
      "author": {
        "name": "Somraj Mani",
        "email": "som.mani@samsung.com",
        "time": "Fri Apr 27 19:56:26 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Update payload value at runtime for SFR\n\npayload type might be re-assigned if there is a modification\nin ongoing session.\n\nWe need to provide a new payload type in above case.\n\nBug: 121230209\nChange-Id: I9e19a7bb3e0c7849cbb244fd3a3221ce79c4e56d\nSigned-off-by: Somraj Mani \u003csom.mani@samsung.com\u003e\n"
    },
    {
      "commit": "e60d813d66a2ce88077cff19fddda9e4f57798c4",
      "tree": "1a1dce0d60059427a375c19a748768a3bd9d2a53",
      "parents": [
        "d194b8cd0354aef669ed318ea748f253394e5582"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Mon Apr 30 14:28:50 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add FIR, PLI reaction\n\nRefer RFC 4585 Ch.6 \u0026 RFC 5104 for concept of FIR, PLI.\n\nIf receiving part detects some of those feedbacks,\nnotice to Java layer by riding on MEDIA_IMS_RX_NOTICE.\n\nIf sending part is noticed by Java layer(IMS service),\nrequest encoder to make I frame.\n\nBug: 121230209\nChange-Id: I41fba551d47513d2bc0563036434a4c0426a4136\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "d194b8cd0354aef669ed318ea748f253394e5582",
      "tree": "dbce97e89676d877e8bf155de99157878acbcc16",
      "parents": [
        "2c987f1490b2c2ed6bdc0545f2b4bcaa3706b32b"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Sun Mar 17 22:04:14 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add auto downgrade function\n\nSome network requires force-downgrading to audio call when video packet status is bad.\n\n1. ARTPSource reports bitrate value for every unit time.\n   If low bitrate duration stays long, ARTPConnection triggers auto downgrading message.\n   The way of passing message is same as TSFB \u0026 PSFB.\n\n2. Add auto downgrade callback message when connection lost.\n\nBug: 121230209\nChange-Id: I04e3f4e1955852c61540f35c763a40be3e7b639b\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "2c987f1490b2c2ed6bdc0545f2b4bcaa3706b32b",
      "tree": "e206a752ca5169ae69458e0dd29ab205df5151f4",
      "parents": [
        "6b46b989cfc0249c3b18602113f1523408a813d8"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Sun Mar 17 22:04:14 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add TMMBR feature for RTP Rx side\n\n1. Seperate TMMBR sending block from RR sending block.\n   At least, TMMBR is sent per 5 sec.\n   But TMMBR is sent per 1 sec if TMMBR\u0027s bitrate is chaged.\n\n2. TMMBR max value comes from SDP AS value\n\n3. QualManager is separated from ARTPSource.h\n\nBug: 121230209\nChange-Id: Ie0abb6e639f50ad8ee3081c3d5e76dc07e80d5d1\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "6b46b989cfc0249c3b18602113f1523408a813d8",
      "tree": "89520d1dce3a4aa20c5593371f0e8f9d31c36f1a",
      "parents": [
        "b0225aabec7a56d462cce29c80aa60d88c898a55"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Sun Mar 17 22:01:31 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add TMMBN feature on RTP Tx side\n\nStagefrightRecorder adjusts encoding rate and sends TMMBN as requested bitrate.\n\n1. Add TMMBN packetizing function on ARTPWriter.\n2. StagefrightRecorder holds opponent\u0027s SSRC ID that is used for TMMBN.\n3. MediaRecorder can set parameter on RECORDING state if format is for RTP.\n\nBug: 121230209\nChange-Id: I768649c02e50fd5fab2ecb53c3743915662c100a\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "b0225aabec7a56d462cce29c80aa60d88c898a55",
      "tree": "6d5c215f12a7eafcea8f29ce568866467dd02843",
      "parents": [
        "11340c4000f14dfa520d11741cf56f04d391a2c6"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Fri Apr 20 14:00:15 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: SFP: H264: CVO implementation for Rx side\n\nCVO(Coordination of Video Orientation) implemented for H264.\n\nSupport Coordination of Video Orientation (CVO) feature that carried in RTP Header extension.\nit parses a device degrees(orientation) in RTP extension that remote sent.\n(6.2.3 of 3GPP Release 12 TS 26.114)\n\nOnce AAVCAssembler parsed a video degress from RTP(CVO) extension,\nA native window will be rotated as per parsed video degress.\n\nBug: 121230209\nChange-Id: I802a9e43d9ee54b7970d2541f18fb4af8022336a\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "11340c4000f14dfa520d11741cf56f04d391a2c6",
      "tree": "9adb720fb4c818679de32510e13bc35a46506c45",
      "parents": [
        "182a9299e67ccd521685c6d73efd38ceb4f9d947"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Apr 05 17:27:53 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: SFR: H264: CVO implementation for Tx side.\n\nCVO(Coordination of Video Orientation) implemented for H264.\n\nSupport Coordination of Video Orientation (CVO) feature that carried in RTP Header extension.\nit updates a device degrees(orientation) on RTP extension when device is rotated.\n(6.2.3 of 3GPP Release 12 TS 26.114)\n\n- rtp-param-ext-cvo-degrees: updates how much degress should be rotated.\n- rtp-param-ext-cvo-extmap: updates what extmap CVO mapped in SDP negoration.\n\nBug: 121230209\nChange-Id: I49ab063d549b033aef06eadf39fd189384a5f724\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "fd179629ebea9df5375627b0243a0ba326649a2b",
      "tree": "3165885394cc78fb720a83b07c2d8e7e1ad4a978",
      "parents": [
        "6c4d871a38b359b29e79ee57943dd24d4e2386f7"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Thu Mar 22 22:39:38 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Add TMMBR function on Rx\n\nNow Player(Rx) can measure and check Rx status(bitrate \u0026 loss)\nAnd send TMMBR base on the status\n\nBug: 121230209\nChange-Id: I203ff5022ca95859c8acc662ba6cedff256a6995\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "6c4d871a38b359b29e79ee57943dd24d4e2386f7",
      "tree": "8cd30409fc40bcaabead7f4d7a726343519c2313",
      "parents": [
        "d2875e9462623d2e985da3bf31476aceef6cf8e5"
      ],
      "author": {
        "name": "Somraj Mani",
        "email": "som.mani@samsung.com",
        "time": "Sat Apr 14 18:36:11 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Recorder gets payload type value from param\n\nRemoves hardcoded payload type in ARTPWriter.\n\nA payload type will be assigned dynamically by an\nupper layer as per SDP negotation.\n\nBug: 121230209\nChange-Id: I7c6f244c753c84a7954261b1c37292083ab5996a\nSigned-off-by: Somraj Mani \u003csom.mani@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "d2875e9462623d2e985da3bf31476aceef6cf8e5",
      "tree": "ccf91e9afaa5678b06f0a68ff2e2244c1381a769",
      "parents": [
        "d3c6b32ae00e7f225abfe8266390ab4bdf8248ed"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Tue Mar 20 16:51:41 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:44 2020 -0700"
      },
      "message": "VT: Player/Recoder gets its SSRC ID from param\n\nUE should have its own SSRC ID when exchange RTP packet.\nIt is UE level id so Rx/Tx should have same ID.\nRecorder/Player are implemented separately and didn\u0027t have any method to sync the ID.\nSo upper Java Layer would send unique ID as param.\n\nBug: 121230209\nChange-Id: I11248eada31f50d278ab299f57ee42d9a3ce79be\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "d3c6b32ae00e7f225abfe8266390ab4bdf8248ed",
      "tree": "6041d08a13bb0bcd412fc331ce23dbdb8f51351b",
      "parents": [
        "48ae60d7812e4a3fdb5992a1265b1d69067eef5c"
      ],
      "author": {
        "name": "Kim Sungyeon",
        "email": "sy85.kim@samsung.com",
        "time": "Fri Mar 02 14:41:19 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: Add RTCP feedback message(TSFB \u0026 PSFB) parser to RTP source\n\nParser for RTCP feedback messages (Refer RFC 4585 Ch.6)\n\n1. Parser for TranSport layer FeedBack messages. (Refer RFC 5104 Ch.4)\n   Bitrate value in TMMBR \u0026 TMMBN  must be passed on to Recorder(Tx) part for congestion control.\n\n2. Parser for Payload-Specific FeedBack messages (Refer RFC 4585 Ch.6)\n   Supports PLI(Packet Loss Indication) notification.\n\nThe value \u0026 notification are passed through ARTPConnection -\u003e RTPSource -\u003e NuPlayer -\u003e JAVA layer\n\nBug: 121230209\nChange-Id: I85bfa0c359a60b42bcdf062f8a158db2ce69aa5a\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "48ae60d7812e4a3fdb5992a1265b1d69067eef5c",
      "tree": "e8ac677bb11568cf229db4368f4fccfe26a36df3",
      "parents": [
        "deebc7de89f03ed932a34f2469385d4d3867c1cd"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Tue Feb 20 18:04:41 2018 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: StagefrightRecorder: Added a function for TMMBR\n\nEncodingBitrate was not updated even IMSService\ncalled a setEncodingBitrate() while VideoRecorder is in running state.\n\nBecause encoding bitrate can\u0027t be updated dynamically in running state.\nThis patch makes that StagefrightRecorder can set a new encoding bitrate\nto satisfy TMMBR requirement as per RFC 5104.\n\nRegular I frames overloads on the network so we should consider about it.\nDiscounted encoding bitrate will be margins for the overloads.\n\nBug: 121230209\nChange-Id: Ied820dec5bda36bfe590cf46ec981e0b5fc4c4ee\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "28225abc2693b746889cdd39ea570a93a7ce19a5",
      "tree": "054f265f284c69fce972ba7a083f3883ed035300",
      "parents": [
        "d157b79f28aebb40be4c217c56e12de003efbbe8"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Jan 24 20:31:19 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: SFP: Implements interface for RTP parameters.\n\nRTP parameters will be given to NuPlayer like below.\nThis is same like how setParameters() working in case of\nStagefrightRecorder\n\n video-param-decoder-profile\u003d1;\\\n video-param-decoder-level\u003d512;\\\n rtp-param-local-ip\u003d127.0.0.1;\\\n rtp-param-local-port\u003d1234;\\\n rtp-param-remote-ip\u003d127.0.0.2;\\\n rtp-param-remote-port\u003d4321\n\nNuPlayer will create RTPSource.class instance as a part\nof a source component of media engine if it gets RTPParams\nfrom application layer.\n\nBug: 121230209\nChange-Id: If04ebb09d4f28d8eeb6a1a920a833129828a6ac4\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "d157b79f28aebb40be4c217c56e12de003efbbe8",
      "tree": "5716a7694644c0bd71e36429ecec58cb80ccf29c",
      "parents": [
        "3baf34315c1f2f277437a5b240883e9e1e80a0e6"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Jan 24 20:56:37 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: RTPSource: Added a component as an one of NuPlayer::Source\n\nRTPSource added to be used for RTP scenario.\nThis can be created by NuPlayer::setDataSource(String\u0026 rtpParams).\n\nCode implementation includes specifications of RFC 3550, RFC 4566\n\nFollowing parameters should be provided to setup RTPSource.\n\n- video-param-decoder-profile : decoder profile to be set to codec.\n- video-param-decoder-level : decoder level to be set to codec.\n- video-param-width : video width to be set to codec.\n- video-param-height : video height to be set to codec.\n- rtp-param-local-ip : local-ip that the RTP/RTCP sockets be bound.\n- rtp-param-local-port : local-port assigned that the RTP/RTCP sockets be bound.\n- rtp-param-remote-ip : remote-ip that the RTCP socket where to sent.\n- rtp-param-remote-port : remote-port assigned that the RTCP socket where to sent.\n- rtp-param-payload-type : Section 5.1 of RFC 3550, Payload type value assigned for the RTP session.\n- rtp-param-as : Section 5.8 of RFC 4566, Maximum bandwidth belong to this session.\n\nBug: 121230209\nChange-Id: I9fdc71a854d441703c8dd2fc8115de36a5e9958e\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "d95a5bec39c0439f87347349c84bee6ea54e997b",
      "tree": "71f9b95692f73151cc2e468d3d7f9f2631af41e2",
      "parents": [
        "072e37420dcf4da4bff8d1942fa989afdf25861a"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Tue Jan 29 16:53:43 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: SFR: added parameters to handle RTP IP Addresses through setParameters().\n\nAdded following parameters to set ip addresses for RTP scenarios.\n\n- rtp-param-local-ip:\n  rtp-param-local-port: local ip/port to be bound a socket as per SDP negotation.\n\n- rtp-param-remote-ip:\n  rtp-param-remote-port: remote ip/port pair where to send RTP packets.\n\nBug: 121230209\nChange-Id: I8b6d8492c1a6e5eeba88d4829e4815227f083edb\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\nSigned-off-by: Kim Sungyeon \u003csy85.kim@samsung.com\u003e\n"
    },
    {
      "commit": "6597d73adf83bbf9bb22adb883da5330d1759a8a",
      "tree": "c77ee775a02f310b2ec3efbab56e3c9fd27e18e5",
      "parents": [
        "bdccc992097e538da25e29a6b663698488539a44"
      ],
      "author": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Fri Feb 28 22:38:25 2020 -0800"
      },
      "committer": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Mon Mar 16 10:06:23 2020 -0700"
      },
      "message": "Migrate to AIDL generated native power manager interface.\n\nMigrate to AIDL generated native power manager interface, use\naidl-cpp generated cpp header file from IPowerManager.aidl.\n\nBug: 149479744\nChange-Id: Icf4e71b5e78a6e3101b423686556ac5393c5e91c\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": "afc9f27233fa7dfb8c03e0fc83f612e7a19f27f2",
      "tree": "88bb119b0d42fd2af8aee124eb541a85701e7b94",
      "parents": [
        "12e5101c0ebca4852e2326b6f1f4691d456e8cb4"
      ],
      "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": "Fri Feb 28 14:18:56 2020 -0800"
      },
      "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\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\""
    }
  ],
  "next": "d17c85023ac2058233121b8a94603687c855c997"
}
