device = GST_VDP_VIDEO_BUFFER (outbuf)->device;
- if (info->forward_reference != VDP_INVALID_HANDLE &&
- info->picture_coding_type != I_FRAME)
- gst_vdp_video_buffer_add_reference (GST_VDP_VIDEO_BUFFER (outbuf),
- GST_VDP_VIDEO_BUFFER (mpeg_dec->f_buffer));
-
- if (info->backward_reference != VDP_INVALID_HANDLE
- && info->picture_coding_type == B_FRAME)
- gst_vdp_video_buffer_add_reference (GST_VDP_VIDEO_BUFFER (outbuf),
- GST_VDP_VIDEO_BUFFER (mpeg_dec->b_buffer));
-
GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
GST_BUFFER_DURATION (outbuf) = mpeg_dec->duration;
GST_BUFFER_OFFSET (outbuf) = mpeg_dec->frame_nr;
#include "gstvdpvideobuffer.h"
-
-void
-gst_vdp_video_buffer_add_reference (GstVdpVideoBuffer * buffer,
- GstVdpVideoBuffer * buf)
-{
- g_assert (GST_IS_VDP_VIDEO_BUFFER (buffer));
- g_assert (GST_IS_VDP_VIDEO_BUFFER (buf));
-
- gst_buffer_ref (GST_BUFFER (buf));
- buffer->refs = g_slist_prepend (buffer->refs, buf);
-}
-
GstVdpVideoBuffer *
gst_vdp_video_buffer_new (GstVdpDevice * device, VdpChromaType chroma_type,
gint width, gint height)
static void
gst_vdp_video_buffer_finalize (GstVdpVideoBuffer * buffer)
{
- GSList *iter;
GstVdpDevice *device;
VdpStatus status;
g_object_unref (buffer->device);
- for (iter = buffer->refs; iter; iter = g_slist_next (iter)) {
- GstBuffer *buf;
-
- buf = (GstBuffer *) (iter->data);
- gst_buffer_unref (buf);
- }
- g_slist_free (buffer->refs);
-
GST_MINI_OBJECT_CLASS (gst_vdp_video_buffer_parent_class)->finalize
(GST_MINI_OBJECT (buffer));
}
{
buffer->device = NULL;
buffer->surface = VDP_INVALID_HANDLE;
-
- buffer->refs = NULL;
}
static void