)]}'
{
  "log": [
    {
      "commit": "f95ce6452d87316b8f5df6692537bd039377f349",
      "tree": "fc1d592d782178318a034d565ef087e74e159614",
      "parents": [
        "fd150a8e03cdd8462eafd68f4a4231aa52f0e5a1"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Aug 02 14:42:46 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Aug 02 14:42:46 2010 -0700"
      },
      "message": "Allowing useStillCameraForTimeLapse to be set through MediaRecorder.java\n\nThis will allow apps to make the decision of whether to use still image mode or\nvideo mode for time lapse capture.\n\n- setTimeLapseParameters now takes in a useStillCameraForTimeLapse parameter.\n- Added support in StagefrightRecorder for passing through this parameter.\n\nChange-Id: Iafbcb76f9a7903118ea5eb822c81008619630f03\n"
    },
    {
      "commit": "30e3eb619f02cf36e6d1d31be528d6be552bb3e2",
      "tree": "dea281b68cbb9b22f33b764fe7f46650b27223d9",
      "parents": [
        "3768ac8b7a7713c2dd1b7cdc70ddf760003d5e53",
        "6e5ea76da60c253dee7f07ecf3503ad43a0aff92"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 30 14:33:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 30 14:33:05 2010 -0700"
      },
      "message": "am e915b0ef: am d973a533: Merge \"Lower the lower bound for max file duration check\" into gingerbread\n\nMerge commit \u0027e915b0ef5d574022dfeffc9b2b61e21c1433c89c\u0027\n\n* commit \u0027e915b0ef5d574022dfeffc9b2b61e21c1433c89c\u0027:\n  Lower the lower bound for max file duration check\n"
    },
    {
      "commit": "489d78dcde35ef7ecaed5fac5b777fabfcd0525b",
      "tree": "a0a617a80f6eb19cb4f406dbdf3b26b5803f4b8a",
      "parents": [
        "9da2070b6d6d20550de7da61478c325f0928d020",
        "e4fc55de48241c5fb4c4b9d652fd2d4cd0b71138"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 30 14:28:26 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 30 14:28:26 2010 -0700"
      },
      "message": "Merge \"Lower the lower bound for max file duration check\" into gingerbread"
    },
    {
      "commit": "e4fc55de48241c5fb4c4b9d652fd2d4cd0b71138",
      "tree": "25ec9aaddfc632f3ccb86b889a1a647da4c6d1d1",
      "parents": [
        "5caff27f4683d5e444f327a5beec15d9b8c7f252"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 30 12:41:59 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 30 12:41:59 2010 -0700"
      },
      "message": "Lower the lower bound for max file duration check\n\n- This fixed a CTS test where 200 ms is being used\n\nChange-Id: Ib598b7b94be54e98a96703c58c5f244bc379cf7d\n"
    },
    {
      "commit": "9da2070b6d6d20550de7da61478c325f0928d020",
      "tree": "f1548891fab33ca03923f70cf25a2ffeab50be82",
      "parents": [
        "3be9523784cc4038f601e510faee595117cdacb3",
        "efe6039f71e9bac2138003b3287e94a7ab7e5c55"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "message": "resolved conflicts for merge of 27eecb70 to gingerbread\n\nChange-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1\n"
    },
    {
      "commit": "bc286dce1af6670824fba4167e0750b631168d72",
      "tree": "f6d30ddc5cee2a6562bb510d7bacf20806b9f9bb",
      "parents": [
        "c4e47d1e81c4e4403663cb911e98dbf3ada9942c",
        "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "message": "am 0c51c98f: am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027\n\n* commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06",
      "tree": "7c3ae3eecc16c50c794aff141a89b14942117364",
      "parents": [
        "0895d83cb62d269468e64a00e9e89fa7697f2f84",
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "message": "am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027 into gingerbread-plus-aosp\n\n* commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "68335fdd6e9c1d622384612605d6952503cb7fd0",
      "tree": "94e9982f93be7339bde4d8b9336f9968f5509efd",
      "parents": [
        "e32283b15bbd60179424bdc740a4e4932da4c61e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:41:35 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "01cff464978aa0f749f42650180b45ea56cb17de",
      "tree": "a31c8e61281d0bbcbec93d0ab05368f73ab85994",
      "parents": [
        "ccaa41429d2afc47f0fb828a0146a1b1936188fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "3722abe1a6ae53034b9dee6b12e8513804622fd5",
      "tree": "976d1a36aa3b20c864dab16448a82c70a2ca33ee",
      "parents": [
        "ed0de3c123aaa86147993721d4794648a65aab75",
        "e8b0071c1656e64bd941debd5dad2ac8b63bbafc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 28 12:02:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 12:02:59 2010 -0700"
      },
      "message": "am cb51115c: am 5587bb7e: Merge \"Interleave the audio and video by default - default interleave duration is set to 1 second\" into gingerbread\n\nMerge commit \u0027cb51115cca81ba47d00aa344f6ed16d1056b056b\u0027\n\n* commit \u0027cb51115cca81ba47d00aa344f6ed16d1056b056b\u0027:\n  Interleave the audio and video by default\n"
    },
    {
      "commit": "f01528f435e6b1f02d118fcd8305a148c27a89f1",
      "tree": "82d72c57f4f99358d361242029396ef133bd2062",
      "parents": [
        "542db5d438988360d491a5add1040a2df9aa90c9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 28 10:08:03 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 28 10:08:03 2010 -0700"
      },
      "message": "Interleave the audio and video by default\n- default interleave duration is set to 1 second\n\nThis can dramatically reduce the memory usage\nby the MP4 file writer.\n\nChange-Id: Ia3ff202cabfcd2d3f183065d31e4596617c2dded\n"
    },
    {
      "commit": "e4e0a6994d39c4a7cba09c5fff442b2dca1df8f8",
      "tree": "545e3cbc6bbd5c6b78a5adb2d00eeb5b16abb6a4",
      "parents": [
        "55cb2b8319e6b36e88658de121c534e95cd240b4"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Jul 20 21:33:31 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Jul 22 17:02:12 2010 -0700"
      },
      "message": "Allowing setting of time lapse parameters through MediaRecorder.java\n\nadded setTimeLapseParameters() to MediaRecorder.java and SetParameter support\nin StagefrightRecorder to allow enabling time lapse and setting the corresponding\nparameters.\n\nChange-Id: I509040aa71f8d3fc37337b0894a81d9c0fd7a40a\n"
    },
    {
      "commit": "71ff94cb52874e42dede3c6bc4b86757b72cf0b1",
      "tree": "dc47a5d309669d92854762df8fdc948668228ebf",
      "parents": [
        "932e0a11d74d5e236ccef9ee314442385c3d4e9d",
        "552f4053c194770a5c9b37825f222031548dc5a8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 09:52:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 21 09:52:17 2010 -0700"
      },
      "message": "am 34161132: am 7070b365: Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nMerge commit \u002734161132030254bac7dd64c9713832e2f961a061\u0027\n\n* commit \u002734161132030254bac7dd64c9713832e2f961a061\u0027:\n  Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n"
    },
    {
      "commit": "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
      "tree": "ce966d62f6fbb94178763ec53760f6961ffffd58",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "932e0a11d74d5e236ccef9ee314442385c3d4e9d",
      "tree": "5e9ed9f7bb7138c3ac78c52bc3c07336e5427412",
      "parents": [
        "d403f73c6db493a067d529e932d699ce461ae1d8",
        "65e334b9448689e12400bae6a739f0513f72d428"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 16:55:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 20 16:55:12 2010 -0700"
      },
      "message": "am 9049fe60: am d7514ec6: Merge \"Progress status notification\" into gingerbread\n\nMerge commit \u00279049fe60c20640bd606741c8f45f3f781a1684f5\u0027\n\n* commit \u00279049fe60c20640bd606741c8f45f3f781a1684f5\u0027:\n  Progress status notification\n"
    },
    {
      "commit": "7a42770f47225483a885b168d05e81b6a81189c0",
      "tree": "f1d340445f03640a15a61f259d6c63d06e0cd61b",
      "parents": [
        "385695764189477e963a749a5f107f6eaeb9c5f2"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Jul 20 11:37:17 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Jul 20 11:37:17 2010 -0700"
      },
      "message": "Use software encoder for time lapse capture.\n\nChange-Id: I7f60eb1af95590c84b0cd98134f5a5a8963338dd\n"
    },
    {
      "commit": "faed5cd124a54b8db3429f4c26b3220bbec4c8bb",
      "tree": "f0d4576711cdcc0af89e9f509d5a94eae995bdeb",
      "parents": [
        "59f566c4ec3dfc097ad8163523e522280b27e5c3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 19:08:20 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 08:39:57 2010 -0700"
      },
      "message": "Progress status notification\n\n- Keep track of per-track progress\n\nChange-Id: Ibd36f0e8c78581928c8aa2f5e23c5e7e0615c2cc\n"
    },
    {
      "commit": "65e7e6facda89927cb26594b3b65ae81b3235ebc",
      "tree": "89129cc7a87973b4218e3c899ec439a8ac48938b",
      "parents": [
        "6113efbd1e5f7495b80bf64f7ee90a571e3cf6a6"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Jul 12 09:17:14 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Jul 19 18:22:56 2010 -0700"
      },
      "message": "Adding support for timelapse capture using still camera\u0027s takepicture.\nAlso moving entire implementation into a new class CameraSourceTimeLapse\nwhich inherits from CameraSource.\n\nFor timelapse capture using still camera, we start a thread which runs a\nloop in which it calls Camera::takePicture() and then sleeps until the next\nframe should be captured.\nThe function dataCallback() handles the callback from the camera with the\nraw image data. This function copies the data and creates an artificial\ntimestamp corresponding to one frame time ahead of the last encoded frame\u0027s\ntime stamp. It then calls dataCallbackTimestamp() of the base class which\nwill think that it recieved the frame from a video camera and proceed as usual.\n\nFor moving the implementation to the subclass CameraSourceTimeLapse, added a\nfew virtual functions to CameraSource, which do the current thing for the base\nclass, but specialized things for CameraSourceTimeLapse.\nE.g. startCameraRecording() in the base class just calls mCamera-\u003estartRecording(),\nwhile in CameraSourceTimeLapse it may start a thread for the still camera case.\n\nChange-Id: Ib787f24bd2e1f41681513f0257e1c4ca10a2b4de\n"
    },
    {
      "commit": "cbcc684555a8774b21ba04c09b2f5cee8c88453a",
      "tree": "e6ba409fcc9e9076650877112ae2806470267823",
      "parents": [
        "8065e2056073808716db32136d7acfd50eeab924",
        "b2975065465192dd46bc3eadabc00b9d855eb4e6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 11:54:10 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 11:54:10 2010 -0700"
      },
      "message": "am b068b47c: am d6a85a21: Merge \"Support user-supplied timescales for authoring\" into gingerbread\n\nMerge commit \u0027b068b47c6d0214256116a0c661740bddf7acc18c\u0027\n\n* commit \u0027b068b47c6d0214256116a0c661740bddf7acc18c\u0027:\n  Support user-supplied timescales for authoring\n"
    },
    {
      "commit": "8f5f2fcee5c12d08df71d17017410c50951fc2e3",
      "tree": "4cfeb1085495bacbc93775b43e0022fed69ca993",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 02 11:39:06 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 14 17:29:17 2010 -0700"
      },
      "message": "Support user-supplied timescales for authoring\n\n- also, change all the real time unit to microseconds in MPEG4Writer\n\nChange-Id: I260f512f2eb670ade7b8858a56335a5d639de756\n"
    },
    {
      "commit": "f6266bb1912255e92e590fcb6aedb719898545da",
      "tree": "1729da3d544c2429961cd734c5cfba5f750ca33f",
      "parents": [
        "4714b0766ecf48f09f39b4781a5c4deafc092d49",
        "4999e983c8f2f0060c14f2d7c5488e7f553985b4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 13 11:04:27 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 11:04:27 2010 -0700"
      },
      "message": "am f6bdc764: am 9d8bea11: Merge \"Initial checkin for software AVC encoder\" into gingerbread\n\nMerge commit \u0027f6bdc764b7a21f8037504e1dc4f81227ea2bedea\u0027\n\n* commit \u0027f6bdc764b7a21f8037504e1dc4f81227ea2bedea\u0027:\n  Initial checkin for software AVC encoder\n"
    },
    {
      "commit": "29a84457aed4c45bc900998b5e11c03023264208",
      "tree": "de114a11a9ec702c45a4a1683fa8c0024f49df8d",
      "parents": [
        "a480a6f7f204fa1712e1484a6ba9e6c8772fa110"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 02 17:44:44 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 13 10:58:20 2010 -0700"
      },
      "message": "Initial checkin for software AVC encoder\n\n- Since the software encoder assumes the input is YUV420 planar,\n  color conversion needs to be added when the input color format\n  does not meet the requirement. With this patch, I only added\n  a single color conversion from YUV420 semi planar to YUV420\n  planar. We can add more as we go.\n\nChange-Id: If8640c9e5a4f73d385ae9bb2022e57f7f62b91b9\n"
    },
    {
      "commit": "004a77836d1963847acd20ea684e2ffe48aa3f19",
      "tree": "e5f597eb2dcf444278314f556005186171ebcb46",
      "parents": [
        "7f53a190463274096155704276f3002c1620a364",
        "40ad2941b4dcc7410bbcc7a2a138983933915f98"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 09 09:20:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 09:20:03 2010 -0700"
      },
      "message": "am 4f440632: am 929642ee: Add runtime dumpsys support for media recorder client\n\nMerge commit \u00274f4406322dafd6e128b437edbc541327f0b38d04\u0027\n\n* commit \u00274f4406322dafd6e128b437edbc541327f0b38d04\u0027:\n  Add runtime dumpsys support for media recorder client\n"
    },
    {
      "commit": "b914122eb9cb54bbeae4ec03bfebb194aecdccbd",
      "tree": "92968131eb8b5cd486338c484f743d67d48ba2c5",
      "parents": [
        "cb28102ad3976339ec445afbcb4130f2991b38d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 11:16:11 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 21:25:55 2010 -0700"
      },
      "message": "Add runtime dumpsys support for media recorder client\n\nChange-Id: I4c8a81720f3be2db54678a7e84fe12849255046b\n"
    },
    {
      "commit": "6506bd2be256cdebc69324714c5b26c767981046",
      "tree": "68a4a39aafbe9aaa9d05d30735651c9a0087d10e",
      "parents": [
        "bf21177ccede8f01c0da0bd53392a289a5a84462",
        "14eb28444b40d76d490a184a27acbc0de95534b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 20:55:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 20:55:40 2010 -0700"
      },
      "message": "am b91881fd: am dacabf97: Merge \"Added Visualizer effect.\" into gingerbread\n\nMerge commit \u0027b91881fdd1608cc922f105ec552b5505da1fecb9\u0027\n\n* commit \u0027b91881fdd1608cc922f105ec552b5505da1fecb9\u0027:\n  Added Visualizer effect.\n"
    },
    {
      "commit": "6c5c25fae5aa68a52c6fa75649dd559a9ca98932",
      "tree": "825ab3a8deb612c3eb8daae783670d1273c64521",
      "parents": [
        "8cafde196d36ab207f35fed89b9c1b9d468abb58",
        "da7581b7b61b84f15e8d671c86fd117c322b009e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "message": "Merge \"Added Visualizer effect.\" into gingerbread"
    },
    {
      "commit": "bf21177ccede8f01c0da0bd53392a289a5a84462",
      "tree": "2c949bac7ef2da54093fa8a47c66fd7c48921bbd",
      "parents": [
        "5bb4809a27ae962be32c67b705671cdada03be00",
        "c61334edce8bd000543fa2c8172b305a887b9124"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 07 15:00:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 15:00:28 2010 -0700"
      },
      "message": "am b3598832: am c4243342: Merge \"Allow application to set two more encoding paramters: video profile and level\" into gingerbread\n\nMerge commit \u0027b35988329ac1a574898db9226039e37e352c57a8\u0027\n\n* commit \u0027b35988329ac1a574898db9226039e37e352c57a8\u0027:\n  Allow application to set two more encoding paramters: video profile and level\n"
    },
    {
      "commit": "145bfe5eb3e08c9689c28f6bf3287a979438b04b",
      "tree": "ba140d50bbed7d0f8cb76fb3bd7920ecc5c4a6ce",
      "parents": [
        "91952e5221d2151e10738d7228575c4afe444f5e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 15:02:14 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 07 12:11:53 2010 -0700"
      },
      "message": "Allow application to set two more encoding paramters: video profile and level\n\nChange-Id: I673e681cefe184d5c556c612c54600a24a2143e5\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": "fc20aab463f527ab3b0664986f0381a86b375884",
      "tree": "699a2eb0d208ebbe5d43e62fd4be162bb46440cf",
      "parents": [
        "633d8eadef0cd975c88e99ba7323f6414db09e3b"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Wed Jun 30 18:51:31 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Jul 01 14:54:36 2010 -0700"
      },
      "message": "Adding timelapse capture from videocamera.\n\nCurrent implementation looks at the timestamps of all incoming frames in\nCameraSource::dataCallbackTimestamp().\nIt drops all frames until enough time has elapsed to get the next time lapse frame.\nWhen enough time has passed to capture the next time lapse frame, the frame is no longer dropped\nand the timestamp of this frame is modified to be one frame time (1/framerate) ahead of the\nlast encoded frame\u0027s time stamp.\n\nChange-Id: I82b9d5e96113dffa6901aac3b8a8ef999ffc1d0b\n"
    },
    {
      "commit": "934da11c4cc598d3dd3b53726c362bcdcc0fd37f",
      "tree": "058428c8625d36f6cacb9259091819c785758d8d",
      "parents": [
        "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 30 12:41:16 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 10:28:38 2010 -0700"
      },
      "message": "Refactor Stagefright::StartMPEG4Recording()\n\n- Also, better error handling\n\nChange-Id: Ic18d08dc6489adf92c6a588efa4baca66429b175\n"
    },
    {
      "commit": "d329e21495eda9dbc531fdd0c26c77f1593ac3f4",
      "tree": "eea2f662a7089684c57020dd5f8313c978172470",
      "parents": [
        "e1e7b764b78f29b93bfe6123483e82381e4ed65d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:29:19 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:44:19 2010 -0700"
      },
      "message": "Added encoding parameters set up for H263 video encoder\n\nAlso:\n- Allowed start() call when encoder already starts and stop() call when encoder has not started yet\n- Handled default value for audio/video sources/encoders and file output format\n\nChange-Id: I03b2f7d3cf570baa0fd011a8c0ad200f2f2a5da1\n"
    },
    {
      "commit": "37047fceba836f341d0108beed0991b0f8dfc543",
      "tree": "6b60725c1d6af1ca91a46961bbecff9b996d07c2",
      "parents": [
        "93d6b102a13afa23bfa80d74c399d93d542e6ad6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 17:06:47 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 15:32:26 2010 -0700"
      },
      "message": "Separate MediaRecorderClient with MediaPlayerClient\n\n- An alternative would be to define a common base class that\n  both MediaRecorderClient and MediaPlayerClient can derive.\n  But since the common code, onTransact() and notify() uses\n  some Binder code, having a common base class may not gain\n  us too much in terms of code reuse.\n\nChange-Id: Ibc06720278ad173fceacff3d267b7060856c6316\n"
    },
    {
      "commit": "93d6b102a13afa23bfa80d74c399d93d542e6ad6",
      "tree": "a91ad03d514d09014e3b771a91d76e85564bf1e5",
      "parents": [
        "658bd258af206ebc662301979482ba4bfd88481a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:04:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 16:20:42 2010 -0700"
      },
      "message": "Provide progress status report during authoring\n\n- Track either the number of A/V frames authored, or the time elapsed\n- Track the completion of the authoring\n- Add multiple camera support for authoring by accepting a camera id parameter\n- Set file type based on the OUTPUT_FORMAT requested\n\nChange-Id: I0f9d31b3b7a8fa43eb53f572410fb0ebd4fa0bb7\n"
    },
    {
      "commit": "2dec2b5be2056c6d9428897dc672185872d30d17",
      "tree": "8ec375d6e5ec4c10c90552d0f6e02462cb598b64",
      "parents": [
        "d4b91aac78e565a135f8ef1bfda7e6317debaf35"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jun 20 08:20:54 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 10:24:35 2010 -0700"
      },
      "message": "Enable passing parameters to the MediaWriter at runtime (at start() call).\n\n- estimate the moov box size for mp4 file writer based on the file\n  size/duration limit and target bit rate.\n- can switch to use 64 bit file offset at runtime\n\nrebased\n\nChange-Id: Ibbe1f57e91ab2605820d5d96e8048d11e5559c53\n"
    },
    {
      "commit": "d3d4e5069e1af0437c4f5a7b4ba344bda5b937af",
      "tree": "596bf02fa9495c743c1069ecb99b5f134afac850",
      "parents": [
        "47c778f4a5fa639b2082fcc74080d33ac847b232"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:55:31 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 21:59:25 2010 -0700"
      },
      "message": "Track maximum amplitude and fix getMaxAmplitude()\n\n- only start to track the max amplitude after the first call to getMaxAmplitude()\n\nChange-Id: I64d3d9ca0542202a8535a211425e8bccceca50fc\n"
    },
    {
      "commit": "608d77b1cf4fb9f63dc861e4e1fa3e80a732f626",
      "tree": "924276911b6c7b1cc35951709030559111aabe2c",
      "parents": [
        "d255a4e04d06796441ae234e8f3a8277578b3446"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "message": "Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\n\nChange-Id: Ieafe75a4550c273ad59b4518d7cd4c0fce0f7cce\nrelated-to-bug: 2370115\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": "99c2a076b4a46762a22bbb4dfbd51d107e0532d9",
      "tree": "0d44a7f577f44a060498a060d64402dd9312e48a",
      "parents": [
        "8fb4e091bc62b15bec2c05adcb50429bb76f1b28"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 16 17:27:46 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 17 11:34:10 2010 -0700"
      },
      "message": "Check and clip some video encoding parameters against media profiles before passing them to video encoder\n\nChange-Id: I69e0e7411806a4ece6c0bf0e02c74eaaf48a17ac\n"
    },
    {
      "commit": "be6ec71af2d12e2a55f2f0b1b77d3fa5d593a1c7",
      "tree": "f5d5c615025aa44ac5bb825fd4388c446366fc53",
      "parents": [
        "8aa8fe5ea704b05d8f0ab3d7bf18de18151f1b50"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:45:35 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:45:35 2010 -0700"
      },
      "message": "Remove hard-coded number of audio channels in AudioSource\n\nChange-Id: I5f362252c25e2251bbfa9818b711ee23b4975248\n"
    },
    {
      "commit": "a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7f",
      "tree": "5c1bfd25a405fcf485512ffb3ced827b3d2ab630",
      "parents": [
        "6f5aae1bcba130d5b8092a19fca3627aa565df56"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 10 12:28:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 11 13:48:48 2010 -0700"
      },
      "message": "Initial checkin for pause and resume control\n\nChange-Id: Ibdcf7bea5fb66baa81878704ba4091dfcfe382ee\n"
    },
    {
      "commit": "9d7f58a7da8502a4174a17ac49fcba6efa35a457",
      "tree": "ed1ad79bb159ed04f2f88d063dbaf28df3bc3201",
      "parents": [
        "36ef8cf54e2bf2f96b8c7f47cd534c00ccb7b64f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 15:57:48 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 21:30:43 2010 -0700"
      },
      "message": "Remove the lock/unlock workaround from CameraService\n\nbug - 2677772\n\nChange-Id: I7c996daad8b3bfc89e9fa2d655dc18c9a5c68f2f\n"
    },
    {
      "commit": "ddcc4a66d848deef6fb4689e64e30cd9bd2684fe",
      "tree": "e34375b6ca52818e02b45af527e68e4b42c92be1",
      "parents": [
        "365a963142093a1cd8efdcea76b5f65096a5b115"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 11:58:53 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 12:30:58 2010 -0700"
      },
      "message": "Remove some hard-coded encoding parameters\n\nChange-Id: I7a8ccd5d57891a6a585c8da2ee53acb094955913\n"
    },
    {
      "commit": "cf7b9c7aae758ac0b99833915053c63c2ac46e09",
      "tree": "2480a2da149f7ba8fe651876a6173947ec8c6a16",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:19:40 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:34:45 2010 -0700"
      },
      "message": "Initial checkin of preliminary rtsp support for stagefright.\n\nChange-Id: I0722aa888098c0c1361c97a4c1b123d910afc207\n"
    },
    {
      "commit": "e136c3bb38e88315bf8797a464ebf2c788296b22",
      "tree": "c978a5038df7663487fa0ae3bbaadb8517d38f99",
      "parents": [
        "64105f956f15969dbe1ec7319f6caa2a984e588b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 17:55:52 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 18:02:52 2010 -0700"
      },
      "message": "Properly handle start code in H264/AVC encoder output\n\n- Some H264/AVC encoder output start code in each output buffer, and others don\u0027t.\n  This patch always strips the start code first so that the sample contains the correct size.\n- Also properly initialize the interleave duration.\n\nChange-Id: I692043ce7e38f0215e1097aad9e847a57907b6e4\n"
    },
    {
      "commit": "7405500bb3b5f8e8e739e344bc9d036c2736fcdf",
      "tree": "2ca617906bf73108b099c40acc646d1d117fb7e2",
      "parents": [
        "956c553ab0ce72f8074ad0fda2ffd66a0305700c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 11:56:06 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 12:01:29 2010 -0700"
      },
      "message": "Workaround for preview frame rate setting and encoder profile and level settings on passion\n1. QCOM camera HAL does not honor the preview frame rate set request. see bug - 2701282\n2. QCOM video encoder has lots of 0-length output buffers if the default level setting is changed. see bug - 2660974\n\nChange-Id: Id01d94bb77dc242c4712d56a91b0d69a96ba6c2f\n"
    },
    {
      "commit": "f0ce2fb0c7bf3a414279e5aba61105f3d9025c0e",
      "tree": "4fea53e0f6cd8068d0342828c267fe734925f2f8",
      "parents": [
        "3c0131f02b6f008321608044c53bccce2ac5f6dd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "message": "Detect and handle premature termination of a recording session\n\nChange-Id: Ifb83b19f3e68580345b23efed5d5956fb81baeb8\n"
    },
    {
      "commit": "d599cd4573b5a2d5914c5040e0565ef866749b77",
      "tree": "f7b799092087742c9cfdda8b21a141f9934cf0ae",
      "parents": [
        "2e90514be4c98b5fa6e1df5f2049a5e005a4263d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 14:57:02 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 10:46:56 2010 -0700"
      },
      "message": "Handle recording file size and/or duration limit\n\nChange-Id: Ib9ed1f3ebd8fef550cc130a7ef11f2905fa9aedc\n"
    },
    {
      "commit": "2e90514be4c98b5fa6e1df5f2049a5e005a4263d",
      "tree": "5a46f118a7f05da39b068489b61209ec63f23034",
      "parents": [
        "45df6a2a25ff36606a5301155d8d97e9bf80d00b",
        "4ac3585263ad59def5cf14756347cecab43e6e67"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:46:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 09:46:11 2010 -0700"
      },
      "message": "am 1d628c5d: merge from open-source master\n\nMerge commit \u00271d628c5d3dd7998b29c339292a2dc391015d0782\u0027 into kraken\n\n* commit \u00271d628c5d3dd7998b29c339292a2dc391015d0782\u0027:\n  Accept media files by file extension in case insensitive manner.\n"
    },
    {
      "commit": "4ac3585263ad59def5cf14756347cecab43e6e67",
      "tree": "89ed91b26ca3e58f51278c0c58e77f56f1a766d8",
      "parents": [
        "a945bfd91aa291fba4d9201ffcb38fce40eab7fe",
        "49475772e0d3c38ab1246deac3d5e5bc6c2bb4e6"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:44:36 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:44:36 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I934cf85c4673f9ca3a9549c2074907ad572310f4\n"
    },
    {
      "commit": "65ae665befd929efd1a7d1c9addac41c699f04b2",
      "tree": "caa60fa0487dcfaa5aa965ee33ac857c1b36b122",
      "parents": [
        "7838252956e00518afce33f9591252c5c8f9dbac"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:07:32 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:08:29 2010 -0700"
      },
      "message": "Remove dummy surface in CameraSource\n\nbug - 2680919\n\nChange-Id: Ia0308cf57fd67058b4dd0e042b3ce97f13df475f\n"
    },
    {
      "commit": "ef9d0cd72e476a4b7556833fb09505a51b626797",
      "tree": "9f2b89e1e148cc6fd333e8f5fa34f3ddb629dc9c",
      "parents": [
        "7837c17063a4c50bc856ba59418516fdab731de7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 11:46:59 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 13:10:02 2010 -0700"
      },
      "message": "Added initial validation on video/audio encoding parameters before/at start()\n\nChange-Id: I1a40dd247202f70e3e5429d74533d349b88f1d54\n"
    },
    {
      "commit": "d8a30349da270715156d3f658b165481ce10cf71",
      "tree": "d39118ad2a4370e9e9a0c5cbc7b1e9de56592733",
      "parents": [
        "71ec1d320e61c490bd3fac172f1d1a206a7198e8",
        "f9325834de1ae004212aec2fd03445b4eebfa766"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "message": "am 71bd9fc8: am 100ef9be: Merge \"Disable vorbis seek when streaming from localhost.\" into froyo\n\nMerge commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027 into kraken\n\n* commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027:\n  Disable vorbis seek when streaming from localhost.\n"
    },
    {
      "commit": "acdd9d0f59c3d8bdc3de80664a609527ec3d21e2",
      "tree": "e75291b6c434b508d278b7f7ccb000863ca1f9df",
      "parents": [
        "3cf4e43cdd391502690c07e08e805aa8ff5db0c0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:18:05 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:31:57 2010 -0700"
      },
      "message": "Disable vorbis seek when streaming from localhost.\n\nChange-Id: Icda523ae1c89e26482f1c1767fe3a8b9222bb30f\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "13aec890216948b0c364f8f92792129d0335f506",
      "tree": "73b6a98aa3a58fc4091129448561403098acb218",
      "parents": [
        "aa9ca29395eebfcfa64e070dc71009b99131769f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 21 16:14:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 05 11:34:43 2010 -0700"
      },
      "message": "Support audio and video track interleaving in the recorded mp4 file\n\nChange-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60\n"
    },
    {
      "commit": "aa9ca29395eebfcfa64e070dc71009b99131769f",
      "tree": "0fdacb56082af39b5b42a99e3e143ff702ceea66",
      "parents": [
        "3830a4f133893e6a77a967c84220d7baf9687f23",
        "050b28a593350047845a45a14cc5026221ac1620"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 04 14:40:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 04 14:40:28 2010 -0700"
      },
      "message": "Merge \"Support AAC recording\" into kraken"
    },
    {
      "commit": "3830a4f133893e6a77a967c84220d7baf9687f23",
      "tree": "f89509fec9d700443a5dbaddfeb5c21334ae9e24",
      "parents": [
        "86f69c1f41dcf4e0826b17ecf7fd71eb353b0782",
        "3cf4e43cdd391502690c07e08e805aa8ff5db0c0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "message": "am 8ea45aad: am e083d0a2: Merge \"Support for Ogg Vorbis decoding in stagefright.\" into froyo\n\nMerge commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027 into kraken\n\n* commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027:\n  Support for Ogg Vorbis decoding in stagefright.\n"
    },
    {
      "commit": "3cf4e43cdd391502690c07e08e805aa8ff5db0c0",
      "tree": "3792432de7d3cf66218e1ed518bfbb32d7d9d4b7",
      "parents": [
        "0b5ba9eeed56a80fed3735f5cd4951477fda79f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:46:42 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:58:16 2010 -0700"
      },
      "message": "Support for Ogg Vorbis decoding in stagefright.\n\nSet the magic property media.stagefright.enable-vorbis to true to use the new implementation instead of the standalon vorbis player for file-based playback. HTTP streaming of vorbis content will always go through stagefright.\n\nChange-Id: Ie3843a99fadb22372f89540d0f8d65196e0c2af8\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "050b28a593350047845a45a14cc5026221ac1620",
      "tree": "118de60bec960d36dd3784439f84e2bc1bba6d9f",
      "parents": [
        "86f69c1f41dcf4e0826b17ecf7fd71eb353b0782"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 22 17:27:04 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 03 15:47:41 2010 -0700"
      },
      "message": "Support AAC recording\n\n- Extend the audio recording to AAC format\n- Add support for setting some recording parameters\n- Add stss box to the meta data in the recorded file\n\nChange-Id: I41167bfd9d70ef9cd33906f8437b39c232b6d3b7\n"
    },
    {
      "commit": "c32cd79d9ad4aba7d959b5b3be7361b4715e6f18",
      "tree": "8a3b2842c196b748fd50d633b038ce33c9d6ee1a",
      "parents": [
        "261741e728f2137f12b28df25c25e96acd942de9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 26 17:48:26 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 28 11:55:47 2010 -0700"
      },
      "message": "Use timestamp from camera driver for CameraSource\n\nChange-Id: I09ddec69997c43b8f17fdd21304c76cb4c5ab8cf\n"
    },
    {
      "commit": "4acdadbd8195f4fb21ff4cb72f09f088097ddf3b",
      "tree": "21b0618032478f7f9e2faa9734a5ebc642a8c55c",
      "parents": [
        "cbe4b2cb591b5e7a6a25ee4ef85aaa61c537fef0",
        "27fde958c8e8e6a998ec7a28d32b0aad97662dee"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 14 12:11:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 14 12:11:12 2010 -0700"
      },
      "message": "am 6852b198: am d3d445b1: Merge \"Use PV_PLAYER to handle RTSP streaming\" into froyo\n\nMerge commit \u00276852b198fbedd9378ed79ca6528a4d6f33b0b677\u0027 into kraken\n\n* commit \u00276852b198fbedd9378ed79ca6528a4d6f33b0b677\u0027:\n  Use PV_PLAYER to handle RTSP streaming\n"
    },
    {
      "commit": "27fde958c8e8e6a998ec7a28d32b0aad97662dee",
      "tree": "8e54465cfbb6b009d840a3d82aeaf3e11e125561",
      "parents": [
        "b9dbba9285fb406bc6eb87779c8bfc405269b6f2"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 13 21:33:26 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 14 08:57:14 2010 -0700"
      },
      "message": "Use PV_PLAYER to handle RTSP streaming\n\nbug - 2594865\n\nChange-Id: Ice5b89b1d53bbc4da033892fe545bdf51ac7267f\n"
    },
    {
      "commit": "fe774a9c3ffe12979e182563b0e922ffc0ad20ef",
      "tree": "2d345e603f5e4803a9003496712098ef457b0cb0",
      "parents": [
        "6e4f79aa417cf7ef9dcf3f4a36ee671886f7f40e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 05 13:25:12 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 09 13:44:28 2010 -0700"
      },
      "message": "Remove legacy NO_OPENCORE code bypass from MediaPlayerService.\n\nChange-Id: I72db73c91673e0d7f1090e3b033ae915337dc16e\n"
    },
    {
      "commit": "fc1c7b940c84793ad262a345af117c482a86acec",
      "tree": "ca280453b8124bb8945a6938072dda402f02002c",
      "parents": [
        "d8ee0c22b1bd5a7f0e37f41d68e868d5077fe92b"
      ],
      "author": {
        "name": "Atsushi Eno",
        "email": "atsushieno+android@gmail.com",
        "time": "Fri Mar 19 23:18:02 2010 +0900"
      },
      "committer": {
        "name": "Atsushi Eno",
        "email": "atsushieno+android@gmail.com",
        "time": "Fri Mar 19 23:18:02 2010 +0900"
      },
      "message": "Accept media files by file extension in case insensitive manner.\n\nChange-Id: I8e246010c96802ae87960797607fc8f8f2ab6031\n"
    },
    {
      "commit": "fe4c6f01646de47d41bbe3aa6d17c6a0daa2b730",
      "tree": "6e4d901b2639b6ddae3f740b287a54c7afcf5b6b",
      "parents": [
        "4bbc0ba371c52951191eff1cba7c1ea5d27ee976"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:56:37 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:56:37 2010 -0800"
      },
      "message": "Fix build. I screwed up a merge.\n"
    },
    {
      "commit": "4bbc0ba371c52951191eff1cba7c1ea5d27ee976",
      "tree": "72753637301e447175ecc320ebf96252f057e230",
      "parents": [
        "05bca2fde53bfe3063d2a0a877f2b6bfdd6052cf"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Mar 01 19:29:58 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:35:20 2010 -0800"
      },
      "message": "Add locking to signal in AudioCache::notify(). Bug 2317844.\n"
    },
    {
      "commit": "1edee16200cb377b7862b30aa5c387d9686023db",
      "tree": "618dd7a1dbd9cbfafe8654451fd9f09e84fc9e65",
      "parents": [
        "d2d947bc8717697e983062147b51b5a0e307b84f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 10:06:32 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 10:06:32 2010 -0800"
      },
      "message": "Add some space and total memory amount to the memory dump from the media server process.\n"
    },
    {
      "commit": "2e8ffaf95bd35358ecd14ddf00cddaf3abefe0a9",
      "tree": "1ea44915709978c008dfeb88767b8997acb6f01e",
      "parents": [
        "1f71e77facd0a2b39f4a0be7fa52850533cc121f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "message": "Implement legacy behaviour for MediaPlayer\u0027s behaviour of starting from the start of the media on a start() call instead of resuming at the current position, if previously reached the end of the stream. Also properly report number of frames played to audio flinger. Finally, delay spawing the queue thread until actually used.\n\nrelated-to-bug: 2453220\n"
    },
    {
      "commit": "3cf7054398a9c0f2f15ce1cd189ed88de42e5ec3",
      "tree": "19f5ba251d17a8616cd039d91e3451dc2f9d024b",
      "parents": [
        "feef608b2ca6beb8098a5f4823085a14e97267ca",
        "b56e992476d1bbeb4021d256852dbe02fc1064f8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 17:04:29 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 17:04:29 2010 -0800"
      },
      "message": "Merge \"Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\""
    },
    {
      "commit": "b56e992476d1bbeb4021d256852dbe02fc1064f8",
      "tree": "d5b87b82f4214e7d15e1ab9585724a62f33b75d5",
      "parents": [
        "328901bdc7c00ab361c5ef16d0d69c94a0458e95"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 16:28:53 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 16:46:40 2010 -0800"
      },
      "message": "Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\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": "b45c62c8e9b05c2703bdae18cc298ae55550db8a",
      "tree": "f5df3f64485d2fc0876ad4d0b583ace386385309",
      "parents": [
        "cb5b4896ebc1ee36b254866f6c9a3f376d68d0ac"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 15:04:31 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 15:04:31 2010 -0800"
      },
      "message": "Fixing AMR recording code.\n"
    },
    {
      "commit": "7d5b8a70c28c0d5746a600467b2887822dbff88e",
      "tree": "886d7439311c8d76f00694123c06d3e21edb54b1",
      "parents": [
        "316f8352846a1470b0ffd1b94ac1ec535922a9f6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 16:59:18 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:20:34 2010 -0800"
      },
      "message": "Implementation of stagefright-enabled MediaPlayerService::decode functionality\n\nrelated-to-bug: 2359268\n"
    },
    {
      "commit": "2dd73b65542c9eeb82bb567098f235349d18b06f",
      "tree": "6d473e627e5c8f78f7380db7b550d7f3d932f66b",
      "parents": [
        "940ad815a1a30abf0268949e3d3937d7e0d672c0",
        "c23f12af0394aa2f6651968a3c8840f1af317aa1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 16:39:24 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 16:39:24 2010 -0800"
      },
      "message": "Merge \"Properly implement asynchronous preparation of media playback.\""
    },
    {
      "commit": "c23f12af0394aa2f6651968a3c8840f1af317aa1",
      "tree": "7a47a6b8aa092410a706328c644e5e08ad901109",
      "parents": [
        "c9c4bef6b7f6793263a1f7659fe3641e856f2573"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 14:40:30 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 16:23:47 2010 -0800"
      },
      "message": "Properly implement asynchronous preparation of media playback.\n\nrelated-to-bug: 2413002\n"
    },
    {
      "commit": "9636054b52f0de54e42b669805883c71a5196d42",
      "tree": "ed4a018a19d34a4bf3ac20f6ffbd1aeb8003d735",
      "parents": [
        "c9c4bef6b7f6793263a1f7659fe3641e856f2573"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 14:37:41 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 14:37:41 2010 -0800"
      },
      "message": "Use Tremor for sim-eng, and Tremolo for other targets.\n"
    },
    {
      "commit": "7ebf475799f6ae1ec8c67983fc1028c487af4c2e",
      "tree": "3d271050eac1a41b84ba265e0b31401317ccdbdc",
      "parents": [
        "5dd69302ffabd260d035fe309374892c7d681926"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 05 18:50:17 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 05 18:50:17 2010 -0800"
      },
      "message": "Revert \"Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\"\n\nThis reverts commit 2f46c062b05254671aec96a98b431f91ae7b270c.\n"
    },
    {
      "commit": "9944aaea3a4f0e7a68b448e666b025b458ecc595",
      "tree": "13f58b0aef98df335b02e2732d80bad7fd74b6c1",
      "parents": [
        "b25e2a948c8b5a96e284069a908c2fddb49efc48"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 11:46:42 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 17:32:56 2010 -0800"
      },
      "message": "Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\n"
    },
    {
      "commit": "6b3359d4669f539c173bfc40809deb8ffde3dd0c",
      "tree": "0eee8468a9d1fa3fa7b960a07e6980a1bed5c03c",
      "parents": [
        "036a38099c9d339d77dc4a1a148db2907a618c2e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 17:16:30 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 17:16:30 2010 -0800"
      },
      "message": "Don\u0027t use MemoryDealer in MetadataRetrieverClient as it\u0027s not necessary.\n\nUse a MemoryHeapBase directly instead.\n"
    },
    {
      "commit": "867d2f6ce668968e463eb86b856d21525f12fd67",
      "tree": "cc65f1c037d980841d0f075e2625ac37ac338f28",
      "parents": [
        "bbe1ed453aa0407237127fb45a30ba8ffd9e0941"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 25 19:00:00 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 14:51:06 2010 -0800"
      },
      "message": "Simplify the MemoryDealer implementation\n\nAt some point the implementation became complicated because of\nSurfaceFlinger\u0027s special needs, since we are now relying on gralloc\nwe can go back to much simpler MemoryDealer.\n\nRemoved HeapInterface and AllocatorInterface, since those don\u0027t need\nto be paramterized anymore. Merged SimpleMemory and Allocation.\nMade SimplisticAllocator non virtual.\n\nRemoved MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)\n\nRemoved a lot of unneeded code.\n"
    },
    {
      "commit": "5561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20",
      "tree": "0a98e19ea4a0721f2cc0e763203a69565eea6e2e",
      "parents": [
        "2db8455d8f4468a637109d31f319ce02d9d743ec"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 27 16:49:05 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 13:04:28 2010 -0800"
      },
      "message": "Support the specification of additional HTTP headers in the creation of a DataSource.\n\nrelated-to-bug: 2393577\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": "342e9cf388cceb807def720e40e8b0a217f4bcaa",
      "tree": "2d443e1de1a10b628016a5ceffb4b5a1cb031dd7",
      "parents": [
        "2dce41ad26cb3e9e15c9e456a84bcf5309548ca0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 19 17:37:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:40:39 2010 -0800"
      },
      "message": "Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\n\nAdded getRenderPosition() API to IAudioFlinger to retreive number of audio frames\nwritten by AudioFlinger to audio HAL and by DSP to DAC.\n\nAdded getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames\nwritten by DSP to DAC.\n\nExposed AudioTrack::getPosition() to AudioSink() to make it available to media player.\n\nRemoved excessive log in AudioHardwareGeneric.\n"
    },
    {
      "commit": "2dce41ad26cb3e9e15c9e456a84bcf5309548ca0",
      "tree": "5a4a3bcffcde8652b6ba8f97117ef30f0816e710",
      "parents": [
        "e7dc360f6fcb4d5348e72ba57e936254216ae399"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 15:30:31 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 26 09:10:33 2010 -0800"
      },
      "message": "Support for audio recording into AMR NB/WB files as well as audio tracks in MPEG4 files.\n\nrelated-to-bug: 2295449\n"
    },
    {
      "commit": "b49676a55e7dce9710e1a10749a26997513c5ceb",
      "tree": "fd59a983caaa979a23990ab62446152a977e198f",
      "parents": [
        "570a3cb7582daa030cb38eedc5eb6a06f86ecc7f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 16:11:15 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 21 10:31:05 2010 -0800"
      },
      "message": "Special-case .wmv and .wma metadata retrieval and playback to use PV if available.\n\nrelated-to-bug: 2381874\n"
    },
    {
      "commit": "7ee8ac94bb1a724a481a7cddf10ce63d35df6296",
      "tree": "23ce4872de0a6bd3cd4dec1de1065173563a16ae",
      "parents": [
        "fc9ba09e3bb368f823d473f5e2bb9aa32dba6289"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 12 09:23:54 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 12 10:27:04 2010 -0800"
      },
      "message": "b/2353646\nFix music visualizations to also work with audiotrack callbacks, which\nstagefright uses. This slightly changes the way the data is stored,\nsince before we were relying on the buffers being written always\nbeing at least 4K, whereas the callbacks are generally for smaller\namounts of data. Now we append all the data to a big circular buffer,\nthen return chunks of that buffer for visualization. When there are\nmultiple things playing at the same time, this will give the wrong\nresult, but (1) that was the case before as well, and (2) will be\nfixed once we start visualizing the mixer output instead of the\nmixer inputs.\n"
    },
    {
      "commit": "67e5a4f6f6879d512a859e5dba92e9beec7a2f91",
      "tree": "db31b16d1b6e0ec2074c76058da7a86c1ea2a9c6",
      "parents": [
        "23d7a43fb32482e2573b7f203fd9dd5a8349b329"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 08 10:57:34 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 08 11:54:36 2010 -0800"
      },
      "message": "Reorganize some of the stagefright implementation related to metadata.\n"
    },
    {
      "commit": "f1350fdb125e1069f867ba13190c5c8e7b64e9b8",
      "tree": "2492c589bdf2c7fe77198514613cf27af89954a8",
      "parents": [
        "b8f92e8fc059693f0b857a185a183f618c4defb0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 04 17:27:37 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 05 09:27:02 2010 -0800"
      },
      "message": "Use stagefright for http streaming if the right property is set.\n"
    },
    {
      "commit": "065c05e72091567632f927d9e5411e277480c1bf",
      "tree": "04dd405ce16315aeab6d9c3c61d56734610e77fe",
      "parents": [
        "3e9549e47e2ccc0e37637854f673654750db289f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 04 15:02:02 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 04 15:02:02 2010 -0800"
      },
      "message": "Make metadata support through stagefright property dependent until it\u0027s ready.\n"
    },
    {
      "commit": "47945ea184f62def4c5a1dd15164cfa3fd286882",
      "tree": "a0c827052b11c3d5d3b6948a810fb3fc71ea3da7",
      "parents": [
        "2e9bf90317802367d189693679bae5ae552f060e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 17 13:31:13 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 17 13:51:37 2009 -0800"
      },
      "message": "Disable HTTP playback and metadata support in stagefright, use PV instead.\n"
    },
    {
      "commit": "733b7729ea462fae9c6899456444e28fef1c757c",
      "tree": "bdae9df47ee74857a0941e17d1cef6b096bab771",
      "parents": [
        "b841f14f8e51f2365945281fbfa54ef6a1b1b5a6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 14:18:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 14:18:22 2009 -0800"
      },
      "message": "AwesomePlayer now renders either remote (IOMXRenderer) or locally depending on what kind of decoder was instantiated. Split off color conversion code into its own shared library.\n"
    },
    {
      "commit": "0a2b8e6424d1b027fb188ba0bd290fedff34b0f5",
      "tree": "e856fa8b85db6937b54a49b930e079aae9764888",
      "parents": [
        "3869dcbacecc5575cdde7b337a39cbd14c1fd7cb",
        "8eb8011120a68a86199b9960cf1ae91a6ddc7e6d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 10 17:57:10 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 17:57:10 2009 -0800"
      },
      "message": "am 14f89404: Fix media player decode function. Bug 2317821.\n\nMerge commit \u002714f8940472217e8b0164d8f213679710d623d528\u0027 into eclair-mr2\n\n* commit \u002714f8940472217e8b0164d8f213679710d623d528\u0027:\n  Fix media player decode function. Bug 2317821.\n"
    },
    {
      "commit": "8eb8011120a68a86199b9960cf1ae91a6ddc7e6d",
      "tree": "3b09d720df002b724e30eec03a4e0caddcea7b10",
      "parents": [
        "48643f38c9e92dd0a3d4a31c293c954f3df4db1b"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Dec 09 20:20:26 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Dec 09 20:36:31 2009 -0800"
      },
      "message": "Fix media player decode function. Bug 2317821.\n\nThere was a recent change to OpenCORE that broke the MediaPlayer::decode()\nfunction for all OpenCORE supported formats (MP3, AAC, and AMR-NB/WB). The\naffect is that SoundPool is unreliable for all of these formats. This patch\nchanges the logic in the AudioCache object that processes messages from the\nmedia player. The old logic was fragile. This change should make it more\nrobust against changes.\n"
    },
    {
      "commit": "413f523afe96aff02d2b0a7459127b8f67b2b43c",
      "tree": "395251a728a780bf6d46e4ef4a721e0cf4a77f3a",
      "parents": [
        "8908d616cc9d74f9fe2c17f1d8d9335ee28c290d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 11:31:19 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 13:21:54 2009 -0800"
      },
      "message": "Refactor MediaScanner. Some steps on the way towards being able to build the tree without OpenCore.\n"
    },
    {
      "commit": "1d711f67ffb3ea73aca155537e0f21b444251158",
      "tree": "aee381e7f30e46d562f12a80b0689007e0242991",
      "parents": [
        "a7c816c4bdb72cf4f9fe853a96cd7efdb394006d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 03 10:13:32 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 03 10:13:32 2009 -0800"
      },
      "message": "Remove old hack A/V sync hack that is no longer needed.\n"
    },
    {
      "commit": "827f3004421aacb6bceaf772ac825d4f2d3006e4",
      "tree": "224f040563bccf2ec3a4bba7d1fea81c092608c8",
      "parents": [
        "e5d6df402da9b6c5577470abb81a5e6801bd7752",
        "ec4dde75955f87e5afea3f59ef991130257f3f3a"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 19:58:00 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 23 19:58:00 2009 -0800"
      },
      "message": "am 8424ec32: Merge change I0f9a53d4 into eclair\n\nMerge commit \u00278424ec323b2bc38887370c75e2c1fcd84bcdb013\u0027 into eclair-mr2\n\n* commit \u00278424ec323b2bc38887370c75e2c1fcd84bcdb013\u0027:\n  Set metadata retriever thread group to the caller\u0027s group.\n"
    },
    {
      "commit": "ec4dde75955f87e5afea3f59ef991130257f3f3a",
      "tree": "68bdeed14853f8f8a2678acb2b875487e7af706a",
      "parents": [
        "4ddf30b2b118068d82bb37858186d668eddbbe6d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 16:51:15 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 16:51:15 2009 -0800"
      },
      "message": "Set metadata retriever thread group to the caller\u0027s group.\n\nThis patch modifies the native binder interface to the metadata\nretriever to pass the caller\u0027s thread group across the binder\ninterface. On the server side, the thread scheduler group is\nset to the caller\u0027s scheduler group temporarily and restored\nafter the request has completed. This patch also reverts a\nprevious patch where the priority of the thread was forced to\na low priority foreground thread.\n\nThis should give apps more control over the priority of their\nmetadata retrieval, particularly allow background process to\nrun without hogging the CPU.\n"
    },
    {
      "commit": "bfa6b2d7a1be1832ac40ed90aece1834f720b5c6",
      "tree": "5b4948c52fde583d593d088ffc4a7f772c904a86",
      "parents": [
        "bf89c099fc97717e3008a481aeddc76c1ac5e00d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 20 09:32:46 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 10:44:30 2009 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 1efc38dc3c33fef57b759002db3965ed07a28cb0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 19 14:36:14 2009 -0800\n\n    Sending the SEEK-COMPLETE notification temporarily broke seeking backwards in time behaviour. This is now fixed.\n\n    Also, get rid of the semi-random delay after posting buffers to surface flinger in favour of delaying the buffer release until the next frame is displayed.\n\ncommit 51973062eb5ee63fd64b845d72bac517cc3369cf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 14:01:43 2009 -0800\n\n    Fix one more unit test, properly send seek-complete notification only after seek actually completed.\n\ncommit cb22250b34b1fcfe1bf459723a761fd003950229\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 12:31:36 2009 -0800\n\n    Fix seek-while-paused in AwesomePlayer, revert to using FileSource if MmapSource fails.\n\ncommit 25eb9241138ddf7bb27ce90657116c5f8a94d880\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 12:30:40 2009 -0800\n\n    Support seeking and duration in AMRExtractor, assuming all frames are the same size.\n\ncommit 44192f2ebb7ea3bbd3ba5910025692dbc6a08faa\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 10:21:44 2009 -0800\n\n    MediaPlayerImpl is dead, long live AwesomePlayer.\n\ncommit c5b52d3c0674f5dc94db506afbce52401cceddac\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 09:42:23 2009 -0800\n\n    New implementation of the stagefright mediaplayer.\n"
    },
    {
      "commit": "30ab66297501757d745b9ae10da61adcd891f497",
      "tree": "e287230832c3cf3437df7ac07c282975e95044e7",
      "parents": [
        "057eacf4578ac6b90ee18c524670e01445bf2732"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 16 15:43:38 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 16 15:43:38 2009 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 333057b355f8c260c549553b9a0634755c838b6a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 13 15:35:48 2009 -0800\n\n    Some more tweaks to AVC encoding on sholes.\n\ncommit 9981d0ee52ec5b8b0182aae733d1571e3ebb8390\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 12 16:36:57 2009 -0800\n\n    Support for avc encoding, including sholes specific tweaks to pick the right colorspace for the camera to not require transcoding.\n\ncommit 5ba0ebbbd4efca51f3ae1f60e2ca31e7d2cf136d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 11 09:50:03 2009 -0800\n\n    Enable actual (camera) video-only recording using h.263 or mpeg4 encoding.\n\ncommit 3fd59c3526a37fe7c696f4a978925d1831c09313\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 10 14:57:48 2009 -0800\n\n    Allow switching between the PV recorder implementation and one supported by stagefright.\n\n    This is controlled through the property \"media.stagefright.enable-record\".\n"
    }
  ],
  "next": "7eb443df575d8002d045bec28cdcde23c8137a2c"
}
