学习ffmpeg.c过程中遇上的系列问题
来源:互联网 发布:js把 quot 转义双引号 编辑:程序博客网 时间:2024/05/22 17:15
对ffmpeg的以下几个线程有关的api所涉及的机制不太懂:
int avcodec_thread_init(AVCodecContext *s, int thread_count);
void avcodec_thread_free(AVCodecContext *s);
int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret,
int count, int size);
int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg,
int *ret, int count);
在ffmpeg.c里,只调用到了avcodec_thread_init()这个函数
如在
static void new_video_stream(AVFormatContext *oc)
函数3213行里:
avcodec_thread_init(st->codec, thread_count;
其他2个函数
avcodec_thread_free是在avcodec_thread_init里调用
avcodec_default_execute,avcodec_default_execute2是在avcodec_get_context_defaults2赋值
void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType codec_type){
... ...
s->execute= avcodec_default_execute;
s->execute2= avcodec_default_execute2;
... ...
};
我猜的是这样的:
ffmpeg转换时,支持多线程,那么api暴露出来的函数avcodec_thread_init,
设置线程数,那么内部则通过s->execute这个字段来做多线程的工作.
即当我使用以下命令时:
{ "threads", OPT_FUNC2 | HAS_ARG | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
如:
ffmpeg -i a.flv -threads 5 a.avi
ffmpeg内部自动开了5条线程来进行转换?
不知道我理解得对不对?但同时,我有疑问的是,
是不是线程安全,信号量,ffmpeg已经做好了的.比如,即使,我要在UI界面里,操作控件,将转换进度等信息表现出来,
都可以直接使用的,而不用在UI界面里要考滤同步的问题?
同时,怎么没有设置线程优先级之类的函数.呵呵,我是在windows下编程的,可能这个问题有点没水平,不清楚linux的情形.
int avcodec_thread_init(AVCodecContext *s, int thread_count);
void avcodec_thread_free(AVCodecContext *s);
int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret,
int count, int size);
int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg,
int *ret, int count);
在ffmpeg.c里,只调用到了avcodec_thread_init()这个函数
如在
static void new_video_stream(AVFormatContext *oc)
函数3213行里:
avcodec_thread_init(st->codec, thread_count;
其他2个函数
avcodec_thread_free是在avcodec_thread_init里调用
avcodec_default_execute,avcodec_default_execute2是在avcodec_get_context_defaults2赋值
void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType codec_type){
... ...
s->execute= avcodec_default_execute;
s->execute2= avcodec_default_execute2;
... ...
};
我猜的是这样的:
ffmpeg转换时,支持多线程,那么api暴露出来的函数avcodec_thread_init,
设置线程数,那么内部则通过s->execute这个字段来做多线程的工作.
即当我使用以下命令时:
{ "threads", OPT_FUNC2 | HAS_ARG | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
如:
ffmpeg -i a.flv -threads 5 a.avi
ffmpeg内部自动开了5条线程来进行转换?
不知道我理解得对不对?但同时,我有疑问的是,
是不是线程安全,信号量,ffmpeg已经做好了的.比如,即使,我要在UI界面里,操作控件,将转换进度等信息表现出来,
都可以直接使用的,而不用在UI界面里要考滤同步的问题?
同时,怎么没有设置线程优先级之类的函数.呵呵,我是在windows下编程的,可能这个问题有点没水平,不清楚linux的情形.
http://www.chinavideo.org/viewthread.php?tid=10391&extra=page%3D2
- 学习ffmpeg.c过程中遇上的系列问题
- 学习Linux C过程中要解决的问题
- 安装ffmpeg过程中可能会遇到的问题详解
- ffmpeg 音频视频 使用过程中碰到的问题记录
- HQL遇上的问题
- 学习ffmpeg官方示例代码transcoding.c遇到的问题
- 在mapred程序中调用pymongo遇上的问题
- 关于web开发中遇上问题的总结
- ffmpeg学习(1)----下载及安装中遇到的问题
- win 7遇上的问题
- ffmpeg编译过程遇到的问题
- caffe的搭建过程以及遇上的各种问题的汇总
- maven学习过程中问题的解决
- C#学习过程中遇到的问题
- 在学习过程中遇到的问题
- Makefile学习过程中遇到的问题
- Selenium学习过程中碰到的问题
- 学习过程中碰到的问题集锦
- ffmpeg中关于read_probe(AVProbeData *)函数的问题
- FormatMessage
- 信息发布类网站后台界面设计一点思考(列表和操作按钮)
- 动态规划之最长公共子序列
- Netlink实现网卡上下线监控
- 学习ffmpeg.c过程中遇上的系列问题
- 某算法竞赛题——把一个二进制的串转换为十进制整数
- CentOS下安装python-mysqldb
- ios图片缓存播放
- 如何用多线程实现多路视频 音频的编码 解码
- 第一门编程语言选谁?
- 雨中飘荡的回忆
- ffmpeg教程
- ffmpeg整体框架介绍文档