mplayer 首先调用open_stream_full其参数Mode 和 options都为0
open_stream_full 将根据网络协议在 auto_open_streams 中搜索不同的stream info,对于live555 server , 由于通用的rtsp stream info不能够识别出 server的类型。所以会继续往下搜索也就会搜索到livestream ,也就会调用open_live_rtsp_sip 次函数在stream/stream_live555.c 中。
其中返回的file_format 将存储在mpctx->file_format 并且传送到demux_open函数中。
demux_open 会调用demux_rtp.cpp:demux_open_rtp , 并且在rtpCodecInitialize_audio和rtpCodecInitialize_video中获得sh_video->format, 这个值是根据subsession->codecName 获得的.
vo 的调用关系:
preinit: is called by init_best_video_out <--reinit_video_chain <--Main
下面调用control in mpcodecs_config_vo <--init_vo
随后将调用vf_vo.c的query_format 根据当前的格式,更新flags.
video_out.c 中将调用config_video_out 将调用vo->control(VOCTRL_UPDATE_SCREENINFO, NULL),然后在调用vo 的config
从上面的分析知道,我们需要好好的研究一下vf_vo.c,它调用的大部分的vo的函数。
阅读(1084) | 评论(0) | 转发(0) |