diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-09 02:50:17 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-09 02:50:17 +0200 |
commit | cc2d748b73c0147c11089d63e4ff9836070a09a8 (patch) | |
tree | 6062375e90a7cc23818a969d6aeff199d801547a /libmpdemux | |
parent | 102b240e96ea2d5a675958d8365f2feb301a7498 (diff) | |
download | mpv-cc2d748b73c0147c11089d63e4ff9836070a09a8.tar.bz2 mpv-cc2d748b73c0147c11089d63e4ff9836070a09a8.tar.xz |
audio: FLAC: support new libavcodec parser, use lavf to demux
Parse FLAC data with new libavcodec parser if needed. Use libavformat
demuxer for raw FLAC files by default.
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demux_audio.c | 1 | ||||
-rw-r--r-- | libmpdemux/demux_lavf.c | 6 | ||||
-rw-r--r-- | libmpdemux/demuxer.c | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c index f5c476d250..7f0bb5e55f 100644 --- a/libmpdemux/demux_audio.c +++ b/libmpdemux/demux_audio.c @@ -491,6 +491,7 @@ static int demux_audio_open(demuxer_t* demuxer) { } if (sh_audio->i_bps < 1) // guess value to prevent crash sh_audio->i_bps = 64 * 1024; + sh_audio->needs_parsing = 1; // get_flac_metadata (demuxer); break; } diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 09999d80b5..6d3e68d9c0 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -234,8 +234,12 @@ static const char * const preferred_internal[] = { /* lavf Matroska demuxer doesn't support ordered chapters and fails * for more files */ "matroska", - /* seeking won't work in lavf FLAC demuxer until a parser is committed */ +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52, 99, 0) + /* Seeking doesn't work with lavf FLAC demuxer in FFmpeg versions + * without a FLAC parser. In principle this could use a runtime check to + * switch if a shared library is updated. */ "flac", +#endif /* lavf gives neither pts nor dts for some video frames in .rm */ "rm", NULL diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 51343f1595..af7f40c004 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -464,6 +464,9 @@ static void allocate_parser(AVCodecContext **avctx, AVCodecParserContext **parse case 0x86: codec_id = CODEC_ID_DTS; break; + case MKTAG('f', 'L', 'a', 'C'): + codec_id = CODEC_ID_FLAC; + break; case MKTAG('M', 'L', 'P', ' '): codec_id = CODEC_ID_MLP; break; |