Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int
- gst_ffmpeg_pipe_read (URLContext * h, unsigned char *buf, int size)
- {
- GstFFMpegPipe *ffpipe;
- const guint8 *data;
- guint available;
- ffpipe = (GstFFMpegPipe *) h->priv_data;
- GST_LOG ("requested size %d", size);
- GST_FFMPEG_PIPE_MUTEX_LOCK (ffpipe);
- GST_LOG ("requested size %d", size);
- while ((available = gst_adapter_available (ffpipe->adapter)) < size
- && !ffpipe->eos) {
- GST_DEBUG ("Available:%d, requested:%d", available, size);
- ffpipe->needed = size;
- GST_FFMPEG_PIPE_SIGNAL (ffpipe);
- GST_FFMPEG_PIPE_WAIT (ffpipe);
- }
- size = MIN (available, size);
- if (size) {
- GST_LOG ("Getting %d bytes", size);
- data = gst_adapter_peek (ffpipe->adapter, size);
- memcpy (buf, data, size);
- gst_adapter_flush (ffpipe->adapter, size);
- GST_LOG ("%d bytes left in adapter",
- gst_adapter_available (ffpipe->adapter));
- ffpipe->needed = 0;
- }
- GST_FFMPEG_PIPE_MUTEX_UNLOCK (ffpipe);
- return size;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement