[Ffmpeg-devel] Decoding from blocks

Emanuele Fumagalli emanuele.fumagalli
Tue Jan 16 10:48:30 CET 2007

>> thanks, in my case I download sequentially the block so (block1, 
>> block2...)
>> which are all buffer in memory(or saved as files on disk), what I'm 
>> trying
>> to understand is how to start the decoding since I've no full video file
>> but just blocks, do I have to use av_open_input_stream or
>> av_open_input_file?

>1. implement a URLProtocol
>2. register it
>3. use av_open_input_file()
>4. try to read the source code if you have questions
>5. help improving the documentation

Thanks a lot! I implemented my own URLProtocol and now I can intercept all 
the access to file.
I'm still having some difficulties because sometimes I get on my seek a call 
for a
offset=0 and whence=65536 (In this case I just return -1)
followed by another request for
offset=-1 and whence=2

I don't know if my problem is due to the fact that I'm using fopen, fread, 
fseek (I'm on windows) or do I have to do something particular on those seek 

thanks in advance

Here my code for clarity (for the moment I'm just trying to reproduce 
URLProtocol file_protocol found in file.c, avoiding my blocks)

static FILE *pFile = NULL;

static int my_file_open(URLContext *h, const char *filename, int flags)
 pFile=fopen("C:\\a.avi", "rb");
  return -1;
 return 0;

static int my_file_read(URLContext *h, unsigned char *buf, int size)
 size_t p = fread(buf, 1, size, pFile);
 return p;

static int my_file_write(URLContext *h, unsigned char *buf, int size)
 return 0;

static offset_t my_file_seek(URLContext *h, offset_t pos, int whence)
 if(whence < 3)
  return fseek(pFile, pos, whence);
  return -1;

static int my_file_close(URLContext *h)
  return fclose(pFile);
  return 0;

URLProtocol my_file_protocol = {

More information about the ffmpeg-devel mailing list