0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00
obs-studio/shared
Alex Luccisano 07d504e5c7 shared/bpm: Add BPM (Broadcast Performance Metrics)
Introduce support for delivering BPM (Broadcast
Performance Metrics) over SEI (for AVC/H.264 and
HEVC/H.265) and OBU (for AV1) unregistered messages.
Metrics being sent are the session frame counters,
per-rendition frame counters, and RFC3339-based
timestamping information to support end-to-end
latency measurement.

SEI/OBU messages are generated and sent with each IDR
frame, and the frame counters are diff-based, meaning
the counts reflect the diff between IDRs, not the running
totals.

BPM documentation is available at [1].

BPM relies on the recently introduced encoder packet timing
support and the packet callback mechanism.

BPM injection is enabled for an output by registering
the `bpm_inject()` callback via `obs_output_add_packet_callback()`
function. The callback must be unregistered using
`obs_output_remove_packet_callback()` and `bpm_destroy()`
must be used by the caller to release the BPM structures.

It is important to measure the number of frames successfully
encoded by the obs_encoder_t instances, particularly for
renditions where the encoded frame rate differs from the
canvas frame rate. The encoded_frames counter and
`obs_encoder_get_encoded_frames()` API is introduced
to measure and report this in the encoded rendition
metrics message.

[1] https://d50yg09cghihd.cloudfront.net/other/20240718-MultitrackVideoIntegrationGuide.pdf
2024-09-05 16:38:58 -04:00
..
bpm shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
file-updater deps,shared,plugins: Move file-updater to shared folder 2024-07-27 07:38:36 +02:00
happy-eyeballs Update formatting of CMake files 2024-08-14 12:07:47 -04:00
ipc-util Update formatting of CMake files 2024-08-14 12:07:47 -04:00
media-playback Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
obs-d3d8-api libobs: Add shared interface libraries to shared project directory 2024-08-20 16:00:21 -04:00
obs-hook-config libobs: Add shared interface libraries to shared project directory 2024-08-20 16:00:21 -04:00
obs-inject-library libobs: Add shared interface libraries to shared project directory 2024-08-20 16:00:21 -04:00
obs-scripting Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
obs-shared-memory-queue libobs: Add shared interface libraries to shared project directory 2024-08-20 16:00:21 -04:00
obs-tiny-nv12-scale libobs: Add shared interface libraries to shared project directory 2024-08-20 16:00:21 -04:00
opts-parser Update formatting of CMake files 2024-08-14 12:07:47 -04:00
properties-view shared/properties-view: Remove Qt 6.2 cmake code 2024-08-28 23:21:06 -04:00
qt shared/qt: Remove unused graphics include from qt-wrappers 2024-08-30 23:55:45 -04:00