diff --git a/fftools/ffplay.c b/fftools/ffplay.c index e7b20be76b..ac48d8765d 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -115,7 +115,7 @@ typedef struct MyAVPacketList { } MyAVPacketList; typedef struct PacketQueue { - AVFifoBuffer *pkt_list; + AVFifo *pkt_list; int nb_packets; int size; int64_t duration; @@ -424,19 +424,18 @@ int64_t get_valid_channel_layout(int64_t channel_layout, int channels) static int packet_queue_put_private(PacketQueue *q, AVPacket *pkt) { MyAVPacketList pkt1; + int ret; if (q->abort_request) return -1; - if (av_fifo_space(q->pkt_list) < sizeof(pkt1)) { - if (av_fifo_grow(q->pkt_list, sizeof(pkt1)) < 0) - return -1; - } pkt1.pkt = pkt; pkt1.serial = q->serial; - av_fifo_generic_write(q->pkt_list, &pkt1, sizeof(pkt1), NULL); + ret = av_fifo_write(q->pkt_list, &pkt1, 1); + if (ret < 0) + return ret; q->nb_packets++; q->size += pkt1.pkt->size + sizeof(pkt1); q->duration += pkt1.pkt->duration; @@ -477,7 +476,7 @@ static int packet_queue_put_nullpacket(PacketQueue *q, AVPacket *pkt, int stream static int packet_queue_init(PacketQueue *q) { memset(q, 0, sizeof(PacketQueue)); - q->pkt_list = av_fifo_alloc(sizeof(MyAVPacketList)); + q->pkt_list = av_fifo_alloc2(1, sizeof(MyAVPacketList), AV_FIFO_FLAG_AUTO_GROW); if (!q->pkt_list) return AVERROR(ENOMEM); q->mutex = SDL_CreateMutex(); @@ -499,10 +498,8 @@ static void packet_queue_flush(PacketQueue *q) MyAVPacketList pkt1; SDL_LockMutex(q->mutex); - while (av_fifo_size(q->pkt_list) >= sizeof(pkt1)) { - av_fifo_generic_read(q->pkt_list, &pkt1, sizeof(pkt1), NULL); + while (av_fifo_read(q->pkt_list, &pkt1, 1) >= 0) av_packet_free(&pkt1.pkt); - } q->nb_packets = 0; q->size = 0; q->duration = 0; @@ -513,7 +510,7 @@ static void packet_queue_flush(PacketQueue *q) static void packet_queue_destroy(PacketQueue *q) { packet_queue_flush(q); - av_fifo_freep(&q->pkt_list); + av_fifo_freep2(&q->pkt_list); SDL_DestroyMutex(q->mutex); SDL_DestroyCond(q->cond); } @@ -551,8 +548,7 @@ static int packet_queue_get(PacketQueue *q, AVPacket *pkt, int block, int *seria break; } - if (av_fifo_size(q->pkt_list) >= sizeof(pkt1)) { - av_fifo_generic_read(q->pkt_list, &pkt1, sizeof(pkt1), NULL); + if (av_fifo_read(q->pkt_list, &pkt1, 1) >= 0) { q->nb_packets--; q->size -= pkt1.pkt->size + sizeof(pkt1); q->duration -= pkt1.pkt->duration;