summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-12 17:35:58 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-12 17:35:58 +0000
commit3d450d038916ebc7ab4673a246086b1bb5042a9e (patch)
tree1d0100cb842e0144c28f7195cd262f64e3eac726 /libmpdemux/demux_mkv.c
parent4515c02ea4caf7742edf3ae4c9cd226f4079ff1b (diff)
downloadmpv-3d450d038916ebc7ab4673a246086b1bb5042a9e.tar.bz2
mpv-3d450d038916ebc7ab4673a246086b1bb5042a9e.tar.xz
vorbis extradata is now passed from demuxer to decoder in matroska's way
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15421 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c51
1 files changed, 3 insertions, 48 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 7bba3b4d95..3d27043add 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -1781,48 +1781,8 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track)
track->a_formattag = mmioFOURCC('M', 'P', '4', 'A');
else if (!strcmp(track->codec_id, MKV_A_VORBIS))
{
- unsigned char *c;
- uint32_t offset, length;
-
if (track->private_data == NULL)
return 1;
-
- c = (unsigned char *) track->private_data;
- if (*c != 2)
- {
- mp_msg (MSGT_DEMUX, MSGL_WARN, "[mkv] Vorbis track does not "
- "contain valid headers.\n");
- return 1;
- }
-
- offset = 1;
- for (i=0; i < 2; i++)
- {
- length = 0;
- while (c[offset] == (unsigned char) 0xFF
- && length < track->private_size)
- {
- length += 255;
- offset++;
- }
- if (offset >= (track->private_size - 1))
- {
- mp_msg (MSGT_DEMUX, MSGL_WARN, "[mkv] Vorbis track "
- "does not contain valid headers.\n");
- return 1;
- }
- length += c[offset];
- offset++;
- track->header_sizes[i] = length;
- }
-
- track->headers[0] = &c[offset];
- track->headers[1] = &c[offset + track->header_sizes[0]];
- track->headers[2] = &c[offset + track->header_sizes[0] +
- track->header_sizes[1]];
- track->header_sizes[2] = track->private_size - offset
- - track->header_sizes[0] - track->header_sizes[1];
-
track->a_formattag = mmioFOURCC('v', 'r', 'b', 's');
}
else if (!strcmp(track->codec_id, MKV_A_QDMC))
@@ -1954,14 +1914,9 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track)
}
else if (track->a_formattag == mmioFOURCC('v', 'r', 'b', 's')) /* VORBIS */
{
- for (i=0; i < 3; i++)
- {
- dp = new_demux_packet (track->header_sizes[i]);
- memcpy (dp->buffer,track->headers[i],track->header_sizes[i]);
- dp->pts = 0;
- dp->flags = 0;
- ds_add_packet (demuxer->audio, dp);
- }
+ sh_a->wf->cbSize = track->private_size;
+ sh_a->wf = (WAVEFORMATEX*)realloc(sh_a->wf, sizeof(WAVEFORMATEX) + sh_a->wf->cbSize);
+ memcpy((unsigned char *) (sh_a->wf+1), track->private_data, sh_a->wf->cbSize);
}
else if (track->private_size >= sizeof(real_audio_v4_props_t)
&& !strncmp (track->codec_id, MKV_A_REALATRC, 7))