)]}'
{
  "log": [
    {
      "commit": "7ca678b41b186dad12c77fc6dbde48dcb2377135",
      "tree": "3200d3b19fc142cb11640ee2faf35bf83f6feda6",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 22 14:09:55 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 22 17:12:38 2020 -0500"
      },
      "message": "HEIF: Re-decode the image when changing color type\n\nBug: 135133301\nTest: I902de3410c45a21cf27b48a02cdc5d514b7ada60\n\nAImageDecoder allows decoding an image multiple times, using different\nsettings (e.g. color type) each time, using the same underlying SkCodec.\nAfter finishing decoding the image, HeifDecoderImpl discards its\nMediaMetadataRetriever in order to clean up resources. Hang onto the\ninput data, so that if a client attempts to decode again, the Impl can\nrecreate its MediaMetadataRetriever to perform a second decode.\n\nIf the client is using the same output color, no new\nMediaMetadataRetriever is needed, since it can continue to use the\noriginal video frame output.\n\nWhen called from Java, the HeifDecoderImpl will be quickly discarded\nanyway, so holding on to the input data until that discard should not be\na problem.\n\nChange-Id: I2ca01a006215c1e6f6472c5e6a4df4e2155a3b11\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": "dab79b3d09783e5053dc91b860eac06bd415cbfd",
      "tree": "229183838216adea270164035e0544354f4bfb5b",
      "parents": [
        "68db3a07ae337de45b82c6e45d41c2c325f8e2dd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 18 08:25:47 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 21 14:15:00 2019 -0800"
      },
      "message": "AIDLize MediaExtractorService\n\nUse .aidl instead of handwritten binder code for MediaExtractorService.\n\nTest: build, CTS\n\nChange-Id: Ibc93eca9128552c23359218ac3bf12319391e1b1\n"
    },
    {
      "commit": "f9656ff1f117830f2f3d3e24be354fa3a4db3ada",
      "tree": "b8958bc6b2700ebc86cb2afdd992a177c2c1ae23",
      "parents": [
        "7e5e530d39e3de6f904c8587b1c60bed631178c1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 15 07:51:15 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 15 11:18:27 2019 -0800"
      },
      "message": "Remove DrmInitialization from IDataSource\n\nDrmInitialization only needs to be called on PlayerServiceFileSource\nand PlayerServiceMediaHTTP, so just have those initialize the forward\nlock engine automatically, which removes the need to have this in the\nIDataSource interface.\n\nTest: atest cts/tests/tests/drm/src/android/drm/cts/DRMTest.java\n\nChange-Id: I344f46b65b5c473930b16b9b4041e4897384dc18\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "0af4db6ace929b75e68834d01bd3175dbe39c1a0",
      "tree": "0a93a037452fb6913cb9225a26ecea87b0de22b6",
      "parents": [
        "f53495687949faddd7666ec4b4206f99b8ec4c04"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 23 15:34:58 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 26 14:50:23 2019 -0700"
      },
      "message": "Fill in frame duration from sample meta\n\nIf sample duration is not available, use the average\nframe duration of the sequence; if that\u0027s not available\ndefault to 30fps.\n\nbug: 120414514\nbug: 139815242\ntest: test some 25fps heif sequence files, the reported\n      duration should be 40ms instead of the default 33ms.\n\nChange-Id: I5ddf0a6cbfb44021dee2955badf3f2772586bb1e\n"
    },
    {
      "commit": "8541d304cde0d633d4301bde7e3d5dbdb9780bf3",
      "tree": "3b863bf720c4118771581aa9166821ee2e2498cf",
      "parents": [
        "28355761d73f1495bba8994dc3c0dc631ae245a8"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jul 12 11:19:47 2019 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Aug 13 12:28:43 2019 -0700"
      },
      "message": "Heif decoder API for decoding image sequences\n\nbug: 120414514\nbug: 78868457\n\ntest: local testing with \"OpenGL Renderer Tests\"\nanimation demo and heifs files\n\nChange-Id: If765b0643920316d0454835e99479122aa1fd665\n"
    },
    {
      "commit": "21ef6ecbf022c98e37b87316e33ecc1d4db4b9da",
      "tree": "579d10ab57b893967663a77f451435bca60dd50c",
      "parents": [
        "fdfae2898f0785f19de198ed00488e03bf52bca9"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 25 11:20:54 2018 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 25 11:21:39 2018 -0700"
      },
      "message": "Fix deleter type mismatch\n\nbug: 112713405\nChange-Id: I6c6f42bca2eb24ab6efe28ef6fdc4d73a959bded\n"
    },
    {
      "commit": "cd03192ba4471f48db8253518cba7a1b3ae36a29",
      "tree": "3c0ccbcdc62e64a7a4b49b7a261f9faf2324835b",
      "parents": [
        "b5bda7b18019fb2d532facb5fa757aa056db0a25"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 24 13:03:19 2018 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 24 13:03:19 2018 -0700"
      },
      "message": "Fix deleter in HeifDataSource\n\nbug: 112647413\nTest: POC; CTS MediaMetadataRetrieverTest;\n.heic file decoding in Photos\n\nChange-Id: I55ccb4ccb99884295ae02a6f1250a8177875f478\n"
    },
    {
      "commit": "0c1407f79ef36422330c2003a608d37df714256b",
      "tree": "04eb9f45da49543f2ad97040a692ea245f8906bd",
      "parents": [
        "0c1f9148ed187a9c3819374050c5ea319b059439"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 02 17:09:05 2018 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon May 07 19:38:05 2018 -0700"
      },
      "message": "Decode one row of tiles at a time for image that has tiles\n\nAdd an api to IMediaMetadataRetriever to decode image rect.\nIt will reuse the same full frame IMemory, and decode only\nthe requested rect. For now, StagefrightMetadataRetriever\nwill only allow decoding of rect that\u0027s a full row of tiles,\nand the requested must be issued sequentially (i.e. no\narbitrary rects). When the extract side is fixed to allow\nseeking by tiles, it can be extended to allow arbitrary\nrects.\n\nThis allows HeifDecoderImpl (on client side) to start\nprocessing the getScanlines in parallel with the decoding.\n\nTest: CTS MediaMetadataRetrieverTest;\nManual testing of HEIF decoding of files with or without tiles;\nManual testing of HEIF thumbnails generation in Downloads app.\n\nbug: 78475896\nChange-Id: I820b21cdf33f80593ee6092d8e1ba68b3beb65dd\n"
    },
    {
      "commit": "70b0afdfabfdfb34aa7a2b86f382eac197cc90cb",
      "tree": "187fd133dc6aae057d49ac4aa95bea33186c2bf4",
      "parents": [
        "fbf6b4990aced38376f8d9f2c0b836a9ffb17089"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Feb 27 12:43:06 2018 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Mar 15 02:26:17 2018 +0000"
      },
      "message": "heif: use width and height for decoder -- DO NOT MERGE\n\nThe display dimensions from MPEG4Extractor is applied on top\nof width and height for scaling, it\u0027s not for cropping. For\nbitmap uses we have to use width and height, the frame from\nmedia server is not scaled.\n\nbug: 73172046\nTest: test app in bug; open folders with heif files in Photos.\nChange-Id: I3d7f1492d08d48876836ccc05b6eb4de0d0c0f9a\n(cherry picked from commit 1a6c11685d3868d0ebe8543842d213c4ff7e9009)\n"
    },
    {
      "commit": "a4f859cd14083195b6b17c4a16c9074410325934",
      "tree": "33042a3e6a07533c4c37c99162a78b97b86e3b3c",
      "parents": [
        "0df1e8d08aeb50771bdae54f77088f31531c4cb0",
        "237f9034c6cbe5cbafb0cd4c862d9dddfbdf7389"
      ],
      "author": {
        "name": "Sungtak Lee",
        "email": "taklee@google.com",
        "time": "Fri Mar 09 19:26:33 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 09 19:26:33 2018 +0000"
      },
      "message": "Handle overflow in android::HeifDataSource::readAt\nam: 237f9034c6\n\nChange-Id: Idc655aa698903af90455f82b6aa665c6472872f5\n"
    },
    {
      "commit": "237f9034c6cbe5cbafb0cd4c862d9dddfbdf7389",
      "tree": "b2f46bad990085ba544d327fa5407075073f786b",
      "parents": [
        "4d4c46123781e08facc5ac8ba5bcf09dd0eb3ad7"
      ],
      "author": {
        "name": "Sungtak Lee",
        "email": "taklee@google.com",
        "time": "Mon Mar 05 15:21:33 2018 -0800"
      },
      "committer": {
        "name": "Sungtak Lee",
        "email": "taklee@google.com",
        "time": "Thu Mar 08 22:17:36 2018 +0000"
      },
      "message": "Handle overflow in android::HeifDataSource::readAt\n\nBug: 73782357\nChange-Id: I03a5b4c5ddaf2664f342973da7f1a79f29cd7be5\n"
    },
    {
      "commit": "49d4aa0a7407ea6632c4a3441c7a4d922d003ea5",
      "tree": "a1d959911a1dc2e0996b0c48ef22b73389b5ca9d",
      "parents": [
        "291daf4507228aeecfd0f07c5fabf373ed84bf27"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Feb 27 12:43:06 2018 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Mar 05 14:06:41 2018 -0800"
      },
      "message": "heif: use width and height for decoder -- DO NOT MERGE\n\nThe display dimensions from MPEG4Extractor is applied on top\nof width and height for scaling, it\u0027s not for cropping. For\nbitmap uses we have to use width and height, the frame from\nmedia server is not scaled.\n\nThis required porting over some fixes from master to fix the\ndisplay size vs. image size reporting, otherwise images with\ngrids may show a black border at the bottom or right.\n\nbug: 73172046\nTest: test app in bug; open folders with heif files in Photos\nand Downloads; CTS MediaMetadataRetrieverTest.\nChange-Id: I3d7f1492d08d48876836ccc05b6eb4de0d0c0f9a\n"
    },
    {
      "commit": "49ce671c4efa4c5d038351ca441e34c5afa5241f",
      "tree": "f269ef96d9f6dbcb169e29accb4f9f1f54830e3e",
      "parents": [
        "d21fb560b26be64a588ff96979022ae4d52f5d3a"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Jan 24 10:16:25 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Jan 26 08:48:56 2018 -0800"
      },
      "message": "Remove unused includes and forward declarations in libmediaextractor/include\n\nTest: make checkbuild\nBug: 67908556\nChange-Id: If840305af5c043bb8014590eb208cf11c99e61ee\n"
    },
    {
      "commit": "d3e0d861aa68a7ef129fe228595bff734448ebc8",
      "tree": "4bbe13bb4dee4cc5f6059f4f0898f615beac820f",
      "parents": [
        "1e848d329b019e832a03c0e9d0e4eb6796c971c2"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Oct 03 13:17:13 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Oct 30 19:58:30 2017 +0000"
      },
      "message": "heif: fixes for image sequences and dual-function files\n\nAdding support for two new sets of APIs on MediaMetadataRetriever:\n\n- getImageAtIndex() and getPrimaryImage()\n- getFrameAtIndex() and getFramesAtIndex()\n\nOutline of changes:\n\n- Proper indexing of all displayable still images, so that they\n  can be retrieved by getImageAtIndex()\n\n- Exposing still images as \"image/x.android.heic\" tracks in\n  MediaExtractor with necessary descriptive keys (such as \"grid-*\")\n\n- Support to retrieve video frames by absolute index instead\n  of timestamps, as image use cases mostly are interested in\n  getting the images and care less about timing.\n\n- Support to retrieve video frames in batches because retrieving\n  one frame at a time is inefficient.\n\n- Refactor image / frame decoding code into FrameDecoder, and split\n  still image decoding and video sequence decoding into to sub\n  classes to facilite future development.\n\nbug: 63633199\n\ntest:\ncts-tradefed run cts-dev --module CtsMediaTestCases --compatibility:module-arg CtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice\n\nChange-Id: I2fe8519fb6907f315a8b513921fc1cc7f436e28d\n"
    },
    {
      "commit": "d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3",
      "tree": "4a3b6fb269ae76af3c0567cc1d57780c17bd2c30",
      "parents": [
        "04ce1be860b40e18ca7f5fdf64ecb82567d7fe24"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Oct 10 00:07:09 2017 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Oct 17 13:43:59 2017 -0700"
      },
      "message": "Remove libmedia and libstagefright dependency from extractors\n\n- MediaSource, DataSource and MediaExtractor are moved to\n  libmediaextractor so that they can be used by extractor\n  implementations without depending on libmedia and libstagefright.\n- XXXFactory classes has been added in order not to expose CreateXXX\n  methods in libmediaextractor.\n- avc_utils is moved to libstagefright_foundation since most of\n  extractor implementations are relying on that.\n\nTest: build + post submit media CTS tests\nBug: 65851881\nChange-Id: I7d5cf18dd25abc10478ac3f6e7d1828ad023e3fb\n"
    },
    {
      "commit": "4c6398b1f8f0525c9ff9a53484b3b9b601bca35b",
      "tree": "1a005a8d0c95f765ecb6eb5de4ae5386fedc2c35",
      "parents": [
        "faf18c58baf4db501c9707a30fd811a4c9386a26"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Sep 07 17:43:19 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Sep 07 18:32:09 2017 -0700"
      },
      "message": "stagefright: explicitly release extractor in StagefrightMetadataRetriever\n\nExtractor dtor on media.extractor side happens asynchronously with the\ndtor of StagefrightMetadataRetriever. If the extractor calls back into\nthe DataSource after mediaserver side released the reference to it, the\nbinder transaction could get stuck.\n\nAdding an explicity release() and call it before StagefrightMetadataRetriever\ncontinues to destruct the DataSource. Only implement it for MPEG4Extractor\nto avoid impacting other extractors at this stage.\n\nAlso adding some code to aggressively release the extractor and data\nsource in HeifDecoderImpl to free up memory.\n\nbug: 65463215\n\nChange-Id: I84c442a1e010dd37a976af5453a353e43f672e22\n"
    },
    {
      "commit": "3f3ffab372ea65f5d658166aee1f6bff0faf78d6",
      "tree": "f2894c1311c3eff6dfccdc170e71c848c448544e",
      "parents": [
        "2cb58cb4949f8870bca99ced39f4f81351ab52e1"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Aug 23 13:51:59 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 25 11:43:02 2017 -0700"
      },
      "message": "heif: cache the entire stream if possible to support seek\n\nAlso, reuse decoding result if decode is called again. Currently\ndecode only retrieves primary picture, so there is no point to\ngo to metadata retriever again.\n\nBug: 64077740\n\nChange-Id: I9243de396957f4d717c386bbaa8692494d624998\n"
    },
    {
      "commit": "ee079fe295c41f89c2ac6316e99ee10847fb78fd",
      "tree": "f47db0216a4ad8895a55d29c729f6200c16bf0b9",
      "parents": [
        "80225208cc32bc97f3765e387f0bb983ca07aa8b"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Aug 23 13:51:17 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Aug 23 13:51:17 2017 -0700"
      },
      "message": "heif: fix decoding of image size different from full tiled area\n\nBug: 64077740\n\nChange-Id: I57ee7e1bc05e320be723d224b9328526543cad25\n"
    },
    {
      "commit": "ea280cb32091e46f3cb5ec68f2c7200913b43168",
      "tree": "64d7a7bd6778e18ca13a4ead069deaecb2241527",
      "parents": [
        "b51ca280e6aaace44ec1d80837439b825c6fce82"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Aug 02 11:10:10 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 14 12:06:00 2017 -0700"
      },
      "message": "heif: adding libheif to be used by skia heif codec\n\n- define platform-independent HeifDecoder interface to be used by\n  skia to decode heif\n\n- add android implementation of HeifDecoder utilizing media framework\n  MediaMetadataRetriever.\n\nbug: 64077740\nChange-Id: I87d803a16c117ab081adbd7c88c1bdb3c4318d66\n"
    }
  ]
}
