A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://ffmpeg.org/pipermail/ffmpeg-devel/2007-January/027444.html below:

[Ffmpeg-devel] Decoding from blocks

[Ffmpeg-devel] Decoding from blocksEmanuele 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 
requests?

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");
 if(pFile==NULL)
  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);
 else
  return -1;
}

static int my_file_close(URLContext *h)
{
 if(pFile)
  return fclose(pFile);
 else
  return 0;
}

URLProtocol my_file_protocol = {
 "test",
 my_file_open,
 my_file_read,
 my_file_write,
 my_file_seek,
 my_file_close,
};





More information about the ffmpeg-devel mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4