)]}'
{
  "log": [
    {
      "commit": "a629bd13e9f224b8472365135757f0676636f8e2",
      "tree": "4bdce444fd726634f20803fd279ab254a478c262",
      "parents": [
        "752adf7f1a340cbb6599fcff1842cf3659c75612"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 16:03:53 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 12 10:43:37 2020 -0700"
      },
      "message": "MediaMetrics: Prepare audio device usage protos for statsd\n\nMediaMetricsAudioRecordDeviceUsageReported\nMediaMetricsAudioThreadDeviceUsageReported\nMediaMetricsAudioTrackDeviceUsageReported\nMediaMetricsAudioDeviceConnectionReported\n\nAdd track traits to identify static AudioTracks.\nFix AudioTrack/AudioRecord flag communication.\nMove debug logging to verbose (delivered protos show in dumpsys).\nUnknown strings which fail validation become empty.\nTest statsd type validation.\n\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics (after BT connection)\nTest: statsd_testdrive (294-297)\nBug: 149850236\nChange-Id: I53c5d18a346af54941007b9938a8ab10e34b7038\n"
    },
    {
      "commit": "64e16a7c0a0341ec3e759d9522c037606e49ce70",
      "tree": "4de10760a43ffb42233f3da48259a3dd403ccd31",
      "parents": [
        "72c3e0bbf62dbfd5e9ecabac3910f788e0b6b187"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jun 01 13:25:51 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 02 14:48:16 2020 -0700"
      },
      "message": "audioflinger: fix FIXME in logBufferSizeUnderruns\n\nSome debug code was accidentally merged.\nThe hang was caused by a recursive lock of mLock.\nThe code now calls lockfree methods.\nAdded events for RELEASE and SETBUFFERSIZE.\n\nBug: 157916126\nTest: adb logcat | grep logBufferSize\nTest: launch OboeTester\nTest: disable MMAP checkbox\nTest: Tap OPEN and START\nTest: move bufferSize fader\nTest: expect to see no spam from logBufferSizeInFrames()\nTest: adb shell dumpsys media.metrics\nTest: expect to see entries like \"(bufferSizeFrames\u003d118, underrun\u003d1)\"\nChange-Id: I7d782ccea2c2470bc18a3a61cfb8767430a441d8\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\n"
    },
    {
      "commit": "5298998e5749ce5883cda027b0791d071c4c8b0b",
      "tree": "2d5cd73553f7795e4dae085e1bddad5bc48686d3",
      "parents": [
        "ad531ce5d938385330ec260d4049914b354d1c37"
      ],
      "author": {
        "name": "Joey Poomarin",
        "email": "poomarin@google.com",
        "time": "Thu Mar 05 17:40:49 2020 +0800"
      },
      "committer": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Thu May 07 12:25:59 2020 +0800"
      },
      "message": "MediaMetrics: Implement audio power usage metrics\n\n- Trigger audio power usage logging when\n   1. endAudioIntervalGroup event for track/record\n   2. setMode to NORMAL for telephony\n- Aggregate audio usage by type and device\n- Send audiousage data every 24hrs by default, using property\n  persist.media.audio_power_metrics.interval_hr to config the interval\n- Add property persist.media.audio_power_metrics.disable to disable\n  audio power metrics\n\nBug: 121318157\nBug: 140909217\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics --all\nChange-Id: I94ff00a5609a49c96a14827d3260d481c1310abe\nSigned-off-by: Robert Lee \u003clerobert@google.com\u003e\n"
    },
    {
      "commit": "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a",
      "tree": "dedee4f6e9c95af20ef76e79bddbc79ed850781a",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 09:04:01 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:18:26 2020 -0700"
      },
      "message": "TrackMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire AudioTrack or AudioRecord duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ia3a5707c43c4530f5a6ac90f52901bd2e0bd0bab\n"
    },
    {
      "commit": "d203eb6b3cd99af3c9616df2bd0d982796b0f918",
      "tree": "0f2cfa6c24a30d32913de484c6dd52514b37a9a3",
      "parents": [
        "2578a95a57dd9796b55095dc22b8171dd5da73c3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 09:12:46 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 23:42:41 2020 -0700"
      },
      "message": "MediaMetrics: Use AllowUid property for services to control client access\n\nRemove implicit first client uid access.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: I4f953db4688bf5f174c3e1611f492f31d2926e96\n"
    },
    {
      "commit": "a6b270399fdacb09826e751657b7bb321652e3ac",
      "tree": "10091ff0524d2d29dcda00e63630d0f51b300655",
      "parents": [
        "669acb12c3092e581a1ecc347e6d573e96c8ca0e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 10:34:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 11:41:38 2020 -0700"
      },
      "message": "MediaMetrics: Track AudioTrack and AudioRecord callers\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nBug: 153658358\nChange-Id: If2b0a792cf4cc6c5b125513861b3dfb257bb3cbe\n"
    },
    {
      "commit": "d3813f35753a8ce43b289656de2649fdf1afaacc",
      "tree": "c13f9f04349fdfe3ad043c8bdafaa4757e3a30ff",
      "parents": [
        "cc40c5fa11767eb9a87cf6e1a5e8a99d6cec2847"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 23 16:26:15 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 24 11:13:09 2020 -0700"
      },
      "message": "audioflinger: add setCallerName() to AudioTrack\n\nAnd also to AudioRecord.\nThen log the callerName using MediaMetrics from the destructor.\n\nThis can be used to tell whether AAudio or OpenSL ES\nor Java created the object.\n\nBug: 154543374\nTest: adb shell dumpsys media.metrics --clear\nTest: Run an app that uses audio.\nTest: adb shell dumpsys media.metrics\nTest: Look for \"callerName\" in the dump.\nChange-Id: I000346e72f581d2e40ef4fd0410b579d2a1224e2\n"
    },
    {
      "commit": "cc40c5fa11767eb9a87cf6e1a5e8a99d6cec2847",
      "tree": "7d2a46abbe29eb5b8ce6afacdf673eab55823ba5",
      "parents": [
        "784745befac68d978fe7abf09f0aeea33fb0e4ff",
        "a9876703e89afa6db42913d48e2360b7dad98725"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 24 14:30:58 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 24 14:30:58 2020 +0000"
      },
      "message": "Merge \"aaudio: add MediaMetrics for MMAP streams\" into rvc-dev"
    },
    {
      "commit": "a9876703e89afa6db42913d48e2360b7dad98725",
      "tree": "4e51b01b2fa4be83868318a1619e3b7c2f42f36e",
      "parents": [
        "6e89a0704605f4750f87a3243495b175c67e6fbb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 20 18:16:15 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 23 18:00:10 2020 -0700"
      },
      "message": "aaudio: add MediaMetrics for MMAP streams\n\nLog events from service.\nLog start, stop, disconnect and other events.\nLog underruns and bufferSize.\n\nBug: 154543374\nTest: adb shell dumpsys media.metrics --clear\nTest: run an app that uses MMAP, like OboeTester\nTest: adb shell dumpsys media.metrics\nTest: Expect to see lots of \"audio.stream\" events.\nChange-Id: I690e5226b695d53d038d644f4438c759e08f9fbb\n"
    },
    {
      "commit": "7d391087f86cee1c4dc87c03e5549aa4359ddfe6",
      "tree": "e67969f57ea54f0beaa950d6f5c9351e5182ee72",
      "parents": [
        "369ad274564c02b79c15b13e8e69ccb73080d6fb"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 18 15:03:51 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 16:32:38 2020 -0700"
      },
      "message": "MediaMetrics: Misc fixes\n\nRemove unneeded headers from MediaMetricsItem.\nOptimize map writes with emplace_hint.\n\nTest: atest mediametrics_tests\nBug: 149850236\nChange-Id: Ice6fddb8402a5ccbf1df6e6e02fa4aae4c1b42d5\n"
    },
    {
      "commit": "b744fafc831e1a13cc5e054aa4812281c3c5c7fc",
      "tree": "8ac63b4df77923f6a8ba054036b43dee8ef79211",
      "parents": [
        "cc39f3d7fe665dcb39ce6757f5811f7c9ab6c992"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 13:09:26 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 13:09:26 2020 -0700"
      },
      "message": "MediaMetrics: Fix clang-tidy warnings\n\nTest: atest mediametrics_tests\nBug: 153658358\nChange-Id: Ic3c05de5466df24ffd37b224c97ac1138257a73c\n"
    },
    {
      "commit": "709b91e1e8a646f17117fc5e9baa224182cbec64",
      "tree": "00f091b41d344a9ef0609d11e0a750bdeddb024a",
      "parents": [
        "1ad04e663d0f6eb86032b7c4ac7ef7b3dba01de1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 04 14:23:36 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 07 12:22:38 2020 -0700"
      },
      "message": "MediaMetrics: Update dumpsys parameters\n\nMake --prefix and --since work for analytics.\n\nTest: adb shell dumpsys media.metrics --all\nTest: adb shell dumpsys media.metrics --clear\nTest: adb shell dumpsys media.metrics --heap\nTest: adb shell dumpsys media.metrics --help\nTest: adb shell dumpsys media.metrics --prefix c\nTest: adb shell dumpsys media.metrics --prefix audio.volume\nTest: adb shell dumpsys media.metrics --since -100\nTest: adb shell dumpsys media.metrics --unreachable\nBug: 149850236\nChange-Id: Id3e0cb6fe789027b5d5c86cce93ce07f636736bf\n"
    },
    {
      "commit": "8f06962f2daccff7e5489bf4d9b6e9db91f0925c",
      "tree": "96260918ba2ae88fb4c78885e84e87b7a78d3b58",
      "parents": [
        "eeb2d61b7f123b87c1fdb359035ced62e5f0dbb9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 10 15:44:01 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 11 09:53:35 2020 -0800"
      },
      "message": "MediaMetrics: Change the duplicate logging suffix\n\nThe duplicate log allowed suffix ! (e.g. \"event!\") looked more like\n\"not equals\" so changing from ! to #.\n\nTest: adb shell dumpsys media.metrics\nBug: 138583596\nChange-Id: I642334770ed8f5ff0d1f1e187e25eca596603252\n"
    },
    {
      "commit": "333bb3d798380d17ebd652b244d4be58c745cd0a",
      "tree": "baff29f6041653b1e2d2ac3e1b0372b7e9825f26",
      "parents": [
        "9e89b4f032783fbbfb9169d51d8538674fe720ca"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 31 20:17:48 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 05 14:42:51 2020 -0800"
      },
      "message": "MediaMetrics: Minor logging fixes\n\nRemove extraneous right brace in Time Machine dump.\nDo not suppress repeated EVENT properties in the Time Machine.\nUse \"--\" prefix instead of \"-\" for long dumpsys argv options.\n\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics\nBug: 138583596\nChange-Id: I874be909ac08641b14dd12fb2c83de7a276a1796\n"
    },
    {
      "commit": "b302ba7ff35576907617b7a43b1a42ca7174ee0e",
      "tree": "f6f4ef41d503306f76c613da6f38ec92fe9f9b6e",
      "parents": [
        "6d7fc8a5c9121800b3dbee4c0ddda2bb171cb2c3",
        "5bde28f5616e666f69e71820bbdb2a985d1cb7ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 29 16:02:01 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 29 16:02:01 2020 +0000"
      },
      "message": "Merge \"Make \u003cmedia/MediaMetrics.h\u003e safe to use directly\""
    },
    {
      "commit": "5bde28f5616e666f69e71820bbdb2a985d1cb7ac",
      "tree": "782b93ac3eb659c2b5f31926e23928efea6f6baf",
      "parents": [
        "fbe4e735b472c5552405664c390f4898dbd566dd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 27 08:04:14 2020 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 28 14:02:15 2020 -0800"
      },
      "message": "Make \u003cmedia/MediaMetrics.h\u003e safe to use directly\n\nPreviously, it assumed that the user had included other header files.\nNow you can use it on its own, which is important for an API (\"include\nwhat you use\").\n\nTest: builds OK\nChange-Id: Ib64eec20576dcf5a5dffe1ed670465cb590ef9e3\n"
    },
    {
      "commit": "b68f5ebb53434e800c43715127e2d1032e3a9b54",
      "tree": "7e1c75e02cb63d4c9d1f0b7dc3322001e1463b33",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 16:49:17 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:03:22 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioFlinger logging\n\nTest: atest mediametrics_tests\nTest: mediametrics dumpsys\nBug: 138583596\nChange-Id: I2086c5a780744d409052fde4c5ebc1dc92d95ea8\n"
    },
    {
      "commit": "3b4c1f0320efc7a54c4ab811727c432cda73dd37",
      "tree": "98e6951e1188db70e465b5a3330e04cf2176ed4b",
      "parents": [
        "6425bcd8d5698b44127550d00c0d3e8ea876f7d7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 23 18:58:32 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 27 11:44:27 2020 -0800"
      },
      "message": "MediaMetrics: Change dumpsys format\n\nAs the dumpsys no longer needs to be parseable by a program\nconvert to a more human readable form.\n\n1) Make default time REALTIME consistently.\n2) Dump time as a human readable string.\n3) Remove dumpsys versioning code.\n4) Delimiter changes.\n\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics\nBug: 138583596\nChange-Id: I6ee7d81a18e0e220b258c722d232c05805118abb\n"
    },
    {
      "commit": "7c96ea7ff84e1084332548583841735b694bfebd",
      "tree": "eb5d7c1bcb91cea21469e46b7c014ae44635a217",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 10 15:46:22 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 16 15:55:18 2020 -0800"
      },
      "message": "Remove mediametrics include symlinks\n\nBug: 143245419\nTest: build\nChange-Id: I6c836e60c0fe078f5ab7370aec156bdd6e8dcbf0\n"
    },
    {
      "commit": "ea186fae038399fe8814543f62e9490c4854a960",
      "tree": "5bc96a7de31db2b9d936b8f9866eb6d55361457d",
      "parents": [
        "2cdae31e8bb09fbfe4b655987d25b6902bdc0211"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 09 18:13:15 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 13 14:40:03 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioAnalytics actions\n\nUnderrun handling\nLatency handling\n\nTest: adb shell dumpsys media.metrics\nBug: 138583596\nChange-Id: I4c0a5ba0f4f4ce9209146dab99433e33646d959b\n"
    },
    {
      "commit": "0f7ad8cd2c109b224e4f652d6c216e1105953d79",
      "tree": "3091563a5833d203a6816d1e294025e9c1c35ab6",
      "parents": [
        "9468f951e6b85446ddde11f2dfce060caaa5f261"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 03 13:24:34 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 15:32:39 2020 -0800"
      },
      "message": "MediaMetrics: Add AnalyticsActions and AnalyticsState\n\nFactor out common analytics code from audio specifics.\n\nAllow for saving and clearing analytics state if audioserver crashes.\n\nTest: atest mediametrics_tests\nTest: instrumented check on audioserver restart\nBug: 138583596\nChange-Id: I1073f3ef95f44a383a7f14b0c2ea6f978a84ee24\n"
    },
    {
      "commit": "37de9b7193255993b6547b05792b611a87f18407",
      "tree": "41808006ac416ca7df42338542e1563c29ff6d07",
      "parents": [
        "692870bd73532e69a0f541496365cddc09f93418"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 13:54:05 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 17:27:00 2020 -0800"
      },
      "message": "MediaMetrics: Add Defer class\n\nThis is a helper which assists logging on exit of a method.\n\nTest: atest mediametrics_tests\nBug: 138583596\nChange-Id: I73c0e7e469dc9fd1b29934ef308f9d2f15146bec\n"
    },
    {
      "commit": "692870bd73532e69a0f541496365cddc09f93418",
      "tree": "d7edfa4c45b73056e58ff226a7329636341ca8c2",
      "parents": [
        "565cc485a0ec357c559acf458fc853ec69180be8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 13:46:06 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 17:25:20 2020 -0800"
      },
      "message": "MediaMetrics: Add Elem getter to Item\n\nAnd minor edits.\n\nTest: atest mediametrics_tests\nBug: 138583596\nChange-Id: I9161f98f4c17516ea04fc143eb1ccbd656f17796\n"
    },
    {
      "commit": "565cc485a0ec357c559acf458fc853ec69180be8",
      "tree": "ad48e2d839ab6471be87fbabebff8f8af1ad1094",
      "parents": [
        "2ecacc4ae54c9938ea432b933a6a33ec4d9ff232"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 13:40:04 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 17:02:46 2020 -0800"
      },
      "message": "MediaMetrics: Make Item final\n\nTest: atest mediametrics_tests\nBug: 138583596\nChange-Id: Ibab0eff8f1d4e9786b366dcc19589b0a8ec2137f\n"
    },
    {
      "commit": "2ecacc4ae54c9938ea432b933a6a33ec4d9ff232",
      "tree": "f6e4bdbcdb8a3b27d3829a26d381bb7fe42aa144",
      "parents": [
        "b7b2f5d8658b5d08831f91c25400c9717b05dac1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 13:29:50 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 02 16:38:20 2020 -0800"
      },
      "message": "MediaMetrics: Move Item::Prop to the start of the class\n\nThis improves clarity.\n\nTest: atest mediametrics_tests\nBug: 138583596\nChange-Id: Ib02e2c8f226278c627d5e0feac5a4ec7e7a6c49f\n"
    },
    {
      "commit": "611268d7a114200c46c517996617f15586108149",
      "tree": "d3bfae505dc6cbb00159081f3c9ce58eac7bbd5a",
      "parents": [
        "f1ba94795895e917e4046a26923a478c7a2cadd5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 19 13:54:02 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 19 15:45:35 2019 -0800"
      },
      "message": "MediaMetrics: Unify bundle key naming for service set properties\n\nComment on relationship of MediaMetricsItem.h with MediaMetrics.java.\n\nTest: adb shell dumpsys media.metrics\nBug: 138583596\nChange-Id: Id535914a88e2814a6e1704267617761ed2e46087\n"
    },
    {
      "commit": "b7aadb3f772357d017ccb362eee67e0270dfb1c6",
      "tree": "7a8ff124e1c3c319df85782f23c0a626bbc31cf1",
      "parents": [
        "47e58d60fe1c5f78df382e744fefad45b86b3f22"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 09 19:40:42 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 18 18:58:05 2019 -0800"
      },
      "message": "MediaMetrics: Use variant instead of union for properties\n\nTest: Verify media.metrics dumpsys, atest mediametrics_tests\nBug: 138583596\nChange-Id: Ic6e2a090b890f5bec1e818637f6e31150924add1\n"
    },
    {
      "commit": "47e58d60fe1c5f78df382e744fefad45b86b3f22",
      "tree": "800caf3a67827db68cc41505369d29d8b5a79668",
      "parents": [
        "9c7e2a51e2fb24bbf193b46a3f5e892af19cdfe5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 18:40:19 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 18 13:52:52 2019 -0800"
      },
      "message": "MediaMetrics: Remove friend access, use STL map\n\nTest: Verify media.metrics dumpsys, atest MediaMetricsTest\nBug: 138583596\nChange-Id: I6b085553af3fd1a0c98261d133f251c2db27c93b\n"
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "1efc9c6f15b61040eb80a5d61b947cd0a6356ed9",
      "tree": "c407dc522e6dc13de39c9e89099c2c80d41c84cd",
      "parents": [
        "d2572133b15cafb9f670e96f93edd4d6c3fb96a6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 13:43:33 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 04 13:50:53 2019 -0800"
      },
      "message": "MediaMetrics: Add stack allocated Item\n\nEnable byte string submit for low overhead.\nAdd tests.\n\nTest: atest mediametrics_tests\nBug: 138583596\nChange-Id: Idce65fd270e8ad45ba754a660734368416c8d1b5\n"
    },
    {
      "commit": "3253f2d6f3c2b1b27871aa291b0efd5db97c8c48",
      "tree": "c9c75eda60ccc0ab5ea1bc71704ae0f954fd6fed",
      "parents": [
        "afa8feb251a71eebce8c659a25202037232fbe59"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 21 14:50:07 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 31 17:43:51 2019 -0700"
      },
      "message": "MediaMetrics: Update Item serialization code\n\nAdd for bounds checking errors\nUpdate key checks to omit length, use C primitive types\n\nTest: atest mediametrics_tests, adb shell dumpsys media.metrics\nChange-Id: I1e6d5bd7a9611f6d59e15a1dbebc646405e5a018\n"
    },
    {
      "commit": "aeef788a3b322470da8e79c949a3861547998dd3",
      "tree": "352f95b00400ce8a1ae7c6b7e4ebcc3cf28b9eaf",
      "parents": [
        "a87e69cf8b4b2b58f5bbe2aa89632b36e1e533c4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 18 15:18:14 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 21 12:28:09 2019 -0700"
      },
      "message": "MediaMetrics: Update to use fluent style recording\n\nMove methods into Prop class.\nUse const for getters.\n\nTest: mediametrics_tests and dumpsys media.metrics\nChange-Id: I76cdcce4f966ce74c44d4db019b4ce0096e567de\n"
    },
    {
      "commit": "a87e69cf8b4b2b58f5bbe2aa89632b36e1e533c4",
      "tree": "3c06f8f07fe275b50c4969f4ba6b356fbe8e1f52",
      "parents": [
        "2392e6d96d80c44a140a3ab5c45a17b48d8216c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 18 10:07:40 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 21 11:56:06 2019 -0700"
      },
      "message": "MediaMetrics: Make submit one-way\n\nRemove the unused session id to improve speed and clarity.\n\nTest: dumpsys media.metrics sanity, mediametrics_tests\nChange-Id: Ide5e9218811e110997fed19f43eb6a5fdc5812ec\n"
    },
    {
      "commit": "c89c8dc5c05da392f3e6840fc909fc08c7e82978",
      "tree": "b09d5f0958a768588c6a7f78026b99ea6644001d",
      "parents": [
        "17dbaf280698e0a07c1391784e1045cf4d8d9d37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 16 17:48:21 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 17 13:45:41 2019 -0700"
      },
      "message": "MediaMetrics: Add unit tests\n\nDocument some interface differences.\n\nTest: mediametrics_tests\nChange-Id: Idf19827e79136dcca6522e6df53e28e3ea4a2231\n"
    },
    {
      "commit": "17dbaf280698e0a07c1391784e1045cf4d8d9d37",
      "tree": "8d59ae7547792d26af41062a00615f6f45167dc0",
      "parents": [
        "dbfd6388dd4618c9a387790ae0e7dd591c7f3d8d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 11 14:06:31 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 16 15:08:58 2019 -0700"
      },
      "message": "MediaMetrics: Update to use STL containers\n\nTest: dumpsys media.metrics sanity\nChange-Id: Ifcada098e755ef3d679715ed23fab9d793ebde3e\n"
    },
    {
      "commit": "bf536ac5e2e415c735ba27b7879d580a0658e65d",
      "tree": "1a0a989f1d87aecef26f41cd49c5656aaffc599c",
      "parents": [
        "a05365157966870963a65db4ed1b70f005256240"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Aug 26 11:04:28 2019 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Aug 26 19:00:16 2019 -0700"
      },
      "message": "Mediacodec to use C interface to mediametrics\n\nUse stable C interface instead of C++ interface.\n\nBug: 123543273\nTest: compilation, boot, dumpsys\nChange-Id: I04935343917ce400d0df531e06b4d23ab7269fa6\n"
    },
    {
      "commit": "6a3052232c606bc2f74a849c6758fd44b6c01158",
      "tree": "529ee3bb94a17c06e19c8642daf9993f23d531f2",
      "parents": [
        "2637984613a75eb2640a73e186a6dd1f08cebbc0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 28 20:33:18 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 31 11:19:44 2019 -0800"
      },
      "message": "use MediaAnalyticsItem::create() instead of new\n\nBug: 123543489\nTest: boot/logcat, select CtsMediaTests\nChange-Id: I92f8b9987b78466fae74ce4c0b177f8bb1e7dea8\n"
    },
    {
      "commit": "ba8c48429d82d22737a84d2713fa1880a4654cbd",
      "tree": "850a9fe47603d7d46a97220041c92f59e2149822",
      "parents": [
        "04a71420a809f8bf21ec5152d469c06161cd0a80"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 18 11:35:33 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 24 15:57:42 2019 -0800"
      },
      "message": "Further work on libmediametrics stable API\n\nimplement a missing method (for inflight metrics), enumerate exported\nsymbols.\n\nBug: 119675363\nTest: build, CTS media/codec tests\nChange-Id: Id92f1b331babacc0de6c0005d6ba0c97c91c0291\n"
    },
    {
      "commit": "20147323b745dcc8ee395b6815082e456ee7d1d6",
      "tree": "6c009edb7320f4a4f5c287ecd536974e9e0e4ace",
      "parents": [
        "7763cf3b0eb9ae0ed5c375d19324fa068a070229"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Nov 17 09:08:39 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Dec 12 14:08:06 2018 -0800"
      },
      "message": "C interface to MediaMetrics\n\nC interface is more stable across upgrades than C++\nand simplifies cross-package interfaces in upgradeable components.\n\nBug: 119675363\nTest: parallel metrics generation from nuplayer\nChange-Id: I36beeade82a208be64af0860eb6f175a2801b27f\n"
    },
    {
      "commit": "92d23b433bd770c22c2d4a30b573602f5565de1b",
      "tree": "e2ff902f2be5d131e8a1cd4af09868d3a5af2794",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 12:10:30 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 14:38:27 2018 -0800"
      },
      "message": "Remove finalized concept from media.metrics\n\nthe \u0027finalized\u0027 concept didn\u0027t pan out -- remove references to it.\nSimplifies the code flow.\nAlso purged some uses of generateSessionID().\n\nBug: 71874686\nTest: logcat/dumpsys\nChange-Id: I39e48526a5696158d8195f47154881ca6ecda266\n"
    },
    {
      "commit": "783bd0d74d142493b4ef0a15a2664535854e99f9",
      "tree": "60cbf56cb9d37670194d12cda8180767b6b5cfa9",
      "parents": [
        "734d186db7ec3d1f877001d71c71de6562ead7f7"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 11:10:35 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 09:25:15 2018 -0800"
      },
      "message": "media.metrics changes AString -\u003e std::string\n\nchange from AString to std::string for how media.metrics handles\nstrings.  This severs the dependency on libstagefright_foundation,\nwhere AString is implemented, so we can integrate into places\nwhich do not want to introduce a dependency on libstagefright_foundation.\n\nBug: 70805723\nTest: compilation/linking, CTS subset\nChange-Id: I66de971b6ec354444e06112607a2d7614084cef8\n"
    },
    {
      "commit": "4e2eeffb7d8cbe8add700ad699afc2614668706b",
      "tree": "dbacfe6599ba365eaa3e5c476f84689730daa2f5",
      "parents": [
        "62b3e7a87d1b0554cf347ba9b06978f9344c46f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Nov 27 14:01:29 2017 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Dec 01 11:19:51 2017 -0800"
      },
      "message": "Update to support long version codes.\n\nBug: 64459786\nTest: manual\nChange-Id: I8b251f5238d6aeed51642bc7c4fc573b2a5a408e\n"
    },
    {
      "commit": "9bb7e3b88d9a2a1f86b83b00af5aae3e8d8ec644",
      "tree": "8550f87032b043660ceca37e3f2c115486314014",
      "parents": [
        "c56f27b269800c1e8441908c3d564c63e0257f56"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Oct 23 13:01:48 2017 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Oct 23 14:18:19 2017 -0700"
      },
      "message": "Prevent Race condition in media.metrics\n\nChange scope of locking to avoid a window of vulnerability on queue\nmanipulation and item merging. Also cleans up a string manipulation\nerror exposed by the poc for the queue bug.\n\nBug: 68015343\nTest: repeated running of PoC without crash\nChange-Id: Iafa82936e6ec2e25793187e0fa17c2a23085f58f\n"
    },
    {
      "commit": "2ab3c43f0a73a534f79903e86284f5cabe3f5831",
      "tree": "8d7e673d036fba8ab30c744877527fa2b96bb49e",
      "parents": [
        "73d0374fcb522fc5106c2c8f75d482cbc8a5e1c0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Oct 02 09:29:49 2017 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Oct 02 09:29:49 2017 -0700"
      },
      "message": "Monitor binder status to media.metrics service\n\nAdd code to use binder\u0027s linkToDeath() so that our clients learn when\n(infrequently, we hope) the media.metrics service dies for some\nreason. When this happens, arrange for the client to re-establish\nits connection to the service.\n\nBug: 66948389\nTest: kill media.metrics, watch logcat for reestablishment messages\nChange-Id: Ic518b955ce6816698b21e6a9c844587cef2e2712\n"
    },
    {
      "commit": "f65f421540d8d1e2aad17b86368405b83cb40a26",
      "tree": "6dce1fc64f88803e89369fe6d893c5700251b6f1",
      "parents": [
        "aba0e98b085cc613003bf42dbfe1ad0a3bb2348e"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Aug 31 11:41:19 2017 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Aug 31 11:41:19 2017 -0700"
      },
      "message": "track pkgname/version in media.metrics\n\nEnhances the media.metrics subsystem to track the pkg name \u0026 version\nso analysis can move from \"error rate has climbed\" to \"error rate has\nclimbed within app X\".\n\nChanges include fields to hold package name/version, the dump protocol\nto emit those fields to upload, and better management of metrics data on\ndevice (time and quantity).\n\nBug: 65027506\nTest: review output of dumpsys media.metrics\nChange-Id: Ia55b859d903835c84f7d43883f959dc1cdefb081\n"
    },
    {
      "commit": "b62e77b1e3037509988986b9df2a8889c1ed547c",
      "tree": "86d14a536970124171f1d95d877750992f583e14",
      "parents": [
        "85a33cf9e8c805ff02b973cf05f17c5dfb6da4e0",
        "a85c7351143e8943dad0a6c432a8fd5a68bae953"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Apr 06 03:19:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 06 03:19:34 2017 +0000"
      },
      "message": "Merge \"Move MediaMetrics into its own library\" into oc-dev am: c668efcfd0\nam: a85c735114\n\nChange-Id: Ie7fb351c752fcbfdf6690c15d62c7c754b166213\n"
    },
    {
      "commit": "0f0c9b5007ff694d05a91c28359db0553e4dd061",
      "tree": "74669ec0fa61229d23b863b685bbf162e82ff32e",
      "parents": [
        "98e11c12e6f5bd64e5d6930a2bbd3522a309d6b1"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Apr 05 14:00:23 2017 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Apr 05 14:41:03 2017 -0700"
      },
      "message": "Move MediaMetrics into its own library\n\nChanges for the new HAL structure have brought about a build time\ncircular dependency between libmedia and libmediadrm. This set of\nchanges the media metrics code into its own library and arranges\nfor the relevant consumers of the media metrics code to link\nto this new library (where they had previously picked it up by\nincluding libmedia).\n\nBug: 36990807\nTest: build, boot.\nChange-Id: I81768eecca88d5e59e6e6e547f29308a94e30c7b\n"
    }
  ]
}
