/* * gstxcambuffermeta.cpp - gst xcam buffer meta data * * Copyright (c) 2014-2015 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Author: Wind Yuan */ #include "gstxcambuffermeta.h" using namespace XCam; GType gst_xcam_buffer_meta_api_get_type (void) { static GType xcam_buf_type = 0; static const gchar *xcam_buf_tags [] = { GST_XCAM_META_TAG_XCAM, GST_XCAM_META_TAG_BUF, NULL }; if (g_once_init_enter (&xcam_buf_type)) { GType _type = gst_meta_api_type_register ("GstXCamBuffer", xcam_buf_tags); g_once_init_leave (&xcam_buf_type, _type); } return xcam_buf_type; } static gboolean gst_xcam_buffer_meta_init (GstMeta *base, gpointer params, GstBuffer *buffer) { XCAM_UNUSED (params); XCAM_UNUSED (buffer); GstXCamBufferMeta *meta = (GstXCamBufferMeta *)base; XCAM_CONSTRUCTOR (meta->buffer, SmartPtr); return TRUE; } static void gst_xcam_buffer_meta_free (GstMeta *base, GstBuffer *buffer) { XCAM_UNUSED (buffer); GstXCamBufferMeta *meta = (GstXCamBufferMeta *)base; meta->buffer->unmap (); XCAM_DESTRUCTOR (meta->buffer, SmartPtr); } static const GstMetaInfo * gst_xcam_buffer_meta_get_info (void) { static const GstMetaInfo *meta_info = NULL; if (g_once_init_enter (&meta_info)) { const GstMetaInfo *_meta = gst_meta_register (GST_XCAM_BUFFER_META_API_TYPE, "GstXCamBufferMeta", sizeof (GstXCamBufferMeta), gst_xcam_buffer_meta_init, gst_xcam_buffer_meta_free, NULL); g_once_init_leave (&meta_info, _meta); } return meta_info; } GstXCamBufferMeta * gst_buffer_add_xcam_buffer_meta ( GstBuffer *buffer, const SmartPtr &data) { XCAM_ASSERT (data.ptr ()); GstXCamBufferMeta *meta = (GstXCamBufferMeta*) gst_buffer_add_meta ( buffer, gst_xcam_buffer_meta_get_info(), NULL); g_return_val_if_fail (meta, NULL); meta->buffer = data; return meta; }