昨天发现的问题,在解码ape文件的时候,解码没几回就出现了EOF,但是文件肯定是还没有读完的。一开始以为是解码出现的问题,后来测试其他格式的文件解码没有问题,唯独ape这块儿有这个问题。
今天调试的时候,发现ape读出来的paket size很大,而且发现通过avcodec_decode_audio4来解码数据的时候,返回值总是0。于是猜想,是不是可能包没有解码玩就丢弃了。
然后,通过进一步调试,发现自己解码的处理逻辑上有点问题(在原有的处理逻辑下,数据包只会循环解码2次就丢弃了,根本没有去判断这个数据包是否还可以继续解码)。修改了下逻辑,再次运行,果然没有问题了。
至于ape文件解码,为什么连续读包就出现EOF的原因,只是测试了下packet的使用情况,并没有时间去深入源码去看了。
测试结果如下: