今天写编码器的时候碰到的问题
运行,写入尾部剩余数据的时候发现有数据丢失,然后看输出日志看到如下信息:
[libfaac @ 0x102933800] Provided packet is too small, needs to be 245
第一眼看上去就知道是packet的问题,但是我的packet是新创建的怎么会有too small的问题呢?
后来一查头文件发现了问题所在。
/**
* Initialize optional fields of a packet with default values.
*
* Note, this does not touch the data and size members, which have to be
* initialized separately.
*
* @param pkt packet
*/
void av_init_packet(AVPacket *pkt);
av_init_packet 不会初始化data和datasize,这也就导致了报错。
修正代码如下:
AVPacket pkt;
memset(&pkt, 0, sizeof(AVPacket));
av_init_packet(&pkt);