Esempio n. 1
0
AVPacket * file_decoder::build_avpkt(AVPacket *avpkt)
{
    static unsigned char buffer[1*1024*1024];
    static int readptr = 0;
    static int writeptr = 0;
    int len,toread;
    //AVPacket * avpkt = new AVPacket;
    //av_init_packet(avpkt);

    int nexthead;

    if (writeptr - readptr < 200 * 1024)
    {
        memmove(buffer, &buffer[readptr], writeptr - readptr);
        writeptr -= readptr;
        readptr = 0;
        toread = FILE_READING_BUFFER - writeptr;
        len = (int) fread(&buffer[writeptr], 1, toread, fp);
        writeptr += len;
    }

    nexthead = _find_head(&buffer[readptr], writeptr-readptr);

    if (nexthead == 0)
    {
        //printf("failed find next head...\n");
        nexthead = writeptr - readptr;
    }

    avpkt->size = nexthead;
    avpkt->data = &buffer[readptr];
    readptr += nexthead;
    return avpkt;
}
Esempio n. 2
0
static void build_avpkt(AVPacket *avpkt,FILE *fp)   
{   
#if 0   
	int len;   
	static unsigned  char buffer[INBUF_SIZE];   
	len =fread(buffer, 1, INBUF_SIZE, fp);  
	avpkt->data = buffer;  
	avpkt->size = len;  
#else   
	static unsigned  char buffer[1*1024*1024];   
	static int  readptr = 0;   
	static int  writeptr = 0;   
	int len,toread;   
    
	int nexthead;   
    
	if(writeptr - readptr < 200 * 1024)   
	{  
		memmove(buffer, &buffer[readptr], writeptr - readptr);  
		writeptr -= readptr;  
		readptr = 0;  
		toread = FILE_READING_BUFFER - writeptr;  
		len =fread(&buffer[writeptr], 1, toread, fp);  
		writeptr += len;  
	}  
    
	nexthead = _find_head(&buffer[readptr], writeptr-readptr);  
	if(nexthead == 0)   
	{  
		printf("failed find next head.../n");  
		nexthead = writeptr - readptr;  
	}  
    
	avpkt->size = nexthead;  
	avpkt->data = &buffer[readptr];  
	readptr += nexthead;  
#endif   
}