)]}'
{
  "log": [
    {
      "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": "da7581b7b61b84f15e8d671c86fd117c322b009e",
      "tree": "61fb39ca1eaa0a5b8a71d70683f32d238a8e74e7",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "a514bdb58b5de4986679f72b7204b4764f7a2778",
      "tree": "84b1ebf0c2b500bfb4995e373f8fee5b63b6c9fd",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 21 09:27:30 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 17:14:04 2010 -0700"
      },
      "message": "Added support for audio sessions in MediaPlayer and AudioTrack.\n\nAudio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.\n\nChange-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640\n"
    },
    {
      "commit": "0a5baa9b411fe086013d2a5e9126ed63fbad046c",
      "tree": "d2f568256c27d816aa5cac3ef365ebe460536a3a",
      "parents": [
        "28b6844dec4297b16777fd45fd77ff33aa495de2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:17:50 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:16:57 2010 -0700"
      },
      "message": "Switch stagefright\u0027s approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.\n\nChange-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2\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": "2db8455d8f4468a637109d31f319ce02d9d743ec",
      "tree": "7f3418b24ec0779af3ab25202eb5063e860610d5",
      "parents": [
        "8566a635aa4bf6d2e908f0bc64d4fb8917025b58"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:19:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:52:43 2010 -0800"
      },
      "message": "API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.\n\nrelated-to-bug: 2393577\n\nOriginal change by Andrei Popescu \u003candreip@google.com\u003e\n"
    },
    {
      "commit": "dd172fce75b2a1c3cb3a5d3b3bbb5020b1ae8675",
      "tree": "538c2d1505e11dbb55aa0839c3181d96e812868c",
      "parents": [
        "97419ed670a12f48a7609673da8ee5dc0376f075"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jan 15 18:13:58 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jan 15 18:28:16 2010 -0800"
      },
      "message": "Media server death nodification\n"
    },
    {
      "commit": "9563e4284869dfb2d4c8d33bae313fcf7f755afb",
      "tree": "38abf4cc60ceebaf8b3548f28978fb92eb945a74",
      "parents": [
        "6d710778613dbae8956b70fd179cb41ca3ac3248",
        "10dbb8e97e7a81ca4867663b5517f048820b3094"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 06 10:03:12 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 06 10:03:12 2009 -0700"
      },
      "message": "am a97402e1: am c39d2e3c: Music visualizer support hack. This currently assumes 44k stereo (won\\\u0027t crash on other formats, but won\\\u0027t give the correct results either), and links statically with libspeex to get FFT data, increasing the size of libmedia by about 45kb.\n\nMerge commit \u0027a97402e1cbadbdc874afa9ffdbd23f1c62fb8177\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027a97402e1cbadbdc874afa9ffdbd23f1c62fb8177\u0027:\n  Music visualizer support hack.\n"
    },
    {
      "commit": "10dbb8e97e7a81ca4867663b5517f048820b3094",
      "tree": "8a85a3f2c3547afc82a7ab1f92bed562ab980102",
      "parents": [
        "defd1bd08aaf7edc1918108419cf3f9d185c22f9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sun Sep 20 10:42:13 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 06 08:51:16 2009 -0700"
      },
      "message": "Music visualizer support hack.\nThis currently assumes 44k stereo (won\u0027t crash on other formats, but won\u0027t give the correct results either), and links statically with libspeex to get FFT data, increasing the size of libmedia by about 45kb.\n"
    },
    {
      "commit": "ee678acd88cbec07c08cd5a36bb98bb99a56371f",
      "tree": "2e3121ae13bf326d4b46a12dff92f359e43d856d",
      "parents": [
        "0b183338e6ccf86a43c9c36e86abacbedb94bab0",
        "387eac4b282b9b403af772f92bcad469ae69177f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 16 16:22:13 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 16 16:22:13 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "387eac4b282b9b403af772f92bcad469ae69177f",
      "tree": "474506fddfdf9051c60d26f830be072f5f37b2ba",
      "parents": [
        "195c300232df0768dbfcb35dd6877a8ad370422a"
      ],
      "author": {
        "name": "Ravi K Yenduri",
        "email": "yenduri@pv.com",
        "time": "Sun Jun 21 17:19:58 2009 -0500"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 16 15:14:40 2009 -0700"
      },
      "message": "Update comment in mediaplayer.h.\n\nWhen sending a MEDIA_INFO message, the second integer is supposed\nto be an \"info\" code instead of an \"error\" code.\n"
    },
    {
      "commit": "6d9d4ac96142880c35d6bee520347a9db74f92ed",
      "tree": "f7565b32ee2d59d5098dd165658c0aefa65f1fc4",
      "parents": [
        "b206b934737c73b2ad243ebcad53f110d464819e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "message": "donut snapshot\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": "4710a1f6c9800dae90f9e2702ba2b5b54c095eae",
      "tree": "094cd3463052fa129012540ce0073705cc62866f",
      "parents": [
        "2a7d5b3c1a3749db7c4ace34bf1253c44967e843",
        "660951867e959ebe98612742ef1f72d33ea7e9a3"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 12 11:43:55 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 12 11:43:55 2009 -0700"
      },
      "message": "am d670b8c6: Merge change 3981 into donut\n\nMerge commit \u0027d670b8c61ebd13324ac21bdbc08d8a02fc0a765a\u0027\n\n* commit \u0027d670b8c61ebd13324ac21bdbc08d8a02fc0a765a\u0027:\n  Removed trailing whitespaces.\n"
    },
    {
      "commit": "660951867e959ebe98612742ef1f72d33ea7e9a3",
      "tree": "76d9e5cf11c5aab642f479bfb5e5a28acd834e08",
      "parents": [
        "9747c5a1f5e51fab72169767972bf55f73711000"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jun 11 16:33:49 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jun 11 16:54:48 2009 -0700"
      },
      "message": "Removed trailing whitespaces.\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": "1af452f333664e8b0a61d96a9b3bb682d8b9a00f",
      "tree": "47fe626c09316b14f5faa3db3553d1b6330c2c67",
      "parents": [
        "859d22fb31792fd9c2c77fba9be3378774b2cfe9"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "",
        "time": "Tue Mar 24 18:45:22 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 18:45:22 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@140868,140868\n"
    },
    {
      "commit": "7dc112527d77b675d5c0451502b33fe2c552a79e",
      "tree": "47fe626c09316b14f5faa3db3553d1b6330c2c67",
      "parents": [
        "2c22aeb65e801f663a754d043062f85e49f77739"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "",
        "time": "Tue Mar 24 18:45:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 18:45:20 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@140866,140866\n"
    },
    {
      "commit": "87e445b4bed2931b9033aff68878cd4b392e1fab",
      "tree": "2a6b28c0a3b73ccb81dba2d78681a63b482c5542",
      "parents": [
        "1179bc9b0e3d17c984e8f4ad38561c049dd102fa"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:54 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:54 2009 -0700"
      },
      "message": "auto import from //branches/cupcake_rel/...@141571\n"
    },
    {
      "commit": "65e731f393f704eedab6fbe0af7f8a580c8d4617",
      "tree": "4130ea5fa8057abe670e7eded32794615b53b49f",
      "parents": [
        "8365529381f6284f2d59dcc38e26f73adeec9c67"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "message": "auto import from //branches/cupcake/...@137873\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"
    }
  ]
}
