Skip to content

add missing output formats to GStreamer mapping - #282

Merged
mdimopoulos merged 1 commit into
masterfrom
COM-13465
Aug 26, 2025
Merged

mdimopoulos merged 1 commit into
masterfrom
COM-13465

Conversation

@mdimopoulos

Copy link
Copy Markdown
Contributor
  • missing formats are GRAY12LE, YUV444P14LE, YUV444P16LE, GBRP, GBRP10LE, GBRP12LE, GBRP14LE

@mdimopoulos mdimopoulos changed the title fix: add missing output formats to GStreamer mapping add missing output formats to GStreamer mapping Aug 20, 2025
@mdimopoulos

Copy link
Copy Markdown
Contributor Author

@ndufresne here i have added the missing output formats so that GStreamer decoders can map them correctly.

I encountered 2 issues though where i could use your help.

I did not find matches for GRAY12LE, YUV444P14LE and GBRP14LE (i searched in https://gstreamer.freedesktop.org/documentation/video/video-format.html?gi-language=c). The last 2 are not important for AV1 (i think they are related to H.265 or H.266), however GRAY12LE does affect quite a lot of test vectors in AV1 argon test suites. Do you happen to know which is the equivalent format in GStreamer (if there is one)?

Related to the above there is 1 example where it's seen that 2 elements do not know how to handle this format, which is expected since it does not exist i guess (at least not as GRAY12_LE)
gst-launch-1.0 --no-fault filesrc location=/home/mdimo/test/fluster/../resources/AV1-ARGON-PROFILE2-NON-ANNEX-B/argon_coveragetool_av1_base_and_extended_profiles_v2.1/profile2_not_annexb_special/streams/test22.obu ! av1parse ! av1dec ! video/x-raw ! videoconvert dither=none ! video/x-raw,format=GRAY12_LE ! videocodectestsink -m WARNING: erroneous pipeline: could not link videoconvert0 to videocodectestsink0, neither element can handle caps video/x-raw, format=(string)GRAY12_LE

videocodectestsink cannot handle formats GBR_12LE and GBR (confirmed by the docs https://gstreamer.freedesktop.org/documentation/debugutilsbad/videocodectestsink.html?gi-language=c). Which is the best way to request this as a feature in GStreamer project? Due to this we currently have quite a lot of errors with AV1 argon test suites.

@mdimopoulos

Copy link
Copy Markdown
Contributor Author

By the way, when running ./fluster.py r -d GStreamer-AV1-libaom-Gst1.0 -ts AV1-ARGON-PROFILE2-NON-ANNEX-B -s with GStreamer 1.26.5 i get 15/150 passes (they should be 42).
After including unhandled output formats to videocodectestsink and fixing md5 checksums (without all layers), i expect the number to be close to the expected one.

@mdimopoulos
mdimopoulos marked this pull request as draft August 20, 2025 12:40
@ndufresne

Copy link
Copy Markdown
Contributor

Some formats are missing in the 12bit space, but shouldn't prevent mapping the others for now, we should fail elegantly though.

@mdimopoulos

Copy link
Copy Markdown
Contributor Author

Actually none of the formats i am adding in this PR are supported by videocodetestsink, so i will have to park it for now. I will create a new PR that will contain only the exception handling.

@mdimopoulos
mdimopoulos changed the base branch from master to COM-13465-II August 21, 2025 09:16

@ndufresne ndufresne left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Even if missing in gst, the mapping/naming all looks right, so it could be added, I'll take care of adding the missing bits afterward.

mapping = {
OutputFormat.GRAY: "GRAY8",
OutputFormat.GRAY10LE: "GRAY10_LE16",
OutputFormat.GRAY12LE: "GRAY12_LE",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Does not exist, yet.

OutputFormat.YUV444P: "Y444",
OutputFormat.YUV444P10LE: "Y444_10LE",
OutputFormat.YUV444P12LE: "Y444_12LE",
OutputFormat.YUV444P14LE: "Y444_14LE",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Does not exist, yet.

OutputFormat.YUV444P10LE: "Y444_10LE",
OutputFormat.YUV444P12LE: "Y444_12LE",
OutputFormat.YUV444P14LE: "Y444_14LE",
OutputFormat.YUV444P16LE: "Y444_16LE",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This one exists, but not in videocodectestsink yet.

OutputFormat.GBRP: "GBR",
OutputFormat.GBRP10LE: "GBR_10LE",
OutputFormat.GBRP12LE: "GBR_12LE",
OutputFormat.GBRP14LE: "GBR_14LE",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

14bit is missing, others missing videocodectestssink.

@mdimopoulos

Copy link
Copy Markdown
Contributor Author

Even if missing in gst, the mapping/naming all looks right, so it could be added, I'll take care of adding the missing bits afterward.

Ok.
Feature requests submitted
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4614
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4615
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4616

@mdimopoulos
mdimopoulos marked this pull request as ready for review August 25, 2025 16:05
@rsanchez87
rsanchez87 self-requested a review August 26, 2025 07:33
Base automatically changed from COM-13465-II to master August 26, 2025 09:10
- GRAY12LE, YUV444P14LE, YUV444P16LE, GBRP, GBRP10LE,
GBRP12LE, GBRP14LE
@mdimopoulos
mdimopoulos merged commit 36814f3 into master Aug 26, 2025
4 checks passed
@mdimopoulos
mdimopoulos deleted the COM-13465 branch August 26, 2025 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants