)]}'
{
  "log": [
    {
      "commit": "657ff61389d7316f798d4abe03efac56fd528d91",
      "tree": "9481cad78a4b2adeb25587c3838ad4357ad2da54",
      "parents": [
        "5e0e2316578b8b9eccdf4002951d6e9cd96adaac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 07 11:58:24 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 07 11:58:24 2014 -0700"
      },
      "message": "audio policy: cleanup AudioPolicyService destructor\n\nNo need to clear strong pointers in the destuctor.\nAdd explicit exit() command to mOutputCommandThread.\n\nChange-Id: I60bb248fe6a20bfd8a55358ef139692b93df0238\n"
    },
    {
      "commit": "d46929666d7e4b1cad45afd7dcb883ec4dd2d49f",
      "tree": "7955b56d436b8856b6164cb37e16bdfbe2ad81c4",
      "parents": [
        "7ebe2c64dea42a3fd4de34ccb877d23b7a4e8076"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 05 18:13:44 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 06 10:40:14 2014 -0700"
      },
      "message": "audio policy: update from libhardware_legacy\n\nMerge changes made to AudioPolicyManagerBase in libhardware_legacy\nsince it was forked here:\n\nfd61179 Update policy handling for USB inputs\nc7b6e3c audio: allow compiling for 64-bit\nc26f454 Initial implementation of USB Audio output.\na7b1bc9 Audio policy is 32-bit only\n26101ad audio policy : add AUDIO_DEVICE_IN_USB_DEVICE to sDeviceNameToEnumTable\n\nChange-Id: I22bc883c20603a6598c6ee3ded636e9cc4d9ec03\n"
    },
    {
      "commit": "7ebe2c64dea42a3fd4de34ccb877d23b7a4e8076",
      "tree": "aba8cbdf008c711cc6e11109e5b15f9f47ac4e52",
      "parents": [
        "dfa829c3ca81fcd2eecaabfff630ac0f41453731",
        "711719885d7563068579abf347c366cf6bc906f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 06 15:35:34 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 06 15:35:34 2014 +0000"
      },
      "message": "am 71171988: am f655acf1: am 8fb04d47: Merge \"Fix memory leak when filtering commands in insertCommand_l()\"\n\n* commit \u0027711719885d7563068579abf347c366cf6bc906f5\u0027:\n  Fix memory leak when filtering commands in insertCommand_l()\n"
    },
    {
      "commit": "2f8a36fc8df14cba33fa7c5c1c9d5a52f8a133c2",
      "tree": "7d46255b2e5a25ca5de3cc756152a3a64121ea6c",
      "parents": [
        "2347c7b0502f5f71d2f0e22d39f1d5a61add3f6b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 26 19:05:55 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 26 19:05:55 2014 -0700"
      },
      "message": "Fix the build\n\nChange-Id: I2169a3d26f4e35e5cfa35a1264175aab6ac4db41\n"
    },
    {
      "commit": "1b512c05f46465a7b1a1d69f82937d7199d5d926",
      "tree": "354295c76a76128d3122f8f4ac58bb5a1bf4c601",
      "parents": [
        "3a4311c68348f728558e87b5db67d47605783890"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 12:42:06 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 26 15:28:47 2014 -0700"
      },
      "message": "audio policy: remove obsolete AudioPolicyManager class members\n\nRemove mHasA2dp, mHasUsb and mHasRemoteSubmix members from\nAudoPolicyManager. They are not needed any more since\nwe use device descriptors with additional attributes.\n\nAlso remove obsolete limitation on device address\nlength (MAX_DEVICE_ADDRESS_LEN).\n\nChange-Id: Iffe760a521692a4b50be3f6b935af84afb61bb86\n"
    },
    {
      "commit": "3a4311c68348f728558e87b5db67d47605783890",
      "tree": "920ecdf2868176572b6770200d6e3314c5462dd7",
      "parents": [
        "172a7a965c21c29ee38c77d53d91780c7dca09bf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 12:00:47 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 26 15:28:33 2014 -0700"
      },
      "message": "audio policy: use new audio device representation\n\nRepresent audio devices with more attributes than just the\ntype (audio_device_t).\nThis is in preparation for new routing APIs allowing\ndevice selection based on more criteria than just the type\n(address, channel mask...)\nA new class DeviceDescriptor is created and used by functions\nneeding more information than just the device type.\nBit fields for available and supported input or output devices are\nreplaced by vectors of device descriptors.\nEach available device is allocated a unique ID for future use.\nRemoved obsolete mA2dpDeviceAddress, mScoDeviceAddress and mUsbCardAndDevice\nfields replaced by address stored in DeviceDescriptor.\n\nPolicy decisions like getDeviceForStrategy() are still based\nonly on the device type.\n\nChange-Id: I5de3b3ffb12ff8dcfb746782ab1e6b15bf040d0c\n"
    },
    {
      "commit": "9ac3c9a7ee931088d09027ffa09414cb0402886f",
      "tree": "44309833a9ac1af6b4edb3a7354ed4e7eb45dc06",
      "parents": [
        "6c38d8a2037d5c0cc110ad9bac71ab677a9d6359",
        "dce54a1492c410ad0d93253b341fb33305337505"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 21 01:09:34 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 21 01:09:34 2014 +0000"
      },
      "message": "Merge \"audio policy: add option to use new policy manager\""
    },
    {
      "commit": "c7e05b0fc54f9ad22c6d219bf8cf6f10f8d9ba9c",
      "tree": "7936019ac07522ded8e35362289f05201f6db34c",
      "parents": [
        "da677084cf68b62063815217156e7b262b493c3d",
        "0c282de73240b1efce64558ab2fa0a8be1f4292b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Mar 18 20:52:42 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 18 20:52:42 2014 +0000"
      },
      "message": "am 0c282de7: am 77658a06: Merge \"AudioPolicyService: malloc/delete pair\"\n\n* commit \u00270c282de73240b1efce64558ab2fa0a8be1f4292b\u0027:\n  AudioPolicyService: malloc/delete pair\n"
    },
    {
      "commit": "dce54a1492c410ad0d93253b341fb33305337505",
      "tree": "2580556580832583ce5cd5a640684b8dc0948783",
      "parents": [
        "0fab43120972dfbf4d6f0ec19ab470131b6c8b09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 10 12:19:46 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 18 10:55:33 2014 -0700"
      },
      "message": "audio policy: add option to use new policy manager\n\nAdd build option USE_LEGACY_AUDIO_POLICY to use either new\naudio policy manager in local AudioPolicyManager.cpp\nor the legacy AudioPolicyManagerBase.cpp via the policy HAL.\n\nNew features will be implemented only by the new audio policy manager.\nPlatform customiization will be by config file or new policy HAL.\n\nAudioPolicyClientImplLegacy.cpp copied from AudioPolicyClientImpl.cpp\nAudioPolicyInterfaceImplLegacy.cpp copied from AudioPolicyInterfaceImpl.cpp\n\nNew implementations of AudioPolicyInterface and AudioPolicyClient talking directly to\nAudioPolicyManager.\n\nChange-Id: I7a320883a1de13de2c9295343e996addf2f3c154\n"
    },
    {
      "commit": "e07208765fcd5904165e425ec714a25c350a2f40",
      "tree": "f255f68fb03d0512df0788901317da866ec21777",
      "parents": [
        "3b73df74357b33869b39a1d69427673c780bd805"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 09:30:41 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 14:03:55 2014 -0700"
      },
      "message": "audio policy: renamed AudioPolicyManagerBase to AudioPolicyManager\n\nChange-Id: Ia8b5ae9c3a9cf6ed98f162614ea331efc78e9ff2\n"
    },
    {
      "commit": "3b73df74357b33869b39a1d69427673c780bd805",
      "tree": "ee7f5026f5dbb34f0f9de4c6db8c7aa82401c695",
      "parents": [
        "e552edb33fb5873179ae0a46d9579d1103eb13c6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 09:06:29 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 14:03:55 2014 -0700"
      },
      "message": "audio policy: remove dependency from AudioSystemLegacy\n\nRemove all dependencies on AudioSystemLegacy from AudioPolicyManagerBase.\nOnly use types and definitions from audio.h and audio_policy.h.\nAlso move code back into android name space.\n\nChange-Id: I0c2582cf854027fb1e599981865a6cbe7b5a9490\n"
    },
    {
      "commit": "e552edb33fb5873179ae0a46d9579d1103eb13c6",
      "tree": "a54dd066de5a9c43f3899cbb7c43acc64231f2f8",
      "parents": [
        "2d388eccc9dc085337c7a03a68467cbee6b809e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 10 17:42:56 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 14:03:55 2014 -0700"
      },
      "message": "audio policy: import audio policy manager from hardware legacy\n\nImport AudioPolicyManagerBase from hardware/libhardware_legacy\nto prepare move from android_audio_legacy name space.\n\nChange-Id: I5d6682ccd2bfdeefbf2f6f81a557480a76aaf4fc\n"
    },
    {
      "commit": "2d388eccc9dc085337c7a03a68467cbee6b809e1",
      "tree": "359f5f2873277708258f9cfd103354e470f3a4ea",
      "parents": [
        "c7e5040aa8b8e4da86814bf560346c7571e48087"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 07 13:25:54 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 13:56:42 2014 -0700"
      },
      "message": "audio policy: split implementation\n\nSplit audio policy service implementation to ease\nfurther evolution:\nAudioPolicyInterfaceImpl.cpp contains the implementation of\nIAudioPolicyService interface\nAudioPolicyClientImpl.cpp contains the implementation of the\nAudioPolicyManager client interface\nAudioPolicyService.cpp contains the rest of the code mostly\ncommand threads implementation and pre processing management.\n\nAudioPolicyService.cpp:\n\nChange-Id: Ic48ba165532ef66e84a30894d01f750ed6619d02\n"
    },
    {
      "commit": "c7e5040aa8b8e4da86814bf560346c7571e48087",
      "tree": "8cd35c3ea6a2f9849d27a8299705dd7aea494894",
      "parents": [
        "1ac1638077277de52d1dd4c54db71e67753f1960"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 14:35:55 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 13:52:14 2014 -0700"
      },
      "message": "move audio policy service to a separate library\n\nChange-Id: Ibc3ef07aa9860b7fd4f9aaff27b0dbe0dcbf1cbf\n"
    }
  ]
}
