Commit af2d829d authored by Gilles Chanteperdrix's avatar Gilles Chanteperdrix Committed by 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: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 6a06a82a
......@@ -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 );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment