vlc代码分析(3)——输入模块
来源:互联网 发布:tcp ip的网络层是面向 编辑:程序博客网 时间:2024/05/22 02:16
输入模块的Code Path,看来主要的分析还是在demux和access模块的分析。现在的code path只是大致的模块
input_CreateThread2 ---> Create() ---->Run() ---->Init()
vlm.c input.c input.c input.c
---->input_EsOutNew()
input.c
---->[1]InputSourceInit
input.c
1)-->demux2_New --->__demux2_New -->module_Need( p_demux, "access_demux", psz_module)
Demux.c
2)(input_source_t *in)->p_demux = demux2_New()
3) /* Get infos from access_demux */
demux2_Control( in->p_demux,
DEMUX_GET_PTS_DELAY, &i_pts_delay );
---->InputSourceInit (Can't get demux directly)
1)-->access2_New --->access2_InternalNew -->module_Need( p_access, "access_filter", psz_access, VLC_FALSE );
Access.c
2)-->access2_FilterNew --->access2_InternalNew -->module_Need( p_access, "access_filter", psz_access, VLC_FALSE );
3) /* Get infos from access */
4)-->stream_AccessNew()
5)-->demux2_New()
---->[2]
1)set variant about the input
2)/* Start title/chapter */
input_ControlPush( p_input, INPUT_CONTROL_SET_TITLE, &val );
Input_internal.h
3)/* Load subtitles */
/* Get fps and set it if not already set */
var_Create( p_input, "sub-original-fps", VLC_VAR_FLOAT );
var_SetFloat( p_input, "sub-original-fps", f_fps );
4)/* Look for and add subtitle files */
sub = InputSourceNew( p_input );
if( !InputSourceInit( p_input, sub, psz_subtitle, "subtitle",
VLC_FALSE ) )
5)/* Look for slave */
slave = InputSourceNew( p_input );
if( !InputSourceInit( p_input, slave, psz, NULL, VLC_FALSE ) )
6) /* Set up es_out */
es_out_Control( p_input->p_es_out, ES_OUT_SET_ACTIVE, VLC_TRUE );
---> MainLoop()
while( !p_input->b_die && !p_input->b_error && !p_input->input.b_eof )
{
if( p_input->input.b_title_demux &&
p_input->input.p_demux->info.i_update )
{
i_ret = UpdateFromDemux( p_input );
b_force_update = VLC_TRUE;
}
else if( !p_input->input.b_title_demux &&
p_input->input.p_access &&
p_input->input.p_access->info.i_update )
{
i_ret = UpdateFromAccess( p_input );
b_force_update = VLC_TRUE;
}
}
/* We have finish to demux data but not to play them */
--->End ()
- vlc代码分析(3)——输入模块
- vlc代码分析(3)——输入模块
- vlc 代码分析(2)——vlc中vlm介绍
- vlc 代码分析(1)——框架分析
- vlc模块分析查看
- vlc代码分析(4)——mpgv的demux
- vlc代码分析(4)——mpgv的demux
- VLC代码分析之一
- VLC代码分析(序)
- vlc-android代码分析一
- Ceph网络模块(3)——AsyncMessenger代码流程分析
- Ceph网络模块(3)——AsyncMessenger代码流程分析
- VLC代码分析(一)代码风格
- <备忘1005> VLC代码分析之一
- gloox代码分析3 - 注册模块
- Android VLC播放器二次开发1——程序结构分析
- Android VLC播放器二次开发1——程序结构分析
- Android VLC播放器二次开发1——程序结构分析
- 中国部分黑客资料
- sybase总结
- 使用 Spring 更好地处理 Struts 动作
- JDK Timer实现任务的调度举例
- 圣诞节前夜(随写)
- vlc代码分析(3)——输入模块
- 应聘C++软件工程师之常见要求
- 软考感言
- 欲说还休
- 程序员的成长的六个阶段
- Merry Christmas
- 床上
- 什么是PMP认证?
- 优化你的Google AdSense,增加你的收入