文档章节

ffmpeg avformat

shengjuntu
 shengjuntu
发布于 2016/07/05 21:40
字数 198
阅读 25
收藏 0

ffmpeg也就是定义接口:

AVInputFormat。

找了一个简单的例子,

static const AVClass sln_demuxer_class = {
    .class_name = "sln demuxer",
    .item_name  = av_default_item_name,
    .option     = sln_options,
    .version    = LIBAVUTIL_VERSION_INT,
};

AVInputFormat ff_sln_demuxer = {
    .name           = "sln",
    .long_name      = NULL_IF_CONFIG_SMALL("Asterisk raw pcm"),
    .priv_data_size = sizeof(PCMAudioDemuxerContext),
    .read_header    = pcm_read_header,
    .read_packet    = ff_pcm_read_packet,
    .read_seek      = ff_pcm_read_seek,
    .flags          = AVFMT_GENERIC_INDEX,
    .extensions     = "sln",
    .raw_codec_id   = AV_CODEC_ID_PCM_S16LE,
    .priv_class     = &sln_demuxer_class,
};

随后我想看看这个符号 ff_sln_demuxer 是如何加到一个容器在中,猜测用有一个列表或者字典把所有的AVInputFormat对象管理起来。搜索一下符号 ff_sln_demuxer 发现没有,

很是奇怪。


#define REGISTER_DEMUXER(X, x)                                          \
    {                                                                   \
        extern AVInputFormat ff_##x##_demuxer;                          \
        if (CONFIG_##X##_DEMUXER)                                       \
            av_register_input_format(&ff_##x##_demuxer);                \
    }

最后在函数void av_register_all(void)中找到了对 REGISTER_DEMUXER 定义,

这个用extern AVInputFormat  ff_ ##x##_demuxer ; 拼出来名字。

ff_sln_demuxer

    REGISTER_DEMUXER (SLN,              sln);

对宏的适当运用少了好多啰嗦代码。

 

 

 

© 著作权归作者所有

共有 人打赏支持
上一篇: ffmpeg-avformat
下一篇: ffmpeg-avutil-fifo
shengjuntu
粉丝 14
博文 85
码字总数 16753
作品 0
上海
程序员
私信 提问
ffmpeg库使用,undefined reference错误

ffmpeg用g++编译时的注意事项 编译时出现以下错误: 错误一: undefined reference to av_register_all()' undefined reference toavformat_open_input(AVFormatContext**, char const*, AV......

BeyondWXF
2018/10/18
0
0
关于ffmpeg的动态链接库问题

本人最近在搞FMJ播放器的东西,其中要用到ffmpeg的动态链接库,本人之前在网上通过下载ffmpeg的源码,已经成功编译过一系列的dll文件,如下:avformat-52.dll,avcodec-52.dll,avdevice-52...

linlintwl
2011/04/17
3.1K
2
最简单的基于FFMPEG的Helloworld程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leixiaohua1020/article/details/46889849 ===================================================== 最简单的...

雷霄骅
2015/07/17
0
0
利用FFmpeg和管道(pipe),解决非URL和非文件的输入形式

利用FFmpeg和管道(pipe),解决非URL和非文件的输入形式 问题描述:利用FFmpeg来解码,但是输入方式不是URL,也不是文件系统中的文件,而是内存中的buffer。 解决此问题有两个思路,首先明确...

Michael_Yuan
2012/07/10
0
1
最简单的基于FFmpeg的AVDevice例子(屏幕录制)

原文地址:http://blog.csdn.net/leixiaohua1020/article/details/39706721 雷神的博客,致敬雷神。 抓屏方法 上篇文章记录了libavdevice的使用方法,本文不再重复。在Windows系统使用libav...

zwg流泪
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部