0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00
obs-studio/libobs
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
..
audio-monitoring libobs: Replace circlebuf with deque 2024-01-16 16:45:09 +01:00
callback libobs/callback: Remove unused static-inline function 2024-08-07 17:27:49 -04:00
cmake libobs: Fix Windows x86 CMake when using reduced obs-deps package 2024-08-28 18:26:47 -04:00
data libobs,obs-filters: Use common straight alpha math 2023-11-04 18:12:22 -05:00
graphics libobs/graphics: Add inline qualifier to functions in header files 2024-08-07 17:27:49 -04:00
media-io libobs: Remove compatibility with FFmpeg < 6.1 2024-08-23 13:44:04 -04:00
pkgconfig cmake: Fix pkgconfig generation 2022-07-19 09:28:51 -03:00
util libobs/util: Add os_nstime_to_timespec 2024-09-05 16:38:58 -04:00
CMakeLists.txt libobs: Fix Windows x86 CMake when using reduced obs-deps package 2024-08-28 18:26:47 -04:00
obs-audio-controls.c libobs: Remove obs_volmeter_{get,set}_update_interval() 2024-08-28 19:10:27 -04:00
obs-audio-controls.h libobs: Remove obs_volmeter_{get,set}_update_interval() 2024-08-28 19:10:27 -04:00
obs-audio.c libobs: Fix audio doubling with multiple main view mixes 2024-01-25 14:57:03 -05:00
obs-av1.c shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs-av1.h shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs-avc.c libobs: Fix obs_parse_avc_header missing high profile parameters 2024-05-10 18:14:27 -04:00
obs-avc.h Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-cocoa.m libobs: Always explicitly check modifiers in macOS hotkey event handler 2024-08-11 09:44:28 +10:00
obs-config.h libobs: Update version to 30.2.2 2024-07-23 11:56:59 -04:00
obs-data.c libobs: Add functions to serialize JSON with default values 2024-05-25 17:29:28 -07:00
obs-data.h libobs: Add functions to serialize JSON with default values 2024-05-25 17:29:28 -07:00
obs-defs.h Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-display.c libobs: Check if adapter can safely fast clear 2023-07-29 16:34:47 -07:00
obs-encoder.c shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs-encoder.h libobs: Add encoder packet timing support 2024-09-05 16:38:58 -04:00
obs-ffmpeg-compat.h libobs: Remove compatibility with FFmpeg < 6.1 2024-08-23 13:44:04 -04:00
obs-hevc.c Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-hevc.h Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-hotkey-name-map.c libobs: Use uthash for hotkey name map 2023-03-18 10:47:49 +01:00
obs-hotkey.c libobs: Remove obs_hotkey_enable_strict_modifiers() 2024-08-28 19:10:27 -04:00
obs-hotkey.h libobs: Remove obs_hotkey_enable_strict_modifiers() 2024-08-28 19:10:27 -04:00
obs-hotkeys.h libobs: Remove _WIN32 ifdef from enum 2019-11-17 20:30:42 -08:00
obs-interaction.h Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-internal.h shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs-missing-files.c libobs: Add missing file API to sources 2021-01-17 10:31:58 +13:00
obs-missing-files.h libobs: Add missing file API to sources 2021-01-17 10:31:58 +13:00
obs-module.c libobs: Add OBS_ENCODER_CAP_SCALING 2024-08-23 14:20:53 -04:00
obs-module.h CI: Update to clang-format 16 2023-08-10 16:07:25 -04:00
obs-nal.c Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-nal.h Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-nix-platform.c libobs: Rename OBS_NIX_PLATFORM_X11_GLX to OBS_NIX_PLATFORM_INVALID 2024-08-28 19:10:27 -04:00
obs-nix-platform.h libobs: Rename OBS_NIX_PLATFORM_X11_GLX to OBS_NIX_PLATFORM_INVALID 2024-08-28 19:10:27 -04:00
obs-nix-wayland.c libobs: Add media key support for linux 2022-10-29 16:08:16 -07:00
obs-nix-wayland.h libobs: Add a Wayland platform 2021-02-09 09:39:04 -03:00
obs-nix-x11.c Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-nix-x11.h libobs/nix: Move X11-specific code to obs-nix-x11.c 2021-02-01 19:03:43 -03:00
obs-nix.c libobs: Fix relocatable Linux builds using legacy portable build flag 2024-04-16 12:46:51 -04:00
obs-nix.h libobs/nix: Move X11-specific code to obs-nix-x11.c 2021-02-01 19:03:43 -03:00
obs-output-delay.c libobs: Add encoder packet timing support 2024-09-05 16:38:58 -04:00
obs-output.c shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs-output.h libobs: Add encoder packet timing support 2024-09-05 16:38:58 -04:00
obs-properties.c libobs: Remove obs_proprety_text_type() 2024-08-28 19:10:27 -04:00
obs-properties.h libobs: Remove obs_proprety_text_type() 2024-08-28 19:10:27 -04:00
obs-scene.c libobs: Always set initial scene item pos to top-left corner 2024-09-02 20:39:18 +02:00
obs-scene.h libobs: Allow scene items to use legacy absolute mode 2024-08-27 23:58:51 +02:00
obs-service.c docs,libobs: Remove deprecated service APIs 2024-08-28 19:10:27 -04:00
obs-service.h libobs: Add bearer token to obs_service_connect_info 2023-06-09 20:20:49 -05:00
obs-source-deinterlace.c Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-source-transition.c libobs: Remove unused static-inline functions 2024-08-07 17:27:49 -04:00
obs-source.c libobs: Add source profiler 2024-08-10 23:51:39 -07:00
obs-source.h libobs: Add obs_source_info.filter_add 2023-07-29 16:15:21 -07:00
obs-video-gpu-encode.c libobs: Add encoder packet timing support 2024-09-05 16:38:58 -04:00
obs-video.c libobs: Add source profiler 2024-08-10 23:51:39 -07:00
obs-view.c libobs: Add obs_view_enum_video_info 2023-12-02 18:05:55 -06:00
obs-win-crash-handler.c Update copyrights/names 2023-05-20 01:31:18 -07:00
obs-windows.c cmake: Add changes for CMake build framework 3.0 2023-06-29 10:11:32 -04:00
obs.c docs,libobs: Remove master volume functions 2024-08-28 19:10:27 -04:00
obs.h shared/bpm: Add BPM (Broadcast Performance Metrics) 2024-09-05 16:38:58 -04:00
obs.hpp CI: Update to clang-format 16 2023-08-10 16:07:25 -04:00
obsconfig.h.in cmake/libobs: Only set beta/rc increment 2023-10-06 17:21:51 -06:00
obsversion.c.in libobs: Use static library for version string information 2023-05-27 16:48:24 -07:00
obsversion.h libobs: Use static library for version string information 2023-05-27 16:48:24 -07:00