)]}'
{
  "log": [
    {
      "commit": "577db6d42b8d83b3578c7e56b1391bdaca9cb705",
      "tree": "da9bdc4e1980dbecab0f4b43bb0ad777aa1e59cd",
      "parents": [
        "ea26c7772f4721657db409068d4bed194ae49c94"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 11 17:56:24 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jun 11 18:50:48 2013 -0700"
      },
      "message": "stagefright: synchronously change nativewindow crop\n\nOnly change the nativewindow crop before queuing frames\nwith the new crop.\n\nChange-Id: Icd8a84c82e66a8be3d6bc1675c777b1de8dc39b9\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 9395753\n"
    },
    {
      "commit": "b7319a7eb0a06ef4fd3a0c9157ee63e637ad7aa1",
      "tree": "6dc90cde609f708f45ae08af2bdc5f9cd2df4bb3",
      "parents": [
        "41688da226e91c97ea3b2fe096044e1e5b0520bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 29 14:20:52 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 31 15:31:56 2013 -0700"
      },
      "message": "Update HTTP proxy configuration for all media playback inside stagefright.\n\nChange-Id: Ie0dd00045aba668d8b49da73224e7a7c9c04f69b\nrelated-to-bug: 8873723\n(cherry picked from commit 2704965b8a1ff3b7450ff58ccecf86d8ec688c40)\n"
    },
    {
      "commit": "6f505a4c0b91d88d2759fbd7e17d91f3ed715165",
      "tree": "396e40ad43db7979414951cbcff50c09fa3a2181",
      "parents": [
        "6f6b31da6097f1d770137ebadac5023dd8b79413"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue May 28 10:11:35 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue May 28 16:22:02 2013 -0700"
      },
      "message": "MediaMuxer: Remove SAMPLE_FLAG_SYNC flag\n\nMediaMuxer.writeSampleData() uses MediaCodec.BufferInfo\nobjects to specify the flags, so use directly the MediaCodec\nflags.  This is more intuitive and avoids users of the\nMediaMuxer API having to create translations between\nMediaMuxer\u0027s and MediaCodec\u0027s flag constants.\n\nChange-Id: I18e12a6839ffb2c63da62516a4dc4c94e8bb3d17\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 9169479\n"
    },
    {
      "commit": "a6560120f96685d7929d535319198485d1d5ccdf",
      "tree": "0253af44cdc42fc828e84953531f36807ebc4f91",
      "parents": [
        "98e099aca2089decdf3486ae216c89766cc252f2",
        "f8197a6a9d9363cb52bb8a2c15c0e5a52064355e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:39:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 03 15:39:53 2013 +0000"
      },
      "message": "Merge \"Remove timing jitter during startup of audio\" into jb-mr2-dev"
    },
    {
      "commit": "cd4ac42ed448f1cb286ca4c3c7ea64621adf9d42",
      "tree": "98644c0a023592c279075dc36ccae40fc8a9505d",
      "parents": [
        "948700612e987b49185f7916befd38f39a2b0a3b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:08:47 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 30 16:11:50 2013 -0700"
      },
      "message": "Support MediaCodec::getOutputFormat for encoders\n\ncodec specific data is provided as part of the MediaFormat if available.\n\nChange-Id: I5a79c936e2411fe66ebc694791071faefc33941e\nrelated-to-bug: 8616651\n"
    },
    {
      "commit": "f8197a6a9d9363cb52bb8a2c15c0e5a52064355e",
      "tree": "efad34614c9d7e77ed830768279005004376bbb2",
      "parents": [
        "1e25b79b28e578c43607faf100dcaf4cf068f05a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 12:39:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 14:18:18 2013 -0700"
      },
      "message": "Remove timing jitter during startup of audio\n\nThis fixes a regression introduced recently, that increased timing jitter\nduring the startup of the FastMixer and AudioTrack callback threads.\n\nThe regression was to make requestPriority() asynchronous as a way to\navoid an apparent priority inversion in system_server.  This means that\nthe target thread could run briefly with the initial priority, before\nthe new priority takes effect.\n\nThis change removes the startup jitter for FastMixer, by making the\nrequestPriority() synchronous again for that case.  It doesn\u0027t matter\nthat this restores the priority inversion involving normal mixer thread,\nbecause it happens during startup of both threads.\n\nThe change also removes the startup jitter for the AudioTrack callback\nthread, by having the target thread check whether the requestPriority()\nhas completed yet.  If not, the target thread blocks with a timeout\nuntil the priority boost finishes.\n\nFinally, we now log an error message if the expected priority boost\ndoesn\u0027t happen.\n\nBug: 8698989\nChange-Id: Id590e9a274b70ec1ba85b44a585ee37a22e41cbc\n"
    },
    {
      "commit": "6e96f5927bd2234606ad3fcef1c1dc3029e66347",
      "tree": "3f835ca3e388cfdaa3c2522adca65bdd09856222",
      "parents": [
        "20ab26dbe54cd9ef81072c492bc466c0c4da46d8",
        "6b5d15099579c179d8e7531bb5abfb272614513a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 22 16:15:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 22 16:15:52 2013 +0000"
      },
      "message": "Merge \"3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\" into jb-mr2-dev"
    },
    {
      "commit": "6b5d15099579c179d8e7531bb5abfb272614513a",
      "tree": "79b6eb792a15126761fa391ce5ce38a74173267c",
      "parents": [
        "19c04c90478c4c5b8558a9b94713da148b4aa64c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 14:33:45 2013 -0700"
      },
      "message": "3rd time\u0027s the charm, right? Fix another instance where MediaCodec would\n\nnot return from a stop() or release() call if mediaserver dies at just the right\nmoment.\n\nChange-Id: I7728f8df82d62602d4d272f8023aa88678dd7d95\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "0ae2001f40587556e2f5ed56f791292fb5e9a329",
      "tree": "8b4980c76a87eb6826399dc11d8d771ee9628fcb",
      "parents": [
        "005bb86bd99077283df1968958d5c514a3bfa16a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 19 11:55:18 2013 -0700"
      },
      "message": "A flush of a video decoder connected to a native window must reclaim\n\noutput buffers already queued for rendering before considering a flush\ncompleted. Otherwise the decoder may not have enough output buffers to\ncontinue decoding after the discontinuity and we\u0027ll never dequeue more\nfrom the native window.\n\nChange-Id: I42e275dc336568e180081c6d7c0dc05fc9637c79\nrelated-to-bug: 8578467\n"
    },
    {
      "commit": "b87d5cd72cc2ce6a85899b7a06d881fad4c39d77",
      "tree": "950a65ce5d89df71a84c698a85b55d9b44deffaa",
      "parents": [
        "1808736b17073b2fdb82a87abf103cbd31aba4fc"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 17 16:12:27 2013 -0700"
      },
      "message": "Add new error codes for DRM to improve error reporting\n\nbug: 8621516\nChange-Id: I9a06c9ea5bfde924906d3876a417b9451b6abde8\n"
    },
    {
      "commit": "cb7032acc963e447adbffcf95ee297643d64e0d7",
      "tree": "6730cb92f1e131486be08516488b3caff5ff4f99",
      "parents": [
        "474c6539e3592aece37616d0b39ef008b61260a0",
        "e756d9753c7cffe2e9731a31fa98a3e8f37151c9"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 15 18:36:01 2013 +0000"
      },
      "message": "Merge \"MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\" into jb-mr2-dev"
    },
    {
      "commit": "e756d9753c7cffe2e9731a31fa98a3e8f37151c9",
      "tree": "d8d6d13587b902e574690740b850eaf1166e7759",
      "parents": [
        "e574eecea416c813d539a0977d5393c3ed291a1c"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Apr 12 13:50:38 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 15 10:48:33 2013 -0700"
      },
      "message": "MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.\n\nBy default, MPEG4Write will keep running in real time recording mode.\n\nbug:8598944\n\nChange-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf\n"
    },
    {
      "commit": "6610a7d621c634fe059b855ca7eb3f58fb8d0757",
      "tree": "74b4670c4f0830050379efe2cf35e132a26cd14b",
      "parents": [
        "ecba7488c5cceaacef95836b1b476433451e7761"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:06:14 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 11 16:13:48 2013 -0700"
      },
      "message": "ACodec now signals an error if the mediaserver died while it is in\n\nanything other than \"uninitialized\" state.\n\nChange-Id: Id133d897ac65b455b34e5de17ff9c39b47285630\nrelated-to-bug: 8397711\n"
    },
    {
      "commit": "5544c66ba0aa789a997b376df503a5ffae425dc7",
      "tree": "1340a1e933a94542bf1a35ce3c8f667616234bca",
      "parents": [
        "4d2f2e8414df33337d4f09e5235719dfcc705674"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 14:30:57 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 08 16:34:27 2013 -0700"
      },
      "message": "Add support for common encryption\n\nb/7465749\n\nChange-Id: I5403b74a5ae428ad28b382863a09daafc400b137\n"
    },
    {
      "commit": "505208dd38ab2f143e6a3ff6a2c262d0fab76b7e",
      "tree": "0ea6a3dd880bca0a840e0fd3d821c943be083a42",
      "parents": [
        "1dc6fcccfe33c65a2253bc3385e45d4e77e4b79e",
        "0cb126a34fe32f81c830858102471e7be2ce85b1"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 01:16:19 2013 +0000"
      },
      "message": "Merge \"Implement async event callout from drm plugin to Java app\" into jb-mr2-dev"
    },
    {
      "commit": "0cb126a34fe32f81c830858102471e7be2ce85b1",
      "tree": "a20999e4b89a78375a1b69cb3a0bef96fab74362",
      "parents": [
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 13:08:05 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 03 12:20:53 2013 -0700"
      },
      "message": "Implement async event callout from drm plugin to Java app\n\nChange-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b\n"
    },
    {
      "commit": "df41f485a9162407b32b7db1cea483f64bbd0c65",
      "tree": "4a25321560089605809b753fccc9365bca9f64bb",
      "parents": [
        "d2c90696403bb3c9e28d7b51d65c9468bdf8e78b",
        "8856c8b8777d0e0de11b2de863a336b001024e29"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 22:49:20 2013 +0000"
      },
      "message": "Merge \"MediaDrm API update\" into jb-mr2-dev"
    },
    {
      "commit": "8856c8b8777d0e0de11b2de863a336b001024e29",
      "tree": "21ed9ba7ba5db495085440b34ec75c72bf4af943",
      "parents": [
        "c9e58fcf57d865e6c82fdd4bf49d97f89203b2e4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 30 16:19:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 01 21:57:32 2013 -0700"
      },
      "message": "MediaDrm API update\n\nClarify offline usage of sessions and keys and implement\nimplement CryptoSession to support additional crypto use\ncases.\n\nChange-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc\n"
    },
    {
      "commit": "fa34724a1ffc87c059f8812e9cb3c8fb0ff55752",
      "tree": "eed400b9938c7c59edfa85fb32b22d7f672a73f3",
      "parents": [
        "b1c5fb8b938fcb127b76e0a37a569ae2c89bbf6a",
        "f76e027c43f531fc6f9287838b5c332236a4338a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 16:06:21 2013 +0000"
      },
      "message": "Merge \"Camera: Add input side to camera3 HAL device\" into jb-mr2-dev"
    },
    {
      "commit": "857583fd2ecbeb8696ede1f93b7291449fb2d133",
      "tree": "339da426a159d401daede0ac91d45584d7d56807",
      "parents": [
        "e31881eee441f409cbe6c1e1f32183ee8a64cdf8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 12:05:40 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:12:22 2013 -0700"
      },
      "message": "ToneGenerator: fix truncated tones\n\nThe first DTMF tone after a silent period is truncated.\nThis is because the phone app starts and stops the tone\nwhen the user presses and releases the key.\nThis combined to the fact that the tones use the low latency path\nand that when the output stream exists standby there is a period\nof several milliseconds during which no audio is mixed until the\nstream is \"warmed up\".\nThe result is that much less audio is generated than the actual\nkey press duration.\n\nThe fix consists in storing the tone start time and making sure that\nthe number of samples generated corresponds at least to the time difference\nbetween the tone start and stop commands.\n\nBug 6607077\n\nChange-Id: I070d20dd8600c25a9e5d5a60c1d3313b7917b00d\n"
    },
    {
      "commit": "f76e027c43f531fc6f9287838b5c332236a4338a",
      "tree": "c7ad20f9e6c4d414773645c286c10f0662e633ba",
      "parents": [
        "fd58f1a10a749ca72fec1012920d6e94a664cd70"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 27 18:02:26 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 27 16:54:34 2013 -0700"
      },
      "message": "Camera: Add input side to camera3 HAL device\n\n- Stream creation/deletion\n- Request submission\n- Request thread loop\n- Add get() to CameraMetadata to allow HAL submission while retaining\n  ownership.\n\nChange-Id: I271f72bcbe9557eded43cbcbfe789109857f8144\n"
    },
    {
      "commit": "8d012b56cbd49f33841c13aaa5b7b42020de82ed",
      "tree": "240cbe1534e19bd52b6f55e5d9623de2a7fea010",
      "parents": [
        "ac51135d48ded504af38f0bc7fda47823419332f",
        "a36381479c5c546a01188390f1e0d2e280a3dbd8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "message": "Merge \"Camera: Add hotplug support (for fixed # of cameras)\" into jb-mr2-dev"
    },
    {
      "commit": "a36381479c5c546a01188390f1e0d2e280a3dbd8",
      "tree": "84123991a8c16817eb7f0094f90b75e0187da15a",
      "parents": [
        "2247dd0dc60096d1b5a91ccadb5539f0b100c88f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 20 15:56:31 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Mar 26 17:16:11 2013 -0700"
      },
      "message": "Camera: Add hotplug support (for fixed # of cameras)\n\n* Minor: also change addListener to fire the current status upon subscription\n* Minor: STATUS_AVAILABLE is now an alias for STATUS_PRESENT and deprecated\n\nChange-Id: I254608a7332095e3ef201ffea64cff156cfc1b3e\n"
    },
    {
      "commit": "190cdbab6ba24519d6b5e8bec6c2c74e6650e284",
      "tree": "515d0a75f7bf43b802fb3247f3ce86efa7526af8",
      "parents": [
        "27a14b22e03dbd677e100f273e359a0daf2e79c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 26 10:19:24 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 26 10:19:24 2013 -0700"
      },
      "message": "Identify network servers and clients with a OS version related string\n\nand put the logic to create that string in one location instead of many...\n\nChange-Id: I1f729f2e7376cd3b45eea0e48f7bd10084b41b39\n"
    },
    {
      "commit": "900fecc9d66bda71f428a4d3cebc1fee14916301",
      "tree": "62d7ea006812aeb5dad940033b3c2a7c637a74cc",
      "parents": [
        "cbb2aad7a8aced67d2d97e03d8cd78b1a843290c",
        "5beac28a34e557251bd4bbd77a6d9303a69d4319"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 25 20:18:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 25 20:18:02 2013 +0000"
      },
      "message": "Merge \"Load crypto plugins from additional shared libraries\" into jb-mr2-dev"
    },
    {
      "commit": "5beac28a34e557251bd4bbd77a6d9303a69d4319",
      "tree": "bddefa894193bdb535c5f0090e7edab2e3d9eca4",
      "parents": [
        "3a29ea87c8fdcd45987bcc9cd2b68961ac971d27"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "message": "Load crypto plugins from additional shared libraries\n\nCurrently crypto plugins are expected to be in libdrmdecrypt.so.\nWhen there are multiple plugins supporting different schemes,\nthis approach requires source code integration across\nvendors which is unmanagable.  Also, for integration with\nMediaDrm where the crypto keys are obtained from a drm server,\nthe MediaCrypto plugin needs to interoperate with the MediaDrm\nplugin. This change allows {MediaCrypto, MediaDrm} pairs that\nare logically related to be implemented in a common shared\nlibrary.\n\nChange-Id: I7f6638f29171f91609fc2d944396365568630b56\n"
    },
    {
      "commit": "2247dd0dc60096d1b5a91ccadb5539f0b100c88f",
      "tree": "88a6d3b2e506d786f3d0e2310dc777f03e8d6a2f",
      "parents": [
        "f760a1b26a907f4f5b133dde66880bb666540c42",
        "b1a142ce32feb4668c504c0860a7350d000fe7fa"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Mar 22 00:45:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 22 00:45:55 2013 +0000"
      },
      "message": "Merge \"ICameraServiceListener.h: Add STATUS_ENUMERATING enum\" into jb-mr2-dev"
    },
    {
      "commit": "b1a142ce32feb4668c504c0860a7350d000fe7fa",
      "tree": "581048abf39b30f2e231c341a95d41d347c995bb",
      "parents": [
        "42404e895c182df761cbd2473d172e58e763ac89"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 18 13:36:48 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Mar 21 17:28:01 2013 -0700"
      },
      "message": "ICameraServiceListener.h: Add STATUS_ENUMERATING enum\n\nChange-Id: I41a9f358f63a19e7b746a9ccf24722001e5e7475\n"
    },
    {
      "commit": "3a29ea87c8fdcd45987bcc9cd2b68961ac971d27",
      "tree": "799496b667decd5c7cffeef3e56e3865b393f357",
      "parents": [
        "aab193b107e302e145b5c3d6e6c87f92ac296186",
        "11287471298193ff51ffb429686f5d63a84a621b"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Mar 20 17:00:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 17:00:50 2013 +0000"
      },
      "message": "Merge \"Add the presentation rotation support\" into jb-mr2-dev"
    },
    {
      "commit": "aab193b107e302e145b5c3d6e6c87f92ac296186",
      "tree": "0150308f9b4bf86e2ea73a23da6720f5fd989c3c",
      "parents": [
        "42404e895c182df761cbd2473d172e58e763ac89",
        "cc82dc6d500023eba6048616301a4b12682458db"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 20 16:48:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:48:55 2013 +0000"
      },
      "message": "Merge \"Implementing MediaDrm APIs\" into jb-mr2-dev"
    },
    {
      "commit": "11287471298193ff51ffb429686f5d63a84a621b",
      "tree": "b3a4e927f0887148de2cce86b01947c699790d9f",
      "parents": [
        "4f4c2655dc3f6fcef766db6e793b1642ad0fd605"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 12 15:43:56 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 15 16:16:16 2013 -0700"
      },
      "message": "Add the presentation rotation support\n\nbug:7991013\n\nChange-Id: I10cb034b432876c724baa4974efcb3d67b8a99b6\n"
    },
    {
      "commit": "b7be24f055426f00fd1ae1af07d5dd40dbcedfe7",
      "tree": "16452ef5ba382cf37a6f63b49f6a399a1cf85d98",
      "parents": [
        "db57fae81950e32af019b32421b93d204d67e951",
        "5883d53cf8300d8b13a1a6ef3310d72a55e191c0"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 22:42:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 14 22:42:44 2013 +0000"
      },
      "message": "Merge \"Make limitations of MPEG4Writer explicit\" into jb-mr2-dev"
    },
    {
      "commit": "5883d53cf8300d8b13a1a6ef3310d72a55e191c0",
      "tree": "d280c84919e427787e307504606c5a2527124e59",
      "parents": [
        "dbda1c852d68fde2e729ff2f8e85a406da73994b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 12 10:40:20 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 10:47:31 2013 -0700"
      },
      "message": "Make limitations of MPEG4Writer explicit\n\no No more than 2 tracks will be supported\no No more than one video and/or one audio tracks will be supported\no Only take video and/or audio track (for instance, no text tracks)\no If there is no track before start() is called, bail out.\n\nAt the same time, make sure the errors from addSource() report to\naddTrack(), not to start().\n\nBug: 7991013\n\nChange-Id: I1ca35aaeb75b5448d75ed2c6c10dd12ecea720ab\n"
    },
    {
      "commit": "8fb6f96e1cc246bc5630e1f5a0eb90f5459331b7",
      "tree": "50f65eabb52b7f241baa88268178021bcff5a156",
      "parents": [
        "27d11e240dad419f08e7edcd0857ee7806c65d76",
        "33da402287605e40e189289b11a08b8f5d515818"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "message": "Merge \"remove uses of Surface in favor or IGraphicBufferProducer\" into jb-mr2-dev"
    },
    {
      "commit": "cc82dc6d500023eba6048616301a4b12682458db",
      "tree": "1f36f887af92cb4bee147e962b85ce10f35d587a",
      "parents": [
        "c93484ab9fdf044fd32f2388a3ce29040d2ba319"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 08 10:18:35 2013 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 13 13:39:48 2013 -0700"
      },
      "message": "Implementing MediaDrm APIs\n\nChange-Id: I9ff8eeb7d0c383b5c0c68cd54eb54ce7d2d22fe6\n"
    },
    {
      "commit": "33da402287605e40e189289b11a08b8f5d515818",
      "tree": "440b60a701b5d4e4d93293732cf5a4a8bef3727c",
      "parents": [
        "b05526fc3c0ccc9f9310830074e863212af433e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "message": "remove uses of Surface in favor or IGraphicBufferProducer\n\nChange-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57\n"
    },
    {
      "commit": "9dffd24e00a1b2abd5e2dcc2366c0327ec3701b8",
      "tree": "593867dda4cf659baf90444ddd152cba2d68c86c",
      "parents": [
        "9ab909bff49b2eccde1b028901717c193ef723af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 11:01:43 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 13:44:58 2013 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit f4edf442741886cdbe071e2d15f6e6247269f7c5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 09:09:18 2013 -0700\n\n    Pass additional flags to the sink, use TCP by default in wolfiecast mode.\n\n    Change-Id: I41e11a2375d4199656e45c4f149d8441d0016092\n\ncommit 6302602ed280a38287f507159abfb40a1da38c5a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 08:51:58 2013 -0700\n\n    tweaks\n\n    Change-Id: Ie29e422d7258be522f4bb1f6c5afcf74c937e547\n\ncommit a38a860e4979ba563cadbaafa21b084439449d26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 16:57:43 2013 -0700\n\n    Report average lateness all the way from NuPlayerRenderer...\n\n    Change-Id: I2e7700703ae656515e44b9c25610d26c75778111\n\ncommit a7d49b11675ea88be4029dd8451d1649db94571d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 14:54:19 2013 -0700\n\n    Make TimeSyncer smarter, enable TunnelRenderer\n\n    Change-Id: I27377a60cd8feb01589da456967fddd34532c20e\n\ncommit 0f214c8ef68179f7b61512c37040939554013151\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 15:57:56 2013 -0800\n\n    convert source timestamps to sink timestamps, report lateness.\n\n    Change-Id: I051a60fbbceca2f7b508ae3dac6e01e402bae39e\n\ncommit 04a4f8e16bad09157b5615a5fa45310438955832\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 09:00:28 2013 -0800\n\n    Sync time between sink and source.\n\n    Change-Id: Ie8b4d75c957aa48310e7c81d1279761b9f821efe\n\ncommit aebe20e6184e3636a99082f8ece08e708015cb8d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Mar 6 09:03:12 2013 -0800\n\n    play with back pressure\n\n    Change-Id: I51eb69257e6a79e76f5f9c75ff99d8adbd083947\n\nChange-Id: Ifdf57228667fed7fc71c5090a2c3f7cea1037c5c\n"
    },
    {
      "commit": "7cf9a7e7d19579565e0f9dba8be9c107f2dbf548",
      "tree": "842fc07ade8a885e0549d366b81e985bbb313dd6",
      "parents": [
        "71381051e2d048b2705c447b3d59db6e972493ee"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 04 16:14:23 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 11 16:32:24 2013 -0700"
      },
      "message": "(Camera)ProCamera: Remove unused functions from binder interface\n\nChange-Id: I0582268cef6e84b630bc87c8a03dcd69d54c440d\n"
    },
    {
      "commit": "dbda1c852d68fde2e729ff2f8e85a406da73994b",
      "tree": "53bccb4964a3d3b1063237b5b10eeb80eb1b6d2d",
      "parents": [
        "96aeef2b4f51b06cb7f9ccbb04df48b305550b67",
        "afde4e56566af19b36f1fe5e7aa7f226bf1703dd"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 08 23:13:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 08 23:13:08 2013 +0000"
      },
      "message": "Merge \"Clean up the native code to match Java update\" into jb-mr2-dev"
    },
    {
      "commit": "afde4e56566af19b36f1fe5e7aa7f226bf1703dd",
      "tree": "5b0cdd040810962afa5688be1def2eb6babf0de4",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Feb 22 14:32:59 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 08 14:48:05 2013 -0800"
      },
      "message": "Clean up the native code to match Java update\n\n1. Add flags to match the java side change.\n2. Update the interface.\n\nbug:7991013\n\nChange-Id: I8ffe84c466b2a68e2e1e48b35b78db9e44640265\n"
    },
    {
      "commit": "8d4c382db4f89c30a309ffa16bef33930c691681",
      "tree": "d3d999474ebca69ef02bde7ff11d96153e7c0f21",
      "parents": [
        "060c68497a9ab59fd71ffbe7c9a7cd3e58489265",
        "ba6218eae3dbcf3f962b3561b26374a214dbf5e2"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Mar 06 17:42:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 17:42:23 2013 +0000"
      },
      "message": "Merge \"Correct MediaCodec + Surface behavior\" into jb-mr2-dev"
    },
    {
      "commit": "ba6218eae3dbcf3f962b3561b26374a214dbf5e2",
      "tree": "4b7922c6822c116b67123022fa48489a23724fe7",
      "parents": [
        "a7a5917a064710edea9cfacc8eda44532150e852"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 14:31:02 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 16:29:55 2013 -0800"
      },
      "message": "Correct MediaCodec + Surface behavior\n\nAssorted tweaks:\n- Allow signalEndOfInputStream() before ACodec is in Executing\n  state (added message to two more states).\n- Return an error if signalEndOfInputStream() is called a second\n  time on the same stream.\n- Require AndroidOpaque color format in createInputSurface().\n- Disallow dequeueInputBuffer() after an input surface has been\n  created (boolean flag in MediaCodec tracks it).\n- Discard input surface when encoder is re-configure()ed (drop\n  OMXNodeInstance\u0027s ref when we go back to Loaded).\n\nBug 7991062\n\nChange-Id: Iff30f3036e14eb5a2f6536910dcf11aba33031ee\n"
    },
    {
      "commit": "060c68497a9ab59fd71ffbe7c9a7cd3e58489265",
      "tree": "468aeb141c52dc4f04f693550316223f255549cd",
      "parents": [
        "7b288449777a071cb800c69468e28b4e5857a690",
        "538f498bbd5a2da51c9037a2689afc97f8bded8f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 06 00:18:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 00:18:04 2013 +0000"
      },
      "message": "Merge \"Add template class SingleStateQueue\" into jb-mr2-dev"
    },
    {
      "commit": "a7a5917a064710edea9cfacc8eda44532150e852",
      "tree": "506ee93cee969d2f1be4cda5346c12a514dd4441",
      "parents": [
        "0c57461f2c19f3a271c66f52cf8c9b2a82b13518",
        "f779bb50d9746d9526541c3e6dcdf619cac941b7"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 17:41:25 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 17:41:25 2013 +0000"
      },
      "message": "Merge \"Implement Surface input to MediaCodec.\" into jb-mr2-dev"
    },
    {
      "commit": "538f498bbd5a2da51c9037a2689afc97f8bded8f",
      "tree": "1c9197aff7f824310044a6b88148e04c20c85552",
      "parents": [
        "0c57461f2c19f3a271c66f52cf8c9b2a82b13518"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 26 10:40:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 05 08:26:50 2013 -0800"
      },
      "message": "Add template class SingleStateQueue\n\nChange-Id: If7e2bc9b2a216524ee9cbb68682e2634933b4973\n"
    },
    {
      "commit": "f779bb50d9746d9526541c3e6dcdf619cac941b7",
      "tree": "cee03011ebf84cfcd704ead0744e0b53dd91c4f7",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Feb 19 07:28:30 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Mar 04 15:03:53 2013 -0800"
      },
      "message": "Implement Surface input to MediaCodec.\n\nAlso, renamed a CHECK_INTERFACE macro that was clashing with the\nBinder version.\n\nBug 7991062\n\nChange-Id: If5e6ed0a06d9f67975497676e4b05abe3aa3d6c0\n"
    },
    {
      "commit": "a265845ecafe06c9668ce7ac67636657f4bedf86",
      "tree": "ae75ddb56a1aa950221e8961c0d2718958b61987",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:32:32 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 04 12:58:21 2013 -0800"
      },
      "message": "Miscellaneous cleanup\n\nAbbreviation framesReady to fRdy for new systrace.\nPut inline const on one line.\nUse local copy of mState in state.\nImprove logging.\nLine length 100.\n\nChange-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68\n"
    },
    {
      "commit": "d3c4b134a87b96227b90b9ec052d8a6e9880bbdf",
      "tree": "869a985fd6a51da99de24bd5a3ace41421c0a7a3",
      "parents": [
        "358538ce26ee651f6b5cff9f7432a5321386710d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:05:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 01 15:36:26 2013 -0800"
      },
      "message": "media.log cleanup\n\nRemove almost all of the specific logs, but leave the media.log\nlogging infrastructure in place for the next time we need it.\n\nRe-apply a few good changes that were reverted earlier:\n - check logf format vs. argument list compatibility\n - distinguish potentially modified and actually modified tracks in FastMixer\n - fix benign bug where sq-\u003eend() was called more than once\n - fix a build warning\n\nBug: 6490974\nChange-Id: I02d3e83646c738acaebb415bd0d6b548638b4ef5\n"
    },
    {
      "commit": "fb413768551ea8ba3af05efb9906e7e2348f2431",
      "tree": "86da75f59deea0393f167bd604a60f5acf0b028e",
      "parents": [
        "8fdfbe27acd157d58fa35a849ec50c82464062f0"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 28 11:21:00 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 28 16:25:55 2013 -0800"
      },
      "message": "ProCamera: Add CpuConsumer asynchronous mode support\n\nBug: 8290146\nBug: 8291751\nChange-Id: I25423a2b8a70ac7169911b1c7b482aa17190fe0f\n"
    },
    {
      "commit": "8fdfbe27acd157d58fa35a849ec50c82464062f0",
      "tree": "19a08d59c5e5cfd56cda29b01ef1ea1b4f00ed77",
      "parents": [
        "721f17283e2493426c47bbaa267c337b2af5726e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 27 12:55:20 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 28 15:55:15 2013 -0800"
      },
      "message": "Camera: Drop ProCamera connections when a Camera connection happens\n\n* Also adds an ICameraServiceListener with available/not available statuses\n\nBug: 8291653\nChange-Id: I24680f1a2dc109510caf451cf7c7bd180b670d84\n"
    },
    {
      "commit": "f5daac4225905184b8d7cdd2fd87247d73e27ea7",
      "tree": "5324b82082de8fb57ddddeb8aa154c14cddd55e9",
      "parents": [
        "5e8e702658cd61fc07b4163fdbca3e8a5589f2b9",
        "b84d935c179a275a47e07291d2a983daf844de80"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 27 20:43:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 20:43:26 2013 +0000"
      },
      "message": "Merge \"camera_client: refactor Camera/ProCamera commonalities into BasicCamera\" into jb-mr2-dev"
    },
    {
      "commit": "3c3c527a792249d07938c5c6cb9b465344a22383",
      "tree": "07e9c4f4902d084c29f6c5ab6d688f3ecbba9f4c",
      "parents": [
        "48af7e8dd40883d6154e7029d9500072b551b5fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:39 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:55 2013 -0800"
      },
      "message": "Revert \"Logging to investigate a crash\"\n\nThis reverts commit f0ff908da019a44115109f1b4d1b6864b35a8a29.\n"
    },
    {
      "commit": "b84d935c179a275a47e07291d2a983daf844de80",
      "tree": "66feb5e92054d554eda4960b600535873a9e7fbd",
      "parents": [
        "253e3c03b0cf4d5852a497ddda0f43b630664644"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 14:32:34 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 18:54:03 2013 -0800"
      },
      "message": "camera_client: refactor Camera/ProCamera commonalities into BasicCamera\n\nChange-Id: Ie10a4094522d49683657665fe94ab0b7ccd280e9\n"
    },
    {
      "commit": "48af7e8dd40883d6154e7029d9500072b551b5fa",
      "tree": "ce8b71d67a3313dc19c0691bc1b26d1244a106b4",
      "parents": [
        "68e6e24cb6cdd66c2209774c4871a2c47e8bbc8b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    },
    {
      "commit": "94a90a43b2a9f83b3a4a4a59247b74ad50336860",
      "tree": "240c0a147b8856320274dc99d8bbad2937ea7905",
      "parents": [
        "687f26c7bd7ece88cad8d51fc47be7ab1600af9d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 13:36:17 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "ProCamera: Fix waitForFrameBuffer not handling multiple outstanding frames\n\nIf the CpuConsumer triggered multiple onFrameAvailable callbacks in between\na single waitForFrameBuffer call, the old code would only handle 1 callback.\n\nThis meant on two subsequent waitForFrameBuffer calls the second would always\ntimeout when two buffers were already available to be unlocked.\n\nBug: 8238112\nChange-Id: Ibefca35005ac5c408e5ada97ec4a4344a9e3e497\n"
    },
    {
      "commit": "687f26c7bd7ece88cad8d51fc47be7ab1600af9d",
      "tree": "be4bc4993455225e4407cb70831979cd84a040a7",
      "parents": [
        "1d74853933937f3e3f120a6efffb1f4cec7f8ba7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 21 14:45:03 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "ProCamera: add waitForFrameBuffer/waitForFrameResult blocking calls\n\nChange-Id: I851d41aeecaa15245d5b9d622132e8706d6e292c\n"
    },
    {
      "commit": "d127c2c8a8b68dae2f8743c310c2547e8f46d967",
      "tree": "ac671025a00cc2f9580a1c62caa4009b915e97ee",
      "parents": [
        "418e493e8d67924cfda652cb64965647ce6381cb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 21 13:49:26 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "ProCamera: Add getInfo for getting static metadata (and a test)\n\nChange-Id: I3b87dfbc621d98bf41f37a892a1012baf85b5166\n"
    },
    {
      "commit": "418e493e8d67924cfda652cb64965647ce6381cb",
      "tree": "639c98f3054f1aa618f1e3fa4f10f0c7a71fb9b1",
      "parents": [
        "5076182ce4bf657e7211264d0ad3861212f24aa1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 21 12:02:29 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "Camera: ProCamera - implement onResultReceived callback for metadata callbacks\n\nChange-Id: I46775402b007244bc383d6343a620eebbd492aad\n"
    },
    {
      "commit": "c0767f148e29ce821281b5965c0e25b4c143e76d",
      "tree": "d71e86b5d066b9a05e1732fa829c40affbb09411",
      "parents": [
        "5494cdc67b541034c963919aef8acb8b665e4dde"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 19:29:53 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "Camera: ProCamera - add createStreamCpu and unit test\n\nChange-Id: I468172dbfdd78510b273bf9d119c950cbeda7ea3\n"
    },
    {
      "commit": "5494cdc67b541034c963919aef8acb8b665e4dde",
      "tree": "cdffd46bace86e756bc6448028007db8e2fe74a0",
      "parents": [
        "9fb7fa159b2a47d6a7c0e9ef323b23298cdc7cb9"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 19:15:15 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Change ProCamera to take IGraphicBufferProducer\n\nChange-Id: Iec62eead6d179aa5486f7719143340976bb76e7d\n"
    },
    {
      "commit": "69e22433b9d7df77907579f67e47a159aa57f876",
      "tree": "eb271a5175ff8bac5e86ccd72637481738efddf9",
      "parents": [
        "9476926bb91bf15f7aff2a289a4805148f5a8a4e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 18:24:43 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: ProCamera2Client - add createStream (service is stubbed) and unit test\n\nChange-Id: I1ae7ba9b24f5883c214c19a7ed0eaf0c802d69c1\n"
    },
    {
      "commit": "9476926bb91bf15f7aff2a289a4805148f5a8a4e",
      "tree": "ab9484858b0dc1801908856e26c4929a16e9da6f",
      "parents": [
        "90fce97bf320a5d0b3547d18fcb2c0d57347361e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 17:57:31 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: ProCamera - add createStream stub and unit test for it\n\nChange-Id: Ic05130e63f4f2c0c3278ba348b192992169f105f\n"
    },
    {
      "commit": "68c80668304fc92db43bbe2e7cbe9753b6d3865a",
      "tree": "3eac9438f1854b1cfdae70ea76e322122eea10b0",
      "parents": [
        "bfb5d5ef5bae01efac171397260a7152782d92c7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 17:41:57 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: ProClient add asynchronous locks and such\n\nChange-Id: I551e5e5e76d9be733fab5224beaa7309268c0f38\n"
    },
    {
      "commit": "bfb5d5ef5bae01efac171397260a7152782d92c7",
      "tree": "15f645e0637ae880083804ab5876873a1108a0de",
      "parents": [
        "e4e5b2f23fa85cae789dc6824ea8af321e211d60"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 17:15:11 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add ProCamera private binder interface for an API2-light functionality\n\nChange-Id: I2af7a807c99df75ea659e6e6acc9c4fca6a56274\n"
    },
    {
      "commit": "e4e5b2f23fa85cae789dc6824ea8af321e211d60",
      "tree": "00607609c6a079439b1c1ae583c07bbf659ff6f4",
      "parents": [
        "537799199bdd7a585585dee409e0e3a86bad93b7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 16:50:13 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add unit test infrastructure for libcameraclient\n\nChange-Id: I957538663ae8332d26f3640c63a75efc79f4ac5c\n"
    },
    {
      "commit": "537799199bdd7a585585dee409e0e3a86bad93b7",
      "tree": "662d09dd904faaea81bff84f4587cdf7a59918d9",
      "parents": [
        "bd02dd1bf1f34eb4e100d0d058f1fe5a2790d67e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 13 18:23:39 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add exists function to CameraMetadata\n\nChange-Id: I081f61417fca7c8408e9e767129647ddce5364ab\n"
    },
    {
      "commit": "bd02dd1bf1f34eb4e100d0d058f1fe5a2790d67e",
      "tree": "09dabb9a40decb5640f9b5d419565e999a5995d2",
      "parents": [
        "ee9cc423e2551ffbacfd226b8627737beabaec99"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 13 15:53:56 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Move CameraMetadata.h from service to client library\n\nChange-Id: I940ce86f318f37ae5b73f912a6e589415150125f\n"
    },
    {
      "commit": "a457c43cd7f4225ffbedfbdcd68dd9cf6fef1d38",
      "tree": "62c3cfb9c8fb3c48df46aea39f4d6c3d27dab65a",
      "parents": [
        "c046148d93212f8a4da916bb860a1fa5926fe159",
        "5f6f3764989601d3b3ee65beaf1447d2a6b5f284"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "message": "Merge \"Revert \"Temporary additional logging to investigate bug\"\""
    },
    {
      "commit": "5f6f3764989601d3b3ee65beaf1447d2a6b5f284",
      "tree": "b32615250ff96cb6e55206f5c78ae2e15c83cc87",
      "parents": [
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 32584a7d672864b20ab8b83a3cb23c1858e908b7\n\nChange-Id: I9dc680578b955b1af462eeb7a49d61a0d45eb81b\n"
    },
    {
      "commit": "c046148d93212f8a4da916bb860a1fa5926fe159",
      "tree": "1980477800bc27663417d5306d4af89de92533fb",
      "parents": [
        "4490bf05a9addf5a4e12e0da92f22d854e5ce9a0",
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "message": "Merge \"Temporary additional logging to investigate bug\""
    },
    {
      "commit": "dd9764290b3c1d801fea9505189cae29db919902",
      "tree": "2a9ef9c4d5a2d279f18f535441a0eeb8e9476700",
      "parents": [
        "6bde4671ae7cb383e731606d9ee548859047c961"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 15:44:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n - increase log buffer sizes yet again\n - enable assertion checking without ALOGV\n - improve a few log messages\n - check for corruption in more places\n - log in all the process hooks\n - add new mixer APIs so we can check for corruption of mixer state\n - fix a build warning\n\nBug: 6490974\nChange-Id: Ib0c4a73dcf606ef9bd898313b3b40ef61ab42f51\n"
    },
    {
      "commit": "b1e7cd156ca3e1747374e0d20cdd1ce467210453",
      "tree": "557f25ff5a0477f0cf0f89d4c21b0291371f09a2",
      "parents": [
        "62ad9071cd61fc56355d3c2d25895382003ea362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 17:11:27 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:35 2013 -0800"
      },
      "message": "Refactoring: Rename SurfaceTextureClient to Surface\n\nChange-Id: I4e8a8b20914cb64edc37abe68233fbc9f2b5d830\n"
    },
    {
      "commit": "62ad9071cd61fc56355d3c2d25895382003ea362",
      "tree": "3795e34e35b63dbe73daac08d151501c43a91733",
      "parents": [
        "0d026335f6040df997d35b7e81f8c9f8be8cdec0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 13 09:27:28 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 15 10:03:04 2013 -0800"
      },
      "message": "Add support for fragmented mp4 to MPEG4Extractor\n\nThis makes FragmentedMP4Extractor obsolete. It will be removed in a\nseparate change.\n\nChange-Id: Ida74c07ccf84983e20a1320ee24ffc7a5c083859\n"
    },
    {
      "commit": "ce70d400ff9fb614e334ab2b661df2933533ef57",
      "tree": "30610a5b21cfa882a9f17a7b4cc39d11e8ccdd7d",
      "parents": [
        "5881f18029deb80eb83ea88046d0593441be79c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 639482c24c911b125398b31883ba6d55faebe28b\n\nChange-Id: I11f2829072ab11e18b0663024f27bf31192f1d39\n"
    },
    {
      "commit": "5881f18029deb80eb83ea88046d0593441be79c7",
      "tree": "3de394e4626f829fed4237e756489e0fba865236",
      "parents": [
        "7e1e1e61fca5334e11a0c26ab23e6122e742d517"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 14:35:29 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n\nBug: 6490974\nChange-Id: I1f3f18aa62d9fbd35bc32285b669f5ba40efe28e\n"
    },
    {
      "commit": "6269d53cce5c1c9350565d3d72d92116594260cb",
      "tree": "debfbedbe8cf9a16d279f9a408519aa4743cc854",
      "parents": [
        "e336f9113bdd35119866a3c3f8008ca01c576660"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Feb 04 15:59:38 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 12 11:10:12 2013 -0800"
      },
      "message": "Add the native MediaMuxer support.\n\nMediaAdapter: a helper class to convert the push model to pull model.\nMediaMuxer: the real muxer.\n\nbug:7991013\n\nChange-Id: If3b79551bc6332bc81f5c2740885e579a5c4abf9\n"
    },
    {
      "commit": "e336f9113bdd35119866a3c3f8008ca01c576660",
      "tree": "a53d8070243784449dc87ca193e2e121d38863b7",
      "parents": [
        "51a920302a6f376cdb24691051d96f34f24a55bf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 04 16:26:02 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 11 10:13:00 2013 -0800"
      },
      "message": "Add support for querying if a stream is active remotely\n\nBug 7485803\n\nChange-Id: I0744374f130fd2dd0714102354cffed2fa915361\n"
    },
    {
      "commit": "c71601c3b1dd63afc9be462194809813e4dbacf1",
      "tree": "f91f7e9da453d188934ef99d136f2606a52fe3d9",
      "parents": [
        "0955986e6c1c27ba752e293246086ea79c49d39c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 07 10:56:14 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 07 10:56:14 2013 -0800"
      },
      "message": "Allow for dynamic reconfiguration of the video bitrate used\n\nto encode video while running as a wfd source.\n\nChange-Id: I44f7b2350c88fc5807047c61bfe594ef8fa79275\n"
    },
    {
      "commit": "0be9fe5864c39c11eefe335038cf6ce5473e4ec5",
      "tree": "a5a21ccd28ea763c36d3c4a0aae1d455baf9636d",
      "parents": [
        "1cca13c79ff7e3f36a2fc6e564b60f5e57d00919",
        "fdf4e4f1859771b95585cbc87f8cd038ea2815c6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 01 00:39:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 00:39:48 2013 +0000"
      },
      "message": "Merge \"Add media.log service based on NBLog\""
    },
    {
      "commit": "279dcd89ab1d2de91dfe95e461412a0f577a6891",
      "tree": "fa0ae875d3404f6fae47823e4c3b2d09207dae9b",
      "parents": [
        "150a516ce434bd1df81e3c3070915e3f549bca59"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 30 10:41:25 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 30 10:41:25 2013 -0800"
      },
      "message": "Plumbing to reflect minor changes in the HDCP module API that allow for\n\nsupport of _decryption_ modules in addition to what we already supported.\n\nChange-Id: Ic37b87dc170ba8def3817991d25df798f21e950b\n"
    },
    {
      "commit": "fdf4e4f1859771b95585cbc87f8cd038ea2815c6",
      "tree": "7bbc12a9d0e9c7ad29346b04b26c55d390a0b032",
      "parents": [
        "10eb4b33545a58e4b09249c30c100bc7b992250a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "10eb4b33545a58e4b09249c30c100bc7b992250a",
      "tree": "412dc200ac801d561fd2df61c462c2d8485fcb9e",
      "parents": [
        "bb9c2e1155d0a844f04aec981b44a9e562522fde"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 14 14:53:13 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:01:24 2013 -0800"
      },
      "message": "Add non-blocking event logger NBLog\n\nChange-Id: I6c136cf3d7f46a8af84c69ecfc199dab394c10dc\n"
    },
    {
      "commit": "856ff4e4c3c43550f013e80277358fdf514342bf",
      "tree": "8c4d4a5e03726de6b40ab9ed3519e738cae2fefc",
      "parents": [
        "5570227ac334479982a9dd8c1647c00f58f47c18",
        "552f274d82fb4988fb972df69134e031d375abfe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "message": "Merge \"Start isolating control block accesses in a proxy\""
    },
    {
      "commit": "5570227ac334479982a9dd8c1647c00f58f47c18",
      "tree": "885046de88c68c9fc468fd02617af4cafc6a758b",
      "parents": [
        "00169223fb04a14ddb542146223540e3695c8d27",
        "f37971f624164c3ed185d3f976404a6f60f49b9a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 08:09:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 08:09:11 2012 -0800"
      },
      "message": "Merge \"Remove unnecessary parameter\""
    },
    {
      "commit": "f37971f624164c3ed185d3f976404a6f60f49b9a",
      "tree": "e3455056e9e0512786cfdd832e1fd8bba765bc7c",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:06:53 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 16:16:30 2012 -0800"
      },
      "message": "Remove unnecessary parameter\n\nJust get the parameter on server side\n\nChange-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15\n"
    },
    {
      "commit": "484566c410afdfbc4b6bc5aa1732aef37428a5b8",
      "tree": "5ce1fc6a755c32f0b6ff362fe1fc5bf0d9ee2b14",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:46:54 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:31:57 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I64520a55f8c09fe6215382ea361c539a9940cba5\n"
    },
    {
      "commit": "552f274d82fb4988fb972df69134e031d375abfe",
      "tree": "6c356ad9ec05a6b6e392aae86cdc296c98d13a65",
      "parents": [
        "cc492bd388898f90cec4faae3c7fde561dd52239"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:22:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 12:21:59 2012 -0800"
      },
      "message": "Start isolating control block accesses in a proxy\n\nThe proxy object will eventually be the only code that understands the\ndetails of the control block.  This should make it easier to change the\ncontrol block in the future.\n\nInitial set of control block fields that are isolated:\n - sample rate\n - send level\n - volume\n\nPrepare for streaming/static separation by adding a union to the control\nblock for the new fields.\n\nFix bug in handling of max sample rate on a track.  It was only checking\nat re-configuration, not at each mix.\n\nSimplify OutputTrack::obtainBuffer.\n\nChange-Id: I2249f9d04f73a911a922ad1d7f6197292c74cd92\n"
    },
    {
      "commit": "e1cf3c41bd27b5ab7d8e70ef8dd6fcd0f5453568",
      "tree": "8851291ff68fc422d0e76bfeec00c37d2293a8c3",
      "parents": [
        "c984e76f3091c8210cd6bb0cae0f23549a7af0ee",
        "a4f324673f615d604362d86e1878e85c126847af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "message": "am 76143093: am f0ff908d: Logging to investigate a crash\n\n* commit \u0027761430930a7335d714af0f7c1d497feb8f9f0a5a\u0027:\n  Logging to investigate a crash\n"
    },
    {
      "commit": "a4f324673f615d604362d86e1878e85c126847af",
      "tree": "41d0b30039b3048ff965e49e61b0b95c3ae6ab74",
      "parents": [
        "917279c99c7677a02a120909dc4f9092339f2827",
        "ef5abc369823f634c460c8f24d3cbf310542fe3b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 15:34:56 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 15:34:56 2012 -0800"
      },
      "message": "am f0ff908d: Logging to investigate a crash\n\n* commit \u0027f0ff908da019a44115109f1b4d1b6864b35a8a29\u0027:\n  Logging to investigate a crash\n"
    },
    {
      "commit": "ef5abc369823f634c460c8f24d3cbf310542fe3b",
      "tree": "429519b3bd4fbc7f47ee2be82f2778ef1545fbdd",
      "parents": [
        "7ecb63d26cc5a45e66248a7abb69f99a76114e07"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 14:13:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 16:19:09 2012 -0800"
      },
      "message": "Logging to investigate a crash\n\nBug: 6490974\nChange-Id: Ib926a9258bde4ee05ed42eea662dff68e426a997\n"
    },
    {
      "commit": "e9810fae2ca6620337b75a787786cc0ea52adecd",
      "tree": "f848298646fb0163e6911ad8622adcc12a8eba3f",
      "parents": [
        "07dfb08e935fdfe9f73f452cf27e3e2b052eda4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 03 15:20:40 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 10:34:34 2012 -0800"
      },
      "message": "Respect sample aspect ratio in NuPlayer.\n\nrelated-to-bug: 7569402\nChange-Id: I302de95d83b180bd2dc72ddd0c69a665dbce2527\n"
    },
    {
      "commit": "8f7453f6770070f4789cb769bd2b6a3eabad7d68",
      "tree": "787fcacb821498bd7493739157bcdb83873ae386",
      "parents": [
        "ec7dcac79c121ef015ee237891a5c90e67a977ab"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 15:00:36 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 11:38:57 2012 -0800"
      },
      "message": "Emphasize distinction between streaming and static\n\nUpdate comments and improve error checks to match\n\nChange-Id: I7370d6e59a7ef26dfb284a8b058d5ab2e0a42ccf\n"
    },
    {
      "commit": "ec7dcac79c121ef015ee237891a5c90e67a977ab",
      "tree": "5d7a9bbbc5a00e82f3f8383f5411e227f9a58b96",
      "parents": [
        "4b3a49e3a9ced6e63adab08acc5b720f8feddefa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 13:41:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 10:42:52 2012 -0800"
      },
      "message": "flush() comments and checks\n\nflush() is only useful for streaming mode.\nIt is a no-op if track is active or uses a static buffer.\n\nChange-Id: I918ac181ffae3d16a0d67d8a7208f4aec61b5bd6\n"
    },
    {
      "commit": "4b3a49e3a9ced6e63adab08acc5b720f8feddefa",
      "tree": "4189f95a16953fa8218544fa5ceedfc7bee94e1d",
      "parents": [
        "9862e8f3ba69c46efbafdc8438bd88848a9d55da"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 13:38:14 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 09:57:37 2012 -0800"
      },
      "message": "AudioTrack::mute() is unused so remove it\n\nIf ever needed again, it could be implemented on client side by forcing\na track volume of 0.\n\nChange-Id: I88a9b4f675b6dca2948549414f9ec2c192d29269\n"
    },
    {
      "commit": "ab5bfb15f63887f999f11239e12d78a7babcd112",
      "tree": "353145e9f4318ed0ff4c7709f5d705bf1a63a55f",
      "parents": [
        "ce768c847c0df30ee9725b888e95167444477e55"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 07:32:49 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 15:23:44 2012 -0800"
      },
      "message": "AudioTrack inline short const methods\n\nChange-Id: I142917edb454d510bbe545e94e6eaea30b650fae\n"
    },
    {
      "commit": "ce768c847c0df30ee9725b888e95167444477e55",
      "tree": "7db050a51471dafc6fb956c32064de487f4b8d2b",
      "parents": [
        "e8cb004257565111cb261f3e9c786adba881859a",
        "ae62b042f1da297377f40a6ad1bf22d69d348698"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 30 08:51:51 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 08:51:51 2012 -0800"
      },
      "message": "am ba6b1bc3: am e7550eb2: Merge \"Initialize and copy mRotationAngle in VideoFrame\"\n\n* commit \u0027ba6b1bc38e0c355277f69af286469adb5f02e876\u0027:\n  Initialize and copy mRotationAngle in VideoFrame\n"
    },
    {
      "commit": "ae62b042f1da297377f40a6ad1bf22d69d348698",
      "tree": "52aecd8ff9e09ba8b12ab0b9efe9895fc2f6a8f7",
      "parents": [
        "2a8104e243b246bf4b11b4ed51aac79c6fa08c8d",
        "1348d011577a0b083526055686619e901d43e550"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 30 08:50:09 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 08:50:09 2012 -0800"
      },
      "message": "am e7550eb2: Merge \"Initialize and copy mRotationAngle in VideoFrame\"\n\n* commit \u0027e7550eb2805d864253f88ea2ced57014d6140e55\u0027:\n  Initialize and copy mRotationAngle in VideoFrame\n"
    },
    {
      "commit": "10db45259545989a80fae0cd6fd6a252f3c9924a",
      "tree": "3d1c76454c89ebfd2971c5d92d7b2a345a9b989f",
      "parents": [
        "0d55a6f35a2d37187139e50972f7b6c413b2371f"
      ],
      "author": {
        "name": "Christer Fletcher",
        "email": "christer.fletcher@sonyericsson.com",
        "time": "Thu Sep 13 10:28:39 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Nov 30 15:32:18 2012 +0100"
      },
      "message": "Initialize and copy mRotationAngle in VideoFrame\n\nWhen thumbnails were generated they could be generated at random\nangles as the mRotationAngle variable was not initialized to any\nvalue. This variable would have to be explicitly overwritten to not\ncause random rotation. Changed the implementation to initialize the\nvalue to 0 (no rotation). mRotationAngle was also missing in the\ncopy constructor.\n\nChange-Id: I67a5340fdd807c6ab3a3da5eecb09b5b9d5f4666\n"
    },
    {
      "commit": "f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc",
      "tree": "6851003e7af892906473b96685a03767068b6168",
      "parents": [
        "4aefd5fc4dde13a8f3c9c27ec4055b771c0ee341",
        "53faa7ee457eb9b27be1fd814e42ffe43c8520a0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 14:32:21 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:32:21 2012 -0800"
      },
      "message": "am 2f6107ec: am b64def9a: Merge \"[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\" into jb-mr1.1-dev\n\n* commit \u00272f6107ec8e67eea1f73b9558a5ad34caec52867f\u0027:\n  [wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n"
    },
    {
      "commit": "2e57f4c428be32a574e31b0f4aeeae8de24e5895",
      "tree": "543aedc7a1c8299b135cfd1ef792c7689adb8e52",
      "parents": [
        "d5ab37a1a0e74a75537b9514289434651635a820",
        "cb9d270eecb7108e19323f522c5e82dcc80a5f32"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 29 14:32:18 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:32:18 2012 -0800"
      },
      "message": "am 296cb9dd: am 0dbe5a93: Added optional intra macroblock refresh support for encoding\n\n* commit \u0027296cb9ddd916c43983bfb4ddab9c69ed555d4cc4\u0027:\n  Added optional intra macroblock refresh support for encoding\n"
    }
  ],
  "next": "53faa7ee457eb9b27be1fd814e42ffe43c8520a0"
}
