diff options
author | Stephen Hutchinson <qyot27@gmail.com> | 2013-02-14 07:23:26 -0500 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-03-14 00:07:28 +0100 |
commit | 1877d7933ec44b392291c3c1ddd220e8dc66758d (patch) | |
tree | af353473db23d145e042971fb4895c7e3b9f0380 /demux/demux_mkv.c | |
parent | 21e4f1680c379407d77f0ac976aa8236f8227be0 (diff) | |
download | mpv-1877d7933ec44b392291c3c1ddd220e8dc66758d.tar.bz2 mpv-1877d7933ec44b392291c3c1ddd220e8dc66758d.tar.xz |
demux_mkv: Support playing Opus streams in Matroska
FFmpeg recently changed how it writes Opus-in-Matroska to match
the A_OPUS/EXPERIMENTAL name that mkvmerge uses, with the caveat
that things will change and compatibility with old files can get
worked out when the spec is finalized.
This adds both A_OPUS and A_OPUS/EXPERIMENTAL so that *hopefully*
it can play both the newer files that use A_OPUS/EXPERIMENTAL, and
older ones muxed by FFmpeg that were simply A_OPUS, since this is
also what FFmpeg seems to be doing to handle the situation.
Diffstat (limited to 'demux/demux_mkv.c')
-rw-r--r-- | demux/demux_mkv.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index a769aac127..012ddba516 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1314,6 +1314,8 @@ static struct mkv_audio_tag { { MKV_A_AAC_4LTP, 0, mmioFOURCC('M', 'P', '4', 'A') }, { MKV_A_AAC, 0, mmioFOURCC('M', 'P', '4', 'A') }, { MKV_A_VORBIS, 0, mmioFOURCC('v', 'r', 'b', 's') }, + { MKV_A_OPUS, 0, mmioFOURCC('O', 'p', 'u', 's') }, + { MKV_A_OPUS_EXP, 0, mmioFOURCC('O', 'p', 'u', 's') }, { MKV_A_QDMC, 0, mmioFOURCC('Q', 'D', 'M', 'C') }, { MKV_A_QDMC2, 0, mmioFOURCC('Q', 'D', 'M', '2') }, { MKV_A_WAVPACK, 0, mmioFOURCC('W', 'V', 'P', 'K') }, @@ -1462,6 +1464,9 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track, memcpy((unsigned char *) (sh_a->wf + 1), track->private_data, sh_a->wf->cbSize); } + } else if (!strcmp(track->codec_id, MKV_A_OPUS) + || !strcmp(track->codec_id, MKV_A_OPUS_EXP)) { + sh_a->format = mmioFOURCC('O', 'p', 'u', 's'); } else if (!strncmp(track->codec_id, MKV_A_REALATRC, 7)) { if (track->private_size < RAPROPERTIES4_SIZE) goto error; |