mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
h265parse: Reset the parser information when caps changes
Apply the commit 14f6fcd
https://bugzilla.gnome.org/show_bug.cgi?id=754124
This commit is contained in:
parent
80cab68889
commit
27432ab067
1 changed files with 36 additions and 19 deletions
|
@ -187,8 +187,10 @@ gst_h265_parse_reset_frame (GstH265Parse * h265parse)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_h265_parse_reset (GstH265Parse * h265parse)
|
||||
gst_h265_parse_reset_stream_info (GstH265Parse * h265parse)
|
||||
{
|
||||
gint i;
|
||||
|
||||
h265parse->width = 0;
|
||||
h265parse->height = 0;
|
||||
h265parse->fps_num = 0;
|
||||
|
@ -197,20 +199,35 @@ gst_h265_parse_reset (GstH265Parse * h265parse)
|
|||
h265parse->upstream_par_d = -1;
|
||||
h265parse->parsed_par_n = 0;
|
||||
h265parse->parsed_par_n = 0;
|
||||
gst_buffer_replace (&h265parse->codec_data, NULL);
|
||||
gst_buffer_replace (&h265parse->codec_data_in, NULL);
|
||||
h265parse->nal_length_size = 4;
|
||||
h265parse->packetized = FALSE;
|
||||
h265parse->transform = FALSE;
|
||||
h265parse->have_pps = FALSE;
|
||||
h265parse->have_sps = FALSE;
|
||||
h265parse->have_vps = FALSE;
|
||||
|
||||
h265parse->align = GST_H265_PARSE_ALIGN_NONE;
|
||||
h265parse->format = GST_H265_PARSE_FORMAT_NONE;
|
||||
|
||||
h265parse->last_report = GST_CLOCK_TIME_NONE;
|
||||
h265parse->transform = FALSE;
|
||||
h265parse->nal_length_size = 4;
|
||||
h265parse->packetized = FALSE;
|
||||
h265parse->push_codec = FALSE;
|
||||
h265parse->have_pps = FALSE;
|
||||
h265parse->have_sps = FALSE;
|
||||
h265parse->have_vps = FALSE;
|
||||
|
||||
gst_buffer_replace (&h265parse->codec_data, NULL);
|
||||
gst_buffer_replace (&h265parse->codec_data_in, NULL);
|
||||
|
||||
gst_h265_parse_reset_frame (h265parse);
|
||||
|
||||
for (i = 0; i < GST_H265_MAX_VPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->vps_nals[i], NULL);
|
||||
for (i = 0; i < GST_H265_MAX_SPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->sps_nals[i], NULL);
|
||||
for (i = 0; i < GST_H265_MAX_PPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->pps_nals[i], NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_h265_parse_reset (GstH265Parse * h265parse)
|
||||
{
|
||||
h265parse->last_report = GST_CLOCK_TIME_NONE;
|
||||
|
||||
h265parse->sent_codec_tag = FALSE;
|
||||
|
||||
|
@ -219,7 +236,7 @@ gst_h265_parse_reset (GstH265Parse * h265parse)
|
|||
|
||||
h265parse->discont = FALSE;
|
||||
|
||||
gst_h265_parse_reset_frame (h265parse);
|
||||
gst_h265_parse_reset_stream_info (h265parse);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -241,19 +258,11 @@ gst_h265_parse_start (GstBaseParse * parse)
|
|||
static gboolean
|
||||
gst_h265_parse_stop (GstBaseParse * parse)
|
||||
{
|
||||
guint i;
|
||||
GstH265Parse *h265parse = GST_H265_PARSE (parse);
|
||||
|
||||
GST_DEBUG_OBJECT (parse, "stop");
|
||||
gst_h265_parse_reset (h265parse);
|
||||
|
||||
for (i = 0; i < GST_H265_MAX_VPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->vps_nals[i], NULL);
|
||||
for (i = 0; i < GST_H265_MAX_SPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->sps_nals[i], NULL);
|
||||
for (i = 0; i < GST_H265_MAX_PPS_COUNT; i++)
|
||||
gst_buffer_replace (&h265parse->pps_nals[i], NULL);
|
||||
|
||||
gst_h265_parser_free (h265parse->nalparser);
|
||||
|
||||
return TRUE;
|
||||
|
@ -2137,12 +2146,20 @@ gst_h265_parse_set_caps (GstBaseParse * parse, GstCaps * caps)
|
|||
guint num_nals, i, j;
|
||||
GstH265NalUnit nalu;
|
||||
GstH265ParserResult parseres;
|
||||
GstCaps *old_caps;
|
||||
|
||||
h265parse = GST_H265_PARSE (parse);
|
||||
|
||||
/* reset */
|
||||
h265parse->push_codec = FALSE;
|
||||
|
||||
old_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (parse));
|
||||
if (old_caps) {
|
||||
if (!gst_caps_is_equal (old_caps, caps))
|
||||
gst_h265_parse_reset_stream_info (h265parse);
|
||||
gst_caps_unref (old_caps);
|
||||
}
|
||||
|
||||
str = gst_caps_get_structure (caps, 0);
|
||||
|
||||
/* accept upstream info if provided */
|
||||
|
|
Loading…
Reference in a new issue