From d8882bbfb76fd9973134d0cb59b9dda064225354 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 11 Nov 2013 18:40:59 +0100 Subject: demux_mkv: support some raw PCM variants This affects 64 bit floats and big endian integer PCM variants (basically crap nobody uses). Possibly not all MS-muxed files work, but I couldn't get or produce any samples. Remove a bunch of format tags that are not needed anymore. Most of these were used by demux_mov, which is long gone. Repurpose/abuse 'twos' as mpv-internal tag for dealing with the PCM variants mentioned above. --- demux/demux_mkv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'demux/demux_mkv.c') diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 7a9aaa0f87..7a30721e66 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1355,6 +1355,7 @@ static struct mkv_audio_tag { { MKV_A_DTS, 0, 0x2001 }, { MKV_A_PCM, 0, 0x0001 }, { MKV_A_PCM_BE, 0, 0x0001 }, + { MKV_A_PCM_FLT, 0, 0x0003 }, { MKV_A_AAC_2MAIN, 0, MP_FOURCC('M', 'P', '4', 'A') }, { MKV_A_AAC_2LC, 1, MP_FOURCC('M', 'P', '4', 'A') }, { MKV_A_AAC_2SSR, 0, MP_FOURCC('M', 'P', '4', 'A') }, @@ -1464,10 +1465,10 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track) free(sh_a->wf); sh_a->wf = NULL; } else if (track->a_formattag == 0x0001) { /* PCM || PCM_BE */ - sh_a->wf->nAvgBytesPerSec = sh_a->channels.num * sh_a->samplerate * 2; - sh_a->wf->nBlockAlign = sh_a->wf->nAvgBytesPerSec; if (!strcmp(track->codec_id, MKV_A_PCM_BE)) sh_a->format = MP_FOURCC('t', 'w', 'o', 's'); + } else if (track->a_formattag == 0x0003) { /* PCM_FLT */ + /* ok */ } else if (!strcmp(track->codec_id, MKV_A_QDMC) || !strcmp(track->codec_id, MKV_A_QDMC2)) { sh_a->wf->nAvgBytesPerSec = 16000; -- cgit v1.2.3