From 23aa1c00c575f5a6b0d1f9c0d749d5092a38beec Mon Sep 17 00:00:00 2001 From: Stackie Jia Date: Tue, 8 Sep 2026 03:59:45 +0800 Subject: [PATCH 1/4] perf(player): reduce audio stretching and TS parsing overhead --- .../playback-engine/audio/wasm-stretcher.ts | 10 +- .../decoder/mpeg-audio-decoder.ts | 3 +- .../playback-engine/demux/ts-demuxer.test.ts | 56 ++++++++++++ .../src/playback-engine/demux/ts-demuxer.ts | 57 ++++++------ .../src/playback-engine/wasm/minimp3/Makefile | 5 +- .../wasm/minimp3/mp2_decoder.wasm | Bin 31796 -> 32865 bytes .../src/playback-engine/wasm/minimp3/wsola.c | 30 +++++- .../wasm/minimp3/wsola.test.ts | 86 ++++++++++++++++++ 8 files changed, 206 insertions(+), 41 deletions(-) create mode 100644 web-ui/src/playback-engine/demux/ts-demuxer.test.ts create mode 100644 web-ui/src/playback-engine/wasm/minimp3/wsola.test.ts diff --git a/web-ui/src/playback-engine/audio/wasm-stretcher.ts b/web-ui/src/playback-engine/audio/wasm-stretcher.ts index 85cf51ed..f978cf56 100644 --- a/web-ui/src/playback-engine/audio/wasm-stretcher.ts +++ b/web-ui/src/playback-engine/audio/wasm-stretcher.ts @@ -19,7 +19,8 @@ export interface Stretcher { /** Input frames consumed for emitted output since reset (fractional). */ readonly position: number; setRatio(ratio: number): void; - /** Feed interleaved PCM, get stretched interleaved PCM (may be empty). */ + /** Feed interleaved PCM, get stretched interleaved PCM (may be empty). + * The returned view is borrowed; consume it before the next process call. */ process(input: Float32Array): Float32Array; reset(): void; destroy(): void; @@ -128,10 +129,9 @@ export class WasmStretcher implements Stretcher { return new Float32Array(0); } - const view = new Float32Array(this.exports.memory.buffer, this.outPtr, outFrames * ch); - const out = new Float32Array(outFrames * ch); - out.set(view); - return out; + // scheduleOutput consumes this synchronously into an AudioBuffer. Keeping + // a borrowed view avoids copying every PCM chunk into a temporary JS array. + return new Float32Array(this.exports.memory.buffer, this.outPtr, outFrames * ch); } reset(): void { diff --git a/web-ui/src/playback-engine/decoder/mpeg-audio-decoder.ts b/web-ui/src/playback-engine/decoder/mpeg-audio-decoder.ts index e2c84958..e4d82de8 100644 --- a/web-ui/src/playback-engine/decoder/mpeg-audio-decoder.ts +++ b/web-ui/src/playback-engine/decoder/mpeg-audio-decoder.ts @@ -8,8 +8,7 @@ * and keeps trailing partial frames in an internal carry buffer, so frames * split across PES packets are handled transparently. * - * The WASM is built as standalone (`-o .wasm`) with -O2 to preserve - * readable export/import names. + * The WASM is built as standalone (`-o .wasm`), retaining its public exports. */ // Maximum samples per frame for MPEG audio (all channels interleaved) diff --git a/web-ui/src/playback-engine/demux/ts-demuxer.test.ts b/web-ui/src/playback-engine/demux/ts-demuxer.test.ts new file mode 100644 index 00000000..32b55df8 --- /dev/null +++ b/web-ui/src/playback-engine/demux/ts-demuxer.test.ts @@ -0,0 +1,56 @@ +import { describe, expect, it, vi } from "vitest"; +import TSDemuxer from "./ts-demuxer"; + +function section(pid: number, bytes: number[]): Uint8Array { + const packet = new Uint8Array(188).fill(0xff); + packet.set([0x47, 0x40 | (pid >> 8), pid & 255, 0x10, 0, ...bytes]); + return packet; +} +function pcrPacket(base: number, discontinuity = false): Uint8Array { + const packet = new Uint8Array(188).fill(0xff); + packet.set([0x47, 1, 1, 0x20, 183, discontinuity ? 0x90 : 0x10]); + packet.set( + [ + Math.floor(base / 2 ** 25), + Math.floor(base / 2 ** 17) & 255, + Math.floor(base / 2 ** 9) & 255, + Math.floor(base / 2) & 255, + ((base % 2) << 7) | 0x7e, + 0, + ], + 6, + ); + return packet; +} +function transport(packets: Uint8Array[], stride: number): Uint8Array { + const output = new Uint8Array(packets.length * stride); + packets.forEach((packet, i) => { + output.set(packet, i * stride + (stride === 192 ? 4 : 0)); + }); + return output; +} + +describe("TS packet offsets", () => { + it.each([188, 192, 204])("reads PCR and discontinuity flags with %i-byte packets", (stride) => { + // A single-program PAT/PMT declares PID 257 as the PCR/video PID. + const pat = section(0, [0, 0xb0, 13, 0, 1, 0xc1, 0, 0, 0, 1, 0xe1, 0, 0, 0, 0, 0]); + const pmt = section(256, [2, 0xb0, 18, 0, 1, 0xc1, 0, 0, 0xe1, 1, 0xf0, 0, 0x1b, 0xe1, 1, 0xf0, 0, 0, 0, 0, 0]); + const packets = [pat, pmt, pcrPacket(2 ** 33 - 90000), pcrPacket(0, true), pcrPacket(90000)]; + const bytes = transport(packets, stride); + const demux = new TSDemuxer({ match: true, ts_packet_size: stride, sync_offset: 0 }); + demux.onError = vi.fn(); + demux.onTrackMetadata = vi.fn(); + demux.onDataAvailable = vi.fn(); + const pcr = vi.fn(); + demux.onPcr = pcr; + // The second call starts at a nonzero byteOffset in the same allocation. + expect(demux.parseChunks(bytes.subarray(0, stride * 3), 1000)).toBe(stride * 3); + expect(demux.parseChunks(bytes.subarray(stride * 3), 1000 + stride * 3)).toBe(stride * 2); + expect(pcr.mock.calls).toEqual([ + [2 ** 33 - 90000, 1000 + stride * 2, false], + [2 ** 33, 1000 + stride * 3, true], + [2 ** 33 + 90000, 1000 + stride * 4, false], + ]); + expect(demux.onError).not.toHaveBeenCalled(); + }); +}); diff --git a/web-ui/src/playback-engine/demux/ts-demuxer.ts b/web-ui/src/playback-engine/demux/ts-demuxer.ts index 62f11bfc..5215eb5e 100644 --- a/web-ui/src/playback-engine/demux/ts-demuxer.ts +++ b/web-ui/src/playback-engine/demux/ts-demuxer.ts @@ -49,11 +49,6 @@ interface TSSliceMisc { stream_type?: StreamType; } -type AdaptationFieldInfo = { - discontinuity_indicator?: number; - random_access_indicator?: number; - elementary_stream_priority_indicator?: number; -}; type CommonPidKey = keyof PMT["common_pids"]; type TSDemuxerOptions = { waitForInitialVideoKeyframe?: boolean; @@ -317,7 +312,11 @@ class TSDemuxer { private isCommonPid(pid: number, keys: readonly CommonPidKey[]): boolean { const commonPids = this.pmt_?.common_pids; - return !!commonPids && keys.some((key) => commonPids[key] === pid); + if (!commonPids) return false; + for (const key of keys) { + if (commonPids[key] === pid) return true; + } + return false; } private isVideoPid(pid: number): boolean { @@ -460,38 +459,36 @@ class TSDemuxer { offset += 4; } - const data = chunk.subarray(offset, offset + 188); - - const sync_byte = data[0]; + const sync_byte = chunk[offset]; if (sync_byte !== 0x47) { Log.e(this.TAG, `sync_byte = ${sync_byte}, not 0x47`); break; } - const payload_unit_start_indicator = (data[1] & 0x40) >>> 6; - const pid = ((data[1] & 0x1f) << 8) | data[2]; - const adaptation_field_control = (data[3] & 0x30) >>> 4; - const continuity_conunter = data[3] & 0x0f; + const payload_unit_start_indicator = (chunk[offset + 1] & 0x40) >>> 6; + const pid = ((chunk[offset + 1] & 0x1f) << 8) | chunk[offset + 2]; + const adaptation_field_control = (chunk[offset + 3] & 0x30) >>> 4; + const continuity_conunter = chunk[offset + 3] & 0x0f; const is_pcr_pid: boolean = !!(this.pmt_ && this.pmt_.pcr_pid === pid); - const adaptation_field_info: AdaptationFieldInfo = {}; + let discontinuityIndicator: number | undefined; + let randomAccessIndicator: number | undefined; let ts_payload_start_index = 4; if (adaptation_field_control === 0x02 || adaptation_field_control === 0x03) { // Adaptation field exists along with / without payload - const adaptation_field_length = data[4]; + const adaptation_field_length = chunk[offset + 4]; if (adaptation_field_length > 0 && (is_pcr_pid || adaptation_field_control === 0x03)) { // Parse adaptation field - adaptation_field_info.discontinuity_indicator = (data[5] & 0x80) >>> 7; - adaptation_field_info.random_access_indicator = (data[5] & 0x40) >>> 6; - adaptation_field_info.elementary_stream_priority_indicator = (data[5] & 0x20) >>> 5; + discontinuityIndicator = (chunk[offset + 5] & 0x80) >>> 7; + randomAccessIndicator = (chunk[offset + 5] & 0x40) >>> 6; - const PCR_flag = (data[5] & 0x10) >>> 4; + const PCR_flag = (chunk[offset + 5] & 0x10) >>> 4; if (PCR_flag) { // track PCR base for pts/dts wraparound detection - const pcrBase = this.getPcrBase(data); + const pcrBase = this.getPcrBase(chunk, offset); if (is_pcr_pid) { - this.onPcr?.(pcrBase, file_position, adaptation_field_info.discontinuity_indicator === 1); + this.onPcr?.(pcrBase, file_position, discontinuityIndicator === 1); } } } @@ -521,7 +518,7 @@ class TSDemuxer { file_position, payload_unit_start_indicator, continuity_conunter, - random_access_indicator: adaptation_field_info.random_access_indicator, + random_access_indicator: randomAccessIndicator, }); } else if (this.pmt_ !== undefined && this.pmt_.pid_stream_type[pid] !== undefined) { // PES @@ -530,7 +527,7 @@ class TSDemuxer { // process PES only for known common_pids if (this.isMediaPid(pid)) { - if (!this.shouldProcessPayload(pid, continuity_conunter, adaptation_field_info.discontinuity_indicator)) { + if (!this.shouldProcessPayload(pid, continuity_conunter, discontinuityIndicator)) { offset += 188; if (this.ts_packet_size_ === 204) { offset += 16; @@ -543,7 +540,7 @@ class TSDemuxer { file_position, payload_unit_start_indicator, continuity_conunter, - random_access_indicator: adaptation_field_info.random_access_indicator, + random_access_indicator: randomAccessIndicator, }); } } @@ -2150,13 +2147,13 @@ class TSDemuxer { this.video_metadata_changed_ = false; } - private getPcrBase(data: Uint8Array): number { + private getPcrBase(data: Uint8Array, offset: number): number { let pcr_base = - data[6] * 33554432 + // 1 << 25 - data[7] * 131072 + // 1 << 17 - data[8] * 512 + // 1 << 9 - data[9] * 2 + // 1 << 1 - (data[10] & 0x80) / 128 + // 1 >> 7 + data[offset + 6] * 33554432 + // 1 << 25 + data[offset + 7] * 131072 + // 1 << 17 + data[offset + 8] * 512 + // 1 << 9 + data[offset + 9] * 2 + // 1 << 1 + (data[offset + 10] & 0x80) / 128 + // 1 >> 7 this.timestamp_offset_; if (pcr_base + 0x100000000 < this.last_pcr_base_) { pcr_base += 0x200000000; // pcr_base wraparound diff --git a/web-ui/src/playback-engine/wasm/minimp3/Makefile b/web-ui/src/playback-engine/wasm/minimp3/Makefile index 6c89d90b..5406be86 100644 --- a/web-ui/src/playback-engine/wasm/minimp3/Makefile +++ b/web-ui/src/playback-engine/wasm/minimp3/Makefile @@ -3,9 +3,8 @@ EMCC = emcc OUTPUT = mp2_decoder -# -O2 preserves readable export names (-O3 would minify them). -# -o .wasm produces standalone WASM with no JS glue. -EMFLAGS = -O2 \ +# Standalone WASM has no JS glue and retains the public KEEPALIVE exports. +EMFLAGS = -O3 \ -s EXPORTED_FUNCTIONS='["_malloc", "_free"]' \ -s EXPORTED_RUNTIME_METHODS='[]' \ -s ALLOW_MEMORY_GROWTH=1 \ diff --git a/web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm b/web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm index ec367c8c7741e6383833e4605e7b1a6b303fe6dc..44ddf8bee599a92d3d742d6f930cf7dea0672618 100755 GIT binary patch literal 32865 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 literal 31796 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 diff --git a/web-ui/src/playback-engine/wasm/minimp3/wsola.c b/web-ui/src/playback-engine/wasm/minimp3/wsola.c index 547a2b8f..d01868c3 100644 --- a/web-ui/src/playback-engine/wasm/minimp3/wsola.c +++ b/web-ui/src/playback-engine/wasm/minimp3/wsola.c @@ -310,7 +310,35 @@ int wsola_process(Wsola* w, const float* input, int in_frames, float* output, in int best_q = p; float best_score = -1e30f; - for (int q = lo; q <= hi; q++) { + /* Score eight adjacent candidates together. Each dot product retains + * its original summation order, while independent accumulators let + * scalar WASM overlap arithmetic and reuse the reference loads. + * Keep the exhaustive search and tie ordering (audio is unchanged). */ + int q = lo; + for (; q + 7 <= hi; q += 8) { + const float* cand = w->mix + (q - lo); + float dot[8] = {0}; + for (int i = 0; i < w->overlap; i++) { + float ref = w->tail_mono[i]; + dot[0] += ref * cand[i]; + dot[1] += ref * cand[i + 1]; + dot[2] += ref * cand[i + 2]; + dot[3] += ref * cand[i + 3]; + dot[4] += ref * cand[i + 4]; + dot[5] += ref * cand[i + 5]; + dot[6] += ref * cand[i + 6]; + dot[7] += ref * cand[i + 7]; + } + for (int j = 0; j < 8; j++) { + float cand_energy = w->energy[q + j - lo + w->overlap] - w->energy[q + j - lo]; + float score = dot[j] / sqrtf(cand_energy + 1e-9f); + if (score > best_score) { + best_score = score; + best_q = q + j; + } + } + } + for (; q <= hi; q++) { const float* cand = w->mix + (q - lo); float dot = 0.0f; for (int i = 0; i < w->overlap; i++) { diff --git a/web-ui/src/playback-engine/wasm/minimp3/wsola.test.ts b/web-ui/src/playback-engine/wasm/minimp3/wsola.test.ts new file mode 100644 index 00000000..63e6eaa8 --- /dev/null +++ b/web-ui/src/playback-engine/wasm/minimp3/wsola.test.ts @@ -0,0 +1,86 @@ +import { readFileSync } from "node:fs"; +import { beforeAll, describe, expect, it } from "vitest"; + +interface Wsola { + memory: WebAssembly.Memory; + _initialize(): void; + malloc(bytes: number): number; + wsola_create(rate: number, channels: number): number; + wsola_set_ratio(handle: number, ratio: number): void; + wsola_process(handle: number, input: number, frames: number, output: number, capacity: number): number; + wsola_reset(handle: number): void; + wsola_position(handle: number): number; +} +let module: WebAssembly.Module; +beforeAll(async () => { + module = await WebAssembly.compile(readFileSync(new URL("./mp2_decoder.wasm", import.meta.url))); +}); + +async function stretch(input: Float32Array, rate: number, channels: number, ratio: number) { + const instance = await WebAssembly.instantiate(module, { env: { emscripten_notify_memory_growth() {} } }); + const x = instance.exports as unknown as Wsola; + x._initialize(); + const handle = x.wsola_create(rate, channels); + const src = x.malloc(4096 * channels * 4); + const dst = x.malloc(16384 * channels * 4); + x.wsola_set_ratio(handle, ratio); + const chunks: Float32Array[] = []; + let count = 0; + const sizes = [1, 97, 1152, 4096, 333]; + for (let pos = 0, index = 0; pos < input.length; index++) { + const frames = Math.min(sizes[index % sizes.length], (input.length - pos) / channels); + new Float32Array(x.memory.buffer, src, frames * channels).set(input.subarray(pos, pos + frames * channels)); + const n = x.wsola_process(handle, src, frames, dst, 16384); + const output = new Float32Array(x.memory.buffer, dst, n * channels).slice(); + chunks.push(output); + count += output.length; + pos += frames * channels; + } + const output = new Float32Array(count); + let pos = 0; + for (const chunk of chunks) { + output.set(chunk, pos); + pos += chunk.length; + } + x.wsola_reset(handle); + expect(x.wsola_position(handle)).toBe(0); + expect(x.wsola_process(handle, src, 0, dst, 16384)).toBe(0); + return output; +} + +function tone(rate: number, channels: number): Float32Array { + return Float32Array.from( + { length: rate * 3 * channels }, + (_, i) => 0.4 * Math.sin((2 * Math.PI * 440 * Math.floor(i / channels)) / rate), + ); +} + +describe("WSOLA PCM contract", () => { + it.each([8000, 11025, 22050, 32000, 44100, 48000])("preserves samples at 1x, %i Hz", async (rate) => { + for (const channels of [1, 2]) { + const input = tone(rate, channels); + expect(await stretch(input, rate, channels, 1)).toEqual(input); + } + }); + + it.each([0.5, 0.9, 1.01, 1.2, 2])("preserves pitch and requested duration at %f x", async (ratio) => { + for (const rate of [11025, 44100, 48000]) { + const output = await stretch(tone(rate, 2), rate, 2, ratio); + expect(Math.abs(output.length / (rate * 2) - 3 / ratio)).toBeLessThan(0.13); + let crossings = 0; + const start = Math.floor(rate / 5) * 2; + const end = output.length - start; + for (let i = start + 2; i < end; i += 2) { + if (output[i - 2] < 0 && output[i] >= 0) crossings++; + } + expect(output.every((sample, i) => Number.isFinite(sample) && sample === output[i - (i % 2)])).toBe(true); + expect(Math.abs((crossings * rate * 2) / (end - start) - 440)).toBeLessThan(6); + } + }); + + it("keeps silence silent while correcting drift", async () => { + const output = await stretch(new Float32Array(48000 * 2), 48000, 2, 1.01); + expect(output.length).toBeGreaterThan(48000); + expect(output.every((sample) => sample === 0)).toBe(true); + }); +}); From d88f98dc21237344eb1834b6291adac9d929ac4d Mon Sep 17 00:00:00 2001 From: Stackie Jia Date: Tue, 8 Sep 2026 04:41:35 +0800 Subject: [PATCH 2/4] perf(player): stop the live indicator animation while controls are hidden --- web-ui/src/components/player/video-player.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web-ui/src/components/player/video-player.tsx b/web-ui/src/components/player/video-player.tsx index cc484a78..84adcf35 100644 --- a/web-ui/src/components/player/video-player.tsx +++ b/web-ui/src/components/player/video-player.tsx @@ -1995,9 +1995,11 @@ function VideoPlayerComponent({ className={clsx( "player-performance-controls-position player-performance-motion absolute bottom-0 left-[calc(0px_-_env(safe-area-inset-left))] right-[calc(0px_-_env(safe-area-inset-right))] z-10 transition-opacity duration-300", showSidebar && "md:right-0", + // Invisible pulse animations still wake the compositor. Restore the + // live indicator animation when pointer or keyboard controls appear. showControls ? "opacity-100" - : "opacity-0 pointer-events-none has-focus-visible:opacity-100 has-focus-visible:pointer-events-auto", + : "opacity-0 pointer-events-none has-focus-visible:opacity-100 has-focus-visible:pointer-events-auto [&_.animate-pulse]:animate-none has-focus-visible:[&_.animate-pulse]:animate-pulse", )} > Date: Tue, 8 Sep 2026 05:02:56 +0800 Subject: [PATCH 3/4] test(player): add reproducible CPU benchmarks and measured results --- tools/player-benchmark/README.md | 83 + tools/player-benchmark/build.mjs | 21 + tools/player-benchmark/demux-benchmark.ts | 48 + tools/player-benchmark/index.html | 9 + tools/player-benchmark/main.ts | 20 + tools/player-benchmark/measure.mjs | 172 + tools/player-benchmark/results.json | 10187 ++++++++++++++++++++ tools/player-benchmark/results.md | 92 + tools/player-benchmark/serve.mjs | 112 + tools/player-benchmark/wasm-benchmark.mjs | 46 + 10 files changed, 10790 insertions(+) create mode 100644 tools/player-benchmark/README.md create mode 100644 tools/player-benchmark/build.mjs create mode 100644 tools/player-benchmark/demux-benchmark.ts create mode 100644 tools/player-benchmark/index.html create mode 100644 tools/player-benchmark/main.ts create mode 100644 tools/player-benchmark/measure.mjs create mode 100644 tools/player-benchmark/results.json create mode 100644 tools/player-benchmark/results.md create mode 100644 tools/player-benchmark/serve.mjs create mode 100644 tools/player-benchmark/wasm-benchmark.mjs diff --git a/tools/player-benchmark/README.md b/tools/player-benchmark/README.md new file mode 100644 index 00000000..c752c2cf --- /dev/null +++ b/tools/player-benchmark/README.md @@ -0,0 +1,83 @@ +# 播放器性能测量 + +使用真实 MPEG-TS 录制片段按 PCR 时钟回放,比较播放器整个浏览器进程组的 CPU 时间。测试页使用正式 MSE playback backend,启用 MP2 WASM 软解、关闭画质增强和反交错,不引入仅在安全上下文可用的 API。普通局域网 HTTP 地址可直接测试。 + +## 构建和回放 + +先录制至少两分钟的真实节目。保留原始 TS 字节,不转码。录制文件需要包含 PCR,并使用 188 字节 TS 包。录像不应提交进仓库。 + +```sh +curl 'http://your-server/path/to/channel' --max-time 180 -o /tmp/program.ts +node tools/player-benchmark/build.mjs /tmp/player-bench/current +node tools/player-benchmark/serve.mjs /tmp/player-bench /tmp/program.ts 8766 +``` + +`curl` 在直播录制达到 `--max-time` 时以超时结束属正常情况;仍需检查文件有效。用 `ffprobe` 确认分辨率、扫描方式和 MP2 音轨。 + +打开 `http://localhost:8766/current/tools/player-benchmark/index.html`。异机 HTTP 验证时将 localhost 换成服务器的局域网地址。`source` 查询参数可以指定真实直播地址,例如 `?source=`。默认播放同源 `/stream`,每次连接都从同一段节目开头按原 PCR 节奏回放。`/stream?speed=1.2` 可提供持续追直播的输入速率。 + +对修改前后版本分别构建到不同目录,再由同一个回放服务提供。不要让两个播放器同时运行。 + +## 测量浏览器 CPU + +使用独立浏览器用户目录,避免把日常标签页和插件计入结果。例如 macOS Chrome: + +```sh +'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' \ + --user-data-dir=/tmp/player-bench-chrome --remote-debugging-port=9223 \ + --no-first-run --no-default-browser-check \ + --autoplay-policy=no-user-gesture-required \ + --disable-background-networking --disable-component-update \ + --window-size=1280,720 about:blank + +node tools/player-benchmark/measure.mjs \ + http://localhost:8766/current/tools/player-benchmark/index.html \ + /tmp/player-result.json 60 +``` + +脚本预热 20 秒后,累计浏览器、渲染器(含 worker)、GPU、网络和音频服务进程的 CPU 时间,100% 表示占满一个逻辑 CPU。它同时保存实际播放时间、丢帧数、可见状态、音轨/视频解码器信息及播放器日志。检查是否真实播放、MP2 是否启用、是否走同一种视频解码路径,再比较 CPU。采用 A/B/B/A 顺序并保持窗口大小、可见性、节目片段和测量区间一致。 + +脚本要求日志中出现 MP2 解码器初始化成功。播放重连、媒体错误、时钟倒退、页面隐藏或进程集合变化会令测量失败;失败轮次不应计入对比。完整播放器页面需要开启日志(当前页面默认已开启),关闭画质增强和反交错,并在两版使用相同外观。也可以将以下内容保存为 `/tmp/player-setup.js`,作为脚本第五个参数传入;它会在页面初始化前执行,并随测量结果保存: + +```js +localStorage.setItem("rtp2httpd-player-auto-deinterlace", "false"); +localStorage.setItem("rtp2httpd-player-picture-enhancement", "false"); +localStorage.setItem("rtp2httpd-player-appearance", "fancy"); +``` + +```sh +node tools/player-benchmark/measure.mjs \ + http://your-server/player.html /tmp/full-player.json 60 9223 /tmp/player-setup.js +``` + +**采样剖析与 CPU 对比应分开运行。** DevTools CPU profiler 本身会增加开销。不能把 JavaScript 采样占比、单函数加速比、渲染器 CPU 或服务器 CPU 当成整页 CPU 降幅。启动丢帧和稳定测量区间内的丢帧也应分开统计。 + +## 定位局部开销 + +解复用/封装基准会测试不同网络分块尺寸,并输出媒体及 MP2 数据的 SHA-256;对相同输入,修改前后的摘要必须一致: + +```sh +node tools/player-benchmark/build.mjs /tmp/player-demux demux +node /tmp/player-demux/demux-benchmark.js /tmp/program.ts +``` + +WSOLA 基准需要 48 kHz、双声道 float32 PCM。下面仅转换音频测试输入,不用于整页回放: + +```sh +ffmpeg -i /tmp/program.ts -t 30 -vn -ar 48000 -ac 2 -f f32le /tmp/program.f32 +node tools/player-benchmark/wasm-benchmark.mjs /tmp/program.f32 \ + /tmp/baseline.wasm web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm +``` + +它在 1×、0.9×、1.01×、1.2×、2× 下测量,并断言输出逐字节一致。使用正式基线构建中的 WASM 文件。单元测试另覆盖不同采样率、单/双声道、细碎输入、静音、变速后的时长/音调及 reset。 + +## 已验证的取舍 + +- 穷举 WSOLA 搜索保留所有候选位置;同时计算八个相邻候选,保持每个相关性累加和并列结果的顺序。避免通过缩小搜索范围或抽样来换取速度和音质损失。 +- TS 头直接从输入缓冲区读取,减少每包临时视图、对象和闭包;仍保留 188/192/204 字节包处理、PCR 回绕和 discontinuity 标记。 +- 拉伸结果同步写入 AudioBuffer,使用借用的 WASM 视图,省去中间 PCM 复制。不可在下次 process 后保留该视图。 +- 保留 MSE 静音音轨、现有音画同步、变速、后台恢复和 HTTP 支持。移除静音音轨会影响后台播放,不能只为 CPU 数字取消。 +- 控件隐藏时停止直播圆点动画,避免不可见动画持续唤醒合成器;鼠标/触摸显示控件以及键盘聚焦时恢复动画,保留玻璃外观。 +- 测过 SIMD 构建和更大的展开宽度;额外收益很小且增加兼容分支或代码量,未采用。测试更大的 Web Audio latency hint 后未发现可靠的整页收益,也未改变默认延迟。 + +本次真实节目与测量数据见 [results.md](results.md)。 diff --git a/tools/player-benchmark/build.mjs b/tools/player-benchmark/build.mjs new file mode 100644 index 00000000..1c72b5c2 --- /dev/null +++ b/tools/player-benchmark/build.mjs @@ -0,0 +1,21 @@ +import { resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { build } from "vite"; + +const root = fileURLToPath(new URL("../../", import.meta.url)); +if (!process.argv[2]) throw new Error("Usage: node tools/player-benchmark/build.mjs "); +const demux = process.argv[3] === "demux"; +await build({ + root, + configFile: false, + base: "./", + build: { + ssr: demux, + outDir: resolve(process.argv[2]), + emptyOutDir: true, + sourcemap: true, + rolldownOptions: { + input: resolve(root, demux ? "tools/player-benchmark/demux-benchmark.ts" : "tools/player-benchmark/index.html"), + }, + }, +}); diff --git a/tools/player-benchmark/demux-benchmark.ts b/tools/player-benchmark/demux-benchmark.ts new file mode 100644 index 00000000..5f46aa33 --- /dev/null +++ b/tools/player-benchmark/demux-benchmark.ts @@ -0,0 +1,48 @@ +import { createHash } from "node:crypto"; +import fs from "node:fs"; + +Object.defineProperty(globalThis, "self", { value: globalThis, configurable: true }); +const { default: TSDemuxer } = await import("../../web-ui/src/playback-engine/demux/ts-demuxer"); +const { default: MP4Remuxer } = await import("../../web-ui/src/playback-engine/remux/mp4-remuxer"); +const { default: Log } = await import("../../web-ui/src/playback-engine/utils/logger"); +Log.setLogLevel(0); + +if (!process.argv[2]) throw new Error("Pass a TS recording path"); +const input = fs.readFileSync(process.argv[2]); +const sizes = [1316, 18800, 65536]; +for (const size of sizes) { + const times = []; + let digest = ""; + for (let repeat = 0; repeat < 5; repeat++) { + const probe = TSDemuxer.probe(input); + const demux = new TSDemuxer(probe); + const remux = new MP4Remuxer({}); + const hash = createHash("sha256"); + demux.onError = (t, i) => { + throw Error(`${t}:${i}`); + }; + demux.onRawAudioData = (f) => { + if (repeat === 4) hash.update(f.data); + }; + remux.bindDataSource(demux as never); + remux.onInitSegment = (_t, s) => { + if (repeat === 4) hash.update(new Uint8Array(s.data)); + }; + remux.onMediaSegment = (_t, s) => { + if (repeat === 4) hash.update(new Uint8Array(s.data)); + }; + let used = 0; + const t = performance.now(); + while (used + 188 <= input.length) { + const data = input.subarray(used, Math.min(input.length, used + size)); + const consumed = demux.parseChunks(data, used); + if (!consumed) throw Error("No progress"); + used += consumed; + } + demux.flushSegmentBoundary(); + remux.flushStashedSamples(); + times.push(performance.now() - t); + digest = hash.digest("hex"); + } + console.log(JSON.stringify({ size, ms: times.slice(1, 4), digest })); +} diff --git a/tools/player-benchmark/index.html b/tools/player-benchmark/index.html new file mode 100644 index 00000000..270582d8 --- /dev/null +++ b/tools/player-benchmark/index.html @@ -0,0 +1,9 @@ + + + Player CPU benchmark + + + + + + diff --git a/tools/player-benchmark/main.ts b/tools/player-benchmark/main.ts new file mode 100644 index 00000000..e8c51575 --- /dev/null +++ b/tools/player-benchmark/main.ts @@ -0,0 +1,20 @@ +import { createMSEPlaybackBackend } from "../../web-ui/src/playback-engine"; +import mp2 from "../../web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm?url"; + +const video = document.querySelector("video"); +if (!video) throw new Error("Missing benchmark video element"); +const params = new URLSearchParams(location.search); +const player = createMSEPlaybackBackend(video, { + wasmDecoders: { mp2 }, + autoDeinterlace: false, + pictureEnhancement: false, + logLevel: 4, + liveSync: true, +}); +const events: unknown[] = []; +player.on("error", (e) => events.push({ type: "error", e })); +player.on("media-info", (e) => events.push({ type: "media-info", e })); +player.on("playback-state-change", (e) => events.push({ type: e, time: video.currentTime })); +Object.assign(window, { player, events, video }); +player.loadSegments([{ url: params.get("source") ?? "/stream" }]); +void player.play(); diff --git a/tools/player-benchmark/measure.mjs b/tools/player-benchmark/measure.mjs new file mode 100644 index 00000000..42bb4e0a --- /dev/null +++ b/tools/player-benchmark/measure.mjs @@ -0,0 +1,172 @@ +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import { dirname, resolve } from "node:path"; + +const [url, output, durationArg = "60", port = "9223", setupFile] = process.argv.slice(2); +if (!url || !output) + throw new Error("Usage: node measure.mjs [seconds] [CDP-port] [setup.js]"); +const setupScript = setupFile ? await readFile(setupFile, "utf8") : undefined; +const duration = Number(durationArg); +if (!Number.isFinite(duration) || duration <= 0) throw new Error("Invalid measurement duration"); +const version = await (await fetch(`http://127.0.0.1:${port}/json/version`)).json(); +const socket = new WebSocket(version.webSocketDebuggerUrl); +await new Promise((resolve, reject) => { + socket.addEventListener("open", resolve, { once: true }); + socket.addEventListener("error", reject, { once: true }); +}); +let sequence = 0; +const pending = new Map(); +const logs = []; +const media = []; +let navigationStarted = Infinity; +function call(method, params = {}, sessionId) { + return new Promise((resolve, reject) => { + const id = ++sequence; + const timeout = setTimeout(() => { + pending.delete(id); + reject(new Error(`${method} timed out`)); + }, 30000); + pending.set(id, { resolve, reject, timeout }); + socket.send(JSON.stringify({ id, method, params, sessionId })); + }); +} +socket.addEventListener("message", ({ data }) => { + const message = JSON.parse(data); + if (message.id) { + const request = pending.get(message.id); + if (!request) return; + pending.delete(message.id); + clearTimeout(request.timeout); + if (message.error) request.reject(new Error(JSON.stringify(message.error))); + else request.resolve(message.result); + } else if (message.method === "Runtime.consoleAPICalled") { + if (message.params.timestamp < navigationStarted) return; + logs.push(message.params.args.map((arg) => arg.value ?? arg.description).join(" ")); + } else if (message.method === "Runtime.exceptionThrown") { + if (message.params.timestamp < navigationStarted) return; + logs.push(JSON.stringify(message.params)); + } else if (message.method?.startsWith("Media.")) { + media.push({ method: message.method, ...message.params }); + } else if (message.method === "Target.attachedToTarget") { + void call("Runtime.enable", {}, message.params.sessionId).catch(() => {}); + } +}); +const { targetInfos } = await call("Target.getTargets"); +const page = targetInfos.find((target) => target.type === "page"); +if (!page) throw new Error("Launch the dedicated benchmark browser with an about:blank tab first"); +const { sessionId } = await call("Target.attachToTarget", { targetId: page.targetId, flatten: true }); +const evaluate = async (expression) => { + const result = await call("Runtime.evaluate", { expression, returnByValue: true }, sessionId); + if (result.exceptionDetails) throw new Error(JSON.stringify(result.exceptionDetails)); + return result.result.value; +}; +const snapshot = () => + evaluate(`(() => { + const video = [...document.querySelectorAll('video')].find(v => !v.paused) ?? document.querySelector('video'); + if (!video) return null; + const quality = video.getVideoPlaybackQuality(); + return { time: video.currentTime, paused: video.paused, rate: video.playbackRate, + width: video.videoWidth, height: video.videoHeight, secureContext: isSecureContext, + visibility: document.visibilityState, viewport: { width: innerWidth, height: innerHeight, dpr: devicePixelRatio }, + theme: document.documentElement.className, + preferences: Object.fromEntries(["rtp2httpd-player-auto-deinterlace", "rtp2httpd-player-picture-enhancement", "rtp2httpd-player-appearance"].map(key => [key, localStorage.getItem(key)])), + videoRect: video.getBoundingClientRect().toJSON(), totalFrames: quality.totalVideoFrames, + droppedFrames: quality.droppedVideoFrames, events: window.events ?? [] }; +})()`); +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +let setupIdentifier; +try { + await call("Runtime.enable", {}, sessionId); + await call("Page.enable", {}, sessionId); + await call("Media.enable", {}, sessionId); + await call("Target.setAutoAttach", { autoAttach: true, waitForDebuggerOnStart: false, flatten: true }, sessionId); + if (setupScript) { + ({ identifier: setupIdentifier } = await call( + "Page.addScriptToEvaluateOnNewDocument", + { source: setupScript }, + sessionId, + )); + } + logs.length = 0; + media.length = 0; + navigationStarted = Date.now(); + await call("Page.navigate", { url }, sessionId); + await sleep(20000); + const startState = await snapshot(); + if (!startState || startState.paused || startState.time < 1) throw new Error("Playback did not start"); + const before = await call("SystemInfo.getProcessInfo"); + const start = performance.now(); + const states = []; + for (let time = 0; time < duration; time += 5) { + await sleep(Math.min(5, duration - time) * 1000); + states.push(await snapshot()); + } + const elapsed = (performance.now() - start) / 1000; + const after = await call("SystemInfo.getProcessInfo"); + const processes = after.processInfo.map((process) => ({ + ...process, + cpuPercent: + ((process.cpuTime - (before.processInfo.find((p) => p.id === process.id)?.cpuTime ?? process.cpuTime)) / + elapsed) * + 100, + })); + const result = { + url, + browser: version.Browser, + setupScript, + elapsed, + startState, + states, + cpuBaseline: before.processInfo, + processes, + processChurn: { + started: after.processInfo.filter((p) => !before.processInfo.some((b) => b.id === p.id)), + exited: before.processInfo.filter((p) => !after.processInfo.some((a) => a.id === p.id)), + }, + cpuPercent: processes.reduce((sum, process) => sum + process.cpuPercent, 0), + logs, + media, + }; + await mkdir(dirname(resolve(output)), { recursive: true }); + await writeFile(output, JSON.stringify(result, null, 2)); + if (result.processChurn.started.length || result.processChurn.exited.length) { + throw new Error(`Browser process set changed during measurement; inspect ${output} and repeat`); + } + if (!logs.some((line) => line.includes("MP2 decoder initialized successfully"))) { + throw new Error(`MP2 software decode was not verified; enable log level 4 and inspect ${output}`); + } + if ( + logs.some((line) => /Failed to initialize MP2|WASM stretcher unavailable|MP2 decode failed|CompileError/.test(line)) + ) { + throw new Error(`Invalid playback run; inspect ${output} for decoder errors`); + } + if (media.some((event) => event.method === "Media.playerErrorsRaised" && event.errors.length > 0)) { + throw new Error(`Media pipeline error; inspect ${output}`); + } + if (logs.some((line) => /Loader error|IOException|Player error:|Retrying playback/.test(line))) { + throw new Error(`Stream failed or restarted; inspect ${output}`); + } + if (states.some((state) => !state || state.paused || state.visibility !== "visible")) { + throw new Error(`Playback paused or became hidden; inspect ${output}`); + } + if ( + states.some((state, index) => state.time <= (index === 0 ? startState : states[index - 1]).time) || + states.at(-1).time <= startState.time + duration * 0.5 + ) { + throw new Error(`Playback did not advance normally; inspect ${output}`); + } + console.log( + JSON.stringify({ + output, + cpuPercent: result.cpuPercent, + start: startState.time, + end: states.at(-1)?.time, + droppedFrames: states.at(-1)?.droppedFrames - startState.droppedFrames, + }), + ); +} finally { + if (setupIdentifier) { + await call("Page.removeScriptToEvaluateOnNewDocument", { identifier: setupIdentifier }, sessionId).catch(() => {}); + } + await call("Page.navigate", { url: "about:blank" }, sessionId).catch(() => {}); + socket.close(); +} diff --git a/tools/player-benchmark/results.json b/tools/player-benchmark/results.json new file mode 100644 index 00000000..66a34aa5 --- /dev/null +++ b/tools/player-benchmark/results.json @@ -0,0 +1,10187 @@ +{ + "date": "2026-09-08", + "baselineCommit": "4d81cc8", + "engineCommit": "23aa1c0", + "uiCommit": "d88f98d", + "environment": "Apple M3 Max; macOS 26.6.2; Chrome 152.0.7977.83; window 1280x720", + "notes": [ + "CPU includes all dedicated browser processes; 100% is one logical CPU.", + "The abba-final runs use the intermediate eight-wide -O2 WASM; optimized-final and later runs use -O3.", + "full-simple and later diagnostic variants are not adopted changes.", + "Process baselines and process churn checks were added to the tool during this experiment; older runs do not contain them." + ], + "runs": [ + { + "name": "full-production-valid", + "url": "http://nas.test:8767/production-ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.033648541999995, + "cpuPercent": 37.360252049744346, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 14.586341, + "cpuPercent": 0.7037105291675847 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.078763, + "cpuPercent": 0.0033022221260025067 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 195.271855, + "cpuPercent": 15.076122761251739 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.705299, + "cpuPercent": 0.0033721632905470856 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 222.057183, + "cpuPercent": 20.110193033127448 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 14.297571, + "cpuPercent": 0.7423355372873865 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.171295, + "cpuPercent": 0.005260574733253592 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 12.181514, + "cpuPercent": 0.7106072275714405 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 93928, + "cpuTime": 0.622822, + "cpuPercent": 0.005348001188934325 + } + ], + "startState": { + "time": 18.998907, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 480, + "droppedFrames": 2 + }, + "states": [ + { + "time": 24.003489, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 605, + "droppedFrames": 2 + }, + { + "time": 29.006428, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 730, + "droppedFrames": 2 + }, + { + "time": 34.011151, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 855, + "droppedFrames": 2 + }, + { + "time": 39.016037, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 980, + "droppedFrames": 2 + }, + { + "time": 44.020752, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1105, + "droppedFrames": 2 + }, + { + "time": 49.024725, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1230, + "droppedFrames": 2 + }, + { + "time": 54.030481, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1356, + "droppedFrames": 2 + }, + { + "time": 59.034708, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1481, + "droppedFrames": 2 + } + ], + "logs": [ + "Loading segments...", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/production-ui/assets/mp2_decoder-mvgR0R-X.wasm", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.015s", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.015s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "E6379D8B944569F69C240FFF8C1D2278", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/production-ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-optimized-valid", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.03296458300001, + "cpuPercent": 36.64130086990609, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 15.123463, + "cpuPercent": 0.7065277401916635 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.079799, + "cpuPercent": 0.0016786166275713607 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 204.285679, + "cpuPercent": 14.812512792315419 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.707562, + "cpuPercent": 0.0017235795729529553 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 234.640434, + "cpuPercent": 19.70829061045959 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 14.734316, + "cpuPercent": 0.7172838759034564 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.173417, + "cpuPercent": 0.0033597311965528004 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 12.598113, + "cpuPercent": 0.686736550399628 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 93928, + "cpuTime": 0.703182, + "cpuPercent": 0.003187373239257422 + } + ], + "startState": { + "time": 19.034055, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 481, + "droppedFrames": 2 + }, + "states": [ + { + "time": 24.036076, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 606, + "droppedFrames": 2 + }, + { + "time": 29.040277, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 731, + "droppedFrames": 2 + }, + { + "time": 34.043982, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 856, + "droppedFrames": 2 + }, + { + "time": 39.049763, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 981, + "droppedFrames": 2 + }, + { + "time": 44.053916, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1106, + "droppedFrames": 2 + }, + { + "time": 49.058654, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1231, + "droppedFrames": 2 + }, + { + "time": 54.063148, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1356, + "droppedFrames": 2 + }, + { + "time": 59.067909, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1481, + "droppedFrames": 2 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.000s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0002, mode=soft", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "7B823879A5FBC027C90067C173F07803", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-baseline-1", + "url": "http://nas.test:8767/ui-baseline/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.048624333, + "cpuPercent": 36.28046716208299, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 22.616853, + "cpuPercent": 0.6846677122291567 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.112744, + "cpuPercent": 0.00035956291233038833 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 268.958101, + "cpuPercent": 14.87810155588852 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.950969, + "cpuPercent": 0.0014107850379628836 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 334.409079, + "cpuPercent": 19.519993832992725 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 18.450606, + "cpuPercent": 0.7069406370762898 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.232692, + "cpuPercent": 0.003013836355436178 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 16.169082, + "cpuPercent": 0.48545987093943044 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 3495, + "cpuTime": 0.108896, + "cpuPercent": 0.0005193686511439251 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.090865, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 482, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.100457, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 607, + "droppedFrames": 1 + }, + { + "time": 29.107713, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 733, + "droppedFrames": 1 + }, + { + "time": 34.114614, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 858, + "droppedFrames": 1 + }, + { + "time": 39.118817, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 983, + "droppedFrames": 1 + }, + { + "time": 44.123605, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1108, + "droppedFrames": 1 + }, + { + "time": 49.132696, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1233, + "droppedFrames": 1 + }, + { + "time": 54.137906, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1358, + "droppedFrames": 1 + }, + { + "time": 59.142068, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1483, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.007s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "F9AC1F44E8DAD7FD85716770E5D2AA86", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui-baseline/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-pulse-1", + "url": "http://nas.test:8767/ui-pulse/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.041814042, + "cpuPercent": 32.82852516674699, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 21.657407, + "cpuPercent": 0.7212060864602516 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.108383, + "cpuPercent": 0.0029519142133775074 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 259.822598, + "cpuPercent": 11.567195719808778 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.920791, + "cpuPercent": 0.0033190304480362246 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 321.521506, + "cpuPercent": 19.0838756505506 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 18.011946, + "cpuPercent": 0.7338154052955664 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.223221, + "cpuPercent": 0.003900922166916865 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 15.856168, + "cpuPercent": 0.7098729335835108 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 2172, + "cpuTime": 0.103668, + "cpuPercent": 0.002387504219956785 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.029247, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 481, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.038285, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 606, + "droppedFrames": 1 + }, + { + "time": 29.044474, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 731, + "droppedFrames": 1 + }, + { + "time": 34.04903, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 856, + "droppedFrames": 1 + }, + { + "time": 39.054519, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 981, + "droppedFrames": 1 + }, + { + "time": 44.058795, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1106, + "droppedFrames": 1 + }, + { + "time": 49.063298, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1231, + "droppedFrames": 1 + }, + { + "time": 54.068539, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1356, + "droppedFrames": 1 + }, + { + "time": 59.071611, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1481, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.004s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", + "[PCMAudioPlayer] > A/V drift=-2.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "71C8EA96B2E047FEF33A2A4FB24F3B87", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-pulse-2", + "url": "http://nas.test:8767/ui-pulse/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.03058375, + "cpuPercent": 31.01201590646301, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 25.826664 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.121076 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 283.541979 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.052207 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 364.138725 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 19.301382 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.249003 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 17.040571 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 3884, + "cpuTime": 0.332097 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 26.093208, + "cpuPercent": 0.665850894567581 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.12158, + "cpuPercent": 0.0012590373479127459 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 287.91678, + "cpuPercent": 10.928646525170873 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.053763, + "cpuPercent": 0.0038870280026833555 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 371.374561, + "cpuPercent": 18.075769379705854 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 19.563047, + "cpuPercent": 0.6536627135745946 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.250591, + "cpuPercent": 0.003966966881915646 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 17.310874, + "cpuPercent": 0.6752412147874272 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 3884, + "cpuTime": 0.333591, + "cpuPercent": 0.0037321464241701218 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.100614, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 482, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.104824, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 607, + "droppedFrames": 0 + }, + { + "time": 29.110429, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 732, + "droppedFrames": 0 + }, + { + "time": 34.115069, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 857, + "droppedFrames": 0 + }, + { + "time": 39.11758, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 982, + "droppedFrames": 0 + }, + { + "time": 44.1203, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1107, + "droppedFrames": 0 + }, + { + "time": 49.124298, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1232, + "droppedFrames": 0 + }, + { + "time": 54.127938, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1357, + "droppedFrames": 0 + }, + { + "time": 59.131613, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1482, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.006s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.020s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "3AFDD8C06EEBB394AECA999BD640D798", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-baseline-2", + "url": "http://nas.test:8767/ui-baseline/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.02986683300001, + "cpuPercent": 37.24381612908473, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 28.253852 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.129082 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 299.931056 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.10279 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 390.357779 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.179443 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.266575 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 17.900514 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.1048 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 28.533325, + "cpuPercent": 0.6981612033982829 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.12923, + "cpuPercent": 0.00036972393792227237 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 306.006426, + "cpuPercent": 15.177092707666773 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.102904, + "cpuPercent": 0.0002847873575891831 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 398.333542, + "cpuPercent": 19.92453043442286 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.469226, + "cpuPercent": 0.7239169723170482 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.267912, + "cpuPercent": 0.0033400061148786404 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.186989, + "cpuPercent": 0.7156531426775414 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.104987, + "cpuPercent": 0.0004671511918341752 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.107904, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 483, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.111633, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 608, + "droppedFrames": 1 + }, + { + "time": 29.116736, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 733, + "droppedFrames": 1 + }, + { + "time": 34.120342, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 858, + "droppedFrames": 1 + }, + { + "time": 39.123278, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 983, + "droppedFrames": 1 + }, + { + "time": 44.12821, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1108, + "droppedFrames": 1 + }, + { + "time": 49.133584, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1233, + "droppedFrames": 1 + }, + { + "time": 54.135631, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1358, + "droppedFrames": 1 + }, + { + "time": 59.138594, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1483, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.004s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "D237972414C76F70AD41BDD2ACCF70C7", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui-baseline/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-interlaced-baseline", + "url": "http://nas.test:8768/ui-baseline/player.html", + "browser": "Chrome/152.0.7977.83", + "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", + "elapsed": 40.025184584, + "cpuPercent": 34.661496615673094, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 29.02942 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.131042 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 311.672629 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.122256 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 400.685877 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.544755 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.271903 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.306249 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.186647 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 29.182907, + "cpuPercent": 0.3834760578752161 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.131521, + "cpuPercent": 0.001196746510924241 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 323.043442, + "cpuPercent": 28.40914568710201 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.122529, + "cpuPercent": 0.0006820705584186639 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 402.717482, + "cpuPercent": 5.075816691704013 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.655844, + "cpuPercent": 0.27754775188321656 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.272634, + "cpuPercent": 0.0018263501033101985 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.509956, + "cpuPercent": 0.5089470595007058 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.187791, + "cpuPercent": 0.0028582004352762386 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.103594, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 481, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.108619, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 607, + "droppedFrames": 0 + }, + { + "time": 29.112059, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 732, + "droppedFrames": 0 + }, + { + "time": 34.113661, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 857, + "droppedFrames": 0 + }, + { + "time": 39.117515, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 982, + "droppedFrames": 0 + }, + { + "time": 44.121268, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1107, + "droppedFrames": 0 + }, + { + "time": 49.12427, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1232, + "droppedFrames": 0 + }, + { + "time": 54.126828, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1357, + "droppedFrames": 0 + }, + { + "time": 59.130273, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1482, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.012s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "1415F69EB041144F76B39225902D9CFF", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/ui-baseline/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-interlaced-pulse", + "url": "http://nas.test:8768/ui-pulse/player.html", + "browser": "Chrome/152.0.7977.83", + "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", + "elapsed": 40.026182625000004, + "cpuPercent": 33.15633700154792, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 29.374705 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.131799 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 328.440881 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.124635 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 404.568692 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.727542 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.273547 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.612798 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.256788 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 29.525413, + "cpuPercent": 0.3765235406333022 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.132744, + "cpuPercent": 0.0023609546002764767 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 339.321237, + "cpuPercent": 27.18309687920184 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.12521, + "cpuPercent": 0.0014365596774168822 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 406.49511, + "cpuPercent": 4.812894644608923 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.835683, + "cpuPercent": 0.2701756523052885 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.274605, + "cpuPercent": 0.0026432698064471076 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.814777, + "cpuPercent": 0.5046171949304094 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 7867, + "cpuTime": 0.257824, + "cpuPercent": 0.0025883057840067536 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.111616, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 483, + "droppedFrames": 2 + }, + "states": [ + { + "time": 24.114273, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 608, + "droppedFrames": 2 + }, + { + "time": 29.118315, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 733, + "droppedFrames": 2 + }, + { + "time": 34.121541, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 858, + "droppedFrames": 2 + }, + { + "time": 39.125124, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 983, + "droppedFrames": 2 + }, + { + "time": 44.127048, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1108, + "droppedFrames": 2 + }, + { + "time": 49.129755, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1233, + "droppedFrames": 2 + }, + { + "time": 54.133168, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1358, + "droppedFrames": 2 + }, + { + "time": 59.136334, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1483, + "droppedFrames": 2 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.005s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.020s", + "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "C76AB8B35DA9907EE909343F4F53919E", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/ui-pulse/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-interlaced-pulse-2", + "url": "http://nas.test:8768/ui-pulse/player.html", + "browser": "Chrome/152.0.7977.83", + "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", + "elapsed": 40.023331250000005, + "cpuPercent": 33.28723418043804, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 30.070568 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.136198 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 344.74122 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.148486 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 408.835212 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 20.91154 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.281552 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 18.940667 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 9832, + "cpuTime": 0.099292 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 30.224711, + "cpuPercent": 0.3851328592244497 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.136528, + "cpuPercent": 0.0008245190734841617 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 355.643111, + "cpuPercent": 27.238839595592072 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.148927, + "cpuPercent": 0.0011018573072928198 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 410.779255, + "cpuPercent": 4.857274342949563 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 21.02202, + "cpuPercent": 0.27603899163191864 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.282334, + "cpuPercent": 0.0019538603498926626 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 19.150919, + "cpuPercent": 0.5253235886005789 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 9832, + "cpuTime": 0.09959, + "cpuPercent": 0.0007445657087826558 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.117566, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 483, + "droppedFrames": 2 + }, + "states": [ + { + "time": 24.122435, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 608, + "droppedFrames": 2 + }, + { + "time": 29.126084, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 733, + "droppedFrames": 2 + }, + { + "time": 34.127807, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 858, + "droppedFrames": 2 + }, + { + "time": 39.129572, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 983, + "droppedFrames": 2 + }, + { + "time": 44.13089, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1108, + "droppedFrames": 2 + }, + { + "time": 49.134316, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1233, + "droppedFrames": 2 + }, + { + "time": 54.138794, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1359, + "droppedFrames": 2 + }, + { + "time": 59.14213, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1484, + "droppedFrames": 2 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.013s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", + "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "CD6B16A90D3CFC111E4047EEE609DEA7", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/ui-pulse/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-interlaced-baseline-2", + "url": "http://nas.test:8768/ui-baseline/player.html", + "browser": "Chrome/152.0.7977.83", + "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", + "elapsed": 40.02356375, + "cpuPercent": 34.62294883723341, + "cpuBaseline": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 30.410565 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.136858 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 361.227613 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.15013 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 412.649297 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 21.108454 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.283257 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 19.258938 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 9832, + "cpuTime": 0.169812 + } + ], + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 30.566635, + "cpuPercent": 0.38994528566937836 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.137483, + "cpuPercent": 0.0015615800829329863 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 372.534832, + "cpuPercent": 28.25140477401884 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 1.150575, + "cpuPercent": 0.0011118450190478269 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 414.680291, + "cpuPercent": 5.074495646330397 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 21.260886, + "cpuPercent": 0.3808556403226362 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.284254, + "cpuPercent": 0.002491032548294817 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 19.466397, + "cpuPercent": 0.5183421478803223 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 9832, + "cpuTime": 0.170909, + "cpuPercent": 0.0027408853615640727 + } + ], + "processChurn": { + "started": [], + "exited": [] + }, + "startState": { + "time": 19.096882, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 481, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.100288, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 606, + "droppedFrames": 0 + }, + { + "time": 29.104236, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 731, + "droppedFrames": 0 + }, + { + "time": 34.107837, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 856, + "droppedFrames": 0 + }, + { + "time": 39.110269, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 982, + "droppedFrames": 0 + }, + { + "time": 44.113795, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1107, + "droppedFrames": 0 + }, + { + "time": 49.116921, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1232, + "droppedFrames": 0 + }, + { + "time": 54.11989, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1357, + "droppedFrames": 0 + }, + { + "time": 59.12113, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "viewport": { + "width": 1280, + "height": 633, + "dpr": 2 + }, + "theme": "dark", + "preferences": { + "rtp2httpd-player-auto-deinterlace": "false", + "rtp2httpd-player-picture-enhancement": "false", + "rtp2httpd-player-appearance": null + }, + "videoRect": { + "x": 0, + "y": 46.5, + "width": 960, + "height": 540, + "top": 46.5, + "right": 960, + "bottom": 586.5, + "left": 0 + }, + "totalFrames": 1482, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.006s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.019s", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.803s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=2.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "9BC2C529697A9E7FB6D40C439A619F9B", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/ui-baseline/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "abba-baseline-1788810768115", + "legacyFormat": true, + "label": "abba-baseline", + "elapsed": 60.062766665999995, + "cpuPercent": 26.73081992589675, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 7.055306, + "cpuPercent": 0.18101064275739326 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.084012, + "cpuPercent": 0.002828707524326825 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 53.362134, + "cpuPercent": 11.912796224970355 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.532312, + "cpuPercent": 0.00264390085263748 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 86.371972, + "cpuPercent": 13.11377819773108 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 7.565781, + "cpuPercent": 0.7855332449530357 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.102611, + "cpuPercent": 0.00564243072392204 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 5.547596, + "cpuPercent": 0.7065725133175309 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 86602, + "cpuTime": 0.093042, + "cpuPercent": 0.020014063066470075 + } + ], + "states": [ + { + "time": 24.057468, + "paused": false, + "rate": 1, + "quality": { + "total": 606, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 29.062807, + "paused": false, + "rate": 1, + "quality": { + "total": 731, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 34.068606, + "paused": false, + "rate": 1, + "quality": { + "total": 856, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 39.072187, + "paused": false, + "rate": 1, + "quality": { + "total": 982, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 44.077091, + "paused": false, + "rate": 1, + "quality": { + "total": 1107, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 49.083547, + "paused": false, + "rate": 1, + "quality": { + "total": 1232, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 54.090241, + "paused": false, + "rate": 1, + "quality": { + "total": 1357, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 59.095896, + "paused": false, + "rate": 1, + "quality": { + "total": 1482, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 64.10169, + "paused": false, + "rate": 1, + "quality": { + "total": 1607, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 69.104683, + "paused": false, + "rate": 1, + "quality": { + "total": 1732, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 74.109576, + "paused": false, + "rate": 1, + "quality": { + "total": 1857, + "dropped": 2, + "corrupted": 0 + } + }, + { + "time": 79.114512, + "paused": false, + "rate": 1, + "quality": { + "total": 1983, + "dropped": 2, + "corrupted": 0 + } + } + ], + "logs": [ + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[MSE] > MediaSource onSourceOpen" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" + }, + { + "session": "57EFF31CAE415B8A6E620187EA9B8AE9", + "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > AudioContext state changed to: running" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.015s" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0030, mode=soft" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=2.8ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "AD3D388D5A28DB757BC255F469EB3550", + "text": "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + } + ], + "mediaProperties": [ + { + "playerId": "A5FB795F025F715651348F0314CDDB92", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ] + }, + { + "name": "abba-baseline-1788811008599", + "legacyFormat": true, + "label": "abba-baseline", + "elapsed": 60.060040875000006, + "cpuPercent": 27.95477784462966, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 7.948269, + "cpuPercent": 0.2057008257072717 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.090573, + "cpuPercent": 0.0033766210785982948 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 83.073502, + "cpuPercent": 12.419432107154735 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.540953, + "cpuPercent": 0.0029986659578677024 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 118.148115, + "cpuPercent": 13.599208194012084 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 9.491101, + "cpuPercent": 0.7969774795795146 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.114431, + "cpuPercent": 0.004743586515249777 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 7.470321, + "cpuPercent": 0.8974885666858957 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 86602, + "cpuTime": 0.349228, + "cpuPercent": 0.024851797938440872 + } + ], + "states": [ + { + "time": 24.141533, + "paused": false, + "rate": 1, + "quality": { + "total": 608, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 29.145546, + "paused": false, + "rate": 1, + "quality": { + "total": 733, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 34.150433, + "paused": false, + "rate": 1, + "quality": { + "total": 858, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 39.154772, + "paused": false, + "rate": 1, + "quality": { + "total": 983, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 44.15914, + "paused": false, + "rate": 1, + "quality": { + "total": 1108, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 49.164081, + "paused": false, + "rate": 1, + "quality": { + "total": 1233, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 54.169182, + "paused": false, + "rate": 1, + "quality": { + "total": 1358, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 59.173213, + "paused": false, + "rate": 1, + "quality": { + "total": 1484, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 64.179617, + "paused": false, + "rate": 1, + "quality": { + "total": 1609, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 69.185294, + "paused": false, + "rate": 1, + "quality": { + "total": 1734, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 74.191076, + "paused": false, + "rate": 1, + "quality": { + "total": 1859, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 79.195439, + "paused": false, + "rate": 1, + "quality": { + "total": 1984, + "dropped": 0, + "corrupted": 0 + } + } + ], + "logs": [ + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[MSE] > MediaSource onSourceOpen" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" + }, + { + "session": "063A65AAC296743F9F970B5568BB2787", + "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > AudioContext state changed to: running" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=1.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "472EFC9546C3722E4AF5999FB43E2632", + "text": "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + } + ], + "mediaProperties": [ + { + "playerId": "CAEEB0036CB32012841F3E82F7A8B7BB", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ] + }, + { + "name": "abba-final-1788810848268", + "legacyFormat": true, + "label": "abba-final", + "elapsed": 60.048127, + "cpuPercent": 26.731766338024173, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 7.339622, + "cpuPercent": 0.17903306126434199 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.08548, + "cpuPercent": 0.0016203669433353044 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 63.075359, + "cpuPercent": 11.854434693691616 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.534492, + "cpuPercent": 0.0015737376787788462 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 96.821849, + "cpuPercent": 13.122017944040119 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 8.197786, + "cpuPercent": 0.7732697474477446 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.106199, + "cpuPercent": 0.004056746016407818 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 6.175834, + "cpuPercent": 0.7787220407390896 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 86602, + "cpuTime": 0.176682, + "cpuPercent": 0.01703800020273741 + } + ], + "states": [ + { + "time": 24.139763, + "paused": false, + "rate": 1, + "quality": { + "total": 608, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 29.143571, + "paused": false, + "rate": 1, + "quality": { + "total": 733, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 34.148253, + "paused": false, + "rate": 1, + "quality": { + "total": 858, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 39.151883, + "paused": false, + "rate": 1, + "quality": { + "total": 983, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 44.154313, + "paused": false, + "rate": 1, + "quality": { + "total": 1108, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 49.158269, + "paused": false, + "rate": 1, + "quality": { + "total": 1233, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 54.161696, + "paused": false, + "rate": 1, + "quality": { + "total": 1358, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 59.165892, + "paused": false, + "rate": 1, + "quality": { + "total": 1483, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 64.170204, + "paused": false, + "rate": 1, + "quality": { + "total": 1608, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 69.176152, + "paused": false, + "rate": 1, + "quality": { + "total": 1734, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 74.181376, + "paused": false, + "rate": 1, + "quality": { + "total": 1859, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 79.184397, + "paused": false, + "rate": 1, + "quality": { + "total": 1984, + "dropped": 0, + "corrupted": 0 + } + } + ], + "logs": [ + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[MSE] > MediaSource onSourceOpen" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/final/assets/mp2_decoder-kdCik8G2.wasm" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" + }, + { + "session": "88CF55F27C07B663F1097C2DA3B14E87", + "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > AudioContext state changed to: running" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", + "text": "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + } + ], + "mediaProperties": [ + { + "playerId": "FEB3418884E9047D7EEF2C976EFCAD13", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/final/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ] + }, + { + "name": "abba-final-1788810928434", + "legacyFormat": true, + "label": "abba-final", + "elapsed": 60.05604545800001, + "cpuPercent": 26.540533727194923, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 7.638909, + "cpuPercent": 0.20454726757843125 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.087504, + "cpuPercent": 0.0027990520973872708 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 72.911743, + "cpuPercent": 11.839644028797483 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.537528, + "cpuPercent": 0.0028190334330022602 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 107.371475, + "cpuPercent": 12.988367683075506 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 8.841554, + "cpuPercent": 0.7741502066184877 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.110317, + "cpuPercent": 0.005025305907147385 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 6.751744, + "cpuPercent": 0.7014581076514816 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 86602, + "cpuTime": 0.265203, + "cpuPercent": 0.021723042035998986 + } + ], + "states": [ + { + "time": 24.145201, + "paused": false, + "rate": 1, + "quality": { + "total": 608, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 29.150541, + "paused": false, + "rate": 1, + "quality": { + "total": 733, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 34.153449, + "paused": false, + "rate": 1, + "quality": { + "total": 858, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 39.158785, + "paused": false, + "rate": 1, + "quality": { + "total": 983, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 44.163449, + "paused": false, + "rate": 1, + "quality": { + "total": 1108, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 49.169126, + "paused": false, + "rate": 1, + "quality": { + "total": 1233, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 54.172941, + "paused": false, + "rate": 1, + "quality": { + "total": 1358, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 59.178349, + "paused": false, + "rate": 1, + "quality": { + "total": 1483, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 64.184335, + "paused": false, + "rate": 1, + "quality": { + "total": 1608, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 69.189928, + "paused": false, + "rate": 1, + "quality": { + "total": 1734, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 74.192724, + "paused": false, + "rate": 1, + "quality": { + "total": 1859, + "dropped": 0, + "corrupted": 0 + } + }, + { + "time": 79.198108, + "paused": false, + "rate": 1, + "quality": { + "total": 1984, + "dropped": 0, + "corrupted": 0 + } + } + ], + "logs": [ + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[MSE] > MediaSource onSourceOpen" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/final/assets/mp2_decoder-kdCik8G2.wasm" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" + }, + { + "session": "BE3CB322709B315602C18A86E2414A21", + "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > AudioContext state changed to: running" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" + }, + { + "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", + "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + } + ], + "mediaProperties": [ + { + "playerId": "D54F62C6CCB22136567EAEDC43180988", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/final/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ] + }, + { + "name": "optimized-final", + "url": "http://nas.test:8767/optimized/tools/player-benchmark/index.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 60.060117959, + "cpuPercent": 26.560001115698064, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 8.586126, + "cpuPercent": 0.18780349395417376 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.0949, + "cpuPercent": 0.0014618685907333213 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 92.585573, + "cpuPercent": 11.92740914177063 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.565663, + "cpuPercent": 0.0016500134093585708 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 128.875973, + "cpuPercent": 13.010820267343492 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 10.110455, + "cpuPercent": 0.7741559887001959 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.123161, + "cpuPercent": 0.003508151618080993 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 8.006992, + "cpuPercent": 0.6349155029304399 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 90415, + "cpuTime": 0.098927, + "cpuPercent": 0.018276687380956263 + } + ], + "startState": { + "time": 19.151398, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 484, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.158163, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 609, + "droppedFrames": 1 + }, + { + "time": 29.163447, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 734, + "droppedFrames": 1 + }, + { + "time": 34.168311, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 859, + "droppedFrames": 1 + }, + { + "time": 39.174488, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 984, + "droppedFrames": 1 + }, + { + "time": 44.179336, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1109, + "droppedFrames": 1 + }, + { + "time": 49.183558, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1234, + "droppedFrames": 1 + }, + { + "time": 54.188815, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1359, + "droppedFrames": 1 + }, + { + "time": 59.193452, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1484, + "droppedFrames": 1 + }, + { + "time": 64.197964, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1610, + "droppedFrames": 1 + }, + { + "time": 69.203466, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1735, + "droppedFrames": 1 + }, + { + "time": 74.20699, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1860, + "droppedFrames": 1 + }, + { + "time": 79.213687, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1985, + "droppedFrames": 1 + } + ], + "logs": [ + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.004s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "953EC446372ECBD2CD87F8EFA9E2D609", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/optimized/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "interlaced-baseline", + "url": "http://nas.test:8768/baseline/tools/player-benchmark/index.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.023786042, + "cpuPercent": 31.78467920713559, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 9.139267, + "cpuPercent": 0.07413591500030162 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.099726, + "cpuPercent": 0.0006995839916447768 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 109.025667, + "cpuPercent": 27.24869153696641 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.591067, + "cpuPercent": 0.0005946463928979857 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 131.533746, + "cpuPercent": 3.4659339787203534 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 10.315009, + "cpuPercent": 0.30705241096141805 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.130995, + "cpuPercent": 0.001351696212428033 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 8.437092, + "cpuPercent": 0.6859770830073142 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 91738, + "cpuTime": 0.091885, + "cpuPercent": 0.0002423558828198072 + } + ], + "startState": { + "time": 19.143159, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 482, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.147834, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 607, + "droppedFrames": 0 + }, + { + "time": 29.151281, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 733, + "droppedFrames": 0 + }, + { + "time": 34.156186, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 858, + "droppedFrames": 0 + }, + { + "time": 39.158114, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 983, + "droppedFrames": 0 + }, + { + "time": 44.160282, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1108, + "droppedFrames": 0 + }, + { + "time": 49.1625, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1233, + "droppedFrames": 0 + }, + { + "time": 54.166364, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1358, + "droppedFrames": 0 + }, + { + "time": 59.169023, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1483, + "droppedFrames": 0 + } + ], + "logs": [ + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "38901865C1900B91A115072765BD66EF", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/baseline/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "interlaced-optimized", + "url": "http://nas.test:8768/optimized/tools/player-benchmark/index.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.025988584000004, + "cpuPercent": 30.95096570569691, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 9.30074, + "cpuPercent": 0.07254536621640402 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.100683, + "cpuPercent": 0.0008194675799490679 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 124.977286, + "cpuPercent": 26.53594420962222 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.592674, + "cpuPercent": 0.000659571466788389 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 133.653353, + "cpuPercent": 3.3764287849225814 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 10.513455, + "cpuPercent": 0.31288671293446296 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.132563, + "cpuPercent": 0.0015614854800858667 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 8.837999, + "cpuPercent": 0.6483912307508691 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 91738, + "cpuTime": 0.160544, + "cpuPercent": 0.0017288767235511039 + } + ], + "startState": { + "time": 19.152395, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 483, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.15706, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 608, + "droppedFrames": 0 + }, + { + "time": 29.161209, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 733, + "droppedFrames": 0 + }, + { + "time": 34.164763, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 858, + "droppedFrames": 0 + }, + { + "time": 39.16793, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 983, + "droppedFrames": 0 + }, + { + "time": 44.16849, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1108, + "droppedFrames": 0 + }, + { + "time": 49.173332, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1233, + "droppedFrames": 0 + }, + { + "time": 54.17653, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1358, + "droppedFrames": 0 + }, + { + "time": 59.179318, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1483, + "droppedFrames": 0 + } + ], + "logs": [ + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.006s", + "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.020s", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "C999932FFA224CC87F3E07D10C81E9E4", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "FFmpegVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8768/optimized/tools/player-benchmark/index.html" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "false" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "catchup-baseline", + "url": "http://nas.test:8767/baseline/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.035634916999996, + "cpuPercent": 33.93821286503563, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 9.972577, + "cpuPercent": 0.18837468209596486 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.106478, + "cpuPercent": 0.0012663718236293644 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 135.745435, + "cpuPercent": 18.95606255710327 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.621333, + "cpuPercent": 0.0024653037276573067 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 142.234959, + "cpuPercent": 13.346255182607655 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 11.056111, + "cpuPercent": 0.8517636867929372 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.143857, + "cpuPercent": 0.004188768339697097 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 9.220481, + "cpuPercent": 0.585980465868378 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 93928, + "cpuTime": 0.098173, + "cpuPercent": 0.00185584667644299 + } + ], + "startState": { + "time": 20.617086, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 519, + "droppedFrames": 1 + }, + "states": [ + { + "time": 26.627311, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 670, + "droppedFrames": 1 + }, + { + "time": 32.632195, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 820, + "droppedFrames": 1 + }, + { + "time": 38.633742, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 970, + "droppedFrames": 1 + }, + { + "time": 44.639888, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1120, + "droppedFrames": 1 + }, + { + "time": 50.646986, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1270, + "droppedFrames": 1 + }, + { + "time": 56.648755, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1420, + "droppedFrames": 1 + }, + { + "time": 62.651821, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1570, + "droppedFrames": 1 + }, + { + "time": 68.666148, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1721, + "droppedFrames": 1 + } + ], + "logs": [ + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.013s", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Video playback rate set to 1.2", + "[PCMAudioPlayer] > A/V drift=-82.0ms, rate=1.2, stretch ratio=1.2914, mode=soft", + "[PCMAudioPlayer] > A/V drift=3.8ms, rate=1.2, stretch ratio=1.1977, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1.2, stretch ratio=1.2002, mode=steady", + "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1.2, stretch ratio=1.2015, mode=steady", + "[PCMAudioPlayer] > A/V drift=2.5ms, rate=1.2, stretch ratio=1.1985, mode=steady", + "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1.2, stretch ratio=1.1990, mode=steady", + "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1.2, stretch ratio=1.1990, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1.2, stretch ratio=1.2004, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1.2, stretch ratio=1.2001, mode=steady" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "F3B6F9A04BF7633C30446CFC71A6595B", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "catchup-optimized", + "url": "http://nas.test:8767/optimized/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.04045537500001, + "cpuPercent": 28.46557785932778, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 10.208392, + "cpuPercent": 0.16891666032906402 + }, + { + "type": "renderer", + "id": 78373, + "cpuTime": 0.108409, + "cpuPercent": 0.0032991632778102548 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 144.583219, + "cpuPercent": 14.778653101169997 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.624192, + "cpuPercent": 0.0037711858815242336 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 149.744012, + "cpuPercent": 12.149889291812263 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 11.563671, + "cpuPercent": 0.7853107489789621 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.146896, + "cpuPercent": 0.005359579405133098 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 9.594188, + "cpuPercent": 0.5660525033426923 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 93928, + "cpuTime": 0.179122, + "cpuPercent": 0.004325625130331103 + } + ], + "startState": { + "time": 20.653517, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 520, + "droppedFrames": 1 + }, + "states": [ + { + "time": 26.653742, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 670, + "droppedFrames": 1 + }, + { + "time": 32.667007, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 820, + "droppedFrames": 1 + }, + { + "time": 38.669742, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 971, + "droppedFrames": 1 + }, + { + "time": 44.672927, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1121, + "droppedFrames": 1 + }, + { + "time": 50.681952, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1271, + "droppedFrames": 1 + }, + { + "time": 56.691785, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1421, + "droppedFrames": 1 + }, + { + "time": 62.69431, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1571, + "droppedFrames": 1 + }, + { + "time": 68.696968, + "paused": false, + "rate": 1.2, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1721, + "droppedFrames": 1 + } + ], + "logs": [ + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.005s", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[LiveSync] > Video playback rate set to 1.2", + "[PCMAudioPlayer] > A/V drift=-74.5ms, rate=1.2, stretch ratio=1.2447, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1.2, stretch ratio=1.2003, mode=steady", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1.2, stretch ratio=1.1997, mode=steady", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1.2, stretch ratio=1.1995, mode=steady", + "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1.2, stretch ratio=1.1994, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1.2, stretch ratio=1.2001, mode=steady", + "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1.2, stretch ratio=1.2008, mode=steady", + "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1.2, stretch ratio=1.1994, mode=steady", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1.2, stretch ratio=1.2005, mode=steady" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "524EECE16AFFEFD57847CD4998B2AC40", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/optimized/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "Player CPU benchmark" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-simple", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.037696917000005, + "cpuPercent": 27.071809406194305, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 16.293002, + "cpuPercent": 0.779817582033376 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.086839, + "cpuPercent": 0.001019039633687743 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 213.22517, + "cpuPercent": 12.092453794324676 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.737917, + "cpuPercent": 0.000492036293716876 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 245.458743, + "cpuPercent": 12.610518058685347 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 15.266841, + "cpuPercent": 0.7165846741753529 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.187631, + "cpuPercent": 0.002465176760906314 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 13.211479, + "cpuPercent": 0.8647125750457417 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.124088, + "cpuPercent": 0.003746469241499007 + } + ], + "startState": { + "time": 19.02318, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 479, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.02985, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 605, + "droppedFrames": 0 + }, + { + "time": 29.036089, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 730, + "droppedFrames": 0 + }, + { + "time": 34.041407, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 855, + "droppedFrames": 0 + }, + { + "time": 39.045963, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 980, + "droppedFrames": 0 + }, + { + "time": 44.050116, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1105, + "droppedFrames": 0 + }, + { + "time": 49.054537, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1230, + "droppedFrames": 0 + }, + { + "time": 54.058966, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1355, + "droppedFrames": 0 + }, + { + "time": 59.063487, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1480, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.017s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.018s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", + "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "4151A9DD7B84B3EEB8D0D83553E5F796", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-no-animations", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.033807833, + "cpuPercent": 31.620194743417184, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 17.060129, + "cpuPercent": 0.659515080607348 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.089308, + "cpuPercent": 0.0012464465086148317 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 220.132373, + "cpuPercent": 11.151449841151551 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.757413, + "cpuPercent": 0.0013263789500489213 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 257.138012, + "cpuPercent": 18.436684890903386 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 15.680327, + "cpuPercent": 0.6638888838870735 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.192515, + "cpuPercent": 0.002790141783813111 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 13.643637, + "cpuPercent": 0.6997385838703215 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.208366, + "cpuPercent": 0.003554495755027889 + } + ], + "startState": { + "time": 19.046297, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 481, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.052264, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 606, + "droppedFrames": 1 + }, + { + "time": 29.055489, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 731, + "droppedFrames": 1 + }, + { + "time": 34.058623, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 856, + "droppedFrames": 1 + }, + { + "time": 39.062162, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 981, + "droppedFrames": 1 + }, + { + "time": 44.066353, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1106, + "droppedFrames": 1 + }, + { + "time": 49.071864, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1232, + "droppedFrames": 1 + }, + { + "time": 54.077433, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1357, + "droppedFrames": 1 + }, + { + "time": 59.081324, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1482, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.005s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.020s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "7FACECCA2B34FECCF2FBAE363164F977", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-contained-paused", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.035062833000005, + "cpuPercent": 32.54667303596596, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 17.934769, + "cpuPercent": 0.7132472882361207 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.095631, + "cpuPercent": 0.00257274480696202 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 227.120879, + "cpuPercent": 11.629361041397718 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.787909, + "cpuPercent": 0.003394524458894581 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 269.317128, + "cpuPercent": 18.83380833309167 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 16.084002, + "cpuPercent": 0.6872250985284266 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.199503, + "cpuPercent": 0.004988127552915801 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 14.046351, + "cpuPercent": 0.6678470847299623 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.298622, + "cpuPercent": 0.004228793163288102 + } + ], + "startState": { + "time": 19.108419, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 482, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.112244, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 607, + "droppedFrames": 0 + }, + { + "time": 29.116037, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 732, + "droppedFrames": 0 + }, + { + "time": 34.119713, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 857, + "droppedFrames": 0 + }, + { + "time": 39.123004, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 982, + "droppedFrames": 0 + }, + { + "time": 44.130518, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1107, + "droppedFrames": 0 + }, + { + "time": 49.134829, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1232, + "droppedFrames": 0 + }, + { + "time": 54.138783, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1357, + "droppedFrames": 0 + }, + { + "time": 59.143589, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1482, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.006s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.021s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=-2.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-2.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "3C55CF282A560F04220C77D43F05616F", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-stacking-paused", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.036866417000006, + "cpuPercent": 33.181910046684116, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 18.799012, + "cpuPercent": 0.7432000219519118 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.098512, + "cpuPercent": 0.003531744930466391 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 234.225324, + "cpuPercent": 11.639697151776206 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.815883, + "cpuPercent": 0.0031645833287842896 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 281.908045, + "cpuPercent": 19.38406697259588 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 16.512513, + "cpuPercent": 0.7231809727173277 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.204857, + "cpuPercent": 0.00505783839051941 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 14.457159, + "cpuPercent": 0.6743634658814325 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.387735, + "cpuPercent": 0.005647295111587385 + } + ], + "startState": { + "time": 19.041583, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 480, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.048022, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 605, + "droppedFrames": 1 + }, + { + "time": 29.053463, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 730, + "droppedFrames": 1 + }, + { + "time": 34.057777, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 855, + "droppedFrames": 1 + }, + { + "time": 39.06324, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 980, + "droppedFrames": 1 + }, + { + "time": 44.06795, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1106, + "droppedFrames": 1 + }, + { + "time": 49.073425, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1231, + "droppedFrames": 1 + }, + { + "time": 54.076935, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1356, + "droppedFrames": 1 + }, + { + "time": 59.079914, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1481, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.001s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", + "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "FF4DA3F46C73DAFDF2ECA528DD44903D", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-hidden-effects", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.040906209, + "cpuPercent": 33.524048956171775, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 19.89829, + "cpuPercent": 0.6812757897539409 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.100572, + "cpuPercent": 0.0009415371321322645 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 245.958731, + "cpuPercent": 12.053450975380755 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.846079, + "cpuPercent": 0.0008291520633101337 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 300.909126, + "cpuPercent": 19.55348103045723 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 17.165684, + "cpuPercent": 0.7450830369392091 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.209811, + "cpuPercent": 0.002859575640030458 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 14.961951, + "cpuPercent": 0.4828886713771187 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.487637, + "cpuPercent": 0.00323918742805193 + } + ], + "startState": { + "time": 19.031776, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 480, + "droppedFrames": 2 + }, + "states": [ + { + "time": 24.038137, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 605, + "droppedFrames": 2 + }, + { + "time": 29.044146, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 730, + "droppedFrames": 2 + }, + { + "time": 34.050954, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 855, + "droppedFrames": 2 + }, + { + "time": 39.05605, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 980, + "droppedFrames": 2 + }, + { + "time": 44.061162, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1105, + "droppedFrames": 2 + }, + { + "time": 49.064402, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1230, + "droppedFrames": 2 + }, + { + "time": 54.070547, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1355, + "droppedFrames": 2 + }, + { + "time": 59.074726, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1480, + "droppedFrames": 2 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.000s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=soft", + "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "DB234713758310A2D499A43D05AA6C18", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-sidebar-no-blur", + "url": "http://nas.test:8767/ui/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.033913792, + "cpuPercent": 23.916614922404463, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 20.768929, + "cpuPercent": 0.7347095803028267 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.10385, + "cpuPercent": 0.0002797628045609221 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 252.648093, + "cpuPercent": 10.692229648691951 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.891369, + "cpuPercent": 0.001461261077393956 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 308.995509, + "cpuPercent": 11.149349581933611 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 17.561058, + "cpuPercent": 0.6363554693243791 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.216036, + "cpuPercent": 0.0026827254651645813 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 15.419243, + "cpuPercent": 0.6963471057274129 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 97806, + "cpuTime": 0.574082, + "cpuPercent": 0.0031997870771654597 + } + ], + "startState": { + "time": 19.107614, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 482, + "droppedFrames": 0 + }, + "states": [ + { + "time": 24.112501, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 607, + "droppedFrames": 0 + }, + { + "time": 29.117725, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 732, + "droppedFrames": 0 + }, + { + "time": 34.120517, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 857, + "droppedFrames": 0 + }, + { + "time": 39.12401, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 982, + "droppedFrames": 0 + }, + { + "time": 44.127725, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1107, + "droppedFrames": 0 + }, + { + "time": 49.131986, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1232, + "droppedFrames": 0 + }, + { + "time": 54.13742, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1358, + "droppedFrames": 0 + }, + { + "time": 59.141811, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1483, + "droppedFrames": 0 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.008s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.009s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", + "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "DA656BDD085FDB179AA68EB4D8846E9D", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + }, + { + "name": "full-promoted-sidebar", + "url": "http://nas.test:8767/ui-pulse/player.html", + "browser": "Chrome/152.0.7977.83", + "elapsed": 40.02819725, + "cpuPercent": 33.15494804103371, + "processes": [ + { + "type": "browser", + "id": 75443, + "cpuTime": 23.500303, + "cpuPercent": 0.6964790301666626 + }, + { + "type": "renderer", + "id": 94826, + "cpuTime": 0.116371, + "cpuPercent": 0.0009618219816282046 + }, + { + "type": "renderer", + "id": 78372, + "cpuTime": 276.236076, + "cpuPercent": 11.745170462304618 + }, + { + "type": "renderer", + "id": 75458, + "cpuTime": 0.979805, + "cpuPercent": 0.0016913077443177602 + }, + { + "type": "GPU", + "id": 75451, + "cpuTime": 347.068405, + "cpuPercent": 19.28213991700553 + }, + { + "type": "network.mojom.NetworkService", + "id": 75452, + "cpuTime": 18.895153, + "cpuPercent": 0.7291285145248461 + }, + { + "type": "storage.mojom.StorageService", + "id": 75453, + "cpuTime": 0.239846, + "cpuPercent": 0.0025806807974596115 + }, + { + "type": "audio.mojom.AudioService", + "id": 75727, + "cpuTime": 16.60185, + "cpuPercent": 0.6963116481594668 + }, + { + "type": "passage_embeddings.mojom.PassageEmbeddingsService", + "id": 3884, + "cpuTime": 0.102017, + "cpuPercent": 0.00048465834918408606 + } + ], + "startState": { + "time": 19.029156, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 481, + "droppedFrames": 1 + }, + "states": [ + { + "time": 24.033059, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 606, + "droppedFrames": 1 + }, + { + "time": 29.039119, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 731, + "droppedFrames": 1 + }, + { + "time": 34.042888, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 856, + "droppedFrames": 1 + }, + { + "time": 39.047007, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 981, + "droppedFrames": 1 + }, + { + "time": 44.049278, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1106, + "droppedFrames": 1 + }, + { + "time": 49.053575, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1231, + "droppedFrames": 1 + }, + { + "time": 54.056401, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1356, + "droppedFrames": 1 + }, + { + "time": 59.059299, + "paused": false, + "rate": 1, + "width": 1920, + "height": 1080, + "secureContext": false, + "visibility": "visible", + "totalFrames": 1481, + "droppedFrames": 1 + } + ], + "logs": [ + "Loading segments...", + "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", + "[MSE] > MediaSource onSourceOpen", + "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", + "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", + "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", + "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", + "[TSDemuxer] > MP2 audio detected, enabling software decode", + "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", + "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", + "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", + "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", + "[VideoRenderPipeline] > Render gate enabled for 1920x1080", + "[WorkerAudioDecoder] > MP2 decoder initialized successfully", + "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", + "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", + "[PCMAudioPlayer] > AudioContext state changed to: running", + "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.004s", + "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", + "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", + "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.023s", + "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", + "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", + "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", + "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", + "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", + "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" + ], + "mediaProperties": [ + { + "method": "Media.playerPropertiesChanged", + "playerId": "5565B8F4214835840C04E96512BA3DC3", + "properties": [ + { + "name": "kVideoDecoderName", + "value": "VideoToolboxVideoDecoder" + }, + { + "name": "kAudioDecoderName", + "value": "FFmpegAudioDecoder" + }, + { + "name": "kVideoTracks", + "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" + }, + { + "name": "kFrameUrl", + "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" + }, + { + "name": "kAudioTracks", + "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" + }, + { + "name": "kIsVideoDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kResolution", + "value": "1920x1080" + }, + { + "name": "kRendererName", + "value": "RendererImpl" + }, + { + "name": "kIsPlatformVideoDecoder", + "value": "true" + }, + { + "name": "kIsAudioDecryptingDemuxerStream", + "value": "false" + }, + { + "name": "kFrameTitle", + "value": "rtp2httpd Player" + }, + { + "name": "kIsPlatformAudioDecoder", + "value": "false" + } + ] + } + ], + "mediaErrors": [] + } + ], + "demux": { + "baseline": [ + { + "size": 1316, + "ms": [114.08679099999998, 110.01800000000003, 109.58754200000004], + "digest": "4e4ff325dd930cce238cb51a64409f4140e59630200a5d947d1593d34da4ca35" + }, + { + "size": 18800, + "ms": [104.57475, 103.74287500000003, 104.74183400000004], + "digest": "61ad96d11fc76cf67e5a32545ddeb65037e86777ba912deab26bf101e4f129df" + }, + { + "size": 65536, + "ms": [100.97912500000007, 100.96720800000003, 101.53758300000004], + "digest": "f40f38e8a7a70dd97393d6c8943f50e0be6b5f97c99f61b8604de106dcfade4c" + } + ], + "optimized": [ + { + "size": 1316, + "ms": [103.67195799999999, 103.23041699999999, 97.76908400000002], + "digest": "4e4ff325dd930cce238cb51a64409f4140e59630200a5d947d1593d34da4ca35" + }, + { + "size": 18800, + "ms": [94.9675420000001, 93.677416, 96.79600000000005], + "digest": "61ad96d11fc76cf67e5a32545ddeb65037e86777ba912deab26bf101e4f129df" + }, + { + "size": 65536, + "ms": [92.1377500000001, 91.99904100000003, 92.46566699999994], + "digest": "f40f38e8a7a70dd97393d6c8943f50e0be6b5f97c99f61b8604de106dcfade4c" + } + ] + }, + "mp2Equality": [ + { + "chunkBytes": 97, + "pcmBytes": 11520000, + "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" + }, + { + "chunkBytes": 576, + "pcmBytes": 11520000, + "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" + }, + { + "chunkBytes": 4096, + "pcmBytes": 11520000, + "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" + } + ], + "wsola": [ + "mp2_decoder-mvgR0R-X.wasm 1 0.80 1440000", + "mp2_decoder.wasm 1 0.73 1440000", + "mp2_decoder-mvgR0R-X.wasm 0.9 378.64 1598400", + "mp2_decoder.wasm 0.9 93.47 1598400", + "mp2_decoder-mvgR0R-X.wasm 1.01 337.89 1424160", + "mp2_decoder.wasm 1.01 82.53 1424160", + "mp2_decoder-mvgR0R-X.wasm 1.2 283.87 1198080", + "mp2_decoder.wasm 1.2 69.32 1198080", + "mp2_decoder-mvgR0R-X.wasm 2 176.91 720000", + "mp2_decoder.wasm 2 41.93 720000" + ], + "lifecycle": [ + { + "name": "playing", + "time": 14.129655, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + } + ] + }, + { + "name": "pause", + "time": 14.133419, + "rate": 1, + "paused": true, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + } + ] + }, + { + "name": "paused", + "time": 14.133419, + "rate": 1, + "paused": true, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + } + ] + }, + { + "name": "resumed", + "time": 20.151746, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + } + ] + }, + { + "name": "seeked", + "time": 19.610663, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + }, + { + "type": "waiting", + "time": 15.151746 + }, + { + "type": "canplay", + "time": 15.151746 + }, + { + "type": "playing", + "time": 15.151746 + } + ] + }, + { + "name": "1.2x", + "time": 26.793459, + "rate": 1.2, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + }, + { + "type": "waiting", + "time": 15.151746 + }, + { + "type": "canplay", + "time": 15.151746 + }, + { + "type": "playing", + "time": 15.151746 + } + ] + }, + { + "name": "background", + "time": 31.832882, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "hidden", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + }, + { + "type": "waiting", + "time": 15.151746 + }, + { + "type": "canplay", + "time": 15.151746 + }, + { + "type": "playing", + "time": 15.151746 + } + ] + }, + { + "name": "foreground", + "time": 38.85855, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + }, + { + "type": "waiting", + "time": 15.151746 + }, + { + "type": "canplay", + "time": 15.151746 + }, + { + "type": "playing", + "time": 15.151746 + } + ] + }, + { + "name": "channel-reload", + "time": 9.599715, + "rate": 1, + "paused": false, + "ready": 4, + "visibility": "visible", + "secure": false, + "events": [ + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 0.690605 + }, + { + "type": "canplay", + "time": 0.725333 + }, + { + "type": "playing", + "time": 0.725333 + }, + { + "type": "paused", + "time": 14.133419 + }, + { + "type": "playing", + "time": 14.133424 + }, + { + "type": "waiting", + "time": 15.151746 + }, + { + "type": "canplay", + "time": 15.151746 + }, + { + "type": "playing", + "time": 15.151746 + }, + { + "type": "waiting", + "time": 0 + }, + { + "type": "media-info", + "e": {} + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + } + } + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + } + } + }, + { + "type": "canplay", + "time": 0 + }, + { + "type": "playing", + "time": 0 + }, + { + "type": "media-info", + "e": { + "video": { + "codec": "avc1.4d4028", + "width": 1920, + "height": 1080, + "scanType": "progressive", + "frameRate": 25 + }, + "audio": { + "codec": "mp2", + "channelCount": 2 + }, + "bitrate": { + "bitsPerSecond": 2459000, + "source": "measured" + } + } + }, + { + "type": "waiting", + "time": 1.692994 + }, + { + "type": "canplay", + "time": 1.728 + }, + { + "type": "playing", + "time": 1.728 + } + ] + } + ], + "ui": [ + { + "name": "desktop-hidden", + "secure": false, + "opacity": "0", + "focusVisible": false, + "animation": "none", + "animationState": "running", + "video": { + "time": 12.048613, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [1280, 633] + }, + { + "name": "desktop-pointer", + "secure": false, + "opacity": "1", + "focusVisible": false, + "animation": "pulse", + "animationState": "running", + "video": { + "time": 12.558978, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [1280, 633] + }, + { + "name": "desktop-hidden-again", + "secure": false, + "opacity": "0", + "focusVisible": false, + "animation": "none", + "animationState": "running", + "video": { + "time": 16.464426, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [1280, 633] + }, + { + "name": "desktop-keyboard", + "secure": false, + "opacity": "1", + "focusVisible": true, + "animation": "pulse", + "animationState": "running", + "video": { + "time": 16.980792, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [1280, 633] + }, + { + "name": "mobile-hidden", + "secure": false, + "opacity": "0", + "focusVisible": false, + "animation": "none", + "animationState": "running", + "video": { + "time": 20.997156, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [390, 844] + }, + { + "name": "mobile-touch", + "secure": false, + "opacity": "1", + "focusVisible": false, + "animation": "pulse", + "animationState": "running", + "video": { + "time": 21.517548, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [390, 844] + }, + { + "name": "mobile-hidden-again", + "secure": false, + "opacity": "0", + "focusVisible": false, + "animation": "none", + "animationState": "running", + "video": { + "time": 25.694267, + "width": 1920, + "height": 1080 + }, + "visibleCanvases": 0, + "viewport": [390, 844] + } + ] +} diff --git a/tools/player-benchmark/results.md b/tools/player-benchmark/results.md new file mode 100644 index 00000000..a4df4f67 --- /dev/null +++ b/tools/player-benchmark/results.md @@ -0,0 +1,92 @@ +# MPEG-TS / MP2 播放器 CPU 测量 + +## 测量条件 + +客户端为 Apple M3 Max、macOS 26.6.2、Chrome 152.0.7977.83,独立浏览器用户目录,窗口 1280×720。服务器为局域网 NAS。节目通过 NAS 已运行的 rtp2httpd 录制,保留原始 MPEG-TS 字节,再按 PCR 时间回放;每次连接从同一位置开始,不转码视频。测试地址使用普通 HTTP,浏览器确认 `isSecureContext === false`。 + +| 节目 | 视频 | 音频 | 视频解码路径 | +| --- | --- | --- | --- | +| IPTV 爱电影 | H.264 Main,1920×1080p,25 fps,约 2.46 Mbps | MP2,48 kHz,双声道 | VideoToolboxVideoDecoder,硬件解码 | +| CCTV-1 | H.264 High,1920×1080i,25 帧 / 50 场,约 8.77 Mbps | MP2,48 kHz,双声道 | FFmpegVideoDecoder,软件解码 | + +所有回放启用 MP2 WASM 软解,关闭画质增强和反交错。MSE 中保留用于媒体时钟和后台播放的静音 AAC 音轨;浏览器报告的 `FFmpegAudioDecoder` 对应此音轨,节目中的 MP2 由 WASM 解码,经 Web Audio 播放。 + +每轮预热 20 秒,再测量 40 或 60 秒。CPU 累计浏览器、渲染器/worker、GPU、网络和音频服务进程,100% 表示占满一个逻辑 CPU。采样剖析另行进行,不计入 CPU 对比。下面的丢帧统计只覆盖稳定测量区间。 + +代码基线为 `4d81cc8`;音频和 TS 优化为 `23aa1c0`,隐藏控件动画优化为 `d88f98d`。完整页面另外比较了 NAS production 前端快照,其 MP2 WASM 与代码基线一致。回放使用一个录制频道,以固定节目内容和网络输入;不是直接比较不同时间的直播画面。 + +## 完整播放器页面 + +页面保留 fancy 玻璃外观、侧栏、所有控件和动画,稳定播放时控件自动隐藏。桌面页面实际 viewport 为 1280×633,DPR 为 2,视频显示区域为 960×540。 + +| 场景 | 基线 CPU | 优化后 CPU | 下降 | +| --- | ---: | ---: | ---: | +| 1080p,1×,两轮均值 | 36.76% | 31.92% | 13.2% | +| 1080i,1×,两轮均值 | 34.64% | 33.22% | 4.1% | + +两轮基线分别为 36.28%、37.24%,优化后为 32.83%、31.01%;每轮稳定测量 40 秒,新增丢帧均为 0。NAS production 前端快照在同一回放条件下为 37.36%,方向一致。中途发生网络断流并自动重连的一轮已剔除并重测,没有把重启后的时钟或丢帧计数混入结果。 + +1080i 按 A/B/B/A 测量,基线为 34.66%、34.62%,优化后为 33.16%、33.29%,均无新增丢帧。其收益较小;这两种视频走不同解码/合成路径,不能仅凭视频码率预测整页 CPU。 + +界面改动仅在控件不可见时停止直播圆点的 CSS 动画。仅设置 `opacity: 0` 时,该动画仍会唤醒合成器;鼠标/触摸显示控件或键盘聚焦时,现在仍恢复原动画。桌面鼠标、Tab 聚焦、390×844 移动布局的触摸显示/自动隐藏均在浏览器验证,并检查了实际画面。 + +诊断时切换简洁外观约为 27.07%;关闭侧栏模糊并停止隐藏动画约为 23.92%。这些是改变外观的诊断对照,未计入优化结果,也未作为默认设置。视频绘制隔离、调整层级、禁用隐藏滤镜、提升侧栏合成层均没有比停止隐藏动画进一步降低开销,因此没有保留相应代码。剩余玻璃合成开销被保留。 + +## 播放引擎 + +此表使用最小测试页,只显示视频,使用正式 playback backend。 + +| 场景 | 基线 CPU | 优化后 CPU | 测量时间 | 优化轮次新增丢帧 | +| --- | ---: | ---: | --- | ---: | +| 1080p,正常 1× | 26.73%、27.95% | 26.56% | 每轮 60 秒 | 0 | +| 1080i,正常 1× | 31.78% | 30.95% | 每轮 40 秒 | 0 | +| 1080p,持续 1.2× 追直播 | 33.94% | 28.47% | 每轮 40 秒 | 0 | + +正常速度下 WSOLA 已有同步死区,可进入 1× 直接复制路径,所以单独优化拉伸不能带来很大的常速整页降幅。1080p 的重复测量没有证明显著的常速收益;1080i 的约 0.8 个百分点差异也不足以单独支持稳定百分比承诺。 + +持续追直播测试将输入按 1.2× PCR 时钟发送,浏览器所有测量点的实际播放速率均为 1.2。该场景整体 CPU 下降约 16.1%。常速优化后日志的音画漂移约在 ±2.1 ms 内;追直播启动阶段出现约 75 ms 的暂态,随后收敛到数毫秒。该日志诊断不是扬声器与屏幕的物理延迟测量。 + +早期八路展开、`-O2` 构建另做了 A/B/B/A:基线 26.73%、27.95%,候选 26.73%、26.54%。它支持“常速整页差异很小”的判断;最终 `-O3` 构建的结果单列于上表,没有混称同一构建。 + +## 局部计算 + +WSOLA 测试输入为节目中提取的 30 秒、48 kHz 双声道 float32 PCM,预热后取三轮均值。每种速率均逐字节比较基线和优化输出。 + +| 播放速率 | 基线耗时 | 优化耗时 | 输出 | +| --- | ---: | ---: | --- | +| 1× | 0.80 ms | 0.73 ms | 完全相同 | +| 0.9× | 378.64 ms | 93.47 ms | 完全相同 | +| 1.01× | 337.89 ms | 82.53 ms | 完全相同 | +| 1.2× | 283.87 ms | 69.32 ms | 完全相同 | +| 2× | 176.91 ms | 41.93 ms | 完全相同 | + +非 1× 拉伸耗时降低约 75%。优化同时计算八个相邻候选的相关性,保留穷举范围、每个累加器的求和顺序和并列候选的选择顺序,没有降低音质或缩小搜索范围。 + +TS 解复用/封装对完整爱电影录制运行,三个网络分块尺寸的输出摘要分别核对。以下为三次计时的中位数。 + +| 分块大小 | 基线 | 优化 | 耗时下降 | +| --- | ---: | ---: | ---: | +| 1,316 字节 | 110.02 ms | 103.23 ms | 6.2% | +| 18,800 字节 | 104.57 ms | 94.97 ms | 9.2% | +| 65,536 字节 | 100.98 ms | 92.14 ms | 8.8% | + +三个尺寸各自的 MP4 初始化段、媒体段和 MP2 输出 SHA-256 均与基线相同。不同分块尺寸可能影响 MP4 分段,因此只比较同一分块尺寸前后的摘要。较早的重复测量耗时下降约 9–11%;局部小基准存在波动,不把它当作整页 CPU 降幅。 + +## 兼容性与取舍 + +- 保留普通 HTTP、MSE 静音音轨、MP2、音画同步、变速、暂停/恢复、seek、频道切换和后台恢复。不引入 AudioWorklet、SharedArrayBuffer 或其他只在安全上下文可用的 API。 +- WSOLA 回归覆盖多种采样率、单/双声道、细碎输入、时长、音调、静音和 reset。TS 回归覆盖 188/192/204 字节包、PCR 回绕和 discontinuity。 +- 正式 `-O3` WASM 对真实节目的 MP2 数据分别按 97、576、4096 字节分块解码,三种分块的 PCM 均逐字节等于基线,也彼此一致,验证了跨输入块的帧缓存。 +- 在真实 HTTP 浏览器中验证了启动、暂停后时钟停止、恢复、回退 seek、1.2×、切到后台再返回、重新加载频道和销毁,无播放错误。 +- SIMD 构建、十六路展开和更大的 Web Audio latency hint 没有表现出值得增加兼容分支或代码量的整体收益,未采用。 +- 常速下剩余开销主要在浏览器的媒体解码、音频输出和视频合成;1080i 在此 Chrome 环境走软件视频解码。上述结果不代表其他浏览器的视频解码能力,也没有直接测量手机温度或电池功耗。 + +## 输入校验 + +| 输入 | SHA-256 | +| --- | --- | +| 爱电影原始 TS | `67eba614b061ee3f9cc8a10cd05946cede7022ec5092baddc129c61ab26b2879` | +| CCTV-1 原始 TS | `d283769a6a8d276f28de3f602354a1dffe38261e5549926846e47fd15cc7ca2d` | +| 基线 MP2 WASM | `95afb42c86996c4e160cda7d7a1ee90541640ae997b00c857255076d3e82b465` | + +复现方法见 [README.md](README.md),精简测量记录见 [results.json](results.json),保留逐进程 CPU、视频采样状态、解码器信息、日志和功能验证状态。记录中的服务器主机名统一替换为 `nas.test`。录像不随仓库分发。 diff --git a/tools/player-benchmark/serve.mjs b/tools/player-benchmark/serve.mjs new file mode 100644 index 00000000..d9693db5 --- /dev/null +++ b/tools/player-benchmark/serve.mjs @@ -0,0 +1,112 @@ +import fs from "node:fs"; +import http from "node:http"; +import path from "node:path"; + +if (!process.argv[2] || !process.argv[3]) + throw new Error("Usage: node serve.mjs [port]"); +const base = path.resolve(process.argv[2]); +const port = Number(process.argv[4] ?? 8766); +const stream = fs.readFileSync(process.argv[3]); +const pcrs = []; +let first; +let previous = 0; +let pcrPid; +for (let p = 0; p + 188 <= stream.length; p += 188) { + if (stream[p] !== 0x47) throw Error("TS sync lost"); + if (stream[p + 3] & 0x20 && stream[p + 4] >= 7 && stream[p + 5] & 0x10) { + const pid = ((stream[p + 1] & 31) << 8) | stream[p + 2]; + pcrPid ??= pid; + if (pid !== pcrPid) continue; + const q = p + 6; + const pcr = + stream[q] * 33554432 + stream[q + 1] * 131072 + stream[q + 2] * 512 + stream[q + 3] * 2 + (stream[q + 4] >> 7); + first ??= pcr; + const time = ((pcr - first + 8589934592) % 8589934592) / 90; + if (time >= previous) { + pcrs.push({ offset: p + 188, time }); + previous = time; + } + } +} +if (!pcrs.length) throw new Error("The recording must contain 188-byte TS packets with PCR timestamps"); +console.log("Replay", stream.length, pcrs.length, previous / 1000, "seconds"); +http + .createServer((req, res) => { + const url = new URL(req.url, "http://localhost"); + if (url.pathname === "/stream") { + res.writeHead(200, { + "Content-Type": "video/mp2t", + "Cache-Control": "no-store", + "Access-Control-Allow-Origin": "*", + }); + const speed = Number(url.searchParams.get("speed") ?? 1); + if (!Number.isFinite(speed) || speed <= 0 || speed > 2) { + res.end(); + return; + } + const start = performance.now(); + let index = 0, + offset = 0, + timer; + const send = () => { + if (res.destroyed) return; + const elapsed = (performance.now() - start) * speed; + while (index < pcrs.length && pcrs[index].time <= elapsed) index++; + const end = pcrs[Math.max(0, index - 1)].offset; + if (end > offset) { + res.write(stream.subarray(offset, end)); + offset = end; + } + if (index >= pcrs.length) { + res.end(stream.subarray(offset)); + return; + } + timer = setTimeout(send, Math.max(1, pcrs[index].time / speed - (performance.now() - start))); + }; + res.on("close", () => clearTimeout(timer)); + send(); + return; + } + if (url.pathname === "/playlist.m3u") { + res.setHeader("Content-Type", "audio/x-mpegurl"); + res.end("#EXTM3U\n#EXTINF:-1,Recorded broadcast\n/stream\n"); + return; + } + let file; + try { + file = path.join(base, decodeURIComponent(url.pathname)); + } catch { + res.writeHead(400); + res.end(); + return; + } + if (!file.startsWith(`${base}/`)) { + res.writeHead(403); + res.end(); + return; + } + fs.stat(file, (err, stat) => { + if (err || !stat.isFile()) { + res.writeHead(404); + res.end(); + return; + } + res.setHeader( + "Content-Type", + file.endsWith(".js") + ? "text/javascript" + : file.endsWith(".wasm") + ? "application/wasm" + : file.endsWith(".html") + ? "text/html" + : file.endsWith(".css") + ? "text/css" + : file.endsWith(".png") + ? "image/png" + : "application/octet-stream", + ); + res.setHeader("Cache-Control", "no-store"); + fs.createReadStream(file).pipe(res); + }); + }) + .listen(port, "0.0.0.0", () => console.log("Listening", port)); diff --git a/tools/player-benchmark/wasm-benchmark.mjs b/tools/player-benchmark/wasm-benchmark.mjs new file mode 100644 index 00000000..7f48b1e9 --- /dev/null +++ b/tools/player-benchmark/wasm-benchmark.mjs @@ -0,0 +1,46 @@ +import assert from "node:assert/strict"; +import fs from "node:fs"; + +if (process.argv.length < 5) + throw new Error("Usage: node wasm-benchmark.mjs <48kHz-stereo.f32> "); +const inputBytes = fs.readFileSync(process.argv[2]); +const pcm = new Float32Array(inputBytes.buffer, inputBytes.byteOffset, inputBytes.byteLength / 4); +async function run(file, ratio) { + const { instance } = await WebAssembly.instantiate(fs.readFileSync(file), { + env: { emscripten_notify_memory_growth() {} }, + }); + const x = instance.exports; + x._initialize(); + const h = x.wsola_create(48000, 2); + x.wsola_set_ratio(h, ratio); + const n = 1152; + const p = x.malloc(n * 8), + o = x.malloc(12000 * 8); + const out = []; + let ms = 0, + frames = 0; + for (let repeat = 0; repeat < 5; repeat++) { + x.wsola_reset(h); + const start = performance.now(); + for (let i = 0; i < pcm.length; i += n * 2) { + const inputFrames = Math.min(n, (pcm.length - i) / 2); + new Float32Array(x.memory.buffer, p, inputFrames * 2).set(pcm.subarray(i, i + inputFrames * 2)); + const got = x.wsola_process(h, p, inputFrames, o, 12000); + if (repeat === 4) { + frames += got; + out.push(Buffer.from(new Float32Array(x.memory.buffer, o, got * 2).slice().buffer)); + } + } + if (repeat > 0 && repeat < 4) ms += performance.now() - start; + } + return { ms: ms / 3, out: Buffer.concat(out), frames }; +} +for (const ratio of [1, 0.9, 1.01, 1.2, 2]) { + const results = []; + for (const file of process.argv.slice(3)) { + const r = await run(file, ratio); + results.push(r); + console.log(file.split("/").at(-1), ratio, r.ms.toFixed(2), r.frames); + } + for (const r of results.slice(1)) assert.deepEqual(r.out, results[0].out); +} From 122f0cfe648af06c0a3a330ec6046518d6305431 Mon Sep 17 00:00:00 2001 From: Stackie Jia Date: Tue, 8 Sep 2026 05:16:13 +0800 Subject: [PATCH 4/4] chore(player): remove benchmark tools and result artifacts --- tools/player-benchmark/README.md | 83 - tools/player-benchmark/build.mjs | 21 - tools/player-benchmark/demux-benchmark.ts | 48 - tools/player-benchmark/index.html | 9 - tools/player-benchmark/main.ts | 20 - tools/player-benchmark/measure.mjs | 172 - tools/player-benchmark/results.json | 10187 -------------------- tools/player-benchmark/results.md | 92 - tools/player-benchmark/serve.mjs | 112 - tools/player-benchmark/wasm-benchmark.mjs | 46 - 10 files changed, 10790 deletions(-) delete mode 100644 tools/player-benchmark/README.md delete mode 100644 tools/player-benchmark/build.mjs delete mode 100644 tools/player-benchmark/demux-benchmark.ts delete mode 100644 tools/player-benchmark/index.html delete mode 100644 tools/player-benchmark/main.ts delete mode 100644 tools/player-benchmark/measure.mjs delete mode 100644 tools/player-benchmark/results.json delete mode 100644 tools/player-benchmark/results.md delete mode 100644 tools/player-benchmark/serve.mjs delete mode 100644 tools/player-benchmark/wasm-benchmark.mjs diff --git a/tools/player-benchmark/README.md b/tools/player-benchmark/README.md deleted file mode 100644 index c752c2cf..00000000 --- a/tools/player-benchmark/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# 播放器性能测量 - -使用真实 MPEG-TS 录制片段按 PCR 时钟回放,比较播放器整个浏览器进程组的 CPU 时间。测试页使用正式 MSE playback backend,启用 MP2 WASM 软解、关闭画质增强和反交错,不引入仅在安全上下文可用的 API。普通局域网 HTTP 地址可直接测试。 - -## 构建和回放 - -先录制至少两分钟的真实节目。保留原始 TS 字节,不转码。录制文件需要包含 PCR,并使用 188 字节 TS 包。录像不应提交进仓库。 - -```sh -curl 'http://your-server/path/to/channel' --max-time 180 -o /tmp/program.ts -node tools/player-benchmark/build.mjs /tmp/player-bench/current -node tools/player-benchmark/serve.mjs /tmp/player-bench /tmp/program.ts 8766 -``` - -`curl` 在直播录制达到 `--max-time` 时以超时结束属正常情况;仍需检查文件有效。用 `ffprobe` 确认分辨率、扫描方式和 MP2 音轨。 - -打开 `http://localhost:8766/current/tools/player-benchmark/index.html`。异机 HTTP 验证时将 localhost 换成服务器的局域网地址。`source` 查询参数可以指定真实直播地址,例如 `?source=`。默认播放同源 `/stream`,每次连接都从同一段节目开头按原 PCR 节奏回放。`/stream?speed=1.2` 可提供持续追直播的输入速率。 - -对修改前后版本分别构建到不同目录,再由同一个回放服务提供。不要让两个播放器同时运行。 - -## 测量浏览器 CPU - -使用独立浏览器用户目录,避免把日常标签页和插件计入结果。例如 macOS Chrome: - -```sh -'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' \ - --user-data-dir=/tmp/player-bench-chrome --remote-debugging-port=9223 \ - --no-first-run --no-default-browser-check \ - --autoplay-policy=no-user-gesture-required \ - --disable-background-networking --disable-component-update \ - --window-size=1280,720 about:blank - -node tools/player-benchmark/measure.mjs \ - http://localhost:8766/current/tools/player-benchmark/index.html \ - /tmp/player-result.json 60 -``` - -脚本预热 20 秒后,累计浏览器、渲染器(含 worker)、GPU、网络和音频服务进程的 CPU 时间,100% 表示占满一个逻辑 CPU。它同时保存实际播放时间、丢帧数、可见状态、音轨/视频解码器信息及播放器日志。检查是否真实播放、MP2 是否启用、是否走同一种视频解码路径,再比较 CPU。采用 A/B/B/A 顺序并保持窗口大小、可见性、节目片段和测量区间一致。 - -脚本要求日志中出现 MP2 解码器初始化成功。播放重连、媒体错误、时钟倒退、页面隐藏或进程集合变化会令测量失败;失败轮次不应计入对比。完整播放器页面需要开启日志(当前页面默认已开启),关闭画质增强和反交错,并在两版使用相同外观。也可以将以下内容保存为 `/tmp/player-setup.js`,作为脚本第五个参数传入;它会在页面初始化前执行,并随测量结果保存: - -```js -localStorage.setItem("rtp2httpd-player-auto-deinterlace", "false"); -localStorage.setItem("rtp2httpd-player-picture-enhancement", "false"); -localStorage.setItem("rtp2httpd-player-appearance", "fancy"); -``` - -```sh -node tools/player-benchmark/measure.mjs \ - http://your-server/player.html /tmp/full-player.json 60 9223 /tmp/player-setup.js -``` - -**采样剖析与 CPU 对比应分开运行。** DevTools CPU profiler 本身会增加开销。不能把 JavaScript 采样占比、单函数加速比、渲染器 CPU 或服务器 CPU 当成整页 CPU 降幅。启动丢帧和稳定测量区间内的丢帧也应分开统计。 - -## 定位局部开销 - -解复用/封装基准会测试不同网络分块尺寸,并输出媒体及 MP2 数据的 SHA-256;对相同输入,修改前后的摘要必须一致: - -```sh -node tools/player-benchmark/build.mjs /tmp/player-demux demux -node /tmp/player-demux/demux-benchmark.js /tmp/program.ts -``` - -WSOLA 基准需要 48 kHz、双声道 float32 PCM。下面仅转换音频测试输入,不用于整页回放: - -```sh -ffmpeg -i /tmp/program.ts -t 30 -vn -ar 48000 -ac 2 -f f32le /tmp/program.f32 -node tools/player-benchmark/wasm-benchmark.mjs /tmp/program.f32 \ - /tmp/baseline.wasm web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm -``` - -它在 1×、0.9×、1.01×、1.2×、2× 下测量,并断言输出逐字节一致。使用正式基线构建中的 WASM 文件。单元测试另覆盖不同采样率、单/双声道、细碎输入、静音、变速后的时长/音调及 reset。 - -## 已验证的取舍 - -- 穷举 WSOLA 搜索保留所有候选位置;同时计算八个相邻候选,保持每个相关性累加和并列结果的顺序。避免通过缩小搜索范围或抽样来换取速度和音质损失。 -- TS 头直接从输入缓冲区读取,减少每包临时视图、对象和闭包;仍保留 188/192/204 字节包处理、PCR 回绕和 discontinuity 标记。 -- 拉伸结果同步写入 AudioBuffer,使用借用的 WASM 视图,省去中间 PCM 复制。不可在下次 process 后保留该视图。 -- 保留 MSE 静音音轨、现有音画同步、变速、后台恢复和 HTTP 支持。移除静音音轨会影响后台播放,不能只为 CPU 数字取消。 -- 控件隐藏时停止直播圆点动画,避免不可见动画持续唤醒合成器;鼠标/触摸显示控件以及键盘聚焦时恢复动画,保留玻璃外观。 -- 测过 SIMD 构建和更大的展开宽度;额外收益很小且增加兼容分支或代码量,未采用。测试更大的 Web Audio latency hint 后未发现可靠的整页收益,也未改变默认延迟。 - -本次真实节目与测量数据见 [results.md](results.md)。 diff --git a/tools/player-benchmark/build.mjs b/tools/player-benchmark/build.mjs deleted file mode 100644 index 1c72b5c2..00000000 --- a/tools/player-benchmark/build.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { build } from "vite"; - -const root = fileURLToPath(new URL("../../", import.meta.url)); -if (!process.argv[2]) throw new Error("Usage: node tools/player-benchmark/build.mjs "); -const demux = process.argv[3] === "demux"; -await build({ - root, - configFile: false, - base: "./", - build: { - ssr: demux, - outDir: resolve(process.argv[2]), - emptyOutDir: true, - sourcemap: true, - rolldownOptions: { - input: resolve(root, demux ? "tools/player-benchmark/demux-benchmark.ts" : "tools/player-benchmark/index.html"), - }, - }, -}); diff --git a/tools/player-benchmark/demux-benchmark.ts b/tools/player-benchmark/demux-benchmark.ts deleted file mode 100644 index 5f46aa33..00000000 --- a/tools/player-benchmark/demux-benchmark.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { createHash } from "node:crypto"; -import fs from "node:fs"; - -Object.defineProperty(globalThis, "self", { value: globalThis, configurable: true }); -const { default: TSDemuxer } = await import("../../web-ui/src/playback-engine/demux/ts-demuxer"); -const { default: MP4Remuxer } = await import("../../web-ui/src/playback-engine/remux/mp4-remuxer"); -const { default: Log } = await import("../../web-ui/src/playback-engine/utils/logger"); -Log.setLogLevel(0); - -if (!process.argv[2]) throw new Error("Pass a TS recording path"); -const input = fs.readFileSync(process.argv[2]); -const sizes = [1316, 18800, 65536]; -for (const size of sizes) { - const times = []; - let digest = ""; - for (let repeat = 0; repeat < 5; repeat++) { - const probe = TSDemuxer.probe(input); - const demux = new TSDemuxer(probe); - const remux = new MP4Remuxer({}); - const hash = createHash("sha256"); - demux.onError = (t, i) => { - throw Error(`${t}:${i}`); - }; - demux.onRawAudioData = (f) => { - if (repeat === 4) hash.update(f.data); - }; - remux.bindDataSource(demux as never); - remux.onInitSegment = (_t, s) => { - if (repeat === 4) hash.update(new Uint8Array(s.data)); - }; - remux.onMediaSegment = (_t, s) => { - if (repeat === 4) hash.update(new Uint8Array(s.data)); - }; - let used = 0; - const t = performance.now(); - while (used + 188 <= input.length) { - const data = input.subarray(used, Math.min(input.length, used + size)); - const consumed = demux.parseChunks(data, used); - if (!consumed) throw Error("No progress"); - used += consumed; - } - demux.flushSegmentBoundary(); - remux.flushStashedSamples(); - times.push(performance.now() - t); - digest = hash.digest("hex"); - } - console.log(JSON.stringify({ size, ms: times.slice(1, 4), digest })); -} diff --git a/tools/player-benchmark/index.html b/tools/player-benchmark/index.html deleted file mode 100644 index 270582d8..00000000 --- a/tools/player-benchmark/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - Player CPU benchmark - - - - - - diff --git a/tools/player-benchmark/main.ts b/tools/player-benchmark/main.ts deleted file mode 100644 index e8c51575..00000000 --- a/tools/player-benchmark/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createMSEPlaybackBackend } from "../../web-ui/src/playback-engine"; -import mp2 from "../../web-ui/src/playback-engine/wasm/minimp3/mp2_decoder.wasm?url"; - -const video = document.querySelector("video"); -if (!video) throw new Error("Missing benchmark video element"); -const params = new URLSearchParams(location.search); -const player = createMSEPlaybackBackend(video, { - wasmDecoders: { mp2 }, - autoDeinterlace: false, - pictureEnhancement: false, - logLevel: 4, - liveSync: true, -}); -const events: unknown[] = []; -player.on("error", (e) => events.push({ type: "error", e })); -player.on("media-info", (e) => events.push({ type: "media-info", e })); -player.on("playback-state-change", (e) => events.push({ type: e, time: video.currentTime })); -Object.assign(window, { player, events, video }); -player.loadSegments([{ url: params.get("source") ?? "/stream" }]); -void player.play(); diff --git a/tools/player-benchmark/measure.mjs b/tools/player-benchmark/measure.mjs deleted file mode 100644 index 42bb4e0a..00000000 --- a/tools/player-benchmark/measure.mjs +++ /dev/null @@ -1,172 +0,0 @@ -import { mkdir, readFile, writeFile } from "node:fs/promises"; -import { dirname, resolve } from "node:path"; - -const [url, output, durationArg = "60", port = "9223", setupFile] = process.argv.slice(2); -if (!url || !output) - throw new Error("Usage: node measure.mjs [seconds] [CDP-port] [setup.js]"); -const setupScript = setupFile ? await readFile(setupFile, "utf8") : undefined; -const duration = Number(durationArg); -if (!Number.isFinite(duration) || duration <= 0) throw new Error("Invalid measurement duration"); -const version = await (await fetch(`http://127.0.0.1:${port}/json/version`)).json(); -const socket = new WebSocket(version.webSocketDebuggerUrl); -await new Promise((resolve, reject) => { - socket.addEventListener("open", resolve, { once: true }); - socket.addEventListener("error", reject, { once: true }); -}); -let sequence = 0; -const pending = new Map(); -const logs = []; -const media = []; -let navigationStarted = Infinity; -function call(method, params = {}, sessionId) { - return new Promise((resolve, reject) => { - const id = ++sequence; - const timeout = setTimeout(() => { - pending.delete(id); - reject(new Error(`${method} timed out`)); - }, 30000); - pending.set(id, { resolve, reject, timeout }); - socket.send(JSON.stringify({ id, method, params, sessionId })); - }); -} -socket.addEventListener("message", ({ data }) => { - const message = JSON.parse(data); - if (message.id) { - const request = pending.get(message.id); - if (!request) return; - pending.delete(message.id); - clearTimeout(request.timeout); - if (message.error) request.reject(new Error(JSON.stringify(message.error))); - else request.resolve(message.result); - } else if (message.method === "Runtime.consoleAPICalled") { - if (message.params.timestamp < navigationStarted) return; - logs.push(message.params.args.map((arg) => arg.value ?? arg.description).join(" ")); - } else if (message.method === "Runtime.exceptionThrown") { - if (message.params.timestamp < navigationStarted) return; - logs.push(JSON.stringify(message.params)); - } else if (message.method?.startsWith("Media.")) { - media.push({ method: message.method, ...message.params }); - } else if (message.method === "Target.attachedToTarget") { - void call("Runtime.enable", {}, message.params.sessionId).catch(() => {}); - } -}); -const { targetInfos } = await call("Target.getTargets"); -const page = targetInfos.find((target) => target.type === "page"); -if (!page) throw new Error("Launch the dedicated benchmark browser with an about:blank tab first"); -const { sessionId } = await call("Target.attachToTarget", { targetId: page.targetId, flatten: true }); -const evaluate = async (expression) => { - const result = await call("Runtime.evaluate", { expression, returnByValue: true }, sessionId); - if (result.exceptionDetails) throw new Error(JSON.stringify(result.exceptionDetails)); - return result.result.value; -}; -const snapshot = () => - evaluate(`(() => { - const video = [...document.querySelectorAll('video')].find(v => !v.paused) ?? document.querySelector('video'); - if (!video) return null; - const quality = video.getVideoPlaybackQuality(); - return { time: video.currentTime, paused: video.paused, rate: video.playbackRate, - width: video.videoWidth, height: video.videoHeight, secureContext: isSecureContext, - visibility: document.visibilityState, viewport: { width: innerWidth, height: innerHeight, dpr: devicePixelRatio }, - theme: document.documentElement.className, - preferences: Object.fromEntries(["rtp2httpd-player-auto-deinterlace", "rtp2httpd-player-picture-enhancement", "rtp2httpd-player-appearance"].map(key => [key, localStorage.getItem(key)])), - videoRect: video.getBoundingClientRect().toJSON(), totalFrames: quality.totalVideoFrames, - droppedFrames: quality.droppedVideoFrames, events: window.events ?? [] }; -})()`); -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); -let setupIdentifier; -try { - await call("Runtime.enable", {}, sessionId); - await call("Page.enable", {}, sessionId); - await call("Media.enable", {}, sessionId); - await call("Target.setAutoAttach", { autoAttach: true, waitForDebuggerOnStart: false, flatten: true }, sessionId); - if (setupScript) { - ({ identifier: setupIdentifier } = await call( - "Page.addScriptToEvaluateOnNewDocument", - { source: setupScript }, - sessionId, - )); - } - logs.length = 0; - media.length = 0; - navigationStarted = Date.now(); - await call("Page.navigate", { url }, sessionId); - await sleep(20000); - const startState = await snapshot(); - if (!startState || startState.paused || startState.time < 1) throw new Error("Playback did not start"); - const before = await call("SystemInfo.getProcessInfo"); - const start = performance.now(); - const states = []; - for (let time = 0; time < duration; time += 5) { - await sleep(Math.min(5, duration - time) * 1000); - states.push(await snapshot()); - } - const elapsed = (performance.now() - start) / 1000; - const after = await call("SystemInfo.getProcessInfo"); - const processes = after.processInfo.map((process) => ({ - ...process, - cpuPercent: - ((process.cpuTime - (before.processInfo.find((p) => p.id === process.id)?.cpuTime ?? process.cpuTime)) / - elapsed) * - 100, - })); - const result = { - url, - browser: version.Browser, - setupScript, - elapsed, - startState, - states, - cpuBaseline: before.processInfo, - processes, - processChurn: { - started: after.processInfo.filter((p) => !before.processInfo.some((b) => b.id === p.id)), - exited: before.processInfo.filter((p) => !after.processInfo.some((a) => a.id === p.id)), - }, - cpuPercent: processes.reduce((sum, process) => sum + process.cpuPercent, 0), - logs, - media, - }; - await mkdir(dirname(resolve(output)), { recursive: true }); - await writeFile(output, JSON.stringify(result, null, 2)); - if (result.processChurn.started.length || result.processChurn.exited.length) { - throw new Error(`Browser process set changed during measurement; inspect ${output} and repeat`); - } - if (!logs.some((line) => line.includes("MP2 decoder initialized successfully"))) { - throw new Error(`MP2 software decode was not verified; enable log level 4 and inspect ${output}`); - } - if ( - logs.some((line) => /Failed to initialize MP2|WASM stretcher unavailable|MP2 decode failed|CompileError/.test(line)) - ) { - throw new Error(`Invalid playback run; inspect ${output} for decoder errors`); - } - if (media.some((event) => event.method === "Media.playerErrorsRaised" && event.errors.length > 0)) { - throw new Error(`Media pipeline error; inspect ${output}`); - } - if (logs.some((line) => /Loader error|IOException|Player error:|Retrying playback/.test(line))) { - throw new Error(`Stream failed or restarted; inspect ${output}`); - } - if (states.some((state) => !state || state.paused || state.visibility !== "visible")) { - throw new Error(`Playback paused or became hidden; inspect ${output}`); - } - if ( - states.some((state, index) => state.time <= (index === 0 ? startState : states[index - 1]).time) || - states.at(-1).time <= startState.time + duration * 0.5 - ) { - throw new Error(`Playback did not advance normally; inspect ${output}`); - } - console.log( - JSON.stringify({ - output, - cpuPercent: result.cpuPercent, - start: startState.time, - end: states.at(-1)?.time, - droppedFrames: states.at(-1)?.droppedFrames - startState.droppedFrames, - }), - ); -} finally { - if (setupIdentifier) { - await call("Page.removeScriptToEvaluateOnNewDocument", { identifier: setupIdentifier }, sessionId).catch(() => {}); - } - await call("Page.navigate", { url: "about:blank" }, sessionId).catch(() => {}); - socket.close(); -} diff --git a/tools/player-benchmark/results.json b/tools/player-benchmark/results.json deleted file mode 100644 index 66a34aa5..00000000 --- a/tools/player-benchmark/results.json +++ /dev/null @@ -1,10187 +0,0 @@ -{ - "date": "2026-09-08", - "baselineCommit": "4d81cc8", - "engineCommit": "23aa1c0", - "uiCommit": "d88f98d", - "environment": "Apple M3 Max; macOS 26.6.2; Chrome 152.0.7977.83; window 1280x720", - "notes": [ - "CPU includes all dedicated browser processes; 100% is one logical CPU.", - "The abba-final runs use the intermediate eight-wide -O2 WASM; optimized-final and later runs use -O3.", - "full-simple and later diagnostic variants are not adopted changes.", - "Process baselines and process churn checks were added to the tool during this experiment; older runs do not contain them." - ], - "runs": [ - { - "name": "full-production-valid", - "url": "http://nas.test:8767/production-ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.033648541999995, - "cpuPercent": 37.360252049744346, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 14.586341, - "cpuPercent": 0.7037105291675847 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.078763, - "cpuPercent": 0.0033022221260025067 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 195.271855, - "cpuPercent": 15.076122761251739 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.705299, - "cpuPercent": 0.0033721632905470856 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 222.057183, - "cpuPercent": 20.110193033127448 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 14.297571, - "cpuPercent": 0.7423355372873865 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.171295, - "cpuPercent": 0.005260574733253592 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 12.181514, - "cpuPercent": 0.7106072275714405 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 93928, - "cpuTime": 0.622822, - "cpuPercent": 0.005348001188934325 - } - ], - "startState": { - "time": 18.998907, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 480, - "droppedFrames": 2 - }, - "states": [ - { - "time": 24.003489, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 605, - "droppedFrames": 2 - }, - { - "time": 29.006428, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 730, - "droppedFrames": 2 - }, - { - "time": 34.011151, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 855, - "droppedFrames": 2 - }, - { - "time": 39.016037, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 980, - "droppedFrames": 2 - }, - { - "time": 44.020752, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1105, - "droppedFrames": 2 - }, - { - "time": 49.024725, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1230, - "droppedFrames": 2 - }, - { - "time": 54.030481, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1356, - "droppedFrames": 2 - }, - { - "time": 59.034708, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1481, - "droppedFrames": 2 - } - ], - "logs": [ - "Loading segments...", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/production-ui/assets/mp2_decoder-mvgR0R-X.wasm", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.015s", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.015s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "E6379D8B944569F69C240FFF8C1D2278", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/production-ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-optimized-valid", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.03296458300001, - "cpuPercent": 36.64130086990609, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 15.123463, - "cpuPercent": 0.7065277401916635 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.079799, - "cpuPercent": 0.0016786166275713607 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 204.285679, - "cpuPercent": 14.812512792315419 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.707562, - "cpuPercent": 0.0017235795729529553 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 234.640434, - "cpuPercent": 19.70829061045959 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 14.734316, - "cpuPercent": 0.7172838759034564 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.173417, - "cpuPercent": 0.0033597311965528004 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 12.598113, - "cpuPercent": 0.686736550399628 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 93928, - "cpuTime": 0.703182, - "cpuPercent": 0.003187373239257422 - } - ], - "startState": { - "time": 19.034055, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 481, - "droppedFrames": 2 - }, - "states": [ - { - "time": 24.036076, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 606, - "droppedFrames": 2 - }, - { - "time": 29.040277, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 731, - "droppedFrames": 2 - }, - { - "time": 34.043982, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 856, - "droppedFrames": 2 - }, - { - "time": 39.049763, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 981, - "droppedFrames": 2 - }, - { - "time": 44.053916, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1106, - "droppedFrames": 2 - }, - { - "time": 49.058654, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1231, - "droppedFrames": 2 - }, - { - "time": 54.063148, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1356, - "droppedFrames": 2 - }, - { - "time": 59.067909, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1481, - "droppedFrames": 2 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.000s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0002, mode=soft", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "7B823879A5FBC027C90067C173F07803", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-baseline-1", - "url": "http://nas.test:8767/ui-baseline/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.048624333, - "cpuPercent": 36.28046716208299, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 22.616853, - "cpuPercent": 0.6846677122291567 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.112744, - "cpuPercent": 0.00035956291233038833 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 268.958101, - "cpuPercent": 14.87810155588852 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.950969, - "cpuPercent": 0.0014107850379628836 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 334.409079, - "cpuPercent": 19.519993832992725 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 18.450606, - "cpuPercent": 0.7069406370762898 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.232692, - "cpuPercent": 0.003013836355436178 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 16.169082, - "cpuPercent": 0.48545987093943044 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 3495, - "cpuTime": 0.108896, - "cpuPercent": 0.0005193686511439251 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.090865, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 482, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.100457, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 607, - "droppedFrames": 1 - }, - { - "time": 29.107713, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 733, - "droppedFrames": 1 - }, - { - "time": 34.114614, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 858, - "droppedFrames": 1 - }, - { - "time": 39.118817, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 983, - "droppedFrames": 1 - }, - { - "time": 44.123605, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1108, - "droppedFrames": 1 - }, - { - "time": 49.132696, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1233, - "droppedFrames": 1 - }, - { - "time": 54.137906, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1358, - "droppedFrames": 1 - }, - { - "time": 59.142068, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1483, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.007s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "F9AC1F44E8DAD7FD85716770E5D2AA86", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui-baseline/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-pulse-1", - "url": "http://nas.test:8767/ui-pulse/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.041814042, - "cpuPercent": 32.82852516674699, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 21.657407, - "cpuPercent": 0.7212060864602516 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.108383, - "cpuPercent": 0.0029519142133775074 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 259.822598, - "cpuPercent": 11.567195719808778 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.920791, - "cpuPercent": 0.0033190304480362246 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 321.521506, - "cpuPercent": 19.0838756505506 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 18.011946, - "cpuPercent": 0.7338154052955664 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.223221, - "cpuPercent": 0.003900922166916865 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 15.856168, - "cpuPercent": 0.7098729335835108 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 2172, - "cpuTime": 0.103668, - "cpuPercent": 0.002387504219956785 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.029247, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 481, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.038285, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 606, - "droppedFrames": 1 - }, - { - "time": 29.044474, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 731, - "droppedFrames": 1 - }, - { - "time": 34.04903, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 856, - "droppedFrames": 1 - }, - { - "time": 39.054519, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 981, - "droppedFrames": 1 - }, - { - "time": 44.058795, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1106, - "droppedFrames": 1 - }, - { - "time": 49.063298, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1231, - "droppedFrames": 1 - }, - { - "time": 54.068539, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1356, - "droppedFrames": 1 - }, - { - "time": 59.071611, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1481, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.004s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", - "[PCMAudioPlayer] > A/V drift=-2.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "71C8EA96B2E047FEF33A2A4FB24F3B87", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-pulse-2", - "url": "http://nas.test:8767/ui-pulse/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.03058375, - "cpuPercent": 31.01201590646301, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 25.826664 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.121076 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 283.541979 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.052207 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 364.138725 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 19.301382 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.249003 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 17.040571 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 3884, - "cpuTime": 0.332097 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 26.093208, - "cpuPercent": 0.665850894567581 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.12158, - "cpuPercent": 0.0012590373479127459 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 287.91678, - "cpuPercent": 10.928646525170873 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.053763, - "cpuPercent": 0.0038870280026833555 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 371.374561, - "cpuPercent": 18.075769379705854 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 19.563047, - "cpuPercent": 0.6536627135745946 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.250591, - "cpuPercent": 0.003966966881915646 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 17.310874, - "cpuPercent": 0.6752412147874272 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 3884, - "cpuTime": 0.333591, - "cpuPercent": 0.0037321464241701218 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.100614, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 482, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.104824, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 607, - "droppedFrames": 0 - }, - { - "time": 29.110429, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 732, - "droppedFrames": 0 - }, - { - "time": 34.115069, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 857, - "droppedFrames": 0 - }, - { - "time": 39.11758, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 982, - "droppedFrames": 0 - }, - { - "time": 44.1203, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1107, - "droppedFrames": 0 - }, - { - "time": 49.124298, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1232, - "droppedFrames": 0 - }, - { - "time": 54.127938, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1357, - "droppedFrames": 0 - }, - { - "time": 59.131613, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1482, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.006s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.020s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "3AFDD8C06EEBB394AECA999BD640D798", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-baseline-2", - "url": "http://nas.test:8767/ui-baseline/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.02986683300001, - "cpuPercent": 37.24381612908473, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 28.253852 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.129082 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 299.931056 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.10279 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 390.357779 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.179443 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.266575 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 17.900514 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.1048 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 28.533325, - "cpuPercent": 0.6981612033982829 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.12923, - "cpuPercent": 0.00036972393792227237 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 306.006426, - "cpuPercent": 15.177092707666773 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.102904, - "cpuPercent": 0.0002847873575891831 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 398.333542, - "cpuPercent": 19.92453043442286 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.469226, - "cpuPercent": 0.7239169723170482 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.267912, - "cpuPercent": 0.0033400061148786404 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.186989, - "cpuPercent": 0.7156531426775414 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.104987, - "cpuPercent": 0.0004671511918341752 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.107904, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 483, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.111633, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 608, - "droppedFrames": 1 - }, - { - "time": 29.116736, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 733, - "droppedFrames": 1 - }, - { - "time": 34.120342, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 858, - "droppedFrames": 1 - }, - { - "time": 39.123278, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 983, - "droppedFrames": 1 - }, - { - "time": 44.12821, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1108, - "droppedFrames": 1 - }, - { - "time": 49.133584, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1233, - "droppedFrames": 1 - }, - { - "time": 54.135631, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1358, - "droppedFrames": 1 - }, - { - "time": 59.138594, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1483, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.004s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "D237972414C76F70AD41BDD2ACCF70C7", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui-baseline/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-interlaced-baseline", - "url": "http://nas.test:8768/ui-baseline/player.html", - "browser": "Chrome/152.0.7977.83", - "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", - "elapsed": 40.025184584, - "cpuPercent": 34.661496615673094, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 29.02942 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.131042 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 311.672629 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.122256 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 400.685877 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.544755 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.271903 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.306249 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.186647 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 29.182907, - "cpuPercent": 0.3834760578752161 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.131521, - "cpuPercent": 0.001196746510924241 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 323.043442, - "cpuPercent": 28.40914568710201 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.122529, - "cpuPercent": 0.0006820705584186639 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 402.717482, - "cpuPercent": 5.075816691704013 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.655844, - "cpuPercent": 0.27754775188321656 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.272634, - "cpuPercent": 0.0018263501033101985 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.509956, - "cpuPercent": 0.5089470595007058 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.187791, - "cpuPercent": 0.0028582004352762386 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.103594, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 481, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.108619, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 607, - "droppedFrames": 0 - }, - { - "time": 29.112059, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 732, - "droppedFrames": 0 - }, - { - "time": 34.113661, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 857, - "droppedFrames": 0 - }, - { - "time": 39.117515, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 982, - "droppedFrames": 0 - }, - { - "time": 44.121268, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1107, - "droppedFrames": 0 - }, - { - "time": 49.12427, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1232, - "droppedFrames": 0 - }, - { - "time": 54.126828, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1357, - "droppedFrames": 0 - }, - { - "time": 59.130273, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1482, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.012s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "1415F69EB041144F76B39225902D9CFF", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/ui-baseline/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-interlaced-pulse", - "url": "http://nas.test:8768/ui-pulse/player.html", - "browser": "Chrome/152.0.7977.83", - "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", - "elapsed": 40.026182625000004, - "cpuPercent": 33.15633700154792, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 29.374705 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.131799 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 328.440881 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.124635 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 404.568692 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.727542 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.273547 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.612798 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.256788 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 29.525413, - "cpuPercent": 0.3765235406333022 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.132744, - "cpuPercent": 0.0023609546002764767 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 339.321237, - "cpuPercent": 27.18309687920184 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.12521, - "cpuPercent": 0.0014365596774168822 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 406.49511, - "cpuPercent": 4.812894644608923 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.835683, - "cpuPercent": 0.2701756523052885 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.274605, - "cpuPercent": 0.0026432698064471076 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.814777, - "cpuPercent": 0.5046171949304094 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 7867, - "cpuTime": 0.257824, - "cpuPercent": 0.0025883057840067536 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.111616, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 483, - "droppedFrames": 2 - }, - "states": [ - { - "time": 24.114273, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 608, - "droppedFrames": 2 - }, - { - "time": 29.118315, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 733, - "droppedFrames": 2 - }, - { - "time": 34.121541, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 858, - "droppedFrames": 2 - }, - { - "time": 39.125124, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 983, - "droppedFrames": 2 - }, - { - "time": 44.127048, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1108, - "droppedFrames": 2 - }, - { - "time": 49.129755, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1233, - "droppedFrames": 2 - }, - { - "time": 54.133168, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1358, - "droppedFrames": 2 - }, - { - "time": 59.136334, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1483, - "droppedFrames": 2 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.005s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.020s", - "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "C76AB8B35DA9907EE909343F4F53919E", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/ui-pulse/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-interlaced-pulse-2", - "url": "http://nas.test:8768/ui-pulse/player.html", - "browser": "Chrome/152.0.7977.83", - "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", - "elapsed": 40.023331250000005, - "cpuPercent": 33.28723418043804, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 30.070568 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.136198 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 344.74122 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.148486 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 408.835212 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 20.91154 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.281552 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 18.940667 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 9832, - "cpuTime": 0.099292 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 30.224711, - "cpuPercent": 0.3851328592244497 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.136528, - "cpuPercent": 0.0008245190734841617 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 355.643111, - "cpuPercent": 27.238839595592072 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.148927, - "cpuPercent": 0.0011018573072928198 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 410.779255, - "cpuPercent": 4.857274342949563 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 21.02202, - "cpuPercent": 0.27603899163191864 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.282334, - "cpuPercent": 0.0019538603498926626 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 19.150919, - "cpuPercent": 0.5253235886005789 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 9832, - "cpuTime": 0.09959, - "cpuPercent": 0.0007445657087826558 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.117566, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 483, - "droppedFrames": 2 - }, - "states": [ - { - "time": 24.122435, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 608, - "droppedFrames": 2 - }, - { - "time": 29.126084, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 733, - "droppedFrames": 2 - }, - { - "time": 34.127807, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 858, - "droppedFrames": 2 - }, - { - "time": 39.129572, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 983, - "droppedFrames": 2 - }, - { - "time": 44.13089, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1108, - "droppedFrames": 2 - }, - { - "time": 49.134316, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1233, - "droppedFrames": 2 - }, - { - "time": 54.138794, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1359, - "droppedFrames": 2 - }, - { - "time": 59.14213, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1484, - "droppedFrames": 2 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.013s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", - "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "CD6B16A90D3CFC111E4047EEE609DEA7", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/ui-pulse/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-interlaced-baseline-2", - "url": "http://nas.test:8768/ui-baseline/player.html", - "browser": "Chrome/152.0.7977.83", - "setupScript": "localStorage.setItem('rtp2httpd-player-auto-deinterlace', 'false');\nlocalStorage.setItem('rtp2httpd-player-picture-enhancement', 'false');\nlocalStorage.setItem('rtp2httpd-player-appearance', 'fancy');\n", - "elapsed": 40.02356375, - "cpuPercent": 34.62294883723341, - "cpuBaseline": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 30.410565 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.136858 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 361.227613 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.15013 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 412.649297 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 21.108454 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.283257 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 19.258938 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 9832, - "cpuTime": 0.169812 - } - ], - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 30.566635, - "cpuPercent": 0.38994528566937836 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.137483, - "cpuPercent": 0.0015615800829329863 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 372.534832, - "cpuPercent": 28.25140477401884 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 1.150575, - "cpuPercent": 0.0011118450190478269 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 414.680291, - "cpuPercent": 5.074495646330397 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 21.260886, - "cpuPercent": 0.3808556403226362 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.284254, - "cpuPercent": 0.002491032548294817 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 19.466397, - "cpuPercent": 0.5183421478803223 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 9832, - "cpuTime": 0.170909, - "cpuPercent": 0.0027408853615640727 - } - ], - "processChurn": { - "started": [], - "exited": [] - }, - "startState": { - "time": 19.096882, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 481, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.100288, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 606, - "droppedFrames": 0 - }, - { - "time": 29.104236, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 731, - "droppedFrames": 0 - }, - { - "time": 34.107837, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 856, - "droppedFrames": 0 - }, - { - "time": 39.110269, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 982, - "droppedFrames": 0 - }, - { - "time": 44.113795, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1107, - "droppedFrames": 0 - }, - { - "time": 49.116921, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1232, - "droppedFrames": 0 - }, - { - "time": 54.11989, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1357, - "droppedFrames": 0 - }, - { - "time": 59.12113, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "viewport": { - "width": 1280, - "height": 633, - "dpr": 2 - }, - "theme": "dark", - "preferences": { - "rtp2httpd-player-auto-deinterlace": "false", - "rtp2httpd-player-picture-enhancement": "false", - "rtp2httpd-player-appearance": null - }, - "videoRect": { - "x": 0, - "y": 46.5, - "width": 960, - "height": 540, - "top": 46.5, - "right": 960, - "bottom": 586.5, - "left": 0 - }, - "totalFrames": 1482, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[VideoRenderPipeline] > Interlaced metadata; enabling bwdif when auto deinterlace is on", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/ui-baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.006s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.019s", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.803s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=2.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "9BC2C529697A9E7FB6D40C439A619F9B", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/ui-baseline/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "abba-baseline-1788810768115", - "legacyFormat": true, - "label": "abba-baseline", - "elapsed": 60.062766665999995, - "cpuPercent": 26.73081992589675, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 7.055306, - "cpuPercent": 0.18101064275739326 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.084012, - "cpuPercent": 0.002828707524326825 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 53.362134, - "cpuPercent": 11.912796224970355 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.532312, - "cpuPercent": 0.00264390085263748 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 86.371972, - "cpuPercent": 13.11377819773108 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 7.565781, - "cpuPercent": 0.7855332449530357 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.102611, - "cpuPercent": 0.00564243072392204 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 5.547596, - "cpuPercent": 0.7065725133175309 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 86602, - "cpuTime": 0.093042, - "cpuPercent": 0.020014063066470075 - } - ], - "states": [ - { - "time": 24.057468, - "paused": false, - "rate": 1, - "quality": { - "total": 606, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 29.062807, - "paused": false, - "rate": 1, - "quality": { - "total": 731, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 34.068606, - "paused": false, - "rate": 1, - "quality": { - "total": 856, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 39.072187, - "paused": false, - "rate": 1, - "quality": { - "total": 982, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 44.077091, - "paused": false, - "rate": 1, - "quality": { - "total": 1107, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 49.083547, - "paused": false, - "rate": 1, - "quality": { - "total": 1232, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 54.090241, - "paused": false, - "rate": 1, - "quality": { - "total": 1357, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 59.095896, - "paused": false, - "rate": 1, - "quality": { - "total": 1482, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 64.10169, - "paused": false, - "rate": 1, - "quality": { - "total": 1607, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 69.104683, - "paused": false, - "rate": 1, - "quality": { - "total": 1732, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 74.109576, - "paused": false, - "rate": 1, - "quality": { - "total": 1857, - "dropped": 2, - "corrupted": 0 - } - }, - { - "time": 79.114512, - "paused": false, - "rate": 1, - "quality": { - "total": 1983, - "dropped": 2, - "corrupted": 0 - } - } - ], - "logs": [ - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[MSE] > MediaSource onSourceOpen" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" - }, - { - "session": "57EFF31CAE415B8A6E620187EA9B8AE9", - "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > AudioContext state changed to: running" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.015s" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0030, mode=soft" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=2.8ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "AD3D388D5A28DB757BC255F469EB3550", - "text": "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - } - ], - "mediaProperties": [ - { - "playerId": "A5FB795F025F715651348F0314CDDB92", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ] - }, - { - "name": "abba-baseline-1788811008599", - "legacyFormat": true, - "label": "abba-baseline", - "elapsed": 60.060040875000006, - "cpuPercent": 27.95477784462966, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 7.948269, - "cpuPercent": 0.2057008257072717 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.090573, - "cpuPercent": 0.0033766210785982948 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 83.073502, - "cpuPercent": 12.419432107154735 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.540953, - "cpuPercent": 0.0029986659578677024 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 118.148115, - "cpuPercent": 13.599208194012084 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 9.491101, - "cpuPercent": 0.7969774795795146 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.114431, - "cpuPercent": 0.004743586515249777 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 7.470321, - "cpuPercent": 0.8974885666858957 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 86602, - "cpuTime": 0.349228, - "cpuPercent": 0.024851797938440872 - } - ], - "states": [ - { - "time": 24.141533, - "paused": false, - "rate": 1, - "quality": { - "total": 608, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 29.145546, - "paused": false, - "rate": 1, - "quality": { - "total": 733, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 34.150433, - "paused": false, - "rate": 1, - "quality": { - "total": 858, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 39.154772, - "paused": false, - "rate": 1, - "quality": { - "total": 983, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 44.15914, - "paused": false, - "rate": 1, - "quality": { - "total": 1108, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 49.164081, - "paused": false, - "rate": 1, - "quality": { - "total": 1233, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 54.169182, - "paused": false, - "rate": 1, - "quality": { - "total": 1358, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 59.173213, - "paused": false, - "rate": 1, - "quality": { - "total": 1484, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 64.179617, - "paused": false, - "rate": 1, - "quality": { - "total": 1609, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 69.185294, - "paused": false, - "rate": 1, - "quality": { - "total": 1734, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 74.191076, - "paused": false, - "rate": 1, - "quality": { - "total": 1859, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 79.195439, - "paused": false, - "rate": 1, - "quality": { - "total": 1984, - "dropped": 0, - "corrupted": 0 - } - } - ], - "logs": [ - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[MSE] > MediaSource onSourceOpen" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" - }, - { - "session": "063A65AAC296743F9F970B5568BB2787", - "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > AudioContext state changed to: running" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=1.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-1.8ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "472EFC9546C3722E4AF5999FB43E2632", - "text": "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - } - ], - "mediaProperties": [ - { - "playerId": "CAEEB0036CB32012841F3E82F7A8B7BB", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ] - }, - { - "name": "abba-final-1788810848268", - "legacyFormat": true, - "label": "abba-final", - "elapsed": 60.048127, - "cpuPercent": 26.731766338024173, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 7.339622, - "cpuPercent": 0.17903306126434199 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.08548, - "cpuPercent": 0.0016203669433353044 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 63.075359, - "cpuPercent": 11.854434693691616 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.534492, - "cpuPercent": 0.0015737376787788462 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 96.821849, - "cpuPercent": 13.122017944040119 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 8.197786, - "cpuPercent": 0.7732697474477446 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.106199, - "cpuPercent": 0.004056746016407818 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 6.175834, - "cpuPercent": 0.7787220407390896 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 86602, - "cpuTime": 0.176682, - "cpuPercent": 0.01703800020273741 - } - ], - "states": [ - { - "time": 24.139763, - "paused": false, - "rate": 1, - "quality": { - "total": 608, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 29.143571, - "paused": false, - "rate": 1, - "quality": { - "total": 733, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 34.148253, - "paused": false, - "rate": 1, - "quality": { - "total": 858, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 39.151883, - "paused": false, - "rate": 1, - "quality": { - "total": 983, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 44.154313, - "paused": false, - "rate": 1, - "quality": { - "total": 1108, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 49.158269, - "paused": false, - "rate": 1, - "quality": { - "total": 1233, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 54.161696, - "paused": false, - "rate": 1, - "quality": { - "total": 1358, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 59.165892, - "paused": false, - "rate": 1, - "quality": { - "total": 1483, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 64.170204, - "paused": false, - "rate": 1, - "quality": { - "total": 1608, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 69.176152, - "paused": false, - "rate": 1, - "quality": { - "total": 1734, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 74.181376, - "paused": false, - "rate": 1, - "quality": { - "total": 1859, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 79.184397, - "paused": false, - "rate": 1, - "quality": { - "total": 1984, - "dropped": 0, - "corrupted": 0 - } - } - ], - "logs": [ - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[MSE] > MediaSource onSourceOpen" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/final/assets/mp2_decoder-kdCik8G2.wasm" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" - }, - { - "session": "88CF55F27C07B663F1097C2DA3B14E87", - "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > AudioContext state changed to: running" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "01C6710E8FE9E3FAD21B4C42BF6A53CB", - "text": "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - } - ], - "mediaProperties": [ - { - "playerId": "FEB3418884E9047D7EEF2C976EFCAD13", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/final/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ] - }, - { - "name": "abba-final-1788810928434", - "legacyFormat": true, - "label": "abba-final", - "elapsed": 60.05604545800001, - "cpuPercent": 26.540533727194923, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 7.638909, - "cpuPercent": 0.20454726757843125 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.087504, - "cpuPercent": 0.0027990520973872708 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 72.911743, - "cpuPercent": 11.839644028797483 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.537528, - "cpuPercent": 0.0028190334330022602 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 107.371475, - "cpuPercent": 12.988367683075506 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 8.841554, - "cpuPercent": 0.7741502066184877 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.110317, - "cpuPercent": 0.005025305907147385 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 6.751744, - "cpuPercent": 0.7014581076514816 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 86602, - "cpuTime": 0.265203, - "cpuPercent": 0.021723042035998986 - } - ], - "states": [ - { - "time": 24.145201, - "paused": false, - "rate": 1, - "quality": { - "total": 608, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 29.150541, - "paused": false, - "rate": 1, - "quality": { - "total": 733, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 34.153449, - "paused": false, - "rate": 1, - "quality": { - "total": 858, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 39.158785, - "paused": false, - "rate": 1, - "quality": { - "total": 983, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 44.163449, - "paused": false, - "rate": 1, - "quality": { - "total": 1108, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 49.169126, - "paused": false, - "rate": 1, - "quality": { - "total": 1233, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 54.172941, - "paused": false, - "rate": 1, - "quality": { - "total": 1358, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 59.178349, - "paused": false, - "rate": 1, - "quality": { - "total": 1483, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 64.184335, - "paused": false, - "rate": 1, - "quality": { - "total": 1608, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 69.189928, - "paused": false, - "rate": 1, - "quality": { - "total": 1734, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 74.192724, - "paused": false, - "rate": 1, - "quality": { - "total": 1859, - "dropped": 0, - "corrupted": 0 - } - }, - { - "time": 79.198108, - "paused": false, - "rate": 1, - "quality": { - "total": 1984, - "dropped": 0, - "corrupted": 0 - } - } - ], - "logs": [ - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[MSE] > MediaSource onSourceOpen" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > MP2 audio detected, enabling software decode" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/final/assets/mp2_decoder-kdCik8G2.wasm" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[WorkerAudioDecoder] > MP2 decoder initialized successfully" - }, - { - "session": "BE3CB322709B315602C18A86E2414A21", - "text": "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > AudioContext state changed to: running" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.016s" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.5ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=1.9ms, rate=1, stretch ratio=1.0000, mode=bypass" - }, - { - "session": "EAB8123A373B60DF3DC3186ABDDD4BCC", - "text": "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - } - ], - "mediaProperties": [ - { - "playerId": "D54F62C6CCB22136567EAEDC43180988", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/final/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ] - }, - { - "name": "optimized-final", - "url": "http://nas.test:8767/optimized/tools/player-benchmark/index.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 60.060117959, - "cpuPercent": 26.560001115698064, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 8.586126, - "cpuPercent": 0.18780349395417376 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.0949, - "cpuPercent": 0.0014618685907333213 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 92.585573, - "cpuPercent": 11.92740914177063 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.565663, - "cpuPercent": 0.0016500134093585708 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 128.875973, - "cpuPercent": 13.010820267343492 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 10.110455, - "cpuPercent": 0.7741559887001959 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.123161, - "cpuPercent": 0.003508151618080993 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 8.006992, - "cpuPercent": 0.6349155029304399 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 90415, - "cpuTime": 0.098927, - "cpuPercent": 0.018276687380956263 - } - ], - "startState": { - "time": 19.151398, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 484, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.158163, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 609, - "droppedFrames": 1 - }, - { - "time": 29.163447, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 734, - "droppedFrames": 1 - }, - { - "time": 34.168311, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 859, - "droppedFrames": 1 - }, - { - "time": 39.174488, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 984, - "droppedFrames": 1 - }, - { - "time": 44.179336, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1109, - "droppedFrames": 1 - }, - { - "time": 49.183558, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1234, - "droppedFrames": 1 - }, - { - "time": 54.188815, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1359, - "droppedFrames": 1 - }, - { - "time": 59.193452, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1484, - "droppedFrames": 1 - }, - { - "time": 64.197964, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1610, - "droppedFrames": 1 - }, - { - "time": 69.203466, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1735, - "droppedFrames": 1 - }, - { - "time": 74.20699, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1860, - "droppedFrames": 1 - }, - { - "time": 79.213687, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1985, - "droppedFrames": 1 - } - ], - "logs": [ - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.004s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.014s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "953EC446372ECBD2CD87F8EFA9E2D609", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/optimized/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "interlaced-baseline", - "url": "http://nas.test:8768/baseline/tools/player-benchmark/index.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.023786042, - "cpuPercent": 31.78467920713559, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 9.139267, - "cpuPercent": 0.07413591500030162 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.099726, - "cpuPercent": 0.0006995839916447768 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 109.025667, - "cpuPercent": 27.24869153696641 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.591067, - "cpuPercent": 0.0005946463928979857 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 131.533746, - "cpuPercent": 3.4659339787203534 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 10.315009, - "cpuPercent": 0.30705241096141805 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.130995, - "cpuPercent": 0.001351696212428033 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 8.437092, - "cpuPercent": 0.6859770830073142 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 91738, - "cpuTime": 0.091885, - "cpuPercent": 0.0002423558828198072 - } - ], - "startState": { - "time": 19.143159, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 482, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.147834, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 607, - "droppedFrames": 0 - }, - { - "time": 29.151281, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 733, - "droppedFrames": 0 - }, - { - "time": 34.156186, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 858, - "droppedFrames": 0 - }, - { - "time": 39.158114, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 983, - "droppedFrames": 0 - }, - { - "time": 44.160282, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1108, - "droppedFrames": 0 - }, - { - "time": 49.1625, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1233, - "droppedFrames": 0 - }, - { - "time": 54.166364, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1358, - "droppedFrames": 0 - }, - { - "time": 59.169023, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1483, - "droppedFrames": 0 - } - ], - "logs": [ - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.013s", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "38901865C1900B91A115072765BD66EF", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/baseline/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "interlaced-optimized", - "url": "http://nas.test:8768/optimized/tools/player-benchmark/index.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.025988584000004, - "cpuPercent": 30.95096570569691, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 9.30074, - "cpuPercent": 0.07254536621640402 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.100683, - "cpuPercent": 0.0008194675799490679 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 124.977286, - "cpuPercent": 26.53594420962222 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.592674, - "cpuPercent": 0.000659571466788389 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 133.653353, - "cpuPercent": 3.3764287849225814 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 10.513455, - "cpuPercent": 0.31288671293446296 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.132563, - "cpuPercent": 0.0015614854800858667 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 8.837999, - "cpuPercent": 0.6483912307508691 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 91738, - "cpuTime": 0.160544, - "cpuPercent": 0.0017288767235511039 - } - ], - "startState": { - "time": 19.152395, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 483, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.15706, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 608, - "droppedFrames": 0 - }, - { - "time": 29.161209, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 733, - "droppedFrames": 0 - }, - { - "time": 34.164763, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 858, - "droppedFrames": 0 - }, - { - "time": 39.16793, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 983, - "droppedFrames": 0 - }, - { - "time": 44.16849, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1108, - "droppedFrames": 0 - }, - { - "time": 49.173332, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1233, - "droppedFrames": 0 - }, - { - "time": 54.17653, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1358, - "droppedFrames": 0 - }, - { - "time": 59.179318, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1483, - "droppedFrames": 0 - } - ], - "logs": [ - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":4},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.640029", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8768/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.640029\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.053s, video=0.006s", - "[PCMAudioPlayer] > Resync at 0.053s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.101s, video=0.020s", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 5.845s, refilled 29 chunks", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "C999932FFA224CC87F3E07D10C81E9E4", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "FFmpegVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 high\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8768/optimized/tools/player-benchmark/index.html" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "false" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "catchup-baseline", - "url": "http://nas.test:8767/baseline/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.035634916999996, - "cpuPercent": 33.93821286503563, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 9.972577, - "cpuPercent": 0.18837468209596486 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.106478, - "cpuPercent": 0.0012663718236293644 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 135.745435, - "cpuPercent": 18.95606255710327 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.621333, - "cpuPercent": 0.0024653037276573067 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 142.234959, - "cpuPercent": 13.346255182607655 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 11.056111, - "cpuPercent": 0.8517636867929372 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.143857, - "cpuPercent": 0.004188768339697097 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 9.220481, - "cpuPercent": 0.585980465868378 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 93928, - "cpuTime": 0.098173, - "cpuPercent": 0.00185584667644299 - } - ], - "startState": { - "time": 20.617086, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 519, - "droppedFrames": 1 - }, - "states": [ - { - "time": 26.627311, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 670, - "droppedFrames": 1 - }, - { - "time": 32.632195, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 820, - "droppedFrames": 1 - }, - { - "time": 38.633742, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 970, - "droppedFrames": 1 - }, - { - "time": 44.639888, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1120, - "droppedFrames": 1 - }, - { - "time": 50.646986, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1270, - "droppedFrames": 1 - }, - { - "time": 56.648755, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1420, - "droppedFrames": 1 - }, - { - "time": 62.651821, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1570, - "droppedFrames": 1 - }, - { - "time": 68.666148, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1721, - "droppedFrames": 1 - } - ], - "logs": [ - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/baseline/assets/mp2_decoder-mvgR0R-X.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 15 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.013s", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Video playback rate set to 1.2", - "[PCMAudioPlayer] > A/V drift=-82.0ms, rate=1.2, stretch ratio=1.2914, mode=soft", - "[PCMAudioPlayer] > A/V drift=3.8ms, rate=1.2, stretch ratio=1.1977, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1.2, stretch ratio=1.2002, mode=steady", - "[PCMAudioPlayer] > A/V drift=-2.5ms, rate=1.2, stretch ratio=1.2015, mode=steady", - "[PCMAudioPlayer] > A/V drift=2.5ms, rate=1.2, stretch ratio=1.1985, mode=steady", - "[PCMAudioPlayer] > A/V drift=1.7ms, rate=1.2, stretch ratio=1.1990, mode=steady", - "[PCMAudioPlayer] > A/V drift=1.6ms, rate=1.2, stretch ratio=1.1990, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1.2, stretch ratio=1.2004, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1.2, stretch ratio=1.2001, mode=steady" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "F3B6F9A04BF7633C30446CFC71A6595B", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/baseline/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "catchup-optimized", - "url": "http://nas.test:8767/optimized/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.04045537500001, - "cpuPercent": 28.46557785932778, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 10.208392, - "cpuPercent": 0.16891666032906402 - }, - { - "type": "renderer", - "id": 78373, - "cpuTime": 0.108409, - "cpuPercent": 0.0032991632778102548 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 144.583219, - "cpuPercent": 14.778653101169997 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.624192, - "cpuPercent": 0.0037711858815242336 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 149.744012, - "cpuPercent": 12.149889291812263 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 11.563671, - "cpuPercent": 0.7853107489789621 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.146896, - "cpuPercent": 0.005359579405133098 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 9.594188, - "cpuPercent": 0.5660525033426923 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 93928, - "cpuTime": 0.179122, - "cpuPercent": 0.004325625130331103 - } - ], - "startState": { - "time": 20.653517, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 520, - "droppedFrames": 1 - }, - "states": [ - { - "time": 26.653742, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 670, - "droppedFrames": 1 - }, - { - "time": 32.667007, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 820, - "droppedFrames": 1 - }, - { - "time": 38.669742, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 971, - "droppedFrames": 1 - }, - { - "time": 44.672927, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1121, - "droppedFrames": 1 - }, - { - "time": 50.681952, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1271, - "droppedFrames": 1 - }, - { - "time": 56.691785, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1421, - "droppedFrames": 1 - }, - { - "time": 62.69431, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1571, - "droppedFrames": 1 - }, - { - "time": 68.696968, - "paused": false, - "rate": 1.2, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1721, - "droppedFrames": 1 - } - ], - "logs": [ - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/optimized/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 16 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.005s", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[LiveSync] > Video playback rate set to 1.2", - "[PCMAudioPlayer] > A/V drift=-74.5ms, rate=1.2, stretch ratio=1.2447, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.5ms, rate=1.2, stretch ratio=1.2003, mode=steady", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1.2, stretch ratio=1.1997, mode=steady", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1.2, stretch ratio=1.1995, mode=steady", - "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1.2, stretch ratio=1.1994, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.2ms, rate=1.2, stretch ratio=1.2001, mode=steady", - "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1.2, stretch ratio=1.2008, mode=steady", - "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1.2, stretch ratio=1.1994, mode=steady", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1.2, stretch ratio=1.2005, mode=steady" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "524EECE16AFFEFD57847CD4998B2AC40", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/optimized/tools/player-benchmark/index.html?source=%2Fstream%3Fspeed%3D1.2" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "Player CPU benchmark" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-simple", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.037696917000005, - "cpuPercent": 27.071809406194305, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 16.293002, - "cpuPercent": 0.779817582033376 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.086839, - "cpuPercent": 0.001019039633687743 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 213.22517, - "cpuPercent": 12.092453794324676 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.737917, - "cpuPercent": 0.000492036293716876 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 245.458743, - "cpuPercent": 12.610518058685347 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 15.266841, - "cpuPercent": 0.7165846741753529 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.187631, - "cpuPercent": 0.002465176760906314 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 13.211479, - "cpuPercent": 0.8647125750457417 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.124088, - "cpuPercent": 0.003746469241499007 - } - ], - "startState": { - "time": 19.02318, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 479, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.02985, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 605, - "droppedFrames": 0 - }, - { - "time": 29.036089, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 730, - "droppedFrames": 0 - }, - { - "time": 34.041407, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 855, - "droppedFrames": 0 - }, - { - "time": 39.045963, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 980, - "droppedFrames": 0 - }, - { - "time": 44.050116, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1105, - "droppedFrames": 0 - }, - { - "time": 49.054537, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1230, - "droppedFrames": 0 - }, - { - "time": 54.058966, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1355, - "droppedFrames": 0 - }, - { - "time": 59.063487, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1480, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.017s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.018s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", - "[PCMAudioPlayer] > A/V drift=-2.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "4151A9DD7B84B3EEB8D0D83553E5F796", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-no-animations", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.033807833, - "cpuPercent": 31.620194743417184, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 17.060129, - "cpuPercent": 0.659515080607348 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.089308, - "cpuPercent": 0.0012464465086148317 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 220.132373, - "cpuPercent": 11.151449841151551 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.757413, - "cpuPercent": 0.0013263789500489213 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 257.138012, - "cpuPercent": 18.436684890903386 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 15.680327, - "cpuPercent": 0.6638888838870735 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.192515, - "cpuPercent": 0.002790141783813111 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 13.643637, - "cpuPercent": 0.6997385838703215 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.208366, - "cpuPercent": 0.003554495755027889 - } - ], - "startState": { - "time": 19.046297, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 481, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.052264, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 606, - "droppedFrames": 1 - }, - { - "time": 29.055489, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 731, - "droppedFrames": 1 - }, - { - "time": 34.058623, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 856, - "droppedFrames": 1 - }, - { - "time": 39.062162, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 981, - "droppedFrames": 1 - }, - { - "time": 44.066353, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1106, - "droppedFrames": 1 - }, - { - "time": 49.071864, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1232, - "droppedFrames": 1 - }, - { - "time": 54.077433, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1357, - "droppedFrames": 1 - }, - { - "time": 59.081324, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1482, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.005s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.020s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "7FACECCA2B34FECCF2FBAE363164F977", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-contained-paused", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.035062833000005, - "cpuPercent": 32.54667303596596, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 17.934769, - "cpuPercent": 0.7132472882361207 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.095631, - "cpuPercent": 0.00257274480696202 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 227.120879, - "cpuPercent": 11.629361041397718 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.787909, - "cpuPercent": 0.003394524458894581 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 269.317128, - "cpuPercent": 18.83380833309167 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 16.084002, - "cpuPercent": 0.6872250985284266 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.199503, - "cpuPercent": 0.004988127552915801 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 14.046351, - "cpuPercent": 0.6678470847299623 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.298622, - "cpuPercent": 0.004228793163288102 - } - ], - "startState": { - "time": 19.108419, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 482, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.112244, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 607, - "droppedFrames": 0 - }, - { - "time": 29.116037, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 732, - "droppedFrames": 0 - }, - { - "time": 34.119713, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 857, - "droppedFrames": 0 - }, - { - "time": 39.123004, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 982, - "droppedFrames": 0 - }, - { - "time": 44.130518, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1107, - "droppedFrames": 0 - }, - { - "time": 49.134829, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1232, - "droppedFrames": 0 - }, - { - "time": 54.138783, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1357, - "droppedFrames": 0 - }, - { - "time": 59.143589, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1482, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.006s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.021s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=-2.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-2.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "3C55CF282A560F04220C77D43F05616F", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-stacking-paused", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.036866417000006, - "cpuPercent": 33.181910046684116, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 18.799012, - "cpuPercent": 0.7432000219519118 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.098512, - "cpuPercent": 0.003531744930466391 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 234.225324, - "cpuPercent": 11.639697151776206 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.815883, - "cpuPercent": 0.0031645833287842896 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 281.908045, - "cpuPercent": 19.38406697259588 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 16.512513, - "cpuPercent": 0.7231809727173277 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.204857, - "cpuPercent": 0.00505783839051941 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 14.457159, - "cpuPercent": 0.6743634658814325 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.387735, - "cpuPercent": 0.005647295111587385 - } - ], - "startState": { - "time": 19.041583, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 480, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.048022, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 605, - "droppedFrames": 1 - }, - { - "time": 29.053463, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 730, - "droppedFrames": 1 - }, - { - "time": 34.057777, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 855, - "droppedFrames": 1 - }, - { - "time": 39.06324, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 980, - "droppedFrames": 1 - }, - { - "time": 44.06795, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1106, - "droppedFrames": 1 - }, - { - "time": 49.073425, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1231, - "droppedFrames": 1 - }, - { - "time": 54.076935, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1356, - "droppedFrames": 1 - }, - { - "time": 59.079914, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1481, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.001s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", - "[PCMAudioPlayer] > A/V drift=-0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.5ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "FF4DA3F46C73DAFDF2ECA528DD44903D", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-hidden-effects", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.040906209, - "cpuPercent": 33.524048956171775, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 19.89829, - "cpuPercent": 0.6812757897539409 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.100572, - "cpuPercent": 0.0009415371321322645 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 245.958731, - "cpuPercent": 12.053450975380755 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.846079, - "cpuPercent": 0.0008291520633101337 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 300.909126, - "cpuPercent": 19.55348103045723 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 17.165684, - "cpuPercent": 0.7450830369392091 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.209811, - "cpuPercent": 0.002859575640030458 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 14.961951, - "cpuPercent": 0.4828886713771187 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.487637, - "cpuPercent": 0.00323918742805193 - } - ], - "startState": { - "time": 19.031776, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 480, - "droppedFrames": 2 - }, - "states": [ - { - "time": 24.038137, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 605, - "droppedFrames": 2 - }, - { - "time": 29.044146, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 730, - "droppedFrames": 2 - }, - { - "time": 34.050954, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 855, - "droppedFrames": 2 - }, - { - "time": 39.05605, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 980, - "droppedFrames": 2 - }, - { - "time": 44.061162, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1105, - "droppedFrames": 2 - }, - { - "time": 49.064402, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1230, - "droppedFrames": 2 - }, - { - "time": 54.070547, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1355, - "droppedFrames": 2 - }, - { - "time": 59.074726, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1480, - "droppedFrames": 2 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.000s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 14 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.000s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 2.731s, refilled 28 chunks", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=soft", - "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.9ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "DB234713758310A2D499A43D05AA6C18", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-sidebar-no-blur", - "url": "http://nas.test:8767/ui/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.033913792, - "cpuPercent": 23.916614922404463, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 20.768929, - "cpuPercent": 0.7347095803028267 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.10385, - "cpuPercent": 0.0002797628045609221 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 252.648093, - "cpuPercent": 10.692229648691951 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.891369, - "cpuPercent": 0.001461261077393956 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 308.995509, - "cpuPercent": 11.149349581933611 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 17.561058, - "cpuPercent": 0.6363554693243791 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.216036, - "cpuPercent": 0.0026827254651645813 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 15.419243, - "cpuPercent": 0.6963471057274129 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 97806, - "cpuTime": 0.574082, - "cpuPercent": 0.0031997870771654597 - } - ], - "startState": { - "time": 19.107614, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 482, - "droppedFrames": 0 - }, - "states": [ - { - "time": 24.112501, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 607, - "droppedFrames": 0 - }, - { - "time": 29.117725, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 732, - "droppedFrames": 0 - }, - { - "time": 34.120517, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 857, - "droppedFrames": 0 - }, - { - "time": 39.12401, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 982, - "droppedFrames": 0 - }, - { - "time": 44.127725, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1107, - "droppedFrames": 0 - }, - { - "time": 49.131986, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1232, - "droppedFrames": 0 - }, - { - "time": 54.13742, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1358, - "droppedFrames": 0 - }, - { - "time": 59.141811, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1483, - "droppedFrames": 0 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.008s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.009s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 0.725s, refilled 31 chunks", - "[PCMAudioPlayer] > A/V drift=0.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.7ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.2ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-0.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "DA656BDD085FDB179AA68EB4D8846E9D", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - }, - { - "name": "full-promoted-sidebar", - "url": "http://nas.test:8767/ui-pulse/player.html", - "browser": "Chrome/152.0.7977.83", - "elapsed": 40.02819725, - "cpuPercent": 33.15494804103371, - "processes": [ - { - "type": "browser", - "id": 75443, - "cpuTime": 23.500303, - "cpuPercent": 0.6964790301666626 - }, - { - "type": "renderer", - "id": 94826, - "cpuTime": 0.116371, - "cpuPercent": 0.0009618219816282046 - }, - { - "type": "renderer", - "id": 78372, - "cpuTime": 276.236076, - "cpuPercent": 11.745170462304618 - }, - { - "type": "renderer", - "id": 75458, - "cpuTime": 0.979805, - "cpuPercent": 0.0016913077443177602 - }, - { - "type": "GPU", - "id": 75451, - "cpuTime": 347.068405, - "cpuPercent": 19.28213991700553 - }, - { - "type": "network.mojom.NetworkService", - "id": 75452, - "cpuTime": 18.895153, - "cpuPercent": 0.7291285145248461 - }, - { - "type": "storage.mojom.StorageService", - "id": 75453, - "cpuTime": 0.239846, - "cpuPercent": 0.0025806807974596115 - }, - { - "type": "audio.mojom.AudioService", - "id": 75727, - "cpuTime": 16.60185, - "cpuPercent": 0.6963116481594668 - }, - { - "type": "passage_embeddings.mojom.PassageEmbeddingsService", - "id": 3884, - "cpuTime": 0.102017, - "cpuPercent": 0.00048465834918408606 - } - ], - "startState": { - "time": 19.029156, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 481, - "droppedFrames": 1 - }, - "states": [ - { - "time": 24.033059, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 606, - "droppedFrames": 1 - }, - { - "time": 29.039119, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 731, - "droppedFrames": 1 - }, - { - "time": 34.042888, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 856, - "droppedFrames": 1 - }, - { - "time": 39.047007, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 981, - "droppedFrames": 1 - }, - { - "time": 44.049278, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1106, - "droppedFrames": 1 - }, - { - "time": 49.053575, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1231, - "droppedFrames": 1 - }, - { - "time": 54.056401, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1356, - "droppedFrames": 1 - }, - { - "time": 59.059299, - "paused": false, - "rate": 1, - "width": 1920, - "height": 1080, - "secureContext": false, - "visibility": "visible", - "totalFrames": 1481, - "droppedFrames": 1 - } - ], - "logs": [ - "Loading segments...", - "[LiveSync] > Live sync enabled, target latency: 1.5 max latency: 3", - "[MSE] > MediaSource onSourceOpen", - "[TSDemuxer] > Parsed first PAT: {\"version_number\":0,\"program_pmt_pid\":{\"1\":256}}", - "[TSDemuxer] > Parsed first PMT: {\"program_number\":1,\"version_number\":0,\"pcr_pid\":4113,\"pid_stream_type\":{\"4113\":27,\"4352\":3},\"common_pids\":{\"h264\":4113,\"mp3\":4352}}", - "[TSDemuxer] > Generated first AVCDecoderConfigurationRecord for mimeType: avc1.4d4028", - "[TSDemuxer] > Video keyframe found at stream start; starting video output timeline", - "[TSDemuxer] > MP2 audio detected, enabling software decode", - "[TSDemuxer] > Generated first AudioSpecificConfig for mimeType: mp3", - "[WorkerAudioDecoder] > Initializing MP2 decoder from http://nas.test:8767/ui-pulse/assets/mp2_decoder-CUYZ1Qm4.wasm", - "[MSE] > Received Initialization Segment, mimeType: video/mp4;codecs=\"avc1.4d4028\"", - "[MSE] > Received Initialization Segment, mimeType: audio/mp4;codecs=\"mp4a.40.2\"", - "[VideoRenderPipeline] > Render gate enabled for 1920x1080", - "[WorkerAudioDecoder] > MP2 decoder initialized successfully", - "[WorkerAudioDecoder] > MP2 decoded format detected: none -> 48000Hz/2ch", - "[PCMAudioPlayer] > AudioContext initialized, sampleRate: 48000, state: running", - "[PCMAudioPlayer] > AudioContext state changed to: running", - "[PCMAudioPlayer] > Startup PCM begins after video: audio=0.041s, video=0.004s", - "[PCMAudioPlayer] > Resync at 0.041s, refilled 17 chunks", - "[WasmStretcher] > WSOLA stretcher created: 48000Hz, 2ch", - "[PCMAudioPlayer] > Startup sync complete: audio=0.089s, video=0.023s", - "[LiveSync] > Live-edge underrun, raising latency tolerance: target 2.5s, max 4.0s", - "[PCMAudioPlayer] > Video waiting; pausing PCM audio scheduling", - "[PCMAudioPlayer] > Video playback resumed; resyncing PCM audio", - "[PCMAudioPlayer] > Resync at 1.728s, refilled 30 chunks", - "[PCMAudioPlayer] > A/V drift=-0.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.1ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.8ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.3ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=1.4ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=-1.0ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.6ms, rate=1, stretch ratio=1.0000, mode=bypass", - "[PCMAudioPlayer] > A/V drift=0.3ms, rate=1, stretch ratio=1.0000, mode=bypass" - ], - "mediaProperties": [ - { - "method": "Media.playerPropertiesChanged", - "playerId": "5565B8F4214835840C04E96512BA3DC3", - "properties": [ - { - "name": "kVideoDecoderName", - "value": "VideoToolboxVideoDecoder" - }, - { - "name": "kAudioDecoderName", - "value": "FFmpegAudioDecoder" - }, - { - "name": "kVideoTracks", - "value": "[{\"alpha mode\":\"is_opaque\",\"codec\":\"h264\",\"coded size\":\"1920x1080\",\"color space\":{\"matrix\":\"BT709\",\"primaries\":\"BT709\",\"range\":\"LIMITED\",\"transfer\":\"BT709\"},\"encryption scheme\":\"Unencrypted\",\"has extra data\":false,\"hdr metadata\":{},\"natural size\":\"1920x1080\",\"orientation\":\"0°\",\"profile\":\"h264 main\",\"visible rect\":\"0,0 1920x1080\"}]" - }, - { - "name": "kFrameUrl", - "value": "http://nas.test:8767/ui-pulse/player.html#Recorded%20broadcast" - }, - { - "name": "kAudioTracks", - "value": "[{\"bytes per channel\":2,\"bytes per frame\":4,\"channel layout\":\"STEREO\",\"channels\":2,\"codec\":\"aac\",\"codec delay\":0,\"discard decoder delay\":false,\"encryption scheme\":\"Unencrypted\",\"has extra data\":true,\"profile\":\"unknown\",\"sample format\":\"Signed 16-bit\",\"samples per second\":48000,\"seek preroll\":\"0us\"}]" - }, - { - "name": "kIsVideoDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kResolution", - "value": "1920x1080" - }, - { - "name": "kRendererName", - "value": "RendererImpl" - }, - { - "name": "kIsPlatformVideoDecoder", - "value": "true" - }, - { - "name": "kIsAudioDecryptingDemuxerStream", - "value": "false" - }, - { - "name": "kFrameTitle", - "value": "rtp2httpd Player" - }, - { - "name": "kIsPlatformAudioDecoder", - "value": "false" - } - ] - } - ], - "mediaErrors": [] - } - ], - "demux": { - "baseline": [ - { - "size": 1316, - "ms": [114.08679099999998, 110.01800000000003, 109.58754200000004], - "digest": "4e4ff325dd930cce238cb51a64409f4140e59630200a5d947d1593d34da4ca35" - }, - { - "size": 18800, - "ms": [104.57475, 103.74287500000003, 104.74183400000004], - "digest": "61ad96d11fc76cf67e5a32545ddeb65037e86777ba912deab26bf101e4f129df" - }, - { - "size": 65536, - "ms": [100.97912500000007, 100.96720800000003, 101.53758300000004], - "digest": "f40f38e8a7a70dd97393d6c8943f50e0be6b5f97c99f61b8604de106dcfade4c" - } - ], - "optimized": [ - { - "size": 1316, - "ms": [103.67195799999999, 103.23041699999999, 97.76908400000002], - "digest": "4e4ff325dd930cce238cb51a64409f4140e59630200a5d947d1593d34da4ca35" - }, - { - "size": 18800, - "ms": [94.9675420000001, 93.677416, 96.79600000000005], - "digest": "61ad96d11fc76cf67e5a32545ddeb65037e86777ba912deab26bf101e4f129df" - }, - { - "size": 65536, - "ms": [92.1377500000001, 91.99904100000003, 92.46566699999994], - "digest": "f40f38e8a7a70dd97393d6c8943f50e0be6b5f97c99f61b8604de106dcfade4c" - } - ] - }, - "mp2Equality": [ - { - "chunkBytes": 97, - "pcmBytes": 11520000, - "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" - }, - { - "chunkBytes": 576, - "pcmBytes": 11520000, - "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" - }, - { - "chunkBytes": 4096, - "pcmBytes": 11520000, - "sha256": "18a90b10bd85e0a88735e781a7bcd3daedac8ec8ebaee5c902d87e2da3d3a73d" - } - ], - "wsola": [ - "mp2_decoder-mvgR0R-X.wasm 1 0.80 1440000", - "mp2_decoder.wasm 1 0.73 1440000", - "mp2_decoder-mvgR0R-X.wasm 0.9 378.64 1598400", - "mp2_decoder.wasm 0.9 93.47 1598400", - "mp2_decoder-mvgR0R-X.wasm 1.01 337.89 1424160", - "mp2_decoder.wasm 1.01 82.53 1424160", - "mp2_decoder-mvgR0R-X.wasm 1.2 283.87 1198080", - "mp2_decoder.wasm 1.2 69.32 1198080", - "mp2_decoder-mvgR0R-X.wasm 2 176.91 720000", - "mp2_decoder.wasm 2 41.93 720000" - ], - "lifecycle": [ - { - "name": "playing", - "time": 14.129655, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - } - ] - }, - { - "name": "pause", - "time": 14.133419, - "rate": 1, - "paused": true, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - } - ] - }, - { - "name": "paused", - "time": 14.133419, - "rate": 1, - "paused": true, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - } - ] - }, - { - "name": "resumed", - "time": 20.151746, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - } - ] - }, - { - "name": "seeked", - "time": 19.610663, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - }, - { - "type": "waiting", - "time": 15.151746 - }, - { - "type": "canplay", - "time": 15.151746 - }, - { - "type": "playing", - "time": 15.151746 - } - ] - }, - { - "name": "1.2x", - "time": 26.793459, - "rate": 1.2, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - }, - { - "type": "waiting", - "time": 15.151746 - }, - { - "type": "canplay", - "time": 15.151746 - }, - { - "type": "playing", - "time": 15.151746 - } - ] - }, - { - "name": "background", - "time": 31.832882, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "hidden", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - }, - { - "type": "waiting", - "time": 15.151746 - }, - { - "type": "canplay", - "time": 15.151746 - }, - { - "type": "playing", - "time": 15.151746 - } - ] - }, - { - "name": "foreground", - "time": 38.85855, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - }, - { - "type": "waiting", - "time": 15.151746 - }, - { - "type": "canplay", - "time": 15.151746 - }, - { - "type": "playing", - "time": 15.151746 - } - ] - }, - { - "name": "channel-reload", - "time": 9.599715, - "rate": 1, - "paused": false, - "ready": 4, - "visibility": "visible", - "secure": false, - "events": [ - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 0.690605 - }, - { - "type": "canplay", - "time": 0.725333 - }, - { - "type": "playing", - "time": 0.725333 - }, - { - "type": "paused", - "time": 14.133419 - }, - { - "type": "playing", - "time": 14.133424 - }, - { - "type": "waiting", - "time": 15.151746 - }, - { - "type": "canplay", - "time": 15.151746 - }, - { - "type": "playing", - "time": 15.151746 - }, - { - "type": "waiting", - "time": 0 - }, - { - "type": "media-info", - "e": {} - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - } - } - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - } - } - }, - { - "type": "canplay", - "time": 0 - }, - { - "type": "playing", - "time": 0 - }, - { - "type": "media-info", - "e": { - "video": { - "codec": "avc1.4d4028", - "width": 1920, - "height": 1080, - "scanType": "progressive", - "frameRate": 25 - }, - "audio": { - "codec": "mp2", - "channelCount": 2 - }, - "bitrate": { - "bitsPerSecond": 2459000, - "source": "measured" - } - } - }, - { - "type": "waiting", - "time": 1.692994 - }, - { - "type": "canplay", - "time": 1.728 - }, - { - "type": "playing", - "time": 1.728 - } - ] - } - ], - "ui": [ - { - "name": "desktop-hidden", - "secure": false, - "opacity": "0", - "focusVisible": false, - "animation": "none", - "animationState": "running", - "video": { - "time": 12.048613, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [1280, 633] - }, - { - "name": "desktop-pointer", - "secure": false, - "opacity": "1", - "focusVisible": false, - "animation": "pulse", - "animationState": "running", - "video": { - "time": 12.558978, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [1280, 633] - }, - { - "name": "desktop-hidden-again", - "secure": false, - "opacity": "0", - "focusVisible": false, - "animation": "none", - "animationState": "running", - "video": { - "time": 16.464426, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [1280, 633] - }, - { - "name": "desktop-keyboard", - "secure": false, - "opacity": "1", - "focusVisible": true, - "animation": "pulse", - "animationState": "running", - "video": { - "time": 16.980792, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [1280, 633] - }, - { - "name": "mobile-hidden", - "secure": false, - "opacity": "0", - "focusVisible": false, - "animation": "none", - "animationState": "running", - "video": { - "time": 20.997156, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [390, 844] - }, - { - "name": "mobile-touch", - "secure": false, - "opacity": "1", - "focusVisible": false, - "animation": "pulse", - "animationState": "running", - "video": { - "time": 21.517548, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [390, 844] - }, - { - "name": "mobile-hidden-again", - "secure": false, - "opacity": "0", - "focusVisible": false, - "animation": "none", - "animationState": "running", - "video": { - "time": 25.694267, - "width": 1920, - "height": 1080 - }, - "visibleCanvases": 0, - "viewport": [390, 844] - } - ] -} diff --git a/tools/player-benchmark/results.md b/tools/player-benchmark/results.md deleted file mode 100644 index a4df4f67..00000000 --- a/tools/player-benchmark/results.md +++ /dev/null @@ -1,92 +0,0 @@ -# MPEG-TS / MP2 播放器 CPU 测量 - -## 测量条件 - -客户端为 Apple M3 Max、macOS 26.6.2、Chrome 152.0.7977.83,独立浏览器用户目录,窗口 1280×720。服务器为局域网 NAS。节目通过 NAS 已运行的 rtp2httpd 录制,保留原始 MPEG-TS 字节,再按 PCR 时间回放;每次连接从同一位置开始,不转码视频。测试地址使用普通 HTTP,浏览器确认 `isSecureContext === false`。 - -| 节目 | 视频 | 音频 | 视频解码路径 | -| --- | --- | --- | --- | -| IPTV 爱电影 | H.264 Main,1920×1080p,25 fps,约 2.46 Mbps | MP2,48 kHz,双声道 | VideoToolboxVideoDecoder,硬件解码 | -| CCTV-1 | H.264 High,1920×1080i,25 帧 / 50 场,约 8.77 Mbps | MP2,48 kHz,双声道 | FFmpegVideoDecoder,软件解码 | - -所有回放启用 MP2 WASM 软解,关闭画质增强和反交错。MSE 中保留用于媒体时钟和后台播放的静音 AAC 音轨;浏览器报告的 `FFmpegAudioDecoder` 对应此音轨,节目中的 MP2 由 WASM 解码,经 Web Audio 播放。 - -每轮预热 20 秒,再测量 40 或 60 秒。CPU 累计浏览器、渲染器/worker、GPU、网络和音频服务进程,100% 表示占满一个逻辑 CPU。采样剖析另行进行,不计入 CPU 对比。下面的丢帧统计只覆盖稳定测量区间。 - -代码基线为 `4d81cc8`;音频和 TS 优化为 `23aa1c0`,隐藏控件动画优化为 `d88f98d`。完整页面另外比较了 NAS production 前端快照,其 MP2 WASM 与代码基线一致。回放使用一个录制频道,以固定节目内容和网络输入;不是直接比较不同时间的直播画面。 - -## 完整播放器页面 - -页面保留 fancy 玻璃外观、侧栏、所有控件和动画,稳定播放时控件自动隐藏。桌面页面实际 viewport 为 1280×633,DPR 为 2,视频显示区域为 960×540。 - -| 场景 | 基线 CPU | 优化后 CPU | 下降 | -| --- | ---: | ---: | ---: | -| 1080p,1×,两轮均值 | 36.76% | 31.92% | 13.2% | -| 1080i,1×,两轮均值 | 34.64% | 33.22% | 4.1% | - -两轮基线分别为 36.28%、37.24%,优化后为 32.83%、31.01%;每轮稳定测量 40 秒,新增丢帧均为 0。NAS production 前端快照在同一回放条件下为 37.36%,方向一致。中途发生网络断流并自动重连的一轮已剔除并重测,没有把重启后的时钟或丢帧计数混入结果。 - -1080i 按 A/B/B/A 测量,基线为 34.66%、34.62%,优化后为 33.16%、33.29%,均无新增丢帧。其收益较小;这两种视频走不同解码/合成路径,不能仅凭视频码率预测整页 CPU。 - -界面改动仅在控件不可见时停止直播圆点的 CSS 动画。仅设置 `opacity: 0` 时,该动画仍会唤醒合成器;鼠标/触摸显示控件或键盘聚焦时,现在仍恢复原动画。桌面鼠标、Tab 聚焦、390×844 移动布局的触摸显示/自动隐藏均在浏览器验证,并检查了实际画面。 - -诊断时切换简洁外观约为 27.07%;关闭侧栏模糊并停止隐藏动画约为 23.92%。这些是改变外观的诊断对照,未计入优化结果,也未作为默认设置。视频绘制隔离、调整层级、禁用隐藏滤镜、提升侧栏合成层均没有比停止隐藏动画进一步降低开销,因此没有保留相应代码。剩余玻璃合成开销被保留。 - -## 播放引擎 - -此表使用最小测试页,只显示视频,使用正式 playback backend。 - -| 场景 | 基线 CPU | 优化后 CPU | 测量时间 | 优化轮次新增丢帧 | -| --- | ---: | ---: | --- | ---: | -| 1080p,正常 1× | 26.73%、27.95% | 26.56% | 每轮 60 秒 | 0 | -| 1080i,正常 1× | 31.78% | 30.95% | 每轮 40 秒 | 0 | -| 1080p,持续 1.2× 追直播 | 33.94% | 28.47% | 每轮 40 秒 | 0 | - -正常速度下 WSOLA 已有同步死区,可进入 1× 直接复制路径,所以单独优化拉伸不能带来很大的常速整页降幅。1080p 的重复测量没有证明显著的常速收益;1080i 的约 0.8 个百分点差异也不足以单独支持稳定百分比承诺。 - -持续追直播测试将输入按 1.2× PCR 时钟发送,浏览器所有测量点的实际播放速率均为 1.2。该场景整体 CPU 下降约 16.1%。常速优化后日志的音画漂移约在 ±2.1 ms 内;追直播启动阶段出现约 75 ms 的暂态,随后收敛到数毫秒。该日志诊断不是扬声器与屏幕的物理延迟测量。 - -早期八路展开、`-O2` 构建另做了 A/B/B/A:基线 26.73%、27.95%,候选 26.73%、26.54%。它支持“常速整页差异很小”的判断;最终 `-O3` 构建的结果单列于上表,没有混称同一构建。 - -## 局部计算 - -WSOLA 测试输入为节目中提取的 30 秒、48 kHz 双声道 float32 PCM,预热后取三轮均值。每种速率均逐字节比较基线和优化输出。 - -| 播放速率 | 基线耗时 | 优化耗时 | 输出 | -| --- | ---: | ---: | --- | -| 1× | 0.80 ms | 0.73 ms | 完全相同 | -| 0.9× | 378.64 ms | 93.47 ms | 完全相同 | -| 1.01× | 337.89 ms | 82.53 ms | 完全相同 | -| 1.2× | 283.87 ms | 69.32 ms | 完全相同 | -| 2× | 176.91 ms | 41.93 ms | 完全相同 | - -非 1× 拉伸耗时降低约 75%。优化同时计算八个相邻候选的相关性,保留穷举范围、每个累加器的求和顺序和并列候选的选择顺序,没有降低音质或缩小搜索范围。 - -TS 解复用/封装对完整爱电影录制运行,三个网络分块尺寸的输出摘要分别核对。以下为三次计时的中位数。 - -| 分块大小 | 基线 | 优化 | 耗时下降 | -| --- | ---: | ---: | ---: | -| 1,316 字节 | 110.02 ms | 103.23 ms | 6.2% | -| 18,800 字节 | 104.57 ms | 94.97 ms | 9.2% | -| 65,536 字节 | 100.98 ms | 92.14 ms | 8.8% | - -三个尺寸各自的 MP4 初始化段、媒体段和 MP2 输出 SHA-256 均与基线相同。不同分块尺寸可能影响 MP4 分段,因此只比较同一分块尺寸前后的摘要。较早的重复测量耗时下降约 9–11%;局部小基准存在波动,不把它当作整页 CPU 降幅。 - -## 兼容性与取舍 - -- 保留普通 HTTP、MSE 静音音轨、MP2、音画同步、变速、暂停/恢复、seek、频道切换和后台恢复。不引入 AudioWorklet、SharedArrayBuffer 或其他只在安全上下文可用的 API。 -- WSOLA 回归覆盖多种采样率、单/双声道、细碎输入、时长、音调、静音和 reset。TS 回归覆盖 188/192/204 字节包、PCR 回绕和 discontinuity。 -- 正式 `-O3` WASM 对真实节目的 MP2 数据分别按 97、576、4096 字节分块解码,三种分块的 PCM 均逐字节等于基线,也彼此一致,验证了跨输入块的帧缓存。 -- 在真实 HTTP 浏览器中验证了启动、暂停后时钟停止、恢复、回退 seek、1.2×、切到后台再返回、重新加载频道和销毁,无播放错误。 -- SIMD 构建、十六路展开和更大的 Web Audio latency hint 没有表现出值得增加兼容分支或代码量的整体收益,未采用。 -- 常速下剩余开销主要在浏览器的媒体解码、音频输出和视频合成;1080i 在此 Chrome 环境走软件视频解码。上述结果不代表其他浏览器的视频解码能力,也没有直接测量手机温度或电池功耗。 - -## 输入校验 - -| 输入 | SHA-256 | -| --- | --- | -| 爱电影原始 TS | `67eba614b061ee3f9cc8a10cd05946cede7022ec5092baddc129c61ab26b2879` | -| CCTV-1 原始 TS | `d283769a6a8d276f28de3f602354a1dffe38261e5549926846e47fd15cc7ca2d` | -| 基线 MP2 WASM | `95afb42c86996c4e160cda7d7a1ee90541640ae997b00c857255076d3e82b465` | - -复现方法见 [README.md](README.md),精简测量记录见 [results.json](results.json),保留逐进程 CPU、视频采样状态、解码器信息、日志和功能验证状态。记录中的服务器主机名统一替换为 `nas.test`。录像不随仓库分发。 diff --git a/tools/player-benchmark/serve.mjs b/tools/player-benchmark/serve.mjs deleted file mode 100644 index d9693db5..00000000 --- a/tools/player-benchmark/serve.mjs +++ /dev/null @@ -1,112 +0,0 @@ -import fs from "node:fs"; -import http from "node:http"; -import path from "node:path"; - -if (!process.argv[2] || !process.argv[3]) - throw new Error("Usage: node serve.mjs [port]"); -const base = path.resolve(process.argv[2]); -const port = Number(process.argv[4] ?? 8766); -const stream = fs.readFileSync(process.argv[3]); -const pcrs = []; -let first; -let previous = 0; -let pcrPid; -for (let p = 0; p + 188 <= stream.length; p += 188) { - if (stream[p] !== 0x47) throw Error("TS sync lost"); - if (stream[p + 3] & 0x20 && stream[p + 4] >= 7 && stream[p + 5] & 0x10) { - const pid = ((stream[p + 1] & 31) << 8) | stream[p + 2]; - pcrPid ??= pid; - if (pid !== pcrPid) continue; - const q = p + 6; - const pcr = - stream[q] * 33554432 + stream[q + 1] * 131072 + stream[q + 2] * 512 + stream[q + 3] * 2 + (stream[q + 4] >> 7); - first ??= pcr; - const time = ((pcr - first + 8589934592) % 8589934592) / 90; - if (time >= previous) { - pcrs.push({ offset: p + 188, time }); - previous = time; - } - } -} -if (!pcrs.length) throw new Error("The recording must contain 188-byte TS packets with PCR timestamps"); -console.log("Replay", stream.length, pcrs.length, previous / 1000, "seconds"); -http - .createServer((req, res) => { - const url = new URL(req.url, "http://localhost"); - if (url.pathname === "/stream") { - res.writeHead(200, { - "Content-Type": "video/mp2t", - "Cache-Control": "no-store", - "Access-Control-Allow-Origin": "*", - }); - const speed = Number(url.searchParams.get("speed") ?? 1); - if (!Number.isFinite(speed) || speed <= 0 || speed > 2) { - res.end(); - return; - } - const start = performance.now(); - let index = 0, - offset = 0, - timer; - const send = () => { - if (res.destroyed) return; - const elapsed = (performance.now() - start) * speed; - while (index < pcrs.length && pcrs[index].time <= elapsed) index++; - const end = pcrs[Math.max(0, index - 1)].offset; - if (end > offset) { - res.write(stream.subarray(offset, end)); - offset = end; - } - if (index >= pcrs.length) { - res.end(stream.subarray(offset)); - return; - } - timer = setTimeout(send, Math.max(1, pcrs[index].time / speed - (performance.now() - start))); - }; - res.on("close", () => clearTimeout(timer)); - send(); - return; - } - if (url.pathname === "/playlist.m3u") { - res.setHeader("Content-Type", "audio/x-mpegurl"); - res.end("#EXTM3U\n#EXTINF:-1,Recorded broadcast\n/stream\n"); - return; - } - let file; - try { - file = path.join(base, decodeURIComponent(url.pathname)); - } catch { - res.writeHead(400); - res.end(); - return; - } - if (!file.startsWith(`${base}/`)) { - res.writeHead(403); - res.end(); - return; - } - fs.stat(file, (err, stat) => { - if (err || !stat.isFile()) { - res.writeHead(404); - res.end(); - return; - } - res.setHeader( - "Content-Type", - file.endsWith(".js") - ? "text/javascript" - : file.endsWith(".wasm") - ? "application/wasm" - : file.endsWith(".html") - ? "text/html" - : file.endsWith(".css") - ? "text/css" - : file.endsWith(".png") - ? "image/png" - : "application/octet-stream", - ); - res.setHeader("Cache-Control", "no-store"); - fs.createReadStream(file).pipe(res); - }); - }) - .listen(port, "0.0.0.0", () => console.log("Listening", port)); diff --git a/tools/player-benchmark/wasm-benchmark.mjs b/tools/player-benchmark/wasm-benchmark.mjs deleted file mode 100644 index 7f48b1e9..00000000 --- a/tools/player-benchmark/wasm-benchmark.mjs +++ /dev/null @@ -1,46 +0,0 @@ -import assert from "node:assert/strict"; -import fs from "node:fs"; - -if (process.argv.length < 5) - throw new Error("Usage: node wasm-benchmark.mjs <48kHz-stereo.f32> "); -const inputBytes = fs.readFileSync(process.argv[2]); -const pcm = new Float32Array(inputBytes.buffer, inputBytes.byteOffset, inputBytes.byteLength / 4); -async function run(file, ratio) { - const { instance } = await WebAssembly.instantiate(fs.readFileSync(file), { - env: { emscripten_notify_memory_growth() {} }, - }); - const x = instance.exports; - x._initialize(); - const h = x.wsola_create(48000, 2); - x.wsola_set_ratio(h, ratio); - const n = 1152; - const p = x.malloc(n * 8), - o = x.malloc(12000 * 8); - const out = []; - let ms = 0, - frames = 0; - for (let repeat = 0; repeat < 5; repeat++) { - x.wsola_reset(h); - const start = performance.now(); - for (let i = 0; i < pcm.length; i += n * 2) { - const inputFrames = Math.min(n, (pcm.length - i) / 2); - new Float32Array(x.memory.buffer, p, inputFrames * 2).set(pcm.subarray(i, i + inputFrames * 2)); - const got = x.wsola_process(h, p, inputFrames, o, 12000); - if (repeat === 4) { - frames += got; - out.push(Buffer.from(new Float32Array(x.memory.buffer, o, got * 2).slice().buffer)); - } - } - if (repeat > 0 && repeat < 4) ms += performance.now() - start; - } - return { ms: ms / 3, out: Buffer.concat(out), frames }; -} -for (const ratio of [1, 0.9, 1.01, 1.2, 2]) { - const results = []; - for (const file of process.argv.slice(3)) { - const r = await run(file, ratio); - results.push(r); - console.log(file.split("/").at(-1), ratio, r.ms.toFixed(2), r.frames); - } - for (const r of results.slice(1)) assert.deepEqual(r.out, results[0].out); -}