comparison libass/ass.c @ 23539:790efaddf175

Make sure there is at least one style in ass_track when parsing events. Before it was only checked for embedded subtitles.
author eugeni
date Fri, 15 Jun 2007 22:15:27 +0000
parents 7286d245bf33
children d655edc9d107
comparison
equal deleted inserted replaced
23538:d8982d45ce61 23539:790efaddf175
268 int i; 268 int i;
269 ass_event_t* target = event; 269 ass_event_t* target = event;
270 270
271 char* format = strdup(track->event_format); 271 char* format = strdup(track->event_format);
272 char* q = format; // format scanning pointer 272 char* q = format; // format scanning pointer
273
274 if (track->n_styles == 0) {
275 // add "Default" style to the end
276 // will be used if track does not contain a default style (or even does not contain styles at all)
277 int sid = ass_alloc_style(track);
278 track->styles[sid].Name = strdup("Default");
279 track->styles[sid].FontName = strdup("Arial");
280 }
273 281
274 for (i = 0; i < n_ignored; ++i) { 282 for (i = 0; i < n_ignored; ++i) {
275 NEXT(q, tname); 283 NEXT(q, tname);
276 } 284 }
277 285
695 CodecPrivate section contains [Stream Info] and [V4+ Styles] ([V4 Styles] for SSA) sections 703 CodecPrivate section contains [Stream Info] and [V4+ Styles] ([V4 Styles] for SSA) sections
696 */ 704 */
697 void ass_process_codec_private(ass_track_t* track, char *data, int size) 705 void ass_process_codec_private(ass_track_t* track, char *data, int size)
698 { 706 {
699 char* str = malloc(size + 1); 707 char* str = malloc(size + 1);
700 int sid;
701 708
702 memcpy(str, data, size); 709 memcpy(str, data, size);
703 str[size] = '\0'; 710 str[size] = '\0';
704 711
705 process_text(track, str); 712 process_text(track, str);
706 free(str); 713 free(str);
707 714
708 // add "Default" style to the end
709 // will be used if track does not contain a default style (or even does not contain styles at all)
710 sid = ass_alloc_style(track);
711 track->styles[sid].Name = strdup("Default");
712 track->styles[sid].FontName = strdup("Arial");
713
714 if (!track->event_format) { 715 if (!track->event_format) {
715 // probably an mkv produced by ancient mkvtoolnix 716 // probably an mkv produced by ancient mkvtoolnix
716 // such files don't have [Events] and Format: headers 717 // such files don't have [Events] and Format: headers
717 track->parser_priv->state = PST_EVENTS; 718 track->parser_priv->state = PST_EVENTS;
718 if (track->track_type == TRACK_TYPE_SSA) 719 if (track->track_type == TRACK_TYPE_SSA)