static void gst_vdp_mpeg_dec_flush (GstVdpMpegDec * mpeg_dec) { if (mpeg_dec->vdp_info.forward_reference != VDP_INVALID_HANDLE) gst_buffer_unref (mpeg_dec->f_buffer); if (mpeg_dec->vdp_info.backward_reference != VDP_INVALID_HANDLE) gst_buffer_unref (mpeg_dec->b_buffer); gst_adapter_clear (mpeg_dec->adapter); gst_vdp_mpeg_dec_init_info (&mpeg_dec->vdp_info); mpeg_dec->next_timestamp = GST_CLOCK_TIME_NONE; }
static gboolean gst_vdp_mpeg_dec_start (GstBaseVideoDecoder * base_video_decoder) { GstVdpMpegDec *mpeg_dec = GST_VDP_MPEG_DEC (base_video_decoder); gst_vdp_mpeg_dec_init_info (&mpeg_dec->vdp_info); mpeg_dec->decoder = VDP_INVALID_HANDLE; mpeg_dec->state = GST_VDP_MPEG_DEC_STATE_NEED_SEQUENCE; memset (&mpeg_dec->stream_info, 0, sizeof (GstVdpMpegStreamInfo)); return GST_BASE_VIDEO_DECODER_CLASS (parent_class)->start (base_video_decoder); }
static gboolean gst_vdp_mpeg_dec_flush (GstBaseVideoDecoder * base_video_decoder) { GstVdpMpegDec *mpeg_dec = GST_VDP_MPEG_DEC (base_video_decoder); if (mpeg_dec->vdp_info.forward_reference != VDP_INVALID_HANDLE) gst_video_frame_unref (mpeg_dec->f_frame); if (mpeg_dec->vdp_info.backward_reference != VDP_INVALID_HANDLE) gst_video_frame_unref (mpeg_dec->b_frame); gst_vdp_mpeg_dec_init_info (&mpeg_dec->vdp_info); mpeg_dec->prev_packet = -1; return TRUE; }
static void gst_vdp_mpeg_dec_start (GstVdpMpegDec * mpeg_dec) { gst_vdp_mpeg_dec_init_info (&mpeg_dec->vdp_info); mpeg_dec->device = NULL; mpeg_dec->decoder = VDP_INVALID_HANDLE; mpeg_dec->state = GST_VDP_MPEG_DEC_NEED_SEQUENCE; gst_segment_init (&mpeg_dec->segment, GST_FORMAT_TIME); mpeg_dec->seeking = FALSE; mpeg_dec->accumulated_size = 0; mpeg_dec->accumulated_duration = 0; }