@@ -152,9 +152,10 @@ void parse_ebml(FILE *file)
152152 read_vint_block_skip (file );
153153 MATROSKA_SWITCH_BREAK (code , code_len );
154154 default :
155- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
155+ if (code_len == MATROSKA_MAX_ID_LENGTH )
156+ {
156157 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
157- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
158+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
158159 // Skip just the unknown element, not the entire block
159160 read_vint_block_skip (file );
160161 // Reset code and code_len to start fresh with next element
@@ -232,9 +233,10 @@ void parse_segment_info(FILE *file)
232233 read_vint_block_skip (file );
233234 MATROSKA_SWITCH_BREAK (code , code_len );
234235 default :
235- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
236+ if (code_len == MATROSKA_MAX_ID_LENGTH )
237+ {
236238 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
237- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
239+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
238240 // Skip just the unknown element, not the entire block
239241 read_vint_block_skip (file );
240242 // Reset code and code_len to start fresh with next element
@@ -491,9 +493,10 @@ void parse_segment_cluster_block_group(struct matroska_ctx *mkv_ctx, ULLONG clus
491493 read_vint_block_skip (file );
492494 MATROSKA_SWITCH_BREAK (code , code_len );
493495 default :
494- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
496+ if (code_len == MATROSKA_MAX_ID_LENGTH )
497+ {
495498 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
496- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
499+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
497500 // Skip just the unknown element, not the entire block
498501 read_vint_block_skip (file );
499502 // Reset code and code_len to start fresh with next element
@@ -601,9 +604,10 @@ void parse_segment_cluster(struct matroska_ctx *mkv_ctx)
601604 read_vint_block_skip (file );
602605 MATROSKA_SWITCH_BREAK (code , code_len );
603606 default :
604- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
607+ if (code_len == MATROSKA_MAX_ID_LENGTH )
608+ {
605609 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
606- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
610+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
607611 // Skip just the unknown element, not the entire block
608612 read_vint_block_skip (file );
609613 // Reset code and code_len to start fresh with next element
@@ -876,18 +880,23 @@ void parse_segment_track_entry(struct matroska_ctx *mkv_ctx)
876880 lang_ietf = read_vint_block_string (file );
877881 mprint (" Language IETF: %s\n" , lang_ietf );
878882 // We'll store this for later use rather than freeing it immediately
879- if (track_type == MATROSKA_TRACK_TYPE_SUBTITLE ) {
883+ if (track_type == MATROSKA_TRACK_TYPE_SUBTITLE )
884+ {
880885 // Don't free lang_ietf here, store in track
881- if (lang != NULL ) {
886+ if (lang != NULL )
887+ {
882888 // If we previously allocated lang, free it as we'll prefer IETF
883889 free (lang );
884890 lang = NULL ;
885891 }
886892 // Default to "eng" if we somehow don't have a language yet
887- if (lang == NULL ) {
893+ if (lang == NULL )
894+ {
888895 lang = strdup ("eng" );
889896 }
890- } else {
897+ }
898+ else
899+ {
891900 free (lang_ietf ); // Free if not a subtitle track
892901 lang_ietf = NULL ;
893902 }
@@ -901,9 +910,10 @@ void parse_segment_track_entry(struct matroska_ctx *mkv_ctx)
901910 read_vint_block_skip (file );
902911 MATROSKA_SWITCH_BREAK (code , code_len );
903912 default :
904- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
913+ if (code_len == MATROSKA_MAX_ID_LENGTH )
914+ {
905915 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
906- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
916+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
907917 // Skip just the unknown element, not the entire block
908918 read_vint_block_skip (file );
909919 // Reset code and code_len to start fresh with next element
@@ -936,7 +946,7 @@ void parse_segment_track_entry(struct matroska_ctx *mkv_ctx)
936946 else
937947 {
938948 free (lang );
939- if (lang_ietf )
949+ if (lang_ietf )
940950 free (lang_ietf );
941951 if (codec_id_string )
942952 free (codec_id_string );
@@ -1029,9 +1039,10 @@ void parse_segment_tracks(struct matroska_ctx *mkv_ctx)
10291039 read_vint_block_skip (file );
10301040 MATROSKA_SWITCH_BREAK (code , code_len );
10311041 default :
1032- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
1042+ if (code_len == MATROSKA_MAX_ID_LENGTH )
1043+ {
10331044 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
1034- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
1045+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
10351046 // Skip just the unknown element, not the entire block
10361047 read_vint_block_skip (file );
10371048 // Reset code and code_len to start fresh with next element
@@ -1092,9 +1103,10 @@ void parse_segment(struct matroska_ctx *mkv_ctx)
10921103 read_vint_block_skip (file );
10931104 MATROSKA_SWITCH_BREAK (code , code_len );
10941105 default :
1095- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
1106+ if (code_len == MATROSKA_MAX_ID_LENGTH )
1107+ {
10961108 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
1097- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
1109+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
10981110 // Skip just the unknown element, not the entire block
10991111 read_vint_block_skip (file );
11001112 // Reset code and code_len to start fresh with next element
@@ -1108,17 +1120,17 @@ void parse_segment(struct matroska_ctx *mkv_ctx)
11081120
11091121char * generate_filename_from_track (struct matroska_ctx * mkv_ctx , struct matroska_sub_track * track )
11101122{
1111- char * buf = malloc (sizeof (char ) * 200 );
1112- // Use lang_ietf if available, otherwise fall back to lang
1113- const char * lang_to_use = track -> lang_ietf ? track -> lang_ietf : track -> lang ;
1114-
1115- if (track -> lang_index == 0 )
1116- sprintf (buf , "%s_%s.%s" , get_basename (mkv_ctx -> filename ), lang_to_use ,
1117- matroska_track_text_subtitle_id_extensions [track -> codec_id ]);
1118- else
1119- sprintf (buf , "%s_%s_" LLD ".%s" , get_basename (mkv_ctx -> filename ), lang_to_use ,
1120- track -> lang_index , matroska_track_text_subtitle_id_extensions [track -> codec_id ]);
1121- return buf ;
1123+ char * buf = malloc (sizeof (char ) * 200 );
1124+ // Use lang_ietf if available, otherwise fall back to lang
1125+ const char * lang_to_use = track -> lang_ietf ? track -> lang_ietf : track -> lang ;
1126+
1127+ if (track -> lang_index == 0 )
1128+ sprintf (buf , "%s_%s.%s" , get_basename (mkv_ctx -> filename ), lang_to_use ,
1129+ matroska_track_text_subtitle_id_extensions [track -> codec_id ]);
1130+ else
1131+ sprintf (buf , "%s_%s_" LLD ".%s" , get_basename (mkv_ctx -> filename ), lang_to_use ,
1132+ track -> lang_index , matroska_track_text_subtitle_id_extensions [track -> codec_id ]);
1133+ return buf ;
11221134}
11231135
11241136char * ass_ssa_sentence_erase_read_order (char * text )
@@ -1305,7 +1317,7 @@ void free_sub_track(struct matroska_sub_track *track)
13051317 free (track -> header );
13061318 if (track -> lang != NULL )
13071319 free (track -> lang );
1308- if (track -> lang_ietf != NULL )
1320+ if (track -> lang_ietf != NULL )
13091321 free (track -> lang_ietf );
13101322 if (track -> codec_id_string != NULL )
13111323 free (track -> codec_id_string );
@@ -1320,22 +1332,22 @@ void free_sub_track(struct matroska_sub_track *track)
13201332
13211333void matroska_save_all (struct matroska_ctx * mkv_ctx , char * lang )
13221334{
1323- char * match ;
1324- for (int i = 0 ; i < mkv_ctx -> sub_tracks_count ; i ++ )
1325- {
1326- if (lang )
1327- {
1328- // Try to match against IETF tag first if available
1329- if (mkv_ctx -> sub_tracks [i ]-> lang_ietf &&
1330- (match = strstr (lang , mkv_ctx -> sub_tracks [i ]-> lang_ietf )) != NULL )
1331- save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1332- // Fall back to 3-letter code
1333- else if ((match = strstr (lang , mkv_ctx -> sub_tracks [i ]-> lang )) != NULL )
1334- save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1335- }
1336- else
1337- save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1338- }
1335+ char * match ;
1336+ for (int i = 0 ; i < mkv_ctx -> sub_tracks_count ; i ++ )
1337+ {
1338+ if (lang )
1339+ {
1340+ // Try to match against IETF tag first if available
1341+ if (mkv_ctx -> sub_tracks [i ]-> lang_ietf &&
1342+ (match = strstr (lang , mkv_ctx -> sub_tracks [i ]-> lang_ietf )) != NULL )
1343+ save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1344+ // Fall back to 3-letter code
1345+ else if ((match = strstr (lang , mkv_ctx -> sub_tracks [i ]-> lang )) != NULL )
1346+ save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1347+ }
1348+ else
1349+ save_sub_track (mkv_ctx , mkv_ctx -> sub_tracks [i ]);
1350+ }
13391351
13401352 // EIA-608
13411353 update_decoder_list (mkv_ctx -> ctx );
@@ -1384,9 +1396,10 @@ void matroska_parse(struct matroska_ctx *mkv_ctx)
13841396 read_vint_block_skip (file );
13851397 MATROSKA_SWITCH_BREAK (code , code_len );
13861398 default :
1387- if (code_len == MATROSKA_MAX_ID_LENGTH ) {
1399+ if (code_len == MATROSKA_MAX_ID_LENGTH )
1400+ {
13881401 mprint (MATROSKA_WARNING "Unknown element 0x%x at position " LLD ", skipping this element\n" , code ,
1389- get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
1402+ get_current_byte (file ) - MATROSKA_MAX_ID_LENGTH );
13901403 // Skip just the unknown element, not the entire block
13911404 read_vint_block_skip (file );
13921405 // Reset code and code_len to start fresh with next element
0 commit comments