)]}'
{
  "log": [
    {
      "commit": "63a69fd4f8d21c19fefc88437cc27a96775a87ca",
      "tree": "064c3acc7cfe9a018cc53bccb00dfb6c3052c716",
      "parents": [
        "6d319b8aaa961862afac48010d96d03afb11fa1c"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 02 17:20:41 2018 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Mar 22 11:35:19 2018 -0700"
      },
      "message": "Revert \"Add additional context to MtpDatabase\"\n\nThis reverts commit 5f0139d2e8bc8b5819e2c5ef4440f766a4af8813.\n\nBug: 72877143\nTest: Switch users, use MTP\nChange-Id: Ide372a9311a4f2647715d052fc0e1d9a04808aa0\n"
    },
    {
      "commit": "6d319b8aaa961862afac48010d96d03afb11fa1c",
      "tree": "a90ec1e5d307de422619e6102060df871e222f54",
      "parents": [
        "c7f6eadffc0a243618ce09ee8d6bb8235738135d"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Dec 06 16:03:57 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Mar 22 11:35:19 2018 -0700"
      },
      "message": "Write descriptors for Mtp in UsbService\n\nThe current model for setting up a functionfs\nfunction is:\n\nUsbDeviceManager#setCurrentFunctions() -\u003e\nintent is sent to MtpReceiver to write the descriptors -\u003e\ninit/hal waits for descriptors to write, then pulls up gadget -\u003e\nGadget is configured, a USB_STATE intent starts MtpServer\n\nThe main downside of this is a lack of reliability because\nthe Mtp process could be killed at any point. Normally, a\ngadget is unbound if its control endpoint is closed. no_disconnect\nworks around this, but is still a little janky. In addition, the\nextra intent delays the startup of the gadget.\n\nWith the new model, UsbDeviceManager writes the descriptors\non initialization. Since it is a system service, it won\u0027t be killed.\n\nUsbDeviceManager#setCurrentFunctions() -\u003e\ninit/hal pulls up gadget -\u003e\nGadget is configured, a USB_STATE intent starts MtpServer\nMtpServer calls UsbManager#getControlFd to get a dup of the control\nendpoint.\n\nAlso modify permissions so system server can access mtp files.\n\nBug: 72877174\nTest: Change usb configurations to ptp/mtp\nChange-Id: Id17d2b5930f4e1f37ec1b4f00add9d594174ad49\n"
    },
    {
      "commit": "397962981c418dbd05bdb52cad47498ad4355e88",
      "tree": "f10e2ad945ad8ed8b007eb80842fe0dbefdf6591",
      "parents": [
        "aa8cbab151f4df89e3e2c7f3df36b005e01d8558",
        "6b2394899f6792528de1636c7a6ed5f85c4573ad"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 22 16:14:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 16:14:19 2018 +0000"
      },
      "message": "Merge \"Audio presentation: Docs \u0026 Testability fixes\" into pi-dev"
    },
    {
      "commit": "6bd3ab6dc6ad4001c387d7f4a4a2ce954be6ca16",
      "tree": "6ccba56aa31629ffa79c1f0a683f680eea0517e4",
      "parents": [
        "dcccfd974269e92ee1d4c908018419033bdb0c20"
      ],
      "author": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Thu Mar 22 14:53:53 2018 +0900"
      },
      "committer": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Thu Mar 22 14:55:55 2018 +0900"
      },
      "message": "Remove unnecessary Context from ApiLoader\n\nBug: 76001644\nTest: compile\nChange-Id: I6ac81dac16374d90facfe33c68607c5c286b335f\n"
    },
    {
      "commit": "6ed6340e3cd43fc111fb4916b380da61eba834c4",
      "tree": "0e8878fde93cf3ab28f74b9024409851868c956d",
      "parents": [
        "efcd6e1ceb5363f37f49569f93e9ae9cfd20ddc2",
        "7e25b3d9155343c6ee227499a5c29f42ae9d791c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 21 03:27:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 03:27:56 2018 +0000"
      },
      "message": "Merge changes from topic \"SoundTriggerJobService-steps\" into pi-dev\n\n* changes:\n  Throttle number of sound trigger operations / day\n  Add SoundTriggerDetectionService\n  Expose SoundTriggerManager and SoundTrigger APIs\n"
    },
    {
      "commit": "ffb6521082ee2571f6003e9a11d6602089b49f52",
      "tree": "5f4674c804a0913556b8fc6135da80cffd4fa6d7",
      "parents": [
        "db0e4f1d733392f5e7fca335d51cc17b6c7a23fb",
        "6c8512978af64592305e967c838d1b22d348e297"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 21 01:04:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 01:04:15 2018 +0000"
      },
      "message": "Merge \"heif: address api review comments\" into pi-dev"
    },
    {
      "commit": "18e3eb816887156f40def1c14db434ddde9ec245",
      "tree": "eb89c3addc9bac983b9d4fb1138ebe4de5fcc52a",
      "parents": [
        "a5fd0294c76c1faa3479a2093ae3e5f0838791ad"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Mar 09 16:55:55 2018 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Tue Mar 20 13:57:14 2018 -0700"
      },
      "message": "Add SoundTriggerDetectionService\n\nThe service is meant to replace the PendingIntent based API. Once all\nusers of the PendingIntent based API switched the PendingIntent based API\nwill be removed.\n\nTo have as little as possible impact on the whole SoundTrigger framework\nthe RemoteSoundTriggerDetectionService class implements the same\ninterface as the PendingIntent based class. Hence the exising code has\nvery little change. Further once the old code can be removed the amount\nof changed (and added) code is limited.\n\nThe RemoteSoundTriggerDetectionService -\u003e SoundTriggerDetectionService\nis a vanilla as possible service implementation. The special behaviors\nare:\n- The system holds a wakelock while service operations are in progress\nand the service is bound as foreground. Hence the service can e.g.\nlisten to the microphone.\n- Service operations have a certain amount of time they are allowed to\nrun. Once every operation is either finished or the the operation\nexceeded the allotted time, the system calls onStopOperation for each\nstill pending operation. This is a similar model as for the commonly\nused JobService.\n  Please note that if the time allowed for an operation is 15s and\nop1 was run as 0si, and op1 was run at 5s, the service is allowed to run\nuntil 20s. Hence _both_ onStopOperations will happen at 20s. This is\ndone for ease of implementation but should not give the service more\npower than calling onStopOperation exactly 15s after each operation is\ntriggered.\n- If an operation is done before the allotted time is reached, the\nservice can declare the operation as finished manually by calling\nonOperationFinished. This is a call back into the system, hence a\n\u0027client\u0027 binder is sent to the service. If the operation is finished\nby calling this method onStopOperation will not be called.\n- As the service instance might be killed and restored between\noperations we add a opaque bundle \u0027params\u0027 to each operations. The users\nof the API can use this to send data from the start command to the\noperations. It can also just be set to null. The params are not meant to\nstore changing state in between operations. Such state needs to be\npersisted using the regular methods (e.g. write it to disk)\n- A service can be used for multiple recognition sessions. Each\nrecognition is uniquelity defined by its sound model UUID. Hence each\noperation gets at least tree arguments: Operation ID, sound mode UUID, params\n- As a small optimization the params are cached inside of the service\ninstance.\n\nThe time allowed for each operation is in a @SystemAPI global setting,\nso the service can make sure it finishes the operations before they are\nstopped. It might take some time to deliver the operations via the\nbinder, hence it is not recommended to try to use every last ms of\nallotted time.\n\nTest: atest SoundTriggerDetectionServiceTest (added in separate CL)\n      atest android.provider.SettingsBackupTest\nChange-Id: I47f813b7a5138a6f24732197813a605d29f85a93\nFixes: 73829108\n"
    },
    {
      "commit": "d41fed72c78ab1f2f71ff5a961db5fce8c79f1c5",
      "tree": "aca211585d8931649cb111635b5d468c5c73651e",
      "parents": [
        "fc841b26a92caee1fec4c48fef5f9bd6ecd2f040",
        "450a5ffdfd6e4dffbacda25b6d93abd2b93355f7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 20 12:33:37 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 12:33:37 2018 +0000"
      },
      "message": "Merge \"Camera: Populate Image tranformation in reader and writer\" into pi-dev"
    },
    {
      "commit": "450a5ffdfd6e4dffbacda25b6d93abd2b93355f7",
      "tree": "809d689000e2e7f5bcd2d827a3547849f702a693",
      "parents": [
        "b7ad5e429f7ec16bb0c35e1aed9e0e7a87a78f65"
      ],
      "author": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Mon Mar 19 16:05:10 2018 +0000"
      },
      "committer": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Mon Mar 19 16:19:43 2018 +0000"
      },
      "message": "Camera: Populate Image tranformation in reader and writer\n\n\"ImageReader\" and \"ImageWriter\" must pass information about the\nspecific buffer transformation.\nCurrently only the \"ImageReader\" implementation of the\n\"android.media.Image\" abstract classs will populate the\ncorresponding transformation, the remaining implementations will\nuse the default identity tranformation.\n\nBug: 75316204\nTest: Manual using test application,\nCamera CTS\n\nChange-Id: If5c12134fbbef8cc20c3d369986ba613bc4f2cec\n"
    },
    {
      "commit": "83bc984a6c67fea9ea49813524c75872e68acd05",
      "tree": "5bb9bb6673e51881861c8d70e5553b507399b69f",
      "parents": [
        "ac16fb5d41f1090228e77e86bd5617491a43e9ae"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 15 20:31:06 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 19 17:39:02 2018 +0900"
      },
      "message": "MediaSession2: Implement fastForward() / rewind()\n\nBug: 74724709\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: Ibd313dc6eed82a5d7cc9fc156f7851aba13f9e29\n"
    },
    {
      "commit": "72a86922d472ed130b7c8fbed538359f260d5285",
      "tree": "f7693d03fe198ba36a8048cc13edfb8be0401705",
      "parents": [
        "685288127d5bfa090a8fa2d709d5acf2b8f2c057"
      ],
      "author": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Thu Mar 15 20:24:39 2018 +0900"
      },
      "committer": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Sat Mar 17 18:56:28 2018 +0900"
      },
      "message": "Remove Context requirement from updatable\n\nBug: 74843539\nTest: runtest-cts-MediaComponents \u0026\u0026 atest VideoView2Test\nChange-Id: Iba5422f8d092205316ec3fa2c10da6d3f983fde6\n"
    },
    {
      "commit": "78e4f84f045d2452f59c6ebea81493bd9894aa1b",
      "tree": "1cf1e8ea4a610d87332768e8c89f84c398d57aa3",
      "parents": [
        "328df91d99387aca59d5115a698f3ca401e17534"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Thu Mar 15 14:00:07 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 16 18:03:17 2018 +0900"
      },
      "message": "MediaSession2: Implement getPlayerState/Position/BufferedPosition\n\nBug: 74578458\nTest: Passed CTS\nChange-Id: If215e8e16bdce9fdc04ca18ed8d08ed374d13a98\n"
    },
    {
      "commit": "f10ca2f9606f004e66415ce5d9b3e97441cc9917",
      "tree": "ad94e0303975a368d8bcef47aeed4adece7d9af9",
      "parents": [
        "ebc30594e01f5a873a600483f3b8e233bbb59659"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 14 20:37:38 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 16 12:21:29 2018 +0900"
      },
      "message": "MediaSession2: Implement PlaylistParams replacements\n\nThis includes following changes\n  - Remove PlaylistParams\n  - Implement PlaylistParams replacements. Here\u0027s the list.\n    - get/setShuffleMode()\n    - get/setRepeatMode()\n    - Note: Playlist metadata APIs are already submitted (b/74174649)\n\nBug: 74116823, Bug: 74118768\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: I0267ffeaf92257eb7b81ffc8b6a3f40b5a2f6f9c\n"
    },
    {
      "commit": "8e17db55543f4f9e9724527adc89934602ccfb49",
      "tree": "7d8a31696b667c431c7b33735170eb95e85dbbe9",
      "parents": [
        "15fc0504323e16848fd1fedb54a3f2a9afc51179"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 15 16:16:51 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 16 10:59:32 2018 +0900"
      },
      "message": "MediaSession2: Remove MediaSession2#registerPlayerEventCallback()\n\nBug: 74157064\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: Ia976c0ebe9f2b7eff0ae603db96ab106aa045cbc\n"
    },
    {
      "commit": "15fc0504323e16848fd1fedb54a3f2a9afc51179",
      "tree": "1028dd6549b498232ae840630b4b3f526f16fa26",
      "parents": [
        "ed875ea13255869eb54b46dcf0442868faf2adea"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 15 16:10:34 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 16 10:52:18 2018 +0900"
      },
      "message": "MediaSession2: Remove onPlaylistChanged() without metadata\n\nBug: 74174728\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: I84495aa19bc03009c81cdefdf8e65fbff4b7bcb6\n"
    },
    {
      "commit": "b0179a3a443feb383da28a679e751e92ba1f4428",
      "tree": "0d03424cde800bf7011a3d3a9915a124dcb3f6c3",
      "parents": [
        "0b795eb88e481944f0b182f610870ee20326a978",
        "e14acb53fa2ff0f6327afeae30268431d0eed927"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 16 00:18:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 00:18:41 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Convert DataSourceDesc to MediaItem2 in MyPlayerEventCallback\" into pi-dev"
    },
    {
      "commit": "2d76c3ce8216f18c0a81eb53c8479887581cc43c",
      "tree": "087c2f9c839a41d44cf569711ef55a56e4c88ae7",
      "parents": [
        "25300a1ff23bd3cd66148903dac77948d53dabda",
        "371144fcc23f3d0a668d0d51bd3c3f90c964cd7b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 15 22:54:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 22:54:49 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2Impl: fix null object reference.\" into pi-dev"
    },
    {
      "commit": "6c8512978af64592305e967c838d1b22d348e297",
      "tree": "ee63c71f05e71ebb22cf8ea9834e11da1ed91f3a",
      "parents": [
        "4985fdef8bee4598df89f014a0886be24cd17fdb"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Mar 14 18:56:56 2018 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Mar 15 15:05:29 2018 -0700"
      },
      "message": "heif: address api review comments\n\n- renaming of MediaFormat keys related to grid config\n\n- add methods to MediaMetadataRetriever to get image/frame\n  with default bitmap config\n\n- fix java doc\n\nbug: 74831433\n\nChange-Id: Iec607e615d34bea0620070592e4adcfc04cbccae\n"
    },
    {
      "commit": "991ae64ffef68c2c959b80c80ecc8d45db01238e",
      "tree": "7d079349cd0450f891f98b8568bf3969698778e1",
      "parents": [
        "6d39e55020cfb09b89396d6d9e38ba8e389ebf09",
        "a0b72a6cdd6e575e2ea0ec2bffc9a361c4041665"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 15 21:40:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 21:40:32 2018 +0000"
      },
      "message": "Merge \"fix slow get caps -- DO NOT MERGE\" into pi-dev"
    },
    {
      "commit": "371144fcc23f3d0a668d0d51bd3c3f90c964cd7b",
      "tree": "622a1e0f7a05b81bf9dd41e6bbaf40088a424142",
      "parents": [
        "50f118a1214d00a4be1cadc9efb2bcf787927f3f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 15 11:26:37 2018 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 15 11:26:37 2018 -0700"
      },
      "message": "MediaPlayer2Impl: fix null object reference.\n\nTest: cts tests pass\nBug: 74204684\nChange-Id: I906eeb9d907ae1a798be585c54126f02eb66448f\n"
    },
    {
      "commit": "a0b72a6cdd6e575e2ea0ec2bffc9a361c4041665",
      "tree": "7985ee84659bc987d2e19c564af4c3c725c68800",
      "parents": [
        "dbeb6bc3f14d51cfee7b16214c348e2824a9d5ef"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Feb 28 18:46:26 2018 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Mar 15 18:17:53 2018 +0000"
      },
      "message": "fix slow get caps -- DO NOT MERGE\n\nWhen get caps is called on an MediaCodec object, try to\nuse the codec info for that MediaCodec first as it should\nbe available during codec construction. Only when that\nsomehow failed go and initialize the full MediaCodecList,\nas building the entire list could be very slow.\n\nAnd when cloning the CodecCapabilities from MediaCodecInfo,\ncopy the fields directly and the fields (other than the ones\nmodifiable by client) are immutable after construction.\n\nbug: 74073607\n\nTest:\nCTS media post submit:\ncts-tradefed run cts-dev --module CtsMediaTestCases --compatibility:module-arg CtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice\n\nChange-Id: I4ae5f2431da8528e1eca093c5cfb98abcb4a5bbf\n(cherry picked from commit 90d7304a83ea1758ac2f7a9293d4790a1a28eb4e)\n"
    },
    {
      "commit": "50f118a1214d00a4be1cadc9efb2bcf787927f3f",
      "tree": "841989e1dc914c6fb469dcd52d301a3f87ad1599",
      "parents": [
        "d2f757bdd9ced844f9724558f776a9e2cbcaa2e6",
        "096d97ac3e01d3a148f6148180c375f9337b64e5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 15 15:40:10 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 15:40:10 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2Impl: fix several functions\" into pi-dev"
    },
    {
      "commit": "e14acb53fa2ff0f6327afeae30268431d0eed927",
      "tree": "e079c42d324f64a30d7a5bd04a7a8c04335d2a02",
      "parents": [
        "a01d80b97e416b5e30913122b56270d5b3a93749"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Mar 14 20:31:58 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Thu Mar 15 20:37:35 2018 +0900"
      },
      "message": "MediaSession2: Convert DataSourceDesc to MediaItem2 in MyPlayerEventCallback\n\nThis CL adds a hidden API getMediaItem() in MediaPlaylistAgent.\n\nBug: 74506462\nTest: Passed CTS\nChange-Id: I1aefd7e47e1881fe14fcd1cc681095a6130624cf\n"
    },
    {
      "commit": "68c774a1ee105648878933fb858c183882be2427",
      "tree": "3c52d0d1c205d2ac267a0bac6d0f6edc0dca252a",
      "parents": [
        "2572f6b7ae5f2cd59383976a4d1b8b6f82911a5a"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 15:48:36 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 15 15:49:58 2018 +0900"
      },
      "message": "MediaSession2: Implement skipTo APIs\n\nThis implements following APIs from both session and controller.\n  - skipToPlaylistItem()\n  - skipToNextItem()\n  - skipToPreviousItem()\n\nBug: 74175632\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: I47d94346c997314ff39797bac3034aa507058036\n"
    },
    {
      "commit": "096d97ac3e01d3a148f6148180c375f9337b64e5",
      "tree": "e1b9b5b82b55ec2bd95e9352821aacd82164fec4",
      "parents": [
        "5dbde05f06a1fc5273efb6a38e3f65419a30ea23"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Mar 13 08:47:59 2018 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Mar 14 14:46:24 2018 -0700"
      },
      "message": "MediaPlayer2Impl: fix several functions\n\nTest: MediaPlayer2 plays\nBug: 74204684\nChange-Id: I0e4fbd2915f2a726a6016c13f47e7d1433593c74\n"
    },
    {
      "commit": "009c393ca111743a61885f6290eba03e2afe404f",
      "tree": "41b465388e9eaad13bb458246029746c899df345",
      "parents": [
        "4d1390e4d7d595b096cc99f287873873bc0655f4"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 19:15:59 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 14 10:02:36 2018 +0900"
      },
      "message": "MediaSession2: Refactor incoming binder calls to the MediaSession2Stub\n\nThis CL refactors methods in MediaSession2Stub that handles incoming\nbinder calls from the controller by adding methods to do followings\nin one place.\n  1. Check if the session hasn\u0027t closed.\n  2. Check if the controller is allowed for the command\n  3. Call SessionCallback#onCommandRequest() for APIs that would be\n     sent directly to the MediaPlayerBase or MediaPlaylistAgent if\n     allowed.\n\nThis CL also adds missing command code for setRating().\n\nBug: 74581821\nTest: Run CTS tests with MediaComponents/runcts.sh\nChange-Id: I9b96e26b7644cff3c54269773590c73ff30f956c\n"
    },
    {
      "commit": "15d3ba624c07be0afdaa56db2ca5e6fe852418e4",
      "tree": "99af16e5f522d5c23d0576ea76a4c6640c1dd272",
      "parents": [
        "f0927b0726f2a900cba03fdc6e7976754ed8618a",
        "c006dc2a8517f70a8f8f54047b5aa7cc0c4eb5ac"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Tue Mar 13 12:03:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 12:03:55 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Replace PlaybackState2\" into pi-dev"
    },
    {
      "commit": "c006dc2a8517f70a8f8f54047b5aa7cc0c4eb5ac",
      "tree": "62dfcc76d136556978bbd82a42f572b03769645d",
      "parents": [
        "c3efa17bdd2e4261468b3906eacee6a650248294"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Mar 07 10:22:45 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Tue Mar 13 17:05:55 2018 +0900"
      },
      "message": "MediaSession2: Replace PlaybackState2\n\nThis CL removes PlaybackState2 and replaces it with other APIs.\n\nBug: 74370608, Bug: 73971431\nTest: Passed CTS\nChange-Id: Ifa16b1d551957ab4bb06979ddf29b18772093035\n"
    },
    {
      "commit": "623122cd98594e295b91f5d7b883f8b5126bd4b8",
      "tree": "494c6d07f351b418048c586c1d2e696b45e54887",
      "parents": [
        "660a7639ca6bb48886d3ead65282e810a697e8ec"
      ],
      "author": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Tue Mar 13 13:30:06 2018 +0900"
      },
      "committer": {
        "name": "Christofer Åkersten",
        "email": "akersten@google.com",
        "time": "Tue Mar 13 06:23:34 2018 +0000"
      },
      "message": "Ensure members are non-null in callback\n\nBug: 74570008\nTest: runtest-cts-MediaComponents -r 100\nChange-Id: I59590afae4e67fa8a90f8a7b4a6be58ce54e2806\n"
    },
    {
      "commit": "c3efa17bdd2e4261468b3906eacee6a650248294",
      "tree": "3c9e7848fdd50a7527a4623a138ecc3da0db3573",
      "parents": [
        "9f0111c82a4e9957d5912078cad7fc3742b9a07d",
        "8562fd9504c28151b52342af5dc83be3c1c9780c"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 04:30:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 04:30:50 2018 +0000"
      },
      "message": "Merge changes from topics \"session2_additem\", \"session2_playlistmetadata\", \"session2_getplaylist\" into pi-dev\n\n* changes:\n  MediaSession2: Implement add/remove/replacePlaylistItem()\n  MediaSession2: Implement update/getPlaylistMetadata()\n  MediaSession2: Implement get/setPlaylist()\n"
    },
    {
      "commit": "8562fd9504c28151b52342af5dc83be3c1c9780c",
      "tree": "80b68ee41b3113e505b88e0f28e8ccb1e8076196",
      "parents": [
        "dc5ab8095a98eb4d128a057f2ecd14c3cff9da8a"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 12 18:04:17 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 11:59:18 2018 +0900"
      },
      "message": "MediaSession2: Implement add/remove/replacePlaylistItem()\n\nBug: 73149584\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: I29804f52eaca45de21fd66634e4eeee2c72a9a25\n"
    },
    {
      "commit": "dc5ab8095a98eb4d128a057f2ecd14c3cff9da8a",
      "tree": "8e55a7d2c5a76a8a4f1e83e5b942a3325de67a4d",
      "parents": [
        "25db3cdb93f3de5073f53f56f42efaa154a3fe77"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 12 10:49:28 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 11:55:55 2018 +0900"
      },
      "message": "MediaSession2: Implement update/getPlaylistMetadata()\n\nBug: 74174649\nTest: Run CTS with MediaComponents/runcts.sh\nChange-Id: I3ac2dabfc7f532bf7d7262940e3dc309e97fd45a\n"
    },
    {
      "commit": "25db3cdb93f3de5073f53f56f42efaa154a3fe77",
      "tree": "7c55b1a6b5d86fd46f8bf105c333b5ad5b180221",
      "parents": [
        "17761e799e2428839e8c049719ac1c4019bd1a64"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 08 22:17:11 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 13 11:48:30 2018 +0900"
      },
      "message": "MediaSession2: Implement get/setPlaylist()\n\nBug: 74326040\nTest: Run CtsMediaTests for MediaSession2\nChange-Id: Ib799c03edd2f79c6f9ffa989aea1137018ec55b3\n"
    },
    {
      "commit": "8807436378fae2a0525dbf85594f45fe9b131def",
      "tree": "783e5f8ace521dcb643efd72a91ae972b4038cbe",
      "parents": [
        "07c1cc1f4febfbea6e262e591914012ab18b9617",
        "a89f6e1bb2076518068084fea53c4ee5c1306b4c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 13 02:29:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 02:29:25 2018 +0000"
      },
      "message": "Merge \"heif: add option for specifying bitmap pixel format\" into pi-dev"
    },
    {
      "commit": "2b83982b2b8a0e2772a0f44def8007f274cb8376",
      "tree": "dfec5b67c567b56a578e965ebea26e094eb371cb",
      "parents": [
        "b44e3b1799e6cc2bf77136ddd02f97f559ab7092",
        "69d2d51a59ecb30742673fbe56b68397185a08c5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 13 00:09:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 00:09:02 2018 +0000"
      },
      "message": "Merge \"Make MP2 operations asynchronous and send matching notifications\" into pi-dev"
    },
    {
      "commit": "a89f6e1bb2076518068084fea53c4ee5c1306b4c",
      "tree": "8c6dc07af07eb0982ffbf4f43dce2aa3bbf96750",
      "parents": [
        "3a1b5d186786bf41a73370f31f90033b23a5a70a"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Mar 07 16:22:18 2018 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Mar 12 21:23:00 2018 +0000"
      },
      "message": "heif: add option for specifying bitmap pixel format\n\nAdd an option similar to BitmapFactory.Options to the bitmap\nextraction APIs added in P to allow the app to specify bitmap\u0027s\npixel format. MediaMetadataRetriever\u0027s old getFrameAtTime()\nonly allows extraction in RGB565, for image use case the bitdepth\ncould be too low.\n\nAlso change return type of getFramesAtIndex to List as\nLint is complaining about returning raw arrays.\n\nbug: 63633199\nbug: 73886998\n\nChange-Id: I40f0a421c767483e32c7744180dc5a187681e066\n"
    },
    {
      "commit": "f78a08c2d96163db81be223f846519de077aeb75",
      "tree": "d5aa404c17ff5464838e2e078f127928f20e3df6",
      "parents": [
        "2b9620cc71112b4dc0025744ccb6b4f01f7b554b",
        "e536bf7b22b35ddebb58d2451533b75d825113e7"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Mar 12 19:40:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 19:40:00 2018 +0000"
      },
      "message": "Merge \"heif: add definition for HEVC Main Still Picture profile\" into pi-dev"
    },
    {
      "commit": "69d2d51a59ecb30742673fbe56b68397185a08c5",
      "tree": "7ea9b4a2a2cb3dbf33fc5b03a2054063df6b732b",
      "parents": [
        "b710e91bac034fc123233e6f9218bd8ba3058ec6"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Mar 05 18:37:55 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Mar 12 11:33:34 2018 -0700"
      },
      "message": "Make MP2 operations asynchronous and send matching notifications\n\nTest: testPlayVideo \u0026 testEventCallback \u0026 testPlaylist\nBug: 74204782\nChange-Id: I7a0f7d1ba5334c68380ef928294dc52cae76c185\n"
    },
    {
      "commit": "89a2b6c5603ef024e1fe1a9445977aa15118db5a",
      "tree": "c41c82b45954fde10d11042303ccce6c27608065",
      "parents": [
        "fe00a37b8fabdd9ebdc2d6dd968e066c60ac775b",
        "62b01c7d26d6fc1d523f96dfd883ddffcd929d58"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 12 17:45:57 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 17:45:57 2018 +0000"
      },
      "message": "Merge \"Implement CodecProfileLevel.{equals|hashCode}\" into pi-dev"
    },
    {
      "commit": "6b2394899f6792528de1636c7a6ed5f85c4573ad",
      "tree": "c9f601ee7bd9e7027e95b6448364427a551a5aa7",
      "parents": [
        "0aa191ccbf159b0d6127cfc190e2c4d5fa319eb9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 09 17:01:44 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 09 17:04:05 2018 -0800"
      },
      "message": "Audio presentation: Docs \u0026 Testability fixes\n\nFix some minor issues in JavaDocs. Make some methods visible\nfor tests.\n\nNo public API changes.\n\nBug: 63901775\nTest: cts-tradefed run cts -m CtsMediaTestCases\nChange-Id: If3e4d0ac0878408cfa552406a011869b9b8c606e\n"
    },
    {
      "commit": "2e94d509b3239c43ce110107a9a5db713c1de4c5",
      "tree": "a0c90f894430abf500d45e015ed082e50a7a2e7b",
      "parents": [
        "072a82abf370d96a6549d401314f1e7bc2dd0538",
        "c3725a94bb9840027a42669a659a0fd11d6f69c6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 10 01:00:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 10 01:00:35 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2Impl: fix getBufferedPosition\" into pi-dev"
    },
    {
      "commit": "6db0f4dac8ed9a3f0d5df58d463c293df083a4ab",
      "tree": "ab947d9597d03bab8a28b595bee6e02870e1493e",
      "parents": [
        "c4ee36b84fd8971d63c2ba2f8abc881924766023",
        "b20a329f4c1975f9271aec965c8497f7142f81f5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 09 23:00:20 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 09 23:00:20 2018 +0000"
      },
      "message": "Merge \"Rework thumbnail cleanup\" into oc-mr1-dev\nam: b20a329f4c\n\nChange-Id: I17b77312edb4fa03af1e89543ed5c27f4501d51c\n"
    },
    {
      "commit": "c3725a94bb9840027a42669a659a0fd11d6f69c6",
      "tree": "3fd1b1bbccb4d15a51d1230aee3d0586e836493e",
      "parents": [
        "6d7cbf5e7bf47e0e35201db83a36dd4ba0106e41"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Mar 09 13:49:13 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Mar 09 14:50:04 2018 -0800"
      },
      "message": "MediaPlayer2Impl: fix getBufferedPosition\n\nTest: MediaPlayer2 plays\nBug: 74204684\nChange-Id: Ide7c2ebe7e29c16d427a8aa6aa4b0384e8a2539f\n"
    },
    {
      "commit": "62b01c7d26d6fc1d523f96dfd883ddffcd929d58",
      "tree": "1ee09696a5a82963ef72d65b64103142453f4269",
      "parents": [
        "9aefc4fce0f8756e22bdb5f8086e35c2bb537947"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Fri Mar 09 10:12:59 2018 -0800"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Fri Mar 09 19:15:39 2018 +0000"
      },
      "message": "Implement CodecProfileLevel.{equals|hashCode}\n\nBug: 74435947\nTest: atest CtsMediaTestCases:MediaCodecListTest\nChange-Id: Ia77182538c5a151bb561f7d273f7cbaa29671a4c\n"
    },
    {
      "commit": "5cef8984baeb483de3cc7ca7bf93f5a366cd68b6",
      "tree": "34f366deeba33c6bf5f584137069a64269fa8360",
      "parents": [
        "3ce208c1e9015aa61e1250d0896306ff0624b1ca",
        "c896d9d7e60468ed49f1d27ee60873620525a08b"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 09 08:28:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 08:28:08 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Ensure NonNull/Nullable for parameters of public methods\" into pi-dev"
    },
    {
      "commit": "c896d9d7e60468ed49f1d27ee60873620525a08b",
      "tree": "9e7df751630cc8a81eaa683aca34038c6d82b5fe",
      "parents": [
        "961e147b66c5a5af26d5eb12317c821ba4a60b49"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Mon Mar 05 13:41:01 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 09 14:00:11 2018 +0900"
      },
      "message": "MediaSession2: Ensure NonNull/Nullable for parameters of public methods\n\nBug: 73863865\nTest: runtest-MediaComponents\nChange-Id: Id40f221ae60b1e63afd9ff71950589fe13a7f526\n"
    },
    {
      "commit": "790a31ee31fc1992aaffdda2474c37ac68fc84f7",
      "tree": "2c82857ba74c26a61ca3fcf9f7411a7a0e72bc42",
      "parents": [
        "041b38479df336bcf92064b9853fcce1475ca76b",
        "9af5bc83701b2c2268deba73424b036ab42cc840"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 04:37:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 04:37:29 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Implement MediaSession2#updatePlayer()\" into pi-dev"
    },
    {
      "commit": "af6cb357496a44a5607514ebd541bb6ea4cdde7b",
      "tree": "5c635c4f1bb712b27903e98696d4ccf2c446084e",
      "parents": [
        "7c9077305307a817033db3c241ed1db3f5991c8e",
        "be6e3024bdab7479e352933194eec36abf2b0bf3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 03:10:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 03:10:41 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2Impl: fix getPlayerState.\" into pi-dev"
    },
    {
      "commit": "be6e3024bdab7479e352933194eec36abf2b0bf3",
      "tree": "ef203025d0f423f21afd1af6a8f9e0da857ada6a",
      "parents": [
        "a52ddd989ee3c770d863f59799ef857582513fbf"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 08 13:56:42 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 08 13:56:42 2018 -0800"
      },
      "message": "MediaPlayer2Impl: fix getPlayerState.\n\nTest: MediaPlayer2 plays\nBug: 74204684\nChange-Id: Ib27930287485f074be6a8df4a90fb78023153ccd\n"
    },
    {
      "commit": "6d2096f3889d38da60099b1b5678347de4f042bf",
      "tree": "e2976496a5b7ebc942a0a0c806019e027a18fa36",
      "parents": [
        "d258da6a80a6e623e8d85d8c947364d52d6da89c"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Nov 07 13:52:02 2017 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 08 21:46:15 2018 +0000"
      },
      "message": "Rework thumbnail cleanup\n\nBug: 63766886\nTest: ran CTS tests\nChange-Id: I1f92bb014e275eafe3f42aef1f8c817f187c6608\n"
    },
    {
      "commit": "9af5bc83701b2c2268deba73424b036ab42cc840",
      "tree": "d374a499c73a93dc42bda0f7c4af7b8df66467bd",
      "parents": [
        "c23ee7639bd658333087bebdf56bce5aef23e2ce"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 08 16:52:50 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 08 18:11:55 2018 +0900"
      },
      "message": "MediaSession2: Implement MediaSession2#updatePlayer()\n\nBug: 74364873\nTest: Run MediaSession2Test in CTS\nChange-Id: I5161c0d771afd5036e2c09b2cc2a165f80c534f7\n"
    },
    {
      "commit": "5f8a8ee0e59142cc54cbdac949d8a7c3f4e64653",
      "tree": "e44cacdd2696d547f44889ac73118cb6d5d5ff38",
      "parents": [
        "ec75d51e74751a9c9654ecd75f49c5bb852161b9"
      ],
      "author": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Thu Mar 08 15:14:34 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Thu Mar 08 17:28:23 2018 +0900"
      },
      "message": "Make MediaPlaylistAgent updatable\n\nBug: 74366050\nTest: build\nChange-Id: Iea8e4d9b6a11393bd837da90394d95529fdbe5eb\n"
    },
    {
      "commit": "ec75d51e74751a9c9654ecd75f49c5bb852161b9",
      "tree": "606841439885f5bb3c96cb69f96e3bfad8b81e66",
      "parents": [
        "525c88c2b792931c46ab4452c2bbe9989614ba74"
      ],
      "author": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Mon Feb 26 21:01:56 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Thu Mar 08 13:55:21 2018 +0900"
      },
      "message": "VideoView2: Remove setRouteAttributes\n\nBeing consistent, create route player internally and do not expose it\nsince VideoView2 creats a MediaPlayer inside and do not expose it.\n\nBug: 72527212\nTest: manually with VideoViewTest\nChange-Id: I6db3bc668f6ab77587fed49b2d34611bc3c30465\n"
    },
    {
      "commit": "525c88c2b792931c46ab4452c2bbe9989614ba74",
      "tree": "c422b54599aac991e2997a58b4255fe9aaef7747",
      "parents": [
        "62ff4029e4cc0184f19301282800609a315d8f0b"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Mar 08 10:47:00 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Thu Mar 08 13:54:34 2018 +0900"
      },
      "message": "MediaSession2: Clean up TODOs under frameworks/base\n\nThis change includes\n  - Addressed trivial TODOs (takes less than 1min)\n  - Renamed playlist controller to playlist agent\n  - Renamed mplc to playlistAgent\n  - Renamed mpb to player\n  - Assigned buganizer issues for TODOs\n\nBug: 74361045\nTest: Run MediaComponentsTest\nChange-Id: I45e97081b5a3f24988c3daadd007edcb51be5288\n"
    },
    {
      "commit": "4e532f59dc950583503d3385a75ad89e126b3ba2",
      "tree": "4775542f842d17ff2ed66036d9935730b6561943",
      "parents": [
        "ed0b75df2006899bb350e896bfbd5f743545ccaa",
        "7db2d8f1cc19238f3bf627b081462e3e062686df"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Mar 07 21:37:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 21:37:55 2018 +0000"
      },
      "message": "Merge \"AudioService: don\u0027t send BECOMING_NOISY when dyn policy affects media\" into pi-dev"
    },
    {
      "commit": "e536bf7b22b35ddebb58d2451533b75d825113e7",
      "tree": "c53dbb590bc612d563d3675b41cda95dad0fec65",
      "parents": [
        "f99b1d8fd998b75200b0ce27cf22c49671f7a3cf"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 06 15:47:54 2018 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Mar 07 19:48:45 2018 +0000"
      },
      "message": "heif: add definition for HEVC Main Still Picture profile\n\nAdd corresponding def to OMX for HEVC Main Still Picture.\n\nbug: 63633199\nChange-Id: I2d968f5871e3afcd08758c2d5e1452b6c13d0862\n"
    },
    {
      "commit": "5a169cf2f6495cfd408ae607701f06cb497f6df3",
      "tree": "dd733b853e9f24960b256adcd6d79052d3468dc2",
      "parents": [
        "a3e2d2fed80bdf95dec791e7e796b86910204c31",
        "d696476fb31a203db38c7c31c347b27c8fda84ef"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 07 16:39:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 16:39:40 2018 +0000"
      },
      "message": "Merge \"System sounds get its own dnd toggle\" into pi-dev"
    },
    {
      "commit": "aa79f03ca6c4c5a3a262aeaf2b608ffd4807ab13",
      "tree": "5b0f45b7b2178bbccd038cd1db7833f85e487807",
      "parents": [
        "be1033fda24a7c1ba9ef3ca590da30be56acc6d2",
        "b10e37228491abcdae1dbf72ce4877c8eaffe9b0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 07 11:23:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 11:23:29 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Fix random NPE in MediaBrowser2Test\" into pi-dev"
    },
    {
      "commit": "be1033fda24a7c1ba9ef3ca590da30be56acc6d2",
      "tree": "83c62d9f1a291016afd0a988d8c0d4871055c866",
      "parents": [
        "1fff4c000de08c612bf7e69d4958a3fa3cc2e3c0",
        "df0e8fdffd43d55eaffc7d2e7266d2f4526fb3b9"
      ],
      "author": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Wed Mar 07 07:59:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 07:59:53 2018 +0000"
      },
      "message": "Merge changes from topics \"mplc\", \"session2_onDataSourceMissingHelper\" into pi-dev\n\n* changes:\n  Remove MediaPlaylistController, add MediaPlaylistAgent\n  MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()\n  MediaSession2: Add onDataSourceMissingHelper\n"
    },
    {
      "commit": "df0e8fdffd43d55eaffc7d2e7266d2f4526fb3b9",
      "tree": "511503c46f465136b7ceb9511396f395ca08fa24",
      "parents": [
        "87086f59ad7263facde0d17404c70e5311cde29c"
      ],
      "author": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Wed Mar 07 13:09:36 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Wed Mar 07 16:41:19 2018 +0900"
      },
      "message": "Remove MediaPlaylistController, add MediaPlaylistAgent\n\nMediaPlaylistAgent is the abstract class an application needs to\nderive from to pass an object to a MediaSession2 that will override\ndefault playlist handling behaviors. It contains a set of notify*\nmethods to signal MediaSession2 that playlist-related state has\nchanged.\n\nBug: 64098437\nTest: make update-api\nChange-Id: Icb3c57ddc14eba276f49d4ba85f11adbeb3e0917\n"
    },
    {
      "commit": "87086f59ad7263facde0d17404c70e5311cde29c",
      "tree": "46bc982a6c00eeec815ee77ae963a32e10380c3c",
      "parents": [
        "4d4a8c95ae9cb49413aa13ec19dcef5068ea710f"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 07 15:16:55 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Wed Mar 07 16:31:56 2018 +0900"
      },
      "message": "MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()\n\nAdded callback for session to know the currently playing media item has\nchanged.\n\nNote that the callback is called in response to the\nMediaPlayerBase#PlayerEventCallback#onCurrentDataSourceChanged(mpb, dsd\nis called. Session will translate dsd to the media item and calls\nonCurrentMediaItemChanged().\n\nFollowing changes are also included\n  - Removed MediaPlaylistController#getCurrentPlaylistItem(),\n    because currently playing item is managed by the MediaPlayerBase.\n  - Renamed ControllerCallback#onCurrentPlaylistItemChanged() to the\n    ControllerCallback#onCurrentMediaItemChanged(), to make it more\n    obvious that the event is from MediaPlayerBase, not\n    MediaPlaylistController.\n  - Added SessionCallback#onCurrentMediaItemChanged()\n\nBug: 64098437\nTest: Run MediaComponents test\nChange-Id: I78b124a7da0f968b097b2576507b9a73e36081ec\n"
    },
    {
      "commit": "4d4a8c95ae9cb49413aa13ec19dcef5068ea710f",
      "tree": "d25246c05279dced2a9988f514721671c15db5ff",
      "parents": [
        "8c76ca03418884d8e60bda1f5695d44563b20007"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 06 14:43:10 2018 +0900"
      },
      "committer": {
        "name": "Sungsoo Lim",
        "email": "sungsoo@google.com",
        "time": "Wed Mar 07 16:31:53 2018 +0900"
      },
      "message": "MediaSession2: Add onDataSourceMissingHelper\n\nThis allows a developer to create DataSourceDesc when the item is about\nto be played. Typical example of the usages are,\n\n    1. For a playlist consists of FileDescriptors, its developer may not\n        want to open all files when MediaSession2.setPlaylist() is\n        called.\n    2. A controller has called setPlaylist(), addPlaylistItem(), or\n        replacePlaylistItem(). Controller cannot know the\n        DataSourceDesc, and only the session developer can know about\n        it.\n\nBug: 64098437\nTest: Run MediaComponents test\nChange-Id: I73f27ca0a799b1cddf5046b41f0ca01d08037103\n"
    },
    {
      "commit": "c943614f2ce2d1abf6c98ad602ab0d12a2550706",
      "tree": "f672e362dbe0350125f4e3282af6d3c3fa9b5112",
      "parents": [
        "8c76ca03418884d8e60bda1f5695d44563b20007",
        "3164cbd536b13a803ca2944ff3d64c8e2c96e769"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 07 04:26:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 04:26:18 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2: embed header in uri\" into pi-dev"
    },
    {
      "commit": "3164cbd536b13a803ca2944ff3d64c8e2c96e769",
      "tree": "89cea63f02fb781dc5f503db3526cf8c40fbabdd",
      "parents": [
        "88840820d0ccf17ac1af2bc89f14c82b0b2e04bb"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Mar 05 23:14:50 2018 -0800"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Mar 06 18:18:52 2018 -0800"
      },
      "message": "MediaPlayer2: embed header in uri\n\nBug: 63934228\nChange-Id: I3eba4a0ee8e8e784f6dcf79c739a756e957025c9\n"
    },
    {
      "commit": "ccf41b87a990f12cc76bd57f67f1466bd48408c6",
      "tree": "cb41c1143d44c49081eecb2a48acc9a25f0f44b3",
      "parents": [
        "540a2903cd39c7fc4533be078dd8451a861031d2",
        "42a36c341dcac1e12d178ef063e73669eec12cf1"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 07 00:02:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 00:02:09 2018 +0000"
      },
      "message": "Merge changes from topic \"session2-pi-listcallback\" into pi-dev\n\n* changes:\n  MediaSession2: Pass player info for the callbacks from MediaPlayerBase\n  MediaSession2: Add MediaPlaylistController.PlaylistEventCallback\n"
    },
    {
      "commit": "e9238246b780038f98a244e41071fe20ce8c4d31",
      "tree": "424e1f8cb5bce98805eafd3e10db28283fc91edc",
      "parents": [
        "4ef95e253138f995b47d3021ac3f2ce4978bffcd",
        "fed495078e23f69c87c93e3a3a8d79ec4d74fff5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 23:06:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 23:06:18 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Ask server whether a controller is trusted\" into pi-dev"
    },
    {
      "commit": "7db2d8f1cc19238f3bf627b081462e3e062686df",
      "tree": "32729d0034a236ebb876161f0de5434016bac2ee",
      "parents": [
        "88840820d0ccf17ac1af2bc89f14c82b0b2e04bb"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 06 10:30:59 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 06 13:54:23 2018 -0800"
      },
      "message": "AudioService: don\u0027t send BECOMING_NOISY when dyn policy affects media\n\nOnly send ACTION_AUDIO_BECOMING_NOISY when there is no dynamic\n  policy registered that affects media.\n\nBug: 67610473\nTest: see bug\nChange-Id: I0768718fbde35ea53c36c309086529567dfa82ac\n"
    },
    {
      "commit": "42a36c341dcac1e12d178ef063e73669eec12cf1",
      "tree": "c6d227a5a1c15e2e42008e4997f13da287bf7f33",
      "parents": [
        "273130dc9af6e3c3fc00513a1ba454dd1d8a5cf0"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 05 19:06:35 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 07 00:12:14 2018 +0900"
      },
      "message": "MediaSession2: Pass player info for the callbacks from MediaPlayerBase\n\nPlayer can be updated meantime, and player event from the previous\nplayer can be sent after the update. Providing player information will\nprovide developers more opportunity to filter out unecessary callbacks.\n\nBug: 64098437\nTest: Run MediaComponents test\nChange-Id: I9c23101df139e26351c008462c726ae7069130eb\n"
    },
    {
      "commit": "273130dc9af6e3c3fc00513a1ba454dd1d8a5cf0",
      "tree": "44b44258d9d7bcbb1c3de004a5a0c5d167dec01f",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 05 16:01:26 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Mar 07 00:11:25 2018 +0900"
      },
      "message": "MediaSession2: Add MediaPlaylistController.PlaylistEventCallback\n\nThis includes following changes per offline discussion\n  - Add MediaPlaylistController.PlaylistEventCallback\n  - Add following APIs to the MediaPlaylistController\n    * registerPlaylistControllerCallback() /\n      unregisterPlaylistControllerCallback()\n    * getRepeatMode() / setRepeatMode()\n    * getShuffleMode() / setShuffleMode()\n    * setPlaylist() with metadata\n    * setPlaylistMetadata() / getPlaylistMetadata()\n  - Add following APIs to the SessionCallback\n    * onMediaPrepared()\n    * onPlayerStateChanged()\n    * onBufferingStateChanged()\n  - Remove following methods from ControllerCallback\n    * onPlaylistChanged()\n\nBug: 64098437\nBug: 74157064\nTest: passed MediaComponentTest\nChange-Id: I5ad12a9a5d6a7d9e23a577dca8ea26fbacb8f259\n"
    },
    {
      "commit": "d696476fb31a203db38c7c31c347b27c8fda84ef",
      "tree": "3427dec1d27a8bdaf7ee0a253567a4ad15645e6a",
      "parents": [
        "0bd7631cea650927efc9b703dc8cc9ef24c2447f"
      ],
      "author": {
        "name": "Beverly",
        "email": "beverlyt@google.com",
        "time": "Fri Feb 16 14:07:03 2018 -0500"
      },
      "committer": {
        "name": "Beverly",
        "email": "beverlyt@google.com",
        "time": "Tue Mar 06 09:08:29 2018 -0500"
      },
      "message": "System sounds get its own dnd toggle\n\n- Added logic for streams to be muted by dnd (unassociated with ringer)\n\nTest: runtest -x frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java\nBug: 73362490\nChange-Id: I1101e67282f7331497e91eb510d2bf4f1ea6b4b1\n"
    },
    {
      "commit": "b10e37228491abcdae1dbf72ce4877c8eaffe9b0",
      "tree": "20087f4db336af12fb69db0aeb55602fc44990b0",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 06 19:48:32 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 06 19:48:32 2018 +0900"
      },
      "message": "MediaSession2: Fix random NPE in MediaBrowser2Test\n\nMediaSessionService#getSession() may be null until the\nMediaSessionService#onCreate(), and its session callback can be called\nbefore that. (e.g. System service can try connecting to the session\nin another thread)\n\nDon\u0027t use MediaSessionService#getSession() when it\u0027s unclear whether\nthe MediaSessionService#onCreate() is finished.\n\nBug: 74177171\nTest: Run MediaComponents test 10 times\nChange-Id: I89f3d1a59f84f5d950a14a7b412cfbbdad2c8bee\n"
    },
    {
      "commit": "9bc56108693bc303deba926f73c9ee50aa499e74",
      "tree": "7bca1b2300adc9ae487db9cf291e5e4e68854652",
      "parents": [
        "27ed96bf0cb94df1a7ede2a41d863bc09f5b9306",
        "66bc3c1f780119add797ccc5bef35d3234dd3c1f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 08:59:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 08:59:13 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Update Builder\" into pi-dev"
    },
    {
      "commit": "66bc3c1f780119add797ccc5bef35d3234dd3c1f",
      "tree": "49be8fd8691caef52224f552e5c51602434f8d64",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Tue Mar 06 15:37:43 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Tue Mar 06 15:56:34 2018 +0900"
      },
      "message": "MediaSession2: Update Builder\n\nThis CL updates following APIs of session builder:\n - setPlayer\n - setPlaylistController\n - setVolumeController\n\nBug: 74093082\nTest: runtest-MediaComponents\nChange-Id: I88365e740df7e14edf439cbed2106f788d027f53\n"
    },
    {
      "commit": "fed495078e23f69c87c93e3a3a8d79ec4d74fff5",
      "tree": "acf43c2476d66895813f03a4cdc6a28933d2725c",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Mon Mar 05 17:51:12 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Tue Mar 06 14:24:06 2018 +0900"
      },
      "message": "MediaSession2: Ask server whether a controller is trusted\n\nBug: 73150040\nTest: Run all MediaComponents tests once\nChange-Id: Ic003a40654a45e6fd367d7389216fddf320a8edc\n"
    },
    {
      "commit": "97d579d1ee3347231f9742bfeecaf5a609c28a81",
      "tree": "a8edd0b25be19a38f54b89b5fcf75a59ad94fb47",
      "parents": [
        "faf658974858f8aaf39987ce5bc4301d943c3692",
        "d526bc3b886b4127c310f5dea0035404e28d27a2"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Mar 06 03:42:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 03:42:25 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2: clarify sync/async for API\u0027s\" into pi-dev"
    },
    {
      "commit": "cefe0c65184b0a288fe0c4cdce721ebc0ffb8efa",
      "tree": "2d2c5df2c63de3cf06c69ccbaff8f938f76fd917",
      "parents": [
        "4a3dd2ba5835539f932c55eade37b7817f03c09b",
        "484ea675dd5480db6e272c0fcb46ec5a9d733a24"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 01:59:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 01:59:14 2018 +0000"
      },
      "message": "Merge \"Check mMediaProvider for null\" into pi-dev"
    },
    {
      "commit": "d526bc3b886b4127c310f5dea0035404e28d27a2",
      "tree": "393cddd870e54139a8201f7fa7a5ceeddb0287af",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 01 09:20:13 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Mar 05 16:40:59 2018 -0800"
      },
      "message": "MediaPlayer2: clarify sync/async for API\u0027s\n\nTest: MediaPlayer2 plays\nBug: 63934228\nChange-Id: I48b73c75311dbb31dcebe7c7a38e444d7dc65ed8\n"
    },
    {
      "commit": "484ea675dd5480db6e272c0fcb46ec5a9d733a24",
      "tree": "a7c92f3bbe089fc3c678503d9c3bdac1143fe2e4",
      "parents": [
        "74cfe5674202a85f2779d5e8c9092edcf0ebd4db"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Mar 02 15:40:03 2018 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Mar 05 22:25:58 2018 +0000"
      },
      "message": "Check mMediaProvider for null\n\nGetting the content provider could\nreturn null in some cases where the user\nis locked, so check for that when closing.\n\nBug: 73656609\nTest: no crash\nChange-Id: I607cd2da5348520616a1c171d0d8a1afacabe592\n"
    },
    {
      "commit": "adf77a01e8142a5abb496997beddead7b48f43b7",
      "tree": "fa34386285ab2e1860f40596dd2cc1deded71f20",
      "parents": [
        "47cab8322a01edee503f10e9d5cbec2a5b5cffc3"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Mar 02 18:10:49 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Mar 05 11:33:27 2018 -0800"
      },
      "message": "Make MP2.prepare|play handled with task queue\n\nTest: plays video\nBug: 63934228\nChange-Id: Iecf8b2079e87241365ab6b7b7b0a5a669c948427\n"
    },
    {
      "commit": "47cab8322a01edee503f10e9d5cbec2a5b5cffc3",
      "tree": "1670cc90fdb6c7dc246a7bde140bf5109721efc0",
      "parents": [
        "343c2157fc30776fb2855bf8b307a2d5ccb57892"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Mar 02 10:08:53 2018 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Mar 05 11:07:38 2018 -0800"
      },
      "message": "Remove unused imports in MediaPlayer2.\n\nTest: build.\nChange-Id: I2f2a05ef4fc41d14f91e6805217852adf5bbb28e\n"
    },
    {
      "commit": "d4ef7b96ed08f374537f1d506d728a8bfe0a1caa",
      "tree": "41fa40fc2708594f1e81ccc2350620f04cbd861e",
      "parents": [
        "3a4f974c911291cdcb18154d21dd5a562f740781"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Feb 28 17:31:00 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Mon Mar 05 10:55:09 2018 +0900"
      },
      "message": "MediaController2: Ensure NonNull for parameters of public methods\n\nBug: 73863865\nTest: Passed MediaBrowser2Test\nChange-Id: I65cd43045f4e7b9f16b8cf3f43688815e59dc643\n"
    },
    {
      "commit": "7a0cefa583b4c1589b0b31d307f93f1d50e82db4",
      "tree": "c733c171f881d22a87d6aafd11be89693c28cafe",
      "parents": [
        "9b5b015559141d2459a27e03f3764ce4a1225fc9"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 02 14:13:10 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Sun Mar 04 18:47:49 2018 +0900"
      },
      "message": "MediaSession2: Clean up TODOs under frameworks/base/media\n\nThis CL includes following changes\n  - Remove outdated TODOs\n  - Added buganizer issue if the remaining work take more than 5m\n\nTest: Run MediaComponents tests\nChange-Id: I8968e12aabcbc67f69dbf14485b3716d0e95779b\n"
    },
    {
      "commit": "13b4d509b8a3c42018e232e153c98a668f5374fc",
      "tree": "81d38092fc9316e4b45be235083587cd4ba3e037",
      "parents": [
        "082cfca292a4cf8f797a95e99aa78be44d48b176",
        "cde2d3ff1048c13671b0b539f5635a64e088cd7a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 03 03:14:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 03 03:14:38 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2: implement some API\u0027s\""
    },
    {
      "commit": "247779b31c0eb0a07c207d291e4b01dae4264d1c",
      "tree": "616c7b2dc16e7a4ff2a0a3bbb01f5b22b2294647",
      "parents": [
        "dd33df2393f62e405206233163f32cc0da9f7066",
        "3fb60d56c2747b4b5498b87ec5790fad06b013b3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 03 00:54:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 03 00:54:31 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Add caller to the callback methods\""
    },
    {
      "commit": "cde2d3ff1048c13671b0b539f5635a64e088cd7a",
      "tree": "92063043d9d3995a73ab11ba9b4b9bffaf49bb3e",
      "parents": [
        "bd3524feb70c52ccf389afceeef092598bd3f6df"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Mar 02 11:31:18 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Mar 02 16:20:08 2018 -0800"
      },
      "message": "MediaPlayer2: implement some API\u0027s\n\nTest: MediaPlayer2 plays\nBug: 63934228\nChange-Id: I10a4086db214b88f4a3eaea71fce81e8a994589a\n"
    },
    {
      "commit": "053a3859a8ca3663f2aa2fbf67a971de8d917b63",
      "tree": "cef4d09eeb7ae5e1345fbc6dfbff3871118033bd",
      "parents": [
        "4462da8352e125298cb13565a5736ec4f43851b3",
        "de2bbb322bbeec45dfed89c3cc17ae0cc07c73b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 23:58:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 23:58:14 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Add reset() to the MediaPlayerBase\""
    },
    {
      "commit": "20b699db64798141e981031de3a23c666cccfe5a",
      "tree": "6df0672862f3d76bec838a8b205915bc48ecd1e3",
      "parents": [
        "7bcbdd2230463c204a065e1b70a9401eef54264a",
        "d3f8228f4d71488d030e9321861747b55a47d264"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 20:42:52 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 20:42:52 2018 +0000"
      },
      "message": "Merge \"Clarify security level default in openSession()\""
    },
    {
      "commit": "c7f295f0f9c44998caf6f99e9c4fcf348a92f2fa",
      "tree": "3b239a987f9a59ceccde23bd3fda60b953263450",
      "parents": [
        "5b60df769756c154d3dcc44a881ecc0da6466cd6",
        "a68f1551f0424f6357df365d090c578af9645674"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 15:24:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 15:24:32 2018 +0000"
      },
      "message": "Merge \"MediaMetadata2: Make Javadoc of each key consistent\""
    },
    {
      "commit": "3fb60d56c2747b4b5498b87ec5790fad06b013b3",
      "tree": "49b1b44db317184cfc396e3a78ab3ee2025e0f72",
      "parents": [
        "3eef2efe40d9c783a74174b929535a2569424af1"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 02 19:23:18 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 02 23:14:40 2018 +0900"
      },
      "message": "MediaSession2: Add caller to the callback methods\n\nThis is to follow MediaPlayer2 and MediaPlayerBase\u0027s API style.\n\nBug: 64098437\nTest: make update-api\nChange-Id: I7fe17852d16237fac801c716eab1007cd0337867\n"
    },
    {
      "commit": "de2bbb322bbeec45dfed89c3cc17ae0cc07c73b1",
      "tree": "e81950e827d9f290a957ee44d192ddd68d0b723c",
      "parents": [
        "2410a0dd316d70b718d1358860224e48778a0669"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 02 09:12:16 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Fri Mar 02 18:03:42 2018 +0900"
      },
      "message": "MediaSession2: Add reset() to the MediaPlayerBase\n\nThis would be used in response to\n  - MediaController2#play()\n  - KEYCODE_MEDIA_STOP\n\nBug: 64098437\nTest: passed MediaComponentTest\nChange-Id: I7cd4d855d5e1bf8e4260a9b920f30dfe2eea44e1\n"
    },
    {
      "commit": "a68f1551f0424f6357df365d090c578af9645674",
      "tree": "24d95af29b3227b17d26434e82d9c759b372708c",
      "parents": [
        "2803e978d0cbe6708057328c1e4e69433a75ef45"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 02 17:38:22 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 02 18:03:07 2018 +0900"
      },
      "message": "MediaMetadata2: Make Javadoc of each key consistent\n\nThis CL makes the Javadoc of METADATA_KEY_* to be consistent.\n\nBug: 73877547\nTest: Builds successfully\nChange-Id: Icb68d62230bb4e523da2015db76d5aeaa098c69a\n"
    },
    {
      "commit": "2410a0dd316d70b718d1358860224e48778a0669",
      "tree": "5890de1b37c9b1d71b472b8636d45c08de3ffcfb",
      "parents": [
        "2803e978d0cbe6708057328c1e4e69433a75ef45",
        "9edf2ca33e3bd7888e2b29676ba8f6e941906605"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Mar 02 08:22:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 08:22:20 2018 +0000"
      },
      "message": "Merge \"Move MediaItem2 Builder to updatable\""
    },
    {
      "commit": "2803e978d0cbe6708057328c1e4e69433a75ef45",
      "tree": "6ddb2682816b66b6110c45f9d30f3192520084f4",
      "parents": [
        "5395a3cec7b81c7e859966448cc61366cc671a16",
        "72706118cfeb6bbfc37d2edc0a4a4ebd8c7a82e7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 06:20:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 06:20:24 2018 +0000"
      },
      "message": "Merge \"MediaMetadata2: Supplement Javadoc of each key\""
    },
    {
      "commit": "5130fdb0ace94f09c712ef7355567cedccaeb8a8",
      "tree": "413132286f1f303d8467f6a50aeec8b5fc7123c4",
      "parents": [
        "341c2366cce599da1b4fb9db502bdfbe4dbfd84b",
        "cd5385531165b6e13d8b6856a0678c228de5a22f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 18:50:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 18:50:18 2018 +0000"
      },
      "message": "Merge \"cas: explicitly define possible key id values\""
    },
    {
      "commit": "8f7aa97fa9c2f7be241d994c64bef147b1e67b38",
      "tree": "996508546d74007762e5d7f45dbfd85f83fe1fb7",
      "parents": [
        "38008955e301668ca1a9a52993f20edf46a4abbb",
        "1789cc7f8221fd1f682fa08a1aeb1e37c2315887"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 07:28:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 07:28:35 2018 +0000"
      },
      "message": "Merge \"MediaPlayer2: clean up APIs\""
    },
    {
      "commit": "38008955e301668ca1a9a52993f20edf46a4abbb",
      "tree": "be64382b89af985a7b4bbc95ad340ee28bf5b16d",
      "parents": [
        "fa6d6d963bc5e2c0e04f7d5b27688e281dd1ca49",
        "af576a0e4fa9c9fe06a185007d5f201d80e4ebd1"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 01 07:00:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 07:00:39 2018 +0000"
      },
      "message": "Merge \"AudioPolicy: support for add/remove AudioMix without unregistering\""
    },
    {
      "commit": "3b0014dcad24d0f6bf631689610cd5e9ce98781b",
      "tree": "b0390629a605a1064409929e498ed43268f74b10",
      "parents": [
        "8e1522197a6ff963736953eff55a583f9297ea70",
        "12a1f6274547417eabd0fd6397ebef1ec0895f07"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 05:11:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 05:11:24 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Unhide setAudioFocusRequest\""
    },
    {
      "commit": "af576a0e4fa9c9fe06a185007d5f201d80e4ebd1",
      "tree": "006b37813251c3d7f1e46db369332cc9db25e5e7",
      "parents": [
        "2c5079c6418742452265181fe09514d6856563de"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 14 08:57:46 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 28 21:06:20 2018 -0800"
      },
      "message": "AudioPolicy: support for add/remove AudioMix without unregistering\n\nSystem API for a registered AudioPolicy to attach or detach\n  AudioMix without having to unregister, and then registering\n  the new mix configuration.\n\nBug: 63906162\nTest: AudioPolicyTest\n\nChange-Id: Ib2fea8aa034d3f7b498e76dc1fc51c1ea508d3a2\n"
    },
    {
      "commit": "1789cc7f8221fd1f682fa08a1aeb1e37c2315887",
      "tree": "9c0ec12bcbb9d324f315a6a41127bcae603919b8",
      "parents": [
        "7d29aa7d16b3d73c5818e6af39e47f0305fb21f1"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Feb 23 09:16:08 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 28 19:52:13 2018 -0800"
      },
      "message": "MediaPlayer2: clean up APIs\n\nMake MediaPlayer2 derived from MediaPlayerBase\nTest: MediaPlayer2 plays\nBug: 63934228\nChange-Id: Ib31e3196ad65c694f778a8a79277e53017a7026f\n"
    },
    {
      "commit": "c7c1ce8012ab224e14d62c7140f5ecc4613960f0",
      "tree": "03c7cbd56def4bb642a340f5f5f23523f5298906",
      "parents": [
        "81b3bb99f92c7aab2ce446c3af2a772a55301eac",
        "aa080a80a6a152cda5879a2c2510f9c76b9b5f9d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 03:39:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 03:39:31 2018 +0000"
      },
      "message": "Merge \"MediaSession2: Refine APIs\""
    }
  ],
  "next": "12a1f6274547417eabd0fd6397ebef1ec0895f07"
}
