1. 程式人生 > >gstreamer向appsrc傳送資料的程式碼

gstreamer向appsrc傳送資料的程式碼

有一位朋友看了吾《gstreamer向appsrc傳送幀畫面的程式碼》,表示不知道怎麼填充資料。這個吾正好也做了(當時能找到辦法也是運氣好),就開放出來,希望能給朋友們帶來幫助:

#define BUFFER_SIZE 4096

static void callback_feed_data_start (GstElement * source, guint size, void * arg)
{
    GstFlowReturn ret;
    GstMapInfo gst_map;
    GstBuffer    *gst_buffer   = NULL;
    char data_buffer[BUFFER_SIZE];
    int  data_size = BUFFER_SIZE;

    //需要時加執行緒鎖、條件鎖。

    gst_buffer = gst_buffer_new_allocate (NULL, data_size, NULL);
    gst_buffer_map (gst_buffer, &gst_map, GST_MAP_WRITE);

    memset(data_buffer, 0x80, data_size);
    memcpy( (guchar *)gst_map.data, data_buffer, data_size);
    g_signal_emit_by_name (source, "push-buffer", gst_buffer, &ret);

    gst_buffer_unmap (gst_buffer, &gst_map);
    gst_buffer_unref (gst_buffer);

    //釋放執行緒鎖、條件鎖。

}