efl

Форк
0
/
emotion_alloc.c 
66 строк · 1.6 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "config.h"
3
#endif
4

5
#include "emotion_gstreamer.h"
6

7
Emotion_Gstreamer_Buffer *
8
emotion_gstreamer_buffer_alloc(EmotionVideoSink *sink,
9
                               GstBuffer *buffer,
10
                               GstVideoInfo *info,
11
                               Evas_Colorspace eformat,
12
                               int eheight,
13
                               Evas_Video_Convert_Cb func)
14
{
15
   Emotion_Gstreamer_Buffer *send;
16

17
   if (!sink->priv->emotion_object) return NULL;
18

19
   send = calloc(1, sizeof(Emotion_Gstreamer_Buffer));
20
   if (!send) return NULL;
21

22
   send->sink = gst_object_ref(sink);
23
   send->frame = gst_buffer_ref(buffer);
24
   send->info = *info;
25
   if (gst_video_frame_map(&(send->vframe), info, buffer, GST_MAP_READ))
26
     send->vfmapped = EINA_TRUE;
27
   else
28
     send->vfmapped = EINA_FALSE;
29
   send->eformat = eformat;
30
   send->eheight = eheight;
31
   send->func = func;
32
   return send;
33
}
34

35
void
36
emotion_gstreamer_buffer_free(Emotion_Gstreamer_Buffer *send)
37
{
38
   gst_object_unref(send->sink);
39
   gst_buffer_replace(&send->frame, NULL);
40
   free(send);
41
}
42

43
Emotion_Gstreamer_Message *
44
emotion_gstreamer_message_alloc(Emotion_Gstreamer *ev,
45
                                GstMessage *msg)
46
{
47
   Emotion_Gstreamer_Message *send;
48

49
   if (!ev) return NULL;
50

51
   send = malloc(sizeof (Emotion_Gstreamer_Message));
52
   if (!send) return NULL;
53

54
   send->ev = emotion_gstreamer_ref(ev);
55
   send->msg = gst_message_ref(msg);
56

57
   return send;
58
}
59

60
void
61
emotion_gstreamer_message_free(Emotion_Gstreamer_Message *send)
62
{
63
   emotion_gstreamer_unref(send->ev);
64
   gst_message_unref(send->msg);
65
   free(send);
66
}
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.