{
  "schemaVersion": 2,
  "snapshotRevision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
  "snapshotSelectedDate": "2026-10-23",
  "checkedAt": "2026-10-23T13:36:25.581642+00:00",
  "status": "PASS",
  "scope": "Bounded textual source assertions only. No preprocessing, full type resolution, complete call graph, or runtime validation.",
  "runtimeStatus": "NOT RUN",
  "files": [
    {
      "path": "third_party/blink/renderer/core/html/media/html_media_element.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/core/html/media/html_media_element.cc",
      "fileFetched": true,
      "fileSha256": "2532b46f97f6a938ccb1ff9adb8ad8364a8c99325eeccc0e6641e6a77682f96a",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "html-factory",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 1765,
              "text": "frame->Client()->CreateWebMediaPlayer(*this, source, this);",
              "function": "HTMLMediaElement::StartPlayerLoad",
              "functionLine": 1704
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/web_media_player_impl.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_player_impl.cc",
      "fileFetched": true,
      "fileSha256": "32f36992836a27eef8de77cb318ef7cfb3f4bd5e700d5a9ebc02842616490ec4",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "player-start",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 3070,
              "text": "pipeline_controller_->Start(start_type, demuxer, this, is_streaming,",
              "function": "WebMediaPlayerImpl::OnDemuxerCreated",
              "functionLine": 3057
            }
          ]
        },
        {
          "id": "player-source",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 991,
              "text": "auto data_source = std::make_unique<MultiBufferDataSource>(",
              "function": "WebMediaPlayerImpl::DoLoad",
              "functionLine": 925
            }
          ]
        },
        {
          "id": "player-manager",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 1001,
              "text": "demuxer_manager_->SetDataSource(std::move(data_source));",
              "function": "WebMediaPlayerImpl::DoLoad",
              "functionLine": 925
            }
          ]
        },
        {
          "id": "player-renderer-sink",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 3042,
              "text": "return renderer_factory_selector_->GetCurrentFactory()->CreateRenderer(",
              "function": "WebMediaPlayerImpl::CreateRenderer",
              "functionLine": 2998
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/filters/pipeline_controller.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/pipeline_controller.h",
      "fileFetched": true,
      "fileSha256": "dff75d998ef599fd3cafbb24902c72f3d08e40fc5ef29c98fc63141cba190355",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "controller-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 33,
              "text": "class MEDIA_EXPORT PipelineController {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/filters/demuxer_manager.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/demuxer_manager.cc",
      "fileFetched": true,
      "fileSha256": "01afd177b93b47f3cfa4ef41cbf58783cd4693a68b16f6c5ed89db21338c6ccd",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "manager-ffmpeg",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 411,
              "text": "return std::make_unique<FFmpegDemuxer>(",
              "function": "DemuxerManager::CreateFFmpegDemuxer",
              "functionLine": 409
            }
          ]
        },
        {
          "id": "manager-source",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 412,
              "text": "media_task_runner_, data_source_.get(),",
              "function": "DemuxerManager::CreateFFmpegDemuxer",
              "functionLine": 409
            }
          ]
        },
        {
          "id": "manager-chunk",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 396,
              "text": "return std::make_unique<ChunkDemuxer>(",
              "function": "DemuxerManager::CreateChunkDemuxer",
              "functionLine": 395
            }
          ]
        },
        {
          "id": "manager-choice",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 272,
              "text": "SetDemuxer(CreateFFmpegDemuxer());",
              "function": "DemuxerManager::CreateDemuxer",
              "functionLine": 235
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/modules/mediasource/media_source.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/media_source.cc",
      "fileFetched": true,
      "fileSha256": "556eb757de933bd4c351272521a06ed4c885edad88965b4b7fcaf8cd7e3414bb",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "media-source-buffer",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 400,
              "text": "auto* buffer = MakeGarbageCollected<SourceBuffer>(",
              "function": "MediaSource::AddSourceBuffer_Locked",
              "functionLine": 368
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/modules/mediasource/source_buffer.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/source_buffer.cc",
      "fileFetched": true,
      "fileSha256": "abafba343753507060beec62985544e27517ed20645e7a94e71970b8d2400905",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "append-entry",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 593,
              "text": "AppendBufferInternal(data->ByteSpan(), exception_state);",
              "function": "SourceBuffer::appendBuffer",
              "functionLine": 588
            },
            {
              "line": 601,
              "text": "AppendBufferInternal(data->ByteSpan(), exception_state);",
              "function": "SourceBuffer::appendBuffer",
              "functionLine": 596
            }
          ]
        },
        {
          "id": "buffer-interface",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 1968,
              "text": "if (!web_source_buffer_->AppendToParseBuffer(data)) {",
              "function": "SourceBuffer::AppendBufferInternal_Locked",
              "functionLine": 1949
            }
          ]
        },
        {
          "id": "buffer-async",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 1987,
              "text": "BindOnce(&SourceBuffer::AppendBufferAsyncPart, WrapPersistent(this)));",
              "function": "SourceBuffer::AppendBufferInternal_Locked",
              "functionLine": 1949
            }
          ]
        },
        {
          "id": "buffer-parser",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 2103,
              "text": "web_source_buffer_->RunSegmentParserLoop(&timestamp_offset_);",
              "function": "SourceBuffer::AppendBufferAsyncPart_Locked",
              "functionLine": 2081
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/web_media_source_impl.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_source_impl.cc",
      "fileFetched": true,
      "fileSha256": "5c1fdceface76b9afcaea055c858ddfaa2f09d259b1c73dc7205c213b3628e94",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "web-buffer-factory",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 43,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 33
            },
            {
              "line": 57,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 48
            },
            {
              "line": 71,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 62
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
      "fileFetched": true,
      "fileSha256": "739d5eac0476fc6c96a85ea3c729500edef72ea98bbf19641388fdfafb3c0a6d",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "web-buffer-append",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 142,
              "text": "return demuxer_->AppendToParseBuffer(id_, data);",
              "function": "WebSourceBufferImpl::AppendToParseBuffer",
              "functionLine": 140
            }
          ]
        },
        {
          "id": "web-buffer-parser",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 149,
              "text": "demuxer_->RunSegmentParserLoop(id_, append_window_start_,",
              "function": "WebSourceBufferImpl::RunSegmentParserLoop",
              "functionLine": 145
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
      "fileFetched": true,
      "fileSha256": "1847cfcbd36dfa56022aa9d15423fdde8c797af8be72bf85d901140d0ba81145",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "web-buffer-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 27,
              "text": "class WebSourceBufferImpl : public WebSourceBuffer {",
              "function": null,
              "functionLine": null
            }
          ]
        },
        {
          "id": "web-buffer-type",
          "kind": "typed-member",
          "found": true,
          "matches": [
            {
              "line": 70,
              "text": "raw_ptr<media::ChunkDemuxer, DanglingUntriaged> demuxer_;",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/filters/ffmpeg_demuxer.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/ffmpeg_demuxer.h",
      "fileFetched": true,
      "fileSha256": "2ee5c42f3f7bf756d8a8667dd1b81d79ea65d92e3833906efcee3625f2e9c0e2",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "ffmpeg-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 206,
              "text": "class MEDIA_EXPORT FFmpegDemuxer : public Demuxer {",
              "function": null,
              "functionLine": null
            }
          ]
        },
        {
          "id": "ffmpeg-stream",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 65,
              "text": "class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/filters/chunk_demuxer.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/chunk_demuxer.h",
      "fileFetched": true,
      "fileSha256": "7882b1b7d0ec10bc36f06ca11b835bd474163070b8b0d032e719c8ecbd5250d9",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "chunk-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 205,
              "text": "class MEDIA_EXPORT ChunkDemuxer : public Demuxer {",
              "function": null,
              "functionLine": null
            }
          ]
        },
        {
          "id": "chunk-stream",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 39,
              "text": "class MEDIA_EXPORT ChunkDemuxerStream : public DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/base/demuxer.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/base/demuxer.h",
      "fileFetched": true,
      "fileSha256": "c1d509071e28586fdca660554f95b6da3c3adad1c2fdfbe5a5481ce36af5a356",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "demuxer-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 67,
              "text": "class MEDIA_EXPORT Demuxer : public MediaResource {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/base/demuxer_stream.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/base/demuxer_stream.h",
      "fileFetched": true,
      "fileSha256": "14c8da7025575ed1dd773a159a0133fabc8b4d7c95f1caf519f3f05831dccaca",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "demuxer-stream-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 30,
              "text": "class MEDIA_EXPORT DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/base/video_decoder.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/base/video_decoder.h",
      "fileFetched": true,
      "fileSha256": "0d953a2272c5eb26182383c0b0a5aea1eae84e14f7c583563b0faf4c4f4a13a8",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "decoder-class",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 27,
              "text": "class MEDIA_EXPORT VideoDecoder : public Decoder {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/filters/decoder_stream.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/decoder_stream.cc",
      "fileFetched": true,
      "fileSha256": "98e9a518faa4f23358e45b3f56afd1afa08f3686db2c7161a35ad9f784a13a23",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "stream-read",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 790,
              "text": "stream_->Read(buffer_read_count,",
              "function": "DecoderStream<StreamType>::ReadFromDemuxerStream",
              "functionLine": 756
            }
          ]
        },
        {
          "id": "stream-decode",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 578,
              "text": "decoder_->Decode(",
              "function": "DecoderStream<StreamType>::DecodeInternal",
              "functionLine": 542
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/renderers/renderer_impl.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl.cc",
      "fileFetched": true,
      "fileSha256": "9253fa0a2c9c32996ec5b3746d052e7b940ef7d8c670cd4365636f7557f055de",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "renderer-init",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 481,
              "text": "video_renderer_->Initialize(",
              "function": "RendererImpl::InitializeVideoRenderer",
              "functionLine": 450
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/renderers/renderer_impl_factory.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl_factory.cc",
      "fileFetched": true,
      "fileSha256": "983c72fa476fce374040c727ff94042a48f1f6fcba5dd7edaa85d5a291e8cf21",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "factory-video",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 119,
              "text": "std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        },
        {
          "id": "factory-renderer",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 133,
              "text": "return std::make_unique<RendererImpl>(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "media/renderers/video_renderer_impl.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/video_renderer_impl.cc",
      "fileFetched": true,
      "fileSha256": "075c429d49eae6f1d5c79be4a176dbf46571d9c1a03d268ea409a313d47dbb2c",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "video-stream-init",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 220,
              "text": "video_decoder_stream_->Initialize(",
              "function": "VideoRendererImpl::Initialize",
              "functionLine": 165
            }
          ]
        },
        {
          "id": "video-read",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 829,
              "text": "video_decoder_stream_->Read(",
              "function": "VideoRendererImpl::AttemptRead_Locked",
              "functionLine": 816
            }
          ]
        },
        {
          "id": "video-ready-cb",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 830,
              "text": "base::BindOnce(&VideoRendererImpl::FrameReady,",
              "function": "VideoRendererImpl::AttemptRead_Locked",
              "functionLine": 816
            }
          ]
        },
        {
          "id": "video-sink",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 916,
              "text": "sink_->Start(this);",
              "function": "VideoRendererImpl::StartSink",
              "functionLine": 911
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/video_frame_compositor.h",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/video_frame_compositor.h",
      "fileFetched": true,
      "fileSha256": "b1f0e4f2c3b15f6651e1c7cd5d5f39a9476c216f87345d55ae578f33e39ff435",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "compositor-sink",
          "kind": "class-definition",
          "found": true,
          "matches": [
            {
              "line": 66,
              "text": "class PLATFORM_EXPORT VideoFrameCompositor : public media::VideoRendererSink,",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/media/video_frame_compositor.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/video_frame_compositor.cc",
      "fileFetched": true,
      "fileSha256": "df07b3ea5da3546a1737c6e320715f2536cdab95d814df9ef7e93a48d9c107c1",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "compositor-render",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 470,
              "text": "callback_->Render(deadline_min, deadline_max, mode), deadline_min, false);",
              "function": "VideoFrameCompositor::CallRender",
              "functionLine": 436
            }
          ]
        },
        {
          "id": "compositor-submitter",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 82,
              "text": "submitter_->Initialize(this, /* is_media_stream = */ false);",
              "function": "VideoFrameCompositor::InitializeSubmitter",
              "functionLine": 80
            }
          ]
        }
      ],
      "errors": []
    },
    {
      "path": "third_party/blink/renderer/platform/graphics/video_frame_submitter.cc",
      "revision": "8c7b7ff9514f38006379aa1ae3115eae9faae71c",
      "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc",
      "fileFetched": true,
      "fileSha256": "ae83f2820f435aaff22afb7f16e7cf24c8a1933fcdf06e4a982d980af43b5747",
      "symbolsFound": true,
      "symbolEvidence": [
        {
          "id": "submit-frame",
          "kind": "call-in-function",
          "found": true,
          "matches": [
            {
              "line": 853,
              "text": "compositor_frame_sink_->SubmitCompositorFrame(",
              "function": "VideoFrameSubmitter::SubmitFrame",
              "functionLine": 771
            }
          ]
        }
      ],
      "errors": []
    }
  ],
  "relations": [
    {
      "id": "player-controller",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "player-start",
        "controller-class"
      ],
      "relationEvidence": [
        {
          "rule": "player-start",
          "path": "third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "matches": [
            {
              "line": 3070,
              "text": "pipeline_controller_->Start(start_type, demuxer, this, is_streaming,",
              "function": "WebMediaPlayerImpl::OnDemuxerCreated",
              "functionLine": 3057
            }
          ]
        },
        {
          "rule": "controller-class",
          "path": "media/filters/pipeline_controller.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/pipeline_controller.h",
          "matches": [
            {
              "line": 33,
              "text": "class MEDIA_EXPORT PipelineController {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "url-source",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "player-source"
      ],
      "relationEvidence": [
        {
          "rule": "player-source",
          "path": "third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "matches": [
            {
              "line": 991,
              "text": "auto data_source = std::make_unique<MultiBufferDataSource>(",
              "function": "WebMediaPlayerImpl::DoLoad",
              "functionLine": 925
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "source-manager",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "player-manager"
      ],
      "relationEvidence": [
        {
          "rule": "player-manager",
          "path": "third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "matches": [
            {
              "line": 1001,
              "text": "demuxer_manager_->SetDataSource(std::move(data_source));",
              "function": "WebMediaPlayerImpl::DoLoad",
              "functionLine": 925
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "source-ffmpeg",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "manager-ffmpeg",
        "manager-source",
        "manager-choice",
        "ffmpeg-class"
      ],
      "relationEvidence": [
        {
          "rule": "manager-ffmpeg",
          "path": "media/filters/demuxer_manager.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/demuxer_manager.cc",
          "matches": [
            {
              "line": 411,
              "text": "return std::make_unique<FFmpegDemuxer>(",
              "function": "DemuxerManager::CreateFFmpegDemuxer",
              "functionLine": 409
            }
          ]
        },
        {
          "rule": "manager-source",
          "path": "media/filters/demuxer_manager.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/demuxer_manager.cc",
          "matches": [
            {
              "line": 412,
              "text": "media_task_runner_, data_source_.get(),",
              "function": "DemuxerManager::CreateFFmpegDemuxer",
              "functionLine": 409
            }
          ]
        },
        {
          "rule": "manager-choice",
          "path": "media/filters/demuxer_manager.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/demuxer_manager.cc",
          "matches": [
            {
              "line": 272,
              "text": "SetDemuxer(CreateFFmpegDemuxer());",
              "function": "DemuxerManager::CreateDemuxer",
              "functionLine": 235
            }
          ]
        },
        {
          "rule": "ffmpeg-class",
          "path": "media/filters/ffmpeg_demuxer.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/ffmpeg_demuxer.h",
          "matches": [
            {
              "line": 206,
              "text": "class MEDIA_EXPORT FFmpegDemuxer : public Demuxer {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "ffmpeg-streams",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "ffmpeg-stream"
      ],
      "relationEvidence": [
        {
          "rule": "ffmpeg-stream",
          "path": "media/filters/ffmpeg_demuxer.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/ffmpeg_demuxer.h",
          "matches": [
            {
              "line": 65,
              "text": "class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "mse-buffer",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "media-source-buffer",
        "append-entry"
      ],
      "relationEvidence": [
        {
          "rule": "media-source-buffer",
          "path": "third_party/blink/renderer/modules/mediasource/media_source.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/media_source.cc",
          "matches": [
            {
              "line": 400,
              "text": "auto* buffer = MakeGarbageCollected<SourceBuffer>(",
              "function": "MediaSource::AddSourceBuffer_Locked",
              "functionLine": 368
            }
          ]
        },
        {
          "rule": "append-entry",
          "path": "third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "matches": [
            {
              "line": 593,
              "text": "AppendBufferInternal(data->ByteSpan(), exception_state);",
              "function": "SourceBuffer::appendBuffer",
              "functionLine": 588
            },
            {
              "line": 601,
              "text": "AppendBufferInternal(data->ByteSpan(), exception_state);",
              "function": "SourceBuffer::appendBuffer",
              "functionLine": 596
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "buffer-web",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "buffer-interface",
        "web-buffer-factory",
        "web-buffer-class"
      ],
      "relationEvidence": [
        {
          "rule": "buffer-interface",
          "path": "third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "matches": [
            {
              "line": 1968,
              "text": "if (!web_source_buffer_->AppendToParseBuffer(data)) {",
              "function": "SourceBuffer::AppendBufferInternal_Locked",
              "functionLine": 1949
            }
          ]
        },
        {
          "rule": "web-buffer-factory",
          "path": "third_party/blink/renderer/platform/media/web_media_source_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_source_impl.cc",
          "matches": [
            {
              "line": 43,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 33
            },
            {
              "line": 57,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 48
            },
            {
              "line": 71,
              "text": "return std::make_unique<WebSourceBufferImpl>(id, demuxer_);",
              "function": "WebMediaSourceImpl::AddSourceBuffer",
              "functionLine": 62
            }
          ]
        },
        {
          "rule": "web-buffer-class",
          "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
          "matches": [
            {
              "line": 27,
              "text": "class WebSourceBufferImpl : public WebSourceBuffer {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "web-chunk",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "web-buffer-append",
        "web-buffer-type",
        "chunk-class"
      ],
      "relationEvidence": [
        {
          "rule": "web-buffer-append",
          "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
          "matches": [
            {
              "line": 142,
              "text": "return demuxer_->AppendToParseBuffer(id_, data);",
              "function": "WebSourceBufferImpl::AppendToParseBuffer",
              "functionLine": 140
            }
          ]
        },
        {
          "rule": "web-buffer-type",
          "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.h",
          "matches": [
            {
              "line": 70,
              "text": "raw_ptr<media::ChunkDemuxer, DanglingUntriaged> demuxer_;",
              "function": null,
              "functionLine": null
            }
          ]
        },
        {
          "rule": "chunk-class",
          "path": "media/filters/chunk_demuxer.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/chunk_demuxer.h",
          "matches": [
            {
              "line": 205,
              "text": "class MEDIA_EXPORT ChunkDemuxer : public Demuxer {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "mse-parse-async",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "buffer-async",
        "buffer-parser",
        "web-buffer-parser"
      ],
      "relationEvidence": [
        {
          "rule": "buffer-async",
          "path": "third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "matches": [
            {
              "line": 1987,
              "text": "BindOnce(&SourceBuffer::AppendBufferAsyncPart, WrapPersistent(this)));",
              "function": "SourceBuffer::AppendBufferInternal_Locked",
              "functionLine": 1949
            }
          ]
        },
        {
          "rule": "buffer-parser",
          "path": "third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/modules/mediasource/source_buffer.cc",
          "matches": [
            {
              "line": 2103,
              "text": "web_source_buffer_->RunSegmentParserLoop(&timestamp_offset_);",
              "function": "SourceBuffer::AppendBufferAsyncPart_Locked",
              "functionLine": 2081
            }
          ]
        },
        {
          "rule": "web-buffer-parser",
          "path": "third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_source_buffer_impl.cc",
          "matches": [
            {
              "line": 149,
              "text": "demuxer_->RunSegmentParserLoop(id_, append_window_start_,",
              "function": "WebSourceBufferImpl::RunSegmentParserLoop",
              "functionLine": 145
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "chunk-selected",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "manager-chunk",
        "chunk-class"
      ],
      "relationEvidence": [
        {
          "rule": "manager-chunk",
          "path": "media/filters/demuxer_manager.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/demuxer_manager.cc",
          "matches": [
            {
              "line": 396,
              "text": "return std::make_unique<ChunkDemuxer>(",
              "function": "DemuxerManager::CreateChunkDemuxer",
              "functionLine": 395
            }
          ]
        },
        {
          "rule": "chunk-class",
          "path": "media/filters/chunk_demuxer.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/chunk_demuxer.h",
          "matches": [
            {
              "line": 205,
              "text": "class MEDIA_EXPORT ChunkDemuxer : public Demuxer {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "chunk-streams",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "chunk-stream"
      ],
      "relationEvidence": [
        {
          "rule": "chunk-stream",
          "path": "media/filters/chunk_demuxer.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/chunk_demuxer.h",
          "matches": [
            {
              "line": 39,
              "text": "class MEDIA_EXPORT ChunkDemuxerStream : public DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "decoder-read",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "stream-read",
        "demuxer-stream-class"
      ],
      "relationEvidence": [
        {
          "rule": "stream-read",
          "path": "media/filters/decoder_stream.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/decoder_stream.cc",
          "matches": [
            {
              "line": 790,
              "text": "stream_->Read(buffer_read_count,",
              "function": "DecoderStream<StreamType>::ReadFromDemuxerStream",
              "functionLine": 756
            }
          ]
        },
        {
          "rule": "demuxer-stream-class",
          "path": "media/base/demuxer_stream.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/base/demuxer_stream.h",
          "matches": [
            {
              "line": 30,
              "text": "class MEDIA_EXPORT DemuxerStream {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "decoder-decode",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "stream-decode",
        "decoder-class"
      ],
      "relationEvidence": [
        {
          "rule": "stream-decode",
          "path": "media/filters/decoder_stream.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/filters/decoder_stream.cc",
          "matches": [
            {
              "line": 578,
              "text": "decoder_->Decode(",
              "function": "DecoderStream<StreamType>::DecodeInternal",
              "functionLine": 542
            }
          ]
        },
        {
          "rule": "decoder-class",
          "path": "media/base/video_decoder.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/base/video_decoder.h",
          "matches": [
            {
              "line": 27,
              "text": "class MEDIA_EXPORT VideoDecoder : public Decoder {",
              "function": null,
              "functionLine": null
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "renderer-video",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "renderer-init",
        "factory-video",
        "factory-renderer"
      ],
      "relationEvidence": [
        {
          "rule": "renderer-init",
          "path": "media/renderers/renderer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl.cc",
          "matches": [
            {
              "line": 481,
              "text": "video_renderer_->Initialize(",
              "function": "RendererImpl::InitializeVideoRenderer",
              "functionLine": 450
            }
          ]
        },
        {
          "rule": "factory-video",
          "path": "media/renderers/renderer_impl_factory.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl_factory.cc",
          "matches": [
            {
              "line": 119,
              "text": "std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        },
        {
          "rule": "factory-renderer",
          "path": "media/renderers/renderer_impl_factory.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl_factory.cc",
          "matches": [
            {
              "line": 133,
              "text": "return std::make_unique<RendererImpl>(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "video-decoderstream",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "video-stream-init",
        "video-read",
        "video-ready-cb"
      ],
      "relationEvidence": [
        {
          "rule": "video-stream-init",
          "path": "media/renderers/video_renderer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/video_renderer_impl.cc",
          "matches": [
            {
              "line": 220,
              "text": "video_decoder_stream_->Initialize(",
              "function": "VideoRendererImpl::Initialize",
              "functionLine": 165
            }
          ]
        },
        {
          "rule": "video-read",
          "path": "media/renderers/video_renderer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/video_renderer_impl.cc",
          "matches": [
            {
              "line": 829,
              "text": "video_decoder_stream_->Read(",
              "function": "VideoRendererImpl::AttemptRead_Locked",
              "functionLine": 816
            }
          ]
        },
        {
          "rule": "video-ready-cb",
          "path": "media/renderers/video_renderer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/video_renderer_impl.cc",
          "matches": [
            {
              "line": 830,
              "text": "base::BindOnce(&VideoRendererImpl::FrameReady,",
              "function": "VideoRendererImpl::AttemptRead_Locked",
              "functionLine": 816
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "sink-render",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "video-sink",
        "compositor-sink",
        "compositor-render",
        "player-renderer-sink",
        "factory-video",
        "factory-renderer"
      ],
      "relationEvidence": [
        {
          "rule": "video-sink",
          "path": "media/renderers/video_renderer_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/video_renderer_impl.cc",
          "matches": [
            {
              "line": 916,
              "text": "sink_->Start(this);",
              "function": "VideoRendererImpl::StartSink",
              "functionLine": 911
            }
          ]
        },
        {
          "rule": "compositor-sink",
          "path": "third_party/blink/renderer/platform/media/video_frame_compositor.h",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/video_frame_compositor.h",
          "matches": [
            {
              "line": 66,
              "text": "class PLATFORM_EXPORT VideoFrameCompositor : public media::VideoRendererSink,",
              "function": null,
              "functionLine": null
            }
          ]
        },
        {
          "rule": "compositor-render",
          "path": "third_party/blink/renderer/platform/media/video_frame_compositor.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/video_frame_compositor.cc",
          "matches": [
            {
              "line": 470,
              "text": "callback_->Render(deadline_min, deadline_max, mode), deadline_min, false);",
              "function": "VideoFrameCompositor::CallRender",
              "functionLine": 436
            }
          ]
        },
        {
          "rule": "player-renderer-sink",
          "path": "third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/web_media_player_impl.cc",
          "matches": [
            {
              "line": 3042,
              "text": "return renderer_factory_selector_->GetCurrentFactory()->CreateRenderer(",
              "function": "WebMediaPlayerImpl::CreateRenderer",
              "functionLine": 2998
            }
          ]
        },
        {
          "rule": "factory-video",
          "path": "media/renderers/renderer_impl_factory.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl_factory.cc",
          "matches": [
            {
              "line": 119,
              "text": "std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        },
        {
          "rule": "factory-renderer",
          "path": "media/renderers/renderer_impl_factory.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/media/renderers/renderer_impl_factory.cc",
          "matches": [
            {
              "line": 133,
              "text": "return std::make_unique<RendererImpl>(",
              "function": "RendererImplFactory::CreateRenderer",
              "functionLine": 80
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "compositor-submitter",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "compositor-submitter"
      ],
      "relationEvidence": [
        {
          "rule": "compositor-submitter",
          "path": "third_party/blink/renderer/platform/media/video_frame_compositor.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/media/video_frame_compositor.cc",
          "matches": [
            {
              "line": 82,
              "text": "submitter_->Initialize(this, /* is_media_stream = */ false);",
              "function": "VideoFrameCompositor::InitializeSubmitter",
              "functionLine": 80
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    },
    {
      "id": "frame-submit",
      "relationVerified": true,
      "status": "SOURCE_SUPPORTED",
      "requiredRules": [
        "submit-frame"
      ],
      "relationEvidence": [
        {
          "rule": "submit-frame",
          "path": "third_party/blink/renderer/platform/graphics/video_frame_submitter.cc",
          "url": "https://chromium.googlesource.com/chromium/src/+/8c7b7ff9514f38006379aa1ae3115eae9faae71c/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc",
          "matches": [
            {
              "line": 853,
              "text": "compositor_frame_sink_->SubmitCompositorFrame(",
              "function": "VideoFrameSubmitter::SubmitFrame",
              "functionLine": 771
            }
          ]
        }
      ],
      "runtimeStatus": "NOT RUN"
    }
  ],
  "pendingRelations": [
    "HTMLMediaElement frame-client factory to concrete player: complete factory chain not checked.",
    "Final display, overlay, Tizen/mmplayer paths: not checked."
  ]
}
