[FFmpeg-devel] [PATCH] What is missing for working AVFMT_FLAG_NONBLOCK?
Nicolas George
nicolas.george
Tue Mar 3 21:18:33 CET 2009
Le tridi 13 vent?se, an CCXVII, Michael Niedermayer a ?crit?:
> yes, though its a per device/API question if a thread is needed or if the
> device/API has buffers that are large enough.
>
> the JACK patch already uses a seperate thread but possibly should use a
> larger buffer ...
>
> adding a seperate thread to anything that has less than 500ms worth of
> buffers is welcome. I also suspect&suspected in the past that lack of this
> is the cause of many issues with capturing with ffmpeg.
Another solution could be to add generic code that can create a thread for
any device, and let the user decide for each input if he wants to put it in
a separate thread.
I am not sure I understand what buffer problem you are thinking about. The
code as I imagine it would be something like that:
For each thread:
while (1) {
packet = calloc(...);
av_read_frame(device, packet);
message_queue_add(device, packet);
}
and the main loop:
while (1) {
message_queue_get(&device, &packet);
/* do something with the packet */
}
Then no packets would accumulate anywhere.
> if by message que you mean the stuff from posix then i must say i would
> prefer the kind of fifo/ringbuffer i suggested for jack unless i missed some
> issues with it.
You mean the SysV msgget/msgctl stuff? I was definitely not thinking of
them. I just meant the combination of a queue (FIFO) data structure with a
mutex and a condition (using the pthread vocabulary; any equivalent API
would do).
Regards,
--
Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090303/abb6a7e5/attachment.pgp>
More information about the ffmpeg-devel
mailing list