)]}'
{
  "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": "352f9804fdc37c2974e3e03fb0ad94b4c86d0f8d",
      "tree": "d843d92c16ed68bfec7bfc554e78d60d4cfc4a84",
      "parents": [
        "10816453deadf911f4e1067f18ebaf060e8372b4"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jun 26 14:25:37 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jun 26 14:27:28 2020 -0700"
      },
      "message": "transcoding: push_asset only for new or modified asset files\n\nbug: 154734285\nChange-Id: Id1bca5293055da6ae59361060f39eb0895093d50\n"
    },
    {
      "commit": "b5f48c9814d94b71c11681cee277eea4d55ae737",
      "tree": "2ad68b31f82f02dd26cbb67be26a46e83dcb1c6e",
      "parents": [
        "9267056e7f9a8ac99506c52c9827f33c9d376b08",
        "0bd737449d762d9dde72917228934f0912fce388"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 25 23:50:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 25 23:50:39 2020 +0000"
      },
      "message": "Merge \"transcoding: Adding TranscodingJobStats for benchmarking.\""
    },
    {
      "commit": "0bd737449d762d9dde72917228934f0912fce388",
      "tree": "c3b9422067064bc5c0c8d92e45cfd411ad63e919",
      "parents": [
        "95b79805055c4383a52bcad9a4564ee64f22a559"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Wed Jun 24 12:57:09 2020 -0700"
      },
      "committer": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Thu Jun 25 14:30:09 2020 -0700"
      },
      "message": "transcoding: Adding TranscodingJobStats for benchmarking.\n\nBug: 145628554\nBug: 154734285\nBug: 154734456\n\nTest: Unit test\n\nChange-Id: I0e51094953a89e9dc6f0e13b7e4202cbd7ba80e7\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": "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": "96471b8372067e05cf7ab60a90f6c8b7ea9b0c2a",
      "tree": "8ad84503ba94372fa5b800a672160ae53331e26d",
      "parents": [
        "d4f4d87cb82a1ff9fd3629d7cb8a4d88a567b203"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Jun 08 11:12:46 2020 -0700"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Tue Jun 09 23:26:24 2020 +0000"
      },
      "message": "transcoding: Add start/pause/resume event update to interface.\n\nThis will also help for testing from java service and the benchmarking\nlater as we need to capture all the job event and log the timing.\n\nBug: 145628554\nBug: 154734285\nTest: Unit test\nChange-Id: If4f2016de08c8e25e67b50548241f1182f3dcb93\n"
    },
    {
      "commit": "19253093cffe6eedf4811870f9929936268c97fd",
      "tree": "02455be6c71ae704bf4dd1ee3ec037e79e5c1748",
      "parents": [
        "3b587c7e9126d7df1e1a2fb7ce8a37f19944524d"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Jun 01 09:10:49 2020 -0700"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Thu Jun 04 19:08:04 2020 +0000"
      },
      "message": "transcoding: Add openFileDescriptor to ITranscodingClientCallback.\n\nThis is used to open the file when transcoding service really\nstarts to process the job.\n\nBug: 145628554\nTest: Build\n\nChange-Id: I2d33e349052a1c14f0b3c99017a653666c52fb49\n"
    },
    {
      "commit": "72d105f876312a6a7a0886963c461a56c16d6383",
      "tree": "90b7e8670ce9815df8f2b2b2b31c9f5388c79abc",
      "parents": [
        "63b7e570a5ee9d48b886c4c18306bb26d5f2a107"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Thu May 21 10:48:55 2020 -0700"
      },
      "committer": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Tue May 26 16:05:35 2020 -0700"
      },
      "message": "Transcoding: Change to use string path instead of fd.\n\nBug: 145628554\nTest: unit test\n\nChange-Id: I321ecf75e770b4500fc3015a5d161e3b48ea5678\n"
    },
    {
      "commit": "00feca22622dca19cf5c1deb942255a98ec15280",
      "tree": "660d320674a8314dc9c3c84d34e3c790bbcffb45",
      "parents": [
        "15c192adcbd4502559f87e57cfc9b245071b8349"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 08 15:02:06 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 08 15:17:30 2020 -0700"
      },
      "message": "transcoding: separate pause\u0026stop on transcoder\u003c-\u003escheduler interface\n\nSeparate stop from pause, and use stop when a job is being cancelled.\nThis tells the transcoder to discard the job and all states for it.\nAlso send the original request to the transcoder start.\n\nbug: 154734285\nbug: 145233472\ntest: unit tests\nChange-Id: I112c08b909f3432dfd4b4803c0786a1ea01deea6\n"
    },
    {
      "commit": "15c192adcbd4502559f87e57cfc9b245071b8349",
      "tree": "1f2796cc2456bda9572d534b71187d7772f9381d",
      "parents": [
        "3fa408f83dda44f768ed7e53dc34b5ea78bb41a1"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue May 05 16:24:00 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 06 14:09:48 2020 -0700"
      },
      "message": "transcoding: remove realtime jobs when a client is removed\n\nAlso disallow usage of the client after unregister.\n\nbug: 154734285\ntest: unit testing\nChange-Id: Ib5d54a897c7e56d42d27645fa55ab6f21f435b5e\n"
    },
    {
      "commit": "3fa408f83dda44f768ed7e53dc34b5ea78bb41a1",
      "tree": "7e79793ff7ab68f006759417ff44ea5dbb157cca",
      "parents": [
        "df797540fde34d6cb552d7b7787e96f6c6c995f4"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Apr 30 11:04:28 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed May 06 10:51:05 2020 -0700"
      },
      "message": "transcoding: fixes for binder died handling\n\nChange client id type to uintptr_t counter, instead of\ncasting binder to int64_t.\n\nSave all shared_ptrs of clients in global registry.\n\nbug: 154734285\nbug: 145233472\n\ntest: transcoding unit tests; manually plant crash\nin test client and check binderDied handling in log.\nChange-Id: If6523a1c6b7ce797a2201462399174e9cf0a3c71\n\nChange-Id: I6b312c0f28a345285e27b738c37baee2bccae755\n"
    },
    {
      "commit": "7522218910507c4e0861661bd37dd06bda65a4b5",
      "tree": "29b0d409276e1e403a047702b1d127d25f1a8499",
      "parents": [
        "88aba17963a63a58c3fea20a357b6fde62c347d6"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Apr 29 14:43:42 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Sat May 02 15:52:13 2020 +0000"
      },
      "message": "transcoding: add SimulatedTranscoder to test service\n\n- Add SimulatedTranscoder (which is an upgraded version of\n  DummyTranscoder) to allow more testing of the service.\n\n- Add unit test that launches dummy test apps from shell\n  to simulate uid policy change.\n\nbug: 154734285\nbug: 145233472\ntest: unit tests\n\nChange-Id: Ic169757d64ad8da7eebd0e1febdcbfb467fe81f4\n"
    },
    {
      "commit": "acb3350ef7d22f53a73137217830546424175a0c",
      "tree": "5a2fdfd0d63ea25b9d1d29ffa655a5a0f794082f",
      "parents": [
        "596e7fde3b16e68f9dc94a9fd092029f87b0f052"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 20 11:04:48 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Sat May 02 02:15:11 2020 +0000"
      },
      "message": "transcoding: add uid state based scheduling policy\n\nbug: 145233472\nbug: 154734285\n\ntest: unit tests\n\nChange-Id: I9e8038252c2be834eb4e2fb2945396572d37b036\n"
    },
    {
      "commit": "da34ac29ae22565c1be7266fe9d9feb455aebb1e",
      "tree": "f427a4ea8f7206f5276329f9fb6fc77f6765ddeb",
      "parents": [
        "c0575919e3371af55e993820cc306b986a98a3f8",
        "0da327aa9b6b564a9633024439d587daac4eadff"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 01 14:08:35 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 01 14:08:35 2020 +0000"
      },
      "message": "Merge \"Transcoder: Added MediaTrackTranscoder and VideoTrackTranscoder\""
    },
    {
      "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": "7ae4e2fa40fbf6035ab15952a3412031aa477798",
      "tree": "8a7acb8da489b094941e57ac408c809d3209132b",
      "parents": [
        "4187c8951b6ec3611720c2f0c2f2ce8da14d9087"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Apr 17 15:24:34 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Apr 29 12:03:09 2020 -0700"
      },
      "message": "transcoding: use uid instead of pid for scheduling\n\nThis change replaces pid usage with uid, there is no functional\nchange other than that.\n\nbug: 154734285\nbug: 145233472\ntest: unit tests\n\nChange-Id: I2000a84486a561a393211cb0b098e456c2173227\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"
    },
    {
      "commit": "6d58e4b1ae638222e6f228ab07f9709199778476",
      "tree": "b6002604f68ea5a258c3600cfc392fee38f0a017",
      "parents": [
        "b134bafea46c8a08fea30f2c534f9844039b937b"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 31 09:41:10 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Apr 15 12:42:10 2020 -0700"
      },
      "message": "transcoding: add job scheduler and unit tests\n\nbug: 145233472\n\nChange-Id: Id0244ff553e9fa963ccc7623cc6198dfd9db2564\n"
    },
    {
      "commit": "8e06263e23b0f44d3a8e2970548a600e6bde3560",
      "tree": "025ed1f839fc6751fc0015dfbdf689a896effb78",
      "parents": [
        "5e76a930b0a7147c0dbd32f0fc1e9cd35baaf705"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 31 10:56:37 2020 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 31 15:52:47 2020 -0700"
      },
      "message": "transcoding: separate client interface from service\n\nRefactor AIDL to separate client interface from service.\n\nUse client listener binder as unique id for client, as multiple\nclients could exist for the same pid.\n\nMisc unit testing changes.\n\nbug: 145233472\ntest: mediatranscodingservice_test, TranscodingClientManager_tests\nChange-Id: I8d9522da23163375df8df7822d0f6ae270cff1b4\n"
    },
    {
      "commit": "93fb84c8d59eb3db95dd90bc34573b7c6c5b5b67",
      "tree": "70974bb096619c7f741f3ce49a52c25873219482",
      "parents": [
        "cb3bd4065ccc7fd6a1613a45f708b5b9f612c61a"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Feb 03 18:19:39 2020 -0800"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Sat Feb 08 17:47:19 2020 +0000"
      },
      "message": "MediaTranscodingService: Add AdjustableMaxPriorityQueue.\n\nAdjustableMaxPriorityQueue is a custom max priority queue that helps managing jobs for MediaTranscodingService.\n\nAdjustableMaxPriorityQueue is a wrapper template around the STL\u0027s *_heap() functions.\n- Internally, it uses a std::vector\u003cT\u003e to store elements in a heap order.\n- Support adjusting item\u0027s priority while maintaining the heap property.\n- Support removing any item in the heap while maintaining the heap property.\n- AdjustableMaxPriorityQueue needs T::operator\u003c() at instantiation time\n\nBug: 145233472\nTest: Unit test.\n\nChange-Id: Ic43eee817877dfbf8b38919ce03d40d8763c493c\n"
    },
    {
      "commit": "5172cabc2ecf0dc6e15539eccae3b35d6aed3de8",
      "tree": "f8c25e3fd2da94c300cbbd63a417497d18f23fb0",
      "parents": [
        "3f4a68a09dfd87b6e5a40f67278e27c957c818a1"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Fri Jan 31 12:40:28 2020 -0800"
      },
      "committer": {
        "name": "Hangyu Kuang",
        "email": "hkuang@google.com",
        "time": "Sat Feb 01 00:54:27 2020 +0000"
      },
      "message": "MediaTranscodingService: Simplify TranscodingClientManager.\n\nChange the singleton to return reference instead of sp\u003c\u003e;\n\nBug: 145233472\nTest: Unit test.\nChange-Id: Ie5b8631ec9e917d80805f63c77618e24720f53bc\n"
    },
    {
      "commit": "26587cbbaad5057e43f6648293fbe5a546fc809c",
      "tree": "a4a1046b12602a68dfe6aa28d122bcd1a2b79cc5",
      "parents": [
        "48c365e01796f391604560421d66ca175937243a"
      ],
      "author": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Thu Jan 16 10:36:08 2020 -0800"
      },
      "committer": {
        "name": "hkuang",
        "email": "hkuang@google.com",
        "time": "Mon Jan 27 13:16:26 2020 -0800"
      },
      "message": "MediaTranscoding: Add TranscodingClientManager.\n\nTranscodingClientManager manages all the clients for\nMediaTranscodingService.\n\nBug: 145233472\nTest: Unit test.\nChange-Id: I29243eeb6dcc0271c9edc8cc28e1b9b2bf6b3912\n"
    }
  ]
}
