)]}'
{
  "log": [
    {
      "commit": "7ae782545020eec1bfb9eb74e690ae26e2cca7fa",
      "tree": "b99f5db2f4d75aeddb175896c3fa67070b21154e",
      "parents": [
        "2ac41184ae00b2e99e55d995944288f33b2fce49"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "message": "Include what you use: \u003cunistd.h\u003e\n\nThis was transitively included, but no longer is, so it must be\nexplicitly included.\n\nExempt-From-Owner-Approval: Janitorial\nTest: build\nChange-Id: I78268a4867697bf797d40b5fead3745fdd0cc807\n"
    },
    {
      "commit": "c39661e2507d61e18978ed48c0ad051ad1339a4e",
      "tree": "73e4dcf4bf2fe5270af436b661c6793f512eced7",
      "parents": [
        "733c728752ae6958c88b2da4a4c662d266294b70"
      ],
      "author": {
        "name": "Harish Mahendrakar",
        "email": "harish.mahendrakar@ittiam.com",
        "time": "Fri Jan 31 11:08:47 2020 -0800"
      },
      "committer": {
        "name": "Harish Mahendrakar",
        "email": "harish.mahendrakar@ittiam.com",
        "time": "Fri Jan 31 20:46:41 2020 +0000"
      },
      "message": "Move DataSourceUnwrapper to MidiIoWrapper class\n\nDataSourceUnwrapper is now part of MidiIoWrapper class\nThis is prevent use of this class outside MidiIoWrapper methods\n\nBug: 145332185\nTest: adb shell /data/local/tmp/ExtractorUnitTest -P /data/local/tmp/extractorRes/\nTest: atest android.media.cts.MediaExtractorTest\nTest: atest android.mediav2.cts.ExtractorTest\n\nChange-Id: Ia898539fb95a1eb62b81f522599976fc477bfbee\n"
    },
    {
      "commit": "95b2cf6dc4fe2a2bbea3dbed123ad95a65798cfe",
      "tree": "5cf1ded7f41e8822948cdc7b1bad132e7cfcd3c5",
      "parents": [
        "bb3c777e401d10f379835243bfcb2e6b6c678504"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 15 11:02:10 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 15 11:02:10 2019 -0700"
      },
      "message": "Remove unnecessary inheritance\n\nMidiIoWrapper\u0027s DataSourceUnwrapper doesn\u0027t need to inherit from\nDataSourceBase, and removing that inheritance saves a little bit\nof space too.\n\nTest: build\nChange-Id: I9f560ef57b76b624cf323d75872395a39f65ed1f\n"
    },
    {
      "commit": "be9768e8eff47385c32bcc7f9c3b82c27058b3cc",
      "tree": "2162cb598328f4d4fc057cf88483613037fb69be",
      "parents": [
        "ff0508b3d64e54829b69170adace3bbea4f6a5b6"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Dec 19 13:10:35 2018 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Dec 19 13:52:45 2018 -0800"
      },
      "message": "Fix memory leaks\n\nBug: 111407253\nTest: manual, libmemunreachable\nChange-Id: I69ad7b48498346925dd02c10b206035c0ae49305\n"
    },
    {
      "commit": "cec44d0c8dc9703ca87435d95bdcd6ef228784d7",
      "tree": "a8f3ae236978e7201114e765a652632a0286d30e",
      "parents": [
        "0b16447f1cbaab5838477a68b26eeefa18b4e7aa"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sun Jun 17 22:21:09 2018 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 21 10:49:16 2018 -0700"
      },
      "message": "C-ify DataSource\n\nAdd a C API for DataSource/Base, and a helper so extractors\ncan continue using a C++ API.\n\nBug: 111407253\nTest: build, boot, play some files\n\nChange-Id: I1c8b2990e17d18eee53c9abf7ebef2ced0e8b7fd\n"
    },
    {
      "commit": "04ce77ffc7d7466c40c226d995c0f6d389e8bbe6",
      "tree": "710d87b8b1a85db69b7ed39deba6a1f18dbe4aa1",
      "parents": [
        "405b3c70ccf6c6671fbbe72557a8493e4e0f6097"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Feb 13 00:27:24 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Feb 13 17:50:29 2018 +0000"
      },
      "message": "Initialize mDataSource in MidiIoWrapper c-tors.\n\nTest: App in question works well.\nBug: 73105500\nChange-Id: I6ffd52bf10e23c8ee144bbc74e157a6a7b26168c\n"
    },
    {
      "commit": "2a243f08193fe9ff1afe018e9953f01c44ced9de",
      "tree": "80d5f40de50cd826248cfe4265b383677f25d0c0",
      "parents": [
        "58bce947568db8f6dd5e12e6548aff27af26ae96"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 30 08:29:57 2018 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 02 07:52:05 2018 -0800"
      },
      "message": "Remove RefBase from plugin-side DataSource\n\nExtractor plugins now use DataSourceBase, which is not refcounted.\nFramework-side DataSource derives from DataSourceBase and RefBase.\nAlso remove MediaExtractor::release, because it is not needed\nanymore due to the way the extractor/track/datasource lifecycle\nis managed now.\nAlso add source and target pid to CallbackDataSource name, to\nmake the extractor dumpsys more useful.\n\nBug: 67908556\nTest: build, boot, CTS, skia test app for heif\nChange-Id: I6b9cbe903f76b0cf27ba87f4a456f424803efd08\n"
    },
    {
      "commit": "255735a38b9d5c3755c7b819bdc8fdaf4357d860",
      "tree": "f1c83bce136d5f122f57dc3281ab9d5fa0597f05",
      "parents": [
        "5c2bdf6a7042d68f9ae2d2f58cf3bae1c44fcab9"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Jul 19 11:24:56 2017 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Mon Jul 24 20:29:36 2017 -0700"
      },
      "message": "Organize header dependencies\n\nHeader files that are exported are moved to a specific place for\nexporting.\n\nTest: make cts -j123 \u0026\u0026 cts-tradefed run cts-dev -m \\\nCtsMediaTestCases --compatibility:module-arg \\\nCtsMediaTestCases:include-annotation:\\\nandroid.platform.test.annotations.RequiresDevice\nBug: 63821829\n\nChange-Id: Ia578e3c0dd1ff157335b3a49af896acb922586e8\n"
    },
    {
      "commit": "b20688e7e87e99ab1ee106af043ce0cbb40bde5d",
      "tree": "19767be9c107ea1578095547ee56dc0ca32ea7ac",
      "parents": [
        "6411cb684e5994834c441d94708d245d81b474a5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 04 17:20:50 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 04 17:36:20 2015 -0800"
      },
      "message": "Check for non-negative fd before close, dup, lseek, or read.\n\nBug: 24896328\nChange-Id: Idd8da8cf202f51f42d0a81421a91768ec3d5f025\n"
    },
    {
      "commit": "13b97d6ece762cd96a7c3d3e3d60583104d1c0bc",
      "tree": "0eb5ebdb6dcc3e4484512c54d9602ef37e4e7d19",
      "parents": [
        "47deb15e99cbf60e558027e074b7415c95637943"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 29 11:16:17 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 29 11:17:16 2015 -0800"
      },
      "message": "Fix uninitialized variable.\n\nBug: 19020118\nChange-Id: I0aceadfec6652d468a5a5d9eb5dcbf0845757ffa\n"
    },
    {
      "commit": "0e8928bf4f2b01b783f6da97d15e8f1abb0fd7d7",
      "tree": "915b24bd6c686000a5c4fb8af920c8a16204e30e",
      "parents": [
        "c52af00beda4477d0fd00c3071e6ffd9c465430b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 13:40:53 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 13:48:52 2015 -0800"
      },
      "message": "Replace MidiFile player with a Midi extractor\n\nThis gets rids of a bunch of special midi handling and replaces it\nwith an extractor that works with NuPlayer and MediaMetadataRetriever.\n\nChange-Id: I8d0f5bbdde2ca24267cf4d62ab26afe9630e0217\n"
    },
    {
      "commit": "bc11e713063f3f96f98256abc81c0d8ee1ddb312",
      "tree": "b45b5c9d24ed7779e2bc6a19d3169c6b79b363a6",
      "parents": [
        "43637c2e0313ed9fea4e4aceb14c166349327aea"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 12:26:36 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 08 12:28:17 2015 -0800"
      },
      "message": "Use callbacks for Midi I/O\n\nInstead of having the Sonivox engine directly open the file and\nuse stdio to read from it, use caller-provided callbacks.\n\nChange-Id: Ie55129109060a4a7862fee3177f994401e00b6c1\n"
    }
  ]
}
