)]}'
{
  "log": [
    {
      "commit": "2a1a52ce489357d58f03c4e3455187ea70fa68ef",
      "tree": "6a8f1c3af41defed820f8da0df71c4b3a4a510a7",
      "parents": [
        "d9c99eafe6d3727b2892aeae5df568c6a97b6e76"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Mar 14 16:57:47 2019 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Fri Mar 15 11:56:52 2019 -0700"
      },
      "message": "Fix addAudioDeviceCallback() memory leak bug\n\nStore jobjects and JObjectHolders as backup, delete JObjectHolders after\nusage\n\nBug: 128341809\nTest: RoutingTest#test_MediaPlayer2_RoutingChangedCallback\nChange-Id: I70b2312519ab0efef0ed40ce721ae8c26dc1aed2\n"
    },
    {
      "commit": "4e9bfa02a291f69a181e9de6d5f9902cb756d6a0",
      "tree": "61d83c6f9d3392ca5941c351cdf7072aca956823",
      "parents": [
        "63c0f36d2ba1b752a040b47d108f4cc907da227b"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Mar 06 16:33:59 2019 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Mar 06 16:36:25 2019 -0800"
      },
      "message": "Fixed routing change bug\n\n(1) Change logic of addAudioDeviceCallback() since mJAudioTrack is\nlikely to be null when this function is called.\n(2) Replace add/removeGlobalRef() with JObjectHolder\n(3) Replace std::vector with utils/Vector.h\n\nTest: android.media.cts.RoutingTest#test_MediaPlayer2_RoutingChangedCallback with routing change log\nBug: 127314187\n\nChange-Id: I62d9c7600c710b49f0435bd1fc2741d79c928b55\n"
    },
    {
      "commit": "f66521bbda90858dabcac6b3193e14ce235a4714",
      "tree": "88f365ebd1fcf7eaf0ca0c6d6b1d08acbb7cc540",
      "parents": [
        "d0f1bffe98354848dc23f4492d8f86987459f179"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Dec 10 19:33:05 2018 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Dec 10 19:35:43 2018 -0800"
      },
      "message": "frameSize using public API\n\nBug: 112549970\nTest: MediaPlayer2Test\nChange-Id: Idde6460d18cfdd59de2cf47531ebd6e0004a5e62\n"
    },
    {
      "commit": "78c95f34f294a68e185196230b97dbae44bbb1a8",
      "tree": "ccd630685ce3bb7d75fdc651cd06b1c9f1e02b74",
      "parents": [
        "a820175f1133e16657c18f7acbd47b60a8258d16",
        "28d27f5293c28fcbbba425311885e3d00eb5fbaa"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Nov 21 04:17:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 21 04:17:58 2018 +0000"
      },
      "message": "Merge \"Audio attributes using public API\""
    },
    {
      "commit": "afc436f6c0eb2be3697482f5c5561d1e7b3420ae",
      "tree": "485cd2417f587c8ffb30e7013f0c601deee11267",
      "parents": [
        "d4a3256ad7ecef84cfc3022f6a1091cbd141af53"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Nov 20 19:00:52 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Nov 20 19:00:52 2018 -0800"
      },
      "message": "JAudioTrack: replace MediaPlayer2Impl with MediaPlayer2\n\nTest: cts\nBug: 112549970\nChange-Id: I29205dbab0bb09187d0c7c2b5c8ca2d5c3853f32\n"
    },
    {
      "commit": "28d27f5293c28fcbbba425311885e3d00eb5fbaa",
      "tree": "6f3745f6470c4fb1c85bfd27d3105168adf69058",
      "parents": [
        "d4a3256ad7ecef84cfc3022f6a1091cbd141af53"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Nov 19 14:08:39 2018 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Nov 21 00:28:32 2018 +0000"
      },
      "message": "Audio attributes using public API\n\nBug: 112549970\nTest: MediaPlayer2Test\nChange-Id: Ia4091ff59172a9cd040d33bc6c2edd2ea7195f70\n"
    },
    {
      "commit": "48c1623453ff6f30fd5d8d640b84c71782de1544",
      "tree": "5cbfa81fb4b1ebab803b81c1200b25d1ae975105",
      "parents": [
        "d1f7ce14c1b97facb2e4fd4bc78677f70092953f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Sat Nov 17 17:22:59 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Sat Nov 17 17:40:23 2018 -0800"
      },
      "message": "JAudioTrack: fix uninitialized mFlags\n\nTest: MediaPlayer2Test#testPlaybackRate is not flaky any more\nBug: 112549970\nChange-Id: Ieb80acd89bf578bdd683f0344dfe40ffa0d40c08\n"
    },
    {
      "commit": "23658641debafa1af12459a5f3c8e907157366b7",
      "tree": "d8ea3f5de441283a11cf33f970e608e92ce6c207",
      "parents": [
        "eacf0137cfef6efc1df0bb80e4e168b34e2e38a4"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Nov 15 10:26:16 2018 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Sat Nov 17 00:04:58 2018 +0000"
      },
      "message": "MP2: replace AudioSystem APIs with public ones in mediaplayer2.cpp\n\nBug: 112549970\nTest: MediaPlayer2Test, RoutingTest\n\nChange-Id: Ib2520c29370dee88667e64044b3fcdc053623dbf\n"
    },
    {
      "commit": "c2465c595302a4badd81ac969e0c6d1d5f98e71f",
      "tree": "6f80489585036e3a2e15cf7cfaec14e5645d20da",
      "parents": [
        "158ce41988f3706465514265eed1d7e4b6fb123c"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Nov 12 11:56:05 2018 -0800"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Mon Nov 12 16:49:11 2018 -0800"
      },
      "message": "MediaPlayer2: directly pass AudioAttributes to AudioTrack without native parcel conversion\n\nthe AudioAttribute jobject now is directly passed to AudioTrack without native parcel conversion.\n\nChange-Id: I5e44a3b826452e593c89904caced924cff5f0026\nTest: android.media.cts.MediaPlayer2Test, android.media.cts.RoutingTest\n"
    },
    {
      "commit": "0d7042d59a8f4590e88331f95043832c1a46ab3a",
      "tree": "2b82c0f301c70b9786afa43a9a4893c97a1b4939",
      "parents": [
        "62cab4de9321f1147d9fa3f4be8d4a97d28b494d"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Oct 12 16:52:14 2018 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Nov 09 14:33:47 2018 -0800"
      },
      "message": "MediaPlayer2: remove AudioManager private API usage\n\nPrivate API AudioManager.getDevicesStatic() is being used in\nMediaPlayer2 for conversion between id \u003c\u003d\u003e AudioDeviceInfo.\nThis conversion was added to talk with internal native AudioTrack API,\nbut in MediaPlayer2 since we will use public java AudioTrack API,\nthe given AudioDeviceInfo can be directly passed to java AudioTrack\ninstance.\n\nTest: CtsMediaTestCases:android.media.cts.RoutingTest\nBug: 112767549\nChange-Id: I9aeae02202edb6b5f0eb72b4f4dd3c936103ced2\n"
    },
    {
      "commit": "f872691537da559a5d3f755604dc52e430d12617",
      "tree": "f053337222092b30abb6bf3ec00d9a8df5f10adb",
      "parents": [
        "c25db9303131d04d15f2ca28f1a8f9153becf449"
      ],
      "author": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Wed Oct 17 13:31:26 2018 -0700"
      },
      "committer": {
        "name": "Dichen Zhang",
        "email": "dichenzhang@google.com",
        "time": "Thu Nov 08 14:18:11 2018 -0800"
      },
      "message": "Enable JAudioTrack.\n\nMediaPlayer2 AudioOutput using public APIs.\n\nBug: 112549970\nTest: android.media.cts.MediaPlayer2Test, android.media.cts.RoutingTest\nChange-Id: Id76d80c040a52fd2ab724999697e222495906aec\n"
    },
    {
      "commit": "8144aeefd1d7d8d06612df31c3f7728c03d36000",
      "tree": "605ab0461d47a35ecbb3efb83c4370de59d75c21",
      "parents": [
        "c22b754fa944017c5d4c5ca58a077fdf89842947"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jun 28 17:40:03 2018 -0700"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jun 28 17:47:14 2018 -0700"
      },
      "message": "Remove AndroidRuntime::getJNIEnv() usage from libmediaplayer2\n\nTest: pass MediaPlayer2Test#testPlayVideo\nBug: 63934228\nChange-Id: I29da97cdc458bca18d95f4da349c93382e722727\n"
    },
    {
      "commit": "42a6decdd6c173a36e51c19d44849e6654eb60f9",
      "tree": "9ef1cd40d4ef78405ad4511c62ecabe19a76f4dc",
      "parents": [
        "04696f702ad0a4bdc59a4bbe47663a497b6128c8"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Mon Jan 22 19:26:47 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Fri Feb 09 22:01:19 2018 +0900"
      },
      "message": "JAudioTrack: Add offload mode support\n\nAlso, this CL adds below methods to JAudioTrack:\n\n1) getAudioSessionId\n\n2) setOutputDevice\n  - However, it uses a hidden method of AudioManager.\n    (See MediaPlayer2Impl.java)\n\n3) getFlags\n  - Method body is incomplete.\n  - It needs a way to check whether the audio track is direct,\n    or whether the HW supports A/V sync.\n\n4) getTimestamp(ExtendedTimestamp *timestamp)\n  - Method body is empty.\n  - It needs appropriate Java method to call.\n  - This is a different method from previously added method\n    getTimestamp(AudioTimestamp\u0026 timestamp).\n\n5) pendingDuration\n  - Method body is incomplete.\n  - It depends on above getTimestamp method.\n\n6) add/removeAudioDeviceCallback\n  - Method body is empty.\n  - It needs appropriate Java method to call.\n  - Cannot use Java AudioTrack.addOnRoutingChangedListener(), since the\n    callback onAudioRoutingChanged(AudioRouting) does not provide the\n    audio_io_handle_t which the native AudioDeviceCallback needs.\n\nBug: 70363744\nTest: Builds successfully\nChange-Id: I50455280812546d97f2c3e6425d17c0483476af1\n"
    },
    {
      "commit": "51b6956bc8e09eb2237a10a401baebb35096e6ab",
      "tree": "dfec915d73c7795b3b115037555c2160ebe69c72",
      "parents": [
        "65fdcf74e09717b6e67fa90ff78af45f2c9414cc"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Feb 05 16:17:13 2018 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Feb 05 16:22:13 2018 -0800"
      },
      "message": "MediaPlayer2: move MediaPlayer2 native code to libmediaplayer2\n\nTest: MediaPlayer2 plays\nBug: 63934228\nChange-Id: Ibec6d15524510a4d8618d1f684456c6c24b79828\n"
    },
    {
      "commit": "904183eeeeb8e9f7345c3e5f517719d6b5c93128",
      "tree": "7216749c4810ce6f33680182ac56087253842249",
      "parents": [
        "aa50659081021a1708d9692be1c1576a939245b6"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Sun Jan 21 20:43:41 2018 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Sun Jan 21 21:49:01 2018 +0900"
      },
      "message": "JAudioTrack: Add getRoutedDeviceId() and other methods\n\nThis CL adds following methods:\n - getRoutedDeviceId()\n - latency()\n - dump()\n\nBug: 70363744\nTest: build successfully\nChange-Id: I31d2299828a3e389b070f5d9b2c4240dfb98c57d\n"
    },
    {
      "commit": "fd328170d288e337cb779b2ef14f9e4c5e860c6a",
      "tree": "feb524d00c904dc0b4ef075f7d73aaf0bd110e99",
      "parents": [
        "9b26e9467a77e2ee03f1d19e1dbf9671c3770286"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Thu Dec 14 10:46:54 2017 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Jan 17 14:37:26 2018 +0900"
      },
      "message": "JAudioTrack: Add 6 more methods\n\nThis CL adds following methods in JAudioTrack:\n - getTimeStamp\n - setPlaybackRate / getPlaybackRate\n - applyVolumeShaper\n - write\n - getBufferDuartionInUs\n\nTest: build successfully\nChange-Id: I30cb80e7f1c7597c583941966a4cfa0a6a2b5f4b\n"
    },
    {
      "commit": "9b26e9467a77e2ee03f1d19e1dbf9671c3770286",
      "tree": "9aae29e1899be7332457fd67d7fc7a050cf949ad",
      "parents": [
        "660a74ebf0a8b5b6c79f9a016b202ccfaf815d3b"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Thu Dec 14 10:46:54 2017 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Jan 17 14:37:24 2018 +0900"
      },
      "message": "JAudioTrack: Add 14 methods\n\nThis CL adds following methods in JAudioTrack:\n - frameCount / channelCount\n - getPosition\n - setAuxEffectSendLevel / attachAuxEffect\n - setVolume (2 different versions)\n - start / pause / flush / isPlaying / stopped\n - getSampleRate\n - format\n\nTest: build successfully\nChange-Id: I790acca4405f41a94fbe14daf5824e82d1d67b4c\n"
    },
    {
      "commit": "660a74ebf0a8b5b6c79f9a016b202ccfaf815d3b",
      "tree": "f3f829a87ab0b3b8ad3a4d00cbeb826a5bd326b6",
      "parents": [
        "fddc1453b67977dac1c56f98399b6b988c232366"
      ],
      "author": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Dec 13 11:29:45 2017 +0900"
      },
      "committer": {
        "name": "Hyundo Moon",
        "email": "hdmoon@google.com",
        "time": "Wed Jan 17 14:37:19 2018 +0900"
      },
      "message": "Create constructor of JAudioTrack class\n\nBug: 70363744\nTest: Built successfully (mmm libmedia -j48)\nChange-Id: I51e0510039fca2e84d1ced103fea62156cd1e5c2\n"
    }
  ]
}
