efl
66 строк · 1.6 Кб
1#ifdef HAVE_CONFIG_H2# include "config.h"3#endif4
5#include "emotion_gstreamer.h"6
7Emotion_Gstreamer_Buffer *8emotion_gstreamer_buffer_alloc(EmotionVideoSink *sink,9GstBuffer *buffer,10GstVideoInfo *info,11Evas_Colorspace eformat,12int eheight,13Evas_Video_Convert_Cb func)14{
15Emotion_Gstreamer_Buffer *send;16
17if (!sink->priv->emotion_object) return NULL;18
19send = calloc(1, sizeof(Emotion_Gstreamer_Buffer));20if (!send) return NULL;21
22send->sink = gst_object_ref(sink);23send->frame = gst_buffer_ref(buffer);24send->info = *info;25if (gst_video_frame_map(&(send->vframe), info, buffer, GST_MAP_READ))26send->vfmapped = EINA_TRUE;27else28send->vfmapped = EINA_FALSE;29send->eformat = eformat;30send->eheight = eheight;31send->func = func;32return send;33}
34
35void
36emotion_gstreamer_buffer_free(Emotion_Gstreamer_Buffer *send)37{
38gst_object_unref(send->sink);39gst_buffer_replace(&send->frame, NULL);40free(send);41}
42
43Emotion_Gstreamer_Message *44emotion_gstreamer_message_alloc(Emotion_Gstreamer *ev,45GstMessage *msg)46{
47Emotion_Gstreamer_Message *send;48
49if (!ev) return NULL;50
51send = malloc(sizeof (Emotion_Gstreamer_Message));52if (!send) return NULL;53
54send->ev = emotion_gstreamer_ref(ev);55send->msg = gst_message_ref(msg);56
57return send;58}
59
60void
61emotion_gstreamer_message_free(Emotion_Gstreamer_Message *send)62{
63emotion_gstreamer_unref(send->ev);64gst_message_unref(send->msg);65free(send);66}
67