mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
Port GstVaapiFrameStore to GstVaapiMiniObject.
This commit is contained in:
parent
f88374d642
commit
74533de9c6
1 changed files with 19 additions and 61 deletions
|
@ -261,36 +261,18 @@ gst_vaapi_slice_h264_new(
|
||||||
/* --- Frame Buffers (DPB) --- */
|
/* --- Frame Buffers (DPB) --- */
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#define GST_VAAPI_TYPE_FRAME_STORE \
|
|
||||||
(gst_vaapi_frame_store_get_type())
|
|
||||||
|
|
||||||
#define GST_VAAPI_FRAME_STORE_CAST(obj) \
|
#define GST_VAAPI_FRAME_STORE_CAST(obj) \
|
||||||
((GstVaapiFrameStore *)(obj))
|
((GstVaapiFrameStore *)(obj))
|
||||||
|
|
||||||
#define GST_VAAPI_FRAME_STORE(obj) \
|
#define GST_VAAPI_FRAME_STORE(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST((obj), \
|
GST_VAAPI_FRAME_STORE_CAST(obj)
|
||||||
GST_VAAPI_TYPE_FRAME_STORE, \
|
|
||||||
GstVaapiFrameStore))
|
|
||||||
|
|
||||||
#define GST_VAAPI_FRAME_STORE_CLASS(klass) \
|
|
||||||
(G_TYPE_CHECK_CLASS_CAST((klass), \
|
|
||||||
GST_VAAPI_TYPE_FRAME_STORE, \
|
|
||||||
GstVaapiFrameStoreClass))
|
|
||||||
|
|
||||||
#define GST_VAAPI_IS_FRAME_STORE(obj) \
|
#define GST_VAAPI_IS_FRAME_STORE(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_VAAPI_TYPE_FRAME_STORE))
|
(GST_VAAPI_MINI_OBJECT(obj) != NULL)
|
||||||
|
|
||||||
#define GST_VAAPI_IS_FRAME_STORE_CLASS(klass) \
|
|
||||||
(G_TYPE_CHECK_CLASS_TYPE((klass), GST_VAAPI_TYPE_FRAME_STORE))
|
|
||||||
|
|
||||||
#define GST_VAAPI_FRAME_STORE_GET_CLASS(obj) \
|
|
||||||
(G_TYPE_INSTANCE_GET_CLASS((obj), \
|
|
||||||
GST_VAAPI_TYPE_FRAME_STORE, \
|
|
||||||
GstVaapiFrameStoreClass))
|
|
||||||
|
|
||||||
struct _GstVaapiFrameStore {
|
struct _GstVaapiFrameStore {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GstMiniObject parent_instance;
|
GstVaapiMiniObject parent_instance;
|
||||||
|
|
||||||
guint structure;
|
guint structure;
|
||||||
GstVaapiPictureH264 *buffers[2];
|
GstVaapiPictureH264 *buffers[2];
|
||||||
|
@ -298,45 +280,14 @@ struct _GstVaapiFrameStore {
|
||||||
guint output_needed;
|
guint output_needed;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstVaapiFrameStoreClass {
|
|
||||||
/*< private >*/
|
|
||||||
GstMiniObjectClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
G_DEFINE_TYPE(GstVaapiFrameStore, gst_vaapi_frame_store, GST_TYPE_MINI_OBJECT)
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vaapi_frame_store_finalize(GstMiniObject *object)
|
gst_vaapi_frame_store_finalize(gpointer object)
|
||||||
{
|
{
|
||||||
GstVaapiFrameStore * const fs = GST_VAAPI_FRAME_STORE_CAST(object);
|
GstVaapiFrameStore * const fs = object;
|
||||||
GstMiniObjectClass *parent_class;
|
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
for (i = 0; i < fs->num_buffers; i++)
|
for (i = 0; i < fs->num_buffers; i++)
|
||||||
gst_vaapi_picture_replace(&fs->buffers[i], NULL);
|
gst_vaapi_picture_replace(&fs->buffers[i], NULL);
|
||||||
|
|
||||||
parent_class = GST_MINI_OBJECT_CLASS(gst_vaapi_frame_store_parent_class);
|
|
||||||
if (parent_class->finalize)
|
|
||||||
parent_class->finalize(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gst_vaapi_frame_store_init(GstVaapiFrameStore *fs)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gst_vaapi_frame_store_class_init(GstVaapiFrameStoreClass *klass)
|
|
||||||
{
|
|
||||||
GstMiniObjectClass * const object_class = GST_MINI_OBJECT_CLASS(klass);
|
|
||||||
|
|
||||||
object_class->finalize = gst_vaapi_frame_store_finalize;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline gpointer
|
|
||||||
_gst_vaapi_frame_store_new(void)
|
|
||||||
{
|
|
||||||
return gst_mini_object_new(GST_VAAPI_TYPE_FRAME_STORE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstVaapiFrameStore *
|
static GstVaapiFrameStore *
|
||||||
|
@ -344,14 +295,21 @@ gst_vaapi_frame_store_new(GstVaapiPictureH264 *picture)
|
||||||
{
|
{
|
||||||
GstVaapiFrameStore *fs;
|
GstVaapiFrameStore *fs;
|
||||||
|
|
||||||
|
static const GstVaapiMiniObjectClass GstVaapiFrameStoreClass = {
|
||||||
|
sizeof(GstVaapiFrameStore),
|
||||||
|
gst_vaapi_frame_store_finalize
|
||||||
|
};
|
||||||
|
|
||||||
g_return_val_if_fail(GST_VAAPI_IS_PICTURE_H264(picture), NULL);
|
g_return_val_if_fail(GST_VAAPI_IS_PICTURE_H264(picture), NULL);
|
||||||
|
|
||||||
fs = _gst_vaapi_frame_store_new();
|
fs = (GstVaapiFrameStore *)
|
||||||
|
gst_vaapi_mini_object_new(&GstVaapiFrameStoreClass);
|
||||||
if (!fs)
|
if (!fs)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
fs->structure = picture->structure;
|
fs->structure = picture->structure;
|
||||||
fs->buffers[0] = gst_vaapi_picture_ref(picture);
|
fs->buffers[0] = gst_vaapi_picture_ref(picture);
|
||||||
|
fs->buffers[1] = NULL;
|
||||||
fs->num_buffers = 1;
|
fs->num_buffers = 1;
|
||||||
fs->output_needed = picture->output_needed;
|
fs->output_needed = picture->output_needed;
|
||||||
return fs;
|
return fs;
|
||||||
|
@ -431,14 +389,14 @@ gst_vaapi_frame_store_has_reference(GstVaapiFrameStore *fs)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define gst_vaapi_frame_store_ref(fs) \
|
#define gst_vaapi_frame_store_ref(fs) \
|
||||||
gst_mini_object_ref(GST_MINI_OBJECT(fs))
|
gst_vaapi_mini_object_ref(GST_VAAPI_MINI_OBJECT(fs))
|
||||||
|
|
||||||
#define gst_vaapi_frame_store_unref(fs) \
|
#define gst_vaapi_frame_store_unref(fs) \
|
||||||
gst_mini_object_unref(GST_MINI_OBJECT(fs))
|
gst_vaapi_mini_object_unref(GST_VAAPI_MINI_OBJECT(fs))
|
||||||
|
|
||||||
#define gst_vaapi_frame_store_replace(old_fs_p, new_fs) \
|
#define gst_vaapi_frame_store_replace(old_fs_p, new_fs) \
|
||||||
gst_mini_object_replace((GstMiniObject **)(old_fs_p), \
|
gst_vaapi_mini_object_replace((GstVaapiMiniObject **)(old_fs_p), \
|
||||||
(GstMiniObject *)(new_fs))
|
(GstVaapiMiniObject *)(new_fs))
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
/* --- H.264 Decoder --- */
|
/* --- H.264 Decoder --- */
|
||||||
|
|
Loading…
Reference in a new issue