[MOVED FROM BAD 006/134] vp8dec: Fix reset after seeking

Also remove some unused code.
This commit is contained in:
David Schleef 2010-05-14 01:14:46 -07:00 committed by Sebastian Dröge
parent 4a733f9083
commit 75d31dabe8

View file

@ -97,8 +97,6 @@ static gboolean gst_vp8_dec_stop (GstBaseVideoDecoder * decoder);
static gboolean gst_vp8_dec_reset (GstBaseVideoDecoder * decoder);
static GstFlowReturn gst_vp8_dec_parse_data (GstBaseVideoDecoder * decoder,
gboolean at_eos);
static int gst_vp8_dec_scan_for_sync (GstBaseVideoDecoder * decoder,
gboolean at_eos, int offset, int n);
static GstFlowReturn gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder,
GstVideoFrame * frame);
@ -155,7 +153,6 @@ gst_vp8_dec_class_init (GstVP8DecClass * klass)
base_video_decoder_class->start = gst_vp8_dec_start;
base_video_decoder_class->stop = gst_vp8_dec_stop;
base_video_decoder_class->reset = gst_vp8_dec_reset;
base_video_decoder_class->scan_for_sync = gst_vp8_dec_scan_for_sync;
base_video_decoder_class->parse_data = gst_vp8_dec_parse_data;
base_video_decoder_class->handle_frame = gst_vp8_dec_handle_frame;
}
@ -234,6 +231,7 @@ gst_vp8_dec_start (GstBaseVideoDecoder * decoder)
static gboolean
gst_vp8_dec_stop (GstBaseVideoDecoder * base_video_decoder)
{
return TRUE;
}
@ -241,6 +239,7 @@ static gboolean
gst_vp8_dec_reset (GstBaseVideoDecoder * base_video_decoder)
{
GstVP8Dec *decoder;
int flags = 0;
GST_DEBUG ("reset");
@ -249,6 +248,8 @@ gst_vp8_dec_reset (GstBaseVideoDecoder * base_video_decoder)
decoder->decoder_inited = FALSE;
decoder->have_video_info = FALSE;
vpx_codec_dec_init (&decoder->decoder, &vpx_codec_vp8_dx_algo, NULL, flags);
return TRUE;
}
@ -272,28 +273,6 @@ gst_vp8_dec_send_tags (GstVP8Dec * dec)
GST_BASE_VIDEO_CODEC_SRC_PAD (dec), list);
}
static int
gst_vp8_dec_scan_for_sync (GstBaseVideoDecoder * base_video_decoder,
gboolean at_eos, int offset, int n)
{
int n_available =
gst_adapter_available (base_video_decoder->input_adapter) - offset;
if (n_available < 4) {
if (at_eos) {
return n_available;
} else {
return 0;
}
}
n_available -= 3;
return
gst_adapter_masked_scan_uint32_compat (base_video_decoder->input_adapter,
0xf00fff3f, 0x1f07003f, offset, MIN (n, n_available - 3));
}
static GstFlowReturn
gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame)
{
@ -316,19 +295,22 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame)
gst_vp8_dec_send_tags (dec);
}
#if 0
status =
dec->decoder->
GetCompressedFrameDetails (GST_BUFFER_DATA (frame->sink_buffer),
pCompDetails);
#endif
if (!dec->have_video_info) {
#if 0
decoder->state.width = pCompDetails->SamplesPerLine;
decoder->state.height = pCompDetails->ActiveLinePerFrame *
pCompDetails->FieldFrameCount;
#endif
vpx_codec_stream_info_t stream_info;
vpx_codec_peek_stream_info (&vpx_codec_vp8_dx_algo,
GST_BUFFER_DATA (frame->sink_buffer),
GST_BUFFER_SIZE (frame->sink_buffer), &stream_info);
if (!stream_info.is_kf) {
gst_base_video_decoder_skip_frame (decoder, frame);
return GST_FLOW_OK;
}
/* should set size here */
decoder->state.width = stream_info.w;
decoder->state.height = stream_info.h;
decoder->state.format = GST_VIDEO_FORMAT_I420;
decoder->state.fps_n = 30;
@ -338,7 +320,7 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame)
dec->have_video_info = TRUE;
}
#if 0
if (GST_PAD_CAPS (GST_BASE_VIDEO_CODEC_SRC_PAD (decoder)) == NULL) {
GstCaps *caps;
@ -351,6 +333,7 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame)
gst_pad_set_caps (GST_BASE_VIDEO_CODEC_SRC_PAD (decoder), caps);
}
#endif
ret = gst_base_video_decoder_alloc_src_frame (decoder, frame);
if (ret != GST_FLOW_OK) {