)]}'
{
  "log": [
    {
      "commit": "1982933a51657282434879faea07ceba929defa5",
      "tree": "69012e70e440591a0033c1551a282c354f053d0b",
      "parents": [
        "2c7a0cc74ec5dd94f31f585c728f2cef5cd5f099"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 08:13:10 2020 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 01 08:19:05 2020 -0700"
      },
      "message": "media: miscellaneous fixes to VT contribution\n\n- fix MediaSource.h path\n- fix setDataSource binder code\n- use MediaCodecConstants instead of OMX/ACodec constants\n- fix spacing\n- fix typos\n- remove unused code\n- commented some tricky code segments\n- AAVC/HEVCAssembler: re-read next buffer if buffer was deleted\n- RTPSource: pull out constants kMinVideoBitrate and kBufferingPollIntervalUs\n- RTPSource: check state early in prepareAsync\n- RTPSource: fix potential null dereference in setSource\n- ARTPAssembler: make showing queue runtime configurable via debug.stagefright.rtp bool property\n- ARTPWriter: fix security issues: protect against reading OOB in\n  sendSPSPPSIfIFrame and StripStartcode\n- ARTPWriter: free buffers early in destructor\n- ARTPWriter: create PPS buffer only if there is PPS\n- ARTPConnection: fix security issues: protect against reading OOB in\n  parseRTPExt, parseTSFB, and parsePSFB. Also remove remote null-dereference.\n- AHEVCAssembler: fix security issues: protect against reading OOB in\n  addFragmentedNALUnit\n\nBug: 121230209\nTest: build\nChange-Id: Iada8b878e396452c1d281c60f3754e13e34bcddb\n"
    },
    {
      "commit": "28225abc2693b746889cdd39ea570a93a7ce19a5",
      "tree": "054f265f284c69fce972ba7a083f3883ed035300",
      "parents": [
        "d157b79f28aebb40be4c217c56e12de003efbbe8"
      ],
      "author": {
        "name": "Byeongjo Park",
        "email": "bjo.park@samsung.com",
        "time": "Thu Jan 24 20:31:19 2019 +0900"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Mar 17 16:40:43 2020 -0700"
      },
      "message": "VT: SFP: Implements interface for RTP parameters.\n\nRTP parameters will be given to NuPlayer like below.\nThis is same like how setParameters() working in case of\nStagefrightRecorder\n\n video-param-decoder-profile\u003d1;\\\n video-param-decoder-level\u003d512;\\\n rtp-param-local-ip\u003d127.0.0.1;\\\n rtp-param-local-port\u003d1234;\\\n rtp-param-remote-ip\u003d127.0.0.2;\\\n rtp-param-remote-port\u003d4321\n\nNuPlayer will create RTPSource.class instance as a part\nof a source component of media engine if it gets RTPParams\nfrom application layer.\n\nBug: 121230209\nChange-Id: If04ebb09d4f28d8eeb6a1a920a833129828a6ac4\nSigned-off-by: Byeongjo Park \u003cbjo.park@samsung.com\u003e\n"
    },
    {
      "commit": "dab79b3d09783e5053dc91b860eac06bd415cbfd",
      "tree": "229183838216adea270164035e0544354f4bfb5b",
      "parents": [
        "68db3a07ae337de45b82c6e45d41c2c325f8e2dd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 18 08:25:47 2019 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 21 14:15:00 2019 -0800"
      },
      "message": "AIDLize MediaExtractorService\n\nUse .aidl instead of handwritten binder code for MediaExtractorService.\n\nTest: build, CTS\n\nChange-Id: Ibc93eca9128552c23359218ac3bf12319391e1b1\n"
    },
    {
      "commit": "79e337367c2c7bda80a89fa188966e5934b854ea",
      "tree": "45d5cb02d0e18a1cf8cf16e7f71e792e44b228d9",
      "parents": [
        "70eb2960026daced74a70411404dfd98800fe719"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Fri Jan 25 16:35:26 2019 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Jan 28 09:37:02 2019 -0800"
      },
      "message": "Remove libbinder dependency from libmedia2_jni.\n\n-BufferingSettings doesn\u0027t need to be a parcelable.\n-Use libstagefright_foundation_without_imemory.\n\nTest: build and MediaPlayer2Test\nBug: 123361167\nChange-Id: I1c02bc4ed38a697950a9fd31f9fa395a219927e4\n"
    },
    {
      "commit": "9bb3803a80a680ea7a3bc11e07b8a89ccddee003",
      "tree": "1ad46a98f44bd2c487678c05825c374cca92b338",
      "parents": [
        "63ca96305e389e4504ab8d89111dc8719d00161f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Mar 23 18:00:38 2017 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Sun Nov 12 14:32:02 2017 -0800"
      },
      "message": "BufferingSettings: simplify buffering control.\n\nNow only 2 marks, initialMarkMs and resumPlaybackMarkMs, remain.\nTest: pass cts tests\nBug: 36280094\nChange-Id: I03c8e2a0db9f7e845f57e76f51874cd8715a48d4\n"
    },
    {
      "commit": "156c6873a5e69af71f3c28b236c5831b9cb2ac95",
      "tree": "3e36c1490f5f2d22e6e79fac3d4f59a9559403ee",
      "parents": [
        "ef9fc7792d4995da68cb71a3e9f2304e565a016d"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 06 09:47:15 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 02 11:14:55 2017 -0700"
      },
      "message": "Add AudioRouting interface for MediaPlayer\n\nBug: 64038649\nTest: Run cts in RoutingTest\n      Switch output device when playing music/video with MediaPlayer\n\nChange-Id: I5b5c288e6557199b0a6986785f9335a18a80ab89\n"
    },
    {
      "commit": "52c2851b30588df1aba00766c37ffde86a3345bc",
      "tree": "9ff98868cdbc27ab5cfd19f7cf8cae155b7cd6c4",
      "parents": [
        "014df71ed78023d99ca72578f7866cabbc1e6601"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 13 18:17:51 2017 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 13 18:20:53 2017 -0700"
      },
      "message": "MediaPlayer: add notifyAt at native side\n\nTest: media time is correct when playback rate is not 1.0\nBug: 65204641\nChange-Id: Ie9f67e3cb37267cfd364c9a9b9f674232b68ef27\n"
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "cefac14261a32fb856b0d1ab31541787112e306e",
      "tree": "d6fb3a4890929e05a5ffccc2d09c0b9da3d6bddc",
      "parents": [
        "2f77a2229be73b222098c45aed73728842667e12"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Mon Feb 06 21:02:02 2017 -0800"
      },
      "committer": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Wed Feb 15 18:15:37 2017 -0800"
      },
      "message": "Modular DRM for MediaPlayer\n\nBug:  34559906\nTest: Manual through the test app\n\nChange-Id: I286f9ff199c34563b7b8643de725f8d1534ea06c\n"
    },
    {
      "commit": "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0",
      "tree": "2d058e73f09f1822108daad51948a34c420634e3",
      "parents": [
        "ed1abbfc73d4ade0ef08239fc56ac66d70a00a92"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 24 13:36:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 14:31:46 2017 -0800"
      },
      "message": "VolumeShaper: Initial implementation\n\nThe VolumeShaper is used to apply a volume\nenvelope to an AudioTrack or a MediaPlayer.\n\nTest: CTS\nBug: 30920125\nBug: 31015569\nChange-Id: I42e2f13bd6879299dc780e60d143c2d465483a44\n"
    },
    {
      "commit": "071437a2005e39969983ec619a4c7bc54c2dc5a9",
      "tree": "0b1b44c249e3513e1bb96395484b707c194904d0",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Mon Jan 23 09:19:40 2017 -0800"
      },
      "committer": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Wed Jan 25 15:02:11 2017 -0800"
      },
      "message": "Modular DRM for MediaPlayer\n\nBug:  34559906\nTest: Manual through the test app\nChange-Id: I752c3e2bbc2fac9c75f7ddc986014c4b8ce75d84\n"
    },
    {
      "commit": "d399e7e6065aa310e025ab633f633d5b4831a358",
      "tree": "161b8ee63095e28937e041299ae66a650197f265",
      "parents": [
        "48d8020342a4de6b0b925328ddbdfe34f22253a3"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 26 15:49:11 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Nov 23 10:50:24 2016 -0800"
      },
      "message": "BufferingSettings: define internal BufferingSettings API.\n\nTest: compiles\nBug: 32524218\nChange-Id: I9a95b2fdfa497179305e031aac69e5a987614dbb\n"
    },
    {
      "commit": "c5de09127e9e0d5df7aa587be317e1487d793245",
      "tree": "f27828fe26714b003613ef894579539228dfd134",
      "parents": [
        "b59c2fb19f03bba8a558be71848bafa6a0ad3cbc"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 18 10:22:14 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 18 15:41:24 2016 -0800"
      },
      "message": "mediaplayer: support same seek mode as MediaMetadataRetriever.\n\nTest: manually force 4 seek modes in mediaplayer.\nBug: 32557491\nChange-Id: Iea4f6dbfc224fc6da39624300c6d872b79142f07\n"
    },
    {
      "commit": "67b6dccfd7b59efa772a3c2c553e7382c8f9f24c",
      "tree": "d9d03e901bf841099593e0d2b3edb32aa23ac12b",
      "parents": [
        "2aa19a96710eaaaf6679453f0278d393fd768de5"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Oct 31 17:01:37 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Oct 31 17:01:37 2016 -0700"
      },
      "message": "mediaplayer: add precise argument to seek function\n\nTest: compiles\nBug: 32557491\nChange-Id: Id8c3a938edd5a0b34a9b33e86a4dbff32cf10c98\n"
    },
    {
      "commit": "47734c9509ecb472c2844cae46e2d916b9358321",
      "tree": "6b17e7f1540458e2f1abbe1c082353f920edc3df",
      "parents": [
        "20be7bf5ba6f3d4db36686d5af4316006cf9bb27",
        "98a9b2a491360c762e2ed46a9126f576693645a5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "message": "resolve merge conflicts of 98a9b2a to nyc-dev-plus-aosp\n\nChange-Id: Iae0a5cb698807d74ba28878d7ce1f69b6ba5219a\n"
    },
    {
      "commit": "090ef604f81447eab4aa0a5b45d6307482573560",
      "tree": "6eb6530aab79b1cdc543ef16650be519db449e37",
      "parents": [
        "cdf7931424583ff20a754999216041fb46287cb3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:39:54 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:55:42 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I625fbab25f16282c2ea929cd16283d9d146fa17b\n"
    },
    {
      "commit": "0ca02a0c2c77bf88aa7d7b7c3ec04f9153ddce93",
      "tree": "66680f021382321571abab6bfb271c192f760641",
      "parents": [
        "74a930b2bb7c61c25232c4f06b67abdbeaca8116"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 14 13:14:31 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 14 13:14:31 2016 -0800"
      },
      "message": "IMediaPlayer: NULL pointer is valid for httpService in some cases.\n\nBug: 26524606\nChange-Id: Ib3323618f9bb8883e8a398c62975a0cc278c64a3\n"
    },
    {
      "commit": "2afac0c7c42560ff5b8f133c6074b7e023279d6d",
      "tree": "f541f9d2de183b5b24c857bdf5995845b22efb2b",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 12:13:07 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 15:20:31 2016 -0800"
      },
      "message": "libmedia: check NULL pointer at binder receiver side.\n\nChange-Id: I464da96f3d6081dd8c3cc2fd977e2b96f5d477bb\n"
    },
    {
      "commit": "35e03636d6fa0c7c33c67e10686657849a61aff8",
      "tree": "5a047213b1a7e042096bf0b1c0f32025d82a26ed",
      "parents": [
        "7ecf636997b812ff5ae87ea9e146707d37d1b78a",
        "becceb1136e7eb01db7dd865cb98a57117212879"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 04 17:55:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 04 17:55:48 2015 +0000"
      },
      "message": "am becceb11: am b57ffbb5: am d021f7e5: am b18c0276: am 2b63b91b: am c1e989e7: am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u0027becceb1136e7eb01db7dd865cb98a57117212879\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "becceb1136e7eb01db7dd865cb98a57117212879",
      "tree": "e730eca78b87442a236f78b962666e32e8875673",
      "parents": [
        "7734e37efe4ad47d91cdc5cfa6703d77a7a2ac0c",
        "b57ffbb5486a58e0dbb03466e9f3a5e51d6cf0f3"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 04 17:49:32 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 04 17:49:32 2015 +0000"
      },
      "message": "am b57ffbb5: am d021f7e5: am b18c0276: am 2b63b91b: am c1e989e7: am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u0027b57ffbb5486a58e0dbb03466e9f3a5e51d6cf0f3\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "2b63b91b84c75afdef4213aa11b0dcc8e7d735a3",
      "tree": "472d338d65970f75ed5df6cddc4664e9e2a42d34",
      "parents": [
        "52a4fc09b483a20ee7d5970be01598ee262f7088",
        "c1e989e76a461ea69e293839b3c29b634a462bd5"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Sep 03 18:05:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 03 18:05:44 2015 +0000"
      },
      "message": "am c1e989e7: am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u0027c1e989e76a461ea69e293839b3c29b634a462bd5\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "892354335d49f0b9fcd10e20e0c13e3cd0f1f1cb",
      "tree": "fc309fc843d7c9a627b59f0771c02edf4d1375ba",
      "parents": [
        "f394f12167fddbc755855d06b615509517c99f14"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 16:46:59 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 17:48:22 2015 -0700"
      },
      "message": "Zero out return values in media binder calls\n\nMore specifically when handling:\n* GET_STREAM_VOLUME in IAudioPolicyService, and\n* GET_CURRENT_POSITION and GET_DURATION in IMediaPlayer\n\nThis prevents leaking uninitialized values across binder in error cases.\n\nBug: 23756261\nChange-Id: I0ffd900ab12b685b0611259ade4a3efb1ec5defe\n"
    },
    {
      "commit": "03dee05039103fbc983ddc9f728f1fa974d0a5a5",
      "tree": "7a8dd72a48314c4b6f3b8a57db2fdc5698131304",
      "parents": [
        "d0b5910f78b45ce98511d31ec327ccaafe127f3f",
        "608c349d611e03e0143c23c3f77ddc62b137e354"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 22:27:27 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 22:27:27 2015 +0000"
      },
      "message": "am 608c349d: am 4e861bf5: am e1dc15ec: am 762c7139: am b04cfdf5: am d437c777: am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u0027608c349d611e03e0143c23c3f77ddc62b137e354\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "608c349d611e03e0143c23c3f77ddc62b137e354",
      "tree": "15163ccb4b85047afcf732cfd81840854c2790f7",
      "parents": [
        "f67f894fead9065dcffda03a127cee7d746c9226",
        "4e861bf5d43eae00ae4cb8727c5a408c3728288b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 22:22:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 22:22:33 2015 +0000"
      },
      "message": "am 4e861bf5: am e1dc15ec: am 762c7139: am b04cfdf5: am d437c777: am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u00274e861bf5d43eae00ae4cb8727c5a408c3728288b\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "b04cfdf51746dea51d2bb2f56fe9ef789fd30bd9",
      "tree": "a0fd09bfc71ce313ff07a611621968cd0000c477",
      "parents": [
        "35a7b54e828336121d26060dd7e7adb5f5027d32",
        "d437c77716fcf454d99b8424bb01f37643b970cc"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 21:51:52 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 21:51:52 2015 +0000"
      },
      "message": "am d437c777: am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u0027d437c77716fcf454d99b8424bb01f37643b970cc\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "0981df6e3db106bfb7a56a2b668c012fcc34dd2c",
      "tree": "dc6913625ac7d7897ae45adecc82cd9e454ebb6b",
      "parents": [
        "9a2be5d49d57b239bf6345f033eab01ba98f3889"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 20 09:56:39 2015 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 21:10:32 2015 +0000"
      },
      "message": "IMediaPlayer.cpp: make sure structures are initialized to 0\n\nCredit https://code.google.com/p/android/issues/detail?id\u003d183310\n\nBug: 23515142\nChange-Id: Idbd66fb148bd0ac1dd78f8651d0164f2a41e2427\n(cherry picked from commit b73b826cc16291b33649402497efbe0f946413bd)\n"
    },
    {
      "commit": "3a474aa67fc31505740526dd249d96204c08bf79",
      "tree": "4db784ee57ffad037fa2ded86d0fd8b3a40173d5",
      "parents": [
        "a8df0b716bdfda1e10790e6f7297eeff83d2e52a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:07 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Apr 30 16:56:10 2015 -0700"
      },
      "message": "stagefright: support setting/getting playback/sync config in MediaSync\n\nBug: 18249558\nBug: 19666434\nBug: 20057497\nChange-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605\n"
    },
    {
      "commit": "99f31604136d66ae10e20669fb6b5716f342bde0",
      "tree": "20e64f4f26533b37b087ce8656b1040b8189e24f",
      "parents": [
        "2f33dbc6ca08d45efea2df775c158e2a11e07ab6"
      ],
      "author": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Fri Mar 20 13:06:33 2015 -0700"
      },
      "committer": {
        "name": "Chris Watkins",
        "email": "watk@google.com",
        "time": "Wed Apr 15 17:12:22 2015 -0700"
      },
      "message": "Unhide the android.media.[Media]DataSource interface.\n\nThis allows apps to implement MediaDataSource, which is modeled on\nstagefright\u0027s DataSource, to supply media data to the framework. This\nwas already implemented for MediaExtractor, but it was renamed from\nDataSource.\n\nMediaExtractor, MediaPlayer and MediaMetadataRetriever each have a new\noverload: #setDataSource(android.media.MediaDataSource)\n\nOnly NuPlayer supports this new data source.\n\nThe change introduces:\n * IDataSource:        The binder interface for DataSource.\n * JMediaDataSource:   The native counterpart to the java interface. It\n                       implements IDataSource.\n * CallbackDataSource: A stagefright DataSource that wraps an\n                       IDataSource.\n\nChange-Id: Ib3c944b49cc8a792c8eb9c85e5015c07f298ebc1\n"
    },
    {
      "commit": "40bc906252974d0b389ae4a147232d0c9a97193f",
      "tree": "95301839473e4c0d3be9ef1bd2e8c1d3677964a6",
      "parents": [
        "ae4b879d04c4b07c62241a8f507c8dce11e628e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:09:33 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:57 2015 -0700"
      },
      "message": "namespace does not need a closing semicolon\n\nChange-Id: Ie8f9d42fc061f6d558f23b98414e04eb3d14b376\n"
    },
    {
      "commit": "9816016afb2a13c6a866cd047d57020566a8b9a9",
      "tree": "176a616a7d5da21447e880158cef57516efee9c3",
      "parents": [
        "658fc18d8e632441cd5d83a4f74b53620cbac1fe"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 04 17:01:11 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Feb 24 16:34:11 2015 -0800"
      },
      "message": "mediaplayer: support dynamic playback rate\n\nBug: 19196501\n\nChange-Id: I856b1507d5fa2cedfb645706d2435683a7d3e050\n"
    },
    {
      "commit": "f888020c6e2735624f2b2a30e72aca24e17b8b4d",
      "tree": "76d92b7a91a4bebd4e84d6afdc2ef4a2e4943df8",
      "parents": [
        "d02641098b16df2fd4cd32b72a30eb6f3b64e12b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 07:58:25 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 17 10:05:07 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a\n\nConflicts:\n\tmedia/libmedia/IAudioFlinger.cpp\n\tmedia/libmedia/IMediaPlayer.cpp\n\tmedia/libstagefright/CameraSource.cpp\n"
    },
    {
      "commit": "06b46062d2f8bc82ca3061a23d197734ae51918b",
      "tree": "3aee1330c3d65579643e50d105da35919ddc295f",
      "parents": [
        "e5a9eb684921b75919b1a7fee97259b0ca48bd47"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 07:58:25 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 14:01:03 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: I89a5988a0ac694ffc04d88cf939e8455bf925d4c\n"
    },
    {
      "commit": "dfdd3168582ffa72ecfc76c9530a8ea60540f8d2",
      "tree": "d0bf31f9b59cb79e632cdd723d6146efd391817b",
      "parents": [
        "fc70a810d18f13bdb04be3307aa2b282b0cdc5b0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 12 14:50:02 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 12 14:50:02 2014 -0800"
      },
      "message": "Adjust to asBinder()\u0027s new behavior\n\nChange-Id: I2de9e3770d4989bc201d886f4580747569b203dc\n"
    },
    {
      "commit": "1b86fe063badb5f28c467ade39be0f4008688947",
      "tree": "d88660112d407540184ad8e1292ed8aa98fae317",
      "parents": [
        "5ce88270eb2d41462de8c4155673b802b2ca48cb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 29 11:13:26 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 04 15:11:53 2014 -0800"
      },
      "message": "FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code\n\nChange-Id: I9f74a86e70422187c9cf0ca1318a29019700192d\n"
    },
    {
      "commit": "8ba01021b573889802e67e029225a96f0dfa471a",
      "tree": "110eca2effc73dcb2f46da71e9a0584e4af6e71e",
      "parents": [
        "53bc0a2fc54330534330118edd5c393f39eff8ab"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:46:54 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:31:57 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I64520a55f8c09fe6215382ea361c539a9940cba5\n"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab",
      "tree": "eec0f805e2e83ed1d720519748527c03affafc29",
      "parents": [
        "5e7616cc0e5493241211333134555d74aec89982",
        "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44",
      "tree": "44092c52e8439f1991f23601287d424db916c814",
      "parents": [
        "887c5d2ac34d81bde66dadbd7b2ff07501744778"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\n"
    },
    {
      "commit": "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
      "tree": "4bcde0bc9a797851ec1bee4f630c8c4f0735f623",
      "parents": [
        "b87396f9ebabbb7b47683bceca96cbe635a1ca00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 16:29:55 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 11:09:47 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nFix indentation to be multiple of 4.\nMake it easier to search:\n  sp\u003c not sp \u003c to\n  \"switch (...)\" instead of \"switch(...)\" (also \"if\" and \"while\")\nRemove redundant blank line at start or EOF.\nRemove whitespace at end of line.\nRemove extra blank lines where they don\u0027t add value.\n\nUse git diff -b or -w to verify.\n\nChange-Id: I966b7ba852faa5474be6907fb212f5e267c2874e\n"
    },
    {
      "commit": "c795b64060c3af9d7961fc1371e4ccfa8ee3e450",
      "tree": "aafa8ecde306b5420e96b7a6e0965d1f1f4c4fa6",
      "parents": [
        "4b77dc28097288cb062fce6bf5de0fb3394877a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 22 15:38:35 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 01 14:41:35 2012 -0800"
      },
      "message": "Switch the way we configure for MediaPlayer retransmission.\n\nThis is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd\nwith merge conflicts addressed by hand and additional changes made in\nresponse to code review feedback.\n\nMove in the direction of a more publishable API for configuring a\nmedia player for retransmission.  It used to be that we used a custom\ninvoke and a modified URL (prefixed with aahTX://).  There are many\nissues with this technique and it was never meant to stand the test of\ntime.\n\nThis CL gets rid of all that.  A new (but currently hidden) method was\nintroduced to the java level MediaPlayer API, called\nsetRetransmitTarget(InetSocketAddress), which allows an app writer to\nset the retransmit target.  For now, this method needs to be called\nbefore a call to setDataSource (which is pretty unusual for the\nMediaPlayer API) because this mid level code uses this as a cue to\ninstantiate an aahTX player instead of relying on the data source to\nselect a player.  When retranmit functionality becomes part of the\nexisting android player implemenation, this\nset-retrans-before-set-data-source behavior can go away, along with\nthe aahTX player itself.\n\nChange-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "df712ea86e6350f7005a02ab0e1c60c28a343ed0",
      "tree": "75401d5ef563d1ae76aaae4965f65bb39f92736c",
      "parents": [
        "d3393c35259588e8ad61a43d1d1aa1568e943307"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "fff6d715a8db0daf08a50634f242c40268de3d49",
      "tree": "f5331971b746b2e0d878e1127003a0dab72e5fbb",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "3901e5d87573447db33fb9930871a1f5266a9b2c",
      "tree": "2ed377c9705a41c95cbc6ea29d683cd646ff2dc8",
      "parents": [
        "841fa37451fb74f3d5978a15aab606bbb67e8c39"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 25 13:45:00 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 28 09:39:23 2011 -0700"
      },
      "message": "Remove surface legacy APIs and code.\n\nAll surfaces are now supported through surface textures.\n\nChange-Id: I95dd823e7099c0c32a48a1121624149dcc29d9c6\n"
    },
    {
      "commit": "8d65510a2e9ff7b64f2f35bfe3cd745a717c9533",
      "tree": "f0c15ae37b71e36d332fc1666ff6d86f1b0aa0f3",
      "parents": [
        "d6e27296206b9f897401107f1c46f4ac2947be85"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 07 14:40:23 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 07 14:42:37 2011 -0700"
      },
      "message": "Bug 5270905 fix MediaPlayer with IStreamSource\n\nChange-Id: Ia8a6381a6c88b4a0a1378aab03f5275f0fa1125a\n"
    },
    {
      "commit": "d681bbb1767bed09415e050ba78975df214bcd68",
      "tree": "2030c617c61bbf7b6cd8c6bafab601a99b1ac83d",
      "parents": [
        "d942202ee0c92608c648735c3ad0f1bab4312420"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Aug 30 14:39:17 2011 +0100"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Sep 02 11:26:59 2011 +0100"
      },
      "message": "Require INTERNET permission for network-based content.\nBug #1870981\n\nChange-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f\n"
    },
    {
      "commit": "de162ff337723798381890151247b129c4fbe314",
      "tree": "46aac4c1ff7e01cd03939478e26f61599e8977b5",
      "parents": [
        "288b66b60c9b3af3d84408885d0a4030c45eea9a"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Aug 01 14:01:29 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Aug 01 14:01:29 2011 -0700"
      },
      "message": "Fix ordering assumption of argument evaluation.\n\nNo specific order is specified in the C++ standard, but the order of\nthe calls to Parcel read commands matters.  Move any calls with multiple\nreads to local variables.\n\nFix for bug 5104979.\n\nChange-Id: I709aa040e990d2659e7a3a089f7a42ae812de9ff\n"
    },
    {
      "commit": "4f9e47f2c03ce36261c4717cd7e131d7940bb068",
      "tree": "5c3fc9eacd2d81b02cb45c050336c28ea924842e",
      "parents": [
        "d0675ede6de2249256d20271a19ccbf9f11745b8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 25 17:28:22 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 10:24:03 2011 -0700"
      },
      "message": "Add setParameter/getParameter to MediaPlayer API.\nfor bug 1982947\n\nChange-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53\n"
    },
    {
      "commit": "040e4a14ef9cafd5d08d9a180e6237fb79687995",
      "tree": "c14582b7bb0b2596aeeca669ce2ec51dc4eaef3b",
      "parents": [
        "c30268b9d118309a0514bcf280a03ee69f81403f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 06 18:29:01 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 06 21:33:03 2011 -0700"
      },
      "message": "Return status code from invoke()\n\nChange-Id: Ie64b418d2a1f44e07942399c285b460c68f8e14f\nrelated-to-bug: 4199781\n"
    },
    {
      "commit": "1173118eace0e9e347cb007f0da817cee87579ed",
      "tree": "d2d23b2120010097d1edda29cd0adffd938105c3",
      "parents": [
        "f7f3e824a8cb2b38355db8e4f99e43b90ee71ce4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 08 17:26:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 15:02:56 2011 -0800"
      },
      "message": "Bug 3438258 Add SurfaceTexture as MediaPlayer sink\n\nThis change enables the use of a SurfaceTexture in place of a Surface\nas the video sink for an android.media.MediaPlayer. The new API\nMediaPlayer.setTexture is currently hidden.\n\nThis includes:\n - New Java and C++ interfaces\n - C++ plumbing and implementation (JNI, Binder)\n - Stagefright AwesomePlayer and NuPlayer use ANativeWindow\n   (either Surface or SurfaceTextureClient)\n\nChange-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51\n"
    },
    {
      "commit": "0a5ca668c6f7d45706e9aec4a1dfec0aacc6d233",
      "tree": "d9a1933cf2af87ad563e9220818c8d752b3a0379",
      "parents": [
        "6f9f029f7fc625bb2a1b448ad30a80a6a6a73b20"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "message": "Remove all traces of legacy renderer support in stagefright.\n\nChange-Id: I17b8e0dbf53fca37c96830c41131b4bc0c24ca6d\n"
    },
    {
      "commit": "05ea6434ed399395e2dbe9f68abb44f04b274cb0",
      "tree": "96fc95609b002fdf18ae1dff241d3c3a549f1673",
      "parents": [
        "c8ca26ed63edcf2731c4773b8ce3141930cc7245"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 12:00:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 13:20:06 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 0d5694ba2d399dd0869532a4d6256448185a1be0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:59:23 2010 -0700\n\n    suspend() and resume() methods on VideoView are back but don\u0027t do anything.\n\n    They need to be back because they were public before.\n\n    Change-Id: Iddfd1021ffcf341f26e8d55ba761fd33701e2425\n\ncommit 16192891ed7d349ee97e47d1729d20a2d0d247b8\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:47:05 2010 -0700\n\n    Revert \"New API on VideoView widget to suspend/resume a session. Do not release the MediaPlayer client for video suspending/resuming.\"\n\n    This reverts commit 2e1818a4d16c3309660f27286c77d8d1eee95a25.\n\n    Conflicts:\n\n    \tapi/current.xml\n\n    Change-Id: I68dd1d05871044faf3f832d0838aa40bc7f890e5\n\ncommit 8f934dc1a3ae4e60f0790fcf97671e063fa20fad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:16 2010 -0700\n\n    Revert \"Release mediaplayer if the current state is not suspending. Fix for bug 2480093.\"\n\n    This reverts commit efb882cf75eef39ecaf9f8920ed302a019fa629f.\n\ncommit f2ed03550887986f39d36b5dabcd9e919949c7cf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:08 2010 -0700\n\n    Revert \"Release MediaPlayer if suspend() returns false.\"\n\n    This reverts commit 047212fd4ea360675e94d3ce83c7f5544f65b268.\n\ncommit 441ecce678bd24e9660a72c8627b5bd94433ff8b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:40:46 2010 -0700\n\n    manually.\n\n    Change-Id: I4fdd43c9f7c8b3eedddb31a196da4984e1c58e87\n\nChange-Id: I60d4b10e7a9e4ed8d9a796f1711618f557eb6e89\n"
    },
    {
      "commit": "5daeb129a2c2ba3d14ccd94af283b5f561c783ea",
      "tree": "c3e0f59fefcdb20b92e9a2fc5da59a7cf4b1464f",
      "parents": [
        "a0ced19fa96f26a25de708588a34ebfd452f250e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 16 08:49:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 23 12:30:24 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 35cc68814a9537c31fde146e171e7b0bbdfe211e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Aug 16 08:48:42 2010 -0700\n\n    Only enable support for yuv to yuv conversion on passion, where it\u0027s available, use the slower yuv-\u003ergb565 path everywhere else.\n\ncommit d8ac5a8814103e60d11d2acf61997fc31a1dc58d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 13:56:44 2010 -0700\n\n    The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.\n\ncommit 684972074b74318bdcb826ed9b5b0864d2d2e273\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 09:34:35 2010 -0700\n\n    A first shot at supporting the new rendering APIs.\n\nChange-Id: Iea9b32856da46950501f1a700f616b5feac710fd\n"
    },
    {
      "commit": "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
      "tree": "ce966d62f6fbb94178763ec53760f6961ffffd58",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "4e92c7efc68b5d7635a32dbd283ab8558ad9bdd6",
      "tree": "6a214e4fd02b792810f73e881d6312685ee1d722",
      "parents": [
        "328901bdc7c00ab361c5ef16d0d69c94a0458e95"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:35:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:44:10 2010 -0800"
      },
      "message": "New API on java\u0027s MediaPlayer to suspend/resume a session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "3cf613507f1e2f7bd932d921a6e222e426fd3be4",
      "tree": "20c9dd57e2227046ab1d6fc1185f4136c6dac12e",
      "parents": [
        "988e3f0b2c74095deae580157c57935a98573052"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "8e1b6cce24574b9ecd5b0300155776bd0b4ef756",
      "tree": "b0bc11d197c1f234a845a64c34b357d9b3120632",
      "parents": [
        "a920ee99dc97b54b661d1238d8c26ac07c875bed"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jul 09 09:21:33 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Fri Jul 10 11:00:42 2009 -0700"
      },
      "message": "Basic plumbing to retrieve metadata from the native player.\n\nIMediaPlayer.h\nAdded a getMetadata method that mirrors the on in MediaPlayer.java.\n\nMediaPlayer.java\nAdded a native method to get the metadata from the native player.\nParse the parcel into a Metadata object.\n\nMetadata.java\nAdded a stub to parse the Parcel returned by the native player into\na set of metadata.\n\nandroid_media_MediaPlayer.cpp\nJNI call to forward the getMetadata call.\n\nMediaPlayerService.cpp\nMediaPlayerService::Client implements the new getMetadata method added in IMediaPlayer.h\n"
    },
    {
      "commit": "a7e0e8b4c429fc68eb1bd5b5a30f5b91352288f9",
      "tree": "526ea0a90e0fead7c9b5ef56dbb16631ac075504",
      "parents": [
        "814914cd0858cafaa6ad625e3012de97d213636d"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Wed Jul 08 08:57:42 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jul 09 11:46:02 2009 -0700"
      },
      "message": "Implemented the metadata changed notification filters.\n\nIMediaPlayer:\nnew setMetadataFilter method so set a filter (2 lists of allowed and blocked metadata type)\nserialized in a Parcel.\n\nMediaPlayer.java/android_media_MediaPlayer.cpp/mediaplayer.cpp\nnew setMetadataFilter that passes the filter down to the MediaPlayerService\u0027s binder interface.\n\nMediaPlayerService.cpp\nThe Client inner class holds the allowed and blocked metadata types.\nThese are in 2 vectors that get populated in the setMetadataFilter.\n\nA new shourldDropMetadata method returns true if a type of metadata should be dropped according\nto the filters.\n\nThe notify method in run the metadata update notifications thru the filter and possibly drop them.\n"
    },
    {
      "commit": "1d187f1a86855f5f0694d7ec30efc9833bf7c589",
      "tree": "3bca2771fc58c5e6dcc79178902db5a439bb7492",
      "parents": [
        "3d59a4b99937a7d0dc07eec2574cc8a98cc99fdd"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Tue May 12 23:25:55 2009 -0700"
      },
      "committer": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Wed Jun 24 08:22:52 2009 -0700"
      },
      "message": "Direct api to the native media player.\n\nMediaPlayer.java has 3 new methods:\n* newRequest creates a Parcel that can be used to send data to the\n  native player using invoke.\n* invoke issues synchronous calls to the native player using opaque\n  parcels for the request and reply.\n\nIMediaPlayer.h has 1 new abstract method:\n* invoke\n\nThe Midi and Vorbis players have a stub for these. So far only PV\nmakes use of that new feature.\n\nTo avoid any copy overhead, the JNI interface uses Parcel as a java\nobject (no serialization/copy happens at the JNI layer).\n\nThe remote interface token is inserted when the Parcel is constructed\nin java. That way the parcel is already routable when it reaches\n IMediaPlayer.cpp (proxy). No extra copy is needed there.\n"
    },
    {
      "commit": "56f0cc533a38bdb84bc03adcb43515614ab21bae",
      "tree": "91618bb5afe2ee85a3806875895344e6aec81549",
      "parents": [
        "4710a1f6c9800dae90f9e2702ba2b5b54c095eae"
      ],
      "author": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Mon Jun 22 08:49:52 2009 -0700"
      },
      "committer": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Mon Jun 22 09:08:19 2009 -0700"
      },
      "message": "Renamed all android.hardware.IMedia* strings to android.media.IMedia*\n\nThe android.hardware.ICamera string have not been changed (but is looks\nlike the camera service and client one should undergo the same procedure)\n\nThe implementation of the interface must provide a unique string for\nit\u0027s interface name. Currently all these strings in the media framework\nstart with \u0027android.hardware\u0027 when it should really be \u0027android.media\u0027,\nthe interface token has nothing to do with hardware.\n"
    },
    {
      "commit": "489d60ec36c3927c9ee0bc14a44c1c77b74c09f6",
      "tree": "cd777f51e68111af12a44dcd6001b28947a7e7dc",
      "parents": [
        "b7056fc8525e0515c6f46676e3307088f8b64cdc",
        "172fb9ab347e146642234f0bd6f223d351e9fd0b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 26 16:25:36 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue May 26 16:25:36 2009 -0700"
      },
      "message": "am f3288f17: Merge change 2468 into donut\n\nMerge commit \u0027f3288f178ae2b2c7910b234f54f43475a83eb860\u0027\n\n* commit \u0027f3288f178ae2b2c7910b234f54f43475a83eb860\u0027:\n  setVolume did not check interface descriptor\n"
    },
    {
      "commit": "b7056fc8525e0515c6f46676e3307088f8b64cdc",
      "tree": "d29743e9a55aa4f77fa25018e6248b459434bbbe",
      "parents": [
        "95634c8b6ad5419e310a5196bcc37f5988ed82da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "172fb9ab347e146642234f0bd6f223d351e9fd0b",
      "tree": "faefb31f15b77dc35f6043a6535317d92a12bc17",
      "parents": [
        "f5879c1448cc6aebc51b26d3ec2399d66144f8f4"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue May 26 14:39:29 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue May 26 14:39:29 2009 -0700"
      },
      "message": "setVolume did not check interface descriptor\nDO NOT MERGE\n"
    },
    {
      "commit": "7562408b2261d38415453378b6188f74fda99d88",
      "tree": "6b2ac284c1b721385d695045357d9e1d60ece03a",
      "parents": [
        "615a9bfbd98b90e09d868c128db84836feb658e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5",
      "tree": "28d26f7b71e943e25c7da6e8043d79b7b8d9cf7b",
      "parents": [
        "15f767b960b38059a74a42a33e16d8df2aec8bc1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "15f767b960b38059a74a42a33e16d8df2aec8bc1",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "ad04d9201452001dbaac4349f084cc9316190b89"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8",
      "tree": "d9838a098f868ee2fcffc20627a8c9a33cb23377",
      "parents": [
        "2729ea9262ca60d93047e984739887cfc89e82eb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "2729ea9262ca60d93047e984739887cfc89e82eb",
      "tree": "25962a3f1c5f70586af45c926c037e03c643857f",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
