)]}'
{
  "log": [
    {
      "commit": "be1339edc445eef19c3aa880b51a5c500cab6f82",
      "tree": "330f5d9cab8aa7f4ca4e256cb22fcc2c5f716585",
      "parents": [
        "a92ca7fa3ec630aee14e51d87851749956bad875",
        "328f7b7160d4c5a30c6810cbcd4aa01bb7b57dda"
      ],
      "author": {
        "name": "kmccormick",
        "email": "kmccormick@google.com",
        "time": "Fri Mar 29 16:04:09 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 29 16:04:09 2013 -0700"
      },
      "message": "am 328f7b71: am 90fa2ae2: am 23b55e78: am 3fab60bd: am 183c95e0: Merge \"Doc update: PlaybackCompleted valid state 4 pause\" into jb-mr1.1-docs\n\n* commit \u0027328f7b7160d4c5a30c6810cbcd4aa01bb7b57dda\u0027:\n  Doc update: PlaybackCompleted valid state 4 pause\n"
    },
    {
      "commit": "328f7b7160d4c5a30c6810cbcd4aa01bb7b57dda",
      "tree": "69bd7bae661e9ee590e02aabd5296d174c2330b4",
      "parents": [
        "a8858d215123b819557d130bfeeeb50568649b51",
        "90fa2ae28c200e0269f86f7d4e486ce781763a99"
      ],
      "author": {
        "name": "kmccormick",
        "email": "kmccormick@google.com",
        "time": "Fri Mar 29 16:02:30 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 29 16:02:30 2013 -0700"
      },
      "message": "am 90fa2ae2: am 23b55e78: am 3fab60bd: am 183c95e0: Merge \"Doc update: PlaybackCompleted valid state 4 pause\" into jb-mr1.1-docs\n\n* commit \u002790fa2ae28c200e0269f86f7d4e486ce781763a99\u0027:\n  Doc update: PlaybackCompleted valid state 4 pause\n"
    },
    {
      "commit": "b04c07fb9b105fe55ea261283d0be2c817133d67",
      "tree": "7042fe6660149cef90a01b4faed7676fd1286add",
      "parents": [
        "689e827aa3fa69d20087972dfb93ed257e4d109b"
      ],
      "author": {
        "name": "kmccormick",
        "email": "kmccormick@google.com",
        "time": "Fri Mar 29 15:48:45 2013 -0700"
      },
      "committer": {
        "name": "kmccormick",
        "email": "kmccormick@google.com",
        "time": "Fri Mar 29 15:50:03 2013 -0700"
      },
      "message": "Doc update: PlaybackCompleted valid state 4 pause\n\n\"Bug: 7962402\"\n\nChange-Id: Ie41d7085373794e98208d8815010b3ca1d81378c\n"
    },
    {
      "commit": "bc43b4c2f24fd03c0d0546895c97918c1736d9fb",
      "tree": "4b89014791d7e01d444c962a27e8c63bb3694990",
      "parents": [
        "a4b68908bdfefdf6c79a8b2c3d7bda00c543532f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 22 09:30:50 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 29 09:47:48 2013 -0700"
      },
      "message": "RemoteControlClient can report current position, speed\n\nExtend RemoteControlClient class to support reporting the\n current playback position, and the playback speed.\nDefine listener for an application to receive new playback\n position to seek to (use of listener to be implemented).\nUpdate IRemoteControlDisplay implementations to new interface.\n\nbug 8120740\n\nChange-Id: I2654daeca1ac49713d325df8226dceb85943c020\n"
    },
    {
      "commit": "6b5e22d52c69cb6d80ff09bd32395b0034ada343",
      "tree": "a5985a62d9470d49c069348a72df4b1ba46af246",
      "parents": [
        "80ab68ce233598ab13a9875fe17d4ec51aa5517b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 28 16:10:45 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 28 16:10:45 2013 -0700"
      },
      "message": "audio service: fix BT SCO intent permission again\n\nCommit 2a57ca93 did not address the calling permission\nfor setMode() method which can also indirectly call\nBluetoothHeadset APIs.\n\nBug 8242429\n\nChange-Id: I8483c0492836192f47984c48629291cb261b001b\n"
    },
    {
      "commit": "f2b0fdb2f7d701355d3fdb7b9a7780387cbf0e46",
      "tree": "b9df7def6d52acf99f1bc8fb527bae082ff718aa",
      "parents": [
        "972a9255a7e2c75cf13dab74121cb367c03e2809",
        "80569f7ff7db28ce98dde6e22bb4521ddbe5490a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Mar 27 17:35:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 17:35:44 2013 +0000"
      },
      "message": "Merge \"AudioEffect types in SDK\" into jb-mr2-dev"
    },
    {
      "commit": "80569f7ff7db28ce98dde6e22bb4521ddbe5490a",
      "tree": "e0e30f1a2ecd5bba98d9b7197d38f64996ca3729",
      "parents": [
        "aad37a1eeb4dcd35500a382401b889d34f6430d2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 26 15:37:28 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Mar 27 09:59:24 2013 -0700"
      },
      "message": "AudioEffect types in SDK\n\nNot all effect types are defined by OpenSL ES. Add the full UUID\n effect identifier in the superclass of all audio effects.\n\nbug 8113082\n\nChange-Id: I8dfc6cdcfd2a145e792fb3669e6132e6f19d1c16\n"
    },
    {
      "commit": "5d3eb44a749ece55ce345f9d8ac608fc3715f9da",
      "tree": "902536fd62aec3a9b267c6aa631cb33a8221d7d9",
      "parents": [
        "c1905339bcb67c11380a366c5ac98da82e6e9b7b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 21 15:35:10 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 16:28:35 2013 -0700"
      },
      "message": "AudioService: rewrite sound effects loading\n\nHandle all access to SoundPool in the message Handler to\nsynchronize load/unload and play requests.\n\nAdd a timeout to load operations in case a problem occurs while loading\na sample and the SoundPool callback is not called.\n\nBug 6633095\n\nChange-Id: I39949e4c8b2f7ca2d8b760b1f92c7e0fcd0a46e1\n"
    },
    {
      "commit": "7c566bf3e4a10d74588b3e92ea3f6af310930f37",
      "tree": "67e079d9ea3ec484a2997dc0db9e5d1662a24124",
      "parents": [
        "37f180b4a52e4c1d0b6a7b400b6579b7ff25f307",
        "83a017b6b7c099d1a0293e5839be6477325aef06"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 17:08:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 25 17:08:28 2013 +0000"
      },
      "message": "Merge \"audio service: add config option for fixed volume\" into jb-mr2-dev"
    },
    {
      "commit": "961cae92540763226648813d111c5b5c3b0f1597",
      "tree": "10b0edf96b8aadba2917c86c5c3d26d6266ef17f",
      "parents": [
        "b7f4c7b7feec98adde79d6d691c0001943b16595"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 20 14:59:43 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 22 14:49:28 2013 -0700"
      },
      "message": "New media button API.\n\nThis allows sending media buttons to any PendingIntent,\nso they can be captured with a registered receiver.\n\nAlso add some new ViewTreeObserver APIs; this is all for\na new support library API to watch media buttons while an\napp has input focus.\n\nChange-Id: I3c51cef59460662b008c9a2cc87d6a6383c21855\n"
    },
    {
      "commit": "83a017b6b7c099d1a0293e5839be6477325aef06",
      "tree": "7ecdcd95f23900c35f2dc551bbb1690a6bf748db",
      "parents": [
        "e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 19 18:15:31 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 21 18:43:00 2013 -0700"
      },
      "message": "audio service: add config option for fixed volume\n\nAdd a boolean configuration option config_useFixedVolume indicating if\nstream volumes or master volume can be modified.\nIf the option is true, the AudioManager volume and mute APIs will be no ops and the\nvolumes will be maxed out.\nTo be consistent:\n- the ringer mode is forced to normal and cannot be modified\n- volume panel is never displayed\n- volume settings are not available\n- ringer mode global action is not displayed.\n\nThe default for this option if false.\n\nThis is useful for a class of devices intended for connection to a digital\naudio output only, where the volume is directly controlled on the audio sink.\n\nBug 8161458\n\nChange-Id: I2571d5ee79952ef0914d8fd1985816467a80adcd\n"
    },
    {
      "commit": "fc7c9b484a25e60a569253d9e0c24d1f4205f490",
      "tree": "80ee757cf32420a38a3e4e24ce82627fec318d01",
      "parents": [
        "1467873aa4ea7309ca389a1f02b8f801492a652f",
        "e78fced559d879b2e37b610d0d9a89daf08f0f2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 21 00:05:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 00:05:08 2013 +0000"
      },
      "message": "Merge \"audio service: allow touch sounds customization\" into jb-mr2-dev"
    },
    {
      "commit": "1e7298b250a3cddfcdcf54e413748e8eb71ca0c8",
      "tree": "8885f7a1c9d7ec5a5a24e8e864264ae548c78929",
      "parents": [
        "cc5911686d738d0ce0bf45acac14243ed5a16cf4",
        "effc9b4839f3cc109fe3d8244022f3c898cd080b"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Mar 20 20:53:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 20:53:01 2013 +0000"
      },
      "message": "Merge \"Add the orientation hint to the MediaMuxer\" into jb-mr2-dev"
    },
    {
      "commit": "e78fced559d879b2e37b610d0d9a89daf08f0f2b",
      "tree": "d59254f23c0e7c29fb23c658cc187ff2ffeb50d6",
      "parents": [
        "4427db27b312b46cc34a83a893e522a6468ee396"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 15 16:03:47 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 20 10:38:07 2013 -0700"
      },
      "message": "audio service: allow touch sounds customization\n\nAdded audio_assets.xml resource listing the\naudio asset files for each touch sound effect.\nThis resource can be overlayed to customize the\ntouch sounds for a given device.\n\nBug 8339000\n\nChange-Id: I8c156f0ce7f8769a58d77442fbd9c46b57c202e9\n"
    },
    {
      "commit": "d4a2118585d6227ccdccb946c946275b81d99ec9",
      "tree": "95830696dc363a3f4970205e16c8c173a5de4e33",
      "parents": [
        "63f1e2fb6b7102490b11523589b82c2101d3c079",
        "8a0c80fdcc46faa8cb8c9f4dda06f4b63ec2f906"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 20 16:48:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:48:52 2013 +0000"
      },
      "message": "Merge \"Implementing MediaDrm APIs\" into jb-mr2-dev"
    },
    {
      "commit": "effc9b4839f3cc109fe3d8244022f3c898cd080b",
      "tree": "d405747dccdee5abf6e00eb791a8bacad698f8f6",
      "parents": [
        "952e4805f72c0835bbd158051fc56dc64d1d660d"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 12 16:03:12 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 19 13:10:25 2013 -0700"
      },
      "message": "Add the orientation hint to the MediaMuxer\n\nbug:7991013\n\nChange-Id: I7e3e513851589e4ba7983d2c416152b2b08cbcfb\n"
    },
    {
      "commit": "faf0e89ce3bdb2c50eb5da671bc4fc2a618ebf89",
      "tree": "560f31a623f65651818a8a8a4edbc141a7b536e6",
      "parents": [
        "c60967fd83e7a736f311a1887543df430a65164c",
        "a83df76859f0af12105bcea27e2e8d9f0b4d2c31"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 15 18:41:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 15 18:41:34 2013 +0000"
      },
      "message": "Merge \"Make release() behaves the same way as other part of media framework\" into jb-mr2-dev"
    },
    {
      "commit": "a83df76859f0af12105bcea27e2e8d9f0b4d2c31",
      "tree": "61a181c8f1b8a9ee2fde6e4a5c9dfbe104cbecb0",
      "parents": [
        "68ccf103a10c674f1db649bb15bb3e790bc6dad3"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 16:02:39 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 16:02:45 2013 -0700"
      },
      "message": "Make release() behaves the same way as other part of media framework\n\nbug:7991013\n\nChange-Id: Ib3efa94c0a6a599f71517f80fb7c3842d8d4e74f\n"
    },
    {
      "commit": "a1cebc1f8ae2c4361078e3208ac7fa8c438fcf9c",
      "tree": "3a3c0e51badd7ae671996f1e4025488a988dd41e",
      "parents": [
        "b630b7e426aba74bb6064afe5837472efee32363",
        "eefee4396494655a67cea8bbcd8d892db9a96494"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 14 21:36:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 14 21:36:16 2013 +0000"
      },
      "message": "Merge \"Fix race in media button intent registration\" into jb-mr2-dev"
    },
    {
      "commit": "eefee4396494655a67cea8bbcd8d892db9a96494",
      "tree": "6d6db809c6a22ba1ddd1f8b0d175ffc09a744fa4",
      "parents": [
        "9725d80adc7426ea20f3a193fc81dc1e8b8c4b31"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 12 14:17:01 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 14 14:30:25 2013 -0700"
      },
      "message": "Fix race in media button intent registration\n\nAudioManager.registerMediaButtonEventReceiver maps to\n  AudioService.registerMediaButtonIntent\nAudioManager.registerRemoteControlClient maps to\n  AudioService.registerRemoteControlClient\nTo use RemoteControlClient, an application needs to have\n first registered its button event receiver. Therefore\n registerMediaButtonEventReceiver() needs to have\n completed registration when returning, otherwise the\n RemoteControlClient registration can sometimes fail due\n to the lack of association between the button event\n receiver and the RemoteControlClient.\n\nBug 8315459\n\nChange-Id: I82c196c3f21a65e38bad275085ed4f9ec0ec60dd\n"
    },
    {
      "commit": "8a0c80fdcc46faa8cb8c9f4dda06f4b63ec2f906",
      "tree": "3d46fd9b56e0eb9ada7b89db2f89266763d05ae0",
      "parents": [
        "86277467eec5e269328364e91abe164991653635"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 08 10:20:44 2013 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 13 13:40:56 2013 -0700"
      },
      "message": "Implementing MediaDrm APIs\n\nChange-Id: Ib6eeb9c04c5c5cf1d485f9004cd3e6a1047a1d19\n"
    },
    {
      "commit": "f5a1fc3c0fd733acd21e1437f153ba27220be8ce",
      "tree": "5098408662022bd47def4cf33217566bc7735783",
      "parents": [
        "93f99846df1e00f115c8870eab6ef3df54d1ec6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 11 18:52:57 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 21:40:25 2013 +0000"
      },
      "message": "audio service: fix regression in startBluetoothSco\n\nCommit 2a57ca93 introduced a regression in startBluetoothSco()\nwhere the calling pid was cleared before creating the entry for\nthe client app. The pid in the entry was always the system server pid\nand the SCO client verification logic was broken preventing the activation\nof the BT SCO connection.\n\nChange-Id: I4e024b22fceb350f829ff0d8664703faeef7af48\n"
    },
    {
      "commit": "7c8aeadd9a010b79c04261f0a9092942d1db0dc2",
      "tree": "7604afe6ef7e1a05dc3d22baec5d3f9e7644f58b",
      "parents": [
        "1d280ee9583cc3b8e96f02fcf73cde484f29cc69",
        "4a5700556191c835116ec2a6997a4f16f464ac9d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 12 16:40:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 16:40:22 2013 +0000"
      },
      "message": "Merge \"Support multiple IRemoteControlDisplay\" into jb-mr2-dev"
    },
    {
      "commit": "5ef14b259fa07f08b29fa7888d39128456dc253a",
      "tree": "e0062f2ba4d880927214a9eb60cc882c97ea7d04",
      "parents": [
        "7b517a5c796f4c1120533c62686f7912ebfb2ef8",
        "2a57ca931fefe817b6110101289721acaacfc808"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 11 22:40:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 11 22:40:48 2013 +0000"
      },
      "message": "Merge \"audio service: fix BT SCO intent permission\" into jb-mr2-dev"
    },
    {
      "commit": "68ccf103a10c674f1db649bb15bb3e790bc6dad3",
      "tree": "a7687a6d17497efef433df381e6920e568fcc80c",
      "parents": [
        "a509b6b1396d414b424ddfbea292b23bba46a4aa"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Feb 13 14:07:02 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Mar 11 12:30:56 2013 -0700"
      },
      "message": "Java API for MediaMuxer\n\nImplement the Java API for MediaMuxer.\n\nbug:7991013\n\nChange-Id: Ibf3aa256cc1d89f1c7636b74c9fb53073d173636\n"
    },
    {
      "commit": "4a5700556191c835116ec2a6997a4f16f464ac9d",
      "tree": "0959c723a702d0a6b7b609aef129394f4ef853a5",
      "parents": [
        "d2bfa3bdc0a5d3c06cde2711d8572a8141e45fe2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Mar 04 12:03:17 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 08 14:22:42 2013 -0800"
      },
      "message": "Support multiple IRemoteControlDisplay\n\nModify RemoteControlClient and AudioService to support multiple\n simulataneous IRemoteControlDisplay interfaces active at the\n same time.\n\nChange-Id: I9f200a488afdd62a5e6957e64624d745e0f28149"
    },
    {
      "commit": "01eaa2d545a0b0dc28f8f13e6db7348bb6e098e3",
      "tree": "507eea68c644f2c34c78a278ab65435e2f323a53",
      "parents": [
        "6916c6ee105e7e91f494ec79c24152fb64d8eed1",
        "47a2db4943ea5c094a97a1627ff886409c2b31f0"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Mar 08 17:51:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 08 17:51:24 2013 +0000"
      },
      "message": "Merge \"Tweak comment.\" into jb-mr2-dev"
    },
    {
      "commit": "47a2db4943ea5c094a97a1627ff886409c2b31f0",
      "tree": "457dcc6fc77b6db02a73a28397caa5cba1c11fb2",
      "parents": [
        "34f17dd1f615c6285f4f344eb700923e2432e48e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 07 17:56:40 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 07 17:56:40 2013 -0800"
      },
      "message": "Tweak comment.\n\nChange-Id: Ic99fefde512fa3a5b1fca2bc65cd37c8170e7f2c\n"
    },
    {
      "commit": "dd3e75fa6b9fd93790eec010f40c8bc1c3aeda3c",
      "tree": "b6dd681e60c5cc6307773300f78407ae806486da",
      "parents": [
        "15061d747d578fb542f1a11856dae5515036b4ce",
        "34f17dd1f615c6285f4f344eb700923e2432e48e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Mar 08 01:50:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 08 01:50:00 2013 +0000"
      },
      "message": "Merge \"Publish new MediaCodec API\" into jb-mr2-dev"
    },
    {
      "commit": "2a57ca931fefe817b6110101289721acaacfc808",
      "tree": "364da9e5288e253bdb14eda1a7fbbc24090a3c41",
      "parents": [
        "09ed05ceaecc5fca46e25fe9bd9e8c0ee61fd31d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 07 17:29:27 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 07 17:29:27 2013 -0800"
      },
      "message": "audio service: fix BT SCO intent permission\n\nClear calling identity before calling BluetoothHeadset\nmethods from binder call.\nAlso send BT SCO audio state intents from the\nmessage handler, not from binder calls.\n\nBug 8242429\n\nChange-Id: I742ba8dc47a258dbee6fb9d57db302f2bffaafd7\n"
    },
    {
      "commit": "34f17dd1f615c6285f4f344eb700923e2432e48e",
      "tree": "430ffa928c1855257dfa4a257f4a9cb5a9c920e3",
      "parents": [
        "098b3ba5ef6e472b419c83b5e1d7c79bce05f2f5"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Mar 06 14:26:34 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 07 14:20:46 2013 -0800"
      },
      "message": "Publish new MediaCodec API\n\nUn-hide two new methods in MediaCodec, one new constant, and a new\nEGL extension.\n\nBug 7991062\nBug 8191230\n\nChange-Id: I028669132d9ffda1e4b34a561bab3997bbd7dae5\n"
    },
    {
      "commit": "3afc18af2cea898753b10e8575dcf20c11356bca",
      "tree": "a2928e5ac63788215467a3cc93e135acd9829acc",
      "parents": [
        "9f3443c55c51562e22abb6b16c83cbe036dd2db4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 07 13:21:13 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 07 13:26:40 2013 -0800"
      },
      "message": "Enhance MediaRouter API.\n\nThe support library MediaRouter implementation needs a couple\nof extra generally useful APIs in the platform MediaRouter to ensure\nthat it can safely synchronize its state.\n\nChange-Id: I72c5652e10f3b6de48800abfa922affbefbd250f\n"
    },
    {
      "commit": "43abdc486d19c137b79a2bde9ce4706c91656bda",
      "tree": "696916f4ea17211d7e0a32a9c7f100abd6669122",
      "parents": [
        "a55136169eb3367c70f7b8686d51289483310586",
        "2621e40d0e0a496a96575768b7e2b70e3b3be640"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 17:39:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 17:39:29 2013 +0000"
      },
      "message": "Merge \"Implement Surface input to MediaCodec.\" into jb-mr2-dev"
    },
    {
      "commit": "daa95754a53a9f90c4afaa4eccdc25f08fd2d264",
      "tree": "8ec1aee34654a8ff1ce95ebd7e36fe4022c89c1f",
      "parents": [
        "d23b2747eff9ae3203f96039794068e9f1b0c71b",
        "056c610c9ba83fbf68e15fa4557620dc7820f087"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 05 05:40:40 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 05 05:40:40 2013 +0000"
      },
      "message": "am 056c610c: am b6a2978a: Merge \"Performance increase in thumbnail handling\"\n\n* commit \u0027056c610c9ba83fbf68e15fa4557620dc7820f087\u0027:\n  Performance increase in thumbnail handling\n"
    },
    {
      "commit": "b6a2978a5118d66bcebc380b0c20e566b7cbdfda",
      "tree": "ea9636aac7367b405e9e3284bb0f55e53145230a",
      "parents": [
        "b0cbf8607fb00a2bc54d15e01570cabf147fb5fb",
        "45e4584a0f92b0bc69797714f651b12569d7fe85"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 05 00:06:33 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 05 00:06:33 2013 +0000"
      },
      "message": "Merge \"Performance increase in thumbnail handling\""
    },
    {
      "commit": "c9b6be7c402bd349f8d9322730256f593053dc52",
      "tree": "5b7fad646d31c08d20b390b766f843490ecdaf0b",
      "parents": [
        "b237b9e081d612e9e32308474d8fa028764524fe"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Mar 04 15:20:42 2013 -0800"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Mar 04 15:20:42 2013 -0800"
      },
      "message": "Add nullness check.\n\nBug: 8313121\nChange-Id: Id2221e1c77eaf749ab4c4f6ec4cfa6684927c751\n"
    },
    {
      "commit": "2621e40d0e0a496a96575768b7e2b70e3b3be640",
      "tree": "25a3bbd0efdbfa24c637eda15cb505e7e665f101",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Feb 19 07:29:21 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Mar 04 15:04:12 2013 -0800"
      },
      "message": "Implement Surface input to MediaCodec.\n\nAdds two new public methods to MediaCodec, and one new public\nconstant to MediaCodecInfo (currently @hidden).\n\nBug 7991062\n\nChange-Id: I830a9794e92334ad05c870cc5fc90be4652147a5\n"
    },
    {
      "commit": "66dfcd465c02d78cb4ff22e7b509ee42d4309286",
      "tree": "bf7f6e22489a3c20370de540830db200e70818f6",
      "parents": [
        "d041e476f3c959f5b373b64a329aa427d057375e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 27 16:16:11 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 27 16:53:47 2013 -0800"
      },
      "message": "When scanning a single file, take .nomedia into account\n\nMake scanSingleFile behave the same way as scanMtpFile, by taking into\naccount whether there\u0027s a .nomedia file guarding the file being scanned.\nWithout this, downloaded (or otherwise explicitly scanned) images/video/music\nwill appear in Gallery and Music even if a .nomedia file is hiding them.\n\nChange-Id: Ib9ad4bda1b9a942f79a37ccd8e6a54d57710f528\n"
    },
    {
      "commit": "aac753dcf8862b416773eabaabb9d938a30f5896",
      "tree": "12c7870b939af8eb2e8380e44edbfad7a2b676b2",
      "parents": [
        "60e37947f7de7289c0c973bb8e97c0de65ee3f4c"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Feb 22 16:33:32 2013 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Feb 26 14:18:08 2013 -0500"
      },
      "message": "DO NOT MERGE - Small documentation fix for AudioManager.java\n\nCorrect typo + copy-paste description issue.\n\nCherry-pick of CL Idce7cfeb7255d96aef91efc40d19f077dde3e9a5 from\nmaster.\n\nChange-Id: I1b6f378d58eafdd4a265672a12189273b41f72d6\n"
    },
    {
      "commit": "788717ca599c714d58b2cb5deea1d37b4a711c07",
      "tree": "6e13d87e3e3ac8ee9543715536fbe2d74a737e47",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Feb 15 18:30:15 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 09:27:42 2013 -0800"
      },
      "message": "Camera and MediaRecorder: Support AppOps\n\n- Allow media processes to update AppOps state\n- Pass package name to media services\n\nBug: 8181262\nChange-Id: I115d39f0b306cb9eb7cd3d3e663c680b7322fd3f\n"
    },
    {
      "commit": "e72409fe779f620382c5bd0b82f4a32ac91d9fe4",
      "tree": "61d07311305e4fba8199e64070d86cf0c8bd0f12",
      "parents": [
        "223b6b3bfeb7cfa3e844abeb36c04ab5c8318446"
      ],
      "author": {
        "name": "Kunter Gultekin",
        "email": "kuntergultekin@google.com",
        "time": "Thu Feb 07 20:18:45 2013 +0200"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 20 09:35:57 2013 -0800"
      },
      "message": "Adds vp8 profile and levels to MediaCodecInfo.\n\nIn line with ongoing effort of adding vpx encoder to\nstagefright (https://android-review.googlesource.com/50893)\nwe need to add profile and level values for VP8.\n\nVP8 profiles and levels are defined in OMX IL 1.1.2\nextension headers, which is also being added here\nhttps://android-review.googlesource.com/51272\n\nThis alters the public API.\n\nChange-Id: I2bbb91c0b8b522b90c3cdfadaba0d18134800408\nSigned-off-by: Kunter Gultekin \u003ckuntergultekin@google.com\u003e\nrelated-to-bug: 8226783\n"
    },
    {
      "commit": "c058a380de5a7eb5427cef295f1c259c507e25bd",
      "tree": "2652d70a3f5e60db6aeb64d1f7d90aefb3019786",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 14:44:41 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 15:10:41 2013 -0800"
      },
      "message": "Open file:// Uris on client side of MediaPlayer.\n\nBug: 7962739\nChange-Id: I674b437593fa083eb66ff3ca57b898cf9bd4a3e9\n"
    },
    {
      "commit": "679d5046f245ea8b39f9b5596195f3468808dd54",
      "tree": "ec76c86ffc5dce1cbd6ba151f9800d7b1f4e6b4f",
      "parents": [
        "005f6f6077f34e0157598882fdc7ddb794cad84e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 04 16:24:09 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 11 10:15:47 2013 -0800"
      },
      "message": "Add support for querying whether the music stream is active remotely\n\nBug 7485803\n\nChange-Id: I554b44bd35b017fa4030a0d89779066c96594f2b\n"
    },
    {
      "commit": "78c2d8b356029e191aec5e45de7d9bb0fca98c21",
      "tree": "9bd65c0e7af5ac81004afda4e55973a3d05f974f",
      "parents": [
        "1b0e29aec6a9401c224f3fa3a5e05abc487e2e79",
        "6809afe1c26f0044adf2be414fcaede9024289a6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 31 22:33:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 22:33:37 2013 +0000"
      },
      "message": "Merge \"AudioRecord: allow front + back mic capture\""
    },
    {
      "commit": "6d2def71e0a7f6ed81b96444fb1cce7177251b36",
      "tree": "8705c4ccf2b4b93a1a3ded1c38c6c09a540540f8",
      "parents": [
        "a6a5c8f6b66c0750a28d2ad9cba18d0c730c4393",
        "c28fde57f0c7762913615b16d651d4e7991d6175"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Jan 28 10:33:55 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 28 10:33:55 2013 -0800"
      },
      "message": "am c28fde57: am 0b515aec: am 3cfca67b: Merge \"Fix possible integer overflow in MtpStorage\"\n\n# By Henrik Engström\n# Via Android Git Automerger (2) and others\n* commit \u0027c28fde57f0c7762913615b16d651d4e7991d6175\u0027:\n  Fix possible integer overflow in MtpStorage\n"
    },
    {
      "commit": "0b515aece642283a25c6a4416f0aecdaf17bdb58",
      "tree": "45712d1c04113dcb44d0eb91480bbc4e8b036006",
      "parents": [
        "a56711a04618bbdcdaecf15e1815a5618e6b4737",
        "3cfca67b0f1e3f464274fa5d3b2e31e5288d8f38"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Jan 28 10:28:38 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 28 10:28:38 2013 -0800"
      },
      "message": "am 3cfca67b: Merge \"Fix possible integer overflow in MtpStorage\"\n\n# By Henrik Engström\n# Via Gerrit Code Review (1) and Henrik Baard (1)\n* commit \u00273cfca67b0f1e3f464274fa5d3b2e31e5288d8f38\u0027:\n  Fix possible integer overflow in MtpStorage\n"
    },
    {
      "commit": "6809afe1c26f0044adf2be414fcaede9024289a6",
      "tree": "22d03c110d35e74f52a79f6ad638097ac9a057ab",
      "parents": [
        "2d76d4f35ca8d0bcb45159555aa7715b7070a751"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:43:35 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:43:35 2013 -0800"
      },
      "message": "AudioRecord: allow front + back mic capture\n\nChange-Id: Id75c9b420198092f5f5d255bd5512ec5a7a2c502\n"
    },
    {
      "commit": "35654b61e8fe7bc85afcb076ddbb590d51c5865f",
      "tree": "0f42a90b4deaa0156d84df5d79b78cd6f2ac8807",
      "parents": [
        "8a8b047f2d28f6b2d728731a7e71eeaf16f89700"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 14 17:38:02 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 16 12:11:01 2013 -0800"
      },
      "message": "More work on App Ops service.\n\nImplemented reading and writing state to retain information\nacross boots, API to retrieve state from it, improved location\nmanager interaction to monitor both coarse and fine access\nand only note operations when location data is being delivered\nback to app (not when it is just registering to get the data at\nsome time in the future).\n\nAlso implement tracking of read/write ops on contacts and the\ncall log.  This involved tweaking the content provider protocol\nto pass over the name of the calling package, and some\ninfrastructure in the ContentProvider transport to note incoming\ncalls with the app ops service.  The contacts provider and call\nlog provider turn this on for themselves.\n\nThis also implements some of the mechanics of being able to ignore\nincoming provider calls...  all that is left are some new APIs for\nthe real content provider implementation to be involved with\nproviding the correct behavior for query() (return an empty\ncursor with the right columns) and insert() (need to figure out\nwhat URI to return).\n\nChange-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c\n"
    },
    {
      "commit": "26bf4d9020dcb16327e91044cda78b3baef723b5",
      "tree": "4b8624b07a987e06fe34f2af70110bdae0d6ba5b",
      "parents": [
        "9003007d35c6ae1cdeac4ca831a036292b7089e9",
        "5df0e6ad26d201d18e2143c14d661e8fecb8272a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 11 11:29:39 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 11 11:30:30 2013 -0800"
      },
      "message": "Merge \"Optimize media button stack traversal for remote volume\""
    },
    {
      "commit": "9003007d35c6ae1cdeac4ca831a036292b7089e9",
      "tree": "a5e92c1034bab94172d881567794b2f68d3b1001",
      "parents": [
        "ab82e35a59fc8ebb771c4e69343d1041542a4b83",
        "8c02884c8c3c97cdc2366ac187c8a326308b895b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jan 11 11:10:00 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 11 11:10:00 2013 -0800"
      },
      "message": "Merge \"Fix Volume icons for RTL languages\""
    },
    {
      "commit": "8c02884c8c3c97cdc2366ac187c8a326308b895b",
      "tree": "50ad1ad9eb076802cb7afb060f4234c0f70c0789",
      "parents": [
        "82fca5d27dac1597d5dd739cbdd4529fd8a00861"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Jan 09 18:20:38 2013 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Jan 09 18:25:20 2013 -0800"
      },
      "message": "Fix Volume icons for RTL languages\n\n- add mirrored version of the icons\n- make VolumePanel respond to layout direction changes\n- make AudioService propagate layout direction changes to the VolumePanel\n\nChange-Id: Ibb884ab81641c319a9b7bea1381066f3f19581f0\n"
    },
    {
      "commit": "299942002b17f792e6e4f6b3f6972f62b8b136ae",
      "tree": "2528cf4ecb8d104e1fc56c330ab6c16261272d4b",
      "parents": [
        "0ada5d656de4c1ac76bc06221a1f5e561e50e258"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 09 09:46:54 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 09 09:46:54 2013 -0800"
      },
      "message": "Fix media scan NPE\n\nb/7966288\n\nChange-Id: I066bc9f00bccf070332d87d6f1bf3d6054b31136\n"
    },
    {
      "commit": "6393b07134f99ee827ebac2d339b0f5449addb0b",
      "tree": "72c0b5051d567085049635f8ad023855ec981b49",
      "parents": [
        "9fae2ecc5fb777230bde74e4a099fb4e98bf34b4"
      ],
      "author": {
        "name": "Henrik Engström",
        "email": "henrik.engstrom@sonymobile.com",
        "time": "Thu Nov 29 15:29:35 2012 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Wed Jan 09 09:27:59 2013 +0100"
      },
      "message": "Fix possible integer overflow in MtpStorage\n\nWhen converting the MB value MtpReserveSpace value to bytes there is a\npossible integer overflow since 3 integer values are multiplied, even\nthough the result is stored in a long variable. This would be visible when\nthe value is more than 2 GB. This is solved by making the constants\nlongs instead of ints.\n\nChange-Id: I799129f7076a6e331cece17b5c05aed210499648\n"
    },
    {
      "commit": "5df0e6ad26d201d18e2143c14d661e8fecb8272a",
      "tree": "d66b6a99d6b4720f36ea2a0327c4935dfc388862",
      "parents": [
        "31ffc5713913062c58854b1cc3556547f6681f65"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 07 11:22:40 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 07 12:07:06 2013 -0800"
      },
      "message": "Optimize media button stack traversal for remote volume\n\nIterate over entries in the media button stack from the top\n for remote volume-related operations as the stack entry being\n looked for is more likely at the top of the stack.\n\nChange-Id: Iaa2685ebb297d2184dd2c63498d7bd2b811ce744\n"
    },
    {
      "commit": "a578c48e6c8677bcb54340aadb9470f8a275e56c",
      "tree": "8d7aaff790dc7bb08b36e13619dd1af647f43de4",
      "parents": [
        "84aa61e2a838fdeb7484ffaf95945a205bccb453"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 28 11:19:49 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 02 12:31:56 2013 -0800"
      },
      "message": "Use playback state to update remote control stack\n\nThe remote control stack in AudioService is responsible for handling\n which application receives media button events. When an application\n \"registers\" its media button receiver, it gets placed at the top\n of the remote control stack. If the app also has audio focus (is\n at top of focus stack), this will also cause the information of\n the attached remote control client (RCC) to be displayed on the\n lockscreen.\nIf an app doesn\u0027t re-register its button receiver when it wants\n to receive the button events, it might have lost its place at the\n top of the remote control stack, and would not show up in the\n lockscreen anymore.\nThis change consists in using the playstate reported by the RCC\n to change the remote control stack. If an RCC reports a \"playing\"\n state (e.g. playing, fast forwarding), it is safe to assume the\n application is actively being used, and should be the one that\n receives the transport control buttons. This CL uses the reported\n playstate to conditionally move the corresponding stack entry\n to the top of the stack.\n\nBug 7311023\n\nChange-Id: I1505f01664c16e108b22d33e3f47f0056343676e\n"
    },
    {
      "commit": "84aa61e2a838fdeb7484ffaf95945a205bccb453",
      "tree": "60605283a35920282a3488e324c4de5141c4054a",
      "parents": [
        "383f36cf64d81ccda1aaa7cbf49377a930e02235"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 12:33:57 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 02 12:17:43 2013 -0800"
      },
      "message": "Optimize remote control stack traversal order\n\nIterate of remote control stack entries from the top of the stack\n for cases where the condition being checked is more likely at\n the top of the stack, as opposed to the bottom, which is first\n accessed when using an iterator.\n\nChange-Id: I625bee59021c2d652e9d6355b48dc0c11e36093f\n"
    },
    {
      "commit": "383f36cf64d81ccda1aaa7cbf49377a930e02235",
      "tree": "18e56c40fa1f3b4989494f1655ded49e0d4b7493",
      "parents": [
        "d6a7925d14231c016e84db53fb5a5bbab5a07d84",
        "66cbd197376a0bfe976544c428f55c2e6b8e12c9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:15:32 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 02 12:15:45 2013 -0800"
      },
      "message": "Merge \"Add comments on remote control stack traversal order\""
    },
    {
      "commit": "66cbd197376a0bfe976544c428f55c2e6b8e12c9",
      "tree": "9fc1941666df16bd46b27d4fd7cc29b93ee62e6c",
      "parents": [
        "ed2d10dab78c2ac040391d9ae64764378b18b34d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 10:24:58 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:11:15 2013 -0800"
      },
      "message": "Add comments on remote control stack traversal order\n\nAdd comments to justify where remote control stack traversal order\n doesn\u0027t matter.\n\nChange-Id: I71a71ae22446cee529649e047142c774f78a377b\n"
    },
    {
      "commit": "d6a7925d14231c016e84db53fb5a5bbab5a07d84",
      "tree": "392795fa816d3fbd321d35af97280057d78d8d9e",
      "parents": [
        "f2fc1cbb067eb12eccb23c5469814675539e28a6",
        "ed2d10dab78c2ac040391d9ae64764378b18b34d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 11:04:40 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 02 11:05:08 2013 -0800"
      },
      "message": "Merge \"Updates to remote control client (un)registration\""
    },
    {
      "commit": "f2fc1cbb067eb12eccb23c5469814675539e28a6",
      "tree": "a6a798a075f04386ab5c6e47f8a047cd746e666c",
      "parents": [
        "4c7f809dd5c934b86b0450e59941998aeb7fb96e",
        "bc83425c116694b60fde0d9ae6314339c7b8fe2f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 10:56:35 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 02 10:56:35 2013 -0800"
      },
      "message": "Merge \"Fix stack traversal order when removing or adding media button receiver\""
    },
    {
      "commit": "cf1df1944832d43aa95d3d8f6a84bea31096ad65",
      "tree": "2355b2f434f710598fa715943e89db7feea5fd2c",
      "parents": [
        "b3c81e3f6c3d41ab6220ba91808b04d758dccba1",
        "0c1e566f97a39dd79e563afe953de8879ef66bd9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 28 09:47:41 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 28 09:47:41 2012 -0800"
      },
      "message": "am 0c1e566f: am c8db3b8a: Merge \"Set \"isdrm\" info in Mediastore\"\n\n* commit \u00270c1e566f97a39dd79e563afe953de8879ef66bd9\u0027:\n  Set \"isdrm\" info in Mediastore\n"
    },
    {
      "commit": "58a9cad4e88d3cf693b917b58677c392cdec24fc",
      "tree": "d506660943ae6401861d554a4dccbdd601da6e45",
      "parents": [
        "c30f45b97f0aeefef05f51208f54eafa3499e40b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 15:30:44 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 15:31:47 2012 -0800"
      },
      "message": "Remove unused audio source\n\nBug 7110996\n\nChange-Id: I90737c14a4e6f9fe662eb7eb5bd0483da823083b\n"
    },
    {
      "commit": "ed2d10dab78c2ac040391d9ae64764378b18b34d",
      "tree": "cc1fd145a8990b71cfd7aa105402065197352a32",
      "parents": [
        "bc83425c116694b60fde0d9ae6314339c7b8fe2f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 09:21:41 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 27 09:43:46 2012 -0800"
      },
      "message": "Updates to remote control client (un)registration\n\nIterate over the remote control stack from top to bottom\n when (un)registering a remote control client (RCC).\nWhen unregistering an RCC, stop traversing the stack when\n match found. If match was at top of the stack, update\n the remote control display (RCD).\n\nChange-Id: If64acf102bdf328085d707f9e0f7e86cf4d4001a\n"
    },
    {
      "commit": "bc83425c116694b60fde0d9ae6314339c7b8fe2f",
      "tree": "6546ee061eeb53b866dbb29942e602971b8c93bb",
      "parents": [
        "c30f45b97f0aeefef05f51208f54eafa3499e40b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 26 15:09:03 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 26 16:18:24 2012 -0800"
      },
      "message": "Fix stack traversal order when removing or adding media button receiver\n\nIterate over the media button receiver stack from top to bottom\n when removing or adding a receiver.\nUpdate comments and name to reflect that the corresponding methods\n must be synchronized on audio focus and remote control.\n\nChange-Id: I1fb7f682a999aa66d92d56ca6ecd8b37eeff8ac9\n"
    },
    {
      "commit": "c30f45b97f0aeefef05f51208f54eafa3499e40b",
      "tree": "dd105cda5b16808f6df12d60d3186ac60fc7cf0a",
      "parents": [
        "2d1eb74a8e5deed8b567426ce448a9e37b11cfee"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 26 10:46:29 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 26 10:46:29 2012 -0800"
      },
      "message": "Add comments in AudioService focus and media button stack traversal\n\nAdd comments to reflect where and why the audio focus and media\n button stacks are traversed with an iterator, which traverses\n the stack from bottom to top.\n\nChange-Id: I462a522195e742295d13eff5fc727e59a5d7e830\n"
    },
    {
      "commit": "0c1e566f97a39dd79e563afe953de8879ef66bd9",
      "tree": "c4dbbeede6bc162ba5d252b9893f6d4ef54f272b",
      "parents": [
        "57ebeed61fd7b1a8fb8d1d8d719c10dfabd8aae4",
        "c8db3b8ae34c76430e8e97418e485dedc44d0954"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 21 14:42:37 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 21 14:42:37 2012 -0800"
      },
      "message": "am c8db3b8a: Merge \"Set \"isdrm\" info in Mediastore\"\n\n* commit \u0027c8db3b8ae34c76430e8e97418e485dedc44d0954\u0027:\n  Set \"isdrm\" info in Mediastore\n"
    },
    {
      "commit": "06f7de4944bbf650e1574c6f25d3ef6a193122bf",
      "tree": "e7635abd5ad64d4f1e95bbe3898522eb489bd1b2",
      "parents": [
        "12174a1c62f1a21c76f4b10eef71438019dce716",
        "95bd2329c6a36211f18be3e089eaa775ec62df62"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 17:10:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 18 17:10:52 2012 -0800"
      },
      "message": "Merge \"Simplify AudioTrack event handling and fix a race\""
    },
    {
      "commit": "b6ed68ccb269f22e635f7e323b46b9c0d70d0ebb",
      "tree": "ac76b054dd2e2c2858f0e179c16b419f44247b89",
      "parents": [
        "3f411cacbe4204c779a794451a5d5b0f67e03416"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 11:50:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 18 11:50:28 2012 -0800"
      },
      "message": "Revert \"Update AudioTrack comments\"\n\nThis reverts commit 3f411cacbe4204c779a794451a5d5b0f67e03416\n\nChange-Id: Ieb32310bc007bf2c6a2dc324db4873e7128177fa\n"
    },
    {
      "commit": "3f411cacbe4204c779a794451a5d5b0f67e03416",
      "tree": "b0f44a6af4419e3154ac901d57563cd3f98484ed",
      "parents": [
        "9e83ea46b78bde4d17136a7b410e7c14955c9955"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 09:59:55 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 10:00:49 2012 -0800"
      },
      "message": "Update AudioTrack comments\n\nChange-Id: I0cdca92e3ac63088ed919c4dcfb309d3ccb59092\n"
    },
    {
      "commit": "30676a7031bb80f522fbad5e59973716c4bc6780",
      "tree": "1127a54a9a7c31cdcd6d7861e581ddbe6d51c493",
      "parents": [
        "7ee2f7785f3f77a4d4f589fe6a488662c9ad7913",
        "bb2985aa0e3435a4a945233eebc9ea36769209d2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 06 18:59:53 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 06 18:59:53 2012 -0800"
      },
      "message": "am bb2985aa: am 683028ca: Merge \"Make it clear that non-optional MediaFormat keys are required\" into jb-mr1.1-dev\n\n* commit \u0027bb2985aa0e3435a4a945233eebc9ea36769209d2\u0027:\n  Make it clear that non-optional MediaFormat keys are required\n"
    },
    {
      "commit": "28d4cf50e793568aad660ed21865d30b2cedac0a",
      "tree": "b6459b288fb1c2e00f0fc621e8878220033767c5",
      "parents": [
        "afa528e4382e3e0fa3654fb17ead0e90be067448",
        "a501b5b8d5ec0ccc975adbcf302f01a6979e81e1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 16:34:48 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 16:34:48 2012 -0800"
      },
      "message": "Merge \"AudioTrack error checks\""
    },
    {
      "commit": "91c7bc2a8db473eb6188ae9fb16760c66782f025",
      "tree": "58d625dbc27e9cc8870287ddc9c55422bab82323",
      "parents": [
        "42b1b564b63fa9c93df894ac8eca8db68fd5c435",
        "3b4df62704a6184878afd9272830cf3db7bd2d66"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 13:48:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 13:48:34 2012 -0800"
      },
      "message": "Merge \"Allow more APIs before write in static buffer mode\""
    },
    {
      "commit": "e1a2c9f9447cd61168da874c6bc5a594f5b4a6d5",
      "tree": "d3681043c14acf6415d4a0351961b85246b3435d",
      "parents": [
        "8d8938884417cfcfbee2c75cf103494f0dc6ff20",
        "1f61d01508651b4475397414e1fe06af1ab8fada"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 12:46:32 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 12:47:17 2012 -0800"
      },
      "message": "Merge \"Use the utility logging methods and single tag\""
    },
    {
      "commit": "ee88bc8ab90696a9e479cf185ec2b8c2be0b7258",
      "tree": "c4cbf755d245cea9217ea6583fc0135373b0e869",
      "parents": [
        "678210251cb1f51ec0025f4d673d11116279cfa6",
        "cfde15d709a3466b9d503f51819b7d28e718b482"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 12:00:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 12:00:44 2012 -0800"
      },
      "message": "Merge \"Document that ByteBuffer position not updated\""
    },
    {
      "commit": "678210251cb1f51ec0025f4d673d11116279cfa6",
      "tree": "fb3b877643098d0c44c10903cb6a82b38c86108c",
      "parents": [
        "942de41bb1b2e14388055cfd0a3645394277b5da",
        "089f6ccac800303c67d99cefd27c83d9a9a40c16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 11:41:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 11:41:34 2012 -0800"
      },
      "message": "Merge \"Remove dead method native_get_session_id()\""
    },
    {
      "commit": "942de41bb1b2e14388055cfd0a3645394277b5da",
      "tree": "5821939db27404bab00d64af9f45292de7b87803",
      "parents": [
        "f0336d11f565aebdbf182289b2b9a4c58bfd80f9",
        "fde16d5879ea88a971004c984093409468b6139c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 11:26:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 11:26:40 2012 -0800"
      },
      "message": "Merge \"more fixes on safe volume warning message\""
    },
    {
      "commit": "f0336d11f565aebdbf182289b2b9a4c58bfd80f9",
      "tree": "cd22ecccd7aa3d84be2468c0ca32a8035924ed1d",
      "parents": [
        "4bbfa9dbb08c815b890bcc1dc1759ca335b568f8",
        "5e958ed0cd41fd110f6d4b63cebc5cca927f5e6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 11:14:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 11:14:05 2012 -0800"
      },
      "message": "Merge \"Remove whitespace at end of line\""
    },
    {
      "commit": "f94942f1b947c0d56bac0ffcc7ccfe95c443ebe7",
      "tree": "0b7b794a242db95182b32fe638d2cba3e9bcaac1",
      "parents": [
        "d1654e17d46f2165f74ea0096e82667e074aa8a2",
        "9121a032bb11256deabca709a42f7212ea19feaa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 06 08:37:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 08:37:37 2012 -0800"
      },
      "message": "Merge \"Import only what\u0027s needed\""
    },
    {
      "commit": "59c14048bfc0a210077192410afa28ed6f85daa0",
      "tree": "0655e6f7a1d7d6d4ab33a49c8c0ebc226dbd5f3d",
      "parents": [
        "568f923ba4cf522f699837bee0d8cba318343345"
      ],
      "author": {
        "name": "Erik Almqvist",
        "email": "erik.almqvist@sonymobile.com",
        "time": "Wed Sep 05 16:06:19 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Dec 06 16:22:33 2012 +0100"
      },
      "message": "Set \"isdrm\" info in Mediastore\n\nThe mediascanner member mIsDrm was never set\naccording to the drmframework canHandle call.\nThis subsequently caused that the isdrm column\nin mediastore was never set, and was defaulted\nto false for all files.\nmIsDrm is now set according to drmframework\ncanHandle result for each files that is scanned.\n\nChange-Id: Id557d921c4e3e3dfc35da56b69471f4bd6b3c8bf\n"
    },
    {
      "commit": "fde16d5879ea88a971004c984093409468b6139c",
      "tree": "37e83ea75cb487b5344817f35010f1fd915fb679",
      "parents": [
        "e81f55bae83559a39778fdd6a3e0b031c65dc8f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 03 14:42:39 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 05 17:59:39 2012 -0800"
      },
      "message": "more fixes on safe volume warning message\n\nFixes the following problems with safe headphone volume warning message:\n- Do not display the warning dialog when screen is off.\n- Use the same 3 second timeout as for the volume slider to dismiss the dialog.\n- Do not dismiss the warning dialog when touching outside of the slider window\nbut inside the warning window.\n- Disable the volume slider when the warning message is displayed.\n- When setting volume directly (touching the volume slider), and the warning\nis displayed, save the requested volume and apply it if acknowledged by the user.\n- Do not display the warning message when restoring safe volume after 20h of\ncumulative listenening\n\nBug 7658641.\n\nChange-Id: Ib3d1315193a433dad918aa5df78fa071062b2394\n"
    },
    {
      "commit": "a501b5b8d5ec0ccc975adbcf302f01a6979e81e1",
      "tree": "4e55bb47c58966a44233ad757d821b19eb064933",
      "parents": [
        "2b0b6596e4300350a84bbe917fd87f3b79bd2888"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 15:57:13 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 05 17:08:48 2012 -0800"
      },
      "message": "AudioTrack error checks\n\ngetMinBufferSize():\n  Simplify native_get_min_buff_size error checks and handle more errors.\n\nsetPlaybackHeadPosition():\n  Disallow for streaming mode [underlying AudioTrack C++ requires this].\n  Disallow setPlaybackHeadPosition before write().\n  Remove unnecessary synchronization around native_set_position().\n\nsetLoopPoints():\n  As setLoopPoints() is effectively a variant of setPlaybackHeadPosition(), do the same error checks.\n\nwrite():\n  Don\u0027t set \"write completed\" state if write() parameters are invalid or native write fails.\n  It was setting \"write completed\" flag too early, and ignoring native write return value.\n  Detect integer overflow.\n\nreloadStaticData():\n  Disallow reloadStaticData() before write().\n\nChange-Id: Iec36fc0ea67095e18a2c238b148dad5545c102c1\n"
    },
    {
      "commit": "9c1d2de17781e4430e4344c43eb7fbed80541ac9",
      "tree": "7a6a7180606e395bc758cf9de999051d727483b6",
      "parents": [
        "4e71faec0cba73703d8bdb11fe4a400578d4efd7",
        "b09707a041957f055cee3d290c85763cfef8d986"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 05 15:44:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 05 15:44:07 2012 -0800"
      },
      "message": "Merge \"Make mInitializationLooper final\""
    },
    {
      "commit": "4e71faec0cba73703d8bdb11fe4a400578d4efd7",
      "tree": "c4847e3656d3a287aa552d2694b0972bd7099091",
      "parents": [
        "0fc11dd0590f45ac95b1e64faf5fd57efbea4522",
        "f4e58051e22ad4e21c7cd436c37cc5665c194d1c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 05 15:35:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 05 15:35:39 2012 -0800"
      },
      "message": "Merge \"Simplify throw statements\""
    },
    {
      "commit": "0fc11dd0590f45ac95b1e64faf5fd57efbea4522",
      "tree": "edfd03d3f95ef60b56d142769cc928d82b081bff",
      "parents": [
        "9950edcdcf6eea0495ba71fa35555bbbbd26954e",
        "df3cb5279857cac41909643c6703e8fc1621fad1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 05 15:28:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 05 15:28:06 2012 -0800"
      },
      "message": "Merge \"Remove redundant AudioTrack. qualifiers\""
    },
    {
      "commit": "df3cb5279857cac41909643c6703e8fc1621fad1",
      "tree": "436ac1170f7089c5677e61445be9f9e1adc77234",
      "parents": [
        "e81f55bae83559a39778fdd6a3e0b031c65dc8f9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 28 14:38:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 05 15:24:40 2012 -0800"
      },
      "message": "Remove redundant AudioTrack. qualifiers\n\nSymbols of the current class don\u0027t need to be qualified.\n\nChange-Id: Ic89ce568771165d01d4b5bcf835c591ca0b86541\n"
    },
    {
      "commit": "4df82703a7274876c03e65f7baf643f1ed55d29c",
      "tree": "eeecc3d8ab7551cca3b5e4feca6d70241effe30e",
      "parents": [
        "7b0855715bc6cb14e3ca67d815915d2172f0bc12"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 11:12:26 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 14:28:22 2012 -0800"
      },
      "message": "Make it clear that non-optional MediaFormat keys are required\n\nAlso mark KEY_CHANNEL_MASK optional.\n\nChange-Id: I569087f564dc60a89b15a3440a9b1c538927f610\nrelated-to-bug: 7623602\n"
    },
    {
      "commit": "08067d376eae087bfaf8fdb66b5983106f98ac25",
      "tree": "01a3c1caf0473365b396c0a60339de2108e546e9",
      "parents": [
        "e81f55bae83559a39778fdd6a3e0b031c65dc8f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 11:12:26 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 11:12:26 2012 -0800"
      },
      "message": "Make it clear that non-optional MediaFormat keys are required\n\nAlso mark KEY_CHANNEL_MASK optional.\n\nChange-Id: I569087f564dc60a89b15a3440a9b1c538927f610\n"
    },
    {
      "commit": "526b035bc581b0162517c248eecdc077c801540c",
      "tree": "8ccc829bfb8ad54b68664150f38b27743c821f83",
      "parents": [
        "8a18043436c39eb40f1147482afb4cf854168d95",
        "3ef7549876a159dae1568429edcb57e4e7d08459"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 18:25:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 04 18:25:37 2012 -0800"
      },
      "message": "Merge \"Allow mute when playing over fixed volume device\""
    },
    {
      "commit": "1e821372bed43ee546ef06ff6fc299e5a1cad4a1",
      "tree": "cb5f2e48d467a241ef2e197bbcde6dfba0f4f089",
      "parents": [
        "83323f427d3c3e9b9a76c4cb6f76a5707cc686bd",
        "ad67c9546494a7c4d9336b57889a7c19a7dbb945"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 16:32:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 04 16:32:41 2012 -0800"
      },
      "message": "Merge \"Replace hard-coded sample rate values by constants\""
    },
    {
      "commit": "3ef7549876a159dae1568429edcb57e4e7d08459",
      "tree": "64ad8f17726ce701ebeaef6b10d5ad12c811cc65",
      "parents": [
        "b38f8ea546be7e1f043d2cdda78e83913ee5ea27"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 12:12:23 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 14:29:24 2012 -0800"
      },
      "message": "Allow mute when playing over fixed volume device\n\nModified AudioService to add the possibility to mute/unmute music\nwith volume keys while playing over fixed volume devices (HDMI, digital dock).\nVOL- forces volume to 0 and VOL+ forces volume to maximum.\n\nBug 7377764.\n\nChange-Id: Ibaf805d76c30e3c0e395547cd3ce0087dbfb9f30\n"
    },
    {
      "commit": "45e4584a0f92b0bc69797714f651b12569d7fe85",
      "tree": "254d33863a58e4b7ddaef2f84753bd24f3bc64ac",
      "parents": [
        "4299f63e54dceeaaa44a057ba03f0881834491ec"
      ],
      "author": {
        "name": "Posselwhite",
        "email": "christopher.posselwhite@sonyericsson.com",
        "time": "Tue Jun 21 12:41:01 2011 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Tue Dec 04 09:48:02 2012 +0100"
      },
      "message": "Performance increase in thumbnail handling\n\nAllow for 160*120 thumbnails which is what cameras commonly\ngenerates. The constants for the micro thumbnail were set to other\nvalues, resulting in recalculations of the thumbnais, which\ntakes time.\n\nThis change only affects the maximum size of the temporary image,\nwhen choosing whether to use the EXIF thumbnail or decoding and\ndownsampling the full image. Without this change, it will choose\nan x16 downsampling of the full image over an x2 downsampling of\nthe EXIF thumbnail, after the change it will prefer the EXIF\nthumbnail.\n\nCf the DCF specifications at http://www.exif.org/dcf.PDF,\n\"3.3.6. DCF basic thumbnail data structure, (C) Pixel count\"\n\nTested by running DDMS and measuring the time required to create\na thumbnail. This was 220-280 ms prior to change, \u003c 20 ms after.\n\nChange-Id: I59c753493f947e920bad3fde5eeed5d49d509863\n"
    },
    {
      "commit": "a5c9fd93cc16df4708ea4c85239fad7b5be16d43",
      "tree": "722332a5eff6e0789c8eb681eda793d2a982ec7f",
      "parents": [
        "29ac89f0ccd621f2a2905a0a402ee35be9eacb69",
        "4ecfce6f6fa4e0d32e9a57222ab0f4b91d2845df"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Dec 03 15:39:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 03 15:39:42 2012 -0800"
      },
      "message": "Merge \"Fix default ring/alarm/notification insertion\""
    },
    {
      "commit": "4ecfce6f6fa4e0d32e9a57222ab0f4b91d2845df",
      "tree": "1c0bc64279b22fe209ff618f13d3c661a12529ef",
      "parents": [
        "d5dcb6d4e9ffcaf5d74b89a3bcd5f2dab6d09f9f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Dec 03 15:11:15 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Dec 03 15:15:47 2012 -0800"
      },
      "message": "Fix default ring/alarm/notification insertion\n\nBefore directly inserting an item that is the default ringtone, alarm or\nnotification, flush the MediaInserter, since a parent of the inserted item\nmight not have been flushed yet.\n\nb/7650557\n\nChange-Id: Icdd25bd9cac8b43a75e63318b936246562744c59\n"
    },
    {
      "commit": "1adc5975fa293afc484cc3095f74a7b4964f6306",
      "tree": "1b68b188fb9d04bd109f560cb1829bcab00240a4",
      "parents": [
        "cc95712ea2eb07913d8a9964cd8266245f8c1fd6",
        "800c8ab68d695f1b6c5332c80a32316cdca69954"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 30 14:28:14 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 14:28:14 2012 -0800"
      },
      "message": "am 800c8ab6: am 2644494a: Merge changes I8462f040,Ie471f40f\n\n* commit \u0027800c8ab68d695f1b6c5332c80a32316cdca69954\u0027:\n  MediaCodec: Allow getting the codec info directly\n  MediaCodec: Allow getting the chosen component name\n"
    },
    {
      "commit": "800c8ab68d695f1b6c5332c80a32316cdca69954",
      "tree": "bd3f8b23a911c32cb956a6dfe21abc44cf98b070",
      "parents": [
        "368016f769903df05ad5af51e8402dc372d5cd49",
        "2644494a9841c1f842d790b60911699f09eb63d1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 30 14:26:16 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 14:26:16 2012 -0800"
      },
      "message": "am 2644494a: Merge changes I8462f040,Ie471f40f\n\n* commit \u00272644494a9841c1f842d790b60911699f09eb63d1\u0027:\n  MediaCodec: Allow getting the codec info directly\n  MediaCodec: Allow getting the chosen component name\n"
    },
    {
      "commit": "2644494a9841c1f842d790b60911699f09eb63d1",
      "tree": "8d697dadcc2b693b44b2b84402e7ed145ab13c0b",
      "parents": [
        "940ad4aaef6ad27a2a214559100a18100b2b3b24",
        "93077a2902a74256b7eb4795e1ef92bbc5c50f10"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 30 13:26:51 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 30 13:26:51 2012 -0800"
      },
      "message": "Merge changes I8462f040,Ie471f40f\n\n* changes:\n  MediaCodec: Allow getting the codec info directly\n  MediaCodec: Allow getting the chosen component name\n"
    },
    {
      "commit": "b686eceac9655f26694847d79683c09aaeaeedf2",
      "tree": "edc8e9af292b7757ca7ff03b88b36916acae0976",
      "parents": [
        "9e3efb9155461ceee6cd72824e0981b091fa44d9",
        "b46857d228edc53878e738ffd484dea1acf44baf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 30 09:33:01 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 09:33:01 2012 -0800"
      },
      "message": "am b46857d2: am b1f45c4a: am c3eb57b2: Merge \"AudioService: improve initial safe volume delay\" into jb-mr1.1-dev\n\n* commit \u0027b46857d228edc53878e738ffd484dea1acf44baf\u0027:\n  AudioService: improve initial safe volume delay\n"
    },
    {
      "commit": "b46857d228edc53878e738ffd484dea1acf44baf",
      "tree": "4fb0ccca3960c038d32177e036afb3fcfe58f470",
      "parents": [
        "d1b73fc17ca222cc627c932625efe9c3c1ad3b0c",
        "b1f45c4a587e5adda39774a867c78b56682c5f0d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 30 09:31:03 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 09:31:03 2012 -0800"
      },
      "message": "am b1f45c4a: am c3eb57b2: Merge \"AudioService: improve initial safe volume delay\" into jb-mr1.1-dev\n\n* commit \u0027b1f45c4a587e5adda39774a867c78b56682c5f0d\u0027:\n  AudioService: improve initial safe volume delay\n"
    },
    {
      "commit": "c3eb57b22f930f07448e877f0814eb5659bfc3c5",
      "tree": "f67c59d30c0b1b98295b17fe1821c926912f7a20",
      "parents": [
        "386165a3ae09b150165e8e7c310e194231071271",
        "05274f348e12983eb8613cc6eb9ae561e8197e28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 30 09:26:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 09:26:30 2012 -0800"
      },
      "message": "Merge \"AudioService: improve initial safe volume delay\" into jb-mr1.1-dev"
    },
    {
      "commit": "05274f348e12983eb8613cc6eb9ae561e8197e28",
      "tree": "966ea63c905560e2a08ee0d1aeda01e39f3dba41",
      "parents": [
        "89ac38bf70bb21e34c8c29b96e6316343ee46e87"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 29 12:48:18 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 29 17:46:05 2012 -0800"
      },
      "message": "AudioService: improve initial safe volume delay\n\nAudioService relies on a valid mmc in order to enforce the headset\nvolume limitation or not. There is a timeout to enforce the limitation\nif no mcc is configured after boot.\nUntil this timeout is reached or a valid SIM is detected the headset\nvolume is not limited.\n\nThis change makes that the last known volume limitation state (enforced or\nnot) is persisted so that next time we boot, last known state is applied until\na new mcc is configured if any. In most cases, the mcc does not change from one\nboot to the next and we do the right thing. If teh mcc does change, the correct\npolicy will be enforced when the mcc is detected or after the timeout.\n\nAlso fix a bug where the volume panel was not displayed if the limitation mechanism\nis triggered at the first press on VOL+ key.\n\nBug 7455275.\n\nChange-Id: Id0f2996d893d38c6a14f4f9e4a0e9e3be17ef127\n"
    }
  ],
  "next": "f4e58051e22ad4e21c7cd436c37cc5665c194d1c"
}
