gstreamer/subprojects
Jordan Yelloz f11735c97b tsmux: Adjust byte counter when adjusting bitrate
When configured in constant bitrate mode, the muxer computes timing information
using the configured bitrate and the byte counter (now = bytes sent / byterate).

When an application changes the bitrate in CBR mode during playback, the
relationship between bytes sent and bitrate is no longer valid so new timing
values will be off by the ratio of the old bitrate to the new bitrate.
Furthermore, it will upset the way that padding is generated.

pad_stream() works by trying to fit the byte counter to now * byterate.
The result is that when decreasing bitrate, the muxer stalls, waiting until the
byte counter is in agreement with now * byterate. Also, when increasing
bitrate, the padding will spike in volume until the byte counter fits with
now * byterate.

If the byte counter is scaled by the ratio of new bitrate / old bitrate when
adjusting bitrate, then padding is generated in a way that applications would
more likely expect.

One detail this change doesn't yet address is whether the next PCR will match up
optimally with the previous PCR right after the byte counter is scaled. In that
case, some correction may be necessary. Also, perhaps the user should be
prevented from changing from bitrate=0 to bitrate=nonzero during playback since
it's not straightforward how to scale the byte counter in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7158>
2024-07-25 15:02:11 +00:00
..
gst-devtools gst-validate: Don't treat FALSE when sending flushes as an error 2024-07-02 19:06:02 +00:00
gst-docs docs: Add back SVG sources for the pipeline diagrams 2024-07-10 13:53:19 +03:00
gst-editing-services ges-uri-asset: Annotate async/sync/finish functions correctly 2024-07-01 13:10:27 +00:00
gst-examples examples: webrtc: rust: Update to gstreamer-rs 0.23 2024-07-17 09:12:47 +00:00
gst-integration-testsuites testsuites: remove prores reverse playback test from known issues list 2024-06-18 20:27:15 +00:00
gst-libav ffmpeg: Don't register elements for which we have no caps 2024-07-25 12:14:50 +00:00
gst-plugins-bad tsmux: Adjust byte counter when adjusting bitrate 2024-07-25 15:02:11 +00:00
gst-plugins-base glcolorconvert: Fix syntax error in detiling shader 2024-07-25 14:10:52 +00:00
gst-plugins-good meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0 2024-07-23 15:32:22 +02:00
gst-plugins-ugly asfdemux: Be more lenient towards malformed header 2024-07-23 06:35:11 +00:00
gst-python gst-python: Fix python3 not found in Windows 2024-07-07 16:14:05 +00:00
gst-rtsp-server build: Add missing common options that are yielding in subprojects 2024-06-27 15:53:46 +00:00
gstreamer gst: clock: Move Android OS check to the __ANDROID__ macro 2024-07-17 22:33:52 +00:00
gstreamer-sharp Back to development 2024-03-05 12:58:57 +00:00
gstreamer-vaapi meson: Don't use fallback: kwarg for libva deps 2024-05-29 15:49:45 +00:00
macos-bison-binary
packagefiles subprojects: bump opus wrap to 1.5.2 2024-06-22 12:26:22 +01:00
webview2 subprojects: webview2: Fix warning with meson 1.4.0 2024-04-13 14:47:29 +00:00
win-flex-bison-binaries
win-nasm
win-pkgconfig
avtp.wrap
cairo.wrap cairo: update wrap to 1.18.0 2023-12-13 11:51:53 +00:00
dav1d.wrap meson: Declare dav1d dependency in subproject 2024-03-25 10:14:13 +00:00
DirectX-Headers.wrap subprojects: Add DirectX-Headers wrap 2023-12-14 18:08:00 +09:00
directxmath.wrap subprojects: directxmath: Update to 3.1.9 2024-04-02 05:14:53 +09:00
dssim.wrap
dv.wrap
expat.wrap
fdk-aac.wrap
FFmpeg.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
flac.wrap flac: Add wrap file and add fallback for it to the flac plugin 2024-04-07 11:12:51 +00:00
fontconfig.wrap
freetype2.wrap
fribidi.wrap
gl-headers.wrap
glib-networking.wrap subprojects: update glib-networking wrap to 2.78.1 2024-04-03 18:49:08 +00:00
glib.wrap subprojects: update glib wrap to 2.78.3 2023-12-21 19:22:25 +02:00
gobject-introspection.wrap
graphene.wrap
gst-plugins-rs.wrap Back to development 2024-03-05 12:58:57 +00:00
gtk-sharp.wrap csharp: update gtk-sharp subproject 2023-12-07 17:34:30 +01:00
gtk.wrap
harfbuzz.wrap
json-glib.wrap
lame.wrap
libdrm.wrap libdrm.wrap: Bump to latest 2.4.120 2024-05-29 15:49:45 +00:00
libffi.wrap
libgudev.wrap wraps: libgudev: add fallback uri 2024-07-24 11:44:28 +00:00
libjpeg-turbo.wrap
liblc3.wrap subprojects: update liblc3 wrap to 1.1.1 2024-06-28 13:38:36 +01:00
libmicrodns.wrap
libnice.wrap webrtc: Change requirement to libnice 0.1.22 2024-03-22 08:49:32 +00:00
libopenjp2.wrap
libpng.wrap
libpsl.wrap
libsoup.wrap soup: Link to libsoup in all cases on non-Linux 2024-02-21 09:27:59 +05:30
libsrtp2.wrap
libva.wrap meson: Fix libva.wrap meson build 2024-06-13 04:48:56 +00:00
libwpe.wrap
libxml2.wrap
ntv2.wrap aja: Update to AJA NTV2 17.0.1 2024-05-11 15:54:54 +00:00
ogg.wrap
openh264.wrap
opus.wrap subprojects: bump opus wrap to 1.5.2 2024-06-22 12:26:22 +01:00
orc.wrap subprojects: track orc main branch again 2024-03-05 13:25:19 +00:00
pango.wrap pango: update wrap to 1.51.0 2023-12-13 11:51:53 +00:00
pcre2.wrap
pixman.wrap meson: Bump pixman.wrap to latest version 2024-03-23 13:08:15 +00:00
proxy-libintl.wrap
pycairo.wrap
pygobject.wrap
soundtouch.wrap pitch: add validate tests 2024-05-02 13:26:09 +02:00
sqlite3.wrap
vorbis.wrap
vpx.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
wayland-protocols.wrap gstwayland: Support wp_single_pixel_buffer_v1 2024-01-22 16:51:36 -05:00
webrtc-audio-processing.wrap
wpebackend-fdo.wrap
x264.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
zlib.wrap