]> git.sesse.net Git - vlc/commitdiff
Added support for language in asf (close #3292).
authorLaurent Aimar <fenrir@videolan.org>
Sat, 13 Feb 2010 20:56:34 +0000 (21:56 +0100)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 13 Feb 2010 20:59:04 +0000 (21:59 +0100)
modules/demux/asf/asf.c

index e75a1ba95c270265303656d0db7acc918d8b2a6b..d09b0a1edde2e98a7550c9168899b77ee277bc56 100644 (file)
@@ -736,6 +736,10 @@ static int DemuxInit( demux_t *p_demux )
     asf_object_t *p_hdr_ext = ASF_FindObject( p_sys->p_root->p_hdr,
                                               &asf_object_header_extension_guid, 0 );
 
+    asf_object_language_list_t *p_languages = NULL;
+    if( p_hdr_ext )
+        p_languages = ASF_FindObject( p_hdr_ext, &asf_object_language_list, 0 );
+
     for( unsigned i_stream = 0; i_stream < p_sys->i_track; i_stream++ )
     {
         asf_track_t    *tk;
@@ -946,6 +950,16 @@ static int DemuxInit( demux_t *p_demux )
         tk->i_cat = fmt.i_cat;
         if( fmt.i_cat != UNKNOWN_ES )
         {
+            if( p_esp && p_languages &&
+                p_esp->i_language_index >= 0 &&
+                p_esp->i_language_index < p_languages->i_language )
+            {
+                fmt.psz_language = strdup( p_languages->ppsz_language[p_esp->i_language_index] );
+                char *p;
+                if( fmt.psz_language && (p = strchr( fmt.psz_language, '-' )) )
+                    *p = '\0';
+            }
+
             tk->p_es = es_out_Add( p_demux->out, &fmt );
         }
         else