)]}'
{
  "log": [
    {
      "commit": "afe02df45e6c58aa2d6779f7b51a05bf9d413446",
      "tree": "773d8f47122f02367ebac28fda5e42a9fffab643",
      "parents": [
        "9413752f30a505dfd36fcedb26dc1dd933c9840d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 26 14:39:50 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 26 15:45:38 2012 -0800"
      },
      "message": "The software AAC encoder is now an OMX component.\n\nYay.\n\nChange-Id: I74938a20b4e0a622836ea5184d3761180eb0f5de\n"
    },
    {
      "commit": "34f9f8bb8384b9045bc6aff9289bd1cb8705f427",
      "tree": "24e206f7cb1eb96c75016f2eefca6f69c95d418b",
      "parents": [
        "0a204ed0f58a9baaac5630864cd75495486c6cbe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:00:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:12:59 2012 -0800"
      },
      "message": "Remove AudioFlinger dependencies on client\n\nChange-Id: Ibb591e41a3ca5d7015e2b66b98b8fef5f415fb37\n"
    },
    {
      "commit": "0a204ed0f58a9baaac5630864cd75495486c6cbe",
      "tree": "5f81caa2a24b7a993c231cbd76bfaacd955a0355",
      "parents": [
        "2772143eff6a69ae7182e0c2628809d8dbd8d355"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 12:27:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 14:41:34 2012 -0800"
      },
      "message": "Use audio_format_t consistently, continued\n\nWas int or uint32_t.\n\nWhen AudioFlinger::format can\u0027t determine the correct format,\nreturn INVALID rather than DEFAULT.\n\nInit mFormat to INVALID rather than DEFAULT in the constructor.\nSubclass constructors will set mFormat to the correct value.\n\nChange-Id: I9b62640aa107d24d2d27925f5563d0d7407d1b73\n"
    },
    {
      "commit": "15f51ccee1fb4aaf9296998e68156903f0657098",
      "tree": "9387131809cd7084461b858b30a00c5fb9dad506",
      "parents": [
        "ea46649a1cce7447ece812e60168f2bb3db47122",
        "96f46033b4ea89992160cf0ec5a64528b003ed3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 12:15:38 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 12:15:38 2012 -0800"
      },
      "message": "Merge \"Remove dead file include/media/thread_init.h\""
    },
    {
      "commit": "7524a592526a14d20ec3f3acffd61fe18afaa4b4",
      "tree": "2eb574a61a11e29cf85c502fafe38098c1908455",
      "parents": [
        "1b4d60497c6c89ae1457e802446c83ca7c8c0017",
        "ee7fea9f2fd536107450204c9c2058bbe215f713"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "message": "Merge \"Remove dead setRingerMode(mode, mask)\""
    },
    {
      "commit": "96f46033b4ea89992160cf0ec5a64528b003ed3e",
      "tree": "e1f734ec9775398a65ddcf38e9a84c683889a9ae",
      "parents": [
        "92ecdd63033a53b3c6301a9dc94c2438e498f27b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 10:13:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 10:13:52 2012 -0800"
      },
      "message": "Remove dead file include/media/thread_init.h\n\nChange-Id: I98688bb7109b5f82953988935c7c33fe3c7f4ec0\n"
    },
    {
      "commit": "92ecdd63033a53b3c6301a9dc94c2438e498f27b",
      "tree": "787c5dfc67dbd03247411de308a0dcefc6bedd87",
      "parents": [
        "adf10837719627e725187e26a2e3654ba97245c8",
        "a6dafea172ac344f38cf4255c8896766f10b7b55"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "message": "Merge \"Fix incorrect includes of AudioTrack.h\""
    },
    {
      "commit": "a6dafea172ac344f38cf4255c8896766f10b7b55",
      "tree": "001a395bf1753e632aa35f056e45c77741641942",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:54:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 16:06:47 2012 -0800"
      },
      "message": "Fix incorrect includes of AudioTrack.h\n\nRemove unnecessary includes of AudioTrack.h.\nUse forward declaration of class names in preference to #include when possible.\n\nChange-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0\n"
    },
    {
      "commit": "ee7fea9f2fd536107450204c9c2058bbe215f713",
      "tree": "b7486337ab00e4edd6f9e93f600e2689765e06fe",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:56:06 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:10:31 2012 -0800"
      },
      "message": "Remove dead setRingerMode(mode, mask)\n\nChange-Id: Ia4cc8be8424a40b3dcb7ebd0264fdff4e5247f7f\n"
    },
    {
      "commit": "28ea013f25626ca2a24600b5916ebe0dfc9e46cf",
      "tree": "ce5e1ee95b62c5aeaeb3b35d8b936c67c0a60f97",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "message": "Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\n\nuntil we get updated prebuilts from vendor.\n\nChange-Id: I8aae81d2513edca0ab268053a11c8c4206879e61\n"
    },
    {
      "commit": "1be4afecb752559092654c0e9f4ca302b6d04e9c",
      "tree": "797734f3693ef5ef035837fbd75d525024fd5253",
      "parents": [
        "d33f97f1965b34aae673585ad4734b536c3894ef",
        "9bc8358ddaa01c3490f9709991989633a6a3dd42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "message": "Merge \"audio framework: manage stream volume per device\""
    },
    {
      "commit": "9bc8358ddaa01c3490f9709991989633a6a3dd42",
      "tree": "12568959bb7bfd308ff2ef98c2e1ce0902ebdcd3",
      "parents": [
        "cc767191cfb675f744e0165608b0a4196aba2b37"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 18 16:43:31 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 15:15:04 2012 -0800"
      },
      "message": "audio framework: manage stream volume per device\n\nImprove volume management by keeping track of volume for each type\nof device independently.\nVolume for each stream (MUSIC, RINGTONE, VOICE_CALL...) is now maintained\nper device.\n\nThe main changes are:\n- AudioService now keeps tracks of stream volumes per device:\n volume indexes are kept in a HashMap \u003c device , index\u003e.\n active device is queried from policy manager when a volume change request\n is received\n initalization, mute and unmute happen on all device simultaneously\n- Settings: suffixes is added to volume keys to store each device\nvolume independently.\n- AudioSystem/AudioPolicyService/AudioPolicyInterface: added a device argument\nto setStreamVolumeIndex() and getStreamVolumeIndex() to address each\ndevice independently.\n- AudioPolicyManagerBase: keep track of stream volumes for each device\nand apply volume according to current device selection.\n\nChange-Id: I61ef1c45caadca04d16363bca4140e0f81901b3f\n"
    },
    {
      "commit": "fb6b5bdcea04c1fa6ccd046373f5ad3a62784713",
      "tree": "e41dc95066a917ab9767d84d3a449ff7361ec520",
      "parents": [
        "f56945e06aed28041f0f370c26b4b8986033c489",
        "accb114e59ca51f2a7d370f64de8e98bde158c51"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "message": "Merge \"Use audio_mode_t consistently\""
    },
    {
      "commit": "55fa4fb4a7926a4cae07b725f01d6498cbeabb4f",
      "tree": "f777458544a5d819333fb611c38651e6697b08cb",
      "parents": [
        "01cc1d1e8c917ef2e63f0bd3ac38232d41820ad0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "message": "Rename Visualizer::mLock\n\nThis avoids confusion with parent class AudioEffect\u0027s mLock which is\nprotected.\n\nChange-Id: I2ae0b0869fe3c606f682252973795b34477951d0\n"
    },
    {
      "commit": "8c17a2f0884527c3ce42a2c6dbd073014d179b53",
      "tree": "914455ede452e4c89c7c3d700fc68c6a2cb0b157",
      "parents": [
        "3c6b9cca79c872427599a325bcbb5d4a00113d80",
        "faf354dc7f8065a90174adb6e725603176f0044f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "message": "Merge \"Use size_t for frame size\""
    },
    {
      "commit": "faf354dc7f8065a90174adb6e725603176f0044f",
      "tree": "8b5b80b7b9c082bd226c0e25cc75d862b2db4054",
      "parents": [
        "fcbbaf1d837e96e77d0ec45a050e8a41060ae7f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 09:48:27 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 14:58:44 2012 -0800"
      },
      "message": "Use size_t for frame size\n\nexcept in the control block, where we don\u0027t have room.\n\nIn AudioFlinger::ThreadBase::TrackBase::getBuffer,\nread the frame size from control block only once.\n\nChange-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e\n"
    },
    {
      "commit": "bc1d77b6cbce23fbe25f7231651037ae195bc90e",
      "tree": "6936dbe05b0edbefe69c5c3452ba64ea72a2575a",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "b5c6ff59930a4f7b7efbcfac143fd4aed4315cb9",
      "tree": "46e68851f9af64e7c6c1ad32f443dcdfc022ec43",
      "parents": [
        "dc89357810976556d20483c7fe161b68ed4d2acf",
        "d1ba6ed94543b6d2af666e01f4ffd29412511400"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "message": "Merge \"Separate sniffing from session initialization\""
    },
    {
      "commit": "d1ba6ed94543b6d2af666e01f4ffd29412511400",
      "tree": "10d0b29f0a9b7b08cccae0a907595cc8f96f3d4a",
      "parents": [
        "1f7b23dda211f419f0a140b871de44339c4a10c7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 10 08:24:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:25:12 2012 -0800"
      },
      "message": "Separate sniffing from session initialization\n\nThis avoid lengthy/duplicate sniffing for drm plugins when a decrypt session is opened\n\no The change is backward compatibile in that no update is required\n  for existing drm plug-ins if they do not plan to provide separate\n  sniffer/extractor\n\nrelated-to-bug: 5725548\n\nChange-Id: I7fc4caf82d77472da4e2bc7b5d31060fb54fd84c\n"
    },
    {
      "commit": "1c66547ba25be6a1893df0ae26857f649474843a",
      "tree": "56b751b312560ea89f4d48ed49b5bd192ae1841d",
      "parents": [
        "cc9858049ddea5a28cbd1d6ee59dd814e21ef512",
        "1c5a89d4af193e3ce9be9992ffee0ab0a4d8da5a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "message": "Merge \"Use audio_format_t consistently\""
    },
    {
      "commit": "accb114e59ca51f2a7d370f64de8e98bde158c51",
      "tree": "eb017e61d48b4751b3f804c202332e70f71fd0f6",
      "parents": [
        "cc9858049ddea5a28cbd1d6ee59dd814e21ef512"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:00:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 09:52:37 2012 -0800"
      },
      "message": "Use audio_mode_t consistently\n\nIt was int or uint32_t.\nAlso make getMode() const.\n\nChange-Id: Ibe45aadbf413b9158e4dd17f2b3bcc6355288d37\n"
    },
    {
      "commit": "c57b0631925c0dc00a023216027037a7f7db682f",
      "tree": "1e8c352e3e6a658cc0ea1181a6bbbd69db7b617b",
      "parents": [
        "1eac460122c94455d28d4189ce12e23794b04148",
        "77b6aaf62d9f4ba4c653090e4d79b46228cdcdef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "message": "Merge \"Fix bug in JetPlayer::loadFromFile\""
    },
    {
      "commit": "f733831fc735ec9bdf7465dd64f861ffb7f42924",
      "tree": "4f857893913b93dd8868b7834776312b1c2bc804",
      "parents": [
        "ca61ea84993df6e7a380a8a3f5823c6232258a9c",
        "798ef8e882957e3edada7539c471ecc9c3721809"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "message": "Merge \"Declare IAudioTrack methods in binder opcode order\""
    },
    {
      "commit": "77b6aaf62d9f4ba4c653090e4d79b46228cdcdef",
      "tree": "a4523690932d082f561217899ea62921318eca47",
      "parents": [
        "38e90751a25606459a9e571aa1b6c992d4c64151"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 08:41:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:43:24 2012 -0800"
      },
      "message": "Fix bug in JetPlayer::loadFromFile\n\nA long pathname would corrupt the heap due to incorrect use of strncpy.\n\nAlso was using hard-coded constant 256 instead of PATH_MAX.\n\nChange-Id: Iba382bbb38624fbc41fec91449f9814f77d4ac0d\n"
    },
    {
      "commit": "798ef8e882957e3edada7539c471ecc9c3721809",
      "tree": "5fa2d67cf08a5641cc380a50f1f27b518a9485c2",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:50:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:35:57 2012 -0800"
      },
      "message": "Declare IAudioTrack methods in binder opcode order\n\nThis makes it easier to match up the declarations.\n\nChange-Id: I0996c20b2903b778b356dfe52b07b0ec634855dd\n"
    },
    {
      "commit": "1c5a89d4af193e3ce9be9992ffee0ab0a4d8da5a",
      "tree": "37cbdadbb8acf18fb022b3729c37c370ccbe853f",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 09:36:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 13:34:54 2012 -0800"
      },
      "message": "Use audio_format_t consistently\n\nWas int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.\nAlso replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by\nAUDIO_FORMAT_PCM_16_BIT.\n\nChange-Id: Ia8804f53f1725669e368857d5bb2044917e17975\n"
    },
    {
      "commit": "e6810ffaa19c6ad747d6f3ae7a38c7f572e9281e",
      "tree": "215f8078fbbe1b48bc44fb114472487f8385f544",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 09:42:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 11:55:24 2012 -0800"
      },
      "message": "Clean up AudioTrack::mActive and stopped()\n\nmActive is protected by mLock; volatile is meaningless on SMP.\n\nFixed a couple of places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\n\nAdded stopped_l() for cases where we already hold the lock.\n\nMade mActive a bool not int.\n\nMoved down a lock in setPosition that was being acquired too early.\n\nChange-Id: I73ff368e991c0db9f9472df0b3f96fd33fcc7311\n"
    },
    {
      "commit": "e5fb263a3625c0e6b4a9aefa86067bb9463dd06d",
      "tree": "bceb757165943cf03d96906b595c4b24bfde4218",
      "parents": [
        "e61fd281a8cb69ae45c5de4b160ab86226083152"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 14 10:28:06 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 14 14:38:26 2011 -0800"
      },
      "message": "Audio C++ comments\n\nChange-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1\n"
    },
    {
      "commit": "e7b3e09a5ed21dab938a7efdc215bb20d2769702",
      "tree": "8eb7926dfeac4f205e501e55b25ea30f2cfc38d2",
      "parents": [
        "848bffd8fa07f0e16d0ac5eed95085288ff43d9f",
        "52607c5364446df6ac5b2f55cb50e146e6023a4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 16:33:04 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 16:33:04 2011 -0800"
      },
      "message": "am 52607c53: am d12dc284: Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" into ics-mr1\n\n* commit \u002752607c5364446df6ac5b2f55cb50e146e6023a4f\u0027:\n  If an error occurs that prevents us from reallocating buffers during a format change\n"
    },
    {
      "commit": "848bffd8fa07f0e16d0ac5eed95085288ff43d9f",
      "tree": "b7ef7703f0a0b33df7d6a263c8cb3bfb5c371d9b",
      "parents": [
        "baeda5135bb1b4a87334c41834f3532ab73a4022",
        "074133b260f8d12e484e93b9aa5a33a4983b7349"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "message": "am 074133b2: am 351143fb: Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1\n\n* commit \u0027074133b260f8d12e484e93b9aa5a33a4983b7349\u0027:\n  Updated (internal) API for IStreamSource to signal discontinuities\n"
    },
    {
      "commit": "d12dc28460f622ab29e83fa688ad83a8263e9417",
      "tree": "47fa98e5e289300bbb65f48af427b4d6d68fa54b",
      "parents": [
        "351143fb0e2fcfb7dc2ef1045d693c71eb0ea329",
        "d03e7d62d5a5eda07e19b0bbc1eaa6ed82d860c5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "message": "Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" into ics-mr1"
    },
    {
      "commit": "a10613fea8e9d8a73385d37ad92f9c56d8828ce6",
      "tree": "5be4f71fbf79a2f5e1131d63b53a647ecc072f15",
      "parents": [
        "fed7a99a5294856d930e18225898828bd6755be1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:57:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:59:10 2011 -0800"
      },
      "message": "Updated (internal) API for IStreamSource to signal discontinuities\n\nChange-Id: Idd4b9d8e7cec16b3e3c91c70e75144d42be30f96\nrelated-to-bug: 5553055\n"
    },
    {
      "commit": "589364c7179e764f4e8b9c0d53f45a1abf528aa8",
      "tree": "630da1fa34f3bb28c799a2899b2a87d761089411",
      "parents": [
        "866103c00dd8028443ee8d7f9f3ca89f4acbc179",
        "9c151c58cb1bbd7dce97c7ad9ce7725922a850a0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 28 14:54:28 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 28 14:54:28 2011 -0800"
      },
      "message": "Merge \"Make AudioTrack a RefBase so wrappers not needed\""
    },
    {
      "commit": "d03e7d62d5a5eda07e19b0bbc1eaa6ed82d860c5",
      "tree": "e64d854927bfab0c6c1982002a2a071004d5aaf6",
      "parents": [
        "e35581ad5ad635f9dcfe4ab6a432c48b46b782cd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "message": "If an error occurs that prevents us from reallocating buffers during a format change\n\nwe need to transition to executing state anyway to be able to properly flush/shutdown\nin the future.\n\nChange-Id: Ie48bc09ea31942009ae3a5a45aabc9ffad9fb91f\nrelated-to-bug: 5655016\n"
    },
    {
      "commit": "72a845d53900048c13edf4a4ac33386f3332e838",
      "tree": "9b324d488f64d3989ed2fda81df376a9ed7b2f5e",
      "parents": [
        "5b17f73573e778c3ac22e41d13d4633f1f1d3f9f",
        "31626b3075335f4cf579342e99436bb45870cf55"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:43:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 22 08:43:28 2011 -0800"
      },
      "message": "am 31626b30: am cb6fbc89: Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1\n\n* commit \u002731626b3075335f4cf579342e99436bb45870cf55\u0027:\n  Report a runtime error instead of asserting on malformed avc configuration data.\n"
    },
    {
      "commit": "cb6fbc89c25298643ab342b4a228e772b0e56978",
      "tree": "66e96e1e6c7aa64d5bb6a84e10b46213fbf296a0",
      "parents": [
        "631885746868cbf03f89e655a6f4fac96449e8a4",
        "0ba8660ea6d88a1809508c31bd3b1da8e8dfabd3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "message": "Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1"
    },
    {
      "commit": "4e2ecdd8a78f25f4c234877d5321ebd4e4c0e8f7",
      "tree": "fc7fc0c14ceeb9811298b19197bc9c132a78883a",
      "parents": [
        "24692d6c9e35e99ec77f5fb57c53bfeef30315a1",
        "d0a254566f5f0be5607b4d64839a575c888c94f6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 21:08:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:08:55 2011 -0800"
      },
      "message": "am d0a25456: am 02740dc4: Merge \"Fix log spamming during time lapse video recording\" into ics-mr1\n\n* commit \u0027d0a254566f5f0be5607b4d64839a575c888c94f6\u0027:\n  Fix log spamming during time lapse video recording\n"
    },
    {
      "commit": "96af14d9b013496accf40a85a66fefcba3ac0111",
      "tree": "0d77b5fc0a82fc4b82bb1b1df83a92473cc0fb69",
      "parents": [
        "7859c1842c1f2e3c43415dfb5337a0b005bdb1c4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Nov 20 09:45:44 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 12:09:51 2011 -0800"
      },
      "message": "Fix log spamming during time lapse video recording\n\nChange-Id: I4fc0809203684ebb02eaf217d7abad00aefc898f\n\nrelated-to-bug: 5626569\n"
    },
    {
      "commit": "0ba8660ea6d88a1809508c31bd3b1da8e8dfabd3",
      "tree": "9e7a57f403f0bbe83e7c785b814cb03bc016c009",
      "parents": [
        "dea90a0e1c9c1d15657024893b6793dc21bc27ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "message": "Report a runtime error instead of asserting on malformed avc configuration data.\n\nChange-Id: Ibcd9c3fb5b6532eba843ed80ecdcdacaf50d8845\nrelated-to-bug: 5641069\n"
    },
    {
      "commit": "b447e9ce1d3dc603a8879340f36a4ca4f22d6b62",
      "tree": "0d9f68cf4a74e2602a74f38f7b2b66fd27350ad9",
      "parents": [
        "77c5f4def49357a89abd9849b0bab950179d71f4",
        "9c0227a63c9903cf407da4a713ff619e49c6bc73"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 17 07:14:29 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 17 07:14:29 2011 -0800"
      },
      "message": "Merge \"JetPlayer uses C++ Thread not createThreadEtc\""
    },
    {
      "commit": "9c0227a63c9903cf407da4a713ff619e49c6bc73",
      "tree": "fa4abf755c8d500a684879a00ddfa3f38a341075",
      "parents": [
        "5a4718183340a108b55eba7bf755b4432153caa1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 23 16:43:24 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 16 15:25:30 2011 -0800"
      },
      "message": "JetPlayer uses C++ Thread not createThreadEtc\n\nThis permits leveraging future improvements to Thread.\n\nChange-Id: I60deed8565ed54f13d9f770c76504e411b154276\n"
    },
    {
      "commit": "99d544332a6e79d9f4fa6d981f95e8ba6c037ab7",
      "tree": "ca499ce5649c307ed0c7f931c74adf0d6bdab68d",
      "parents": [
        "5a4718183340a108b55eba7bf755b4432153caa1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 16:15:25 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 16 14:52:55 2011 -0800"
      },
      "message": "Bug 4903178 Restore priority and cgroup on stop\n\nOn AudioTrack and AudioRecord stop or failed start, restore the priority\nand cgroup of the caller to their previous values, rather than forcing\nto NORMAL.  Dependent on new thread APIs.\n\nAlso fixes bug where priority was set to AUDIO but cgroup not set.\n\nChange-Id: Ib83893918fb4fdf57c6b87884b51038997a631d8\n"
    },
    {
      "commit": "9c151c58cb1bbd7dce97c7ad9ce7725922a850a0",
      "tree": "f49e533e15d3b6f4f603ef7aecb1e14880140600",
      "parents": [
        "78137d77991f129b349b258474ef8b5133b300d9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 15 13:55:13 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 15 14:26:09 2011 -0800"
      },
      "message": "Make AudioTrack a RefBase so wrappers not needed\n\nChange-Id: I2305abe586ac41251af04a194bc818c110a1b293\n"
    },
    {
      "commit": "481ffa505bb1d8f5089ea98e3b5960d409b6819c",
      "tree": "e27a4ae290b172cb6afc4d7559e32994e810762d",
      "parents": [
        "ce33622aed7fb25a14ef957cdc78b78cc4602be9",
        "7eb531970305f938c8e3bdc564bed6156fbd8f06"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Tue Nov 15 09:42:37 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 15 09:42:37 2011 -0800"
      },
      "message": "Merge \"Fix for issue  5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\" into ics-mr1"
    },
    {
      "commit": "7eb531970305f938c8e3bdc564bed6156fbd8f06",
      "tree": "afc50650e68ed32d453950ec32eff0904e969945",
      "parents": [
        "88089ccc79ee7ba5f48ade9bb73a99cf05f6ec62"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Thu Nov 10 14:54:26 2011 -0800"
      },
      "committer": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Mon Nov 14 13:02:59 2011 -0800"
      },
      "message": "Fix for issue  5309336\n-add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\n\nChange-Id: I41ffbc192fcce4c7635e5b0a1f2835852e5ee509\n"
    },
    {
      "commit": "77c500c9a1f763b31fb5a03c803b3523fcb72310",
      "tree": "9feafc0d06b27223cd189b22d7bf7bc2c82c11ef",
      "parents": [
        "785fd3685a69e5b3ef9c0958dcf4ae85f818e78d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Nov 09 00:48:56 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 10 11:40:11 2011 -0800"
      },
      "message": "Add support for retrieving location information in mp4/3gpp files\n\nChange-Id: Ib8427704ef9ee5a4fa8fe1818c8a62d77b4ea687\nrelated-to-bug: 5560253\n"
    },
    {
      "commit": "95be24585f46229f551c529104b5e92fa4316b38",
      "tree": "657706c23c41575c0a6bb092d2b7f42d3e67ea3b",
      "parents": [
        "27ed12492dfbec6ec67b66ff3cf60febce370b01"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 25 13:45:00 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 28 09:39:23 2011 -0700"
      },
      "message": "Remove surface legacy APIs and code.\n\nAll surfaces are now supported through surface textures.\n\nChange-Id: I95dd823e7099c0c32a48a1121624149dcc29d9c6\n"
    },
    {
      "commit": "fc9592f8a5f2f75207e5e532655ac294eb2b334b",
      "tree": "b9067a99e0d90eff2f54c9d2cc2150c0036c734b",
      "parents": [
        "859bf0f2efb7b5518055893c17aa3a6437023633",
        "08479ceeba56c460fb52f60a24df27776f1936c3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 28 02:14:01 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 28 02:14:01 2011 +0000"
      },
      "message": "am 08479cee: Merge \"Stagefright: ANW::connect in MediaPlayerService\" into ics-mr0\n\n* commit \u002708479ceeba56c460fb52f60a24df27776f1936c3\u0027:\n  Stagefright: ANW::connect in MediaPlayerService\n"
    },
    {
      "commit": "2fa0ac2e44f553e29b0d83a5dd87f7dda5422811",
      "tree": "557bc34832113716b320acc208ecdd584d83b793",
      "parents": [
        "ed12460301cf0e04ac61993aaf1142f75f504814"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 26 18:36:31 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 26 18:40:00 2011 -0700"
      },
      "message": "Stagefright: ANW::connect in MediaPlayerService\n\nThis change moves the ANativeWindow connect and disconnect logic from\nMediaPlayer to MediaPlayerService::Client.\n\nBug: 5502654\nChange-Id: Ifc43b98b01ad8f35d62d7ece43110724ec7fda3d\n"
    },
    {
      "commit": "5ded5fc55f2da2af0a76a9ddc52d27948b227037",
      "tree": "56d574dfaee8cd32f7f732a90e247f5cedafc1f5",
      "parents": [
        "6f444425fe1bb62e12973c5df6a3161bc2aa2ce7",
        "b7b4eaaa05284634d50d581d924a250f1194f66d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 26 20:34:38 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 26 20:34:38 2011 +0000"
      },
      "message": "am b7b4eaaa: Merge \"Stagefright: push blank buffers when tearing down\" into ics-mr0\n\n* commit \u0027b7b4eaaa05284634d50d581d924a250f1194f66d\u0027:\n  Stagefright: push blank buffers when tearing down\n"
    },
    {
      "commit": "c0e4293794e9658da1ce9849a42c66ce19ef5f07",
      "tree": "b898e7f88b43b44cbac4f673471015c676b8d08b",
      "parents": [
        "be25d5b05639c8475b7faf312959923db86efa5d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Oct 25 14:50:16 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Oct 25 18:35:02 2011 -0700"
      },
      "message": "Stagefright: push blank buffers when tearing down\n\nThis change makes OMXCodec push RGB 565 buffers filled with black to an\nANativeWindow when tearing down after decoding to protected gralloc\nbuffers.  This allows the OMX tear down to zero out any protected\nbuffers that were used without the possibility that the buffer is still\nbeing used by SurfaceFlinger or HWComposer.\n\nBug: 5483222\nChange-Id: I8acedd81a7bb67dfdc2fd15733e3375b6ce8d560\n"
    },
    {
      "commit": "149a14931e5aa4beb8c4263995f01437a8918465",
      "tree": "ca6e2d3cdc8c93d963fb22329c02f6d1f4910c98",
      "parents": [
        "c919cd77eee93b55e0ab2f8495d200b9defdf2c0",
        "23d644202a44383bf008ff86f6faa3ea7e447290"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Oct 19 22:38:45 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 19 22:38:45 2011 -0700"
      },
      "message": "am 23d64420: Merge \"Stagefright: idle OMX after ANW errors\" into ics-mr0\n\n* commit \u002723d644202a44383bf008ff86f6faa3ea7e447290\u0027:\n  Stagefright: idle OMX after ANW errors\n"
    },
    {
      "commit": "6607b39baa05ee85a0857c3f95ff9224517b2abc",
      "tree": "762f143a7abc692a1ef2f25d2356f1774e8bfab7",
      "parents": [
        "5310a731eab664352044781d4b107b4837ea77ac"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 19 21:14:13 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 19 21:22:19 2011 -0700"
      },
      "message": "Stagefright: idle OMX after ANW errors\n\nThis change fixes an issue in Stagefright where the state of an OMXCodec\nobject can get out of sync with the state of the OMX component.  In\nparticular, if one of the ANativeWindow functions failed and put the\nOMXCodec into the ERROR state, this would cause Stagefright to skip\ndoing the Executing -\u003e Idle transition.  Without this transition the\nfreeBuffersOnPort call would never be made, and the MediaBuffers would\nend up being leaked (which would also leak the Gralloc buffers they\nreference).\n\nBug: 5333695\nChange-Id: I85ea0cf92d18e7ef6d35c7d1e2a7b4e2c9745d34\n"
    },
    {
      "commit": "0eb6ef1798362d15696618debdb2478b386398c5",
      "tree": "b8fb88c8fcc85ed6f33bcc7ace0188dc72772ecd",
      "parents": [
        "df3975c5aee17cc365b854e616d8831b45809db0",
        "bc554956128d69d8d2e60365fb6cffe6facf659b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 13 10:03:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 13 10:03:26 2011 -0700"
      },
      "message": "Merge \"Support for an MPEG2 Program Stream extractor.\""
    },
    {
      "commit": "db62a245f968159ea5ff8ad99afb4cd035e2304d",
      "tree": "09cbb61511de7a81a17b57edb11e8898ee38f2c5",
      "parents": [
        "b4e7d4ca7502bb8ff599229ec90c1bf5b481f2f7"
      ],
      "author": {
        "name": "Lakshman Gowda",
        "email": "lakshman79@ti.com",
        "time": "Thu Sep 29 17:47:35 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 05 10:29:27 2011 -0700"
      },
      "message": "Set crop params to ANative Window during Initialization.\n\nThe native_window_set_crop() is called when port reconfig event callback comes from decoder\u0027s and\ncrop parameters are changed from default getconfig() OMX_IndexConfigCommonOutputCrop values.\nSince the default crop params are same as port reconfig crop params, the native_window_set_crop()\nis not called, hence resulting in displaying the whole frame(paddedWidth x paddedHeight).\nBy calling native_window_set_crop() during initilaization of output port of decoder ensures\nin setting up ANative window to crop region.\n\nChange-Id: I68926464a1f5c7e6053804615c8b9bd32ea85688\nSigned-off-by: Lakshman Gowda \u003clakshman79@ti.com\u003e\n"
    },
    {
      "commit": "bc554956128d69d8d2e60365fb6cffe6facf659b",
      "tree": "8a84036682044f96b5b5aade1b18add9c40e86f3",
      "parents": [
        "ce0a7ade96ddbdcb342e0b382e9d3ea43962cafd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 08 14:12:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 30 15:26:31 2011 -0700"
      },
      "message": "Support for an MPEG2 Program Stream extractor.\n\nChange-Id: I606d87c278f72b22a5b6d7ee57bce6b02e280d41\n"
    },
    {
      "commit": "9a6ed36ba55a206934937cfafca7e797e8c6ea00",
      "tree": "5a4edaf522cfaa16037f4298d842602bafe9df32",
      "parents": [
        "1402bb19012d4fc7595da2586bec9e6f428b36fb"
      ],
      "author": {
        "name": "Gilles-Arnaud Bleu-Laine",
        "email": "gilles@ti.com",
        "time": "Thu Sep 15 21:30:13 2011 -0500"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 30 10:46:12 2011 -0700"
      },
      "message": "Gracefuly return on detecting wrong AAC format from corrupted files\n\nReturn BAD_VALUE error upon detection of wrongly formatted files.\nThe client should abort the initialization upon error detection.\n\nThe current CHECK() interrupts the configurecodec() preventing a graceful\nexit.\n\nChange-Id: Ic79313fa76a63284897df5d91635de87d06f3100\nSigned-off-by: Gilles-Arnaud Bleu-Laine \u003cgilles@ti.com\u003e\n"
    },
    {
      "commit": "3e408f39ef1c0513908a3b73da5ce6f4164e85d9",
      "tree": "bd82b382b4d57aa40362b376dd9473114584b7cf",
      "parents": [
        "9a3d51ed1090d459666c3257923b16eca842bb10"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 28 12:37:36 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 28 12:37:36 2011 -0700"
      },
      "message": "Support AMR, G.711 and vorbis audio in ACodec and friends.\n\nChange-Id: I08c03219bf2d60fc5c6e89957bd4b4c615570983\n"
    },
    {
      "commit": "928baf1f5480f67c1916a933d691e38de4f0a575",
      "tree": "bab54f6848e44f3722502ce31c5734bede91e5e2",
      "parents": [
        "3bade9504a648ce7606b876dc7d71b4684e279c9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 26 10:53:29 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 26 10:53:29 2011 -0700"
      },
      "message": "Propagate error signalled by the source all the way to the output EOS notification.\n\nChange-Id: I30e959a6d669f09745c59fbdebee08f869511cf7\nrelated-to-bug: 5372901\n"
    },
    {
      "commit": "07b9ae33127212fd9e15f96fa89b7d4cab81e55e",
      "tree": "2649cc7409bb00e3037451e156931cee3cafe837",
      "parents": [
        "79aa40302b643ee6c6227ee354a1b1378e721568"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Sep 19 16:27:31 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Sep 19 19:32:26 2011 -0700"
      },
      "message": "Add QVGA resolution to CamcorderProfile\n\nChange-Id: Icebbafb68d8164370f98a2c36699845d10ef081b\nrelated-to-bug: 5145483\n"
    },
    {
      "commit": "1318864fa7ce6c85aaf629b1db08c79e4d0cf41e",
      "tree": "0a55adab2711acd93131bf933dd5b8f638c2a7d9",
      "parents": [
        "e71ffeb7e0eaa181130aaaad18a94ef3ab73ecb1",
        "0209da1cb177888af6c58e9bcc13c5d9665d6354"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Sep 14 17:42:22 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 14 17:42:22 2011 -0700"
      },
      "message": "Merge \"Change an assert failure due to unsupported level by HW AVC decoder and report the error to applications\""
    },
    {
      "commit": "3f0c821740305c352eb355ba3d72906a7a97751c",
      "tree": "37e771ac039d0b0578bc7266ea9122771edf7c99",
      "parents": [
        "d4fdc0f5621098d89c686a0edbfc22247005c46c",
        "7e8626fd7580dc5e0d4b4e4ceef0988067b60037"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 17:50:31 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 13 17:50:31 2011 -0700"
      },
      "message": "Merge \"Issue 5298399: Lost speech after a crash in gTalk.\""
    },
    {
      "commit": "7e8626fd7580dc5e0d4b4e4ceef0988067b60037",
      "tree": "f0737733bd57b2f217abe1154143e40ec5ec5e0a",
      "parents": [
        "3705b22c9704050dfb46d784ae84e9d7f9357ad4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 15:04:17 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 17:33:29 2011 -0700"
      },
      "message": "Issue 5298399: Lost speech after a crash in gTalk.\n\nFixed problem in AudioTrack::restoreTrack_l() causing a permanent\nfailure if the IAudioTrack interface to AudioFlinger could not be\nrestored at the first attempt.\n\nChange-Id: I039d4fe2dca8d3baf71f1a6c51119f27a67b6611\n"
    },
    {
      "commit": "0209da1cb177888af6c58e9bcc13c5d9665d6354",
      "tree": "881903a5c7f6df847531cdb98a4d7ffffaf2431d",
      "parents": [
        "62bb0cdc746e850c2d2d5da4f6c7a38f8782f4bc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Sep 12 19:56:23 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 13 11:00:17 2011 -0700"
      },
      "message": "Change an assert failure due to unsupported level by HW AVC decoder and report the error to applications\n\nChange-Id: I522a994981d86329ccc86c3b536b561dc6e40eeb\nrelated-to-bug: 5300618\n"
    },
    {
      "commit": "d41108c91fcf2f7a47b733c61ee5983cf22bd6a8",
      "tree": "dd9c47c44c3fbabd34dd29f5711f3ba1e7b2e49c",
      "parents": [
        "92bda84b11ba2aec98036313784444d9f5aebc9a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 12 14:14:08 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 12 14:14:08 2011 -0700"
      },
      "message": "Turn an another assertion into a runtime error in ACodec\u0027s implementation\n\nChange-Id: I6779b29f200b90d088273ab3204724ef3d8d59bd\nrelated-to-bug: 5284760\n"
    },
    {
      "commit": "973f553be4aabf9656d6c1596b47767896677b0a",
      "tree": "0a41919bfce6237a4bb6332e6c463d630c34e738",
      "parents": [
        "7b8d7cb59cfdc492df920b0c48960a691994f598"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Sep 07 23:55:27 2011 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Sep 09 15:36:42 2011 -0700"
      },
      "message": "Make MediaScanner skip certain directories\n\nThe list of directories to skip are configurable via setprop.\nThe main motivation is that some test data folder takes long time\nto scan, and media scanner may compete for CPU time against perf\ntests therefore skewing the results.\n\nBug: 5263115\nChange-Id: I568213e2a4babf6033021c1d336ef0347c0e3315\n"
    },
    {
      "commit": "fc301b0bb5c635c6bb51b48c504a8db5f9010e5c",
      "tree": "463dec648e238d2e6821a86d121f2a3f8048b3ff",
      "parents": [
        "117999d1f44ec3423369385495ae207898b7b73e"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Aug 30 14:39:17 2011 +0100"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Sep 02 11:26:59 2011 +0100"
      },
      "message": "Require INTERNET permission for network-based content.\nBug #1870981\n\nChange-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f\n"
    },
    {
      "commit": "abf82f9ea4960ead8716b183aac1792820cccdd1",
      "tree": "e40a06b99792fda8d533dd87a8b584816088f0cf",
      "parents": [
        "a6ec356d2f5d2829fd8eff315a37f49501eac842",
        "ffd056fc73d852f15c32355443e3c88813df5ec6"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 31 22:00:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 22:00:35 2011 -0700"
      },
      "message": "Merge \"Incr. MIN_UNDEQUEUED_BUFFERS in SurfaceMediaSource\""
    },
    {
      "commit": "ffd056fc73d852f15c32355443e3c88813df5ec6",
      "tree": "452c9470c02b4dba496f5f0cb43287afec44935d",
      "parents": [
        "2c5423da4e3b23c0381952da2671f05a7501f9af"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Mon Aug 29 19:53:51 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 31 17:43:24 2011 -0700"
      },
      "message": "Incr. MIN_UNDEQUEUED_BUFFERS in SurfaceMediaSource\n\nThe buffers in SurfaceMediaSource were 4 earlier, whereas\nwe need 5 for one of the devices.\n\nChange-Id: I87bf5e28bbb0f7c9661dc01b040baa903d95d2c2\n"
    },
    {
      "commit": "b2c4f0bf11f38fd31d80f1256c89b9db043a2929",
      "tree": "d5d08a3a5cf189a5a5bc6ffeebf3a02e0464cb68",
      "parents": [
        "6752d4827dee6bf5fb52cae61c00690e23d0b779",
        "728e08bc3fd99dc64f436270f53c22f3457204a8"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 31 13:41:06 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 13:41:06 2011 -0700"
      },
      "message": "Merge \"Fix SurfaceMediaSource timestamp handling.\""
    },
    {
      "commit": "0e35c78d25a8df8b3bde566ad6c474f9df242ea4",
      "tree": "257814957ad7bdfc43cb5527c4a22e9e25b88d6f",
      "parents": [
        "d0116b680a2c194eb3b8713a230151bfb32a6aef",
        "05ce0941649c3cdd7f8034496719e607977fc005"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:51:54 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 30 10:51:54 2011 -0700"
      },
      "message": "Merge \"226483: A2DP connected, but music out to speaker\""
    },
    {
      "commit": "728e08bc3fd99dc64f436270f53c22f3457204a8",
      "tree": "6e0efa9d9432a616777db0c3ddd7c06e646d706e",
      "parents": [
        "2db44c5838fb0bb35092a19f31ee887892a451a1"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 29 18:16:03 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 30 10:49:15 2011 -0700"
      },
      "message": "Fix SurfaceMediaSource timestamp handling.\n\nWas not basing timestamps on startTimeUs.\nNow synchronizes properly with audio.\n\nBug: 4510826\nChange-Id: I613db0aa91e51fc75d120e65540e742d8ab2ae43\n"
    },
    {
      "commit": "05ce0941649c3cdd7f8034496719e607977fc005",
      "tree": "1e507788895e36bcd18b37cd109ec90e7c46d90c",
      "parents": [
        "2c5423da4e3b23c0381952da2671f05a7501f9af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:18:54 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:19:38 2011 -0700"
      },
      "message": "226483: A2DP connected, but music out to speaker\n\nWhen the A2DP headset is connected, there is a possible\nrace condition when the audio tracks are moved from\nthe mixer thread attached to the speaker output to the thread\nattached to A2DP output.\nAs the request to clear the stream type to output mapping cache in\nthe client process is asynchronous, it is possible that the flag\nindicating to the client audio track to re-create the IAudioTrack\non the new thread is processed before the cache is invalidated.\nIn this case, the track will be attached to the old thread and\nmusic will continue playing over the device speaker instead of being\nredirected to A2DP headset.\n\nChange-Id: Ib2ce1eb5320eaff83287b93779061bf4e7a330df\n"
    },
    {
      "commit": "b8a9e15c2aa3d317834555244a90f184b46e1dcb",
      "tree": "2ef6393df0109ee6f4e20b75b82e6a632b85de79",
      "parents": [
        "2b9c5d8a89065ab18e58d79ae65a81267b248e1c",
        "4da5660eee240cea3f7411a0ed5a1120bccdeb45"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 20:05:58 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 26 20:05:58 2011 -0700"
      },
      "message": "Merge \"Modify enum value of OMX_COLOR_FormatAndroidOpaque\""
    },
    {
      "commit": "4da5660eee240cea3f7411a0ed5a1120bccdeb45",
      "tree": "89bbeb1d89c09a97aaf87a7d00f4e88df8b13ebf",
      "parents": [
        "9fe4459797db3ee9b18e613ef3c377a9401acd37"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 19:34:49 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 19:38:13 2011 -0700"
      },
      "message": "Modify enum value of OMX_COLOR_FormatAndroidOpaque\n\nThe enum value chosen earlier had a conflict with one of the vendors.\n\nChange-Id: I47832dd1157447f89324d56e8ab146260cd7927c\n"
    },
    {
      "commit": "539340fe2c3dfd33564c1ddc9ee5c2884aa56874",
      "tree": "a45a6b702449ba71b59315c20e80cc07979ac773",
      "parents": [
        "dae908a391222710d26692ee5fcf307fd96197a2",
        "e688257456c315cbd2d5fd4f32bd52eac0b98195"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 26 13:47:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 26 13:47:26 2011 -0700"
      },
      "message": "Merge \"Support for posting messages and synchronously waiting for a response.\""
    },
    {
      "commit": "22cb204cbb9fadd0a909e0e918c0cb19c60da740",
      "tree": "a3f242a5441545fcc1c4ec2b56ee8dd424978b80",
      "parents": [
        "1fc756da434441708eb557a22363eea7f41f3f73"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 25 16:47:23 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 25 17:33:49 2011 -0700"
      },
      "message": "Bug 4364249 Play position is 0 after flushing AudioTrack\n\nAudioTrack::stop() is not synchronous, so a stop() followed\n by flush(), which is synchronous, will not always report\n a playhead position of 0 after being called.\nThis CL adds a flag to mark a track as flushed, and report the\n correct playhead position in this state.\nBug 5217011 has been created to address the real issue in the\n future, where flush could be made synchronous, to properly\n address bug 4364249.\n\nChange-Id: Icf989d41a6bcd5985bb87764c287f3edb7e26d12\n"
    },
    {
      "commit": "e688257456c315cbd2d5fd4f32bd52eac0b98195",
      "tree": "d70df4feb8c2adca64eee969fb273d0f072ffa13",
      "parents": [
        "1aabd124bc642e61f491df74c1efb4e18b34c63a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 25 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 25 16:28:18 2011 -0700"
      },
      "message": "Support for posting messages and synchronously waiting for a response.\n\nChange-Id: Id6c7a08c34fd5cb6c4632f78ece9e7898b29e52c\n"
    },
    {
      "commit": "557b7092cc9a1dfe766ac3d0421e1049c653c4ae",
      "tree": "4434bf618807f7e1c6000fb926d85a89ad2d6600",
      "parents": [
        "defa12e95b8d25db5f3e9a044e83d6fe680b67a3"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Aug 18 21:53:02 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 24 13:57:46 2011 -0700"
      },
      "message": "Testing the GL/ CPU encoding w/ Gralloc buffers\n\nThis is the test for Gralloc buffers based encoding.\ncontains a combination of two main changes:\n\n1. GL based encoding tests added to SurfaceMediaSource_test\n\n2. SurfaceMediaSource ::read() colorformat\n\nThe SurfaceMediaSource::getformat() sets it to OMX_COLOR_FormatAndroidOpaque.\nThe omx encoder needs to interpret that colorformat and reads the format\nfrom the Gralloc buffers directly\n\nChange-Id: Iee2fe8901384109a4952e1d6c528c59eb01eb5b1\n"
    },
    {
      "commit": "3ced044154945f9d60983032278e00fe28f4ab1b",
      "tree": "84dc5de0042328edd75dc1a24982e7f3af9f92c9",
      "parents": [
        "16296180984756e631611005179f42865af35621"
      ],
      "author": {
        "name": "Rajneesh Chowdury",
        "email": "rajneeshc@google.com",
        "time": "Fri Aug 12 16:43:37 2011 -0700"
      },
      "committer": {
        "name": "Rajneesh Chowdury",
        "email": "rajneeshc@google.com",
        "time": "Fri Aug 19 14:34:47 2011 -0700"
      },
      "message": "Fix for 4142219 Don\u0027t hard code platform-specific limitations (Jni/ Java)\n\nAlso fixes 5118207 add other video codec support for video editor export.\n\nChange-Id: If72427173bd8ff684af07ba00f4425c1deef29c6\n"
    },
    {
      "commit": "d84fd7927eaf70fb7b9a55dd6c2adccfa66009ac",
      "tree": "e6051a1e65e85f1d6db1a1cd50b4c55b7153e9c4",
      "parents": [
        "7a9effebcf84dcbd820cafe6886a5562cb3d8e22"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "message": "Error handling in ACodec and Nuplayer.\n\nCodec errors (and codec not found errors) now trigger a controlled shutdown\nof playback and signal errors to the MediaPlayer client.\n\nChange-Id: I2ee23ff2a1422d05a1a21e50ecb87d7c7ab958cc\n"
    },
    {
      "commit": "6752ec80b25cb1f39507d18745c7e62323772cda",
      "tree": "a60b43960ba842d1a853337080a568941de42df4",
      "parents": [
        "246ae5011c385d100f73b441ce7e47a6ea7e33ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 10 10:37:50 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 11 14:33:45 2011 -0700"
      },
      "message": "Audio effects: track CPU and memory use separately\n\nBefore this change, CPU and memory usage for an audio effect were\nregistered and checked against the limit by audio policy manager\nupon effect instantiation. Even if an effect was not enabled\nit would prevent another effect to be created if the CPU load budget\nwas exceeded, which was too restrictive.\n\nThis change adds a method to register/unregister CPU load only when\nan effect is enabled or disabled.\nIt also adds a mechanism to place all effects on the global output mix\nin suspend state (disabled) when an effect is enabled on a specific session.\nThis will allow applications using session effects to have the priority\nover others using global effects.\n\nAlso fixes some issues with suspend/restore mechanism:\n- avoid taking actions when an effect is disconnected and was not enabled.\n- do not remove a session from the suspended sessions list when corresponding\neffect chain is destroyed.\n\nChange-Id: I5225278aba1ae13d0d0997bfe26a0c9fb46b17d3\n"
    },
    {
      "commit": "422e3f749697ee264ea377bf92e6b65912ba7978",
      "tree": "0850381095975f3b8aeaa23e9aa6dbe11ad2ec86",
      "parents": [
        "aba367eea4792a1d3778061181e3a38e188f4f06"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 10 12:45:24 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 10 12:45:24 2011 -0700"
      },
      "message": "Revert \"Notify the OMX component that it\u0027s going to be used in \"secure\" mode.\"\n\nThis reverts commit 7616178271e95f009452a21ea45e7225997dc27a.\n"
    },
    {
      "commit": "f6d08b95289ec9069fa2f3789dbfc4748dbb4883",
      "tree": "11bd4321dc42756d85d49786196ffb43536318ce",
      "parents": [
        "7466b0fdfe6ae07e56053d70db414b7a2f792400",
        "43a3d91dff059034d699c9612dab68b8d9cdf556"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 09 15:23:19 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 09 15:23:19 2011 -0700"
      },
      "message": "Merge changes Ie06e73e5,I7ac6b5b0\n\n* changes:\n  free all buffers when ANativeWindow::disconnect is called\n  return correct value from query after connecting a surface\n"
    },
    {
      "commit": "c74b93fdf3ddb6fdab7878edab4d304fb14917f9",
      "tree": "96a1db2deffc309c16b63d5e4dc1fda165b6ed8e",
      "parents": [
        "a4418e0fd94f27c0b40abe17d42af0880cb3effb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 02 13:33:41 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 09 10:21:10 2011 -0700"
      },
      "message": "Keep effects sessions active when the caller dies.\n\nDon\u0027t remove effects until the session they are in goes away or all\nAudioEffects have been explicitly released. This allows the control\npanel process to die without stopping the effects.\n\nChange-Id: I4496e5df080230ca1af149dec95c1309ab8ea888\n"
    },
    {
      "commit": "053b02df2d350466a2226a90709e50fedef54747",
      "tree": "28a844d96bfc2fdd0e3714305a8cb86e977a1d90",
      "parents": [
        "fc4ba1141570fab7734e53586dc3d6f3afde10de"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 19:14:03 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 20:25:44 2011 -0700"
      },
      "message": "return correct value from query after connecting a surface\n\nthe first time a surface was connected, the values returned\nby query NATIVE_WINDOW_DEFAULT_{WIDTH|HEIGHT} and\nNATIVE_WINDOW_TRANSFORM_HINT were wrong until a call\nto queueBuffer was performed.\n\nBug: 5137366, 5121607\nChange-Id: I7ac6b5b0daa876638f6bed7c20f286a6e6d984f6\n"
    },
    {
      "commit": "7616178271e95f009452a21ea45e7225997dc27a",
      "tree": "09f0833599cd31c29010cc678b05224b04aef882",
      "parents": [
        "e7a0bc0126e3d4cb6ec268ed847f5ea4cc70f7c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 08 15:28:21 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 08 15:28:21 2011 -0700"
      },
      "message": "Notify the OMX component that it\u0027s going to be used in \"secure\" mode.\n\nChange-Id: Id87c4b295eb38f7d24045918e73df298d7b842f9\nrelated-to-bug: 5137212\n"
    },
    {
      "commit": "e38a2cba16f2161a3a41521c84325cc5c24d9668",
      "tree": "f685b0a22c9237e5d84717b86aaf4797446b0348",
      "parents": [
        "e30d6f1588a47fa4ad57a1de7bb28a7a0c58dedf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 04 15:05:17 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 04 15:05:17 2011 -0700"
      },
      "message": "Eliminate superfluous memcpys by wrapping an ABuffer in a MediaBuffer\n\nChange-Id: I1313f117cd7cdfaf7d6ec25413a0b4b8ea495037\nrelated-to-bug: 5122973\n"
    },
    {
      "commit": "6ff9b812abe388478bbaba118a580c3f4a30c863",
      "tree": "419eae586adb35add8ac2a88227564830a6ddb3d",
      "parents": [
        "72de151fdb82e5e010c3461e37e492b8cce9b44a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 25 09:26:22 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 27 10:21:09 2011 -0700"
      },
      "message": "Bug 4599730 Get audio channel count on MediaPlayer\n\nRelated changes:\n - Fix bug in get/setParameter* to recycle Parcels when done with them.\n\nChange-Id: Iaff05e91bbd99a14fccb79d816dd873359b6ae65\n"
    },
    {
      "commit": "19f773bc96c141227fab3af68d9fcdf9a3c087cb",
      "tree": "dfd5e8a936eba7c270b917fcc3574ad52d38a1c3",
      "parents": [
        "c854b9c05eafdaeb7e33c8e8bbcbce3668ac7ec6",
        "b1f8c266e47554bc45632f021c9e409399e907e7"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Mon Jul 25 15:00:16 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 15:00:16 2011 -0700"
      },
      "message": "Merge \"Adding Metadata mode to SurfaceMediaSource\""
    },
    {
      "commit": "234cef81299688db75edb6572e37374a67f79bbc",
      "tree": "3fa3964aa740ef9c81204f995fd780dcfe6244e6",
      "parents": [
        "fb526513056eb275a8ad7ff7998e2e56be8fd467",
        "0f7f4ece1b6b73caf608d533d833a8cdc11c8131"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 14:43:05 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 14:43:05 2011 -0700"
      },
      "message": "Merge \"Added APIs for audio preprocessing\""
    },
    {
      "commit": "0f7f4ece1b6b73caf608d533d833a8cdc11c8131",
      "tree": "0f8a57676ec5ac53b22594b5f754a6216c720651",
      "parents": [
        "84e35d995f0b804a322e9e07fd1a0341658763ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 24 13:36:09 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 14:39:00 2011 -0700"
      },
      "message": "Added APIs for audio preprocessing\n\nAdded APIs to control pre processes applied on captured audio.\nThose APIs are still hidden until reviewed by API council.\n\nThree types of standard pre processes are supported:\n- Automatic Gain Control (AGC) by AutomaticGainControl class\n- Acoustic Echo Cancellation (AEC) by AcousticEchoCanceler class\n- Noise Suppression (NS) by NoiseSuppressor class\n\nA method is added to AudioEffect class to query audio pre processings\napplied by default by the platform on a given AudioRecord session ID.\n\nChange-Id: I0b9fceeb8c704dd06319c3b52b85c96fe871d51d\n"
    },
    {
      "commit": "fb526513056eb275a8ad7ff7998e2e56be8fd467",
      "tree": "97f56fa60700a32258b9fe466403fb4dafb950c9",
      "parents": [
        "84e35d995f0b804a322e9e07fd1a0341658763ef",
        "83dd43f45aa3212239acfb35d799216e840c9e2f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 25 14:21:14 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 14:21:14 2011 -0700"
      },
      "message": "Merge \"Do not support still image capture mode for timelapse video recording\""
    },
    {
      "commit": "e432a0005180ba9ac2c1d7822c4761b475fddc51",
      "tree": "88ed405f2e6d39e93fc332536319836562321f27",
      "parents": [
        "d40e2c67ed6423355aeb1292b33c2f8a20b3c84d",
        "d9ac621f590c51bdc38b46d5aabba2dbc84cbd58"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 24 14:40:08 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 24 14:40:08 2011 -0700"
      },
      "message": "Merge \"Do not wait forever for output buffers in OMXCodec.cpp and error out in case time out happens\""
    },
    {
      "commit": "d40e2c67ed6423355aeb1292b33c2f8a20b3c84d",
      "tree": "673b5cb61a68f3a85bccdee1e6aa0f79b180c100",
      "parents": [
        "da6e4a7d9dd8100f62de018159c4b05c17f665e3",
        "a05f099301ca9d5efd4db549295401ee00b439a0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Jul 24 12:59:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 24 12:59:35 2011 -0700"
      },
      "message": "Merge \"QueryCodecs() signature change\""
    },
    {
      "commit": "83dd43f45aa3212239acfb35d799216e840c9e2f",
      "tree": "8ba247f848114bca7e71e2a41f5b9fec74e2b1b8",
      "parents": [
        "895de9269fa125bf3903c21faf5e8d2750bfb000"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 29 16:56:52 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 24 10:33:54 2011 -0700"
      },
      "message": "Do not support still image capture mode for timelapse video recording\n\nrelated-to-bug: 4973779\n\nChange-Id: Ica665217ab10247b2242acc4e93d4fe9f83e3f45\n"
    },
    {
      "commit": "b1f8c266e47554bc45632f021c9e409399e907e7",
      "tree": "5d0633fe15e687d9946195352fa106e4f3fe3ce5",
      "parents": [
        "897e27bc75886e44d2f9f09155127f401c4173ea"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jul 14 14:37:47 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 19:33:55 2011 -0700"
      },
      "message": "Adding Metadata mode to SurfaceMediaSource\n\nSurfaceMediaSource operates in metadata mode only, i.e. just the\nmetadata is stored in videobuffers. SurfaceMediaSource passes the Gralloc\nbuffer handle along with a 4 byte \u0027type\u0027 (indicating that the metadata\nis of type GrallocSource) to the encoder as opposed to the\nGrallocBuffer itself.\n\nRelated to bug id: 4529323\n\nChange-Id: I83aebc0dd10f317658cdf70be5802dfc35a1e72d\n"
    },
    {
      "commit": "65cdc2b7b6759c3d13f78b2a00ed1c11f840db4f",
      "tree": "6d1a094cc63dfe6c958bbf6036bfa81e99c94bda",
      "parents": [
        "bbb85c8e4e4e67f4fa018694b587fd3228b0d1b2",
        "897e27bc75886e44d2f9f09155127f401c4173ea"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 16:42:41 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 22 16:42:41 2011 -0700"
      },
      "message": "Merge \"Connect MediaRecorder Native to SurfaceMediaSource\""
    },
    {
      "commit": "a05f099301ca9d5efd4db549295401ee00b439a0",
      "tree": "3e9b1bf6ce6b55d72b88662b7363826258ea13dc",
      "parents": [
        "47d4caf41b052ab88f747ccc789754be5f44f8af"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 22 09:52:39 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 22 14:51:51 2011 -0700"
      },
      "message": "QueryCodecs() signature change\n\nRestore QueryCodecs() signature exactly as used by third-party libs.\nAdd an alternative function to select HW only codecs.\n\nChange-Id: Ibb2cb4dd36fc0c6599eb93aa5751c216397e3b6f\n"
    },
    {
      "commit": "5ef59bc764d6bcd0ccf0a266d7d9ab792668a3e9",
      "tree": "aa5b98091b69c5f5d65618acd90b0e6ebf543ec3",
      "parents": [
        "b71a4beb1afb3f91201cd416e8e56733ba17913e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 12:08:33 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 14:20:41 2011 -0700"
      },
      "message": "SurfaceTexture: add the abandon method.\n\nThis change adds the \u0027abandon\u0027 method to the SurfaceTexture C++ class.\nThis method may be used to put the SurfaceTexture in an abandoned state,\ncausing all ISurfaceTexture methods to fail.\n\nChange-Id: Ibd261f7b73f44e2bec36a8508bf92113cfb7cf95\n"
    }
  ],
  "next": "897e27bc75886e44d2f9f09155127f401c4173ea"
}
