)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
