git.videolan.org
/
ffmpeg.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
630c005
)
avformat/oggparseflac: fix handling of old flac in ogg
author
Michael Niedermayer
<michaelni@gmx.at>
Sun, 6 Oct 2013 23:12:23 +0000
(
01:12
+0200)
committer
Michael Niedermayer
<michaelni@gmx.at>
Sun, 6 Oct 2013 23:36:05 +0000
(
01:36
+0200)
Improves handling of the file in Ticket1617
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/oggparseflac.c
patch
|
blob
|
history
diff --git
a/libavformat/oggparseflac.c
b/libavformat/oggparseflac.c
index
3ff594e
..
08fd77e
100644
(file)
--- a/
libavformat/oggparseflac.c
+++ b/
libavformat/oggparseflac.c
@@
-78,11
+78,32
@@
flac_header (AVFormatContext * s, int idx)
static int
old_flac_header (AVFormatContext * s, int idx)
{
static int
old_flac_header (AVFormatContext * s, int idx)
{
+ struct ogg *ogg = s->priv_data;
AVStream *st = s->streams[idx];
AVStream *st = s->streams[idx];
+ struct ogg_stream *os = ogg->streams + idx;
+ AVCodecParserContext *parser = av_parser_init(AV_CODEC_ID_FLAC);
+ int size;
+ uint8_t *data;
+
+ if (!parser)
+ return -1;
+
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_id = AV_CODEC_ID_FLAC;
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_id = AV_CODEC_ID_FLAC;
- return 0;
+ parser->flags = PARSER_FLAG_COMPLETE_FRAMES;
+ av_parser_parse2(parser, st->codec,
+ &data, &size, os->buf + os->pstart, os->psize,
+ AV_NOPTS_VALUE, AV_NOPTS_VALUE, -1);
+
+ av_parser_close(parser);
+
+ if (st->codec->sample_rate) {
+ avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate);
+ return 0;
+ }
+
+ return 1;
}
const struct ogg_codec ff_flac_codec = {
}
const struct ogg_codec ff_flac_codec = {