)]}'
{
  "log": [
    {
      "commit": "07be14fb96fc5c106ea2b874faf2b768f468eb8e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "message": "Revert \"Audio V4: Split system and vendor Audio.h\"\n\nThis reverts commit f8ad7f85e9891b2614338330c75ae9e946fccc5a.\n\nReason for revert: Breaks the build of multiple devices\n\nChange-Id: I24f17a0fa0c7ba171c4a3639f890e7f4e42f6b1e\n"
    },
    {
      "commit": "f8ad7f85e9891b2614338330c75ae9e946fccc5a",
      "tree": "957d47ddc7419c688dda1d4c1ac3068eda6d894f",
      "parents": [
        "6d7582e9ad858301b3eeff7b187af6c34808cb7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 17 15:57:39 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 21:39:40 2018 -0800"
      },
      "message": "Audio V4: Split system and vendor Audio.h\n\naudio.h and its dependencies (audio-effect.h, sound_trigger.h...)\nused to be shared between system and vendor code.\n\nThis led to multiple problems:\n\n1) Such sharing contradicts the Treble policy of\nstrict independence of framework and vendor code.\n\n2) When audio.h was changed, every vendor needed to update\nits code in the next release. This meant that audio*.h\nheaders were mostly changed in backward compatible manner.\nNevertheless, for P the HIDL interface and thus the audio.h\ninterface are changed in backward incompatible way.\n(Some enum are becoming 64 bit long).\n\n3) As the headers were common, some API used only by the framework\nneeded to be visible to the vendors (mostly enum values).\n\n4) Treble policy is to support at least one previous HAL version\n\nAs a result the audio*.h headers are now duplicated,\none set for the framework, and one for the vendor.\n\nEach set will evolve independently. After this split,\nthe framework-only APIs will be removed from the vendor headers\nand vice versa.\n\nThe split is implements as such:\n\n + for system code\n\n    - NOT moving the libaudio_system_headers\n      Eg: system/audio.h and system/audio_effects/effect_equalizer.h\n          are still in system/media/audio\n\n    - the legacy audio HAL API that were in libhardware headers\n          are now in libaudiohal_legacy_headers\n      Eg: hardware/audio.h and hardware/audio_effect.h\n          are now in frameworks/av/media/libaudiohal/legacy/\n\n + for vendor code\n\n    - moving libaudio_system_headers and the legacy audio HAL API\n          that were in libhardware_headers in\n          android.hardware.audio.common.legacy@2.0\n      Note that those headers are now versioned, so migrating to a @4.0\n          HIDL HAL will mean changing the legacy dependency too.\n      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h\n          are now in hardware/interfaces/audio/common/2.0/legacy\n\n    - the legacy audio effect HAL API that was in libaudioeffects\n          is now moved in android.hardware.audio.effect.legacy@2.0\n      Eg: audio_effects/effect*.h are now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\n    - the legacy sound trigger HAL API that were in libhardware_headers\n          is now moved in android.hardware.soundtrigger.legacy@2.0\n      Eg: hardware/sound_trigger.h is now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\nlibaudioutil being used by both system and vendor, had\nto be renamed for system to libaudioutil_system.\n\nVendor libs that now depend on the audio.h of a specific\nversion and are not extensively referenced in non google code,\nappend @2.0 to their name.\n\nNote that headers that are not expected to change in the 4.0 HAL are\nleft in all-versions folder to avoid duplication.\nThis is an implementation detail as the versioned libraries export\nthe all-versions headers.\n\nNote that strict vendor-system separation is enforced by the\nbuild-system. The system headers are not available for vendor\nlibs and vice-versa.\n\nNote that this patch is split between numerous git repository (\u003e10),\nall the commits having the same Change-id for searchability.\n\nNote that audio_policy.h is no longer exposed to vendors\nas the legacy audio policy HAL API was never officially supported.\nAs a result the audiopolicy stub implementation has been removed.\n\nTest: compile taimen-userdebug walleye-userdebug\n              sailfish-userdebug marlin-userdebug\n              gce_x86_phone-userdebug gce_x86_phone\n              full-eng aosp_arm aosp_x86-eng\nTest: check that the emulator booted and played audio\nTest: full QA on sailfish-userdebug and taimen-userdebug\nBug: 38184704\nChange-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "8589ce7045fd4f5520aabbc773f00c7136925fd7",
      "tree": "a02b3ba722bc13f798c9c10cc51d19b670388452",
      "parents": [
        "f24d95960d85c891fc40db6f1e9644385efb4eb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:03:42 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:06:32 2017 -0700"
      },
      "message": "Split nblog off from nbaio\n\nnbaio is an acronym for \"non-blocking audio I/O\", and nblog means\n\"non-blocking logger\" so nblog does not belong with nbaio.\n\nThere are a lot of improvements planned for nblog, and having the\nrestructuring done will make it clearer as more files are added.\n\nTest: builds OK\nChange-Id: Ib28bada2566c1d64bdbe9f5d7a5ce40e080178ef\n"
    },
    {
      "commit": "2ee7aab4a39139a86a24ca14f718eb20a1b355db",
      "tree": "1a7501567d6af64aa958f26453ee9360833bfd4a",
      "parents": [
        "bcbc56bfd43e071cf8b199e9e6dfc835d1f29ab6"
      ],
      "author": {
        "name": "YOUNG HO CHA",
        "email": "ganadist@gmail.com",
        "time": "Thu May 25 23:16:51 2017 +0900"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 25 11:26:52 2017 -0700"
      },
      "message": "Android.mk: remove $TOP in LOCAL_C_INCLUDES\n\nTest: make systemimage\n\nChange-Id: I5f83786afe3f2c65819b127b041cb74fc4c989ac\nSigned-off-by: YOUNG HO CHA \u003cganadist@gmail.com\u003e\n"
    },
    {
      "commit": "fe1e1449cadff4f946c33403aecc73b4b4a11e56",
      "tree": "500bb66d15abbbd9b48dce430480cc35d4e6245b",
      "parents": [
        "5a3b54df3014ece49eb1f339e5598c01c6126251"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Jan 30 12:02:03 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 02 16:45:04 2017 -0800"
      },
      "message": "Implemented typed, thread-specific logging system. Currently supported types are:\n * Strings\n * Integers\n * Floats\n * Timestamps\n * Process IDs\n\nAdded printf-like formatted logging using mentioned types.\n\nTest: included in this CL\nBug: 29421410\nChange-Id: Ie07b78d8d39c32fcc8a122ffa9b1b7082800b990\n"
    },
    {
      "commit": "068561c8e84569d51df2adbbb53b56fdfd09c06b",
      "tree": "67e6c9c383b4667adc502b0ed6928a672a6a5b6d",
      "parents": [
        "ee454fcb25bff0f9c5d3455775a4cb66429e875e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 03 17:09:32 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 10 17:06:46 2017 -0800"
      },
      "message": "AudioFlinger: Split off audio processing library\n\nTest: native AudioResampler test, general playback test\nBug: 31015569\nChange-Id: Ifb248f4402a583438d756c014dcd7a4577aef713\n"
    },
    {
      "commit": "08dab5ae92ddd1f3b337b6e35f918fea8c284a56",
      "tree": "4ebbef53fa801437efecb2de9135543c5f1326c6",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Wed Dec 07 15:08:17 2016 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Thu Dec 08 18:13:28 2016 +0900"
      },
      "message": "Use libmedia_helper as shared lib.\n\nThe dependencies to static libraries in frameworks should be removed\nas many as possible to reduce a size of the system partition.\nAnd that will improve coverage of the VNDK libraries because this\neffort might find new necessary shared libs which were linked\nstatically before.\n\nSize diffs of affected binaries on angler-userdebug build are as\nfollows.\n\nlibmedia                    : 598056 -\u003e 547928 (-50128)\nlibstagefright              : 1496420 -\u003e 1492124 (-4296)\nlibaudiopolicyservice       : 75372 -\u003e 66940 (-8432)\nlibaudiopolicymanagerdefault: 613168 -\u003e 583516 (-29652)\nlibaudioflinger             : 397840 -\u003e 364380 (-33460)\nlibaudiohal                 : 114752 -\u003e 68684 (-46068)\nlibaudiopolicyenginedefault : 122096 -\u003e 71968 (-50128)\nlibmedia_helper             : 0 -\u003e 66288 (+66288)\n\ntotal                       : (-155876)\n\nTest: building succeeded, and the image was tested on angler.\nBug: 33056637\nChange-Id: I00a71e518337a1efcf7f55256145776311596991\n"
    },
    {
      "commit": "538ec5e04f389cba637b030757be317fcb8677a8",
      "tree": "c9c576057efe1f6c0bdf1a4cbf6b58dce68f5e3f",
      "parents": [
        "e085c1072f017d4910f7e49741f72e8a722b8892"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 13:21:22 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 12:14:36 2016 -0700"
      },
      "message": "Split libmedia into libmedia and libaudioclient\n\nThis makes it so audioserver doesn\u0027t need to link against the entire libmedia,\nwhich has dependencies on camera, ICU, OpenGL and other things that aren\u0027t\nneeded for audio.\n\nTest: build/boot\n\nChange-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af\n"
    },
    {
      "commit": "8ad947667b8460f87f71aecab7ac8c23c40f5350",
      "tree": "f215d4baedb24cff3ab0ab3dd4ad4ad83181e567",
      "parents": [
        "91590de539c11f84d35874bdce05baa179e0129f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 09:59:52 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 03 01:48:32 2016 +0000"
      },
      "message": "Move IMediaLogService to libmedialogservice\n\nSo audioserver and libmedialogservice don\u0027t have to link against libmedia\n\nTest: build/boot\nChange-Id: I4040d9f6db59807c3fa56321d45fb6ab50fb5edb\n"
    },
    {
      "commit": "3bd1c87ac0d767566f5da387e90b8a3cd86ecc97",
      "tree": "03f3f8c7f44d856dd133ea8675b8d1d76313ae49",
      "parents": [
        "b48230387118548762d70b7d98ebcc2574df9378"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Mon Sep 26 12:58:14 2016 -0700"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Oct 26 19:19:23 2016 -0700"
      },
      "message": "Buffer Log functionality for AudioFlinger\n\nSimilar to ALOGV, this allows to capture to file audio samples from\nwithin audioservice for debuggin purposes.\n\nTest: manual. Mostly used for debugging\nChange-Id: I4d43f573926805a27be910e343476c3f1be51579\n"
    },
    {
      "commit": "9fe94012187a29eeeca2c74e75f121192560fba0",
      "tree": "6019137198afcc098e664c337b86b765d63a63bc",
      "parents": [
        "61a4fac2e3ec271241e3a4f405d7357b7f6ca4c2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 14 14:57:40 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 14 15:29:33 2016 -0700"
      },
      "message": "Split audio effects headers\n\nThere can be different use cases with the code that imports\nheaders from audio_effects (each subsequent case is a more\nspecialized version of the previous one):\n\n  1. The code only needs access to general structures\n     like effect_descriptor_t:\n     \u003d\u003d\u003e include system/audio_effect.h\n     Example: AudioSystem in libmedia\n\n  2. The code that needs access to effect UUID and parameter\n     enums:\n     \u003d\u003d\u003e include system/audio_effects/effect_foo.h\n     Examples: media framework effects interfaces, libwilhelm\n\n  3. The code that needs to call into HAL:\n     \u003d\u003d\u003e include hardware/audio_effect.h\n     Examples: libaudiohal (implementation part) and libeffects\n\n  4. The code that implements a particular effect:\n     \u003d\u003d\u003e include audio_effects/effect_foo.h\n     Examples: cts/.../CTSTestEffect.cpp\n               stuff in hardware/, vendor/\n\nNote that AudioPolicy still deals with the effects HAL directly,\nthis needs to be fixed.\n\nChange-Id: I963335ede6a196f9225caf21e1a01d03635e363c\nTest: make\n"
    },
    {
      "commit": "a0c91339814f37ea78365afb436c9f3d1f0a0090",
      "tree": "b0075232d68758a314754a9293c65ea15091ca95",
      "parents": [
        "5090f7d3211b5517a7602c910c04462f7eee0727"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 19 10:01:12 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 26 14:53:38 2016 -0700"
      },
      "message": "Update NBAIO to use the new audio HAL abstraction layer\n\nMoved the HAL access abstraction layer to a separate library so it\ncan be used both by audioflinger and libnbaio.\n\nBug: 30222631\nTest: manual with Loopback app, Hangouts, YouTube\n\nChange-Id: Id622c2f1aa8f55a775d34f369a596c2c4d29d5be\n"
    },
    {
      "commit": "1dc98674f701dada94143b4d31b7221c58346c6c",
      "tree": "44f80a66fdff774d2229ca3aaabdd614ed1f8013",
      "parents": [
        "9debf8f6d26f7aa12c68ddfb6cdb1323d4b5adbf"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 18 17:50:29 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 21 15:58:24 2016 -0700"
      },
      "message": "Abstract away access to audio streams HAL in AudioFlinger\n\nIn this CL all direct access to audio_stream_t, audio_stream_out_t, and\naudio_stream_in_t their functions is encapsulated within the new\nhierarchy of Stream[In|Out]HalLocal classes.  AudioFlinger uses\ninterface classes Stream[In|Out]HalInterface to access these functions.\n\nNote that NBAIO still receives raw HAL stream handles and needs to be\nconverted separately.\n\nBug: 30222631\nTest: manual with Loopback app\n\nChange-Id: I6388cfa2006791c9c0aa7bb186719209726a2d48\n"
    },
    {
      "commit": "681caefc7d3db69952daf1536513070c50b99635",
      "tree": "8142fa1c49ce859d90aff0f829d07e5cd3b8eab1",
      "parents": [
        "3de6a5bdf8bb01cbbcd3f446c646fc14f82c8938",
        "b58c4e1bbd4e2420614e1bfe13f885e502301b63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 08:49:16 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 16 08:49:16 2016 +0000"
      },
      "message": "Merge \"Stop including libcore/include/ in frameworks/av.\" am: adc9ba6520 am: c75164b942 am: 16fbb20e73\nam: b58c4e1bbd\n\nChange-Id: Iaf5158ff00eac7f4aff21eb7c3c31d62ec92ee33\n"
    },
    {
      "commit": "b58c4e1bbd4e2420614e1bfe13f885e502301b63",
      "tree": "69082d9b5339a5746d291bb2e8f124295abf234c",
      "parents": [
        "45c5d1a53534f6c41e369f09e4c77720bad28ca7",
        "16fbb20e739eba747c1d478a4bbcae47c7d7a421"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 08:46:45 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 16 08:46:45 2016 +0000"
      },
      "message": "Merge \"Stop including libcore/include/ in frameworks/av.\" am: adc9ba6520 am: c75164b942\nam: 16fbb20e73\n\nChange-Id: I751944e050b849e18c78857f64134ba54d0978eb\n"
    },
    {
      "commit": "fb78341ae3a11b4c0356b393b6163f3e1258d7be",
      "tree": "5fbee9b91938bd347b5bfbbc1dbe6e99e839b086",
      "parents": [
        "8a288e1fbd3b41ee555e2b6331b03e5f777f5711"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 13:04:22 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 13:04:22 2016 -0700"
      },
      "message": "Stop including libcore/include/ in frameworks/av.\n\nChange-Id: I7c0ffa84071c2080b5bfe2ce9ad7e1822fe863c7\n"
    },
    {
      "commit": "e4f1f63a2c54ee8687ad8cca18df0f6639ad7c81",
      "tree": "941cdb35111e5e01ece553475e5bbf7841a7116c",
      "parents": [
        "1724ee3caa5f0b4e73979036073f0b71a115083a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Aug 31 11:35:10 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Sep 13 16:27:15 2016 -0700"
      },
      "message": "Abstract away access to audio devices HAL\n\nIn this CL all direct access to audio_hw_device_t and its functions is\nencapsulated within the new class DeviceHalLocal. Loading of hardware\nmodules is encapsulated withing DevicesFactoryHalLocal.  AudioFlinger\nuses interface classes DevicesFactoryHalInterface and DeviceHalInterface\nto access these functions.\n\nBug: 30222631\nChange-Id: Ic88b20c55813a24b898f4a832e082c17d81935b7\n"
    },
    {
      "commit": "598857bdcfc99e8afc597ea815a9b93aa81fe0c4",
      "tree": "fa472a6907c1ec935df2a8b1c3399edf5d827b82",
      "parents": [
        "30b42b8d961b765e8c77ab8724636e98372fbf80",
        "9b7a8f94619b6847db7dc37deb5918b6f3439a43"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 31 01:32:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 01:32:49 2016 +0000"
      },
      "message": "AudioFlinger: Disable (revert) LockWatch am: deb0335714 am: d8d2728947 am: 5d819b4794\nam: 9b7a8f9461\n\nChange-Id: I1840bd725020242337af910ea3f51cd094e3c937\n"
    },
    {
      "commit": "deb0335714cabc906098fb1d971d992027267fc6",
      "tree": "91cb7cecab0980afbd73e44f78ee13c319a0f7fa",
      "parents": [
        "d60bac90266f3862ed60852b6de5b00cab389fb7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 29 14:40:14 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 30 02:24:58 2016 +0000"
      },
      "message": "AudioFlinger: Disable (revert) LockWatch\n\n    Revert \"audioflinger: add watchdog on main mutex\"\n    This reverts commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229.\n\n    Revert \"LockWatch: Update to Mutex::timeLock specs\"\n    This reverts commit 51a6319111df875710dab25a1a99b10d002c4869.\n\nBug: 30936184\nChange-Id: I0f6df6c98c06e161038b1bf0aae5912619cb4066\n"
    },
    {
      "commit": "4a3d5c23f79189eb7ab9f31c440c7da5b15947a2",
      "tree": "6417b4b0425ae73ba9e7c7ce3e17e7dc499e0fec",
      "parents": [
        "ecb008139a952a7e5d812e7eb0f5af0f9466d25d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Aug 15 13:47:42 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Aug 29 10:22:35 2016 -0700"
      },
      "message": "Abstract away access to audio effects HAL and factory\n\nIn this CL all direct calls to functions from EffectsFactoryApi.h\nand hardware/audio_effect.h are encapsulated within two new\nclasses: EffectsFactoryHalLocal and EffectHalLocal. AudioFlinger\nuses interface classes EffectsFactoryHalInterface and\nEffectHalInterface to access these functions.\n\nBug: 30222631\nChange-Id: Id64b9c5529319077f6f968921489a13f60daa977\n"
    },
    {
      "commit": "82f5b811b2767289ebb8a9e6af1919c3b72b5121",
      "tree": "c1bff8e75017ef08e74973413f88d1d89cb78a1a",
      "parents": [
        "1d320b9d14f7e136b3d1a94e977ce2a08459f49b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 17 13:53:12 2016 +0200"
      },
      "committer": {
        "name": "Adam Seaton",
        "email": "aseaton@google.com",
        "time": "Sat Aug 20 23:25:34 2016 +0000"
      },
      "message": "DO NOT MERGE ANYWHERE (nyc-dr1-dev) audioflinger: add watchdog on main mutex\n\nCheck every 10 seconds if main audioflinger mutex can be acquired and\ntrigger audioserver process restart if not.\nThis will allow to capture tombstones of locked up situations and avoid\nthe disruption of a system_server restart.\n\nBug: 30737845\nBug: 30388410\nChange-Id: I8a78b8cf813982f70ea598a6d42affc0ecaa76c9\n(cherry picked from commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229)\n"
    },
    {
      "commit": "17a58b2560c38a8e31a38186f9ab6eb98a38e229",
      "tree": "70f3a93d1c866bbafefdc5ed6647d007bbb01689",
      "parents": [
        "eb2c7c372615427b3b6350f1f563382b0b70917e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 17 13:53:12 2016 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 17 19:17:04 2016 +0200"
      },
      "message": "audioflinger: add watchdog on main mutex\n\nCheck every 10 seconds if main audioflinger mutex can be acquired and\ntrigger audioserver process restart if not.\nThis will allow to capture tombstones of locked up situations and avoid\nthe disruption of a system_server restart.\n\nBug: 30737845\nBug: 30388410\nChange-Id: I8a78b8cf813982f70ea598a6d42affc0ecaa76c9\n"
    },
    {
      "commit": "fcddb0b73931d207b21bd281a7df3ba2f230a607",
      "tree": "f9b35ea1d18407f17cd1fd10d9365867abbed823",
      "parents": [
        "f81362f6cd1bb22f988c30e6b552e6a2d95c4de7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "message": "Enable strict warning checks and fix\n\nChange-Id: Id401a937911eb418e93314812f2f7c2b5ecff8d6\n"
    },
    {
      "commit": "35fec5f61393124c9e13958941637b8fe386385e",
      "tree": "fefde299821c796e53e4e87a924754f213d5850c",
      "parents": [
        "0c4a97e6e1470b2d8b8810792af8d66689020c51"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 14:21:48 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 14:38:00 2016 -0700"
      },
      "message": "Add memory leak detection to audioserver\n\nadb shell dumpsys media.audio_flinger --unreachable\n\n(userdebug and eng builds)\n\nBug: 28049120\nChange-Id: I72ac624bd5b5482aac44b9f3d8429f657f715cb4\n"
    },
    {
      "commit": "e875c8016198b4d84225fcf45d905fc424e53553",
      "tree": "dacbd6c32ea580d1e1dd6181066aeece4cda9442",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 14:52:27 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 15:14:48 2016 -0700"
      },
      "message": "Make build warnings be errors\n\nChange-Id: Ia9e32a36f5c0268c8e85ebf25168821d8ad0162d\n"
    },
    {
      "commit": "8fa2697e21c61998f78c346251d2c08f77d720ea",
      "tree": "17e06c62a4e47b816e63cf5fbae0907fbb2efb5f",
      "parents": [
        "7e258e85368ccc8e714235a22206527090685a9b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 03 13:19:27 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 17 18:06:46 2016 -0700"
      },
      "message": "Update audio services for 64 bit compilation\n\naudioserver still runs in 32 bits\n\nBug: 27479136\nChange-Id: I99ac607e4ce006a87abc2a3f838023e00ef78647\n"
    },
    {
      "commit": "4699a6a4c1fa62cd72dfda7b08573678eabbcfa3",
      "tree": "5ce6083c4b4b29fa6961ff59ab6f46b61a08f4af",
      "parents": [
        "262c39e35bf88e09dab3e0ae9f7df84db64273bb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 16 10:49:09 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 18 09:25:32 2016 -0800"
      },
      "message": "Clean up USE_NEON to make it easier to disable NEON for benchmarking\n\nBug: 27242871\nChange-Id: I30ba8bfe55885cde531706c760ec27e593d7f8b3\n"
    },
    {
      "commit": "d79072e9dff59f767cce2cda1caab80ce5a0815b",
      "tree": "cab9cab36ddf4bb61675c4508d923b283fd3edd6",
      "parents": [
        "a7b723715bab4ddf6db364c825135a9bc003c7c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 06 08:41:20 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 25 15:34:04 2016 -0800"
      },
      "message": "Remove TimedAudioTrack and associated code\n\nBug: 8278435\nChange-Id: I095c1a4888e645e14d93b0b15fbef4524a831ca1\n"
    },
    {
      "commit": "3f273d10817ddb2f792ae043de692efcdf1988ae",
      "tree": "85d7e25da5a8a1d7c86487821004246ccab36e03",
      "parents": [
        "c5fcd06e9c332a60ba5fcba2118270dbdf22ae42"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Nov 24 09:06:49 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Dec 02 18:18:03 2015 +0000"
      },
      "message": "Uses AudioFlinger to signal battery stats for audio.\n\nBug: 18177221\nChange-Id: I704010c037cb99bb74b98798ee8e494fa8bdc875\n"
    },
    {
      "commit": "f99498ee4de7123e2fd71778c6877be44fbd1506",
      "tree": "76fc5f13ab660c053101f09a701187259952e90a",
      "parents": [
        "8595eaab5884bb74d884d366ad6e371a296bf576"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Sep 25 16:52:55 2015 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sat Sep 26 11:22:20 2015 -0700"
      },
      "message": "CameraService: Use SCHED_FIFO for request queue thread in HFR\n\n- Move SchedulingPolicyService from audioservice to mediautils\n\n- When starting up a high speed stream config, set request queue thread\n  to SCHED_FIFO using SchedulingPolicyService\n\nBug: 24227252\nChange-Id: I224b59142bd111caf563779f55cddd62385b9bac\n"
    },
    {
      "commit": "926ac73529a3b1fc614f8e7f1b2ed35564fc51e6",
      "tree": "33776a181b2a48ef5f6cf19ba82ac514296f495d",
      "parents": [
        "ff2116e805a3d72cf8bdb07fb47554b93faa93fa"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 12 11:18:15 2015 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 15 16:02:53 2015 -0700"
      },
      "message": "Enable building with clang/llvm.\n\nThe llvm bug https://llvm.org/bugs/show_bug.cgi?id\u003d21572 was fixed.\n\nBUG: 18373866\nChange-Id: Ia529bf53267f636880515ccefb4ca1cf7d731baf\n(cherry picked from commit 7630881d853b130e2c1f11cb2dafebe684bcfa91)\n"
    },
    {
      "commit": "f097cae65bfce7200938c5bd89e7e9b61cba78b3",
      "tree": "c69ed57deac44c243d914a3c8fa7b88bf3327ca6",
      "parents": [
        "db93079daf06a94e50622d0383b9ed8e767e2f92"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 12:17:21 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 17:20:19 2015 -0700"
      },
      "message": "TimestretchBufferProvider integration with Sonic Library\n\nUsing Sonic as backbone for time stretching algorithm.\nAdding libsonic to needed makefiles.\n\nbug: 19196501\nChange-Id: I1ea9221d2f56e4e79fba8746ce0ad350b5079e82\n"
    },
    {
      "commit": "857d5a20a956ef61b64ae07b018ecc2f1eb0a503",
      "tree": "6b0e743b3c7f027aff568ac842c629291d1d4207",
      "parents": [
        "f129b03fa583d4cc26fd9c9171b8fb3b0ed8d4f4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 26 18:46:00 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 23:31:22 2015 -0700"
      },
      "message": "Factor out buffer provider code from AudioMixer\n\nIn preparation for playback rate support and timestretching.\n\nBug: 19196501\nChange-Id: I435accb852d32110dd0b3a9917488522c567ba80\n"
    },
    {
      "commit": "062e67a26e0553dd142be622821f493df541f0c6",
      "tree": "125d28264adfc5b7bd993bb343569eea63bfb95d",
      "parents": [
        "21b51b61ee52e6aa74d98b138d3dd4f0e17b1441"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 11 13:40:50 2015 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Mar 24 13:24:18 2015 -0700"
      },
      "message": "AudioFlinger: call SPDIF wrapper from AudioFlinger\n\nCreate an interface layer between the AudioFlinger and the HAL\nthat manages the wrapping and format conversion.\n\nRemoved unnecessary includes.\nHandle rate conversion in getRenderPosition().\nTry to open HAL with encoded format before wrapping with SPDIF.\n\nBug: 17566660\nChange-Id: I00ad888ca15ff0f85b85efb8167c7f5ea761a244\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "04333cdc8d6a3c8e4a11835371e8ad13adf3f7f0",
      "tree": "ff205682f760786e3d195f297d60207af0e40792",
      "parents": [
        "658fc18d8e632441cd5d83a4f74b53620cbac1fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 17 16:23:03 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 19 09:47:39 2015 -0800"
      },
      "message": "Pull out FastCaptureDumpState and FastMixerDumpState\n\nChange-Id: I8e44dbfe02338622eb69193b234743b50f0dd79f\n"
    },
    {
      "commit": "045ee7ea3e42b8657869d81c917feed5fb0c2b4a",
      "tree": "aee4e457c5ae65d9135f5008fa239e295162fb2d",
      "parents": [
        "ea78b1497eef36b6a3ba783be20615989e87ed08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 17 16:22:04 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 17 17:19:17 2015 -0800"
      },
      "message": "Pull out FastThreadDumpState\n\nChange-Id: Ic99890bbba4f856b65535f3df0f928de9e3e9748\n"
    },
    {
      "commit": "27a78b56e1cf9814971192883cb7d15c186465f7",
      "tree": "78d22ab6884bade675def21c48c251c9a9a15bc0",
      "parents": [
        "69158e3e7b565a5ca131a2efaa9b76615ca80cbb",
        "78c02ddb6bf0d676160244a62c11dceb68301b73"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 19:30:17 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 07 19:30:17 2015 +0000"
      },
      "message": "am 78c02ddb: am cfa5bf04: Merge \"make libserviceutility a shared lib\" into lmp-mr1-dev\n\n* commit \u002778c02ddb6bf0d676160244a62c11dceb68301b73\u0027:\n  make libserviceutility a shared lib\n  audio policy: fix remote mic capture\n  audio policy: suppport for dynamic source\n  Fix overload of SoftVideoDecoderOMXComponent::updatePortDefinitions\n  Fix race condition in signaling completion for decode.\n  AnotherPacketSource: need reset some members before returning from queueDiscontinuity().\n  Fix looping sound playback\n  AnotherPacketSource.cpp: Do not queue discontinity signal buffer resulted from seek.\n"
    },
    {
      "commit": "5db7897ddd32e3ec3ab45ecdb6f21b6265e7e14a",
      "tree": "e586c65974e885af85d209c811acb3d3cd592736",
      "parents": [
        "71d13d4c94cea2113d074cf0d0c6e07ad68ff3ec"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 10:42:33 2015 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 10:50:09 2015 -0800"
      },
      "message": "make libserviceutility a shared lib\n\nso that we have only one getpid_cached in mediaserver process\n\nbug: 18919657\n\nChange-Id: Iff3cd932c9110e874b3885f79705f49bf3e3f1fc\n"
    },
    {
      "commit": "e40442092efa37619d11685451f7e8e8bde9e79a",
      "tree": "68fb4af015dd3d6e19621098a36648c183f023d2",
      "parents": [
        "7a20023576f48f06407a6ad1f016eec1943817ce",
        "42e5a1ebe0b224c07eb96211536a466255b12b81"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Nov 18 23:48:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 18 23:48:02 2014 +0000"
      },
      "message": "Merge \"Disable clang++ due to compiler error.\""
    },
    {
      "commit": "1f2f4f26073b6bf979be3a3bb66f84e3e9c4c168",
      "tree": "675e64666b0f40ddb091e9c234ce0ba069c735ee",
      "parents": [
        "9b77083e582a8b6088ac6a2cb4151dfbdd324557"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 17 11:34:59 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 17 11:34:59 2014 -0800"
      },
      "message": "libcutils no longer requires that its users configure ANDROID_SMP.\n\nChange-Id: Ib91ff0696ab2472c62168eb5261bbda5d22f623e\n"
    },
    {
      "commit": "42e5a1ebe0b224c07eb96211536a466255b12b81",
      "tree": "53f42e2a4cd065ab1d00da899efc494f8deab3f5",
      "parents": [
        "a82b5f575d0b7f9465cd879be04929fefd4cc5c5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Nov 14 09:57:36 2014 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Nov 14 10:45:57 2014 -0800"
      },
      "message": "Disable clang++ due to compiler error.\n\nClang++ chokes on AudioMixer.cpp.\nIt does not know \"how to split this operator.\"\n\nBUG: 18373866\nChange-Id: I3d588d44596c7c3b6f97e5f822545e015b074206\n"
    },
    {
      "commit": "5e58b0abe5b6c8f5bd96a8f78bbeeeb4d3892020",
      "tree": "975ed02efce4eaefcf5b0ceb5f33d212542a33a6",
      "parents": [
        "72d039f007722c92ee5ea7ffd03ece19d2781103"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 23 19:07:29 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 08 21:09:13 2014 -0700"
      },
      "message": "Add floating point volume handling to AudioMixer\n\nUse floating point volume in AudioMixer mixing when floating\npoint input is used with the new mixer engine.\nAudioResampler is updated to take floating point volume to match.\nBoth legacy integer and floating point mixer engines work.\n\nFor now, integer volume is used when the new mixer engine\nruns in integer input mode, for backward compatibility with\nthe legacy mixer.  The new mixer engine will generally run in\nfloating point input mode. When the legacy path is removed,\nthe integer volumes will be removed.\n\nChange-Id: I79e80c292ae7c8b8bdd0aa371a1b2c3a1b618290\n"
    },
    {
      "commit": "e28456465fca86ed1b8b2225de073cfba64c7c42",
      "tree": "120bfbd459e4baecb28b73d7b7e2edb5a70b5750",
      "parents": [
        "481c8837c7f67852e06137d636915ea6e96247e3",
        "f91df1b368a140abd37c80b204bd48d78778cc43"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 01 19:39:54 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jun 01 19:39:54 2014 +0000"
      },
      "message": "Merge \"Start adding FastCapture based on FastThread WIP\""
    },
    {
      "commit": "1c333e252cbca3337c1bedbc57a005f3b7d23fdb",
      "tree": "327f985a0db89dad8fc742baf5b198c3b78c429b",
      "parents": [
        "4b123406c10c17852734a1b691bb9ce2a4cb7caf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 20 10:48:17 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 27 10:53:51 2014 -0700"
      },
      "message": "audioflinger: first patch panel implementation.\n\nAdded a new PatchPanel subclass to AudioFlinger\nto handle audio ports and audio patches configuration\nand connection.\nThe first implementation does not add new functionnality.\nAudioPolicyManager uses patch panel interface to control\ndevice routing.\nAudioFlinger:\n- Added PatchPanel class. The first implementation does not\nadd new functionnality. PatchPanel handles routing commands\nfor audio HAL after 3.0 or converts to setParameters for audio\nHALs before 3.0.\n- Added config events to ThreadBase to control synchronized\naudio patch connection.\nAudioPolicyManager:\n- Use PatchPanel API to control device selection isntead of setParameters.\n- New base class AudioPort common to audio device descriptors\nand input output stream profiles. This class is RefBase and groups\nattributes common to audio ports.\n- Use same device selection flow for input as for outputs:\n getNewInputDevice -\u003e getDeviceForInptusiource -\u003e setInputDevice\n\nChange-Id: Idaa5a883b19a45816651c58cac697640dc717cd9\n"
    },
    {
      "commit": "f91df1b368a140abd37c80b204bd48d78778cc43",
      "tree": "238d896ad29af48d8ee069e853ee9fa1035955cc",
      "parents": [
        "29b703eec27b305e7b5b2343bf257643e38f6b68"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 13 14:59:31 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 22 16:19:08 2014 -0700"
      },
      "message": "Start adding FastCapture based on FastThread WIP\n\nThis version supports at most one fast capture client.\n\nChange-Id: Idf609bfc80ae22433433d66a5232c043c65506df\n"
    },
    {
      "commit": "2234002b0710c8db73f82d397cb945cd541c6bbb",
      "tree": "be662712131225845bb0afd7d32e7c37a7f295ad",
      "parents": [
        "67ee990d324229ab0565ce632bd5a04297e16a01"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 07 12:04:41 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 28 12:26:11 2014 -0700"
      },
      "message": "Start pulling bits of FastMixer up to FastThread\n\nChange-Id: I4c6f7b8f88fcf107bb29ee6432feecd4ab6554d2\n"
    },
    {
      "commit": "a18f644ce5eb4ab876b343e24ea613566c00058f",
      "tree": "0ae47695a79fd411a88c2ae9272bc76c01469071",
      "parents": [
        "5e184b0d12f1ec436246a391da8d9355cc21ee08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 18 17:17:04 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 31 12:22:54 2014 -0700"
      },
      "message": "Add FastThreadState\n\nChange-Id: I3f07493375ace6e5cfdcd02ad90c4b6fad543b0c\n"
    },
    {
      "commit": "46d1b4ab7e83c677532587c7c8bd46eb8b30fc67",
      "tree": "0238e0ff00c67b6dfbcf38b4b50c400bd67b0b39",
      "parents": [
        "d74110cdef2becd4f7fd2334c34c3ca73f56b355",
        "f40c4c561151ae93595e8fab5dcaaa1c69df74ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 19 13:21:51 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 19 13:23:17 2014 -0700"
      },
      "message": "resolved conflicts for merge of f40c4c56 to master\n\nChange-Id: Ifd5385ad42a81e02e6a6afc6281f09fbff361671\n"
    },
    {
      "commit": "ddf887c08b58382920effb7f0b2049e471960b4a",
      "tree": "a1f2797399f967b46ec2d823f6f520f5b8426684",
      "parents": [
        "b2ecad7f079f4f852d334e67fd7a72ff1696a78e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 19 09:05:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 19 10:53:13 2014 -0700"
      },
      "message": "Add libaudioresampler\n\nlibaudioresampler is available in both 32-bit and 64-bit,\nunlike libaudioflinger which is currently 32-bit only.\n\nBug: 8141282\nChange-Id: I839f7b4e6aaed6984012ca6d514323f927669df6\n"
    },
    {
      "commit": "314869117d5e3365fc3e43fee01209d18515ca42",
      "tree": "a1975d895276c929a5e5a20166124368f2e21eb9",
      "parents": [
        "37e05edf1cfe297f9c7d382787ecab53d5a2b5c8",
        "c7e5040aa8b8e4da86814bf560346c7571e48087"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "message": "Merge \"move audio policy service to a separate library\""
    },
    {
      "commit": "758799cef41fc5495f59eeb6249d02ce9154cde8",
      "tree": "5cbfa825fd668d81c6fe6a8ec485dd8ebb2fd151",
      "parents": [
        "beb57a5a08207af80180b93dd80d611a85997c43",
        "3c7801882bbb6d5f3cc641525a54cb8a6c4aca34"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "message": "resolved conflicts for merge of 3c780188 to master\n\nChange-Id: Ic579d346c27ff05ea6444faaa60fa6caaec86fbf\n"
    },
    {
      "commit": "af783aa91f7a279153fb8bab8d0d6b9f737996e9",
      "tree": "25c5b54bf884f220cce4ee21a9cbaf6583820f91",
      "parents": [
        "19afb3869eb6a3e3733dc1f7420e1d4c3c03d376"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Sun Mar 02 19:48:19 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 12 11:24:53 2014 -0700"
      },
      "message": "mediaserver and associated services are 32-bit only\n\nalso 32-bit only command-line apps\n\nChange-Id: I9ac557a8d02bbf6986a9b5c3cdce23d400b306a3\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"
    },
    {
      "commit": "86eae0e5931103e040ac2cdd023ef5db252e09f6",
      "tree": "2764bafecfc0157792f880daa4fb535e74286bfe",
      "parents": [
        "e6144d7a558c74e508a5c103cdc462c3cd7cf508"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 09 12:12:46 2013 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 27 14:34:36 2013 -0800"
      },
      "message": "Audio resampler update to add S16 filters\n\nThis does not affect the existing resamplers.\nNew resampler accessed through additional quality settings:\n\nDYN_LOW_QUALITY \u003d 5\nDYN_MED_QUALITY \u003d 6\nDYN_HIGH_QUALITY \u003d 7\n\nChange-Id: Iebbd31871e808a4a6dee3f3abfd7e9dcf77c48e1\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "f5293648b727fb3909cd2300a73377f032f8b050",
      "tree": "7bc4568fdd695d312d9ae6447ec69320bdcf2c62",
      "parents": [
        "9a1c785c019bdb25fefa7d1c0e50862ddc0e4e21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 14:49:17 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:00:51 2013 -0800"
      },
      "message": "Use libsndfile to write .wav files\n\nThis will reduce code duplication, and allow us take advantage of more\nadvanced capabilities of libsndfile in the future.\n\nChange-Id: I25fa2b6d0c21e325aeaf05bda62cf7aab0c5deb4\n"
    },
    {
      "commit": "153b9fe667e6e78e0218ff0159353097428c7657",
      "tree": "360a76911071e362a94af32ccf67ce9619629708",
      "parents": [
        "20f4754b7e687d3718a0a0a585f2c9ac22e2567d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 15 11:23:36 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 09:30:37 2013 -0700"
      },
      "message": "Make AudioFlinger::instantiate() more resilient when called from separate module\n\nBug: 8834855\nChange-Id: I4cd842cdfb09d2aaaaab9df9ac3bec6179709bd3\n"
    },
    {
      "commit": "e762be91c3280d837b1d48455cba90459ced7511",
      "tree": "38e44c614bea2a8f819a935527d4442a100741f8",
      "parents": [
        "dfb6ca555f3b77baa3f18c4dbbc20c644778e60f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 09 16:26:45 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 09 16:52:19 2013 -0700"
      },
      "message": "make libaudioflinger symbols visibility hidden\n\nwe export only symbols needed by clients of this library.\nthis saves about 130KB (1/3rd of the lib size)\n\nChange-Id: Id81f3ecb299ee3abc0811915cf6efe87180bf15c\n"
    },
    {
      "commit": "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6",
      "tree": "67aa5a912048834766759d1842f7e54a20f74481",
      "parents": [
        "ec77122351b4e78c1fe5b60a208f76baf8c67591"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "5c4cc0d99d3b1cb35c5d7c237272ee53142745fb",
      "tree": "96c55aba5ce8363f33a05641f0a4be8ed09128c9",
      "parents": [
        "d573622dc001c23223cb26b1f55fb75be189e77d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 26 10:40:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 05 08:26:50 2013 -0800"
      },
      "message": "Add template class SingleStateQueue\n\nChange-Id: If7e2bc9b2a216524ee9cbb68682e2634933b4973\n"
    },
    {
      "commit": "46909e7eb074ce1b95b8a411eb71154f53f84f77",
      "tree": "a0b31a2590a604b0e2c7a6a133bba067dadfad5e",
      "parents": [
        "ceb388d6c03c38b96dc41c0ea4804b749aa077c4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 09:20:22 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:36:38 2013 -0800"
      },
      "message": "Remove tee sink debugging at compile time\n\nBug: 8223560\nChange-Id: Iddbfb06c45d43d9f20bb428215dd4094931e19a7\n"
    },
    {
      "commit": "da6ef1320d0161b1640dc84d7a9c5a25860c3619",
      "tree": "86b24f64ed0bd55de10deb193290009687886192",
      "parents": [
        "99c2f923f6b04efffe949d1daf9cb7148e3cc201"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 10 12:31:01 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 22 16:50:36 2013 -0800"
      },
      "message": "Update tee sink\n\nImplement rotation to reduce long-term storage use.\nImplement optional per-track tee.\nDynamically enable at runtime based on property, instead of at compile-time.\nDynamic frame count not yet implemented.\n\nBug: 8223560\nChange-Id: I3706443c6ec0cb0c6656dc288715a02ad5fea63a\n"
    },
    {
      "commit": "b3a8364eeea621ef63b983e4c1b0771f62069fe0",
      "tree": "646bee189a8f77d41e87ffc42af3dd097f5ec254",
      "parents": [
        "ece53e018b38794f7cdf978a605f943f9ec96c3b"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:42:28 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:44:24 2012 -0800"
      },
      "message": "audioflinger: define ANDROID_SMP, remove conditional tracing\n\nWith ANDROID_SMP set, tracing functionality is completely inline, and\nwithout the performance hits of external library calls, tracing does\nnot need to be conditionally compiled.\n\nChange-Id: I4b29a9a52c403f0d2ea137c5b7bc05a518a7ca4b\n"
    },
    {
      "commit": "371eb9756c32109ea572b91216b19bb623f6d3fd",
      "tree": "dcdd0d3ed708466f6f32b41a79d91926294dcaba",
      "parents": [
        "45f7c446777171a728f9eb257f48145dde5d19e2"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "message": "Remove conditional compilation of ATRACE functions\n\nTracing functions are meant to be dynamically controlled via sysprops.\nConditional compilation removes this functionality.\n\nChange-Id: I26bc473d104d0b3c50a228dddfda3fa2428d157a\n"
    },
    {
      "commit": "81784c37c61b09289654b979567a42bf73cd2b12",
      "tree": "a0a3fa9225bea006c2e037a337b43bf4ba7c0743",
      "parents": [
        "4d9cef6c007afd195a8f36d35d46b359bf909331"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 14:55:58 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 19:35:38 2012 -0800"
      },
      "message": "AudioFlinger files reorganization\n\nAudioflinger.cpp and Audioflinger.h files must be split to\nimprove readability and maintainability.\n\nThis CL splits the files as follows:\n\nAudioFlinger.cpp split into:\n- AudioFlinger.cpp: implementation of IAudioflinger interface and global methods\n- AFThreads.cpp: implementation of ThreadBase, PlaybackThread, MixerThread,\nDuplicatingThread, DirectOutputThread and RecordThread.\n- AFTracks.cpp: implementation of TrackBase, Track, TimedTrack, OutputTrack,\nRecordTrack, TrackHandle and RecordHandle.\n- AFEffects.cpp: implementation of EffectModule, EffectChain and EffectHandle.\n\nAudioFlinger.h is modified by inline inclusion of header files containing\nthe declaration of complex inner classes:\n- AFThreads.h: ThreadBase, PlaybackThread, MixerThread, DuplicatingThread,\nDirectOutputThread and RecordThread\n- AFEffects.h: EffectModule, EffectChain and EffectHandle\n\nAFThreads.h includes the follownig headers inline:\n- AFTrackBase.h: TrackBase\n- AFPlaybackTracks: Track, TimedTrack, OutputTrack\n- AFRecordTracks: RecordTrack\n\nChange-Id: I512ebc3a51813ab7a4afccc9a538b18125165c4c\n"
    },
    {
      "commit": "d06785bebf7e43d4a011b62a252771373ada910c",
      "tree": "fc174c6734216926b8443f07dfaa3e7641de3441",
      "parents": [
        "719ae96a5308273100a68d112f131c61f9b3db81"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 30 12:29:28 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 10:32:46 2012 -0700"
      },
      "message": "Save copy of mic input, disabled by default\n\nChange-Id: I4f5e95a5ddf016530d1b2747a0a5ca0962caabda\n"
    },
    {
      "commit": "c41590251aa84c078c942d258e838aad814b73a5",
      "tree": "1db58d721d614ebd28f52b7a1dc632d943d6506d",
      "parents": [
        "db3a20ea484514f7f23d4ef3c30fe4780ab940d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "message": "Remove obsolete references to libmedia_native\n\nBug: 6654403\nChange-Id: I3993d62987cf0dd85db10bf002a5cce53d4f01bd\n"
    },
    {
      "commit": "0fc2cb59d5f77412f5922540d67fea81f4d1744b",
      "tree": "91a495d745f9d1a68ad74bce4b0bda7fb3461fbc",
      "parents": [
        "93d0767a8a9ee9d649eea9afac59f778e29a6a54"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 21 01:01:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:58:43 2012 -0700"
      },
      "message": "a test app for the resamplers\n\nChange-Id: I66852d90d384f1d9e77b51ad1a1ebdbaf61d0607\n"
    },
    {
      "commit": "93d0767a8a9ee9d649eea9afac59f778e29a6a54",
      "tree": "a43bf4ca3b6ceab1cb78684027fb66c94b9cfeb4",
      "parents": [
        "443e69625d598ea578e2c838960778ce498fd773"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:11:01 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:58:43 2012 -0700"
      },
      "message": "reenable the cubic resampler\n\ncubic resampler was disabled because it hadn\u0027t been qualified,\nhowever after I did some tests, it does improve significantly\nthe sound quality over the order-1 resampler, even if it is\nstill quite bad.\n\nalso HIGH_QUALITY resampler was partially disabled, it\u0027s now\nfully enabled. It\u0027s a big improvement over the cubic resampler\nin terms of aliasing noise (it\u0027s not as good in the pass-band).\n\nChange-Id: I70e3658c255896588642697be9eb594ff4ec0f8b\n"
    },
    {
      "commit": "c8823995d16b909fae30ff4f94217e875d3e8c8a",
      "tree": "42d54fd8961661be8d2d1b85f0d98ac48f6c9bc0",
      "parents": [
        "4d410ede659448557398c84552eb0bf50ef09cbc"
      ],
      "author": {
        "name": "ty.lee",
        "email": "ty.lee@lge.com",
        "time": "Mon Oct 01 13:54:14 2012 +0900"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun Oct 07 12:05:27 2012 -0700"
      },
      "message": "audioflinger/resampler: add build source for libaudio-resampler\n\nBug: 7229644\nChange-Id: I93bde36be1c3ec84174a4c98423e28f8b3d8782f\nSigned-off-by: ty.lee \u003cty.lee@lge.com\u003e\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "ac6020508acedd316391dee42329040bf45f8d90",
      "tree": "034a8ac9c453dfce993c8d2568121a9b6d042bd0",
      "parents": [
        "d69fd4d2567f9fce02252ce10d7ae3a28fc79e04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 14:04:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 09:44:04 2012 -0700"
      },
      "message": "Integrate improved coefficient sinc resampler: VHQ\n\nSummary:\nVery high quality is enabled only for 44.1 -\u003e 48 or 48 -\u003e 44.1,\n  and uses low quality for all other use cases.\nTrack estimated CPU load and throttles the quality based on load;\n  as currently configured it should allow up to 2 instances of very high quality.\nMedium quality and high quality are currently disabled unless explicitly requested.\n\nDetails:\nOnly load .so the first time it is needed.\nCleanup code style: formatting, indentation, whitespace.\nRestore medium quality resampler, but it is not used (see next line).\nFix memory leak for sinc resampler.\nCheck sample rate in resampler constructor.\nAdd logs for debugging.\nRename DEFAULT to DEFAULT_QUALITY for consistency with other quality levels.\nRenumber VERY_HIGH_QUALITY from 255 to 4.\nUse enum src_quality consistently.\nImprove parsing of property af.resampler.quality.\nFix reentrancy bug - allow an instance of high quality and an instance\n  of very high quality to both be active concurrently.\n\nBug: 7229644\nChange-Id: I0ce6b913b05038889f50462a38830b61a602a9f7\n"
    },
    {
      "commit": "087dd8e7232e4c009e9121ab7e8c37985522c9ad",
      "tree": "bc282d9d295339220829c2cdade7a3eca5fb898e",
      "parents": [
        "4769f0b873030bbaa6977fe18696961d1d1b26ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 27 13:49:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 30 13:13:11 2012 -0700"
      },
      "message": "Disable audio watchdog\n\nIt\u0027s not critical, and is wasting power\n\nBug: 7241714\nChange-Id: I6ad4375f0000c92529688723dbe0ff0caa809c5d\n"
    },
    {
      "commit": "76b111685010e1fea7c0a865c038aee35507fde4",
      "tree": "25a9d24b4cc23476d25cc026ff0888a3ffcf73e8",
      "parents": [
        "12bff5dd87e6b863482e6bfd9f4561078ebcf3f0"
      ],
      "author": {
        "name": "SathishKumar Mani",
        "email": "smani@codeaurora.org",
        "time": "Tue Jan 17 10:49:47 2012 -0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Sep 26 18:48:44 2012 -0700"
      },
      "message": "audioflinger: use resample coefficients from audio-resampler library.\n\n-Add a separate quality VERY_HIGH_QUALITY in resampler\n-Use resample coefficients audio-resampler library for\n quality VERY_HIGH_QUALITY.\n-This improves the quality of resampled output.\n\nBug: 7024293\nChange-Id: Ia44142413bed5f5963d7eab7846eec877a2415e4\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "2dd4bdd715f586d4d30cf90cc6fc2bbfbce60fe0",
      "tree": "d0f594b402b6d2a4de89386c30c3db4adab89894",
      "parents": [
        "0a24726a64ba1c50aa6ee1610de2d80602d49fe6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "c1dae24a08b67b98e18e4239d4f3a74d600d353c",
      "tree": "d0923bff8eb16c7b060a37379dc2fc9a298e8554",
      "parents": [
        "2c75ef40330522fb50bbd7a0aa105573355b323c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 13:13:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 16:25:07 2012 -0700"
      },
      "message": "Remove debug code HAVE_REQUEST_PRIORITY and SOAKER\n\nChange-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a\n"
    },
    {
      "commit": "0a14c4ce1a41bc09eb7855fa531a3af629a69139",
      "tree": "dfde5cdadeea7bbbdb8e50477ca35ac4768693f0",
      "parents": [
        "362ebcbf100f7fccd37551c77e67c4faa7241b63"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 14:58:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 17:49:31 2012 -0700"
      },
      "message": "Make CPU frequency statistics optional\n\nCertain CPUs with dynamic cluster swapping and hotplug\ndon\u0027t report CPU frequency accurately.  The file descriptors\nused to read the frequency become stale and report bogus data.\nSo make this feature a build time option for debugging only.\nThis will also improve performance of the fast mixer loop.\n\nChange-Id: I602f81ec3281a37992769208be08084ed1469e8c\n"
    },
    {
      "commit": "c15d6657a17d7cef91f800f40d11760e2e7340af",
      "tree": "c4346cb0fcde7483e42900aecce64df96250889b",
      "parents": [
        "b7acdfb8068bf408ed859dfdd441b4a8722eb12a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 30 14:52:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 11 11:39:54 2012 -0700"
      },
      "message": "Add audio watchdog thread\n\nChange-Id: I4ed62087bd6554179abb8258d2da606050e762c0\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "399930859a75d806ce0ef124ac22025ae4ef0549",
      "tree": "2471b70dedc0bb33f7310de8ae0e5622344c6f82",
      "parents": [
        "1295bb4dcff7b29c75cd23746816df12a871d72c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 13:40:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 08:27:25 2012 -0700"
      },
      "message": "State queue dump\n\nBug: 6591648\nChange-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d\n"
    },
    {
      "commit": "fbae5dae5187aca9d974cbe15ec818e9c6f56705",
      "tree": "101ef33da2a18e0cb1c70a0e1ae085450dc60396",
      "parents": [
        "cd8a36fdc49a823f78d45e8e1a464dc261553b26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 09:17:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 12:36:06 2012 -0700"
      },
      "message": "Keep a copy of most recent audio played\n\nChange-Id: I6b2f97881c39998a2fae9ab79d669af6c0a37e94\n"
    },
    {
      "commit": "99c99d00beb43b939dedc9ffb07adb89f6a85ba5",
      "tree": "a93aeb409fa2399bf552ea901793514f0cf79f6b",
      "parents": [
        "552477608b137fb66af126655c6865207a82d888"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 16:37:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 17 16:29:07 2012 -0700"
      },
      "message": "systrace for audio\n\nTrace fast track buffer fill status for underruns etc.\n\nMove the definition of macro to Android.mk.\n\nNo overhead if disabled.\n\nChange-Id: If0e83e21b61b059ca38f543f8a6ffb58e08c79ee\n"
    },
    {
      "commit": "1dc28b794587be22c90a97070d928f94586db638",
      "tree": "81fc99726926ceb84a331350434beb2666695cf1",
      "parents": [
        "9e786c78898d738b1cb21cd8bdfcc49dbcacfce6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:01:03 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:52:04 2012 -0700"
      },
      "message": "Use scheduling policy service\n\nChange-Id: I3c09da1dc0de5039d0c15ce7fb2bc373fa398712\n"
    },
    {
      "commit": "58912562617941964939a4182cda71eaeb153d4b",
      "tree": "f0d9551f41e729540b5c0bc23bd5f0b4682d346e",
      "parents": [
        "a08f041125c7688aa33aef1b229278641ae1c375"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 03 10:45:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 09:24:28 2012 -0700"
      },
      "message": "AudioFlinger normal mixer uses FastMixer\n\nChange-Id: I3131bb22d2d057e9197a2ebfa6aa1cfaab9e5321\n"
    },
    {
      "commit": "3acbd053c842e76e1a40fc8a0bf62de87eebf00f",
      "tree": "1d6dcc01039a1af770131c6b427efa27a2e5755f",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 10:39:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:50:01 2012 -0700"
      },
      "message": "Configure policy of mediaserver threads\n\nChange-Id: Ifd825590ba36996064a458f64453a94b84722cb0\n"
    },
    {
      "commit": "21e8c50bd13ebe44f3088e26c9c6df0e163c469c",
      "tree": "0437226abb896de30fd20123eb3089168989391a",
      "parents": [
        "8d6086781c79620ce6133df7bd27f0efdee6b4e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:42 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 20 07:38:05 2012 -0700"
      },
      "message": "FastMixer update\n\nUpdates:\n - Add support for mono fast tracks\n - Add support for optional sample rate conversion on fast tracks\n - Log sample rate and frame count\n - Enable statistics\n\nChange-Id: Ife014edf4f452da361f3eaaae19209ef6ff6958b\n"
    },
    {
      "commit": "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0",
      "tree": "a7042a97ac8019ba62a7c35ef9e11711caab7021",
      "parents": [
        "0845682ff93c9765b74b53dc404d0954efc28c2e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:54:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:49:43 2012 -0700"
      },
      "message": "Fast mixer\n\nChange-Id: I61552f83507e08e4c706076b9fb15362869e6265\n"
    },
    {
      "commit": "dc998c809e084b617990b281e2ed5271830cc2e0",
      "tree": "7d05323b201206ccb6cecf72d82faf82055afd70",
      "parents": [
        "eee482b84bb456e87fa42e8ad02fd2d803839586"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:53:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:34:34 2012 -0700"
      },
      "message": "Add template class StateQueue\n\nChange-Id: Iccc5eb42bc295a22b2e429a4551f083cd7b6831a\n"
    },
    {
      "commit": "010662326b9c43c703725f933e95e0897f8a6bdd",
      "tree": "29a39db792c50d29f266d9df86af2d1de2d4c752",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 11:50:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 07:44:17 2012 -0700"
      },
      "message": "Non-blocking audio I/O interface, WIP\n\nYet another abstraction similar to AudioTrack::Buffer and AudioBufferProvider,\nbut with support for streaming, non-blocking, and eventually PTS.\n\nThis is intended to be used as follows:\n - primary HAL output stream implements a Sink\n - primary HAL input stream implements a Source\n - Pipe implements a Sink\n - PipeReader implements a Source or TimedSource (not shown yet),\n   which supports \"read at PTS\"\n - fast AudioTrack on server side will implement a Source using cblk\n - normal AudioTrack on server side will not be changed initially\n - fast AudioRecord on server side will implement a Sink using cblk\n - normal AudioRecord on server side will not be changed initially\n - fast mixer thread will read from Sources and write to a Sink,\n   or (unlikely) implement a Source and multiple Sinks\n - Visualization and PCM logger will read from Source or TimedSource\n - A2DP normal mixer will be connected directly to its output stream\n   and there will be a kind of OutputTrack for duplication that will\n   read from a Sink with non-blocking write fed by the fast mixer.\n\nPatch set 3 changes:\n - Add more implementations of NBAIO interfaces:\n   added SourceAudioBufferProvider, MonoPipe, MonoPipeReader.\n - Added Format_sampleRate and Format_channelCount.\n - Extract out the roundUp() method.\n - Respond to most comments from previous code review.\n - The new classes are untested.\n\nPatch set 4 changes:\n - Fix bugs in MonoPipe::write() and MonoPipeReader::read()\n - Fix bug initializing mFrameBitShift too early\n - renamed roundUp() to roundup()\n - Fix Android.mk\n - Add LOG_TAG an LOG_NDEBUG, use ALOG_ASSERT and utils/Log.h instead of assert\n - Fix build warnings\n - Move constructor and destructor bodies from .h to .cpp\n - Line length 100\n - Following naming conventions for #include double-include protector macros\n - Include what you use\n - More NBAIO logging\n - MonoPipe write can be blocking\n\nPatch set 5 changes:\n - Address code review comments\n - Use a static library so unused implementations don\u0027t take memory\n - Comment out libsndfile dependency\n - Remove debugging LOGV and LOG_NDEBUG\n\nPatch set 6 changes (would be 6 at old location, actually 2 at new location):\n - Address code review comments on patchset 5\n - For MonoPipe, allow the full pipe to be used, no need to omit one slot\n - Don\u0027t do atomic releasing stores unless needed\n\nStill to do:\n - I\u0027m not happy with the Pipe class names\n - Update build/ for new static library?\n\nChange-Id: Ie6c61f05ce06b676b033be448a8ef9025a2ffcfd\n"
    },
    {
      "commit": "d12c68ad699ce0ed822a4d4db86e8e02324c6b03",
      "tree": "ffe2a3e44b05ad91acff86224ace0a4e8532e670",
      "parents": [
        "4f5da11df06802856bf526f16563df7d5755f653"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "message": "Revert \"AudioFlinger does not need libmedia any more\"\n\nThis reverts commit c920dee060ac69684be33210ee44b99a5fc3e8b2"
    },
    {
      "commit": "4f5da11df06802856bf526f16563df7d5755f653",
      "tree": "29cc2e5196553eb5878163342787298351f71a5d",
      "parents": [
        "ab55517549170b0def3d7b625324b6a44b60d5ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:21:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:24:22 2012 -0700"
      },
      "message": "AudioFlinger does not need libmedia any more\n\nChange-Id: Ifd2c61882109ec36ca68072a2bf6506e08c8cf34\n"
    },
    {
      "commit": "2ee367e444e7b62e02bde8a2e47603a9ad342c6e",
      "tree": "95649f9b430efcb58ffd0dad50ea44f4ab038eb3",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: I3ac357c78fb89f108d15c6e5b9fa317de0e9fb9a\n"
    },
    {
      "commit": "33b383948e8f270bff30378476f00dce289004eb",
      "tree": "a42eeb76674395b36611da694166ddd4144a0fa8",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 15:59:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:44:34 2012 -0700"
      },
      "message": "Remove dependency on audio_* location\n\nChange-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8\n"
    },
    {
      "commit": "01c4ebf6b794493898114a502ed36de13137f7e5",
      "tree": "7f663fdad4040a40411e79d837c14e52e11a65b9",
      "parents": [
        "d6fd85a157ce2054b2304e6d171fa87ae09c363d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 22 10:47:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 24 13:42:13 2012 -0800"
      },
      "message": "AudioBufferProvider comments and cleanup\n\nAdd comments about which methods implement the AudioBufferProvider interface.\n\nSimplified the definition of kInvalidPts.  \u003cstdint.h\u003e is very hard to work\nwith, there seems to be no way to use it reliably to get INT64_MAX without\nhaving a separate source file, which is ugly because it means kInvalidPts\nis not a compile-time constant.  So I just deleted AudioBufferProvider.cpp\nand used a hard-coded constant instead.\n\nAdded a default constructor for Buffer so that the fields aren\u0027t random\n(especially .raw which is used to determine if the buffer is valid).\n\nMake the pts for getNextBuffer default to kInvalidPTS so code that\ndoesn\u0027t need a pts doesn\u0027t have to specify a value.\n\nRename the parameter to AudioMixer::setBufferProvider to make it clearer.\n\nChange-Id: I87e7290884d4ed975b019f62d1ab6ae2bc5065a5\n"
    },
    {
      "commit": "4ff14bae91075eb274eb1c2975982358946e7e63",
      "tree": "e9e54fddb9832d30b69c2a11c9ed2884397f2f95",
      "parents": [
        "951bd8d1ad9581a414e171ad8605a9515d0ad667"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 08 16:37:41 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:11 2012 -0800"
      },
      "message": "Upintegrate Audio Flinger changes from ICS_AAH\n\nBring in changes to audio flinger made to support timed audio tracks\nand HW master volume control.\n\nChange-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44deb053252a3bd2f57a007ab9560f4924f62394",
      "tree": "57fac6fb14c9f7897409b54b360afebef59c2e70",
      "parents": [
        "860936d780d98a5968f40e66ca6ae800c67adbc3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Feb 05 18:09:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 13 10:30:23 2012 -0800"
      },
      "message": "Factor out and speed up permission-checking code\n\nUse the caching permission check for dump to save IPC.\n\nCache getpid() to save kernel call for other permission checks.\n\nThe C runtime library getpid() can\u0027t cache due to a fork\nrace condition, but we know that mediaserver doesn\u0027t fork.\n\nDon\u0027t construct String16 on the stack.\n\nChange-Id: I6be6161dae5155d39ba6ed6228e7683e67be34ed\n"
    },
    {
      "commit": "cdf2158f3b9498d6cd0eb228d8bee16e32399e16",
      "tree": "21af355df3a1f1d8d559b419fe8daf37c46dadbc",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:01:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 18:14:44 2012 -0800"
      },
      "message": "Disable HQ resamplers for now until qualified\n\nThis saves about 6500 bytes.\n\nChange-Id: I87102fe561c95c19c9e615dea3de914f96639257\n"
    },
    {
      "commit": "3b21c50ef95fe4e7ac3426ca14b365749e66ff08",
      "tree": "e3f9a8d6ab695bd1d4d494fbf1b9d80bcc25585c",
      "parents": [
        "eebeceec684a36222b4559e3157b0db04c0a67ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:52:39 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 11:42:03 2011 -0800"
      },
      "message": "Extract out audio DSP code to utility library\n\nChange-Id: Ib8ce72028a7ea30e82baa518e381370e820ebbd0\n"
    },
    {
      "commit": "feb0db689c17dced50afaee54c659f1676e2d505",
      "tree": "a949f6cb66c3c5886cd0682fcb3781b0fd5db0a8",
      "parents": [
        "288b66b60c9b3af3d84408885d0a4030c45eea9a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 22 09:04:31 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 18:41:12 2011 -0700"
      },
      "message": "Fix issue 4604090: notification sound interrupted.\n\nThe problem is that the audio HAL fails to acquire the wake lock when playing the notification.\nThis is because of a change that removed the mediaserver process form the system group for honeycomb.\n\nThe fix consists in requesting the wake lock from PowerManagerService when AudioFlinger mixer\nwakes up.\n\nA consequence of this change is that audio HALs or pcm drivers do not have to hold wake locks\nanymore as in the past.\n\nChange-Id: I4fb3cc84816c9c408ab7fec75886baf801e1ecb5\n"
    },
    {
      "commit": "e0b5bb23f0a26d248275d203885b820659da7320",
      "tree": "4d7cf07bb5fdd85a882f31f9e4eaae173efdbdde",
      "parents": [
        "4378ace44b9de477608a6c2fbf7134bc0345555f",
        "4d8d0c30abfa4b8d75866d42094cc797e05068fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 15 16:27:13 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 15 16:27:13 2011 -0700"
      },
      "message": "Merge \"Log CPU usage\""
    },
    {
      "commit": "4d8d0c30abfa4b8d75866d42094cc797e05068fa",
      "tree": "49d5a2a3b2aa864d2780101c03b6129a0cbbbb4c",
      "parents": [
        "5895e970ae119210773a5184c019178e2516b132"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 15:26:12 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 15 13:28:19 2011 -0700"
      },
      "message": "Log CPU usage\n\nChange-Id: Ie447e59be139153e526b7ad467c46c659d26816f\n"
    },
    {
      "commit": "5e0067b486c3862316aa1f293cf9690c0cf54bda",
      "tree": "104ac8491b40d6e9d8353322792fb83ce76f4c82",
      "parents": [
        "52f556b976a9caceee183d8af2118ddbee02c70a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    }
  ],
  "next": "6d8b694d999e9be7d5dcc336535832a80fb6f61f"
}
