Hi All
I am trying to implement a buffered solution using AVIOContext and
AVFifoBuffer but I am getting an AccessViolationException on the call to
"avformat_open_input".
Here is the read_packet method
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
{
AVFifoBuffer *circularBuf = (AVFifoBuffer*)opaque;
int amountInBuffer = av_fifo_size(circularBuf);
if (amountInBuffer >= buf_size)
av_fifo_generic_read(circularBuf, buf, buf_size, NULL);
amountInBuffer = av_fifo_size(circularBuf);
return buf_size;
}
And here is the logic that's failing (last line throws the Exception)
//load FFMPEG
av_register_all();
avdevice_register_all();
//allocate a FormatContext and a circular buffer for handling user
data
AVFormatContext *context = avformat_alloc_context();
circularBuf = av_fifo_alloc(1024 * 1024 * 10);
//allocate FFMPEG's data buffer and create the IOContext for
custom data I/O
uint8_t *buffer = (uint8_t*)av_malloc(bufferSize);
AVIOContext *ioContext = avio_alloc_context(buffer, bufferSize, 0,
circularBuf, read_packet, NULL, NULL);
ioContext->seekable = 0;
context->pb = ioContext;
formatContext = context;
AddData(data, 0);
//FFMPEG will start reading from the buffer from here
int err = avformat_open_input(&context, NULL, NULL, NULL);
I have tried various data input (flv, mpeg4, image,...) but they all
fail with the same thing.
Is there something else I should be doing?
Thanks guys,
Mark.
_______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api