Seungha Yang
2b1f567360
vp8decoder: Fix resolution change handling
...
Do not store resolution in set_format() so that resolution change
can be detected on keyframe as intended.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3928
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7787 >
2024-10-30 01:16:58 +00:00
Seungha Yang
bef77722aa
h264decoder: Update output frame duration when second field frame is discarded
...
In case of an interlaced stream, if each field picture belongs to
different GstVideoCodecFrame, updates output frame's duration
based on discarded second field picture's timestamp information.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7175 >
2024-07-15 20:10:41 +02:00
Seungha Yang
d98c922995
h265decoder: Fix DPB size calculation
...
MaxDpbSize specified in A.4.2 tells upper bound of decoded picture
buffer size but does not tell actual required size.
Use max_dec_pic_buffering value as a dpb size. Some backends
such as DXVA and NVDEC might require pre-allocated DPB buffer
and unnecessary large DPB size will result in waste of GPU memory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6101 >
2024-02-14 15:05:59 +00:00
Seungha Yang
e353fe8fcc
h264decoder: Handle malformed avc/avc3 packets
...
Packetized stream format should not contain start-code prefix
in bitstream and each [nal-length-byte, nal-byte] unit should consist of
single nal unit. But there are malformed streams in the world.
Use newly added gst_h264_parser_identify_and_split_nalu_avc()
method to identify each nal unit.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3219
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5772 >
2024-01-17 14:57:57 +00:00
He Junyan
fac9fb2174
codecs: correct the print log for h265 picture getting by poc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5789 >
2023-12-11 10:24:34 +00:00
Seungha Yang
ccf6ac2b4c
h264decoder: Fix GstVideoCodecFrame leak
...
If current buffer has no slice data, frame should be released.
Otherwise frames will stay in decoder baseclass forever.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5693 >
2023-11-29 10:52:58 +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
Detlev Casanova
5f9b24e3ba
codecs: h265: Do not free slice header before using it
...
The v4l2codecs H.265 decoder uses the
GstH265SliceHdr::entry_point_offset_minus1 array so make sure that it is not
freed before decoding the frame.
Before this patch, some H.265 input would segfault in
gst_v4l2_codec_h265_dec_fill_slice_params() when executing the line:
guint32 entry_point_offset = slice_hdr->entry_point_offset_minus1[i] + 1;
Make sure that the array is not freed before using it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5499 >
2023-10-17 15:06:10 -04:00
Seungha Yang
2b7dc0de1b
h265decoder: Set discont state after new_picture()
...
Subclass might negotiate with downstream inside of the new_picture().
Set discont state after the new_picture() call
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5368 >
2023-09-20 18:44:42 +00:00
Seungha Yang
48a0c01570
h264decoder: Update latency dynamically
...
The actual number of reorder frames is unknown
unless frame reordering is disabled
(e.g., POC type 2 or constrained-* profiles).
Also derived maximum DPB size or max_num_reorder_frames in VUI
is not the upper bound of output delay.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2702
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5326 >
2023-09-17 01:43:29 +09:00
Seungha Yang
3ac2690807
h265decoder: Fix DPB overflow
...
If DPB is full already, GstH265Decoder::new_picture() might fail if
subclass uses fixed size picture pool and its size is equal to the DPB
size. Call the new_picture() after DPB is cleared in gst_h265_decoder_dpb_init()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5333 >
2023-09-15 18:26:31 +00:00
Seungha Yang
97fc02cfe3
av1decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a73c6d7fb6
vp9decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
4571fac946
vp8decoder: Port to GstCodecPicture struct
...
... and remove unused "pts" variable from GstVp8Picture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a5ddf7af3b
mpeg2decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
6e7cab43be
h265decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
ea3dfadbed
h264decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
d69bacb954
codecs: Define common codec picture struct
...
Adding parent class of codec picture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
He Junyan
5aa2239c4b
codecs: AV1: Ensure current picture and frame to NULL before return
...
The current code fails to clear the current picture and frame pointer if
some flow error such as EOS happens. This causes the double free issue in
gst_av1_decoder_reset().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5104 >
2023-07-26 16:27:43 +08:00
Seungha Yang
9a902afce4
codecs: Use release_frame() instead of drop_frame()
...
drop_frame() will post QoS message which is not intended here
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5024 >
2023-07-13 13:48:46 +00:00
Seungha Yang
45766f2448
codecs: Propagate downstream flow ERROR
...
Don't translate downstream flow ERROR to OK
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5024 >
2023-07-13 13:48:46 +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
Seungha Yang
842805d7c6
av1decoder: Fix DPB size signalling
...
Take current frame into account for the DPB size signalling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4845 >
2023-06-14 15:16:04 +00:00
Seungha Yang
77b9e1351a
mpeg2decoder: Fix DPB size signalling
...
Take current frame into account for the DPB size signalling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4845 >
2023-06-14 15:16:04 +00:00
Seungha Yang
965e566156
vp9decoder: Fix DPB size signalling
...
Take current frame into account for the DPB size signalling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4845 >
2023-06-14 15:16:04 +00:00
Seungha Yang
7d2beab9b1
vp8decoder: Fix DPB size signalling
...
Take current frame into account for the DPB size signalling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4845 >
2023-06-14 15:16:04 +00:00
Seungha Yang
e422a991f3
h265decoder: Calculate DPB size based on level
...
As specified in "A.4 Tiers and levels", calculate DPB size based
on level in order to avoid over preallocated DPB
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4840 >
2023-06-13 02:57:06 +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
Seungha Yang
74b7493fd3
h264decoder: Drop nonexisting picture silently without error
...
If end_picture() was not successful, we do drop corresponding
GstVideoCodecFrame and therefore gst_video_decoder_get_frame()
will return nullptr which is expected behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4561 >
2023-05-09 17:02:48 +00:00
Thibault Saunier
b14e675a27
gir: Checkout all .gir files and check that they are updated on the CI
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3010 >
2023-04-22 09:32:32 -04:00
Seungha Yang
bb5c151336
h264decoder: Enable low-latency bumping in case of pic_order_cnt_type 2
...
In case of POC type 2, output order is equal to decoding order
(no frame reordering)
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2447
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357 >
2023-04-10 13:42:31 +00:00
Seungha Yang
73daa0e0ad
h264decoder: Fix for latency report
...
The minimum latency answered by an element should be the maximum
latency from the element's perspective. Also consider max_reorder_frames
update as a sequence change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357 >
2023-04-10 13:42:31 +00:00
Seungha Yang
e0c2578f73
h264decoder: Ignore invalid max_num_reorder_frames in VUI
...
It's not fatal and can be ignored
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357 >
2023-04-10 13:42:31 +00:00
Seungha Yang
f439481d8e
h265decoder: Fix for latency report when src caps is not configured
...
Depending on subclass, negotiation might not happen on new_sequence()
Fixing regression introduced by the commit
4a4823b972
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357 >
2023-04-10 13:42:31 +00:00
Seungha Yang
560fd4834c
h264decoder: Fix for latency report when src caps is not configured
...
Depending on subclass, negotiation might not happen on new_sequence()
Fixing regression introduced by the commit
4a4823b972
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357 >
2023-04-10 13:42:31 +00:00
Víctor Manuel Jáquez Leal
e5c38003b8
gsth254picture: move internal API to private header
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4288 >
2023-03-30 11:40:33 +02:00
Víctor Manuel Jáquez Leal
57e0bdb356
h264decoder: use last_output_poc from DPB
...
It seems that `last_output_poc` in `h264decoder` class is a left over of commit
5527cc4a2e
.
This patch removes it but keeps the log message by fetching the `h264picture`'s
`last_output_pic`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4288 >
2023-03-30 09:38:47 +00:00
Seungha Yang
0dc5d5ecb1
h264decoder: Fix DPB bumping process
...
As per spec C.4.5.3 "Bumping", if bumping is needed but DPB holds
no "output needed" picture, then a picture that has the smallest
POC should be considered first for output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4211 >
2023-03-18 08:28:05 +00:00
Seungha Yang
bc8a862e20
h265decoder: 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
He Junyan
76585b3a05
av1decoder: fail early if no input caps have been provided
...
The av1decoder class does not implement the ->parse() virtual function,
and we always need to add the av1parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:40:21 +08:00
He Junyan
30a05a3999
vp9decoder: fail early if no input caps have been provided
...
The vp9decoder class does not implement the ->parse() virtual function,
and we always need to add the vp9parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:38:58 +08:00
He Junyan
c8af9adcdc
vp8decoder: fail early if no input caps have been provided
...
The vp8decoder class does not implement the ->parse() virtual function,
it can only accepts frame aligned data. If some element such as filesrc
feed it with unaligned data, the behaviour is undecided. So we should
set_needs_format of the decoder to TRUE, then it can fail with a
"not-negotiated" error early, rather than go on and generate unexpected
error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:32:45 +08:00
He Junyan
a965be8d96
mpeg2decoder: fail early if no input caps have been provided
...
The mpeg2decoder class does not implement the ->parse() virtual function,
and we always need to add the mpegvideoparse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:31:27 +08:00
He Junyan
13b36cd4e3
h264decoder: fail early if no input caps have been provided
...
The h264decoder class does not implement the ->parse() virtual function,
and we always need to add the h264parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:30:37 +08:00
He Junyan
b92a0a3e84
h265decoder: fail early if no input caps have been provided
...
The h265decoder class does not implement the ->parse() virtual function,
and we always need to add the h265parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:27:24 +08:00
He Junyan
1eeea942de
h265decoder: Fix a memory leak because of slice header.
...
The gst_h265_slice_hdr_free() should free the slice header just
parsed, not the priv->current_slice. Or, the memory leak will
happen because we do not free the slices in priv->nalu list.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3671 >
2023-01-03 17:28:18 +08:00
Marek Olejnik
02359dd251
h265decoder: Do not abort when failed to prepare ref pic set
...
Currently the element calls abort when failed to prepare reference
picture set. This can happent when the input stream is somehow
corrupted, like a rtsp strem with lost packets. Now it will only
return with GST_FLOW_ERROR instead of terminating whole process.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3505 >
2022-12-07 13:01:35 +00:00
Seungha Yang
132eddd7b9
av1decoder: Clear highest_spatial_layer per sequence header
...
Clear the value to default zero, indicating that no spatial scalability
layer is used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430 >
2022-11-19 11:58:01 +00:00
Seungha Yang
c92128f6b0
av1decoder: Don't error out by dropped OBU
...
OBU can be dropped if the current layer is not in selected operation
point
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430 >
2022-11-19 11:58:01 +00:00
Seungha Yang
f1a52c5ea0
av1decoder: Fix wrong spatial layer validation
...
Highest spatial id and temporal id is independent, and should not drop
temporal enhance layer by the previous condition. Note that
the decision for dropping OBU based on operation point is being
handled in gst_av1_parser_identify_one_obu() already.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1585
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430 >
2022-11-19 11:58:01 +00:00