diff options
author | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-11-16 19:24:43 +0000 |
---|---|---|
committer | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-11-16 19:24:43 +0000 |
commit | c36b3d52c0b7ef630cfa176dc199a2579e5fd791 (patch) | |
tree | ff36ce4d9f6e1072dd87703e9c8e9dda860f96b4 /libmpdemux | |
parent | b19f9a5bb710623be22238820bf13c9ffd7c9fba (diff) | |
download | mpv-c36b3d52c0b7ef630cfa176dc199a2579e5fd791.tar.bz2 mpv-c36b3d52c0b7ef630cfa176dc199a2579e5fd791.tar.xz |
Support for FLAC in Matroska written in the MS compatibility mode.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11483 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demux_mkv.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libmpdemux/demux_mkv.cpp b/libmpdemux/demux_mkv.cpp index a9d5fbb30e..747b98db42 100644 --- a/libmpdemux/demux_mkv.cpp +++ b/libmpdemux/demux_mkv.cpp @@ -2355,7 +2355,8 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) { track->realmedia = true; - } else if (!strcmp(track->codec_id, MKV_A_FLAC)) { + } else if (!strcmp(track->codec_id, MKV_A_FLAC) || + (track->a_formattag == 0xf1ac)) { free(sh_a->wf); sh_a->wf = NULL; @@ -2364,8 +2365,16 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) { dp->pts = 0; dp->flags = 0; ds_add_packet(demuxer->audio, dp); - dp = new_demux_packet(track->private_size); - memcpy(dp->buffer, track->private_data, track->private_size); + if (track->a_formattag == mmioFOURCC('f', 'L', 'a', 'C')) { + dp = new_demux_packet(track->private_size); + memcpy(dp->buffer, track->private_data, track->private_size); + } else { + sh_a->format = mmioFOURCC('f', 'L', 'a', 'C'); + dp = new_demux_packet(track->private_size - sizeof(WAVEFORMATEX)); + memcpy(dp->buffer, (unsigned char *)track->private_data + + sizeof(WAVEFORMATEX), track->private_size - + sizeof(WAVEFORMATEX)); + } dp->pts = 0; dp->flags = 0; ds_add_packet(demuxer->audio, dp); |