summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 8cccf24889..085f2f82a0 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -1418,23 +1418,15 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track,
sh_a->wf->nBlockAlign = 1486;
track->fix_i_bps = 1;
track->qt_last_a_pts = 0.0;
- if (track->private_data != NULL) {
- sh_a->codecdata = malloc(track->private_size);
- memcpy(sh_a->codecdata, track->private_data, track->private_size);
- sh_a->codecdata_len = track->private_size;
- }
+ goto copy_private_data;
} else if (track->a_formattag == mmioFOURCC('M', 'P', '4', 'A')) {
int profile, srate_idx;
sh_a->wf->nAvgBytesPerSec = 16000;
sh_a->wf->nBlockAlign = 1024;
- if (!strcmp(track->codec_id, MKV_A_AAC) && track->private_data) {
- sh_a->codecdata = malloc(track->private_size);
- memcpy(sh_a->codecdata, track->private_data, track->private_size);
- sh_a->codecdata_len = track->private_size;
- return 0;
- }
+ if (!strcmp(track->codec_id, MKV_A_AAC) && track->private_data)
+ goto copy_private_data;
/* Recreate the 'private data' */
/* which faad2 uses in its initialization */
@@ -1559,7 +1551,14 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track,
sh_a->codecdata_len = size;
memcpy(sh_a->codecdata, ptr, size);
}
- } else if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K') || track->a_formattag == mmioFOURCC('T', 'R', 'H', 'D')) { /* do nothing, still works */
+ } else if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K') ||
+ track->a_formattag == mmioFOURCC('T', 'R', 'H', 'D')) {
+ copy_private_data:
+ if (!track->ms_compat && track->private_size) {
+ sh_a->codecdata = malloc(track->private_size);
+ sh_a->codecdata_len = track->private_size;
+ memcpy(sh_a->codecdata, track->private_data, track->private_size);
+ }
} else if (!track->ms_compat) {
goto error;
}