av_bsf_receive_packet 源码位置
时间: 2023-08-02 19:07:15 浏览: 87
`av_bsf_receive_packet()` 函数是 FFmpeg 中位于 `libavcodec/bsf.c` 文件中的一个函数,用于从比特流过滤器的输出中获取一个包。
以下是该函数的源码:
```c
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt)
{
int ret;
if (!ctx || !pkt)
return AVERROR(EINVAL);
if (ctx->eof)
return AVERROR_EOF;
if (ctx->internal->draining) {
if (!av_fifo_size(ctx->internal->buffer))
return AVERROR_EOF;
ret = bsf_nomore_data(ctx);
if (ret < 0)
return ret;
} else {
ret = bsf_get_packet(ctx);
if (ret < 0)
return ret;
}
*pkt = ctx->internal->pkt;
av_packet_unref(&ctx->internal->pkt);
return 0;
}
```
请注意,`av_bsf_receive_packet()` 函数依赖于比特流过滤器的内部实现,如 `bsf_nomore_data()` 和 `bsf_get_packet()` 函数。因此,如果您要使用该函数,还需要了解比特流过滤器的相关实现。
阅读全文