
int packet_queue_put(PacketQueue *queue, AVPacket *packet)
{
AVPacketList *pkt_list;
// ???
if (av_dup_packet(packet) < 0)
{
return -1;
}
pkt_list = (AVPacketList *)av_malloc(sizeof(AVPacketList));
if (pkt_list == NULL)
{
return -1;
}
pkt_list->pkt = *packet;
pkt_list->next = NULL;
//上锁
SDL_LockMutex(queue->mutex);
if (queue->last_pkt == NULL) //空队
{
queue->first_pkt = pkt_list;
}
else
{
queue->last_pkt->next = pkt_list;
}
queue->last_pkt = pkt_list; //这里queue->last_pkt = queue->last_pkt->next 的意思,但是,处理了更多的情况。
queue->nb_packets++;
queue->size += packet->size;
SDL_CondSignal(queue->cond); //???
SDL_UnlockMutex(queue->mutex);
return 0;
}
{
AVPacketList *pkt_list;
// ???
if (av_dup_packet(packet) < 0)
{
return -1;
}
pkt_list = (AVPacketList *)av_malloc(sizeof(AVPacketList));
if (pkt_list == NULL)
{
return -1;
}
pkt_list->pkt = *packet;
pkt_list->next = NULL;
//上锁
SDL_LockMutex(queue->mutex);
if (queue->last_pkt == NULL) //空队
{
queue->first_pkt = pkt_list;
}
else
{
queue->last_pkt->next = pkt_list;
}
queue->last_pkt = pkt_list; //这里queue->last_pkt = queue->last_pkt->next 的意思,但是,处理了更多的情况。
queue->nb_packets++;
queue->size += packet->size;
SDL_CondSignal(queue->cond); //???
SDL_UnlockMutex(queue->mutex);
return 0;
}
只有本站会员才能查看附件,请 登录
找不到av_dup_packet(packet)函数
只有本站会员才能查看附件,请 登录
注释掉,程序就可以播放了。。。
只有本站会员才能查看附件,请 登录
播放完成,,,av_dup_packet(packet)函数,,,,的作用是什么呀???