)]}'
{
  "commit": "fa629915ccad27abc58bd8d9301b4c8478c5d31a",
  "tree": "67a4443be4e597d898ba697fdcf0248cc6c725ae",
  "parents": [
    "bad3323b18f73a1eb3e3ed4c734845754f5fe20c"
  ],
  "author": {
    "name": "zezeozue",
    "email": "zezeozue@google.com",
    "time": "Fri Jun 05 09:27:36 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jun 05 09:27:36 2026 +0100"
  },
  "message": "tp: android.display.video data source, importer, table and stats (#6143)\n\nAdds trace_processor support for the android.display.video data source,\nwhich captures device display frames as a hardware video elementary\nstream.\n\nWire format (protos/perfetto/trace/android/video_frame.proto):\n* VideoFrame (TracePacket.video_frame): a codec_config-only frame per\nstream (carrying display_name + RFC 6381 codec_string), then one\nVideoFrame per on-screen change with a single access unit (au_data).\nSelf-identifying via a per-session display_id.\n* VideoFrameError (TracePacket.video_frame_error): per-stream failure\nwith a Reason enum (size cap hit, codec error, display gone, no encoder,\ndisplay not found, encoder setup failed, virtual display failed).\nConfig: DataSourceConfig.display_video_config.\n\nImporter (src/trace_processor/plugins/video_frame_importer/):\n* Parses video_frame into the __intrinsic_video_frames table. The\nencoded payload is stored zero-copy as a TraceBlobView, surfaced via the\n__INTRINSIC_VIDEO_FRAME_AU_DATA(id) scalar function (same pattern\nHPROF/ETM use for blob payloads).\n* Maps each VideoFrameError reason to its own kIndexed entry in the\nglobal stats table, keyed by display_id.\n* Enforces a parse-time 256 MB per-stream cap as a backstop against\ntraces recorded without a producer cap: over-cap frames are dropped and\nandroid_video_size_cap_hit is reported once.\n\nThe table is intrinsic (not a stdlib module) since only the VideoFrames\nUI consumes it.\n\nTests: diff tests (single/multi display, au_data blob equivalence, all\nVideoFrameError reasons) and a unit test for the parse-time cap.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d8a265f71038a4189afcbe39ece77791aa14779",
      "old_mode": 33188,
      "old_path": "Android.bp",
      "new_id": "22f7129371645a2d24b9f6d152c254151204b962",
      "new_mode": 33188,
      "new_path": "Android.bp"
    },
    {
      "type": "modify",
      "old_id": "d80e32bba5f1a1748c60386be9d7bd50c63b96dd",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "a6917af8119eaac65cba62a01dbe07a4795ff6a8",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "6c507abcfe3dd881f41e3bf22ed0419a61de9699",
      "old_mode": 33188,
      "old_path": "protos/perfetto/config/android/BUILD.gn",
      "new_id": "6eba128a27c18423c3720ec0b88a9024a212ef83",
      "new_mode": 33188,
      "new_path": "protos/perfetto/config/android/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37f68e201950e5f6f57fab65cf1b54ad34b1b828",
      "new_mode": 33188,
      "new_path": "protos/perfetto/config/android/display_video_config.proto"
    },
    {
      "type": "modify",
      "old_id": "990d39269cd7f01b452ab974ad60a833e68bd5c3",
      "old_mode": 33188,
      "old_path": "protos/perfetto/config/data_source_config.proto",
      "new_id": "f3c0db87c3a5b78b06eeb3021933e7c617e11df3",
      "new_mode": 33188,
      "new_path": "protos/perfetto/config/data_source_config.proto"
    },
    {
      "type": "modify",
      "old_id": "773f13066de575664a8e23b03273ff1f2f249bb8",
      "old_mode": 33188,
      "old_path": "protos/perfetto/config/perfetto_config.proto",
      "new_id": "579553873fdebb81ecd05848984fad470072a2a7",
      "new_mode": 33188,
      "new_path": "protos/perfetto/config/perfetto_config.proto"
    },
    {
      "type": "modify",
      "old_id": "81c014fa5e7d09e498a03bbae05a20beb4a0f233",
      "old_mode": 33188,
      "old_path": "protos/perfetto/trace/extensions.json",
      "new_id": "e403d5b48b6a51e887b84db17447cf85060c193c",
      "new_mode": 33188,
      "new_path": "protos/perfetto/trace/extensions.json"
    },
    {
      "type": "modify",
      "old_id": "60d9e38cc7477c113ed05253408f6487f474ffc4",
      "old_mode": 33188,
      "old_path": "protos/perfetto/trace/perfetto_trace.proto",
      "new_id": "e7eb002270081c53fcd21910ba8bcaab001387ed",
      "new_mode": 33188,
      "new_path": "protos/perfetto/trace/perfetto_trace.proto"
    },
    {
      "type": "modify",
      "old_id": "cf18570baeee79d7e61d99e433a646250dcfd910",
      "old_mode": 33188,
      "old_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_trace_packet.proto",
      "new_id": "9104e6e788406ff59a273f0ee3862ee178964963",
      "new_mode": 33188,
      "new_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_trace_packet.proto"
    },
    {
      "type": "modify",
      "old_id": "0e2353854b438e0c7a3d2b480d80051586b5fc01",
      "old_mode": 33188,
      "old_path": "src/trace_processor/BUILD.gn",
      "new_id": "f7389733d5ca4ac3d98b34ecb058e03e2976fe95",
      "new_mode": 33188,
      "new_path": "src/trace_processor/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "8ec44ba3d1d45ae62e24b5b03d13d5c2255085eb",
      "old_mode": 33188,
      "old_path": "src/trace_processor/importers/proto/proto_trace_parser_impl.cc",
      "new_id": "fc11bd4fc419d0c3bec0f588707a19cbe2d30042",
      "new_mode": 33188,
      "new_path": "src/trace_processor/importers/proto/proto_trace_parser_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "9a10601b93b1bf07da4597c1952bfe0c3c8ca3bd",
      "old_mode": 33188,
      "old_path": "src/trace_processor/importers/proto/proto_trace_reader.cc",
      "new_id": "8fd9c02e978b43a86350709df95d67761c59bf1c",
      "new_mode": 33188,
      "new_path": "src/trace_processor/importers/proto/proto_trace_reader.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "413d4cbf0244c74c30ec6c9539aed3b40245a6f0",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6986c8a0ec02f0215fca546cfed56437001c0b09",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/tables.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6748dd6179455aac9b5f37e6bed5e7a2abbad5c2",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/video_frame_importer.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "24c51179606066bb2a79cdf2d7c079ed76a47167",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/video_frame_importer.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "edebfc6fdbdcba24d40b8fdc17e706bae393ec18",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/video_frame_module.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "196b8a695b8c5aa750d501189f9656dc2846a9bc",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/video_frame_module.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e5f426aacc86426f740f689982750c40fa5194e6",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/video_frame_importer/video_frame_module_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "c4d3471899ce22ae8007948b1c3ffbd9d88dc1a8",
      "old_mode": 33188,
      "old_path": "src/trace_processor/storage/stats.h",
      "new_id": "5248be12cb8f999f27155753b367581cd6941c2d",
      "new_mode": 33188,
      "new_path": "src/trace_processor/storage/stats.h"
    },
    {
      "type": "modify",
      "old_id": "3e92728756d644554ae6f0fc636aab97621d4e86",
      "old_mode": 33188,
      "old_path": "src/trace_processor/trace_processor_impl.cc",
      "new_id": "a4a63f47dbc925d10beac339b582e5bd9bc772a6",
      "new_mode": 33188,
      "new_path": "src/trace_processor/trace_processor_impl.cc"
    }
  ]
}
