Exemple #1
0
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;
}
Exemple #4
0
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;
}