1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

lavf/webvtt: use ff_subtitles_read_chunk().

The FATE test is updated because the line breaks in the dialogue
rectangles are now proper CRLF.
This commit is contained in:
Clément Bœsch 2013-01-03 07:45:29 +01:00
parent 3fa642d60f
commit dc8b36746a
3 changed files with 12 additions and 32 deletions

View File

@ -31,7 +31,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 54
#define LIBAVFORMAT_VERSION_MINOR 59
#define LIBAVFORMAT_VERSION_MICRO 101
#define LIBAVFORMAT_VERSION_MICRO 102
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \

View File

@ -54,29 +54,6 @@ static int64_t read_ts(const char *s)
return AV_NOPTS_VALUE;
}
static int64_t extract_cue(AVBPrint *buf, AVIOContext *pb)
{
int prev_chr_is_eol = 0;
int64_t pos = avio_tell(pb);
av_bprint_clear(buf);
for (;;) {
char c = avio_r8(pb);
if (!c)
break;
if (c == '\r' || c == '\n') {
if (prev_chr_is_eol)
break;
prev_chr_is_eol = (c == '\n');
} else
prev_chr_is_eol = 0;
if (c != '\r')
av_bprint_chars(buf, c, 1);
}
av_bprint_chars(buf, '\0', 1);
return pos;
}
static int webvtt_read_header(AVFormatContext *s)
{
WebVTTContext *webvtt = s->priv_data;
@ -94,17 +71,21 @@ static int webvtt_read_header(AVFormatContext *s)
av_bprint_init(&cue, 0, AV_BPRINT_SIZE_UNLIMITED);
for (;;) {
int i, len;
int64_t pos = extract_cue(&cue, s->pb);
int i;
int64_t pos;
AVPacket *sub;
const char *p = cue.str;
const char *identifier = p;
const char *p, *identifier;
//const char *settings = NULL;
int64_t ts_start, ts_end;
if (!*p) // EOF
ff_subtitles_read_chunk(s->pb, &cue);
if (!cue.len)
break;
p = identifier = cue.str;
pos = avio_tell(s->pb);
/* ignore header chunk */
if (!strncmp(p, "\xEF\xBB\xBFWEBVTT", 9) ||
!strncmp(p, "WEBVTT", 6))
@ -143,8 +124,7 @@ static int webvtt_read_header(AVFormatContext *s)
p++;
/* create packet */
len = cue.str + cue.len - p - 1;
sub = ff_subtitles_queue_insert(&webvtt->q, p, len, 0);
sub = ff_subtitles_queue_insert(&webvtt->q, p, strlen(p), 0);
if (!sub) {
res = AVERROR(ENOMEM);
goto end;

View File

@ -1 +1 @@
5384a70c89ddca4b007fb7ffba95cffb
2cf38e2c99f8717f78a91a3f31197fb4