vdpau: remove non working unused code from GstBaseVideoDecoder

This commit is contained in:
Carl-Anton Ingmarsson 2010-09-02 01:04:15 +02:00
parent f2fb66d376
commit 5c03466309
2 changed files with 21 additions and 184 deletions

View file

@ -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,149 +318,34 @@ 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
@ -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;

View file

@ -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;