)]}'
{
  "log": [
    {
      "commit": "fefe316501e06c96ce0d905c793b4d872d60e976",
      "tree": "cd6bb858c1de4d0bba5d7a321a5db065247fc3fc",
      "parents": [
        "bc2a77308b7c197a30a3289e5b75d0f089e65982"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Sep 07 10:09:11 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Mon Sep 10 19:05:08 2018 -0700"
      },
      "message": "NBLog: log and store warmup times, underruns, overruns, and thread info\n\nTest: dumpsys media.log\nBug: 68148948\n\nChange-Id: Ib6ea96760f7886cba47c8e2f0334114237a2434b\n"
    },
    {
      "commit": "cf3d82c34b8a737408113dddad341b8c98251a8e",
      "tree": "358cb91f4b3b812054daab215b754b9920cf4a50",
      "parents": [
        "e98dd6f5496aaba009ed27be8e83af1cd10869c5"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Sep 04 15:44:45 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Sep 04 18:02:00 2018 -0700"
      },
      "message": "NBLog: refactor Writer API for extensibility\n\nNo new functionality was added, and no existing functionality was\nremoved.\n\nEvent types have been renamed and reorganized according to\nfunctionality. A compile-time mapping from Event to C++ data type allows\nfor a generic Event log() template function to avoid the need to add a\nnew logging function when a new Event is added to enum NBLog::Event.\n\nMost LockedWriter functions were deleted because they did not involve\naccessing shared variables. Only the functions that accessed shared\nvariables were kept in LockedWriter.\n\nTest: dumpsys media.log -r\nBug: 68148948\nChange-Id: I8a27f1690795cdb0b84e92033b7cbf4588ba175e\n"
    },
    {
      "commit": "e98dd6f5496aaba009ed27be8e83af1cd10869c5",
      "tree": "2d3c6b7f683b781d961d22d541d7193ec08f0642",
      "parents": [
        "6af1847b8ea55d9f21e75b0f0ed91dc0e8f68c32"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Aug 22 18:23:50 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Aug 29 15:10:40 2018 -0700"
      },
      "message": "NBLog: add latency logging and histogram serialization\n\nReportPerformance::writeToFile and the recording of PerformanceAnalysis\nFastMixer timestamps are disabled for now.\n\nTest: dumpsys media.log -r\nBug: 68148948\nChange-Id: I4ba55fc20521ad2278348e6a3f713f9db04d951b\n"
    },
    {
      "commit": "6af1847b8ea55d9f21e75b0f0ed91dc0e8f68c32",
      "tree": "e88798e13894f9bb17f3ff310b160ebf0baa1b5d",
      "parents": [
        "5786e01d64860448d93b681a59c7d5a60bc12298"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Mon Aug 20 09:27:50 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Aug 21 09:35:41 2018 -0700"
      },
      "message": "NBLog: Make separate readers for dumping logs and histograms\n\nPrior to this commit, the dumping of log contents and histograms from\nPerformanceAnalysis were in conflict because histograms obtained data\nfrom the merger\u0027s buffer, and the merger used the same readers as the\nlog dumps. One read would consume the whole buffer, which would cause\neither a lossy dump or an lossy merge. Now, both operations can exist\nwithout loss of information from sharing the same reader.\n\nThe step of merging contents of each writer\u0027s local buffer into a bigger\nbuffer has effectively been removed. PerformanceAnalysis now directly\nreads from each writer\u0027s buffer instead of reading from the merger\u0027s\nbigger buffer.\n\nTest: dumpsys media.log -r\nBug: 68148948\nChange-Id: I6d8ea6a8f6a43555183a6d8f17af567506a102f1\n"
    },
    {
      "commit": "5786e01d64860448d93b681a59c7d5a60bc12298",
      "tree": "5ac379a0d0ce652fd71b9f2fae34fb0b913ded6a",
      "parents": [
        "86be8728fb6efae5a35ed4840c45a2eafce06823"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Aug 15 09:03:47 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 17 14:57:40 2018 -0700"
      },
      "message": "NBLog: Restore log dump and add new logging types\n\nMerging is temporarily disabled for now because the readers managed by\nthe merger are the same as the ones used for the dumpsys log dump, and\nreading from the log effectively consumes the buffer. Eventually, the\nreaders for the two functionalities will need to be separated to avoid\nconflict. The dump of the merged buffer is also disabled, which removes\nthe dumping of histograms.\n\nThe new types added are monotonic thread cycle time, CPU thread cycle\ntime, CPU frequency, and latency (which will need to be specified in\nfurther detail later). Logging support is added only for monotonic\nthread cycle time at the moment.\n\nTest: build, log monotonic thread cycle time in FastThread, check output\nin dumpsys media.log -r.\n\nChange-Id: I1b781d6db102fb917fd0bac964eeebd0309234c0\nBug: 68148948\n"
    },
    {
      "commit": "86be8728fb6efae5a35ed4840c45a2eafce06823",
      "tree": "8fa8b0be2b50a841dfc37275ba0b826a86d10e16",
      "parents": [
        "f3a9f7d469ab31fcb1e1b71ec0d66bf988c3f9b5"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 10 10:25:47 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 10 16:35:17 2018 -0700"
      },
      "message": "NBLog: Add checks for possible nullptr dereference\n\nMade minor style and formatting fixes.\n\nTest: build, dumpsys media.log\nBug: 111882126\nChange-Id: I73fca6ebdd994d9b68cf1e1ccb8ea08b3fe14d4d\n"
    },
    {
      "commit": "39ec8d62f75ffcf216714856aeab073c878b0abe",
      "tree": "1c4640f0e895eafe14bfb6e456f6138293384c1d",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 24 09:49:29 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 24 09:49:29 2018 -0700"
      },
      "message": "audioflinger Threads.cpp: size() \u003d\u003d 0 -\u003e isEmpty().\n\nClean up PerformanceAnalysis.cpp reportPerformance code.\n\nTest: build, dumpsys media.audio_flinger\nChange-Id: I1e89b16872384e589b2060272daa3116184ec4d8\n"
    },
    {
      "commit": "8180b74a8e2c02eee7938b32fd0ecfeda53c91be",
      "tree": "c68999dae509a84885ad9a5dbcc7fe459099abdc",
      "parents": [
        "87a837c62a1bd1be9143aee3660bb171424a08a5"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 10 15:23:29 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 10 17:31:51 2018 -0700"
      },
      "message": "Rearrange variables in PerformanceAnalysis::reportPerformance in\npreparation for moving to separate file later.\n\nTest: build\nChange-Id: I0a13f4a2637d1e783515dbeb98fbd59efec24d44\n"
    },
    {
      "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": "9ef855d02352613880d593a94dc6a1d74b363177",
      "tree": "bd6910a46183097e946981ceab7a02661be16c25",
      "parents": [
        "61aaab8039993c35da4c3d7f3c2825cce0a71481"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Jan 08 15:19:09 2018 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Jan 12 11:07:24 2018 -0800"
      },
      "message": "Fix overflow sanitizer in copyWithAuthor.\n\nThe array index calculation in NBLog.cpp causes a runtime error on\ninteger overflow sanitized builds. Although kPreviousLengthOffset is now\nssize_t, sizeof() returns size_t, which is causing kPreviousLengthOffset\nto be implicitly cast to size_t, resulting in the overflow.\n\n runtime error: unsigned integer overflow: 27 + 4294967295 cannot be\n represented in type \u0027unsigned int\u0027\n\nThis restructures the buffer index to avoid the overflow all together.\n\nBug: 30969751\nTest: Compiles, device boots.\nChange-Id: I9abb858190ecdeeaede66cf502ceb586467d5c0c\n"
    },
    {
      "commit": "248f34f11b8942ea711957243c168b913ea90ee6",
      "tree": "186fe0ed8391c209e527a372a413716842e85468",
      "parents": [
        "7b0e95327267f08e36b38fdd8fb2624e251b8e97"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Dec 15 14:53:31 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Dec 15 19:07:40 2017 -0800"
      },
      "message": "Fix overflow sanitizer in copyWithAuthor.\n\nAn array index calculation in NBLog.cpp causes a runtime error on\ninteger overflow sanitized builds.\n\n buffer[sizeof(buffer) + Entry::kPreviousLengthOffset] \u003d ...\n\n runtime error: unsigned integer overflow: 27 + 4294967295 cannot be\n represented in type \u0027unsigned int\u0027\n\nThis changes kPreviousLengthOffset to signed, which provides the same\neffect without the overflow.\n\nBug: 30969751\nTest: Compiles, device boots.\nChange-Id: I25b232bba6a1940674d15a06483b2595eecc29e8\n"
    },
    {
      "commit": "bb4b8b5826a335fc7b426f98360f570169160a6d",
      "tree": "1a6869f7602d81bf2102c2dc348ed74c90c50944",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Nov 30 15:43:19 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Dec 04 15:12:07 2017 -0800"
      },
      "message": "Ignore signed integer overflow in logRound.\n\nThere is a potential signed integer overflow in logRound on the return\nstatement arithmetic which throws an error on integer sanitized builds.\n\n runtime error: signed integer overflow: 94 * 1000000000 cannot be\n represented in type \u0027int\u0027\n\nFrom the comments this looks like this is expected to overflow. For now,\ndisable sanitization in this function.\n\nBug: 30969751\nTest: Build compiles with and without integer sanitization.\nChange-Id: Idfb7eb46ec30f34de75ac3c912760e8fe9525299\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"
    }
  ]
}
