Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
325 commits
Select commit Hold shift + click to select a range
9d0bac6
appsrc: Uniformly handle EOS events being pushed
thaytan Jun 14, 2026
488fe60
pnmdec: Avoid overflows when calculating frame sizes
sdroege Jun 22, 2026
3a79e74
netsim: Fix racy test failures
thaytan Jun 15, 2026
6441dce
video-format: Add static assert to prevent list of formats mismatch
xclaesse Jun 22, 2026
bd5a93e
audio-format: Add static assert to prevent list of formats mismatch
xclaesse Jun 23, 2026
c4bb776
mpegtsmux: Always assign PTS to output buffers in CBR mode
thaytan Jun 23, 2026
0fba45d
avtp: Correct ptime generation from avtp timestamp
go2sh Jun 18, 2026
e637707
docs: va: document CPU access to decoded frames
Climax777 May 5, 2026
3aea9d7
docs: va: complete CPU access to VA frames
ceyusa May 21, 2026
8b0cef1
va: surfacecopy: get surface's image in `gst_va_surface_copy`
ceyusa Jun 19, 2026
0fcf108
tsdemux: Add ignore-continuity-counter property
thaytan Jun 18, 2026
bb8af1f
adaptivedemux: Set tsdemux ignore-continuity-counter property
thaytan Jun 18, 2026
0b284a9
base audiovisualizer: copy metas to the output video buffer
fengalin Jun 23, 2026
8c6d4df
h264parse: Check for enough slice header data being available
sdroege Jun 16, 2026
eec42c2
h266parser: Check aspect ratio index against lookup table length
sdroege Jun 17, 2026
0eafdff
inputselector: Add 2 more calls to check for active pad switch
thaytan Jun 14, 2026
6272cd8
inputselector: Adjust racy test
thaytan Jun 14, 2026
06a2861
inputselector: Hold active-pad during allocation query
thaytan Jun 23, 2026
fa26e36
security-advisories: Add sa-2026-0047
sdroege Jun 16, 2026
64d9d1a
security-advisories: Add sa-2026-0048
sdroege Jun 17, 2026
49b1f6f
security-advisories: add explanatory note to new advisories
tp-m Jun 24, 2026
b32d2d5
appsink: Clear local sample storage when flushing
philn Jun 24, 2026
9950541
pads: Rename private last_cookie to last_events_cookie
thaytan May 31, 2026
51b8a3b
pad: Use internal aliases for probe flow return values
thaytan May 31, 2026
f1a482f
pad: Implement sticky event resending on linking
thaytan Jun 18, 2026
fa8f2e7
rtpsink: fix mutex not unlocked on invalid URI in set_property
Jun 24, 2026
8b83631
uridecodebin3: deactivate input_item in erroneous ready->paused trans…
MAlba124 Jun 25, 2026
db4d6c1
qtdemux: push_buffer() should use global GstClockTime
ntrrgc Jun 18, 2026
01f263b
va: add background-color property for vacompositor and vapostproc
oscar-carter-red May 26, 2026
ee3af4d
vulkan: opt-in multi-planar YUV VkImage for image buffer pool
azatnurg May 29, 2026
fddfed9
vulkan: add tests for opt-in multi-planar YUV VkImage for image buffe…
azatnurg Jun 16, 2026
2411e7b
qroverlay: Fix use after free bug
xclaesse Jun 26, 2026
c829d30
qroverlay: If keep_data is TRUE we can reuse previous overlay next time
xclaesse Jun 26, 2026
e214ff8
meson: add riscv32/riscv64 to host_defines
Felix-Gong Jun 5, 2026
1fb00eb
tests: add RISC-V 64-bit ABI struct definitions
Felix-Gong Jun 5, 2026
be5c96e
cpuid: Add RISC-V Vector extension detection
Felix-Gong Jun 28, 2026
badd956
Release 1.29.2
tp-m Jun 28, 2026
dfad70b
Back to development after 1.29.2
tp-m Jun 28, 2026
6c79ed0
test/vulkandownload: use the same device for creating VkImage and vul…
ystreet Jun 16, 2026
642fa31
webrtc/transportreceivebin: remove unused rt(c)p probe fields
ystreet Jun 26, 2026
cae6e21
webrtcbin: validate remote fingerprints match peer dtls certificate
ystreet Jun 26, 2026
4ec54b4
yolotensordecoder: Make second bounding box private
ocrete Dec 22, 2025
00578d6
yolotensordecoder: Calculate masks offsets with the others
ocrete Dec 22, 2025
7058301
yolotensordecoder: Extract bbox extractor from IoU function
ocrete Dec 22, 2025
659e6ba
yolotensordecoder: Make IoU function into a vfunc
ocrete Dec 22, 2025
d97d3c3
yolotensordecoder: Fix limit calculation
ocrete Dec 23, 2025
82ce42a
tensordecoders: Add tensor decoder for YOLO v8 Oriented Bounding Boxe…
ocrete Dec 22, 2025
11110fe
yolotensordecoder: Rename masks to extras
ocrete Dec 23, 2025
32effb4
vulkan/physical-device: fix debug printing 3-component limits
ystreet Jun 25, 2026
967cd8c
vulkan/physical-device: add some missing debug output
ystreet Jun 25, 2026
cc48c6d
vulkan/physical-device: fix structure type
ystreet Jun 30, 2026
70a113d
audio-resampler: Declare that NEON support also requires Thumb
amyspark Jun 16, 2026
97a3f3f
pngdec: fix wrong macro being used for ICC support test
amyspark Mar 27, 2026
f276bb4
typefind: add animated PNG detection
amyspark Mar 27, 2026
5cb4247
typefind: add X Bitmap support
amyspark Mar 27, 2026
3719ee1
typefind: fix incorrect parsing of WBMP multibyte integers
amyspark Mar 27, 2026
c5053e8
typefind: fix caps leaks
amyspark Mar 30, 2026
d8b2228
docs: tutorials: android: Update minimum SDK version to 26
sdroege Jun 30, 2026
9d8a5df
examples: android: Update minimum SDK version to 26
sdroege Jun 30, 2026
e0676de
OSS-Fuzz: Add fuzzer targeting value caps operation
arthurscchan May 8, 2026
185aaae
amfcodec: add amfvqenhancer element
azatnurg Jun 29, 2026
4a837cd
amfcodec: adjust amfhqscaler to the structure of amfvqenhancer element
azatnurg Jun 29, 2026
00b9d8d
vulkan: simplify elements registration
dabrain34 Jun 11, 2026
153e388
gstgldisplay_gbm: Remove duplicate close(drm_fd)
Jul 1, 2026
c339de4
videoparsersbad: Always clear LCEVC enhancement data when resetting f…
julianbouzas Jul 1, 2026
47e8e07
applemedia: vtdec now has per-codec elements
DominiqueLrx May 13, 2026
e7a9bf2
applemedia: doc: Added documentation for new vtdec per-codec elements
DominiqueLrx May 14, 2026
3004208
applemedia: tests: Basic tests for all vtdec-based elements
DominiqueLrx May 14, 2026
7748ef2
allocators: Add API for memory:AHardwareBuffer
DominiqueLrx May 30, 2026
fdadda6
androidmedia: Add AImageReader output plumbing to MediaCodec wrapper
DominiqueLrx May 30, 2026
0a20bc6
androidmedia: Add private AImage-backed AHardwareBuffer memory
DominiqueLrx May 30, 2026
9a34ada
amcviddec: Add memory:AHardwareBuffer output mode
DominiqueLrx May 30, 2026
33dc864
vulkan: Extensions and Vulkan improvements to support AHB import
DominiqueLrx May 31, 2026
2ffa726
vulkan: Fix error handling in gst_vulkan_descriptor_pool_create
DominiqueLrx Jun 19, 2026
73b6b28
vulkanupload: Expose helpers to allow introducing AHB support in a se…
DominiqueLrx Jun 2, 2026
8ccaa8b
vulkanupload: Add support for memory:AHardwareBuffer on the sink pad
DominiqueLrx Jun 2, 2026
128b89d
video: Introduce AHARDWARE_BUFFER for AHardwareBuffer-backed raw video
DominiqueLrx Jun 26, 2026
e7fbb43
allocators: Add AHardwareBuffer format caps string helpers
DominiqueLrx Jun 26, 2026
653d4c1
amcviddec: Expose AHARDWARE_BUFFER/ahb-format instead of RGBA for AHB…
DominiqueLrx Jun 26, 2026
9f87a0f
vulkanupload: Support AHARDWARE_BUFFER/ahb-format for AHB import
DominiqueLrx Jun 26, 2026
644b5dc
tests: Cover AHARDWARE_BUFFER caps handling
DominiqueLrx Jun 26, 2026
89ca0a2
h266parser: Heap-allocate parameter sets before parse to avoid stack …
walisiewicz-V-Nova Jul 1, 2026
143cb59
gstcurlsmtpsink: Use the correct content-type if known
Jun 15, 2026
f795e3a
fdkaac: Take into account priming samples when setting buffer timestamps
dheitmueller Jun 29, 2026
84223cb
gstptpclock: fix ptp initialization when running as Windows service
ErikStrandhSR Apr 8, 2026
9e31c61
gstinfo: Use a more optimized version of GST_TIME_ARGS
nirbheek May 9, 2026
e7a56fc
gldownload: fix wrong DRM format negotiation causing R/B channel swap
Houqiqi Jun 8, 2026
1b6b177
dots-viewer: add element search across pipelines
thiblahute Jun 30, 2026
d05b76b
dots-viewer: turn search into a Ctrl+K overlay palette
thiblahute Jun 30, 2026
e1869dd
dots-viewer: parse the search index with graphviz, not regex
thiblahute Jun 30, 2026
6dab206
dots-viewer: refine search ranking and highlight the open pipeline
thiblahute Jun 30, 2026
9eec2d8
gstv4l2decoder: Fix media_fd leak when video_fd open fails
Jul 1, 2026
c88b3fd
good: tests: gdkpixbufoverlay: use autovideosink instead of X11
amyspark Jun 25, 2026
6399068
tests: fix gdkpixbufoverlay-test gating on GTK instead of gdk-pixbuf
amyspark Jun 25, 2026
d41d199
meson: Fix gdk-pixbuf-2.0 fallback on Windows
amyspark Jun 25, 2026
9c768e4
wpe: wayland-server is required
xclaesse Jul 2, 2026
4ac78e6
clock: Warn if setting a slaved system default clock
xclaesse Dec 2, 2025
c713c48
d3d12: Fix command list leak
seungha-yang Jul 2, 2026
ed7baf9
glupload: Don't crash on missing GstVideoMeta
thaytan Jul 2, 2026
c8e4752
security-advisories: sync updates from www
tp-m Jul 3, 2026
0882ebf
ges: tests: Implement assertion check macros as functions
thiblahute Jul 3, 2026
3be0fb5
aja: Remove union designated initializers
amyspark Jun 20, 2026
9cb37ee
aja: implement semaphore for Windows and macOS
amyspark Jun 22, 2026
4df3c4e
aja: Implement thread affinity for Windows
amyspark Jun 20, 2026
4c35363
aja: Implement Quality of Service classing for macOS
amyspark Jun 23, 2026
4cc1b3e
aja, ntv2: update to 18.0.0
amyspark Jun 20, 2026
3c390f1
ntv2: add support for installing from the wrap
amyspark Jun 22, 2026
72ffee0
aja: add support for detecting the SDK from a pkg-config module
amyspark Jun 22, 2026
b088e02
validate: support multiple checksums in check-last-sample action
thiblahute Oct 17, 2025
1c94997
shapewipe: Fix missing mutex unlock in shutdown path
Jul 2, 2026
8e6cd6f
playsink: Fix incorrect return value in find_color_balance_element
Jul 2, 2026
168082d
d3d12: Add wrappers around MakeResident/Evict calls
seungha-yang Jun 29, 2026
ca8b458
d3d12device: Track resident resource size
seungha-yang Jun 30, 2026
f5bcbfb
d3d12memory: Add support for automatic residency control
seungha-yang Jun 30, 2026
4b74682
d3d12bufferpool: Always release buffer memory to the pool
seungha-yang Jun 30, 2026
f0e2e76
d3d12decoder: Evict output resources when over budget
seungha-yang Jun 30, 2026
ccce6d5
d3d12: Evict output resources when over budget
seungha-yang Jun 30, 2026
09e9376
d3d12device: Add properties for residency management
seungha-yang Jul 1, 2026
80c38d8
fdmemory: Fix incorrect return value in gst_fd_mem_map
Jul 2, 2026
f3213d6
h264parse: Add HDR SEI expiry regression test
Apr 28, 2026
3c39ca9
glupload: Add support for importing AHardwareBuffer on Android
sdroege Jun 18, 2026
719fefe
docs: Update for new gst_egl_image_create() helper function
sdroege Jul 6, 2026
26bb3f0
ci: don't run Windows/macOS jobs or the cerbero subpipeline for the s…
tp-m Jul 5, 2026
9e36587
flvdemux: Use DTS for the video segment position
heftig Nov 20, 2019
90e74ea
flvdemux: Fix copy paste mistake in video_first_ts
vivia Jun 11, 2026
8ae4dd8
validate: Add buffer::is-out-of-segment-encoded
vivia Jun 29, 2026
32f067a
validate/flvdemux: Add reordered_buffers_inside_segment.validatetest
vivia Jun 29, 2026
2f157d5
androidmedia: Try harder to generate video codec constraints
sdroege Jun 23, 2026
f4c415f
androidmedia: Clear GErrors on errors before retrying
sdroege Jun 26, 2026
7055a3b
androidmedia: Don't try getting values from NULL ranges
sdroege Jun 26, 2026
bfaa6f6
androidmedia: Don't clamp width/height/framerate ranges against the d…
sdroege Jun 28, 2026
165ff26
androidmedia: Refactor profile/level/tier and video format handling f…
sdroege Jul 1, 2026
2404b3d
androidmedia: Only probe very few resolutions
sdroege Jul 1, 2026
3806cad
androidmedia: De-duplicate I420/NV12 raw video formats in pad templat…
sdroege Jul 6, 2026
300e780
tests: typefindfunctions: Add test for type finding with caps
SanchayanMaity Jul 2, 2026
067c3c9
typefindhelper: Drop unnecessary check for factories without a function
SanchayanMaity Jul 2, 2026
2a8e25b
tutorials: Fix documentation on how to adjust feature ranks
thaytan Jul 5, 2026
1e292c4
qtmux: Allow connection to ac3parse
pgsancho Jul 3, 2026
461a24a
wayland: window: Uses a recursive mutex for the wl_buffer cache
ndufresne Jul 2, 2026
9ffe7dd
wayland: buffer: Only pick from cache if unused
ndufresne Jul 2, 2026
a5a188d
wayland: window: Also remove pending frame callback on flush
ndufresne May 20, 2026
49b1cf5
x265enc: Don't prepend headers when repeat-headers is enabled
Jul 3, 2026
5bd7078
ges: video: add a framepositioner to the gap filler
thiblahute Jul 1, 2026
da2728f
mxfdemux: expose streams in declaration order
thiblahute Jul 6, 2026
2b878cc
rtcpbuffer: Fix parsing of SR+SDES compound packet
LWCoder Jul 4, 2026
f69b720
rtcpbuffer: Make sure to check for enough available space when adding…
sdroege Jul 6, 2026
ef46043
waylandsink: Omit reporting drop frame on preroll
ndufresne Jul 6, 2026
f1f3a25
rtpceltdepay: error out if anyone tries to use this element
tp-m Jun 14, 2026
5523536
rtp: remove RTP CELT depayloader/payloader
tp-m Jun 14, 2026
dd2b47c
mpeg4videoparse: Ensure enough config data is available before extrac…
sdroege Jun 17, 2026
93fa4cd
qtmoovrecover: Validate box sizes
sdroege Jun 17, 2026
abd0d9d
rtpsbcdepay: Check for available data in the adapter before getting data
sdroege Jun 19, 2026
3aaa02c
rtpsbcdepay: Check that enough data is available for the payload header
sdroege Jun 19, 2026
bc471af
rtpsbcdepay: Remove wrong variable shadowing
sdroege Jun 19, 2026
726fa5d
gdkpixbufdec: Drop rank to NONE
sdroege Jun 19, 2026
cf4f7cb
gdkpixbufdec: Handle format and resolution changes correctly
sdroege Jun 19, 2026
178ae5a
opusdec: Don't use any channel positions for >64 channels
sdroege Jun 19, 2026
342055d
encoding-target: Validate that encoding profile name is UTF-8 before …
arthurscchan Jun 22, 2026
544fd78
h266parser: Fix typos in warning messages
sdroege Jun 22, 2026
5a7bf7f
h266parser: Avoid out-of-bounds read if too many exp slices are signa…
sdroege Jun 22, 2026
042d386
h266parser: Check bounds before writing to CTU entrypoint array
sdroege Jun 22, 2026
dd4b11b
rtpjpegdepay: Ensure that quantization table is big enough
sdroege Jun 23, 2026
15185ff
asfdemux: Ensure that enough data is available for reading all replic…
sdroege Jun 23, 2026
df04669
vp9parser: Check that enough data is available for parsing superframe…
sdroege Jun 24, 2026
8d11a2a
ccconverter: Use truncated length when converting CEA608 raw to CEA70…
sdroege Jun 24, 2026
d267103
webrtcsdp: Fix inverted fingerprint existence logic
sdroege Jun 25, 2026
945e139
dtlsconnection: Allocate large enough buffer for the peer certificate…
sdroege Jun 25, 2026
85cdda9
rfbsrc: Use correct bpp for copying hextile data
sdroege Jun 26, 2026
340428b
rfbsrc: Read the correct number of bytes for color values
sdroege Jun 26, 2026
010db8a
wavparse: Avoid NULL pointer dereference when parsing adtl in push mode
sdroege Jun 26, 2026
90334d7
matroska: Update lzo decompression implementation from latest ffmpeg
sdroege Jul 2, 2026
900df44
flvdemux: Consistently use DTS for the video segment position
vivia Jul 8, 2026
a3b3b85
valve: Don't send a reconfigure even when setting the `drop` property…
sdroege Jul 8, 2026
0947ea6
doc: add type annotation for AHardwareBuffer
tkanakamalla Jul 8, 2026
4bf9e3a
webrtcbin: fix possible floating leak for post-aux
AlbertAxis Jul 8, 2026
5f80c62
video: include videodscmeta.h in gst/video/video.h
tkanakamalla Jul 9, 2026
26b3b64
matroskademux: don't assert when a block predates the first seek range
MAlba124 Jul 9, 2026
8004d60
validate: flow: Make ValidateFlowOverride public
carlosfg-flu Jul 14, 2025
12bb99f
validate: flow: Pass ValidateFlowOverride to formmatting.h functions
carlosfg-flu Jul 14, 2025
e20f209
validate: flow: Make some functions of formatting.h static
carlosfg-flu Jul 14, 2025
9b7c21c
validate: Add Base64 serialized meta if possible
carlosfg-flu Jul 1, 2025
4d87673
video-anc: Serialize iface for GstVideoCaptionMeta
carlosfg-flu Jul 1, 2025
7b05d4c
integration test suite media: Pull in commit with fixes LFS
ocrete Jul 9, 2026
7f69f70
security-advisories: add new advisories released with 1.28.5
tp-m Jul 9, 2026
c2e9cf2
vkimagememory: fix imageview dispose race-condition
ahem Jul 8, 2026
932e41f
audio-resampler: Add RISC-V Vector (RVV) optimization
Felix-Gong Jun 9, 2026
be81caf
h263parse: diracparse: Sync baseparse configuration with other compre…
sdroege Jul 7, 2026
f47963a
qtdemux: Support per-stream/srcpad position/duration queries
SanchayanMaity Jun 9, 2026
f628faa
typefind: Actually register various forgotten typefinders
sdroege Jul 9, 2026
ceb503e
typefind: Fix C nonsense in ipmovie typefinder
sdroege Jul 10, 2026
8ec9836
OSS-Fuzz: Add new fuzzer targeting video processing
arthurscchan May 8, 2026
f9914f2
OSS-Fuzz: Add new fuzzer targeting audio process
arthurscchan May 8, 2026
8e9eab8
avdemux: Close demuxer on pad deactivation instead of state change
sdroege Jul 9, 2026
1fb0526
avcodecmap: Initialize audio channel positions in all code branches
sdroege Jul 9, 2026
5ab4f7c
svtjpegxsenc: add coding-raw and cap-compat properties
Grzegorz-Rys Jul 10, 2026
d64676e
OSS-Fuzz: Add fuzzer for audio converter
arthurscchan May 26, 2026
b3ccf2e
baseparse: Don't reset infer_ts/pts_interpolate subclass configuratio…
sdroege Jul 7, 2026
c767052
irtspparse: Set min frame size in start()
sdroege Jul 8, 2026
123034e
vc1parse: Set has_timing_info() / syncable() in start()
sdroege Jul 8, 2026
16bdbd5
baseparse: Document for all setters if their values are reset or not
sdroege Jul 8, 2026
ebcdef2
applemedia: monitor AVF device provider changes
DominiqueLrx Apr 16, 2026
0758f84
avfdeviceprovider: tests: cover monitoring basics
DominiqueLrx Apr 16, 2026
cbab56c
baseparse: Add API to opt-in to allowing the base class to output dup…
sdroege Jul 7, 2026
4fecfe9
docs: contribute: Document that large contributions from new contribu…
sdroege Jul 7, 2026
3bb557f
onnx: add support for AMDMIGraphX execution provider
dmorin1 Mar 30, 2026
4525172
pbutils: discoverer: number elementary streams from 0, one per real s…
thiblahute Jul 4, 2026
feeddc2
discoverer: Don't print the stream number for containers
thiblahute Jul 9, 2026
d276ea6
Revert "h264parse: Detect and set the interlace mode"
vivia Jul 7, 2026
c82daea
media_info, validate: Revert changes caused by 77c9a789
vivia Jul 13, 2026
a31e39c
codecseiinserter: Do not chain up from property getter/setter
seungha-yang Jun 22, 2026
f3c9a1f
codecseiinserter: Remove some boilerplate
seungha-yang Jun 22, 2026
f6a5f61
codecseiinserter: Add intermediate baseclass
seungha-yang Jun 24, 2026
b2d20c0
gst-plugins-bad: Remove codectimestamper plugin
seungha-yang Jun 22, 2026
612e710
closedcaption: Reintroduce h264/h265 timestamper elements
seungha-yang Jun 22, 2026
b9bbed6
validate: Update expected result of codectimestamper
seungha-yang Jun 22, 2026
216d548
docs: Update plugin cache
seungha-yang Jun 29, 2026
c3635eb
cuda: Simplify header inclusion
seungha-yang Jun 22, 2026
ece6d9e
cuda: Expose GstCudaConverter as public API
seungha-yang Jun 22, 2026
cd6ba24
cuda: Add GstCudaAggregator baseclass
seungha-yang Jun 22, 2026
9e6dfc5
cudacompositor: Port to GstCudaAggregator
seungha-yang Jun 23, 2026
8f85c5d
cuda: Add gst_cuda_fill_video_frame() method
seungha-yang Jun 23, 2026
a37638f
cudaaggregator: Add support for pre-conversion
seungha-yang Jun 23, 2026
649bfda
cuda: Update gir
seungha-yang Jul 7, 2026
59cb5dc
vkvideoencodeh264: use MAIN profile to support a wider range of drivers
dabrain34 Jun 18, 2026
1949e75
docs: Fix build when mse library is disabled
nirbheek Jul 14, 2026
5835751
d3d11winrtcapture: Fix incorrect capture height
thaytan Jul 15, 2026
3787b97
gl: glmixer: fix malformed get_framebuffer return annotation
thiblahute Jul 15, 2026
016409a
vulkan/format: add 3-plane i420 format
ystreet Jul 13, 2026
12a536e
vulkantrash: avoid reinitializing trash objects multiple times
ystreet Jul 13, 2026
22a8dbd
gl/eagl: Fix GstGLUIView leak from duplicate __bridge_retained
nirbheek Feb 12, 2026
353a7c9
y4mdec: Don't assert on too small header buffers
sdroege Jul 16, 2026
3481980
y4mdec: Don't read more data than available when skipping over frame …
sdroege Jul 16, 2026
5a1471c
va: size the coded buffer for the CBR bitrate budget
Maksim-Nikolaev Jul 8, 2026
bc453dc
va: recover from corrupt or overflowing coded buffers
Maksim-Nikolaev Jul 8, 2026
bbb433e
va: av1enc: Mark TU as corrupt when any frame is corrupt
HeJunyan Jul 8, 2026
a131589
va: vp9enc: Mark super frame as corrupt when any frame is corrupt
HeJunyan Jul 8, 2026
97c1e0c
pnmdec: Don't assert if creating the output state fails
sdroege Jul 16, 2026
d4ad7a5
pnmdec: Don't flush more data from the adapter than is available
sdroege Jul 16, 2026
c453fc4
pnmdec: Use correct return value for negotiation failure
sdroege Jul 16, 2026
17ad744
pnmdec: Fix out-of-bounds write with bitmap PNM files and non-multipl…
sdroege Jul 16, 2026
4b08826
dvdspu: Fix too strict off-by-one bounds check in a couple of places
sdroege Jul 13, 2026
d77569e
oss-fuzz: Fix gst-value fuzzer
arthurscchan Jul 16, 2026
db802b4
v4l2allocator: include the memory offset in bytesused when queueing
stylesuxx Jul 16, 2026
ae148b9
h266parser: fix SEI parsing error handler
diegonieto Jul 16, 2026
f48e989
OSS-Fuzz: Add fuzzer for video converter
arthurscchan May 26, 2026
2373d5b
amcviddec: Choose memory:SystemMemory output when pad peer query fails
DominiqueLrx Jul 14, 2026
66dbb36
pad: fix livelock relinking pad while pushing changed sticky events
MAlba124 Jul 17, 2026
3d74b04
aacparse: Don't assert on parsing errors or insufficient data
sdroege Jul 16, 2026
bd23f98
vtdec: Don't register the hw-only variant on simulators
nirbheek Jul 13, 2026
36c4354
Merge remote-tracking branch 'refs/remotes/upstream/main' into automa…
github-actions[bot] Jul 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,11 @@ windows amd64 docker:
"--build-arg", "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" `
)
- ci/docker/windows/container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE $DOCKERFILE
rules:
- if: '$CI_PROJECT_NAME != "gstreamer-security"'
# Never run for gstreamer-security repo
- if: '$CI_PROJECT_NAME == "gstreamer-security"'
when: never

.macos image:
image: "registry.freedesktop.org/gstreamer/gstreamer/macos-arm64/26-tahoe:2025-09-30.0"
Expand Down Expand Up @@ -522,6 +527,9 @@ build debian x86_64 debug:
-Dvpx:tools=disabled

rules:
# Don't run Windows jobs for gstreamer-security repo
- if: '$CI_PROJECT_NAME == "gstreamer-security"'
when: never
- !reference [.upstream-branch-rules, rules]
- changes:
paths:
Expand Down Expand Up @@ -620,6 +628,9 @@ build vs2022 x86:
build vs2022 arm64:
extends: '.build windows cross'
rules:
# Don't run Windows jobs for gstreamer-security repo
- if: '$CI_PROJECT_NAME == "gstreamer-security"'
when: never
- when: 'manual'
allow_failure: true
variables:
Expand Down Expand Up @@ -662,6 +673,9 @@ build macos:
MESON_TEST_ARGS: "gst-plugins-bad:*avf* gst-plugins-bad:*vtdec* gst-plugins-bad:*_vk*"
SUBPROJECTS_CACHE_DIR: "/Users/gst-ci/subprojects"
rules:
# Don't run macOS jobs for gstreamer-security repo
- if: '$CI_PROJECT_NAME == "gstreamer-security"'
when: never
- !reference [.upstream-branch-rules, rules]
- changes:
paths:
Expand Down Expand Up @@ -1196,6 +1210,9 @@ cerbero trigger:
# Never run post merge
- if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
when: never
# Never run for gstreamer-security repo
- if: '$CI_PROJECT_NAME == "gstreamer-security"'
when: never

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cerbero security skip rule order

Medium Severity

The new gstreamer-security when: never rule on cerbero trigger sits after - if: '$MESON_COMMIT'. GitLab applies the first matching rule, so a non-empty MESON_COMMIT still starts Cerbero on gstreamer-security, unlike Windows/macOS jobs that check the project name first.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a53b91e. Configure here.

- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
# For merge reqest, we want to test user branch
<<: *cerbero_trigger_changes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@
"source_checksum": "fbda521fadb7f70692941f833b434c4d",
"input_file": "MVHEVCS_C/MVHEVCS_C.bit",
"output_format": "yuv420p",
"result": "cd15c307c65bb0c9e4e4b43dde54aaec"
"result": "51c963c21045fca966ccea54511b4b9e"
},
{
"name": "MVHEVCS_D_NTT_3",
"source": "https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/MV-HEVC/MVHEVCS_D_NTT_3.zip",
"source_checksum": "f81f4594b769395f0ad99e98b31467db",
"input_file": "MVHEVCS_D_NTT_3/MVHEVCS_D.bit",
"output_format": "yuv420p",
"result": "46ac559b66419104d23767d8b59b78a7"
"result": "c60e3c4c6aa09dc26f926834d9060c93"
},
{
"name": "MVHEVCS_E_Qualcomm_3",
Expand Down Expand Up @@ -73,7 +73,7 @@
"source_checksum": "bbe731cbbccced6ea25cb1850c91eacc",
"input_file": "MVHEVCS_I.bit",
"output_format": "yuv420p",
"result": "c858895b3e5f6292095451b9b3d5fec7"
"result": "476a0cbd0147f475526da444918dc5ed"
}
]
}
18 changes: 15 additions & 3 deletions ci/fuzzing/build-oss-fuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,22 @@ meson \
-Ddoc=disabled \
-Dexamples=disabled \
-Dintrospection=disabled \
-Dgood=disabled \
-Dgood=enabled \
-Dgst-plugins-good:auto_features=disabled \
-Dgst-plugins-good:isomp4=enabled \
-Dgst-plugins-good:matroska=enabled \
-Dgst-plugins-good:flv=enabled \
-Dgst-plugins-good:avi=enabled \
-Dgst-plugins-good:audioparsers=enabled \
-Dgst-plugins-good:wavparse=enabled \
-Dgst-plugins-good:id3demux=enabled \
-Dgst-plugins-good:flac=disabled \
-Dbad=enabled \
-Dgst-plugins-bad:auto_features=disabled \
-Dgst-plugins-bad:mpegtsdemux=enabled \
-Dgst-plugins-bad:videoparsers=enabled \
-Dgst-plugins-bad:jpegformat=enabled \
-Dugly=disabled \
-Dbad=disabled \
-Dlibav=disabled \
-Dges=disabled \
-Dsharp=disabled \
Expand All @@ -67,7 +80,6 @@ meson \
-Dqt5=disabled \
-Dorc=disabled \
-Dgstreamer:tracer_hooks=false \
-Dgst-plugins-base:opus=disabled \
-Dgst-plugins-base:pango=disabled \
_builddir \
$SRC/gstreamer
Expand Down
187 changes: 187 additions & 0 deletions ci/fuzzing/gst-audio-converter.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
/*
* Copyright 2026 Google Inc.
* author: Arthur SC Chan <arthur.chan@adalogics.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/* Audio converter/resampler/quantize fuzzing target
*
* Exercises:
* gst-libs/gst/audio/audio-converter.c
* gst-libs/gst/audio/audio-resampler.c
* gst-libs/gst/audio/audio-quantize.c
*/

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gst/gst.h>
#include <gst/audio/audio.h>

#define HEADER_SIZE 8
#define MAX_FRAMES 4096
#define MAX_RESAMPLE_BYTES (16 * 1024 * 1024)

/* All formats exercised by the converter path */
static const GstAudioFormat all_formats[] = {
GST_AUDIO_FORMAT_S8, GST_AUDIO_FORMAT_U8,
GST_AUDIO_FORMAT_S16LE, GST_AUDIO_FORMAT_U16LE,
GST_AUDIO_FORMAT_S24LE, GST_AUDIO_FORMAT_S32LE,
GST_AUDIO_FORMAT_U32LE, GST_AUDIO_FORMAT_F32LE,
GST_AUDIO_FORMAT_F64LE,
};

#define N_ALL_FORMATS G_N_ELEMENTS(all_formats)

/* Resampler only accepts these four formats */
static const GstAudioFormat resamp_formats[] = {
GST_AUDIO_FORMAT_S16, GST_AUDIO_FORMAT_S32,
GST_AUDIO_FORMAT_F32, GST_AUDIO_FORMAT_F64,
};

#define N_RESAMP_FORMATS G_N_ELEMENTS(resamp_formats)

static const gint rates[] = {
100, 997, 7919,
8000, 11025, 16000, 22050,
32000, 44100, 48000, 96000,
8009, 22051, 44101
};

#define N_RATES G_N_ELEMENTS(rates)

/* Channel counts the audio converter's mix matrix supports out of the box. */
static const gint mixable_channels[] = { 1, 2, 3, 4, 5, 6, 7, 8 };

#define N_MIXABLE_CHANNELS G_N_ELEMENTS(mixable_channels)

static void
custom_logger (const gchar * log_domain,
GLogLevelFlags log_level, const gchar * message, gpointer unused_data)
{
if (log_level & G_LOG_LEVEL_CRITICAL) {
g_printerr ("CRITICAL ERROR : %s\n", message);
abort ();
} else if (log_level & G_LOG_LEVEL_WARNING) {
g_printerr ("WARNING : %s\n", message);
}
}

int
LLVMFuzzerTestOneInput (const guint8 * data, size_t size)
{
static gboolean initialized = FALSE;

if (!initialized) {
g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
g_log_set_default_handler (custom_logger, NULL);
gst_init (NULL, NULL);
initialized = TRUE;
}

if (size < HEADER_SIZE)
return 0;

GstAudioFormat in_fmt = all_formats[data[0] % N_ALL_FORMATS];
GstAudioFormat out_fmt = all_formats[data[1] % N_ALL_FORMATS];

/* Picked from the supported mix-matrix set so the converter actually runs. */
gint in_ch = mixable_channels[data[2] % N_MIXABLE_CHANNELS];
gint in_rate = rates[data[3] % N_RATES];
gint out_rate = rates[data[4] % N_RATES];
GstAudioResamplerMethod rm = (GstAudioResamplerMethod) ((data[5] >> 4) % 5);
GstAudioFormat resamp_fmt = resamp_formats[data[5] % N_RESAMP_FORMATS];
GstAudioDitherMethod dither = (GstAudioDitherMethod) ((data[6] >> 4) % 4);
GstAudioNoiseShapingMethod ns =
(GstAudioNoiseShapingMethod) ((data[6] & 0x0f) % 5);
guint quantizer = (guint) data[6] + 1;

const guint8 *audio_data = data + HEADER_SIZE;
gsize audio_size = size - HEADER_SIZE;

/* audio converter */
{
gint out_ch = mixable_channels[data[7] % N_MIXABLE_CHANNELS];
GstAudioInfo in_info, out_info;
GstAudioConverter *conv;

gst_audio_info_set_format (&in_info, in_fmt, in_rate, in_ch, NULL);
gst_audio_info_set_format (&out_info, out_fmt, out_rate, out_ch, NULL);
conv = gst_audio_converter_new (0, &in_info, &out_info, NULL);
if (conv) {
if (audio_size > 0) {
gpointer out = NULL;
gsize out_size = 0;
gst_audio_converter_convert (conv, 0, (gpointer) audio_data,
audio_size, &out, &out_size);
g_free (out);
}
gst_audio_converter_free (conv);
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Converter fuzzer can exhaust memory

Medium Severity

The audio converter path calls gst_audio_converter_convert on the full fuzz payload with no frame or output-size cap. With large inputs and extreme rate ratios, that API allocates out_frames * bpf unbounded, so the fuzzer can OOM. The resampler path in the same file already guards with MAX_FRAMES and MAX_RESAMPLE_BYTES.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 36c4354. Configure here.


/* audio resampler */
{
GstAudioResampler *resampler;

resampler = gst_audio_resampler_new (rm, 0, resamp_fmt, in_ch,
in_rate, out_rate, NULL);
if (resampler) {
const GstAudioFormatInfo *finfo = gst_audio_format_get_info (resamp_fmt);
gsize frame_size = (finfo->width / 8) * in_ch;
if (frame_size > 0 && audio_size >= frame_size) {
gsize in_frames = MIN (audio_size / frame_size, MAX_FRAMES);
gsize out_frames =
gst_audio_resampler_get_out_frames (resampler, in_frames);
if (out_frames > 0) {
gsize out_buf_size = out_frames * (finfo->width / 8) * in_ch;
/* Cap allocation to keep the fuzzer alive on extreme rate ratios. */
if (out_buf_size > 0 && out_buf_size <= MAX_RESAMPLE_BYTES) {
gpointer out_buf = g_malloc0 (out_buf_size);
gpointer in_ptrs[1] = { (gpointer) audio_data };
gpointer out_ptrs[1] = { out_buf };
gst_audio_resampler_resample (resampler, in_ptrs, in_frames,
out_ptrs, out_frames);
g_free (out_buf);
}
}
}
gst_audio_resampler_free (resampler);
}
}

/* audio quantize */
{
GstAudioQuantize *quant = gst_audio_quantize_new (dither, ns, 0,
GST_AUDIO_FORMAT_S32, 1, quantizer);
if (quant) {
const gsize frame_size = sizeof (gint32);
if (audio_size >= frame_size) {
guint frames = (guint) MIN (audio_size / frame_size, MAX_FRAMES);
gpointer out_buf = g_malloc0 (frames * frame_size);
gpointer in_ptrs[1] = { (gpointer) audio_data };
gpointer out_ptrs[1] = { out_buf };
gst_audio_quantize_samples (quant, in_ptrs, out_ptrs, frames);
g_free (out_buf);
}
gst_audio_quantize_free (quant);
}
}

return 0;
}
Loading