mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
vdpau: remove non working unused code from GstBaseVideoDecoder
This commit is contained in:
parent
f2fb66d376
commit
5c03466309
2 changed files with 21 additions and 184 deletions
|
@ -267,7 +267,7 @@ gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
GstBaseVideoDecoder *base_video_decoder;
|
GstBaseVideoDecoder *base_video_decoder;
|
||||||
GstBaseVideoDecoderClass *base_video_decoder_class;
|
GstBaseVideoDecoderClass *base_video_decoder_class;
|
||||||
gboolean ret = FALSE;
|
gboolean res = FALSE;
|
||||||
|
|
||||||
base_video_decoder = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad));
|
base_video_decoder = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad));
|
||||||
base_video_decoder_class =
|
base_video_decoder_class =
|
||||||
|
@ -275,15 +275,14 @@ gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event)
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
case GST_EVENT_EOS:
|
case GST_EVENT_EOS:
|
||||||
{
|
|
||||||
if (!base_video_decoder->packetized)
|
if (!base_video_decoder->packetized)
|
||||||
gst_base_video_decoder_drain (base_video_decoder, TRUE);
|
gst_base_video_decoder_drain (base_video_decoder, TRUE);
|
||||||
|
|
||||||
ret =
|
res =
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
||||||
(base_video_decoder), event);
|
(base_video_decoder), event);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GST_EVENT_NEWSEGMENT:
|
case GST_EVENT_NEWSEGMENT:
|
||||||
{
|
{
|
||||||
gboolean update;
|
gboolean update;
|
||||||
|
@ -319,150 +318,35 @@ gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event)
|
||||||
GST_TIME_ARGS (segment->start),
|
GST_TIME_ARGS (segment->start),
|
||||||
GST_TIME_ARGS (segment->stop), GST_TIME_ARGS (segment->time), update);
|
GST_TIME_ARGS (segment->stop), GST_TIME_ARGS (segment->time), update);
|
||||||
|
|
||||||
ret =
|
res =
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
||||||
(base_video_decoder), event);
|
(base_video_decoder), event);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case GST_EVENT_FLUSH_STOP:
|
case GST_EVENT_FLUSH_STOP:
|
||||||
gst_base_video_decoder_flush (base_video_decoder);
|
gst_base_video_decoder_flush (base_video_decoder);
|
||||||
gst_segment_init (&base_video_decoder->segment, GST_FORMAT_TIME);
|
gst_segment_init (&base_video_decoder->segment, GST_FORMAT_TIME);
|
||||||
|
|
||||||
ret =
|
res =
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
||||||
(base_video_decoder), event);
|
(base_video_decoder), event);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* FIXME this changes the order of events */
|
res = gst_pad_event_default (pad, event);
|
||||||
ret =
|
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SRC_PAD
|
|
||||||
(base_video_decoder), event);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
gst_object_unref (base_video_decoder);
|
gst_object_unref (base_video_decoder);
|
||||||
return ret;
|
return res;
|
||||||
|
|
||||||
newseg_wrong_format:
|
newseg_wrong_format:
|
||||||
{
|
|
||||||
GST_DEBUG_OBJECT (base_video_decoder, "received non TIME newsegment");
|
GST_DEBUG_OBJECT (base_video_decoder, "received non TIME newsegment");
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static gboolean
|
|
||||||
gst_base_video_decoder_sink_convert (GstPad * pad,
|
|
||||||
GstFormat src_format, gint64 src_value,
|
|
||||||
GstFormat * dest_format, gint64 * dest_value)
|
|
||||||
{
|
|
||||||
gboolean res = TRUE;
|
|
||||||
GstBaseVideoDecoder *enc;
|
|
||||||
|
|
||||||
if (src_format == *dest_format) {
|
|
||||||
*dest_value = src_value;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
enc = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad));
|
|
||||||
|
|
||||||
/* FIXME: check if we are in a decoding state */
|
|
||||||
|
|
||||||
switch (src_format) {
|
|
||||||
case GST_FORMAT_BYTES:
|
|
||||||
switch (*dest_format) {
|
|
||||||
#if 0
|
|
||||||
case GST_FORMAT_DEFAULT:
|
|
||||||
*dest_value = gst_util_uint64_scale_int (src_value, 1,
|
|
||||||
enc->bytes_per_picture);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case GST_FORMAT_TIME:
|
|
||||||
/* seems like a rather silly conversion, implement me if you like */
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case GST_FORMAT_DEFAULT:
|
|
||||||
switch (*dest_format) {
|
|
||||||
case GST_FORMAT_TIME:
|
|
||||||
*dest_value = gst_util_uint64_scale (src_value,
|
|
||||||
GST_SECOND * enc->fps_d, enc->fps_n);
|
|
||||||
break;
|
|
||||||
#if 0
|
|
||||||
case GST_FORMAT_BYTES:
|
|
||||||
*dest_value = gst_util_uint64_scale_int (src_value,
|
|
||||||
enc->bytes_per_picture, 1);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
gst_base_video_decoder_src_convert (GstPad * pad,
|
|
||||||
GstFormat src_format, gint64 src_value,
|
|
||||||
GstFormat * dest_format, gint64 * dest_value)
|
|
||||||
{
|
|
||||||
gboolean res = TRUE;
|
|
||||||
GstBaseVideoDecoder *enc;
|
|
||||||
|
|
||||||
if (src_format == *dest_format) {
|
|
||||||
*dest_value = src_value;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
enc = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad));
|
|
||||||
|
|
||||||
/* FIXME: check if we are in a encoding state */
|
|
||||||
|
|
||||||
GST_DEBUG ("src convert");
|
|
||||||
switch (src_format) {
|
|
||||||
#if 0
|
|
||||||
case GST_FORMAT_DEFAULT:
|
|
||||||
switch (*dest_format) {
|
|
||||||
case GST_FORMAT_TIME:
|
|
||||||
*dest_value = gst_util_uint64_scale (granulepos_to_frame (src_value),
|
|
||||||
enc->fps_d * GST_SECOND, enc->fps_n);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case GST_FORMAT_TIME:
|
|
||||||
switch (*dest_format) {
|
|
||||||
case GST_FORMAT_DEFAULT:
|
|
||||||
{
|
|
||||||
*dest_value = gst_util_uint64_scale (src_value,
|
|
||||||
enc->fps_n, enc->fps_d * GST_SECOND);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
res = FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
gst_object_unref (enc);
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event)
|
gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event)
|
||||||
|
@ -474,42 +358,14 @@ gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event)
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
case GST_EVENT_SEEK:
|
case GST_EVENT_SEEK:
|
||||||
{
|
|
||||||
GstFormat format, tformat;
|
|
||||||
gdouble rate;
|
|
||||||
GstEvent *real_seek;
|
|
||||||
GstSeekFlags flags;
|
|
||||||
GstSeekType cur_type, stop_type;
|
|
||||||
gint64 cur, stop;
|
|
||||||
gint64 tcur, tstop;
|
|
||||||
|
|
||||||
GST_DEBUG ("seek event");
|
|
||||||
|
|
||||||
gst_event_parse_seek (event, &rate, &format, &flags, &cur_type,
|
|
||||||
&cur, &stop_type, &stop);
|
|
||||||
gst_event_unref (event);
|
|
||||||
|
|
||||||
tformat = GST_FORMAT_TIME;
|
|
||||||
res =
|
|
||||||
gst_base_video_decoder_src_convert (pad, format, cur, &tformat,
|
|
||||||
&tcur);
|
|
||||||
if (!res)
|
|
||||||
goto convert_error;
|
|
||||||
res =
|
|
||||||
gst_base_video_decoder_src_convert (pad, format, stop, &tformat,
|
|
||||||
&tstop);
|
|
||||||
if (!res)
|
|
||||||
goto convert_error;
|
|
||||||
|
|
||||||
real_seek = gst_event_new_seek (rate, GST_FORMAT_TIME,
|
|
||||||
flags, cur_type, tcur, stop_type, tstop);
|
|
||||||
|
|
||||||
|
/* FIXME: do seek using bitrate incase upstream doesn't handle it */
|
||||||
res =
|
res =
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SINK_PAD
|
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SINK_PAD
|
||||||
(base_video_decoder), real_seek);
|
(base_video_decoder), event);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case GST_EVENT_QOS:
|
case GST_EVENT_QOS:
|
||||||
{
|
{
|
||||||
gdouble proportion;
|
gdouble proportion;
|
||||||
|
@ -548,19 +404,16 @@ gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event)
|
||||||
(base_video_decoder), event);
|
(base_video_decoder), event);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
res =
|
res =
|
||||||
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SINK_PAD
|
gst_pad_push_event (GST_BASE_VIDEO_DECODER_SINK_PAD
|
||||||
(base_video_decoder), event);
|
(base_video_decoder), event);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
done:
|
|
||||||
gst_object_unref (base_video_decoder);
|
gst_object_unref (base_video_decoder);
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
convert_error:
|
|
||||||
GST_DEBUG_OBJECT (base_video_decoder, "could not convert format");
|
|
||||||
goto done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const GstQueryType *
|
static const GstQueryType *
|
||||||
|
@ -569,7 +422,6 @@ gst_base_video_decoder_get_query_types (GstPad * pad)
|
||||||
static const GstQueryType query_types[] = {
|
static const GstQueryType query_types[] = {
|
||||||
GST_QUERY_POSITION,
|
GST_QUERY_POSITION,
|
||||||
GST_QUERY_DURATION,
|
GST_QUERY_DURATION,
|
||||||
GST_QUERY_CONVERT,
|
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -604,33 +456,18 @@ gst_base_video_decoder_src_query (GstPad * pad, GstQuery * query)
|
||||||
gst_query_set_position (query, format, time);
|
gst_query_set_position (query, format, time);
|
||||||
|
|
||||||
res = TRUE;
|
res = TRUE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case GST_QUERY_DURATION:
|
case GST_QUERY_DURATION:
|
||||||
{
|
/* FIXME: approximate using bitrate if upstream doesn't answear */
|
||||||
res = gst_pad_peer_query (dec->sinkpad, query);
|
res = gst_pad_query (dec->sinkpad, query);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case GST_QUERY_CONVERT:
|
|
||||||
{
|
|
||||||
GstFormat src_fmt, dest_fmt;
|
|
||||||
gint64 src_val, dest_val;
|
|
||||||
|
|
||||||
GST_DEBUG ("convert query");
|
|
||||||
|
|
||||||
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
|
|
||||||
res =
|
|
||||||
gst_base_video_decoder_src_convert (pad, src_fmt, src_val, &dest_fmt,
|
|
||||||
&dest_val);
|
|
||||||
if (!res)
|
|
||||||
goto error;
|
|
||||||
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
res = gst_pad_query_default (pad, query);
|
res = gst_pad_query_default (pad, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_object_unref (dec);
|
gst_object_unref (dec);
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
|
|
@ -102,8 +102,8 @@ struct _GstBaseVideoDecoder
|
||||||
|
|
||||||
GList *timestamps;
|
GList *timestamps;
|
||||||
guint64 field_index;
|
guint64 field_index;
|
||||||
GstClockTime last_timestamp;
|
|
||||||
GstClockTime timestamp_offset;
|
GstClockTime timestamp_offset;
|
||||||
|
GstClockTime last_timestamp;
|
||||||
|
|
||||||
gdouble proportion;
|
gdouble proportion;
|
||||||
GstClockTime earliest_time;
|
GstClockTime earliest_time;
|
||||||
|
|
Loading…
Reference in a new issue