函数声明
/**
* Allocate an AVPacket and set its fields to default values. The resulting
* struct must be freed using av_packet_free().
* 分配AVPacket内存并设置成员变量的默认值。该函数的返回值必须通过av_packet_free进行释放。
*
* @return An AVPacket filled with default values or NULL on failure.
*
* @note this only allocates the AVPacket itself, not the data buffers. Those
* must be allocated through other means such as av_new_packet.
*
* @注意 该函数只分配AVPacket结构自己,不是数据缓存。数据缓存需要通过av_new_packet函数
* 进行分配。
* @see av_new_packet
*/
AVPacket *av_packet_alloc(void);
函数定义
AVPacket *av_packet_alloc(void)
{
AVPacket *pkt = av_mallocz(sizeof(AVPacket));
if (!pkt)
return pkt;
av_init_packet(pkt);
return pkt;
}
- av_mallocz申请AVPacket结构体,并将内存全部设置为0值
- 通过av_init_packet初始化AVPacket
void av_init_packet(AVPacket *pkt)
{
pkt->pts = AV_NOPTS_VALUE;
pkt->dts = AV_NOPTS_VALUE;
pkt->pos = -1;
pkt->duration = 0;
#if FF_API_CONVERGENCE_DURATION
FF_DISABLE_DEPRECATION_WARNINGS
pkt->convergence_duration = 0;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
pkt->flags = 0;
pkt->stream_index = 0;
pkt->buf = NULL;
pkt->side_data = NULL;
pkt->side_data_elems = 0;
}