vlc | branch: master | Gilles Chanteperdrix <[email protected]> | Wed Dec 18 13:07:12 2013 +0000| [af2d829d7d7c509a1b34cdbc28a71584b2aa8a62] | committer: Jean-Baptiste Kempf
live555: retrieve RTSP track languages from SDP First for the "a=lang:" session attribute, then for each subsession look for the same attribute, and use the session attribute if none was found. Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=af2d829d7d7c509a1b34cdbc28a71584b2aa8a62 --- modules/access/live555.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/access/live555.cpp b/modules/access/live555.cpp index 824cdf2..88ddc2e 100644 --- a/modules/access/live555.cpp +++ b/modules/access/live555.cpp @@ -685,6 +685,8 @@ static int SessionsSetup( demux_t *p_demux ) unsigned int i_receive_buffer = 0; int i_frame_buffer = DEFAULT_FRAME_BUFFER_SIZE; unsigned const thresh = 200000; /* RTP reorder threshold .2 second (default .1) */ + const char *p_sess_lang = NULL; + const char *p_lang; b_rtsp_tcp = var_CreateGetBool( p_demux, "rtsp-tcp" ) || var_GetBool( p_demux, "rtsp-http" ); @@ -699,6 +701,20 @@ static int SessionsSetup( demux_t *p_demux ) return VLC_EGENERIC; } + if( strcmp( p_sys->p_sdp, "m=" ) != 0 ) + { + const char *p_sess_attr_end; + + p_sess_attr_end = strstr( p_sys->p_sdp, "\nm=" ); + if( !p_sess_attr_end ) + p_sess_attr_end = strstr( p_sys->p_sdp, "\rm=" ); + + p_sess_lang = p_sess_attr_end ? strstr( p_sys->p_sdp, "a=lang:" ) : NULL; + if( p_sess_lang && + p_sess_lang - p_sys->p_sdp > p_sess_attr_end - p_sys->p_sdp ) + p_sess_lang = NULL; + } + /* Initialise each media subsession */ iter = new MediaSubsessionIterator( *p_sys->ms ); while( ( sub = iter->next() ) != NULL ) @@ -1086,6 +1102,19 @@ static int SessionsSetup( demux_t *p_demux ) } } + /* Try and parse a=lang: attribute */ + p_lang = strstr( sub->savedSDPLines(), "a=lang:" ); + if( !p_lang ) + p_lang = p_sess_lang; + + if( p_lang ) + { + unsigned i_lang_len; + p_lang += 7; + i_lang_len = strcspn( p_lang, " \r\n" ); + tk->fmt.psz_language = strndup( p_lang, i_lang_len ); + } + if( !tk->b_quicktime && !tk->b_muxed && !tk->b_asf ) { tk->p_es = es_out_Add( p_demux->out, &tk->fmt ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
