mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-04-01 22:49:21 +00: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) {
|
for (i = 0; i < 4095; i += 3) {
|
||||||
char *ptr = av_strtok(lline, " ", &saveptr);
|
char *ptr = av_strtok(lline, " ", &saveptr);
|
||||||
char c1, c2, c3, c4;
|
char c1, c2, c3, c4;
|
||||||
|
uint8_t o1, o2;
|
||||||
|
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (av_sscanf(ptr, "%c%c%c%c", &c1, &c2, &c3, &c4) != 4)
|
if (av_sscanf(ptr, "%c%c%c%c", &c1, &c2, &c3, &c4) != 4)
|
||||||
break;
|
break;
|
||||||
|
o1 = convert(c2) | (convert(c1) << 4);
|
||||||
|
o2 = convert(c4) | (convert(c3) << 4);
|
||||||
|
|
||||||
lline = NULL;
|
lline = NULL;
|
||||||
out[i+0] = 0xfc;
|
out[i+0] = 0xfc;
|
||||||
out[i+1] = convert(c2) | (convert(c1) << 4);
|
out[i+1] = o1;
|
||||||
out[i+2] = convert(c4) | (convert(c3) << 4);
|
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;
|
out[i] = 0;
|
||||||
|
|
||||||
sub = ff_subtitles_queue_insert(&scc->q, out, i, 0);
|
sub = ff_subtitles_queue_insert(&scc->q, out, i, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user