mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-03 14:32:16 +02:00
avformat/sccdec: split line with multiple subs
This commit is contained in:
parent
fd54add89c
commit
49d07642f3
@ -120,18 +120,41 @@ try_again:
|
||||
for (i = 0; i < 4095; i += 3) {
|
||||
char *ptr = av_strtok(lline, " ", &saveptr);
|
||||
char c1, c2, c3, c4;
|
||||
uint8_t o1, o2;
|
||||
|
||||
if (!ptr)
|
||||
break;
|
||||
|
||||
if (av_sscanf(ptr, "%c%c%c%c", &c1, &c2, &c3, &c4) != 4)
|
||||
break;
|
||||
o1 = convert(c2) | (convert(c1) << 4);
|
||||
o2 = convert(c4) | (convert(c3) << 4);
|
||||
|
||||
lline = NULL;
|
||||
out[i+0] = 0xfc;
|
||||
out[i+1] = convert(c2) | (convert(c1) << 4);
|
||||
out[i+2] = convert(c4) | (convert(c3) << 4);
|
||||
out[i+1] = o1;
|
||||
out[i+2] = o2;
|
||||
|
||||
if (o1 == 0x94 && o2 == 0x2f && saveptr && av_strcasecmp(saveptr, "942f")) {
|
||||
int64_t duration;
|
||||
|
||||
i += 3;
|
||||
out[i] = 0;
|
||||
duration = i * 11;
|
||||
|
||||
sub = ff_subtitles_queue_insert(&scc->q, out, i, 0);
|
||||
if (!sub)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
current_pos += i;
|
||||
sub->pos = current_pos;
|
||||
sub->pts = ts_start;
|
||||
sub->duration = duration;
|
||||
ts_start += duration;
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
out[i] = 0;
|
||||
|
||||
sub = ff_subtitles_queue_insert(&scc->q, out, i, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user