avio_alloc_context//read_data回调函数的疑点!

avio_alloc_context//read_data回调函数的疑问!!!
pb = avio_alloc_context(buffer,BUF_SIZE,0,this,read_data,NULL,NULL);
if(av_probe_input_buffer(pb,&piFmt,"",NULL,0,0) < 0)
{
    //read_data回调函数会被调用12次;按照一定规律调用;地址与大小也是有规律的!
    //多线程调试实在是不方便。比如俩个线程打断点;俩个线程的断点不能及时的切换
}


int read_data(void* opaue,uint8_t* buf,int buf_size)
{        
     1 1 2 4 6 8  1 1 2 4 6 8循环俩次buf_size大小变化规律
      按照2^n-1的规律调用1 1 2 4 6 8  循环两次
     BUF_SIZE 1024*32的大小 1024*32 1024*32 1024*32*2 ........ 循环调用俩次
    //buf 地址  1 1 时地址是0x076de235   2 4 6 8时,地址就不一样
     第二次循环 地址 与第一次循环的地址相同的!
}

[code=c]
我将数据读完之后是1024*32*16大小
if(avformat_open_input(&pFmt,"",piFmt,NULL)<0)
{
     return -1;//连返回值都没有,这个函数就退出了!!!
}

[/code]

------解决方案--------------------
if(avformat_open_input(&pFmt,"",piFmt,NULL)<0)
{
     return -1;//连返回值都没有,这个函数就退出了!!!
}
else
{
//补全之后调试看看。应该是到这里了。
}