8-3 player.c 的FrameQueue写得有问题,生产和消费Frame不对,不管生产直接消费?

来源:8-22 一个真正的播放器(三)

iStream

2024-07-04

1.在player.c 第281~284 没有管生产Frame ,直接一股脑的消费

static Frame *frame_queue_peek(FrameQueue *fq)
{
    return &fq->queue[fq->rindex];
}

这个问题希望老师看一,看看我理解的对不对,

2.是不是还要加上这一个函数,生产和消费才对

static Frame *frame_queue_peek_readable(FrameQueue *f)

3.希望老在查一下8~3得代码,问题很多

写回答

1回答

李超

2024-07-04

没问题,消费线程只管消费,只要对列里有数据就拿出来消费。这是生产-消费的一种变形, 不是生产一个就要消费一个。你可以思考一个问题,如果生产者在生产产品,生产后通知了消费者,但消费者正在忙优先级更高的事儿,消费者当然可以不理生产者的消息,等它忙完了再去对列里取。另外对列是有长度限制的,当生产者生产到一定数量,对列满了也就停止了

0
3
iStream
非常感谢!
2024-07-06
共3条回复

经典再升级-FFmpeg5.0核心技术精讲,打造音视频播放器

学好FFmpeg核心技术,做高效,高薪,有竞争力的音视频工程师

2726 学习 · 814 问题

查看课程