summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mkv.c8
-rw-r--r--libmpdemux/stheader.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 358f152c16..5e205f7cc2 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -107,6 +107,7 @@ typedef struct mkv_track {
uint32_t a_formattag;
uint32_t a_channels, a_bps;
float a_sfreq;
+ float a_osfreq;
double default_duration;
@@ -525,6 +526,12 @@ static void parse_trackaudio(struct demuxer *demuxer, struct mkv_track *track,
"[mkv] | + Sampling frequency: %f\n", track->a_sfreq);
} else
track->a_sfreq = 8000;
+ if (audio->n_output_sampling_frequency) {
+ track->a_osfreq = audio->output_sampling_frequency;
+ mp_msg(MSGT_DEMUX, MSGL_V,
+ "[mkv] | + Output sampling frequency: %f\n", track->a_osfreq);
+ } else
+ track->a_osfreq = track->a_sfreq;
if (audio->n_bit_depth) {
track->a_bps = audio->bit_depth;
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Bit depth: %u\n",
@@ -1410,6 +1417,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track,
sh_a->channels = track->a_channels;
sh_a->wf->nChannels = track->a_channels;
sh_a->samplerate = (uint32_t) track->a_sfreq;
+ sh_a->container_out_samplerate = track->a_osfreq;
sh_a->wf->nSamplesPerSec = (uint32_t) track->a_sfreq;
if (track->a_bps == 0) {
sh_a->samplesize = 2;
diff --git a/libmpdemux/stheader.h b/libmpdemux/stheader.h
index 35409188d5..4bb2da3ac7 100644
--- a/libmpdemux/stheader.h
+++ b/libmpdemux/stheader.h
@@ -55,6 +55,7 @@ typedef struct sh_audio {
// output format:
int sample_format;
int samplerate;
+ int container_out_samplerate;
int samplesize;
int channels;
int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec)