[FFmpeg-devel] v4l2: bug #1570 and possible solution
Giorgio Vazzana
mywing81 at gmail.com
Tue Feb 12 18:14:49 CET 2013
2013/2/12 Giorgio Vazzana <mywing81 at gmail.com>:
> 2013/2/12 Michael Niedermayer <michaelni at gmx.at>:
>> On Tue, Feb 12, 2013 at 12:40:21PM +0100, Giorgio Vazzana wrote:
>>> 2013/2/12 Michael Niedermayer <michaelni at gmx.at>:
>>> +static void mmap_release_buffer(AVPacket *pkt)
>>> +{
>>> + struct buff_data *buf_descriptor = pkt->priv;
>>> +
>>> + if (pkt->data == NULL)
>>> + return;
>>> +
>>> + if (buf_descriptor->buffer_copied) {
>>> + av_free(pkt->data);
>>> + } else {
>>> + if (!enqueue_buffer(buf_descriptor->fd, buf_descriptor->index))
>>
>>> + (*buf_descriptor->buffers_dequeued)--;
>>
>> the deallocation of packets could happen from different thread(s)
>> so i think this needs either a mutex, an atomic decrement or some
>> lockless algorithm to achive the same
>
> Ok, I've tried to implement the solution using the mutex. Please comment.
Sorry, this was a previous version of the patch, the latest one is attached.
> We can use this approach, or the easiest (and slightly slower?)
> solution would be copying every frame/buffer to the memory allocated
> for the corresponding packet.
>
> Giorgio Vazzana
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lavd-v4l2-copy-frames-into-normally-allocated-packet.patch
Type: application/octet-stream
Size: 5933 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130212/35cb7bd1/attachment.obj>
More information about the ffmpeg-devel
mailing list