summaryrefslogtreecommitdiffstats
path: root/mencoder.c
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-22 15:34:23 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-22 15:34:23 +0000
commitd1c33346adc05ae1791c99ea18b3430476fb274a (patch)
tree95cb5ddf8f9a00d972ea9475da461cc4edb3073f /mencoder.c
parent54f8953b16c34ce09b0793e6c475177f3cfabb47 (diff)
downloadmpv-d1c33346adc05ae1791c99ea18b3430476fb274a.tar.bz2
mpv-d1c33346adc05ae1791c99ea18b3430476fb274a.tar.xz
preinit audio filters in order to determine the final samplerate and number of channels, or audio encoders will be initialized with the wrong parameters
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15547 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mencoder.c')
-rw-r--r--mencoder.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/mencoder.c b/mencoder.c
index 9c9af11a0e..00baddb74e 100644
--- a/mencoder.c
+++ b/mencoder.c
@@ -254,6 +254,7 @@ int edl_seek(edl_record_ptr next_edl_record, demuxer_t* demuxer, demux_stream_t
#endif
#include "vobsub.h"
+#include "libao2/audio_out.h"
/* FIXME */
static void mencoder_exit(int level, char *how)
{
@@ -367,6 +368,7 @@ int curfile=0;
int new_srate;
unsigned int timer_start;
+ao_data_t ao_data = {0,0,0,0,OUTBURST,-1,0};
audio_encoding_params_t aparams;
audio_encoder_t *aencoder = NULL;
@@ -808,8 +810,21 @@ mux_a->source=sh_audio;
mux_a->codec=out_audio_codec;
-aparams.channels = audio_output_channels ? audio_output_channels : sh_audio->channels;
-aparams.sample_rate = force_srate ? force_srate : new_srate;
+ao_data.samplerate = force_srate ? force_srate : new_srate;
+ao_data.channels = audio_output_channels ? audio_output_channels : sh_audio->channels;
+ao_data.format = audio_output_format ? audio_output_format : sh_audio->sample_format;
+if(!preinit_audio_filters(sh_audio,
+ // input:
+ new_srate,
+ sh_audio->channels, sh_audio->sample_format,
+ // output:
+ &ao_data.samplerate, &ao_data.channels, &ao_data.format)) {
+ mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_AudioFilterChainPreinitError);
+ mencoder_exit(1, NULL);
+ }
+
+aparams.channels = ao_data.channels;
+aparams.sample_rate = ao_data.samplerate;
aparams.audio_preload = 1000 * audio_preload;
if(mux_a->codec != ACODEC_COPY) {
aencoder = new_audio_encoder(mux_a, &aparams);