)]}'
{
  "log": [
    {
      "commit": "b55c5456228a5961438b39818feb021007f96963",
      "tree": "cfc16c00da8a80268d0765433b28c34f7e984a41",
      "parents": [
        "1ad0395323a38850fd9204ac9891e9b4779445a3"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jun 26 14:32:12 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jul 06 12:00:11 2020 -0700"
      },
      "message": "transcoder: initial version of pause/resume\n\n- Add pause/resume in TranscoderWrapper, save paused state on pause\n  and use it to create new transcoder on resume.\n\nMisc fixes:\n\n- TranscoderWrapper::stop should only cancel transcoder if the stop\n  is for the currently running job. Scheduler could call stop to\n  cancel a job any time.\n- Don\u0027t hold TranscoderWrapper lock when running event runnable. If\n  the runnable calls back into scheduler, and scheduler may call\n  transcoder again and deadlock.\n- Don\u0027t report abort as error if the transcoder is cancelled explicitly.\n- Push decoder/encoder start as msgs, so that they could be skipped too\n  if the job is cancelled shortly after starts.\n\nTests:\nAdd tests for cancel/pause/resume with real transcoder.\n\nbug: 154734285\nbug: 154733948\ntest: unit testing\nChange-Id: I2b7d3da69df53b92ab351db455310799ba0e0e8f\n"
    },
    {
      "commit": "d6e4aec66184c1a7a78767113e2bf92df133dbfa",
      "tree": "0c48c3346ac574df068db7f9cc3f7c743b1e7432",
      "parents": [
        "1f16f12b608be724ede9c98de15af4e972532e80"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jun 22 14:13:07 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jun 22 15:58:25 2020 -0700"
      },
      "message": "transcoder: fix rotation handling\n\nTransfer rotation degree from source format to track format\nfor MediaSampleWriter, and setOrietationHint on the muxer.\nDuring transcoding using encoder/decoder, clear the rotation\ndegree so that the codec is guaranted to operate non-rotated.\n\nbug: 154734285\nbug: 159649977\nbug: 152091443\n\ntest: unit testing (updated test with rotation)\n\nChange-Id: I7e829ef777b1954d894411e8591a5e31ff36e275\n"
    },
    {
      "commit": "5855ee55158a87b133cb67c086f0530875baa2e8",
      "tree": "65d9d489cae63ee9fe8744788937bd97ea8b7fbe",
      "parents": [
        "f6388bd50e743eeeb56bd3f45a9e69bd14b62c1f"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jun 22 11:41:25 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jun 22 14:13:34 2020 -0700"
      },
      "message": "transcoder: add hevc-\u003eavc unit test and verify formats.\n\nbug: 154734285\nbug: 152091443\ntests: unit testing.\nChange-Id: If755df8e05e5e211b69869c7e0d8299138ff230c\n"
    },
    {
      "commit": "7f5f4281f960549b9fe7298d25f7163c1910c73c",
      "tree": "b184a127cedbb04bfb3ec9e7f5a73d404c27ba6b",
      "parents": [
        "63b79602739d2fb1d83947a0715f505ab0890ba2",
        "a2cc86bf8bd112fe07c190a4d774e70f50b6f0e0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 18 19:32:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 19:32:05 2020 +0000"
      },
      "message": "Merge \"transcoder: wait for actual encoder output format to start writer\""
    },
    {
      "commit": "a2cc86bf8bd112fe07c190a4d774e70f50b6f0e0",
      "tree": "eb7b876b7371a52f85c1757093635c0f2619f84b",
      "parents": [
        "425f5edba6ba21783ede6440e65e3fd97df52a23"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jun 17 16:56:49 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Jun 18 11:09:38 2020 -0700"
      },
      "message": "transcoder: wait for actual encoder output format to start writer\n\nbug: 154734285\nbug: 158240484\n\ntest: unit tests. In particular:\n\nrun MediaTranscoderTests and MediaTranscodingServiceRealTests, and\ncheck the output files. Should play with proper aspect ratio on\nhost and device.\n\nChange-Id: I8254fd8bd42678a414cab5fb0f61c4ba56d6c114\n"
    },
    {
      "commit": "2ef2b43408ea383308e7631b5112bd1221211f97",
      "tree": "da708297f9725533fa7b815e8bc6dcce51a40584",
      "parents": [
        "8129d4eedf8d509a42bc9831f9009c450978da7d"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Jun 15 18:33:11 2020 -0700"
      },
      "committer": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Wed Jun 17 13:57:42 2020 -0700"
      },
      "message": "transcoding: Add more test assets for testing.\n\nAlso move the test file used by transocder to another folder in order\nto be reused by both transcoding service and transcoder for testing.\n\nBug: 145628554\nBug: 154734285\nTest: Unit test\n\nChange-Id: I61e16ab5deba70da71f4d23fc87157be2f3b3bca\n"
    },
    {
      "commit": "664692765fd0fdb1977a096dddeb340c48b0cf76",
      "tree": "d3c840f5b310786d9b5ed53e2e3c25fdc48d1cf7",
      "parents": [
        "425f5edba6ba21783ede6440e65e3fd97df52a23"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Jun 04 16:51:55 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jun 15 11:37:51 2020 -0700"
      },
      "message": "transcoding: hooking up real transcoder in service\n\nbug: 154734285\ntest: unit testing.\n\nChange-Id: Id7de72f86cac75f634276395d4b4be359f44dbc2\n"
    },
    {
      "commit": "308e91f504bfca90e9a6d17b9779203fc3a4a93b",
      "tree": "522682fa41f3ac1e787d3add8da158c17bb1f24d",
      "parents": [
        "19253093cffe6eedf4811870f9929936268c97fd"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jun 10 15:27:56 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jun 10 17:17:56 2020 -0700"
      },
      "message": "Transcoder: change src/dst to fd\n\nMediaTranscoder takes fd as input from upper level service.\n\nAlso, leave file delete to client, since service side can\u0027t do file\ncreate/delete. File opening is done by a callback into the app;\nit seems delete should just handled by app side itself.\n\nMinor refactor to reduce header pollution when included.\n\nbug: 154734285\nbug: 156003955, 152091443, 155918341\ntest: transcoder unit tests.\n\nChange-Id: I4eb8a7d9fea2ccb479f09888353ac4e65bac16f8\n"
    },
    {
      "commit": "cab39d81e06bf72991435ef2042e8436819f1999",
      "tree": "4f20f19bd3b54c0d083f08d9142110e3054af09b",
      "parents": [
        "63b7e570a5ee9d48b886c4c18306bb26d5f2a107"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Thu May 14 16:32:21 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jun 03 14:25:12 2020 -0700"
      },
      "message": "Transcoder: Added MediaTranscoder and unit test.\n\nMediaTranscoder is the API for the native transcoding library.\n\nTest: Unit tests.\nBug: 156003955, 152091443, 155918341\nChange-Id: I24b52d174db0faecea8f331ef6d8a3dc4e473c4e\n"
    },
    {
      "commit": "a85df7fdf8fae10ecad165d6427e36ae269a0136",
      "tree": "b1b7ec214e4f62fda0eddc4a1dbf7abbfded74ef",
      "parents": [
        "c6221dbed39f3a1270329f808ae417bdda9aaf8b"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Thu Feb 20 16:32:04 2020 -0800"
      },
      "committer": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Fri May 15 17:42:25 2020 -0700"
      },
      "message": "Transcoder: Added MediaSampleWriter and unit tests.\n\nMediaSampleWriter pulls samples from its input sample queues,\nin time interleaved order, and adds them to its muxer.\n\nTest: Unit test (build_and_run_all_unit_tests.sh).\nBug: 156004594\nChange-Id: I7f0085e9ef6ec50dca7d30c6a86709b961056d1b\n"
    },
    {
      "commit": "c6221dbed39f3a1270329f808ae417bdda9aaf8b",
      "tree": "54b6ffb35118063461dcf59c838f570ac50fb6a1",
      "parents": [
        "da6850898bbd65edc388cc4f1d536f5d3a6ecc86"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed Mar 18 14:46:22 2020 -0700"
      },
      "committer": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed May 06 16:04:38 2020 -0700"
      },
      "message": "Transcoder: Added PassthroughTrackTranscoder and unit tests.\n\nPassthroughTrackTranscoder is a MediaTrackTranscoder implementation for passthrough mode.\nIt manages an internal buffer pool to reuse buffers.\nThis commit also ensures that it is safe to hold on to dequeued MediaSamples\nafter the MediaTrackTranscoder is released.\n\nTest: Unit test.\nBug: 152091443\nChange-Id: I876957647c5fee0557caf465227ff42cdb0eceee\n"
    },
    {
      "commit": "0da327aa9b6b564a9633024439d587daac4eadff",
      "tree": "214e375106f5df7c62e8b3d7a26af9fd1cbfa352",
      "parents": [
        "b975440ff66db6b01c9aa100e78ea811c5f9a4bb"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Fri Jan 31 16:22:18 2020 -0800"
      },
      "committer": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Thu Apr 30 16:52:52 2020 -0700"
      },
      "message": "Transcoder: Added MediaTrackTranscoder and VideoTrackTranscoder\n\nA track transcoder transcodes samples from a single track of a media file.\nMediaTrackTranscoder is the base class for all track transcoder, and\nVideoTrackTranscoder is a concrete implementation for video tracks.\n\nTest: Unit test.\nBug: 152091443\nChange-Id: I7980a3cda40229004b6bca5212d3e903f19a3017\n"
    },
    {
      "commit": "cb9198eddf4b3571cbee71c14938d2b9fa0f69b2",
      "tree": "229b672bbb9f75df7ea64713aa3ebd9ab4cfe62b",
      "parents": [
        "2f09c72a625eb0fefd0dc2d255f913cf39d621ff"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed Apr 01 13:38:09 2020 -0700"
      },
      "committer": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed Apr 22 15:01:34 2020 -0700"
      },
      "message": "Transcoder: Add MediaSampleQueue and unit tests.\n\nMediaSampleQueue asynchronously connects producers and consumers of compressed media samples.\nMediaSampleQueue will be used to hold output samples from each TrackTranscoder.\nMediaSampleQueue will be extended to optionally limit the number of (or cost of) samples it can\nhold before blocking the producer.\n\nTest: MediaSampleQueueTests\nBug: 152091443\nChange-Id: I8e78ea3c3848934078126220adaa91fb033b2088\n"
    },
    {
      "commit": "08b38d01b7ad88c3197c6010a71d483c0e74547e",
      "tree": "8ccbff470ca9ed279a2af0238cde4c0b412bda80",
      "parents": [
        "6709a937953cf92b73fb057ec9e4e0616ab3e6c5"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Fri Apr 17 14:29:33 2020 -0700"
      },
      "committer": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Fri Apr 17 18:08:28 2020 -0700"
      },
      "message": "MediaTranscodingService: Add some missing build flags to Android.bp\n\nThe build flag uncover some locking are missed and this CL also fixes\nthem.\n\nBug: 145233472\nTest: Unit test\nChange-Id: Ide999b95f064adf14967cc2e36331524e83426d2\n"
    },
    {
      "commit": "478df7e3aa8435a70ca564dafe6a133e0bd938b1",
      "tree": "a593c42a4fc8b096a0c332fe4cf64a6f0f0e5f3f",
      "parents": [
        "182b06a0c4733501e9187a6095ff5be76f1a8908"
      ],
      "author": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed Jan 29 15:34:24 2020 -0800"
      },
      "committer": {
        "name": "Linus Nilsson",
        "email": "lnilsson@google.com",
        "time": "Wed Apr 15 14:41:39 2020 -0700"
      },
      "message": "Added MediaSampleReader interface and an NDK based implementation.\n\nMediaSampleReader is an interface for reading media samples from\nmultiple tracks independently from each other. Each track maintains\nits own time state and reading from other tracks does not effect that.\n\nTest: Unit test.\nBug: 152091443\nChange-Id: Ib8c965df5d2a47fc6218ceb80b40d0687fb3b531\n"
    }
  ]
}
