vlc 3.0使用ffmpeg硬解码流程 源码
时间: 2023-11-16 09:05:35 浏览: 234
ffmpeg解码流程
VLC 3.0使用FFmpeg硬解码的流程源码与之前版本的略有不同,以下是大致流程代码:
1. 检测硬件能力:
```c
// vlc源码中的modules/codec/avcodec/va.c文件
// 检测硬件能力的函数
vlc_va_Get(vlc_object_t *obj, const char *name, const char *va, unsigned *count)
{
// ...
// 检测硬件能力的代码
// ...
}
```
2. 视频解码器初始化:
```c
// vlc源码中的modules/codec/avcodec/video.c文件
// 初始化视频解码器的函数
static int OpenDecoder(vlc_decoder_device *dec_device)
{
// ...
// 初始化视频解码器的代码
// ...
}
```
3. 数据解码:
```c
// vlc源码中的modules/codec/avcodec/video.c文件
// 解码视频数据的函数
static picture_t *DecodeBlock(decoder_t *dec, block_t **block)
{
// ...
// 解码视频数据的代码
// ...
}
```
4. 视频渲染:
```c
// vlc源码中的modules/video_output/opengl/converter.c文件
// 视频渲染函数
static void Render(opengl_video_t *v, picture_t *picture)
{
// ...
// 视频渲染的代码
// ...
}
```
以上代码只是VLC 3.0使用FFmpeg硬解码的流程的简化版,实际上VLC的代码涉及到更多的细节和处理,具体实现还需要参考更多的源代码。
阅读全文