Jan Alexander Steffens (heftig)
5ca52ea026
h264parse, h265parse: Fix time code calculation
...
We need to multiply for the nuit_field_based_flag before scaling, or
we'll lose precision and end up only adding even timecodes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7241 >
2024-08-26 14:04:13 +00:00
Jordan Yelloz
317c70651f
h265parse: Reject FD received before SPS
...
A previous fix, a275e1e029
, is correct but was too
permissive since it treats all un-matched NAL units the same as AU delimiters
even though some other NAL unit types can be encountered in the processing loop.
The problem this can cause is that some hardware decoders experience bad
performance when handling FD units that precede the SPS.
This change restores the original behavior for FDs so that they're ignored until
the SPS is received and it preserves the codec conformance test gains that the
fix has achieved.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7166 >
2024-08-02 13:51:43 +00:00
Nicolas Dufresne
79312357a6
av1parse: Properly transfer TU timestamp
...
When transforming from unknown alignment to frame or obu, the TU timestamp
was not properly transferred. Fix this by saving the TU DTS as the first
DTS seen within the the TU data, and the PTS as the last PTS seen in that
TU data. Finally, reset the TU timestamp after each TU have completed.
Fixes #1496
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6895 >
2024-05-28 23:59:36 +00:00
Nicolas Dufresne
5b1bc0f19f
av1parse: Only place a marker on the last frame of a TU
...
Markers are meant to indicate the buffer that ends a frame, which imply
something can be displayed. The dependent decode only frames should not
have markers. This should also fix last subframe detection.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6895 >
2024-05-28 23:59:36 +00:00
Rafael Caricio
2bcbbe0d0a
av1parse: No default will trigger warning at compile time
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778 >
2024-05-02 16:31:53 +00:00
Rafael Caricio
27041bf9e9
av1parse: Add max-level and max-tier to caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778 >
2024-05-02 16:31:53 +00:00
Rafael Caricio
c9a79b7387
av1parse: Add level and tier to caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778 >
2024-05-02 16:31:53 +00:00
Daniel Morin
e57f561a8e
Revert "h264parse: Improved AU boundary detection"
...
This reverts commit 49f200cb54
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:23 +00:00
Daniel Morin
694c6e77b1
Revert "h264parse: Remove dead code"
...
This reverts commit 141cd38715
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:22 +00:00
Daniel Morin
ac3272db40
Revert "h264parse: Fix AU collection"
...
This reverts commit 495390f63a
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:22 +00:00
Daniel Morin
64c2c8d542
Revert "h264parse: Remove un-needed check on SPS state"
...
This reverts commit 73dedf9a51
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:22 +00:00
Daniel Morin
6ff1973b5b
Revert "h264parse: use AUD to detect first VCL NAL"
...
This reverts commit 90a3b63eed
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:22 +00:00
Daniel Morin
0bc5d97321
Revert "h264parse: correct NAL mode backlog processing"
...
This reverts commit b2098849dc
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540 >
2024-04-07 15:25:22 +00:00
Edward Hervey
eedfb5e6d7
videoparsers: Demote CC warning message
...
Another warning message which isn't fatal and therefore should just be a DEBUG
line.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6550 >
2024-04-06 06:11:03 +02:00
Sebastian Dröge
121e52886b
videoparsers: Don't verbosely warn about CEA_708_PROCESS_EM_DATA_FLAG not being set
...
And the same for CEA_708_PROCESS_CC_DATA_FLAG. This is not really a
problem and was polluting logs with warnings for every single frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6336 >
2024-03-12 21:26:18 +00:00
Jan Alexander Steffens (heftig)
9426eaae6a
videoparseutils: Don't double-attach AFD, Bar or unregistered data
...
We already did this for captions. We also need to do it for the other
meta types to ensure our parsers are idempotent and don't attach
duplicates.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Jan Alexander Steffens (heftig)
92017b983e
videoparseutils: Store multiple user data unregistered messages
...
A frame can have multiple unregistered messages attached. We need to
store them all.
For: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3008
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Jan Alexander Steffens (heftig)
75f61cba80
videoparsers: Clear user_data_unregistered explicitly in _reset_frame
...
This fits better with the model used by the parser elements. It also
properly resets the data when the parser is reset.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Jan Alexander Steffens (heftig)
3577fdec51
videoparsers: Clear user data explicitly in _reset_frame
...
This fits better with the model used by the parser elements. It also
properly resets the data when the parser is reset.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Jan Alexander Steffens (heftig)
b3c03cec8d
videoparseutils: Minor improvements to _parse_afd
...
- Add the missing field parameter and put the output parameter at the
end.
- Use a switch to verify valid values instead of hard-to-follow range
checks.
- Don't consider bad values a programming error, just a regular failure.
- Set all data fields at the end so we can pass a pointer to an
uninitialized structure without GCC complaining.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Jan Alexander Steffens (heftig)
5c0cad5f02
videoparseutils: Minor improvements to _parse_bar
...
Use the enum type for the argument and loudly complain when not passing
a place to output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5450 >
2024-02-15 13:32:30 +00:00
Daniel Morin
b2098849dc
h264parse: correct NAL mode backlog processing
...
- Only process what is left in backlog when AU was completed, draining or next
nal is AUD.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6093 >
2024-02-13 13:58:13 +00:00
Daniel Morin
73dedf9a51
h264parse: Remove un-needed check on SPS state
...
Fixes #3254
- Having SEI before SPS is not an issue anymore with AU boundary detection
based on backlog.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6004 >
2024-01-30 01:22:32 +00:00
Philippe Normand
9a5ca61f87
vp9parse: Fix critical warning during caps negotiation
...
`gst_pad_get_allowed_caps()` returns a non-writable caps, so we need to make it
writable, otherwise the `gst_caps_remove_structure()` call below might trigger a
critical warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5975 >
2024-01-25 00:01:14 +00:00
Seungha Yang
495390f63a
h264parse: Fix AU collection
...
If remaining NALUs are expected to be drained in the current
process_frame() loop, do not adjust offsets. Otherwise NALU data
will point to random byte position and it would be broken data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5911 >
2024-01-15 21:53:11 +00:00
Daniel Morin
90a3b63eed
h264parse: use AUD to detect first VCL NAL
...
- Fix skipsize on _update_backlog failure.
- Add robustness to AU completion detection by using AUD when present. If we've
received a AUD we overwrite the first VCL NAL detection when the result was
negative. VCL following AUD is the first VCL of next AU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5862 >
2024-01-03 20:43:34 +00:00
Mengkejiergeli Ba
141cd38715
h264parse: Remove dead code
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5833 >
2023-12-20 13:03:25 +00:00
Seungha Yang
890d59e97e
av1parser: Fix array sizes in scalability structure
...
Since the AV1 specification is not explicitly mentioning about
the array size bounds, array sizes in scalability structure
should be defined as possible maximum sizes that can have.
Also, this commit removes GST_AV1_MAX_SPATIAL_LAYERS define from
public header which is API break but the define is misleading
and this patch is introducing ABI break already
ZDI-CAN-22300
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5823 >
2023-12-18 10:58:24 +00:00
Daniel Morin
49f200cb54
h264parse: Improved AU boundary detection
...
- AU boundary detection reviewed to follow more closely H.264 spec. and more
specifically clauses 7.4.1.2.3 and 7.4.1.2.4.
- The gist of the changes is a look-a-head in then next AU required identify the
last vcl-nal of current AU and firt vcl-nal of next AU (according to
7.4.1.2.4) followed by the identification of the first nal of next AU
(according to 7.4.1.2.3).
- A backlog of all nals of current AU and next AU up to the point where current
AU can identified completed is kept.
- In NAL alignement mode vcl-nal are sent immediatly but the history is kept to
allow AU boundary detection. Non-vcl-nal can be delayed up to the reception of
the next vcl-nal to allow a correct AUD insertion.
- Based on this improved AU boudary detection we can avoid erronous AUD
insertion, like the one highlighted by test
test_parse_sliced_with_prefix_and_sei_nal_au.
- Add support for MVC AU boundary detection. (H.7.4.1.2.4)
- Explicitly report SVC not supported. We don't have the SVC NAL parsing
required to identify boundary. (missing dependency_id and quality_id fields
from SVC, see G.7.4.1.2.4)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5741 >
2023-12-17 21:42:47 +00:00
Stéphane Cerveau
fdc3db68cd
codecparsers: introduce h265 level enum
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5644 >
2023-11-13 16:37:46 +00:00
Seungha Yang
efe35a3f6c
h264parse, h265parse: Fix potential integer overflow
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2961
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5295 >
2023-09-08 12:45:12 +00:00
Seungha Yang
2c4cb82afc
h264parse, h265parse: Fix timecode parsing
...
The scaling factor for nFrame part should be "(1 + nuit_field_based_flag) / 2"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5254 >
2023-09-01 06:44:52 +00:00
Fabian Orccon
dd47fa53d8
h265parse: Parse SEI unregistered user data
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5070 >
2023-07-25 18:28:26 +00:00
Jakub Adam
f7b719ae91
av1parse: calculate framerate from AV1 timing info
...
When framerate info isn't provided by upstream elements, try to extract
it from AV1 timing info, if present.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5041 >
2023-07-19 20:45:05 +00:00
Stéphane Cerveau
2974c18a5c
codecparsers: keep naming consistency in GST_H264_LEVEL
...
GST_H264_LEVEL_2 should be used instead of GST_H264_LEVEL_2_0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4737 >
2023-06-26 10:47:36 +00:00
Shengqi Yu
b092c3f580
h264parse: adjust some logs printing level in h264parse
...
adjust log level from GST_ERROR to GST_WARNING when h264 caps have
codec_data but no avc format or have no codec data or stream-format.
Because theses are not real errors, it is easy to mislead if print error
logs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4675 >
2023-05-20 02:07:36 +00:00
Seungha Yang
e9d8bf7532
h264parser: Define level enum values
...
... and stop duplicating it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4595 >
2023-05-17 21:29:25 +00:00
Nicolas Dufresne
c883fea19e
h265parse: Don't override upstream framerate
...
The framerate should only be replaced (and corrected for alternating field)
when it is parsed from the bitstream. Otherwise, the upstream framerate
from caps should be trusted and assumed correct.
Related to gst-plugins-bad!2020
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4259 >
2023-04-05 13:33:39 -04:00
Nicolas Dufresne
93904f1921
h265parse: Rename parsed_framerate to framerate_from_caps
...
That meaning of parsed_framerate is ambigious, it is set whenever the
framerate has been parsed from caps, which can be confused with being
parsed from the bitstream. Rename this as framerate_from_caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4259 >
2023-04-05 13:33:39 -04:00
Nicolas Dufresne
9deb3d6aa4
h264parse: Stop considering NO_NAL as an error
...
The NO_NAL return value simply means that the buffer did not contain
enough data to identity a NAL. This should lead to waiting for more data not
considering the stream as invalid.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3234 >
2023-03-17 21:25:49 +00:00
Tim-Philipp Müller
81716a1097
gst-plugins-bad: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:54 +00:00
Seungha Yang
ad30fb87c2
h264parse: Validate VUI framerate
...
A few streams contain invalid/wrong framerate in VUI. Do validate
it based on the spec and ignore invalid VUI framerate values.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1753
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4127 >
2023-03-08 11:59:52 +00:00
Seungha Yang
8c596aeb5b
h265parse: Use gst_h265_parser_parse_decoder_config_record()
...
Stop duplicating code and use newly added parsing method instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2759 >
2023-03-06 12:50:41 +00:00
Mengkejiergeli Ba
eab15c8659
h265parse: Fix to check returned value
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3968 >
2023-03-02 11:00:20 +00:00
Seungha Yang
5b84439711
h265parse: Always set profile on src caps
...
h265parse should provide profile for autoplugging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4026 >
2023-02-23 10:13:54 +00:00
Thibault Saunier
e49e0198f1
h264parse: Avoid setting wrong colorimetry info if the stream doesn't contain it
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3543 >
2022-12-07 17:30:51 +00:00
He Junyan
e7d584a816
h265parse: Add the missing timestamp when splitting a frame.
...
When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448 >
2022-11-22 21:47:49 +00:00
He Junyan
dae73d6686
h264parse: Add the missing timestamp when splitting a frame.
...
When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448 >
2022-11-22 21:47:49 +00:00
Seungha Yang
32b13a883a
vp9parse: Set subsampling to src caps even if GBR stream
...
Some muxer elements will need the subsampling information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3297 >
2022-10-31 11:29:38 +00:00
Seungha Yang
47f1dc837f
vp9parse: Delaying src caps until frame is parsed if profile > 0
...
subsampling and/or bitdepth information will be required for
negotiation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3297 >
2022-10-31 11:29:38 +00:00