)]}'
{
  "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": "d96e3dfa02b203b1fc826e80d6f9aa074ba9c250",
      "tree": "a91a318c43620b6523bd2e83be01632f223b153c",
      "parents": [
        "43ea4e10dc402d20f506cdb4b4f27e49b4dc0443"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:12:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:14:50 2012 -0800"
      },
      "message": "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.\n\nChange-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598\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": "540c35f7aa01f7eba849148ea8b22eff351ce16d",
      "tree": "da40eb567c9bc1eb47292dc03d4295ea1554aa4d",
      "parents": [
        "96c804af0b4eef79f6d3cdb0f20682e243f1b73d",
        "0632bad8bad41bc44184596478ec2d203d52096f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "message": "Merge \"Track volume cleanup\""
    },
    {
      "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": "0632bad8bad41bc44184596478ec2d203d52096f",
      "tree": "43aa40695d8efeeeef9b90c2fc90baff395a1ada",
      "parents": [
        "73d27c3d46ce9a19c0cc358d0b2788f1f51706d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 12:20:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 16:25:17 2012 -0800"
      },
      "message": "Track volume cleanup\n\nAlways read and write track volumes atomically. In most places this was\nalready being done, but there were a couple places where the left and\nright channels were read independently.\n\nChanged constant MAX_GAIN_INT to be a uint32_t instead of a float.\nIt is always used as a uint32_t in comparisons and assignments.\nUse MAX_GAIN_INT in more places.\n\nNow that volume is always accessed atomically, removed the union\nand alias for uint16_t volume[2], and kept only volumeLR.\n\nRemoved volatile as it\u0027s meaningless.\n\nIn AudioFlinger, clamp the track volumes read from shared memory\nbefore applying master and stream volume.\n\nChange-Id: If65e2b27e5bc3db5bf75540479843041b58433f0\n"
    },
    {
      "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": "3c6b9cca79c872427599a325bcbb5d4a00113d80",
      "tree": "622dfb8e526d84be17e76a0ee91c57f51f247e33",
      "parents": [
        "a7f656206550dea94e51dd8c9bb2dd8734bcdf92",
        "bc1d77b6cbce23fbe25f7231651037ae195bc90e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "message": "Merge \"Use audio_stream_type_t consistently\""
    },
    {
      "commit": "dd3ca2e268bc638fb57092a4e12df84cf2c5a6a9",
      "tree": "fb56f9e519918d3e857a2da53041b965e50b9332",
      "parents": [
        "ade420df08a40bd568df48a3b023b63aafc8e3ee",
        "4790bd8be850235e9c6f1acf1e1e6146ef2996b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "message": "Merge \"AudioTrack and AudioFlinger send level cleanup\""
    },
    {
      "commit": "4790bd8be850235e9c6f1acf1e1e6146ef2996b3",
      "tree": "1820560bc322ca1e67abee5d2a65c0539b72dbf5",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:22:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:25:14 2012 -0800"
      },
      "message": "AudioTrack and AudioFlinger send level cleanup\n\nAdd an API to control block for getting/setting send level.\nThis allow us to make the mSendLevel field private.\n\nDocument the lack of barriers.\n\nUse 0.0f to initialize floating-point values (for doc only).\n\nChange-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4\n"
    },
    {
      "commit": "4bedb481036fbc6b72e5c0c620b569b508d3be16",
      "tree": "0642e5f28cc560e6ad9e1f5122faf31c33b1957c",
      "parents": [
        "dfef19940f2af5c043e0c6fb49909f093b8ff96b",
        "0922328270d2ec55a7f9407dfaac2d482e3f59cb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 13 15:16:59 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 15:16:59 2012 -0800"
      },
      "message": "Merge \"Fix compilation with Clang.\""
    },
    {
      "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": "0922328270d2ec55a7f9407dfaac2d482e3f59cb",
      "tree": "78372601dfa4e46926e1d65af7186b962752047f",
      "parents": [
        "e00274a5ab8d16d1050adda84412016c01a469b3"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 13 15:33:54 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 13 15:33:54 2012 +0400"
      },
      "message": "Fix compilation with Clang.\n\nwarning: extraneous template parameter list in template specialization\ntemplate\u003c\u003e\n\nChange-Id: If3e3e1d06a018343b40ac0984dfd9ecc12629f8d\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": "2fdc357bc66b97614455c5148562a5dfb650c1b7",
      "tree": "d0eb8dd772b55bc17df5f23fa48d0166f7d200ca",
      "parents": [
        "3adbec281ee82e1054e6693f0250e106080bab77",
        "0db7590ed2785cfa8973dbcb6b93627ea02774ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 10:37:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:37:10 2012 -0800"
      },
      "message": "Merge \"remove dead/usnused code\""
    },
    {
      "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": "0db7590ed2785cfa8973dbcb6b93627ea02774ce",
      "tree": "4371c3f854095cee97dec40f23b7713c40c611f0",
      "parents": [
        "7e9a3706d9236be563341cf076ddd41098e161ea"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 06 15:54:37 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 11 22:03:41 2012 -0800"
      },
      "message": "remove dead/usnused code\n\nChange-Id: I6fa2bc6ee01790abd2c1533f043d61a5e5c8d26e\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": "8cf6d6f1480e760e6953bdea9fe9ab29f1e03aa8",
      "tree": "6093985af74d3df4cfaeac34f4aa0c7a04f26769",
      "parents": [
        "f5c491651fe7575e1b05e924b0d5326481c1678b",
        "e6810ffaa19c6ad747d6f3ae7a38c7f572e9281e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:24:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:24:40 2012 -0800"
      },
      "message": "Merge \"Clean up AudioTrack::mActive and stopped()\""
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\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": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "44fcb83b38b062a650ddf556fe7f5e34905df9ea",
      "tree": "f5726b3011934023b43a46eb3ce3be6742a274ba",
      "parents": [
        "3766a7a27535101e62af958b1d2d710daa166d7d"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Dec 14 20:59:30 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Dec 15 16:16:14 2011 -0800"
      },
      "message": "Add a new ui mode for \"appliance\"\n\nThe idea is that this is a device which is more-or-less headless.  It\nmight have some limited interaction capabilities, but it\u0027s not something\nthat you want to rely on having.\n\nChange-Id: Ib92f53a120bf83de781728011721a4859def7d9f\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": "d3209c1bb21ce026d4e41464740e3d8f57cdd56f",
      "tree": "1eebbf03a13b6ded6aa55537d76a33a7a5a5f26e",
      "parents": [
        "66b2ff818bdc58465e54d7fc42772857c07fa262",
        "46b9f7cc2047ac16ecf36ffb6c6d3def0a5f5ccb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 08 18:51:03 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 08 18:51:03 2011 -0800"
      },
      "message": "Merge \"GenerationCache::get would return a random value instead of NULL Bug #5401917\""
    },
    {
      "commit": "46b9f7cc2047ac16ecf36ffb6c6d3def0a5f5ccb",
      "tree": "744df6ca395ccbac5b29af737066544c63ebe343",
      "parents": [
        "e98ae0a050d6ce4b3e2aec7c070a87922086c256"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 08 18:19:39 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 08 18:50:27 2011 -0800"
      },
      "message": "GenerationCache::get would return a random value instead of NULL\nBug #5401917\n\nThis was causing a ton of random crashes in apps.\n\nChange-Id: I9069a060824ec89115cd3bcd38beaeb9ecc4488e\n"
    },
    {
      "commit": "6779df2c28a68616134b1988f009221652d9f2ad",
      "tree": "6e19f621e6306cdbcf49816df648e749dc384838",
      "parents": [
        "2b621bc5bb52339cc677beb89d0495b8b5d4f444"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 06 17:22:19 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 06 22:43:10 2011 -0800"
      },
      "message": "Improve the VSYNC api a bit.\n\n- add the ability to set the vsync delivery rate, when the rate is\nset to N\u003e1 (ie: receive every N vsync), SF process\u0027 is woken up for\nall of vsync, but clients only see the every N events.\n\n- add the concept of one-shot vsync events, with a call-back\nto request the next one. currently the call-back is a binder IPC.\n\nChange-Id: I09f71df0b0ba0d88ed997645e2e2497d553c9a1b\n"
    },
    {
      "commit": "993b2099cee5c3ad86a5fbbd29194994336187be",
      "tree": "418b272f4f123457611c33146a53cf5ad3abb0fb",
      "parents": [
        "df96385b9acf9ec74c62edc34ffa9c8d9dae1c03",
        "55d3880eed3450748eb7b97281e030902ee29c2a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 30 10:50:52 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:52 2011 -0800"
      },
      "message": "am 55d3880e: am bb1e7d43: Merge changes I7e973a35,Ib3386fcc into ics-mr1\n\n* commit \u002755d3880eed3450748eb7b97281e030902ee29c2a\u0027:\n  SurfaceTexture: add EGL_KHR_fence_sync option\n  SurfaceTexture: add a blit-to-FBO test\n"
    },
    {
      "commit": "df96385b9acf9ec74c62edc34ffa9c8d9dae1c03",
      "tree": "156e5102fa53ad3debbe864bc1780925d693fa71",
      "parents": [
        "267a4b0627f98b020725e860b0a3c128067131b1",
        "c040e1e77923d81050f2d3dbdac5d07e01be72f6"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Nov 30 10:50:49 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:49 2011 -0800"
      },
      "message": "am c040e1e7: am 6f1dd757: Merge \"SurfaceMediaSource: use the vid enc usage bit\" into ics-mr1\n\n* commit \u0027c040e1e77923d81050f2d3dbdac5d07e01be72f6\u0027:\n  SurfaceMediaSource: use the vid enc usage bit\n"
    },
    {
      "commit": "bb1e7d4324ff43491c526c77f405bbbf0cece611",
      "tree": "235d607f7473ec35ba7db47e9fc371166f143398",
      "parents": [
        "6f1dd757cb158d17c76baeb170f7db2271802ef8",
        "77cec6132aea6ed98812125f5ad5f79e889cf658"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 17:46:35 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 17:46:35 2011 -0800"
      },
      "message": "Merge changes I7e973a35,Ib3386fcc into ics-mr1\n\n* changes:\n  SurfaceTexture: add EGL_KHR_fence_sync option\n  SurfaceTexture: add a blit-to-FBO test\n"
    },
    {
      "commit": "6f1dd757cb158d17c76baeb170f7db2271802ef8",
      "tree": "e965c66766e6d362eca7e7b4474107740874dc7f",
      "parents": [
        "f296ee697409b4b55bef17d534edbc24a4619f0f",
        "6deb4b538ecf5cbd4418492bfb6b79df67eedfb7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 29 17:25:09 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 17:25:09 2011 -0800"
      },
      "message": "Merge \"SurfaceMediaSource: use the vid enc usage bit\" into ics-mr1"
    },
    {
      "commit": "77cec6132aea6ed98812125f5ad5f79e889cf658",
      "tree": "57535ce4ed1806290cb04f8434d324dec7995df2",
      "parents": [
        "d6c938f04ec1e39dcbcf4d5adfcbdfbac0484540"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 14 14:51:01 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 29 17:09:01 2011 -0800"
      },
      "message": "SurfaceTexture: add EGL_KHR_fence_sync option\n\nThis change adds a compile-time option for SurfaceTexture to use the\nEGL_KHR_fence_sync extension to synchronize access to Gralloc buffers.\n\nBug: 5122031\nChange-Id: I7e973a358631fff5308acf377581b811911fe790\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": "351143fb0e2fcfb7dc2ef1045d693c71eb0ea329",
      "tree": "e62eb07e221bd3d64ecaffbcbe5483dc89d1df6b",
      "parents": [
        "405a4e34032f8a07028138266fe9f79f6753b466",
        "a10613fea8e9d8a73385d37ad92f9c56d8828ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:08:45 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:08:45 2011 -0800"
      },
      "message": "Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1"
    },
    {
      "commit": "0475f82c95e6e9657580820b16b0e48d814119b5",
      "tree": "2ce0fb9ad7b9b7294bcf7a1617d45b21d246141f",
      "parents": [
        "8e6115f622ee2d6ef8023357231b6663b1c091e6",
        "c339fe302bc5083f0a110569eec06676be511088"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 29 13:17:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 13:17:42 2011 -0800"
      },
      "message": "am c339fe30: am be6ab576: Merge \"Fix application launch shortcuts.\" into ics-mr1\n\n* commit \u0027c339fe302bc5083f0a110569eec06676be511088\u0027:\n  Fix application launch shortcuts.\n"
    },
    {
      "commit": "79f39eb46055282c86815853ad94a1e01ca6675f",
      "tree": "3853d9c0c5b1877a390178558e77dd7b6c31ad75",
      "parents": [
        "f9e88fbee04f83638b07546741196bd4c242ef54"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:49:17 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:10:25 2011 -0800"
      },
      "message": "Add support for sending VSYNC events to the framework\n\nuse gui/DisplayEvent to receive the events. Events are\ndispatched through a unix pipe, so the API is compatible\nwith utils/Looper. see gui/DisplayEvent.h for more info.\n\nBug: 1475048\nChange-Id: Ia720f64d1b950328b47b22c6a86042e481d35f09\n"
    },
    {
      "commit": "f9e88fbee04f83638b07546741196bd4c242ef54",
      "tree": "a0b0da85f2411f6a025637cd082f1efced6790e5",
      "parents": [
        "e11ec1df421be0b1a18fd3cf6ec23361d86ca32a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:07:24 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:07:40 2011 -0800"
      },
      "message": "Fix build.\n\nRevert \"Add support for sending VSYNC events to the framework\"\n\nThis reverts commit f3918c5bd4bc9f02f74da42995564150ca2dd382.\n\nChange-Id: I998e3e1aa3fa310829ae973b64fe11b01f6f468f\n"
    },
    {
      "commit": "6651a638348c15e89e265b0a53c775cac9beafa2",
      "tree": "f42e59d99363cada07cdb6f4bff69fa51bfae2ad",
      "parents": [
        "500afb87a7a8b5928ef1a5196bdfd0bcc2b87e4a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 28 12:59:11 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 29 12:17:22 2011 -0800"
      },
      "message": "Fix application launch shortcuts.\n\nImproved quick launch bookmarks to support category-based shortcuts\ninstead of hardcoding package and class names for all apps.\n\nAdded a set of Intent categories for typical applications on the\nplatform.\n\nAdded support for some of the HID application launch usages to\nreduce reliance on quick launch for special purpose keys.  Some\nkeyboard vendors have hardcoded launch keys that synthesize\n\"Search + X\" type key combos.  The goal is to encourage them\nto stop doing this by implementing more of HID.\n\nBug: 5674723\nChange-Id: I79f1147c65a208efc3f67228c9f0fa5cd050c593\n"
    },
    {
      "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": "f3918c5bd4bc9f02f74da42995564150ca2dd382",
      "tree": "9f8a1bb871b9b5a7571a6a9cbc65d539ac947b92",
      "parents": [
        "bb9ba8bae551305acba4f60577b0f461a9421bc5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:49:17 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 11:44:05 2011 -0800"
      },
      "message": "Add support for sending VSYNC events to the framework\n\nuse gui/DisplayEvent to receive the events. Events are\ndispatched through a unix pipe, so the API is compatible\nwith utils/Looper. see gui/DisplayEvent.h for more info.\n\nBug: 1475048\nChange-Id: If4126023fc9c067e56087ec7d16a8fd542ce1794\n"
    },
    {
      "commit": "3f15700a012b1ab0097eaf90caf0540ba6caa529",
      "tree": "548cf135dc366cfd34e430024e89b8e0b58a35b4",
      "parents": [
        "16aca5197244f9066968658735611a0dbbe46403"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:48:35 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 28 15:21:57 2011 -0800"
      },
      "message": "split ComposerService out of SurfaceComposerClient.h\n\nChange-Id: I1eb691f7ca263d5895d871ab675bb5826e0323c6\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": "bbd63f0246c9beabfc055d03f829a96e8ff512f5",
      "tree": "7d366b55c05ae0b4b8995dbece7976d6e2db7610",
      "parents": [
        "8a743d90a973e4fcf52093f2a89a5c049b626480"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 24 11:54:21 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 24 11:54:21 2011 -0800"
      },
      "message": "Use sized integer typedefs in hash_type specializations.\n\nChange-Id: I3f9e004db2f3be1cb43a885c3ae142f251fd6845\n"
    },
    {
      "commit": "9d61edcc0fd960f227aa0c4b8e20b05dea2aca19",
      "tree": "61daffde4cf87f4a1af612ccd93e291731215c99",
      "parents": [
        "b1e72b6826455a19a80dab14612da7f22e0e1a75"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 14 18:29:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 22 17:12:22 2011 -0800"
      },
      "message": "Add a basic hashtable data structure, with tests!\n\nThe basic hashtable is intended to be used to support a variety\nof different datastructures such as map, set, multimap,\nmultiset, linkedmap, generationcache, etc.\n\nConsequently its interface is fairly primitive.\n\nThe basic hashtable supports copy-on-write style functionality\nusing SharedBuffer.\n\nThe change introduces a simple generic function in TypeHelpers for\nspecifying hash functions.  The idea is to add template\nspecializations of hash_type\u003cT\u003e next to the relevant data structures\nsuch as String8, String16, sp\u003cT\u003e, etc.\n\nChange-Id: I2c479229e9d4527b4fbfe3b8b04776a2fd32c973\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": "07f062b6271e7ec820d1079566e7451a9cf55558",
      "tree": "57d9f1caf0e0ab9ed8d13a00f1391bdb7823edf7",
      "parents": [
        "53d42cb7d3c5c35b63363abbe9c44b8f6961afd4",
        "c25972950c2ea62fb085524dbe737c2bf0f08f4a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 21:08:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:08:21 2011 -0800"
      },
      "message": "am c2597295: am 53cf2020: Merge changes I37fd43b5,I91eb29db,I0491ce35 into ics-mr1\n\n* commit \u0027c25972950c2ea62fb085524dbe737c2bf0f08f4a\u0027:\n  SurfaceTexture: fix a couple tests\n  EGL: default to swap interval 1\n  SurfaceTexture: clean up some tests\n"
    },
    {
      "commit": "02740dc49df86fc94c872454aa9db98737d5e8c8",
      "tree": "bab33b5f465661bb12f982222bb678024b0893ac",
      "parents": [
        "1766b0e25de5a66f9d0f6e73a2c342272fcadc71",
        "96af14d9b013496accf40a85a66fefcba3ac0111"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 20:28:27 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 21 20:28:27 2011 -0800"
      },
      "message": "Merge \"Fix log spamming during time lapse video recording\" into ics-mr1"
    },
    {
      "commit": "6deb4b538ecf5cbd4418492bfb6b79df67eedfb7",
      "tree": "c7a3bb6bdbe11d49b220c53b4d1eed518b29d560",
      "parents": [
        "b8d20d028ca590f6a9c57e0e8fee5e5f80e9ae54"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 16:51:47 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 17:48:19 2011 -0800"
      },
      "message": "SurfaceMediaSource: use the vid enc usage bit\n\nThis change makes SurfaceMediaSource add the VIDEO_ENC usage bit when\nallocating its GraphicBuffers rather than the HW_TEXTURE bit.\n\nChange-Id: Ie20e225c894fdbc31cad6bb82b3b64c7e98074eb\n"
    },
    {
      "commit": "87f3265bb082160efdfdfb87a79698c67ebad447",
      "tree": "a9eb05cf1cb1a6d59d1dafe806c843aee10daa76",
      "parents": [
        "c10a94c4b8b42ef75168ad140fdb97d6cca3d2eb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sat Nov 19 18:04:43 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 14:37:29 2011 -0800"
      },
      "message": "EGL: default to swap interval 1\n\nThis change explicitly sets swap interval 1 on the window when an\nEGLSurface is created to render to it.\n\nChange-Id: I91eb29dbee3ae4a55076b921f084d503fbe94e03\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": "36bd710a6094282c8f9a6083c3b09911bf8a5ac7",
      "tree": "d9f63cb4b22b64f342445b4f131ff3894a31446e",
      "parents": [
        "3f6114164f87567d069fe37962b3d1952f5905e5",
        "d0df44b5c979e00a19187cea35768ba26557e447"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 18 15:22:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 18 15:22:59 2011 -0800"
      },
      "message": "am d0df44b5: am 4d71053b: Merge \"attempt to fix bug 5313580\" into ics-mr1\n\n* commit \u0027d0df44b5c979e00a19187cea35768ba26557e447\u0027:\n  attempt to fix bug 5313580\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": "90cbbd1f7f510e7c173f706919492a95e91a87e7",
      "tree": "228bd0b3b540cdbdb52cea0a6c0fdd9bf33563b2",
      "parents": [
        "302afb93d4fd908949ac796eda8343f9683e616a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 18:46:09 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 18:46:09 2011 -0800"
      },
      "message": "attempt to fix bug 5313580\n\nthe working theory here is that a Surface object has become non-promotable\nbecause it lost its last reference; later Surface::readFromParcel is called\nthe previous surface is found in the cache, but can\u0027t be promoted. this causes\na new Surface object to be created which will promptly try to connect to the\nCPU_API -- this in turn will fail because the previous (now dead) surface is\nstill connected.\n\nTo fix this, we make sure to disconnect from the SurfaceTexture when\nSurface[TextureClient] is destroyed.\n\nChange-Id: I422234868a05d7b7d283e9d5a85f7ab79e65d8a9\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": "04dd4deafdbde8e4a9d12745e3d4a886ef8769f4",
      "tree": "138bed74f6d156ffe0ac11fdaccec295a19d2312",
      "parents": [
        "6c932dab1cef4fc711c4fdab938bced67b15d5df",
        "7765fc651a9519dd2f0ac9d3374a50e9865c5c99"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Nov 17 05:46:00 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 17 05:46:00 2011 -0800"
      },
      "message": "am 7765fc65: am fd6b64f6: Merge \"SurfaceTexture: Fix to return the oldest of free buffers to Client on Dequeue call\" into ics-mr1\n\n* commit \u00277765fc651a9519dd2f0ac9d3374a50e9865c5c99\u0027:\n  SurfaceTexture: Fix to return the oldest of free buffers to Client on Dequeue call\n"
    },
    {
      "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": "fd6b64f6ad040b4d550a5219a2576997e2c0e85d",
      "tree": "6d1557564d97571409783c88b3b88a34152c418c",
      "parents": [
        "7dc81e06e4d0554683595e8d2e318837548e249a",
        "f1e868f68204bf469a0c162b84af0e651d513ac8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Nov 16 11:34:30 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 16 11:34:30 2011 -0800"
      },
      "message": "Merge \"SurfaceTexture: Fix to return the oldest of free buffers to Client on Dequeue call\" into ics-mr1"
    },
    {
      "commit": "221096fdd6963a0f7090b928cfb92b9267f32d7a",
      "tree": "300e2781bf3720d2b7e57611d6691c9fe9ea521a",
      "parents": [
        "8e56e1f3459703a9b9f5a13676428eeda68bb73f",
        "4c0e0dd29dcce33e7521b11d01d21d9431f3b264"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 19:43:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 15 19:43:35 2011 -0800"
      },
      "message": "am 4c0e0dd2: am 3e7497b4: Merge \"Eliminate hw.keyboards system properties.\" into ics-mr1\n\n* commit \u00274c0e0dd29dcce33e7521b11d01d21d9431f3b264\u0027:\n  Eliminate hw.keyboards system properties.\n"
    },
    {
      "commit": "3e7497b4eccd3db1d6ff0ce1f1f2db11f9a8eeef",
      "tree": "14b19d7f750f12c4168bb582c1cd99e93afd454a",
      "parents": [
        "cdec187a27b2acc34cd4df26b836b83362527d6a",
        "1e08fe90df18930691b0c2ec22e5db25d7fcb4cf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 19:17:09 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 15 19:17:09 2011 -0800"
      },
      "message": "Merge \"Eliminate hw.keyboards system properties.\" into ics-mr1"
    },
    {
      "commit": "1e08fe90df18930691b0c2ec22e5db25d7fcb4cf",
      "tree": "772ffaafe6917d37ee65f5ed3d653230557bdc80",
      "parents": [
        "9058435dc1a741030c042c4d6f2512f5d1605e5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 17:48:10 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 18:00:10 2011 -0800"
      },
      "message": "Eliminate hw.keyboards system properties.\n\nStop using system properties to publish information about\nthe key character map path.  Instead, we can retrieve it\non demand by asking the window manager.\n\nIt was possible to exhaust the supply of system properties\nwhen repeatedly adding and removing input devices.\n\nBug: 5532806\nChange-Id: Idd361a24ad7db2edc185c8546db7fb05f9c28669\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": "cc6c20f5321e39ee75172f329450dd60a69c980f",
      "tree": "c7c3ca11811eb608a786120a3a00dbb9362f8257",
      "parents": [
        "0e02e42140d54410ec90e21e90af23cc8b4da31d",
        "716747f7cb29b45e41c2870f12d39095f4ed80c8"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Tue Nov 15 13:07:07 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 15 13:07:07 2011 -0800"
      },
      "message": "am 716747f7: am 481ffa50: Merge \"Fix for issue  5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\" into ics-mr1\n\n* commit \u0027716747f7cb29b45e41c2870f12d39095f4ed80c8\u0027:\n  Fix for issue  5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.\n"
    },
    {
      "commit": "f1e868f68204bf469a0c162b84af0e651d513ac8",
      "tree": "23a997a5d68fb46652460aa233ec3dd0133652f3",
      "parents": [
        "6a54a997e3dc71c5b9c5a1c7829bc3eb35404e92"
      ],
      "author": {
        "name": "Sunita Nadampalli",
        "email": "sunitan@ti.com",
        "time": "Wed Nov 09 18:23:41 2011 -0600"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 15 11:43:35 2011 -0800"
      },
      "message": "SurfaceTexture: Fix to return the oldest of free buffers to Client on Dequeue call\n\nSurface Texture dequeue logic is modified to return the oldest of the\nfree buffers to Client on dequeue call.\n\nCurrently dequeue method is returning the first buffer index which is free.\nThe parsing is done in ascending order of the buffer slot indices.\nThis leads to returning the buffer which has been just queued to composer,\nand hence display, and this defeats the purpose of having minimum dequeue count\nas 2 in asynchrnouse mode.\n\nThis is fixed by checking all the free slots and returning the oldest buffer.\n\nChange-Id: Ibbac10593c3994c278c601af0480b171635ecdd4\nSigned-off-by: Sunita Nadampalli \u003csunitan@ti.com\u003e\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": "bf677de46a039e07038511909576bfbf4406f7fd",
      "tree": "cb2243d4b75f084b01a65c6e9cf6c497683b2775",
      "parents": [
        "a4e3fe22762116b1bb6f40b354febf7bd2eec44d",
        "d9e688cab3015d858110fb8240cf7378c6befd82"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 14 18:28:59 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 14 18:28:59 2011 -0800"
      },
      "message": "Merge \"Clean up GenerationCache.\""
    },
    {
      "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": "d8fa1ad4523b6c04cab663ff4b65181fc00594d9",
      "tree": "7ed37b59efdc59ea95e8966d0a528fdec69689ce",
      "parents": [
        "527c44e8a455dd0fdef1aeb6d7d8f99bb0839295",
        "738d8cae2239d194429676f2889cfae3c8f7ba08"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 14 11:54:38 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 14 11:54:38 2011 -0800"
      },
      "message": "am 738d8cae: am c93a151f: Merge \"Define, document, and test the behavior of very large SurfaceTextures\" into ics-mr1\n\n* commit \u0027738d8cae2239d194429676f2889cfae3c8f7ba08\u0027:\n  Define, document, and test the behavior of very large SurfaceTextures\n"
    },
    {
      "commit": "d9e688cab3015d858110fb8240cf7378c6befd82",
      "tree": "806f5e09090a6cf467666009a165e5f63155ae2f",
      "parents": [
        "e3571f633a825738d785b587e91798a3d0876740"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 11 15:40:13 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 11 22:14:07 2011 -0800"
      },
      "message": "Clean up GenerationCache.\n\nUse const references to keys and values where appropriate to avoid\ncopying them unnecessarily.\n\nDeleted some dead code.\n\nSimplified a few pieces that were doing unnecessary redundant work.\n\nChange-Id: Ib2145b7094a40db2d679e05dafe050fe1e87b846\n"
    },
    {
      "commit": "b89d88f531ee39927f8f554baaae5ecc9101ba9d",
      "tree": "c00601c0b328a2670e449a3afb296bd7ea30eadd",
      "parents": [
        "c51bb4d394dd47e48abc8a6d9cbc740f821546ff"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 10 14:34:26 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 11 18:44:35 2011 -0800"
      },
      "message": "Define, document, and test the behavior of very large SurfaceTextures\n\nupdateTexImage() now throws a runtime exception when its native\ncounterpart fails\n\nBug: 5506633\n\nChange-Id: I151a6f685d465966e7df4df624412ab2da62e95f\n"
    },
    {
      "commit": "f4c3cc06cb5d748e804a81e693175e00ccf06051",
      "tree": "5aa63090d1fa4a267a49eb588d0329c63194c627",
      "parents": [
        "1333742bedc9b462024302f302e3a7f27053df66",
        "510180f162dee3ae5416a98caa07f58a754f4b3f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Nov 11 15:34:21 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 11 15:34:21 2011 +0000"
      },
      "message": "am 510180f1: am 08e42967: Merge \"Add support for retrieving location information in mp4/3gpp files\" into ics-mr1\n\n* commit \u0027510180f162dee3ae5416a98caa07f58a754f4b3f\u0027:\n  Add support for retrieving location information in mp4/3gpp files\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": "ea427b0c87a52d5e770f50856401a81ff2658cc4",
      "tree": "9f4e0ec427bd0b9ca6c8a3575bd784fc78c9968a",
      "parents": [
        "e43a7c18ecf3de8df774362a9bc3e97d8469ac00",
        "26f70db99f483be36caa7a4c84fec5de50bec034"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 10:40:20 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 10:40:20 2011 -0800"
      },
      "message": "resolved conflicts for merge of 26f70db9 to master\n\nChange-Id: Ib1536b1a4c9eeff80e0726b3e61cee12057cd120\n"
    },
    {
      "commit": "26f70db99f483be36caa7a4c84fec5de50bec034",
      "tree": "bb5e0c42bc4d564b8919a2c4fb302026a89582e6",
      "parents": [
        "99015a2464a40097c3e23e07cdf69da0f886aa66",
        "95be24585f46229f551c529104b5e92fa4316b38"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 08:48:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 08 08:48:31 2011 -0800"
      },
      "message": "Merge \"Remove surface legacy APIs and code.\" into ics-mr1"
    },
    {
      "commit": "bd79a9c9f39482b3a9560d03cb045ec4e3b87486",
      "tree": "90d3ebbe31b26daa57c670ab884bbadc46a6f062",
      "parents": [
        "2abb2abea05fddd9ec2a1d6c831f1e62c37c7fa3",
        "88061d6b38cfb4bf374039846b753a3b21ac61e1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 07 15:51:31 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 07 15:51:31 2011 +0000"
      },
      "message": "am 88061d6b: am 5462bc63: Fix a leak in Parcel::writeBlob.\n\n* commit \u002788061d6b38cfb4bf374039846b753a3b21ac61e1\u0027:\n  Fix a leak in Parcel::writeBlob.\n"
    },
    {
      "commit": "88061d6b38cfb4bf374039846b753a3b21ac61e1",
      "tree": "0d4656659add969e8015e5019d85d2bf18d89940",
      "parents": [
        "2ccc47b89868d4f39683e0e2bd057ce95d7d1217",
        "5462bc6318b4b70e7a58c66994e2bd79f59d9739"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Nov 05 02:35:57 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 05 02:35:57 2011 +0000"
      },
      "message": "am 5462bc63: Fix a leak in Parcel::writeBlob.\n\n* commit \u00275462bc6318b4b70e7a58c66994e2bd79f59d9739\u0027:\n  Fix a leak in Parcel::writeBlob.\n"
    },
    {
      "commit": "5462bc6318b4b70e7a58c66994e2bd79f59d9739",
      "tree": "4c5c4b7980974adb8c5fc11df32e1a523cd94306",
      "parents": [
        "348297abc0e03fb87a1d22465020b580d83fdd61"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 04 19:01:44 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 04 19:26:03 2011 -0700"
      },
      "message": "Fix a leak in Parcel::writeBlob.\n\nWas mistakenly assuming that Parcel::writeFileDescriptor took\nownership of the fd that was passed in.  It does not!\nAdded some comments and a default parameter to allow the caller\nto specify whether it wishes the Parcel to take ownership.\n\nBug: 5563374\nChange-Id: I5a12f51d582bf246ce90133cce7690bb9bca93f6\n"
    }
  ],
  "next": "94c10c4c8ba1c8e549324ad379a2f235897128ac"
}
