mpegtsmux push arbitrary data
Ilya Averyanov
averyanovin at gmail.com
Wed Jun 3 04:31:30 PDT 2015
I want push in to mpegts stream some data. For that i modify tsmuxer
by adding new accepted caps.
I push data by appsrc. In appsrc i use "need-data" signal. When signal
calling i push data from my buffer. And if buffer is empty i want push
GstBuffer with zero size.
But if i do that i no get "need-data" signal again.
Also if i always push zero size GstBuffer all ok, if after zero buffer
push buffer with data, and again push zero size buffer signal no call.
void AppSrc::need_data(GstElement* element, guint, gpointer userData)
{
AppSrc *appsrc = (AppSrc *) userData;
GstBuffer *buffer = gst_buffer_new();
std::string data;
appsrc->mutex.lock();
while (!appsrc->queue.empty())
{
data.append(appsrc->queue.front());
appsrc->queue.pop();
}
appsrc->mutex.unlock();
GST_BUFFER_DATA (buffer) = (guint8*)g_memdup( data.data() , data.size());
GST_BUFFER_SIZE (buffer) = data.size();
GST_BUFFER_TIMESTAMP (buffer) = appsrc->timestamp;
GST_BUFFER_DURATION (buffer) = gst_util_uint64_scale_int (1,
GST_SECOND, 25);
appsrc->timestamp += GST_BUFFER_DURATION (buffer);
gst_app_src_push_buffer(GST_APP_SRC(appsrc->element), buffer);
}
P.S. I use 0.10 but I think that the gst-1.0 everything will be same.
More information about the gstreamer-devel
mailing list