d3d11decoder: Negotiate again on the first output buffer
... unconditionally. There may be updated field in sinkpad caps after the new_sequence() call (HDR related ones for example), then we should signal the information to downstream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1474>
This commit is contained in:
parent
43856a0735
commit
5fefc689a0
@ -1305,20 +1305,12 @@ gst_d3d11_decoder_get_output_view_buffer (GstD3D11Decoder * decoder,
|
|||||||
g_return_val_if_fail (GST_IS_D3D11_DECODER (decoder), FALSE);
|
g_return_val_if_fail (GST_IS_D3D11_DECODER (decoder), FALSE);
|
||||||
|
|
||||||
if (!decoder->internal_pool) {
|
if (!decoder->internal_pool) {
|
||||||
gboolean reconfigured;
|
/* Try negotiate again whatever the previous negotiation result was.
|
||||||
|
* There could be updated field(s) in sinkpad caps after we negotiated with
|
||||||
/* Replicate gst_video_decoder_allocate_output_buffer().
|
* downstream on new_sequence() call. For example, h264/h265 parse
|
||||||
* In case of zero-copy playback, this is the last chance for querying
|
* will be able to update HDR10 related caps field after parsing
|
||||||
* required min-buffer size by downstream and take account of
|
* corresponding SEI messages which are usually placed after the essential
|
||||||
* the min-buffer size into our internel pool size */
|
* headers */
|
||||||
GST_VIDEO_DECODER_STREAM_LOCK (videodec);
|
|
||||||
reconfigured =
|
|
||||||
gst_pad_check_reconfigure (GST_VIDEO_DECODER_SRC_PAD (videodec));
|
|
||||||
GST_DEBUG_OBJECT (videodec,
|
|
||||||
"Downstream was reconfigured, negotiating again");
|
|
||||||
GST_VIDEO_DECODER_STREAM_UNLOCK (videodec);
|
|
||||||
|
|
||||||
if (reconfigured)
|
|
||||||
gst_video_decoder_negotiate (videodec);
|
gst_video_decoder_negotiate (videodec);
|
||||||
|
|
||||||
if (!gst_d3d11_decoder_prepare_output_view_pool (decoder)) {
|
if (!gst_d3d11_decoder_prepare_output_view_pool (decoder)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user