)]}'
{
  "log": [
    {
      "commit": "dd01ce9c28e37d4556606f481faeec032a1fe04e",
      "tree": "9d15e20598193a7c4ab3d90beb5f8405c8d27a6f",
      "parents": [
        "52a23bd3f8ace9f3a6295fc2d2b97e64665d77d8",
        "52a861d2825544fe2eb90f8e5f6351d02ff95536"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 11 17:26:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 17:26:28 2014 +0000"
      },
      "message": "am 52a861d2: Merge \"warnings be gone.\"\n\n* commit \u002752a861d2825544fe2eb90f8e5f6351d02ff95536\u0027:\n  warnings be gone.\n"
    },
    {
      "commit": "d411b4ca2945cd8974a3a78199fce94646950128",
      "tree": "e1c9e21525348fe826b91ecee7075ccb743f843d",
      "parents": [
        "51b3ea2b8f7298bffbd246c65a606cd053357b66"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 11 07:54:53 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 11 17:12:03 2014 +0000"
      },
      "message": "warnings be gone.\n\n(cherry picked from commit 84333e0475bc911adc16417f4ca327c975cf6c36)\n\nModified by Mark Salyzyn \u003csalyzyn@google.com\u003e to keep merge conflicts\nor errors downstream to a minimum.\n\nChange-Id: Ic3b272f9cbf3155001aabd2f79728f1bc31de613"
    },
    {
      "commit": "d009aa2bac4a4c8ca2e0c1203148194e237cc5d0",
      "tree": "ccb0affb48caf578a223cbd6d2fd1a869f2c560e",
      "parents": [
        "54654025d656b437eeb5c5c9267104625bcc496d",
        "81e0bd44a10e90778ab5b0a3babd4fc52cadedd8"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Apr 03 01:35:29 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 03 01:35:29 2014 +0000"
      },
      "message": "am 81e0bd44: Add signature|system permission to MediaDrm signer APIs\n\n* commit \u002781e0bd44a10e90778ab5b0a3babd4fc52cadedd8\u0027:\n  Add signature|system permission to MediaDrm signer APIs\n"
    },
    {
      "commit": "81e0bd44a10e90778ab5b0a3babd4fc52cadedd8",
      "tree": "e593e5db634c29de4c9351d9a5f64f2f2e49d503",
      "parents": [
        "68d9d71a792deed75d32fe13febc07c9c12c8449"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 02 16:41:38 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 02 16:41:38 2014 -0700"
      },
      "message": "Add signature|system permission to MediaDrm signer APIs\n\nChange-Id: If970e5ff8dcab2e67af2f3376dcd14dca82f2394\nrelated-to-bug: 12702350\n"
    },
    {
      "commit": "f356a123bf966150965a1af1cb9bd6ff2ca020de",
      "tree": "22c31d7cd8430663ee6a78b5daafffc718f11454",
      "parents": [
        "4f1ef2cd65d734edae17f8586cf717598b40f2c3",
        "68d9d71a792deed75d32fe13febc07c9c12c8449"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 01 22:00:45 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 01 22:00:45 2014 +0000"
      },
      "message": "am 68d9d71a: Support CAST V2 Authentication in MediaDrm\n\n* commit \u002768d9d71a792deed75d32fe13febc07c9c12c8449\u0027:\n  Support CAST V2 Authentication in MediaDrm\n"
    },
    {
      "commit": "68d9d71a792deed75d32fe13febc07c9c12c8449",
      "tree": "15ba0a2a541bd0b69fa286d04c9cc40d30b49871",
      "parents": [
        "1000d426bedb1ec38bdfff98fc8f004b64af13cb"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 04 13:21:31 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 29 08:43:09 2014 -0700"
      },
      "message": "Support CAST V2 Authentication in MediaDrm\n\nJava API version\n\nUpdate frameworks to enable support for CAST\nV2 Authentication in the DRM Plugin.\n\nChange-Id: I9066ada0edf8e0d777c503897d8c7fc7f76f2861\nrelated-to-bug: 12702350\n"
    },
    {
      "commit": "3c7801882bbb6d5f3cc641525a54cb8a6c4aca34",
      "tree": "f6f5e9f9d4ffecd658b76a3ef176564253768e3b",
      "parents": [
        "f1ac623fcc6bbda2faff9752cd611182a897afe1",
        "089affb6c2d9ed1e2d49df4be02d30dc490506f9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 14 20:53:02 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 14 20:53:02 2014 +0000"
      },
      "message": "am 089affb6: Merge \"mediaserver and associated services are 32-bit only\"\n\n* commit \u0027089affb6c2d9ed1e2d49df4be02d30dc490506f9\u0027:\n  mediaserver and associated services are 32-bit only\n"
    },
    {
      "commit": "af783aa91f7a279153fb8bab8d0d6b9f737996e9",
      "tree": "25c5b54bf884f220cce4ee21a9cbaf6583820f91",
      "parents": [
        "19afb3869eb6a3e3733dc1f7420e1d4c3c03d376"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Sun Mar 02 19:48:19 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 12 11:24:53 2014 -0700"
      },
      "message": "mediaserver and associated services are 32-bit only\n\nalso 32-bit only command-line apps\n\nChange-Id: I9ac557a8d02bbf6986a9b5c3cdce23d400b306a3\n"
    },
    {
      "commit": "31a98ad0da98227f3c76469e7a8a267c9539b6e8",
      "tree": "c78392dbff169a61ae80e20759e109f4a70c2159",
      "parents": [
        "621d382baa8e300036f58e7acd43bda9ce87f854",
        "8d1caa026caef3673799481c5fba454306f831e9"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 10:29:08 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 10:29:08 2014 +0000"
      },
      "message": "resolved conflicts for merge of 8d1caa02 to klp-modular-dev-plus-aosp\n\nChange-Id: Ibcb60d0d3bbc8beb54440951ffe8a14b946ccc85\n"
    },
    {
      "commit": "8d1caa026caef3673799481c5fba454306f831e9",
      "tree": "654e8de748a437c7d25550381ff7c0c8015fe40e",
      "parents": [
        "04352de2e32d6dc0901436951f69357f5cd8655c",
        "49ea13379fb15ddb73183ebafa3a377342ef932f"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Mar 07 02:42:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:42:14 2014 +0000"
      },
      "message": "am 49ea1337: Merge changes I787e1c05,I72d3a5e1,I0a5cc65f,I75fc2a25,I2c2be08d, ... into klp-dev\n\n* commit \u002749ea13379fb15ddb73183ebafa3a377342ef932f\u0027:\n  LiveSession: Use the actual, possibly redirected url as base in the M3U\n  M3UParser: Skip query strings when looking for the last slash in a URL\n  ChromiumHTTPDataSource: Keep track of the redirected URL\n  Initial HLS seamless switch implementation.\n  NuPlayer side support for seamless format switch.\n  LiveSession refactor\n  PlaylistFetcher: Add support for block-by-block decryption.\n  LiveSession: Add support for block-by-block fetchFile.\n"
    },
    {
      "commit": "0523da8f16557a85395da86ab76be6d8cb771da0",
      "tree": "41e633ee427fcec6193782b8cd1766089d5e20ed",
      "parents": [
        "6c8495c8f1ccc35db972ee7ac0dbb8baf5843548"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Jan 23 16:18:22 2014 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Mar 06 16:26:58 2014 -0800"
      },
      "message": "NuPlayer side support for seamless format switch.\n\nAvoid reinstantiating decoder if seamless format switch is supported.\n\nBug: 11854054\nChange-Id: I2c2be08d6da90cc835ec747d04a76db2313dfc7c\n"
    },
    {
      "commit": "d0115d8c4db2f337030dea706bc0a434c4a03ed6",
      "tree": "239450c60bc4cb8519edeb8985dbc601fe51c652",
      "parents": [
        "7e92abeafb184e8a34213d7149592e95a72601b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 17:16:50 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 12:17:54 2014 -0800"
      },
      "message": "update offloaded audio track sampling rate\n\nAudioPlayer must read the sampling rate from offloaded audio sinks\nwhenever a new time position is computed as the decoder can update\nthe sampling rate on the fly.\n\nBug: 12823955.\n\nChange-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "94dcc94b16cc6c2a7aa02df2d0d6b8743d738d78",
      "tree": "56cdd5bda1b552f0c2cfc54efa0f44c4848c31ed",
      "parents": [
        "d66cd743525cc049033caa3e81cbdf74c72a4556"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 06 20:29:44 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 06 20:29:44 2014 -0800"
      },
      "message": "frameworks/av: fix errors inside ALOGV\n\nFix errors exposed by adding compile-time checking to disabled ALOGVs.\n\nChange-Id: I9602a4a485dffa3caad732c2a19ec0e41a0ac65b\n"
    },
    {
      "commit": "d6074f08cc37843e8c599b2ab4b16d87c3bc67eb",
      "tree": "b9efca36c8d9890fcd86b33be746548a67e907c3",
      "parents": [
        "8115f4b206dbd04c620f062feb3c7785e2732ab3"
      ],
      "author": {
        "name": "Oscar Rydhé",
        "email": "oscar.rydhe@sonymobile.com",
        "time": "Tue Oct 15 09:54:08 2013 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Jan 03 13:58:02 2014 +0100"
      },
      "message": "Fix compile error in NuPlayerRenderer debug print\n\nWhen activating verbose log prints in NuPlayerRenderer the build\nfails because a variable have changed but the log print hasn\u0027t been\nupdated.\n\nChange-Id: I3089b087d296c37dfe6379d7e75d5892912fef96\n"
    },
    {
      "commit": "5e49afd05566820517747b9a8071c99ec0918328",
      "tree": "0dd9697822c0bd70f03bb776bc78e2da60f28991",
      "parents": [
        "a67c76538fff102cd44b2f38dd073df5f2a33605"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 17:16:50 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 17 13:41:37 2013 -0800"
      },
      "message": "update offloaded audio track sampling rate\n\nAudioPlayer must read the sampling rate from offloaded audio sinks\nwhenever a new time position is computed as the decoder can update\nthe sampling rate on the fly.\n\nChange-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88\n"
    },
    {
      "commit": "e2d617f5ba7fb90f27b03e2593666b2c927e4dc9",
      "tree": "187992f0c2d4bc565ca24b34aa0ee78e359a3f68",
      "parents": [
        "92630351d265a61faae2dfe006a8bb330283aa7b",
        "2381f06f374ee0cb8bca0edf5388394432b00e6d"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Dec 05 12:38:14 2013 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Dec 05 12:38:14 2013 -0800"
      },
      "message": "Merge commit \u00272381f06f374ee0cb8bca0edf5388394432b00e6d\u0027 into HEAD\n"
    },
    {
      "commit": "92630351d265a61faae2dfe006a8bb330283aa7b",
      "tree": "c3f2d9f3e92406c1a9922eba728a6499a9608aec",
      "parents": [
        "90892d1be84776f59a619ea4ef9ce51be5828ff8",
        "da38df5f080eb62a06b22c5bada4357cf756255e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 28 17:26:16 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 28 17:26:18 2013 +0000"
      },
      "message": "Merge \"NuPlayer: Use a software renderer when using software codecs\""
    },
    {
      "commit": "22612345ae97648d5b6db43cc1aa30aad77f7bba",
      "tree": "73b47a621118d0fa56d27929a9447e90ca27c97d",
      "parents": [
        "4215e6166fca9f87a6e9e848b3dfd4ab0d25c954"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 17:28:47 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 17:36:42 2013 -0800"
      },
      "message": "AwesomePlayer: correct stream type for offload\n\ncanOffloadStream() function in stagefright utils forces the\nstream type to AUDIO_STREAM_MUSIC when querying the audio policy\nmanager if a particular track is offloadable or not.\nThis causes MP3 ringtones to be offloaded which is not a validated use case.\n\nThe fix consists in using the actual stream type read from the AudioSink.\n\nBug: 11410937.\nChange-Id: I44b8e033a8e785a79cdc291b142f80b5580bdc4d\n"
    },
    {
      "commit": "e100b813c4d833b48b48b74100ad0b9a82c46954",
      "tree": "9a4688c5998afa5dfd86cb04e01e8b47c3fd702d",
      "parents": [
        "a72911563b0e5b21b196d40249b53975bf8d8f85",
        "9c7f845780d62ea09469a8dac7117cc01adfea5c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Nov 11 16:16:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 11 16:16:47 2013 +0000"
      },
      "message": "Merge \"StageFrightRecorder: do not use meta-data mode for software encoders\" into klp-dev"
    },
    {
      "commit": "3e518fd5d679abb83b654e473ea0fa5f7f16235f",
      "tree": "96ca7ab7e49d6f1535bc459bf89d8a1040e5a219",
      "parents": [
        "9cae217050aa1347d4ac5053c305754879e3f97f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 01 10:33:18 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 01 10:33:18 2013 -0700"
      },
      "message": "Notify current video size if available\n\nb/11248101\n\nChange-Id: I0fa3b5592efcf400c86692002267da6825e331ad\n"
    },
    {
      "commit": "9c7f845780d62ea09469a8dac7117cc01adfea5c",
      "tree": "1c69c580de33cf8dc15a5060447e4d9109181fbe",
      "parents": [
        "1c594b637df26499ce1dae2db34f2b3290efd838"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Oct 30 10:02:12 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Oct 30 11:29:29 2013 -0700"
      },
      "message": "StageFrightRecorder: do not use meta-data mode for software encoders\n\nCamera HAL v1 uses vendor-specific camera-source meta-data mode, but\nsoftware encoders use generic gralloc-source mode, so they are not\ncompatible.\n\nChange-Id: I0d1bab8eada26dcb70c97b1eec83f06d1f331239\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 11446505\n"
    },
    {
      "commit": "9cae217050aa1347d4ac5053c305754879e3f97f",
      "tree": "dff82f277cba8f34af39eaeeb00adec01bbda26c",
      "parents": [
        "be567be3f92026f5964c1c9ecce00e30bb7df412"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 14 14:12:05 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 14:06:03 2013 -0700"
      },
      "message": "Assign blame for playback wakelocks.\n\nSet a work source for the playback wakelock, so that playback is\ncounted against the requesting app instead of the media server.\n\nCherrypicked from master.\n\nb/9464621\n\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "da38df5f080eb62a06b22c5bada4357cf756255e",
      "tree": "3adf6f4e8629b797f0a9a1ed71f6b9d73c20165a",
      "parents": [
        "e56f3c96fa6e7550b67e8b049f999aaa2ada1192"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Sep 25 16:05:36 2013 +0300"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Sep 25 16:35:33 2013 +0300"
      },
      "message": "NuPlayer: Use a software renderer when using software codecs\n\nThis mimics what is done in AwesomePlayer and MediaCodec -\nideally this logic perhaps should be moved into ACodec to\navoid having to replicate it in every caller.\n\nThis makes HLS and RTSP playback work in the emulator.\n\nChange-Id: I18027dc3e469889baaae3e1c4afb559de7d0f7d3\n"
    },
    {
      "commit": "3d00aa6de95fb46e36f2bab4e3facdf0b96acf06",
      "tree": "1ad12df4c11ca37280cbe6850eed9bff1e0a2f35",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 09:53:27 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 11:59:59 2013 -0700"
      },
      "message": "soundpool: allocate shared memory heap by client\n\nCurrent SoundPool implementation allocates the shared memory heap\ncontaining decoded PCM samples in mediaserver process.\nWhen mediaserver process crashes, the shared memory heaps allocated by\nAudioCache cannot be mapped anymore in the new instance of mediaserver.\nThis causes a silent failure to end playback of new sounds because\nAudioFlinger believes the new AudioTracks are opened in streaming mode\nand not static mode: it sees a NULL shared memory pointer when the track\nis created.\n\nThe fix consists in allocating the memory heap in the client process. Thus\nthe heap is not lost when mediaserver restarts. The global memory usage is\nthe same as this is shared memory.\n\nAlso added a way to detect that a shared memory is passed when the track is\ncreated but cannot be mapped on mediaserver side.\n\nAlso fix a crash in SoundPool when ALOGV is enabled.\n\nBug: 10894793.\nChange-Id: Ice6c66ec3b2a409d75dc903a508b6c6fbfb2e8a7\n"
    },
    {
      "commit": "bc910e5c8d05f24531bd6b11379cf41cc73415ed",
      "tree": "48a82de7153143fd418c155207166e6e62eaa7c1",
      "parents": [
        "a099d1f6be3fbbb1af4c12b2ab627397f0826982",
        "ee08f7e36eeba80e005f9bdaebce635860a8f005"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 16 22:57:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 16 22:57:18 2013 +0000"
      },
      "message": "Merge \"Fix hang\" into klp-dev"
    },
    {
      "commit": "ee08f7e36eeba80e005f9bdaebce635860a8f005",
      "tree": "00fce1d20b3f272bdbe39095ce749f666a0eea9d",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 16 13:30:01 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 16 13:30:01 2013 -0700"
      },
      "message": "Fix hang\n\nSpecify that the surface is controlled by the app, to avoid a hang.\nb/10531761\n\nChange-Id: Idccc2c73aa3d368d8e7fbdc071ce36e2382efea4\n"
    },
    {
      "commit": "4b7069dac546ad21cf62ca6132d50ea41857d08e",
      "tree": "a692fbb194536dcd7ee4f8e7681e7a36143267d5",
      "parents": [
        "c728c580fc512b50604f33f1c4581c500062b245"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Sep 11 12:52:43 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Sep 11 17:58:54 2013 -0700"
      },
      "message": "Add FLAG_CAN_SEEK_BACKWARD and FLAG_CAN_SEEK_FORWARD see flags\n\nAlso update seek flag in NuPlayerDriver, otherwise MediaPlayer will\nget wrong flags.\n\nBug: 10676387\n\nChange-Id: Ice30f27a9a04e37b4718d26228a407fea8d9e4fc\n"
    },
    {
      "commit": "ec3acca4a75fc4adc076b56751124f507b419622",
      "tree": "d8e15b4acf4de74c3edcdad49f3528ca668fc2a1",
      "parents": [
        "4585e8f0ff47580fdb81ed8652bde32db1770050"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 03 14:35:37 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 03 16:02:35 2013 -0700"
      },
      "message": "wifi-display: do not use HDCP\u0027s encryptNative method if its unsupported\n\nBug: 10609422\nChange-Id: I005f1d04a4191b1503b5f3e895a98b8d6560c402\n"
    },
    {
      "commit": "ee7e77d55d510725a314d8ed36dc730c21af6173",
      "tree": "02b7cfa93dd77e7927b67cc6d85d865e3e6bd0c3",
      "parents": [
        "8271f1a2225a34a0748624786392213a746c56d7"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 28 16:40:41 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 28 16:40:41 2013 -0700"
      },
      "message": "fix MediaDrm.isCryptoSchemeSupported(uuid)\n\n1. Don\u0027t expect plugins to support an empty mimeType in isContentTypeSupported\n2. Move the cts test mock drm plugin to the cts tree so it is always used\n\nb/10528466\n\nChange-Id: I6023f6165b1e9d294986f7e5cd0896e056e376f1\n"
    },
    {
      "commit": "2484040e0f413989e4edbe26ba3bf71122382af6",
      "tree": "0a17a226282f38322b9761650a9536088096c657",
      "parents": [
        "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75",
        "dcb89b3b505522efde173c105a851c412f947178"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 23 19:13:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 23 19:13:28 2013 +0000"
      },
      "message": "Merge \"MediaPlayer: add listener for raw track data\" into klp-dev"
    },
    {
      "commit": "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75",
      "tree": "dce59b6f085880d667534b7190df11d1c52b6343",
      "parents": [
        "4b820b0e1fa069714b123fc35784541d0f94d267",
        "9cf69e0fc110f17c28e988ed0f9bf91abfaf710d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 22 23:08:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 22 23:08:10 2013 +0000"
      },
      "message": "Merge \"Add ability to test supported content types to MediaDrm\" into klp-dev"
    },
    {
      "commit": "9cf69e0fc110f17c28e988ed0f9bf91abfaf710d",
      "tree": "c5cb3fb67b26c852f8c7bea7e4eeb87952830842",
      "parents": [
        "75c16dde986e16ac5fd4d34b06b0cc6a90679866"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 21 11:59:23 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 22 09:27:35 2013 -0700"
      },
      "message": "Add ability to test supported content types to MediaDrm\n\nbug: 10244066\nChange-Id: I317f05b146db962c271893f6208890a5a6c396f1\n"
    },
    {
      "commit": "dcb89b3b505522efde173c105a851c412f947178",
      "tree": "eb89386fb07021a6527b35ea3d8ecf80584c73b7",
      "parents": [
        "1cb4e1661e4144cb188c2c79b89804fcb902fd19"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Aug 06 09:44:47 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 19 10:53:52 2013 -0700"
      },
      "message": "MediaPlayer: add listener for raw track data\n\nBug: 10326117\n\nChange-Id: I2c0bdf8adc67b11f8dc633423bee66897548f181\n"
    },
    {
      "commit": "cbaffcffee6418d678806e63097c19fe26d48fe0",
      "tree": "21af7d5eab33df7c6487290014f29a83b525734c",
      "parents": [
        "b8689b31813f55cbc1bf8e9ca0d46a9ee113e38a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Aug 14 18:30:38 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 15 16:04:58 2013 -0700"
      },
      "message": "Add MEDIA_STARTED/PAUSED/STOPPED events to media players\n\nThis is needed for the MediaTimeProvider java interface, so it does not\ncontinually poll for current media time.\n\nNote: NuPlayer and AwesomePlayer do not correctly handle stop (pause\ninstead), so for those we will signal PAUSED.\n\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nChange-Id: I3c61e1bda475f131323f475c18a42e3ec66c9ae1\nBug: 10326117\n"
    },
    {
      "commit": "d89532e133b881c7e0dac089333ad7642fc510f1",
      "tree": "ba12a120aaf59226926f7a585f8a0cbe2e25aba8",
      "parents": [
        "b1a270d1e926fb9a01b4265a7675ed0c2c8f4868"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Tue May 14 13:18:21 2013 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 09:30:34 2013 -0700"
      },
      "message": "libmediaplayerservice: offload playback support\n\nMain change is to how recycled tracks are used for gapless\nplayback. If we are playing offloaded tracks that can\u0027t be\nrecycled we don\u0027t open a new offloaded output until we have\nclosed the previous one. This is because offloaded tracks\nare a limited resource so we don\u0027t want to spuriously create\nunnecessary instances. If the tracks cannot be recycled\nthis means that the formats are incompatible and so the\nhardware most likely will also be unable to use the existing\noutput channel for the new track. If we already have the\nmaximum number of hardware offload channels open (which could\nbe only one) then creation of the next output would fail if\nwe attempted it while the previous output was still open.\n\nChange-Id: I4f5958074e7ffd2e17108157fee86329506730ea\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "8060060217ff16cd67c8f6a15c649f44c343acf0",
      "tree": "fa0d2d4f680f2303a88e3bcfba2b897fc435e76f",
      "parents": [
        "9d7376a7a4910a61ee4e9b1ad94b125d157882cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 18 14:36:18 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 18 15:11:50 2013 -0700"
      },
      "message": "ANetworkSession and ParsedMessage are now part of stagefright foundation.\n\nAlso fixes some bugs in ParseMessage and adds \"WebSocket\" mode to\nANetworkSession, something that\u0027s opt-in and should not affect existing clients\nof the API.\n\nChange-Id: I86d5748e0d818231d85d3590d86c2b41d4f8b1f1\n"
    },
    {
      "commit": "3a24dfc5b608d86e1989c2a56afa98aaae095541",
      "tree": "437d3a3ce7ddc59b531791918358f18b4fece73d",
      "parents": [
        "ee5e8d3e8dc61f8fb1fa725278d63802074c10c5",
        "d1eff5718510228503958e8fafa698c9e6a4a230"
      ],
      "author": {
        "name": "leozwang@google.com",
        "email": "leozwang@google.com",
        "time": "Wed Jul 17 21:14:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 17 21:14:37 2013 +0000"
      },
      "message": "Merge \"Output more detailed error message if loading library fails\""
    },
    {
      "commit": "d1eff5718510228503958e8fafa698c9e6a4a230",
      "tree": "0f4edc23c490ba584622ae8cd612301b43025753",
      "parents": [
        "ce177bb31493d3cd4450f9d4760fa1fd32ec6bf4"
      ],
      "author": {
        "name": "leozwang@google.com",
        "email": "leozwang@google.com",
        "time": "Sat Jul 13 21:52:50 2013 -0700"
      },
      "committer": {
        "name": "Leo Wang",
        "email": "leozwang@google.com",
        "time": "Wed Jul 17 21:12:44 2013 +0000"
      },
      "message": "Output more detailed error message if loading library fails\n\nBug: 9805979\n\nChange-Id: I77b19d6a65ff9fb72e7428ce79b117628e4c8658\n"
    },
    {
      "commit": "fb1fdc9d6603aa228362e7349451f6455c9849c2",
      "tree": "1caac6c881db81bcfedb596b292ce62ecbaf6a2c",
      "parents": [
        "551ababe67ce31778000d52958e53e1c56e1a294"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:03:19 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:08:15 2013 -0700"
      },
      "message": "Add comments\n\nChange-Id: Ifbf3a46a4183c8abc0feee1c588953ab10303cc1\n"
    },
    {
      "commit": "1545d35f871ff3527a716af659ddadebe3253548",
      "tree": "b54f893fe56f9fdf2dc9ed7718f050f302cc6635",
      "parents": [
        "0bc32ae1a8ef45f98101b78bfe64798875b569e3",
        "9f0e05978e236352fd2a4a7c6dce909755c36ead"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jul 08 11:27:52 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 08 11:27:52 2013 -0700"
      },
      "message": "am 9f0e0597: am 7266bc80: am ca7f1609: Merge \"Prevent double disconnects in RTSPSource\"\n\n* commit \u00279f0e05978e236352fd2a4a7c6dce909755c36ead\u0027:\n  Prevent double disconnects in RTSPSource\n"
    },
    {
      "commit": "9f0e05978e236352fd2a4a7c6dce909755c36ead",
      "tree": "539b172729d0a44025e5331c7a2fda6b1f86d0ae",
      "parents": [
        "9a25c012915f2209fff1479b246ae8eba38c3eff",
        "7266bc80850dc327e9f18c27b81613f959399630"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jul 08 11:25:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 08 11:25:34 2013 -0700"
      },
      "message": "am 7266bc80: am ca7f1609: Merge \"Prevent double disconnects in RTSPSource\"\n\n* commit \u00277266bc80850dc327e9f18c27b81613f959399630\u0027:\n  Prevent double disconnects in RTSPSource\n"
    },
    {
      "commit": "7266bc80850dc327e9f18c27b81613f959399630",
      "tree": "661b92b78a01707e05a62323b286132f8714b02f",
      "parents": [
        "47a1fe04637793f48d808261b1fac47acc3de1e1",
        "ca7f160921a4a1a5da32ebe8fab1067bd8998a1f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jul 08 11:21:45 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 08 11:21:45 2013 -0700"
      },
      "message": "am ca7f1609: Merge \"Prevent double disconnects in RTSPSource\"\n\n* commit \u0027ca7f160921a4a1a5da32ebe8fab1067bd8998a1f\u0027:\n  Prevent double disconnects in RTSPSource\n"
    },
    {
      "commit": "69adec56fe13a2154cf9388c6e8725c6b6861b74",
      "tree": "049b4b7c7e497eea69f2f4bef3b22a62f78e2464",
      "parents": [
        "20ed5f444c149c49d0e599da09e5cec1e5cc6051",
        "9a25c012915f2209fff1479b246ae8eba38c3eff"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Jul 07 12:28:46 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 07 12:28:46 2013 -0700"
      },
      "message": "am 9a25c012: am eced745a: Merge \"Part of fix for TEE resource leaks when app crashes\" into jb-mr2-dev\n\n* commit \u00279a25c012915f2209fff1479b246ae8eba38c3eff\u0027:\n  Part of fix for TEE resource leaks when app crashes\n"
    },
    {
      "commit": "9a25c012915f2209fff1479b246ae8eba38c3eff",
      "tree": "af538ebd502f0d834f5e9a10799f3e508bdfa55b",
      "parents": [
        "ace2378c934b61fbd865b5ade9ff7d0df81dabe3",
        "eced745af7d2d27a8c45e04eb071d4fb30cd3e48"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Jul 07 12:26:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 07 12:26:16 2013 -0700"
      },
      "message": "am eced745a: Merge \"Part of fix for TEE resource leaks when app crashes\" into jb-mr2-dev\n\n* commit \u0027eced745af7d2d27a8c45e04eb071d4fb30cd3e48\u0027:\n  Part of fix for TEE resource leaks when app crashes\n"
    },
    {
      "commit": "3d3f67f3afa45e6b49d85b20942ee8184a33c1a4",
      "tree": "ecf87485ed6235279de2022c056c0f370b2af8d5",
      "parents": [
        "a691ff3c03e38e148bbefed35ebb15e552a12613"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jul 03 15:38:58 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jul 03 16:23:39 2013 -0700"
      },
      "message": "Part of fix for TEE resource leaks when app crashes\n\nbug: 9672606\nChange-Id: I98cf65260d5e43d34e3897452f6f26ed2c89294e\n"
    },
    {
      "commit": "1ab85ec401801ef9a9184650d0f5a1639b45eeb9",
      "tree": "c3a39f141461642c3ac3c7f1370ca679d08d80e6",
      "parents": [
        "8f13428cb29a9b610a9e9a0f5fea437cd2d3f032"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 31 09:18:43 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 02 13:43:24 2013 -0700"
      },
      "message": "Include what is needed\n\nRemove old includes.\nHeader files only include other header files that they directly need themselves.\n\nChange-Id: Ic471386808d9f42ea19ccbd59cb50a5f83a89dd0\n"
    },
    {
      "commit": "0ad03bc59d090a0455f858d2f629834c105f6f37",
      "tree": "86eba1233c510ecc2217ae7d49c1780834d87c6e",
      "parents": [
        "a9aa6baa5d86fc1a5bd37fc636d766d9e3ad2507"
      ],
      "author": {
        "name": "Fredrik Rosin",
        "email": "fredrik.rosin@sonymobile.com",
        "time": "Wed Mar 06 13:42:53 2013 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Mon Jul 01 13:14:47 2013 +0200"
      },
      "message": "Prevent double disconnects in RTSPSource\n\nPrevent a null pointer from occuring by checking that we are not\nalready disconnected before performing a disconnect, in case\nmultiple disconnects have been issued.\n\nChange-Id: Ib88800cd246086fd57f77d10748d41b1aefe2084\n"
    },
    {
      "commit": "f761cec9aaca76bb84264f3666764d24a9c243e2",
      "tree": "6fc6475ee51c767b214544c8f91384cbd359719e",
      "parents": [
        "226939c6d250d7d90f84a8667edde7efb879afc9",
        "903871da7a7c71b8718133e60e2f0835837b5f3f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Jun 28 10:48:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 10:48:43 2013 -0700"
      },
      "message": "am 903871da: am 83790fcc: am bdf33c98: Merge \"Fix compilation warning: incorrect format specifier for type \\\u0027ssize_t\\\u0027.\"\n\n* commit \u0027903871da7a7c71b8718133e60e2f0835837b5f3f\u0027:\n  Fix compilation warning: incorrect format specifier for type \u0027ssize_t\u0027.\n"
    },
    {
      "commit": "83790fcce4f5cda1e7c89f1cbed452426502f227",
      "tree": "c7636bc7a6b9f7597ebe6dcf91a377448e8ec950",
      "parents": [
        "3a4ff0b8bf464c9c286d63326bea42609527051e",
        "bdf33c98912090176183d3e9b9a9217dbbdca6da"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Jun 28 09:30:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 09:30:58 2013 -0700"
      },
      "message": "am bdf33c98: Merge \"Fix compilation warning: incorrect format specifier for type \\\u0027ssize_t\\\u0027.\"\n\n* commit \u0027bdf33c98912090176183d3e9b9a9217dbbdca6da\u0027:\n  Fix compilation warning: incorrect format specifier for type \u0027ssize_t\u0027.\n"
    },
    {
      "commit": "ad3af3305f024bcbbd55c894a4995e449498e1ba",
      "tree": "2e242d4c49cce9faefc28665c6ee63a2a5da170c",
      "parents": [
        "7919fa2c33b1fa7f5e49b2188d671bfe519c231e"
      ],
      "author": {
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com",
        "time": "Mon Mar 25 16:54:37 2013 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 27 17:16:24 2013 -0700"
      },
      "message": "Public API changes for audio offload support.\n\nNOTE: this does _not_ include all private member variables added\nto classes as part of offload support. Only public/protected functions\nand stubs functions/variables needed to make the changes buildable.\n\n- isOffloadSupported() added to audio policy service\n    A stub implementation is required to build, this always returns false\n- setParameters() added to IAudioTrack\n    A stub implementation is required to build, this always returns\n    INVALID_OPERATION\n\n- CBlk flag for stream end\n\n- Change AudioSystem::getRenderPosition() to take an audio_output_t\n    so caller can specify which output to query\n\n- Add AudioSystem::isOffloadSupported()\n    This is fully implemented down to the AudioFlinger function\n    AudioPolicyServer::isOffloadSupported() which is just a stub\n    that always returns false.\n\n- Add EVENT_STREAM_END to AudioTrack interface.\n    STREAM_END is used to signal when the hardware has actually finished\n    playing all the data it was sent.\n\n- Add event type enumeration to media player interface AudioSink callbacks\n    so that the same callback can be used to handle multiple types of\n    event. For offloaded tracks we also have to handle STREAM_END and\n    TEAR_DOWN events\n\n- Pass audio_offload_info_t to various functions used for opening outputs,\n    tracks and audio players. This passes additional information about the\n    compressed stream down to the HAL when using offload.\n    For publicly-available APIs this is an optional parameter (for some of\n    the internal and low-level APIs around the HAL interface it is mandatory)\n\n- Add getParameters() and setParameters() API to AudioTrack\n    Currently dummy implementations.\n\n- Change AudioPlayer contructor so that it takes a set of bitflags defining what\n    options are required. This replaces the original bool which only specified\n    whether to use deep buffering.\n\n- Changes to StageFright class definition related to handling tearing-down of\n    an offloaded track when we need to switch back to software decode\n\n- Define new StageFright utility functions used for offloaded tracks\n    Currently dummy implementations.\n\n- AudioFlinger changes to use extended audio_config_t.\n    Fills in audio_offload_info_t member if this info is passed in when\n    opening an output.\n\n- libvideoeditor changes required to add the new event type parameter\n    to AudioSink callback functions\n\n- libmediaplayerservice changes required to add the new event type parameter\n    to AudioSink callback functions\n\nChange-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1\nSigned-off-by: Richard Fitzgerald \u003crf@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Eric Laurent \u003celaurent@google.com\u003e\n"
    },
    {
      "commit": "7d409691ed61f96bac6672b59f368cd3cc8ea2d8",
      "tree": "03efbb6dff1fbad998859225e3ae49901211d417",
      "parents": [
        "d74a9ee83fd6e033fd2260ca3777390d7e5f817a"
      ],
      "author": {
        "name": "Scott Fan",
        "email": "fancp2007@gmail.com",
        "time": "Sun Apr 28 10:13:54 2013 +0800"
      },
      "committer": {
        "name": "Scott Fan",
        "email": "fancp2007@gmail.com",
        "time": "Thu Jun 27 07:06:15 2013 +0000"
      },
      "message": "Fix compilation warning: incorrect format specifier for type \u0027ssize_t\u0027.\n\nwarning: format \u0027%ld\u0027 expects argument of type \u0027long int\u0027,\nbut argument 7 has type \u0027ssize_t {aka int}\u0027 [-Wformat]\n\nChange-Id: I823835a26320a3abb82f8dff9fbe82e5132e7556\nSigned-off-by: Scott Fan \u003cfancp2007@gmail.com\u003e\n"
    },
    {
      "commit": "2799d743ee2ae5a25fe869a7f9c052acc029559f",
      "tree": "5cab5ff06f7cae0025b93fdcd549cfb2ec72b755",
      "parents": [
        "7c684c622110af460025eff85082030947278430"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 30 14:33:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 03 11:28:36 2013 -0700"
      },
      "message": "Use sp\u003cAudioTrack\u003e instead of raw AudioTrack *\n\nThis change prepares for the new implementation of AudioTrack client, which\nwill require clients to use only sp\u003cAudioTrack\u003e, not raw AudioTrack *.\nA raw delete will cause a race condition during AudioTrack destruction.\n\nAudioTrack was made a RefBase by commit b68a91a70bc8d0d18e7404e14443d4e4020b3635\non 2011/11/15, when it was needed by OpenSL ES (for the callback protector).\nAt that time, the only other client that was also converted from\nAudioTrack * to sp\u003cAudioTrack\u003e was android.media.AudioTrack JNI in\nproject frameworks/base (file android_media_AudioTrack.cpp).\n\nDetails:\n * Use .clear() instead of delete followed by \u003d NULL.\n * ALOG %p need .get().\n * sp\u003c\u003e don\u0027t need to be listed in constructor initializer, if initially 0.\n * Use \u003d\u003d 0 for sp\u003c\u003e vs \u003d\u003d NULL for raw pointers.\n * Use if (sp !\u003d 0) instead of if (raw).\n\nChange-Id: Ic7cad25795d6e862e112abdc227b6d33afdfce17\n"
    },
    {
      "commit": "7c684c622110af460025eff85082030947278430",
      "tree": "3e29ab57fde237f80242d1c479968126d757368f",
      "parents": [
        "faca94d1773afb50fb8aa4eb00ca213d7c9d2bec",
        "f9bb8358e454be6dc88403171db7e0e182407f17"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 03 08:48:27 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 03 08:48:27 2013 -0700"
      },
      "message": "am f9bb8358: am b7319a7e: Update HTTP proxy configuration for all media playback inside stagefright.\n\n* commit \u0027f9bb8358e454be6dc88403171db7e0e182407f17\u0027:\n  Update HTTP proxy configuration for all media playback inside stagefright.\n"
    },
    {
      "commit": "f9bb8358e454be6dc88403171db7e0e182407f17",
      "tree": "17ae0e6c7d2b042cb5b6e444dc22ebce81340cf8",
      "parents": [
        "268f5ccf7b8adf80f18ef8a9dac46a0813cec19f",
        "b7319a7eb0a06ef4fd3a0c9157ee63e637ad7aa1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 03 08:46:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 03 08:46:18 2013 -0700"
      },
      "message": "am b7319a7e: Update HTTP proxy configuration for all media playback inside stagefright.\n\n* commit \u0027b7319a7eb0a06ef4fd3a0c9157ee63e637ad7aa1\u0027:\n  Update HTTP proxy configuration for all media playback inside stagefright.\n"
    },
    {
      "commit": "b7319a7eb0a06ef4fd3a0c9157ee63e637ad7aa1",
      "tree": "6dc90cde609f708f45ae08af2bdc5f9cd2df4bb3",
      "parents": [
        "41688da226e91c97ea3b2fe096044e1e5b0520bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 29 14:20:52 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 31 15:31:56 2013 -0700"
      },
      "message": "Update HTTP proxy configuration for all media playback inside stagefright.\n\nChange-Id: Ie0dd00045aba668d8b49da73224e7a7c9c04f69b\nrelated-to-bug: 8873723\n(cherry picked from commit 2704965b8a1ff3b7450ff58ccecf86d8ec688c40)\n"
    },
    {
      "commit": "14f7672b5d450ed26a06fd3bb3ce045ea78b11b2",
      "tree": "1730ace584297a64946ed5dccc0ca596c2570d21",
      "parents": [
        "fbb70ce416b193655fbe5ff7f6c8676050bdf524"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 15 09:04:18 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 31 10:30:45 2013 -0700"
      },
      "message": "New HLS implementation supporting independent stream sources, audio-only streams\n\nand more.\n\nChange-Id: Icfc45a0100243b2f7a14a9e65696be45b67d6495\n"
    },
    {
      "commit": "308bcaa44e578279e61be32b572fdb0b11b1e4c7",
      "tree": "3b76d5e38e37ca9f59c689bfb6aef11a75a35249",
      "parents": [
        "6d101328e34557fa251b7d52d4d8dbf59620d099"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 03 21:54:17 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri May 17 16:18:28 2013 -0700"
      },
      "message": "wifi-display: add support for metadata mode on encoder output\n\npass buffer_handle_t from encoder output to HDCP encryptor input\n\nBug: 8968123\n\nChange-Id: Iea8007ce568641e213fd2e3cf6947a6f7a95746c\n"
    },
    {
      "commit": "d84c79bf628d0f96189429add9c8b0fbb7acace9",
      "tree": "f56fd9f5388430978309fe894e492b740863fbf6",
      "parents": [
        "26e36ff8689d6efc9d54db43cfbbb317f383079a",
        "c34e097efc5eeefe977972b08a42509e8aa3ccc5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 16:54:07 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 25 16:54:07 2013 -0700"
      },
      "message": "am dd309b97: Merge \"Handle the case where an asynchronous prepare was initiated and then\" into jb-mr2-dev\n\n* commit \u0027dd309b97f3e30cb8ab30892b4bf6b5d824853a86\u0027:\n  Handle the case where an asynchronous prepare was initiated and then\n"
    },
    {
      "commit": "75f912ca9d8a03c91a421b80d96b81d87ef79d68",
      "tree": "f56fd9f5388430978309fe894e492b740863fbf6",
      "parents": [
        "4fcff8859393adce884ea958c66d471a4c36b55f",
        "dd309b97f3e30cb8ab30892b4bf6b5d824853a86"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 16:54:07 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 25 16:54:07 2013 -0700"
      },
      "message": "am dd309b97: Merge \"Handle the case where an asynchronous prepare was initiated and then\" into jb-mr2-dev\n\n* commit \u0027dd309b97f3e30cb8ab30892b4bf6b5d824853a86\u0027:\n  Handle the case where an asynchronous prepare was initiated and then\n"
    },
    {
      "commit": "5a7501304d815552c3bfaee8789821e4884d073b",
      "tree": "944512c454d0add19a0ff4036299495e3fd32027",
      "parents": [
        "159ef7310215bdf86f7d64a797cce3ff61951a2c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 15:11:19 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 15:11:19 2013 -0700"
      },
      "message": "Handle the case where an asynchronous prepare was initiated and then\n\nthe mediaplayer was reset.\n\nChange-Id: Ib241747c5dc002b88a3854569c1f8340b2a8ef41\nrelated-to-bug: 8688986\n"
    },
    {
      "commit": "b5f28d4749b898d92fe5e56236b417e37b6fe84f",
      "tree": "944512c454d0add19a0ff4036299495e3fd32027",
      "parents": [
        "7f86d98317843838c4a5248c733bf95f9574fcab"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 15:11:19 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 25 15:11:19 2013 -0700"
      },
      "message": "Handle the case where an asynchronous prepare was initiated and then\n\nthe mediaplayer was reset.\n\nChange-Id: Ib241747c5dc002b88a3854569c1f8340b2a8ef41\nrelated-to-bug: 8688986\n"
    },
    {
      "commit": "6bc71cac3619b0a5bb70d87abded691f3f929e3b",
      "tree": "c4668ec4594fc9a651d95d692a7a2956bf8f4fcb",
      "parents": [
        "3ba2aea1588438d0768ed48fc2749a2034eb3a2b",
        "aa47eb2e0560ade9e0d899e72d733bb6764973b6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 24 09:52:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 24 09:52:49 2013 -0700"
      },
      "message": "am 628a8c0e: Merge \"fix a race condition of MediaPlayerServce::Client::mClient\"\n\n* commit \u0027628a8c0ed91531468f5c615fea8745f63cc812aa\u0027:\n  fix a race condition of MediaPlayerServce::Client::mClient\n"
    },
    {
      "commit": "2c2345cf7e163f532f32597051f579cdb0e36bec",
      "tree": "c4668ec4594fc9a651d95d692a7a2956bf8f4fcb",
      "parents": [
        "e55951df62a777485f437bf070a5149caf62955f",
        "628a8c0ed91531468f5c615fea8745f63cc812aa"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 24 09:52:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 24 09:52:49 2013 -0700"
      },
      "message": "am 628a8c0e: Merge \"fix a race condition of MediaPlayerServce::Client::mClient\"\n\n* commit \u0027628a8c0ed91531468f5c615fea8745f63cc812aa\u0027:\n  fix a race condition of MediaPlayerServce::Client::mClient\n"
    },
    {
      "commit": "aa47eb2e0560ade9e0d899e72d733bb6764973b6",
      "tree": "6279ecc72189f855a6e247402e668af1b6c0a59f",
      "parents": [
        "6db76e8b8f561355198fc91dd95498a59ad38a20",
        "dcfefde6be8f9f33bbd2b3546f3be946d958d677"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 24 15:46:11 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 15:46:13 2013 +0000"
      },
      "message": "Merge \"fix a race condition of MediaPlayerServce::Client::mClient\""
    },
    {
      "commit": "628a8c0ed91531468f5c615fea8745f63cc812aa",
      "tree": "dd257b4ed76b838ece43422ff06c2a1b3877259b",
      "parents": [
        "3030f344e77d14cf688c34f79c83a045c888825d",
        "dcfefde6be8f9f33bbd2b3546f3be946d958d677"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 24 15:46:11 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 15:46:13 2013 +0000"
      },
      "message": "Merge \"fix a race condition of MediaPlayerServce::Client::mClient\""
    },
    {
      "commit": "ca6867fbac7a69c4d7a253917ecf6d4abc18d49c",
      "tree": "e52f4f2870cc4a0c58743000d88a10f410c5247f",
      "parents": [
        "8461772f46769a384ea87b42848e2d77de529332"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 16 10:54:03 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 16 12:52:33 2013 -0700"
      },
      "message": "Fix a typo that would cause us not to shutdown/flush the decoders in\n\nsome cases.\n\nrelated-to-bug: 8630032\n\nChange-Id: I8e94b53b34e137e827e9630c65f3252ea91e4ebd\n"
    },
    {
      "commit": "da9740e63a835e610519bd235be9137d74b6d409",
      "tree": "db7e39018b0f9968994929ac178789b12d214854",
      "parents": [
        "f5c0211057be7a1d32f356d4162a84cce281394d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 16 10:54:03 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 16 12:52:33 2013 -0700"
      },
      "message": "Fix a typo that would cause us not to shutdown/flush the decoders in\n\nsome cases.\n\nrelated-to-bug: 8630032\n\nChange-Id: I8e94b53b34e137e827e9630c65f3252ea91e4ebd\n"
    },
    {
      "commit": "602f5bbd7596ec3fe447fde4329d5d4f0b370835",
      "tree": "15871fed5f74c20a01c45e1aa370f75be9ad9a00",
      "parents": [
        "474c6539e3592aece37616d0b39ef008b61260a0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 15 16:18:56 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 15 16:18:56 2013 -0700"
      },
      "message": "Guard against mLooper \u003d\u003d NULL.\n\nChange-Id: I01aa0e47b55d0dffe34525edf9f055a5cb4dc70f\nrelated-to-bug: 8620223\n"
    },
    {
      "commit": "a68e7b98361692d4120bf99fa5dc18cd93673130",
      "tree": "98a10087c0fc8862b753642e52d0ac8063f09b1d",
      "parents": [
        "5ce9c299a64a1568165fc66adb2cf68d89198a90"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 15 16:18:56 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 15 16:18:56 2013 -0700"
      },
      "message": "Guard against mLooper \u003d\u003d NULL.\n\nChange-Id: I01aa0e47b55d0dffe34525edf9f055a5cb4dc70f\nrelated-to-bug: 8620223\n"
    },
    {
      "commit": "2070254f241f52cadb69bc2323f56df72704f1ca",
      "tree": "dd5aead0ce971332761599cc73189b8e1fea96a9",
      "parents": [
        "ecba7488c5cceaacef95836b1b476433451e7761"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 11:07:55 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 11:31:55 2013 -0700"
      },
      "message": "Instead of returning an error, return an invalid duration (-1 ms)\n\nif no duration information was available. This prevents us from\nentering ERROR state, effectively rendering the player instance useless.\n\nChange-Id: I602d2661ae8b8633360306c0ea9208fb11e2bf17\nrelated-to-bug: 8596285\n"
    },
    {
      "commit": "d85929f6086e050d7cb33bfe0d29f339ad7279e5",
      "tree": "ba90eb3c58882adc2a7f030892ab6faf6970af7b",
      "parents": [
        "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 11:07:55 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 11:31:55 2013 -0700"
      },
      "message": "Instead of returning an error, return an invalid duration (-1 ms)\n\nif no duration information was available. This prevents us from\nentering ERROR state, effectively rendering the player instance useless.\n\nChange-Id: I602d2661ae8b8633360306c0ea9208fb11e2bf17\nrelated-to-bug: 8596285\n"
    },
    {
      "commit": "ecba7488c5cceaacef95836b1b476433451e7761",
      "tree": "83245c19c2dda5c557531edb19478056034b5db5",
      "parents": [
        "5544c66ba0aa789a997b376df503a5ffae425dc7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6",
      "tree": "67aa5a912048834766759d1842f7e54a20f74481",
      "parents": [
        "ec77122351b4e78c1fe5b60a208f76baf8c67591"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "505208dd38ab2f143e6a3ff6a2c262d0fab76b7e",
      "tree": "0ea6a3dd880bca0a840e0fd3d821c943be083a42",
      "parents": [
        "1dc6fcccfe33c65a2253bc3385e45d4e77e4b79e",
        "0cb126a34fe32f81c830858102471e7be2ce85b1"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "message": "Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev"
    },
    {
      "commit": "d5ef30b223b627c21b11f2850eeb48426c74220d",
      "tree": "b18fbd5fd00a79f237bb2a5f1973ab70f636ef25",
      "parents": [
        "f8fae863e8a5d442684634a1d3b2adcbe74b957a",
        "c0d5f1f8405de861ed6f1725f26cd6601e7103ab"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "message": "Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev"
    },
    {
      "commit": "0cb126a34fe32f81c830858102471e7be2ce85b1",
      "tree": "a20999e4b89a78375a1b69cb3a0bef96fab74362",
      "parents": [
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 13:08:05 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 03 12:20:53 2013 -0700"
      },
      "message": "Implement async event callout from drm plugin to Java app\n\nChange-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b\n"
    },
    {
      "commit": "c0d5f1f8405de861ed6f1725f26cd6601e7103ab",
      "tree": "710d03a7ee6541642c1dc16ac82b4ffea3903968",
      "parents": [
        "4c63a239c404af1e055e5f9939939ab0fd09d98a"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 13:08:05 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 03 12:20:53 2013 -0700"
      },
      "message": "Implement async event callout from drm plugin to Java app\n\nChange-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b\n"
    },
    {
      "commit": "df41f485a9162407b32b7db1cea483f64bbd0c65",
      "tree": "4a25321560089605809b753fccc9365bca9f64bb",
      "parents": [
        "d2c90696403bb3c9e28d7b51d65c9468bdf8e78b",
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "message": "Merge \"MediaDrm API update\" into jb-mr2-dev"
    },
    {
      "commit": "a56e15065bc45082d913c8c8e71e60692ce8c8f0",
      "tree": "602dc7a6d6dc2e6ebd0f1509e8f53a958b088b53",
      "parents": [
        "b7c9d61b9d398b272c8138a2c6aace069229ac03",
        "4c63a239c404af1e055e5f9939939ab0fd09d98a"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "message": "Merge \"MediaDrm API update\" into jb-mr2-dev"
    },
    {
      "commit": "8856c8b8777d0e0de11b2de863a336b001024e29",
      "tree": "21ed9ba7ba5db495085440b34ec75c72bf4af943",
      "parents": [
        "c9e58fcf57d865e6c82fdd4bf49d97f89203b2e4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 30 16:19:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 01 21:57:32 2013 -0700"
      },
      "message": "MediaDrm API update\n\nClarify offline usage of sessions and keys and implement\nimplement CryptoSession to support additional crypto use\ncases.\n\nChange-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc\n"
    },
    {
      "commit": "4c63a239c404af1e055e5f9939939ab0fd09d98a",
      "tree": "5ec5bdcc0de9cb139df551a2b6e5c6010497e9ac",
      "parents": [
        "4fc3e841358164a661c78f78bc617f5ac879aa35"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 30 16:19:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 01 21:57:32 2013 -0700"
      },
      "message": "MediaDrm API update\n\nClarify offline usage of sessions and keys and implement\nimplement CryptoSession to support additional crypto use\ncases.\n\nChange-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc\n"
    },
    {
      "commit": "7069bdf24a9e3393479368e83f9009817869c33c",
      "tree": "2e4698654f2d6d6d9d50fc527ec00f7480c84296",
      "parents": [
        "2f711486c2b35610fb8e114968263e6660cdb683"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 01 14:28:31 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 01 14:28:31 2013 -0700"
      },
      "message": "Fix seek in response to OnPrepared() for HLS content\n\nChange-Id: I0e52352845398a4db074e939487f6f6de94bd523\nrelated-to-bug: 8225122\n"
    },
    {
      "commit": "997594088164cfb33c1cb8c376884346fbf1e7ae",
      "tree": "773cf80cca3c6ce141b453ddef7569d02ecf95db",
      "parents": [
        "31215f2f341bae9d1f6db6368b2b1539e077d571"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 01 14:28:31 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 01 14:28:31 2013 -0700"
      },
      "message": "Fix seek in response to OnPrepared() for HLS content\n\nChange-Id: I0e52352845398a4db074e939487f6f6de94bd523\nrelated-to-bug: 8225122\n"
    },
    {
      "commit": "ad2bb2dd233b7220e29d2dafa3106ad498f3aea3",
      "tree": "825fc81526a4421833955121582bd715c4962897",
      "parents": [
        "ac51135d48ded504af38f0bc7fda47823419332f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 27 13:48:36 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 27 14:44:20 2013 -0700"
      },
      "message": "Fix valgrind error.\n\nThe constructor calls reset(), which in turn calls stop(), which then\naccesses mCaptureTimeLapse before it has been initialized.\n\nChange-Id: Ia94ac740b9bd1a0389c72647a5639dd25320d92c\n"
    },
    {
      "commit": "59ca8040a0cfb0324c6be7dded74d02e9f5cf6e8",
      "tree": "26bb9e7f0263f8230b3d5dd70c38df657b392d78",
      "parents": [
        "bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 27 13:48:36 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 27 14:44:20 2013 -0700"
      },
      "message": "Fix valgrind error.\n\nThe constructor calls reset(), which in turn calls stop(), which then\naccesses mCaptureTimeLapse before it has been initialized.\n\nChange-Id: Ia94ac740b9bd1a0389c72647a5639dd25320d92c\n"
    },
    {
      "commit": "5beac28a34e557251bd4bbd77a6d9303a69d4319",
      "tree": "bddefa894193bdb535c5f0090e7edab2e3d9eca4",
      "parents": [
        "3a29ea87c8fdcd45987bcc9cd2b68961ac971d27"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "message": "Load crypto plugins from additional shared libraries\n\nCurrently crypto plugins are expected to be in libdrmdecrypt.so.\nWhen there are multiple plugins supporting different schemes,\nthis approach requires source code integration across\nvendors which is unmanagable.  Also, for integration with\nMediaDrm where the crypto keys are obtained from a drm server,\nthe MediaCrypto plugin needs to interoperate with the MediaDrm\nplugin. This change allows {MediaCrypto, MediaDrm} pairs that\nare logically related to be implemented in a common shared\nlibrary.\n\nChange-Id: I7f6638f29171f91609fc2d944396365568630b56\n"
    },
    {
      "commit": "bafb682ec7f51486e751fea954169deb91846063",
      "tree": "88d3be30ac8e26843929fcda2fb3d2535c313ea4",
      "parents": [
        "9e36b5a5c630c303b5007fdeb5c0df83b953adf4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "message": "Load crypto plugins from additional shared libraries\n\nCurrently crypto plugins are expected to be in libdrmdecrypt.so.\nWhen there are multiple plugins supporting different schemes,\nthis approach requires source code integration across\nvendors which is unmanagable.  Also, for integration with\nMediaDrm where the crypto keys are obtained from a drm server,\nthe MediaCrypto plugin needs to interoperate with the MediaDrm\nplugin. This change allows {MediaCrypto, MediaDrm} pairs that\nare logically related to be implemented in a common shared\nlibrary.\n\nChange-Id: I7f6638f29171f91609fc2d944396365568630b56\n"
    },
    {
      "commit": "aab193b107e302e145b5c3d6e6c87f92ac296186",
      "tree": "0150308f9b4bf86e2ea73a23da6720f5fd989c3c",
      "parents": [
        "42404e895c182df761cbd2473d172e58e763ac89",
        "cc82dc6d500023eba6048616301a4b12682458db"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 20 16:48:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:48:55 2013 +0000"
      },
      "message": "Merge \"Implementing MediaDrm APIs\" into jb-mr2-dev"
    },
    {
      "commit": "de5cdcae51d3afd9b14e818087be14288c0c6b8c",
      "tree": "0f074d6208d3d3a15e961234de9405d21cdd8a5d",
      "parents": [
        "96954c00cc8887f216ba84e126ab4a1100f348b4",
        "441a78d5e224e0d67f9b52fa9adc795c6944159b"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 20 16:48:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:48:55 2013 +0000"
      },
      "message": "Merge \"Implementing MediaDrm APIs\" into jb-mr2-dev"
    },
    {
      "commit": "8fb6f96e1cc246bc5630e1f5a0eb90f5459331b7",
      "tree": "50f65eabb52b7f241baa88268178021bcff5a156",
      "parents": [
        "27d11e240dad419f08e7edcd0857ee7806c65d76",
        "33da402287605e40e189289b11a08b8f5d515818"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "message": "Merge \"remove uses of Surface in favor or IGraphicBufferProducer\" into jb-mr2-dev"
    },
    {
      "commit": "a32fd0e2c7489fa28055595d7c67d857d32566a5",
      "tree": "00863cd60d10d9725070356413f882f8c95374ab",
      "parents": [
        "9dd73dd2634d41766e6cfd67edd96a018a8ad7d7",
        "99617adda9bc46c43f511f0940bc735c73de61de"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "message": "Merge \"remove uses of Surface in favor or IGraphicBufferProducer\" into jb-mr2-dev"
    },
    {
      "commit": "cc82dc6d500023eba6048616301a4b12682458db",
      "tree": "1f36f887af92cb4bee147e962b85ce10f35d587a",
      "parents": [
        "c93484ab9fdf044fd32f2388a3ce29040d2ba319"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 08 10:18:35 2013 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 13 13:39:48 2013 -0700"
      },
      "message": "Implementing MediaDrm APIs\n\nChange-Id: I9ff8eeb7d0c383b5c0c68cd54eb54ce7d2d22fe6\n"
    },
    {
      "commit": "441a78d5e224e0d67f9b52fa9adc795c6944159b",
      "tree": "855eed2e1ee757c6019b6da9137d659fdc20fdcf",
      "parents": [
        "c148e7a671c289f82f6ca40e29defcc43e1c6d0b"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 08 10:18:35 2013 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 13 13:39:48 2013 -0700"
      },
      "message": "Implementing MediaDrm APIs\n\nChange-Id: I9ff8eeb7d0c383b5c0c68cd54eb54ce7d2d22fe6\n"
    },
    {
      "commit": "33da402287605e40e189289b11a08b8f5d515818",
      "tree": "440b60a701b5d4e4d93293732cf5a4a8bef3727c",
      "parents": [
        "b05526fc3c0ccc9f9310830074e863212af433e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "message": "remove uses of Surface in favor or IGraphicBufferProducer\n\nChange-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57\n"
    },
    {
      "commit": "99617adda9bc46c43f511f0940bc735c73de61de",
      "tree": "67b71170ce74451ec384346407629d54cd7e403f",
      "parents": [
        "3eca0ac4428aa74f197a2a498d84490c4e30f11d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "message": "remove uses of Surface in favor or IGraphicBufferProducer\n\nChange-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57\n"
    },
    {
      "commit": "9dffd24e00a1b2abd5e2dcc2366c0327ec3701b8",
      "tree": "593867dda4cf659baf90444ddd152cba2d68c86c",
      "parents": [
        "9ab909bff49b2eccde1b028901717c193ef723af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 11:01:43 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 13:44:58 2013 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit f4edf442741886cdbe071e2d15f6e6247269f7c5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 09:09:18 2013 -0700\n\n    Pass additional flags to the sink, use TCP by default in wolfiecast mode.\n\n    Change-Id: I41e11a2375d4199656e45c4f149d8441d0016092\n\ncommit 6302602ed280a38287f507159abfb40a1da38c5a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 08:51:58 2013 -0700\n\n    tweaks\n\n    Change-Id: Ie29e422d7258be522f4bb1f6c5afcf74c937e547\n\ncommit a38a860e4979ba563cadbaafa21b084439449d26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 16:57:43 2013 -0700\n\n    Report average lateness all the way from NuPlayerRenderer...\n\n    Change-Id: I2e7700703ae656515e44b9c25610d26c75778111\n\ncommit a7d49b11675ea88be4029dd8451d1649db94571d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 14:54:19 2013 -0700\n\n    Make TimeSyncer smarter, enable TunnelRenderer\n\n    Change-Id: I27377a60cd8feb01589da456967fddd34532c20e\n\ncommit 0f214c8ef68179f7b61512c37040939554013151\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 15:57:56 2013 -0800\n\n    convert source timestamps to sink timestamps, report lateness.\n\n    Change-Id: I051a60fbbceca2f7b508ae3dac6e01e402bae39e\n\ncommit 04a4f8e16bad09157b5615a5fa45310438955832\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 09:00:28 2013 -0800\n\n    Sync time between sink and source.\n\n    Change-Id: Ie8b4d75c957aa48310e7c81d1279761b9f821efe\n\ncommit aebe20e6184e3636a99082f8ece08e708015cb8d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Mar 6 09:03:12 2013 -0800\n\n    play with back pressure\n\n    Change-Id: I51eb69257e6a79e76f5f9c75ff99d8adbd083947\n\nChange-Id: Ifdf57228667fed7fc71c5090a2c3f7cea1037c5c\n"
    },
    {
      "commit": "d5e56231a598b180a1d898bb7dc61b75580e59a4",
      "tree": "7bb3e14a2c8212813d6e33cb3c7a8da2470d58f5",
      "parents": [
        "e6800cea0678dbc0bf697b44c3e4548b0253085c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 11:01:43 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 13:44:58 2013 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit f4edf442741886cdbe071e2d15f6e6247269f7c5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 09:09:18 2013 -0700\n\n    Pass additional flags to the sink, use TCP by default in wolfiecast mode.\n\n    Change-Id: I41e11a2375d4199656e45c4f149d8441d0016092\n\ncommit 6302602ed280a38287f507159abfb40a1da38c5a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 08:51:58 2013 -0700\n\n    tweaks\n\n    Change-Id: Ie29e422d7258be522f4bb1f6c5afcf74c937e547\n\ncommit a38a860e4979ba563cadbaafa21b084439449d26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 16:57:43 2013 -0700\n\n    Report average lateness all the way from NuPlayerRenderer...\n\n    Change-Id: I2e7700703ae656515e44b9c25610d26c75778111\n\ncommit a7d49b11675ea88be4029dd8451d1649db94571d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 14:54:19 2013 -0700\n\n    Make TimeSyncer smarter, enable TunnelRenderer\n\n    Change-Id: I27377a60cd8feb01589da456967fddd34532c20e\n\ncommit 0f214c8ef68179f7b61512c37040939554013151\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 15:57:56 2013 -0800\n\n    convert source timestamps to sink timestamps, report lateness.\n\n    Change-Id: I051a60fbbceca2f7b508ae3dac6e01e402bae39e\n\ncommit 04a4f8e16bad09157b5615a5fa45310438955832\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 09:00:28 2013 -0800\n\n    Sync time between sink and source.\n\n    Change-Id: Ie8b4d75c957aa48310e7c81d1279761b9f821efe\n\ncommit aebe20e6184e3636a99082f8ece08e708015cb8d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Mar 6 09:03:12 2013 -0800\n\n    play with back pressure\n\n    Change-Id: I51eb69257e6a79e76f5f9c75ff99d8adbd083947\n\nChange-Id: Ifdf57228667fed7fc71c5090a2c3f7cea1037c5c\n"
    },
    {
      "commit": "48af7e8dd40883d6154e7029d9500072b551b5fa",
      "tree": "ce8b71d67a3313dc19c0691bc1b26d1244a106b4",
      "parents": [
        "68e6e24cb6cdd66c2209774c4871a2c47e8bbc8b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    },
    {
      "commit": "ceb388d6c03c38b96dc41c0ea4804b749aa077c4",
      "tree": "0639ba70ce330094a9fa71ba4577eece6d4dadb1",
      "parents": [
        "0894bfb78b7872570b94d0b8d23ebbf6a8b51d35"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    }
  ],
  "next": "b1e7cd156ca3e1747374e0d20cdd1ce467210453"
}
