diff --git a/include/vlc_aout.h b/include/vlc_aout.h index 74ae07c7a77621dff8c5fcb50377dd9ed0cc6680..ecfd396207c8ed7b9d29637f829d8820ee3e3d99 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -67,7 +67,7 @@ #define AOUT_FMTS_SIMILAR( p_first, p_second ) ( \ ((p_first)->i_rate == (p_second)->i_rate) \ && ((p_first)->i_physical_channels == (p_second)->i_physical_channels)\ - && ((p_first)->i_original_channels == (p_second)->i_original_channels) ) + && ((p_first)->i_chan_mode == (p_second)->i_chan_mode) ) #define AOUT_FMT_LINEAR( p_format ) \ (aout_BitsPerSample((p_format)->i_format) != 0) diff --git a/include/vlc_es.h b/include/vlc_es.h index cac69b39609ecfbdf0d722f9ec416de1f9e41f12..2c622b50b90e2c91259bd698370fda9e13298c18 100644 --- a/include/vlc_es.h +++ b/include/vlc_es.h @@ -77,9 +77,10 @@ struct audio_format_t * channels which are available in the buffer, and positions). */ uint16_t i_physical_channels; - /* Describes from which original channels, before downmixing, the - * buffer is derived. */ - uint32_t i_original_channels; + /* Describes the chan mode, either set from the input + * (demux/codec/packetizer) or overridden by the user, used by audio + * filters. */ + uint16_t i_chan_mode; /* Optional - for A/52, SPDIF and DTS types : */ /* Bytes used by one compressed frame, depends on bitrate. */ @@ -134,17 +135,16 @@ struct audio_format_t #define AOUT_CHANS_5_0_MIDDLE (AOUT_CHANS_4_0_MIDDLE | AOUT_CHAN_CENTER) #define AOUT_CHANS_6_1_MIDDLE (AOUT_CHANS_5_0_MIDDLE | AOUT_CHAN_REARCENTER | AOUT_CHAN_LFE) -/* Values available for original channels only */ -#define AOUT_CHAN_DOLBYSTEREO 0x10000 -#define AOUT_CHAN_DUALMONO 0x20000 - -#define AOUT_CHAN_PHYSMASK 0xFFFF /* Maximum number of mapped channels (or the maximum of bits set in * i_physical_channels) */ #define AOUT_CHAN_MAX 9 /* Maximum number of unmapped channels */ #define INPUT_CHAN_MAX 64 +/* Values available for i_chan_mode only */ +#define AOUT_CHANMODE_DUALMONO 0x1 +#define AOUT_CHANMODE_DOLBYSTEREO 0x2 + /** * Picture orientation. */ diff --git a/modules/access/alsa.c b/modules/access/alsa.c index a265f24127f35ae8035dae58532a7062e01e8d51..406dcde0e35c97634ffc3dad1488d0c3a3bd0aa4 100644 --- a/modules/access/alsa.c +++ b/modules/access/alsa.c @@ -433,7 +433,6 @@ static int Open (vlc_object_t *obj) assert (param > 0); assert (param < (sizeof (channel_maps) / sizeof (channel_maps[0]))); fmt.audio.i_channels = param; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = channel_maps[param - 1]; param = var_InheritInteger (demux, "alsa-samplerate"); diff --git a/modules/access/linsys/linsys_hdsdi.c b/modules/access/linsys/linsys_hdsdi.c index 3a227b85b1b685a464c708d1fa7f53f75f24ecc4..b6d439483d8ee211d8ba7ee0b99e48f4b87810db 100644 --- a/modules/access/linsys/linsys_hdsdi.c +++ b/modules/access/linsys/linsys_hdsdi.c @@ -538,7 +538,6 @@ static int InitAudio( demux_t *p_demux ) es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S16L ); fmt.i_id = p_audio->i_id; fmt.audio.i_channels = 2; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHANS_STEREO; fmt.audio.i_rate = p_sys->i_sample_rate; fmt.audio.i_bitspersample = 16; diff --git a/modules/access/linsys/linsys_sdi.c b/modules/access/linsys/linsys_sdi.c index b123bb5ed227172c89fddecc42c7202eea986ded..c641b24c1291afc95d99d829559ce5409730b7a1 100644 --- a/modules/access/linsys/linsys_sdi.c +++ b/modules/access/linsys/linsys_sdi.c @@ -847,7 +847,6 @@ static int InitAudio( demux_t *p_demux, sdi_audio_t *p_audio ) es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S16L ); fmt.i_id = p_audio->i_id; fmt.audio.i_channels = 2; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHANS_STEREO; fmt.audio.i_rate = p_audio->i_rate; fmt.audio.i_bitspersample = 16; diff --git a/modules/access/pulse.c b/modules/access/pulse.c index 9d1a1e82b653d33e967ae12a2648aa5b6c8260e0..3ab5d9a2b4c2f727cf3038e55c2d13a50e8b0e5c 100644 --- a/modules/access/pulse.c +++ b/modules/access/pulse.c @@ -341,8 +341,7 @@ static int Open(vlc_object_t *obj) } es_format_Init(&fmt, AUDIO_ES, format); - fmt.audio.i_physical_channels = fmt.audio.i_original_channels = - AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; + fmt.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; fmt.audio.i_channels = ss.channels; fmt.audio.i_rate = pss->rate; fmt.audio.i_bitspersample = aout_BitsPerSample(format); diff --git a/modules/access/qtsound.m b/modules/access/qtsound.m index eaf882c49d9f1452c6b1fdda0cdf77d1b933b0ac..6183474a497af7e60e32ac5ac796c99005ed9221 100644 --- a/modules/access/qtsound.m +++ b/modules/access/qtsound.m @@ -414,11 +414,6 @@ static int Open(vlc_object_t *p_this) * buffer, and positions). */ audiofmt.audio.i_physical_channels = AOUT_CHAN_RIGHT | AOUT_CHAN_LEFT; - /* - * i_original_channels Describes from which original channels, - * before downmixing, the buffer is derived. - */ - audiofmt.audio.i_original_channels = AOUT_CHAN_RIGHT | AOUT_CHAN_LEFT; /* * Please note that it may be completely arbitrary - buffers are not * obliged to contain a integral number of so-called "frames". It's diff --git a/modules/access/rtp/rtp.c b/modules/access/rtp/rtp.c index 0c4a04e13c397958b5eaf60ad628a94e989fffda..9c6c0666b442dba7d0f96e4184b04d92b1811941 100644 --- a/modules/access/rtp/rtp.c +++ b/modules/access/rtp/rtp.c @@ -500,7 +500,6 @@ static void *pcmu_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_MULAW); fmt.audio.i_rate = 8000; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHAN_CENTER; return codec_init (demux, &fmt); } @@ -514,7 +513,6 @@ static void *gsm_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_GSM); fmt.audio.i_rate = 8000; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHAN_CENTER; return codec_init (demux, &fmt); } @@ -528,7 +526,6 @@ static void *pcma_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_ALAW); fmt.audio.i_rate = 8000; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHAN_CENTER; return codec_init (demux, &fmt); } @@ -542,7 +539,6 @@ static void *l16s_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_S16B); fmt.audio.i_rate = 44100; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHANS_STEREO; return codec_init (demux, &fmt); } @@ -553,7 +549,6 @@ static void *l16m_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_S16B); fmt.audio.i_rate = 44100; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHAN_CENTER; return codec_init (demux, &fmt); } @@ -567,7 +562,6 @@ static void *qcelp_init (demux_t *demux) es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_QCELP); fmt.audio.i_rate = 8000; - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHAN_CENTER; return codec_init (demux, &fmt); } @@ -580,7 +574,6 @@ static void *mpa_init (demux_t *demux) es_format_t fmt; es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_MPGA); - fmt.audio.i_original_channels = fmt.audio.i_physical_channels = AOUT_CHANS_STEREO; fmt.b_packetized = false; return codec_init (demux, &fmt); diff --git a/modules/access/wasapi.c b/modules/access/wasapi.c index f7b8c6683fee22ac94219c42f1d7c80159a16c8e..296e2feda2ba8bf60a703d783cb19082a01ea9af 100644 --- a/modules/access/wasapi.c +++ b/modules/access/wasapi.c @@ -143,7 +143,6 @@ static int vlc_FromWave(const WAVEFORMATEX *restrict wf, if (wfe->dwChannelMask & SPEAKER_LOW_FREQUENCY) fmt->i_physical_channels |= AOUT_CHAN_LFE; - fmt->i_original_channels = fmt->i_physical_channels; assert(popcount(wfe->dwChannelMask) == wf->nChannels); if (IsEqualIID(&wfe->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM)) diff --git a/modules/audio_filter/channel_mixer/dolby.c b/modules/audio_filter/channel_mixer/dolby.c index 344d961cc71d86706fe53925cb1a553570829980..5e4f966a09158e1023c69a52f91cd8e0f549f0b1 100644 --- a/modules/audio_filter/channel_mixer/dolby.c +++ b/modules/audio_filter/channel_mixer/dolby.c @@ -80,10 +80,10 @@ static int Create( vlc_object_t *p_this ) /* Validate audio filter format */ if ( p_filter->fmt_in.audio.i_physical_channels != (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT) - || ! ( p_filter->fmt_in.audio.i_original_channels & AOUT_CHAN_DOLBYSTEREO ) - || aout_FormatNbChannels( &p_filter->fmt_out.audio ) <= 2 - || ( p_filter->fmt_in.audio.i_original_channels & ~AOUT_CHAN_DOLBYSTEREO ) - != ( p_filter->fmt_out.audio.i_original_channels & ~AOUT_CHAN_DOLBYSTEREO ) ) + || ! ( p_filter->fmt_in.audio.i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO ) + || p_filter->fmt_out.audio.i_channels <= 2 + || ( p_filter->fmt_in.audio.i_chan_mode & ~AOUT_CHANMODE_DOLBYSTEREO ) + != ( p_filter->fmt_out.audio.i_chan_mode & ~AOUT_CHANMODE_DOLBYSTEREO ) ) { return VLC_EGENERIC; } diff --git a/modules/audio_filter/channel_mixer/headphone.c b/modules/audio_filter/channel_mixer/headphone.c index 946689cdc760160d53078bc74b34c913fe01a846..8e79bcdcdc46c56bc8c75722acd0beefe2c54bb5 100644 --- a/modules/audio_filter/channel_mixer/headphone.c +++ b/modules/audio_filter/channel_mixer/headphone.c @@ -472,10 +472,10 @@ static int OpenFilter( vlc_object_t *p_this ) p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32; p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32; p_filter->fmt_out.audio.i_rate = p_filter->fmt_in.audio.i_rate; - p_filter->fmt_in.audio.i_original_channels = - p_filter->fmt_out.audio.i_original_channels; + p_filter->fmt_in.audio.i_chan_mode = + p_filter->fmt_out.audio.i_chan_mode; if( p_filter->fmt_in.audio.i_physical_channels == AOUT_CHANS_STEREO - && (p_filter->fmt_in.audio.i_original_channels & AOUT_CHAN_DOLBYSTEREO) + && (p_filter->fmt_in.audio.i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO) && !var_InheritBool( p_filter, "headphone-dolby" ) ) { p_filter->fmt_in.audio.i_physical_channels = AOUT_CHANS_5_0; diff --git a/modules/audio_filter/channel_mixer/simple.c b/modules/audio_filter/channel_mixer/simple.c index 25af5a8d70482154d313c53483908734d894313b..f9faed46ce221cc43d9c0dd71894968b7da49358 100644 --- a/modules/audio_filter/channel_mixer/simple.c +++ b/modules/audio_filter/channel_mixer/simple.c @@ -283,9 +283,7 @@ static int OpenFilter( vlc_object_t *p_this ) uint32_t output = p_filter->fmt_out.audio.i_physical_channels; /* Short circuit the common case of not remixing */ - if( input == output - && p_filter->fmt_in.audio.i_original_channels - == p_filter->fmt_out.audio.i_original_channels ) + if( input == output ) return VLC_EGENERIC; const bool b_input_6_1 = input == AOUT_CHANS_6_1_MIDDLE; diff --git a/modules/audio_filter/channel_mixer/trivial.c b/modules/audio_filter/channel_mixer/trivial.c index d886ef14cfb5ba7783344fe2f1fe81f60aee54bd..b3ef079902b30dcbd615a38ef4d2fd23b9b80991 100644 --- a/modules/audio_filter/channel_mixer/trivial.c +++ b/modules/audio_filter/channel_mixer/trivial.c @@ -193,8 +193,7 @@ static int Create( vlc_object_t *p_this ) || infmt->i_rate != outfmt->i_rate || infmt->i_format != VLC_CODEC_FL32 ) return VLC_EGENERIC; - if( infmt->i_physical_channels == outfmt->i_physical_channels - && infmt->i_original_channels == outfmt->i_original_channels ) + if( infmt->i_physical_channels == outfmt->i_physical_channels ) return VLC_EGENERIC; p_filter->p_sys = NULL; diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c index 580ebb06b12c861307e49971d8eae647845bec28..ec5a218233ca2ef92790df6df4f40e3111645d6a 100644 --- a/modules/audio_output/alsa.c +++ b/modules/audio_output/alsa.c @@ -469,7 +469,6 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) sys->chans_to_reorder = SetupChannels (VLC_OBJECT(aout), pcm, &map, sys->chans_table); fmt->i_physical_channels = map; - fmt->i_original_channels = map; channels = popcount (map); } else diff --git a/modules/audio_output/amem.c b/modules/audio_output/amem.c index 1821e46e07635a554f72c779ce282e0dc3aa4c4b..7171690d2552a2a68074de0bfcf83b8c88a7bbe9 100644 --- a/modules/audio_output/amem.c +++ b/modules/audio_output/amem.c @@ -231,7 +231,6 @@ static int Start (audio_output_t *aout, audio_sample_format_t *fmt) } fmt->i_format = VLC_CODEC_S16N; - fmt->i_original_channels = fmt->i_physical_channels; return VLC_SUCCESS; } diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c index 1a6b4f387bd9559808ef4c55e7fb16fadf997f3c..86b28a691b32bf78518da652445916b675c7dc36 100644 --- a/modules/audio_output/audiotrack.c +++ b/modules/audio_output/audiotrack.c @@ -990,7 +990,6 @@ StartPassthrough( JNIEnv *env, audio_output_t *p_aout ) return VLC_EGENERIC; } p_sys->fmt.i_frame_length = 1; - p_sys->fmt.i_original_channels = p_sys->fmt.i_physical_channels; p_sys->fmt.i_channels = aout_FormatNbChannels( &p_sys->fmt ); p_sys->fmt.i_format = VLC_CODEC_SPDIFL; } @@ -1013,8 +1012,7 @@ StartPassthrough( JNIEnv *env, audio_output_t *p_aout ) } p_sys->fmt.i_bytes_per_frame = 4; p_sys->fmt.i_frame_length = 1; - p_sys->fmt.i_physical_channels = - p_sys->fmt.i_original_channels = AOUT_CHANS_STEREO; + p_sys->fmt.i_physical_channels = AOUT_CHANS_STEREO; p_sys->fmt.i_channels = 2; p_sys->fmt.i_format = VLC_CODEC_SPDIFB; } @@ -1094,7 +1092,6 @@ StartPCM( JNIEnv *env, audio_output_t *p_aout, unsigned i_max_channels ) else p_sys->fmt.i_physical_channels = AOUT_CHANS_STEREO; } - p_sys->fmt.i_original_channels = p_sys->fmt.i_physical_channels; /* Try to create an AudioTrack with the most advanced channel and * format configuration. If AudioTrack_Create fails, try again with a @@ -1162,8 +1159,6 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt ) aout_FormatPrint( p_aout, "VLC is looking for:", &p_sys->fmt ); - p_sys->fmt.i_original_channels = p_sys->fmt.i_physical_channels; - if( AOUT_FMT_LINEAR( &p_sys->fmt ) ) i_ret = StartPCM( env, p_aout, i_max_channels ); else if( b_try_passthrough ) diff --git a/modules/audio_output/coreaudio_common.c b/modules/audio_output/coreaudio_common.c index 406c30d7432a12f41110f5183e76409376cccbb9..69dba235ab05a8a56b0386d0a88a1bc4ae00e0c7 100644 --- a/modules/audio_output/coreaudio_common.c +++ b/modules/audio_output/coreaudio_common.c @@ -324,7 +324,7 @@ MapOutputLayout(audio_output_t *p_aout, audio_sample_format_t *fmt, { /* Fill VLC physical_channels from output layout */ fmt->i_physical_channels = 0; - uint32_t i_original = fmt->i_original_channels & AOUT_CHAN_PHYSMASK; + uint32_t i_original = fmt->i_physical_channels; AudioChannelLayout *reslayout = NULL; if (outlayout == NULL) @@ -434,7 +434,6 @@ MapOutputLayout(audio_output_t *p_aout, audio_sample_format_t *fmt, end: free(reslayout); - fmt->i_original_channels = fmt->i_physical_channels; aout_FormatPrepare(fmt); msg_Dbg(p_aout, "selected %d physical channels for device output", diff --git a/modules/audio_output/directsound.c b/modules/audio_output/directsound.c index 8c52e07645f7d1087c2aaa4d6282501c9afc144a..b8639b7bbd0be2fc4e70f0edf2ae1f2c03b4990d 100644 --- a/modules/audio_output/directsound.c +++ b/modules/audio_output/directsound.c @@ -788,8 +788,6 @@ static HRESULT Start( vlc_object_t *obj, aout_stream_sys_t *sys, } } - fmt.i_original_channels = fmt.i_physical_channels; - int ret = vlc_clone(&sys->eraser_thread, PlayedDataEraser, (void*) obj, VLC_THREAD_PRIORITY_LOW); if( unlikely( ret ) ) diff --git a/modules/audio_output/oss.c b/modules/audio_output/oss.c index d60c68a99671da158157e0848b167be1a35ee45b..d3e2a6f64058edfdb9883703074778c72e755608 100644 --- a/modules/audio_output/oss.c +++ b/modules/audio_output/oss.c @@ -213,7 +213,6 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) else { fmt->i_rate = rate; - fmt->i_original_channels = fmt->i_physical_channels = channels; } aout_FormatPrepare (fmt); diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c index b23d110388c96f5db82ad74891e00777929ad705..e9c70c562d1c2a2afe46d3e21f8cfbff46ae02fb 100644 --- a/modules/audio_output/pulse.c +++ b/modules/audio_output/pulse.c @@ -719,7 +719,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt) fmt->i_format = VLC_CODEC_SPDIFL; fmt->i_bytes_per_frame = 4; fmt->i_frame_length = 1; - fmt->i_physical_channels = fmt->i_original_channels = AOUT_CHANS_2_0; + fmt->i_physical_channels = AOUT_CHANS_2_0; fmt->i_channels = 2; encoding = PA_ENCODING_AC3_IEC61937; ss.format = PA_SAMPLE_S16NE; @@ -728,7 +728,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt) fmt->i_format = VLC_CODEC_SPDIFL; fmt->i_bytes_per_frame = 4; fmt->i_frame_length = 1; - fmt->i_physical_channels = fmt->i_original_channels = AOUT_CHANS_2_0; + fmt->i_physical_channels = AOUT_CHANS_2_0; fmt->i_channels = 2; encoding = PA_ENCODING_EAC3_IEC61937; ss.format = PA_SAMPLE_S16NE; @@ -742,7 +742,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt) fmt->i_format = VLC_CODEC_SPDIFL; fmt->i_bytes_per_frame = 4; fmt->i_frame_length = 1; - fmt->i_physical_channels = fmt->i_original_channels = AOUT_CHANS_2_0; + fmt->i_physical_channels = AOUT_CHANS_2_0; fmt->i_channels = 2; encoding = PA_ENCODING_DTS_IEC61937; ss.format = PA_SAMPLE_S16NE; @@ -844,7 +844,6 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt) } if (fmt->i_physical_channels & AOUT_CHAN_LFE) map.map[map.channels++] = PA_CHANNEL_POSITION_LFE; - fmt->i_original_channels = fmt->i_physical_channels; static_assert(AOUT_CHAN_MAX == 9, "Missing channels"); diff --git a/modules/audio_output/sndio.c b/modules/audio_output/sndio.c index fb5f4bd35bafa6ad06f8c4bfe25f1ea6f5839644..b8d5e90e03f753b5172c73727c1c89d77b21682b 100644 --- a/modules/audio_output/sndio.c +++ b/modules/audio_output/sndio.c @@ -174,7 +174,7 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) goto error; } - fmt->i_original_channels = fmt->i_physical_channels = chans; + fmt->i_physical_channels = chans; aout_FormatPrepare (fmt); aout->time_get = TimeGet; diff --git a/modules/audio_output/wasapi.c b/modules/audio_output/wasapi.c index e4803b2c6f614b6ec60794491fcbf3d86c0963bb..5fde72f41b82d83d286a879c3eab4d42f29bfd6b 100644 --- a/modules/audio_output/wasapi.c +++ b/modules/audio_output/wasapi.c @@ -428,7 +428,6 @@ static int vlc_FromWave(const WAVEFORMATEX *restrict wf, else return -1; - audio->i_original_channels = audio->i_physical_channels; aout_FormatPrepare (audio); if (wf->nChannels != audio->i_channels) diff --git a/modules/codec/a52.c b/modules/codec/a52.c index 08292ba3563c5275b6e5da22d039d2d9a742a268..4e221286d744b3bdf3d68ad373fa7a1c2630ab52 100644 --- a/modules/codec/a52.c +++ b/modules/codec/a52.c @@ -215,26 +215,24 @@ static int channels_vlc2a52( const audio_format_t *p_audio, int *p_flags ) switch ( p_audio->i_physical_channels & ~AOUT_CHAN_LFE ) { case AOUT_CHAN_CENTER: - if ( (p_audio->i_original_channels & AOUT_CHAN_CENTER) - || (p_audio->i_original_channels + if ( (p_audio->i_physical_channels & AOUT_CHAN_CENTER) + || (p_audio->i_physical_channels & (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) ) i_flags = A52_MONO; - else if ( p_audio->i_original_channels & AOUT_CHAN_LEFT ) + else if ( p_audio->i_physical_channels & AOUT_CHAN_LEFT ) i_flags = A52_CHANNEL1; else i_flags = A52_CHANNEL2; break; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT: - if ( p_audio->i_original_channels & AOUT_CHAN_DOLBYSTEREO ) + if ( p_audio->i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO ) i_flags = A52_DOLBY; - else if ( p_audio->i_original_channels == AOUT_CHAN_CENTER ) - i_flags = A52_MONO; - else if ( p_audio->i_original_channels & AOUT_CHAN_DUALMONO ) + else if ( p_audio->i_chan_mode & AOUT_CHANMODE_DUALMONO ) i_flags = A52_CHANNEL; - else if ( !(p_audio->i_original_channels & AOUT_CHAN_RIGHT) ) + else if ( !(p_audio->i_physical_channels & AOUT_CHAN_RIGHT) ) i_flags = A52_CHANNEL1; - else if ( !(p_audio->i_original_channels & AOUT_CHAN_LEFT) ) + else if ( !(p_audio->i_physical_channels & AOUT_CHAN_LEFT) ) i_flags = A52_CHANNEL2; else i_flags = A52_STEREO; @@ -281,7 +279,6 @@ static int Open( vlc_object_t *p_this ) if( p_dec->fmt_in.i_codec != VLC_CODEC_A52 || p_dec->fmt_in.audio.i_rate == 0 || p_dec->fmt_in.audio.i_physical_channels == 0 - || p_dec->fmt_in.audio.i_original_channels == 0 || p_dec->fmt_in.audio.i_bytes_per_frame == 0 || p_dec->fmt_in.audio.i_frame_length == 0 ) return VLC_EGENERIC; diff --git a/modules/codec/adpcm.c b/modules/codec/adpcm.c index c76605b4f5ec94a2c866ec0bd219d232ff669497..a1979bd344aa7e2bed1e82dbc7b9776372bb8ae5 100644 --- a/modules/codec/adpcm.c +++ b/modules/codec/adpcm.c @@ -278,8 +278,7 @@ static int OpenDecoder( vlc_object_t *p_this ) p_dec->fmt_out.i_codec = VLC_CODEC_S16N; p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate; p_dec->fmt_out.audio.i_channels = i_channels; - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = pi_channels_maps[i_channels]; + p_dec->fmt_out.audio.i_physical_channels = pi_channels_maps[i_channels]; date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 ); date_Set( &p_sys->end_date, 0 ); diff --git a/modules/codec/aes3.c b/modules/codec/aes3.c index 2df8363192725c0a71cb946ce72e0e79f07ab700..cf27aed84566dc97eef343c23411bf6cf6f30805 100644 --- a/modules/codec/aes3.c +++ b/modules/codec/aes3.c @@ -393,7 +393,6 @@ static block_t * Parse( decoder_t *p_dec, int *pi_frame_length, int *pi_bits, } p_dec->fmt_out.audio.i_channels = i_channels; - p_dec->fmt_out.audio.i_original_channels = pi_original_channels[i_channels/2-1]; p_dec->fmt_out.audio.i_physical_channels = pi_original_channels[i_channels/2-1]; *pi_frame_length = (p_block->i_buffer - AES3_HEADER_LEN) / ( (4+i_bits) * i_channels / 8 ); diff --git a/modules/codec/araw.c b/modules/codec/araw.c index ffa585bf9ed149f1eb42c7d9a461e931e24a8af4..3a653eed140c5ebb063464b60da5c7fa0bbd3bfa 100644 --- a/modules/codec/araw.c +++ b/modules/codec/araw.c @@ -284,19 +284,12 @@ static int DecoderOpen( vlc_object_t *p_this ) else p_dec->fmt_out.audio.i_physical_channels = pi_channels_maps[p_dec->fmt_in.audio.i_channels]; - if( p_dec->fmt_in.audio.i_original_channels ) - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_in.audio.i_original_channels; - else - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_out.audio.i_physical_channels; } else { /* Unknown channel map, let the aout/filters decide what to do */ p_dec->fmt_out.audio.i_channels = p_dec->fmt_in.audio.i_channels; - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = 0; + p_dec->fmt_out.audio.i_physical_channels = 0; } aout_FormatPrepare( &p_dec->fmt_out.audio ); diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c index ea568f9dc77523e4be451798fc2e2a86c1ba593f..a012cac05ba1d863e885a5b2513dbd3a1538e005 100644 --- a/modules/codec/avcodec/audio.c +++ b/modules/codec/avcodec/audio.c @@ -258,6 +258,7 @@ int InitAudioDec( vlc_object_t *obj ) p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate; if( p_dec->fmt_out.audio.i_rate ) date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 ); + p_dec->fmt_out.audio.i_chan_mode = p_dec->fmt_in.audio.i_chan_mode; p_dec->pf_decode = DecodeAudio; p_dec->pf_flush = Flush; @@ -607,12 +608,11 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) if( i_channels_src != p_sys->p_context->channels && b_trust ) msg_Err( p_dec, "Channel layout not understood" ); - bool dual_mono = false; /* Detect special dual mono case */ if( i_channels_src == 2 && pi_order_src[0] == AOUT_CHAN_CENTER && pi_order_src[1] == AOUT_CHAN_CENTER ) { - dual_mono = true; + p_dec->fmt_out.audio.i_chan_mode |= AOUT_CHANMODE_DUALMONO; pi_order_src[0] = AOUT_CHAN_LEFT; pi_order_src[1] = AOUT_CHAN_RIGHT; } @@ -625,16 +625,12 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust ) if( i_channels_dst != i_channels_src && b_trust ) msg_Warn( p_dec, "%d channels are dropped", i_channels_src - i_channels_dst ); - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = i_layout_dst; - if (dual_mono) - p_dec->fmt_out.audio.i_original_channels |= AOUT_CHAN_DUALMONO; + p_dec->fmt_out.audio.i_physical_channels = i_layout_dst; } else { msg_Warn( p_dec, "no channel layout found"); - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = 0; + p_dec->fmt_out.audio.i_physical_channels = 0; p_dec->fmt_out.audio.i_channels = p_sys->p_context->channels; } diff --git a/modules/codec/dca.c b/modules/codec/dca.c index 4462e77af6fcd33ef98a163ceb7ed04415b8352c..2a90fb3ac2c6329ef6038199fe7be95e9101783b 100644 --- a/modules/codec/dca.c +++ b/modules/codec/dca.c @@ -198,18 +198,16 @@ static int channels_vlc2dca( const audio_format_t *p_audio, int *p_flags ) switch ( p_audio->i_physical_channels & ~AOUT_CHAN_LFE ) { case AOUT_CHAN_CENTER: - if ( (p_audio->i_original_channels & AOUT_CHAN_CENTER) - || (p_audio->i_original_channels + if ( (p_audio->i_physical_channels & AOUT_CHAN_CENTER) + || (p_audio->i_physical_channels & (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) ) i_flags = DCA_MONO; break; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT: - if ( p_audio->i_original_channels & AOUT_CHAN_DOLBYSTEREO ) + if ( p_audio->i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO ) i_flags = DCA_DOLBY; - else if ( p_audio->i_original_channels == AOUT_CHAN_CENTER ) - i_flags = DCA_MONO; - else if ( p_audio->i_original_channels & AOUT_CHAN_DUALMONO ) + else if ( p_audio->i_chan_mode & AOUT_CHANMODE_DUALMONO ) i_flags = DCA_CHANNEL; else i_flags = DCA_STEREO; @@ -256,7 +254,6 @@ static int Open( vlc_object_t *p_this ) if( p_dec->fmt_in.i_codec != VLC_CODEC_DTS || p_dec->fmt_in.audio.i_rate == 0 || p_dec->fmt_in.audio.i_physical_channels == 0 - || p_dec->fmt_in.audio.i_original_channels == 0 || p_dec->fmt_in.audio.i_bytes_per_frame == 0 || p_dec->fmt_in.audio.i_frame_length == 0 ) return VLC_EGENERIC; diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c index 86d625e92b30d66bdc3751ca72a7bd4d7336c77f..790617e74b61996044cb6c94f45001e96a80877c 100644 --- a/modules/codec/dmo/dmo.c +++ b/modules/codec/dmo/dmo.c @@ -458,8 +458,7 @@ static int DecOpen( decoder_t *p_dec ) p_dec->fmt_out.audio.i_channels = p_dec->fmt_in.audio.i_channels; p_dec->fmt_out.audio.i_bitspersample = 16;//p_dec->fmt_in.audio.i_bitspersample; We request 16 p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = - pi_channels_maps[p_dec->fmt_out.audio.i_channels]; + pi_channels_maps[p_dec->fmt_out.audio.i_channels]; p_wf->wFormatTag = WAVE_FORMAT_PCM; p_wf->nSamplesPerSec = p_dec->fmt_out.audio.i_rate; diff --git a/modules/codec/faad.c b/modules/codec/faad.c index 8237168c5bba6b88d20863cc78cd9ace32492567..8528f8c045c2b83c54955b78cf67a638083f07b8 100644 --- a/modules/codec/faad.c +++ b/modules/codec/faad.c @@ -149,21 +149,19 @@ static int Open( vlc_object_t *p_this ) p_dec->fmt_out.audio.i_rate = i_rate; p_dec->fmt_out.audio.i_channels = i_channels; p_dec->fmt_out.audio.i_physical_channels - = p_dec->fmt_out.audio.i_original_channels = mpeg4_asc_channelsbyindex[i_channels]; date_Init( &p_sys->date, i_rate, 1 ); } else { - p_dec->fmt_out.audio.i_physical_channels - = p_dec->fmt_out.audio.i_original_channels - = 0; + p_dec->fmt_out.audio.i_physical_channels = 0; /* Will be initalised from first frame */ p_dec->fmt_out.audio.i_rate = 0; p_dec->fmt_out.audio.i_channels = 0; } p_dec->fmt_out.i_codec = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N; + p_dec->fmt_out.audio.i_chan_mode = p_dec->fmt_in.audio.i_chan_mode; /* Set the faad config */ cfg = NeAACDecGetCurrentConfiguration( p_sys->hfaad ); @@ -289,7 +287,6 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block ) p_dec->fmt_out.audio.i_rate = i_rate; p_dec->fmt_out.audio.i_channels = i_channels; p_dec->fmt_out.audio.i_physical_channels - = p_dec->fmt_out.audio.i_original_channels = mpeg4_asc_channelsbyindex[i_channels]; date_Init( &p_sys->date, i_rate, 1 ); @@ -312,7 +309,6 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block ) p_dec->fmt_out.audio.i_rate = i_rate; p_dec->fmt_out.audio.i_channels = i_channels; p_dec->fmt_out.audio.i_physical_channels - = p_dec->fmt_out.audio.i_original_channels = mpeg4_asc_channelsbyindex[i_channels]; date_Init( &p_sys->date, i_rate, 1 ); } @@ -381,7 +377,6 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block ) p_dec->fmt_out.audio.i_rate = i_rate; p_dec->fmt_out.audio.i_channels = i_channels; p_dec->fmt_out.audio.i_physical_channels - = p_dec->fmt_out.audio.i_original_channels = mpeg4_asc_channelsbyindex[i_channels]; date_Init( &p_sys->date, i_rate, 1 ); } @@ -501,7 +496,6 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block ) p_dec->fmt_out.audio.i_physical_channels, pi_neworder_table ); - p_dec->fmt_out.audio.i_original_channels = p_dec->fmt_out.audio.i_physical_channels; p_dec->fmt_out.audio.i_channels = popcount(p_dec->fmt_out.audio.i_physical_channels); if( !decoder_UpdateAudioFormat( p_dec ) && p_dec->fmt_out.audio.i_channels > 0 ) diff --git a/modules/codec/flac.c b/modules/codec/flac.c index ee51e4b233053c82e8463616145f2521d68fdfa1..b6fcac1481a29d04c5b24c9f0b4d27a973887409 100644 --- a/modules/codec/flac.c +++ b/modules/codec/flac.c @@ -209,8 +209,7 @@ static int DecoderSetOutputFormat( unsigned i_channels, unsigned i_rate, fmt->i_channels = i_channels; fmt->i_rate = (i_rate > 0 ) ? i_rate : i_streaminfo_rate; - fmt->i_physical_channels = - fmt->i_original_channels = pi_channels_maps[i_channels]; + fmt->i_physical_channels = pi_channels_maps[i_channels]; memcpy( pi_channels_reorder, ppi_reorder[i_channels], i_channels ); fmt->i_bitspersample = i_bitspersample; @@ -373,8 +372,7 @@ static void DecoderMetadataCallback( const FLAC__StreamDecoder *decoder, for( unsigned i=0; irgi_channels_reorder[neworder[i]] = i; - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = i_vlcmask; + p_dec->fmt_out.audio.i_physical_channels = i_vlcmask; p_dec->fmt_out.audio.i_channels = i_wfxchannels; } diff --git a/modules/codec/fluidsynth.c b/modules/codec/fluidsynth.c index 37603f180c6274953e0823eeb73fa1de5ee32196..b2455300b2a0e2ff59c426af5c166c5d09410332 100644 --- a/modules/codec/fluidsynth.c +++ b/modules/codec/fluidsynth.c @@ -171,9 +171,7 @@ static int Open (vlc_object_t *p_this) var_InheritInteger (p_this, "synth-sample-rate");; fluid_synth_set_sample_rate (p_sys->synth, p_dec->fmt_out.audio.i_rate); p_dec->fmt_out.audio.i_channels = 2; - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_out.audio.i_physical_channels = - AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; + p_dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; p_dec->fmt_out.i_codec = VLC_CODEC_FL32; p_dec->fmt_out.audio.i_bitspersample = 32; date_Init (&p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1); diff --git a/modules/codec/g711.c b/modules/codec/g711.c index 92a80606c1ccf46c87272f18b0f28a541c6b8900..911e4e248f02a62e8dc570286f1bf32d25c57bc9 100644 --- a/modules/codec/g711.c +++ b/modules/codec/g711.c @@ -197,12 +197,6 @@ static int DecoderOpen( vlc_object_t *p_this ) else p_dec->fmt_out.audio.i_physical_channels = pi_channels_maps[p_dec->fmt_in.audio.i_channels]; - if( p_dec->fmt_in.audio.i_original_channels ) - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_in.audio.i_original_channels; - else - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_out.audio.i_physical_channels; aout_FormatPrepare( &p_dec->fmt_out.audio ); p_sys->table = table; diff --git a/modules/codec/lpcm.c b/modules/codec/lpcm.c index d713c2b632b0c9b6a6f0cdba64b8d4b768407134..bf9e3d6878bb9a7af7008352d31ec89c9a0448af 100644 --- a/modules/codec/lpcm.c +++ b/modules/codec/lpcm.c @@ -413,7 +413,6 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) } p_dec->fmt_out.audio.i_rate = i_rate; p_dec->fmt_out.audio.i_channels = i_channels; - p_dec->fmt_out.audio.i_original_channels = i_original_channels; p_dec->fmt_out.audio.i_physical_channels = i_original_channels; if ( p_sys->i_type == LPCM_AOB ) diff --git a/modules/codec/mad.c b/modules/codec/mad.c index 047243dd5f3cea5d9f2f84ed5e3b2040136dbcb9..194182961dc8e31da069a6186a48d29886f474ad 100644 --- a/modules/codec/mad.c +++ b/modules/codec/mad.c @@ -249,7 +249,6 @@ static int Open( vlc_object_t *p_this ) && p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','3') ) || p_dec->fmt_in.audio.i_rate == 0 || p_dec->fmt_in.audio.i_physical_channels == 0 - || p_dec->fmt_in.audio.i_original_channels == 0 || p_dec->fmt_in.audio.i_bytes_per_frame == 0 || p_dec->fmt_in.audio.i_frame_length == 0 ) return VLC_EGENERIC; diff --git a/modules/codec/mft.c b/modules/codec/mft.c index c0412cf38ec4b0c5c44a2eb51bbff084e5c90023..f91fc7c00fec762a2c147d95f1c05ad615b25227 100644 --- a/modules/codec/mft.c +++ b/modules/codec/mft.c @@ -445,7 +445,6 @@ static int SetOutputType(decoder_t *p_dec, DWORD stream_id, IMFMediaType **resul p_dec->fmt_out.i_codec = vlc_fourcc_GetCodecAudio(fourcc, p_dec->fmt_out.audio.i_bitspersample); p_dec->fmt_out.audio.i_physical_channels = pi_channels_maps[p_dec->fmt_out.audio.i_channels]; - p_dec->fmt_out.audio.i_original_channels = p_dec->fmt_out.audio.i_physical_channels; } *result = output_media_type; diff --git a/modules/codec/mpg123.c b/modules/codec/mpg123.c index a0ef536911c66aaf24fe12cd7f5d26d3d0c9d7aa..d9e646cb59abfad68b5294728d32d5ffeca3c7cc 100644 --- a/modules/codec/mpg123.c +++ b/modules/codec/mpg123.c @@ -168,24 +168,21 @@ static int UpdateAudioFormat( decoder_t *p_dec ) switch( frame_info.mode ) { + case MPG123_M_DUAL: + p_dec->fmt_out.audio.i_chan_mode = AOUT_CHANMODE_DUALMONO; + /* fall through */ case MPG123_M_STEREO: case MPG123_M_JOINT: - p_dec->fmt_out.audio.i_original_channels = + p_dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; break; - case MPG123_M_DUAL: - p_dec->fmt_out.audio.i_original_channels = - AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_DUALMONO; - break; case MPG123_M_MONO: - p_dec->fmt_out.audio.i_original_channels = AOUT_CHAN_CENTER; + p_dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_CENTER; break; default: return VLC_EGENERIC; } - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels & AOUT_CHAN_PHYSMASK; aout_FormatPrepare( &p_dec->fmt_out.audio ); /* Date management */ diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c index 3373a7293e0d4091cb27acc180381f883cc638e9..f7a6027a1b3010bd37dc9e31290fbe1586e8bae7 100644 --- a/modules/codec/omxil/mediacodec.c +++ b/modules/codec/omxil/mediacodec.c @@ -1077,7 +1077,6 @@ static int Audio_ProcessOutput(decoder_t *p_dec, mc_api_out *p_out, msg_Warn(p_dec, "need channel extraction: %d -> %d", p_sys->audio.i_channels, i_channels_dst); - p_dec->fmt_out.audio.i_original_channels = p_dec->fmt_out.audio.i_physical_channels = i_layout_dst; aout_FormatPrepare(&p_dec->fmt_out.audio); diff --git a/modules/codec/omxil/omxil.c b/modules/codec/omxil/omxil.c index b8812a95fc59248ac5538bd98b1d06c8ced2879c..619e90a28051bfdcc9e8fb2f4fba847b6d185fa9 100644 --- a/modules/codec/omxil/omxil.c +++ b/modules/codec/omxil/omxil.c @@ -717,8 +717,7 @@ static OMX_ERRORTYPE GetPortDefinition(decoder_t *p_dec, OmxPort *p_port, | AOUT_CHAN_LFE }; p_fmt->audio.i_physical_channels = - p_fmt->audio.i_original_channels = - pi_channels_maps[p_fmt->audio.i_channels]; + pi_channels_maps[p_fmt->audio.i_channels]; } date_Init( &p_dec->p_sys->end_date, p_fmt->audio.i_rate, 1 ); diff --git a/modules/codec/opus.c b/modules/codec/opus.c index 22d40949d761d248ad44791404c7924db1ca315f..7d354a8973384aa3afccbb20c3edb16c6b29dbb1 100644 --- a/modules/codec/opus.c +++ b/modules/codec/opus.c @@ -337,8 +337,7 @@ static int ProcessInitialHeader( decoder_t *p_dec, ogg_packet *p_oggpacket ) /* Setup the format */ p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = - pi_channels_maps[p_header->channels]; + pi_channels_maps[p_header->channels]; p_dec->fmt_out.audio.i_channels = p_header->channels; p_dec->fmt_out.audio.i_rate = 48000; diff --git a/modules/codec/speex.c b/modules/codec/speex.c index aa18d112e7114b85dc8eb59219cb68ff9914e7ac..9f6884a40cf70b3421d941e6b97667180eed94a9 100644 --- a/modules/codec/speex.c +++ b/modules/codec/speex.c @@ -548,8 +548,7 @@ static int ProcessInitialHeader( decoder_t *p_dec, ogg_packet *p_oggpacket ) /* Setup the format */ p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = - pi_channels_maps[p_header->nb_channels]; + pi_channels_maps[p_header->nb_channels]; p_dec->fmt_out.audio.i_channels = p_header->nb_channels; p_dec->fmt_out.audio.i_rate = p_header->rate; @@ -718,7 +717,6 @@ static int DecodeRtpSpeexPacket( decoder_t *p_dec, block_t *p_speex_bit_block ) p_dec->fmt_out.audio.i_channels = p_sys->p_header->nb_channels; p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = pi_channels_maps[p_sys->p_header->nb_channels]; p_dec->fmt_out.audio.i_rate = p_sys->p_header->rate; diff --git a/modules/codec/uleaddvaudio.c b/modules/codec/uleaddvaudio.c index 665fd124ebceea5c9acdb815fbc4a800ccc2d1b3..b90f0125e4b48b3fa055a7a6b49a248479369cf1 100644 --- a/modules/codec/uleaddvaudio.c +++ b/modules/codec/uleaddvaudio.c @@ -167,8 +167,7 @@ static int Open(vlc_object_t *object) dec->fmt_out.i_codec = VLC_CODEC_S16N; dec->fmt_out.audio.i_rate = dec->fmt_in.audio.i_rate; dec->fmt_out.audio.i_channels = 2; - dec->fmt_out.audio.i_physical_channels = - dec->fmt_out.audio.i_original_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; + dec->fmt_out.audio.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; dec->pf_decode = DecodeAudio; dec->pf_flush = Flush; diff --git a/modules/codec/vorbis.c b/modules/codec/vorbis.c index 592354d9ced3e8a9ef4153212a3d81c0efb0aa41..6c30af825c85a73b1c0f5fbd7283234ac3f45d10 100644 --- a/modules/codec/vorbis.c +++ b/modules/codec/vorbis.c @@ -390,7 +390,6 @@ static int ProcessHeaders( decoder_t *p_dec ) } p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = pi_channels_maps[p_sys->vi.channels]; p_dec->fmt_out.i_bitrate = __MAX( 0, (int32_t) p_sys->vi.bitrate_nominal ); diff --git a/modules/codec/wmafixed/wma.c b/modules/codec/wmafixed/wma.c index 1d65b89174759493516fff0fd480f109e2b3c192..a1b7124f1c38ed2a170b1d6fd840cf6de3be02f7 100644 --- a/modules/codec/wmafixed/wma.c +++ b/modules/codec/wmafixed/wma.c @@ -148,9 +148,8 @@ static int OpenDecoder( vlc_object_t *p_this ) assert( p_dec->fmt_out.audio.i_channels < ( sizeof( pi_channels_maps ) / sizeof( pi_channels_maps[0] ) ) ); - p_dec->fmt_out.audio.i_original_channels = - p_dec->fmt_out.audio.i_physical_channels = - pi_channels_maps[p_dec->fmt_out.audio.i_channels]; + p_dec->fmt_out.audio.i_physical_channels = + pi_channels_maps[p_dec->fmt_out.audio.i_channels]; /* aout core assumes this number is not 0 and uses it in divisions */ assert( p_dec->fmt_out.audio.i_physical_channels != 0 ); diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp index c4f796da2a1247d748f0ed00fc31a67fb5aefab5..28acd332b0ec8fccb9d3998dcb28206731af43ae 100644 --- a/modules/demux/mkv/matroska_segment_parse.cpp +++ b/modules/demux/mkv/matroska_segment_parse.cpp @@ -1512,8 +1512,7 @@ int32_t matroska_segment_c::TrackInit( mkv_track_t * p_tk ) i_channel_mask, p_tk->pi_chan_table ); - p_tk->fmt.audio.i_physical_channels = - p_tk->fmt.audio.i_original_channels = i_channel_mask; + p_tk->fmt.audio.i_physical_channels = i_channel_mask; } } } diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c index 86d718e7793b637dba698c494cc5981bb457921e..74359a4022974185f32118976b8023c940294ce3 100644 --- a/modules/demux/mp4/essetup.c +++ b/modules/demux/mp4/essetup.c @@ -1105,8 +1105,7 @@ int SetupAudioES( demux_t *p_demux, mp4_track_t *p_track, MP4_Box_t *p_sample ) { p_track->b_chans_reorder = true; p_track->fmt.audio.i_channels = i_channels; - p_track->fmt.audio.i_physical_channels = - p_track->fmt.audio.i_original_channels = i_vlc_mapping; + p_track->fmt.audio.i_physical_channels = i_vlc_mapping; } } diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c index 38b06006b471f55940000e84ebac13e6adcb6e8a..896f34615b10ce5062a6cffc538b81e5c6c9e6df 100644 --- a/modules/demux/ogg.c +++ b/modules/demux/ogg.c @@ -189,8 +189,7 @@ static void fill_channels_info(audio_format_t *audio) unsigned chans = audio->i_channels; if (chans < sizeof(pi_channels_map) / sizeof(pi_channels_map[0])) - audio->i_physical_channels = - audio->i_original_channels = pi_channels_map[chans]; + audio->i_physical_channels = pi_channels_map[chans]; } /* Special TS value: don't send or derive any pts/pcr from it. diff --git a/modules/demux/wav.c b/modules/demux/wav.c index d48ca384a486dd8a482b58ffc068e8a79da9e766..f49003990817c44392506b5a400ce9df5c2764ff 100644 --- a/modules/demux/wav.c +++ b/modules/demux/wav.c @@ -310,8 +310,7 @@ static int Open( vlc_object_t * p_this ) p_sys->i_channel_mask, p_sys->i_chans_to_reorder ); } - p_sys->fmt.audio.i_physical_channels = - p_sys->fmt.audio.i_original_channels = p_sys->i_channel_mask; + p_sys->fmt.audio.i_physical_channels = p_sys->i_channel_mask; if( p_sys->fmt.i_extra > 0 ) { diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c index 41a4a9955c119e925ef587c770a47ed00df77120..197ee6c698f753bc17f2fd205d8a6b34da7dc218 100644 --- a/modules/packetizer/a52.c +++ b/modules/packetizer/a52.c @@ -103,9 +103,8 @@ static block_t *GetOutBuffer( decoder_t *p_dec ) p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->frame.i_size; p_dec->fmt_out.audio.i_frame_length = p_sys->frame.i_samples; - p_dec->fmt_out.audio.i_original_channels = p_sys->frame.i_channels_conf; - p_dec->fmt_out.audio.i_physical_channels = - p_sys->frame.i_channels_conf & AOUT_CHAN_PHYSMASK; + p_dec->fmt_out.audio.i_chan_mode = p_sys->frame.i_chan_mode; + p_dec->fmt_out.audio.i_physical_channels = p_sys->frame.i_channels_conf; p_dec->fmt_out.i_bitrate = p_sys->frame.i_bitrate; diff --git a/modules/packetizer/a52.h b/modules/packetizer/a52.h index 3faf24320b1cccbbc720cc11fa0095be059f2165..c46a0f2bb9ed86f418c2d2d6044b7be999acd8a7 100644 --- a/modules/packetizer/a52.h +++ b/modules/packetizer/a52.h @@ -44,6 +44,7 @@ typedef struct unsigned int i_channels; unsigned int i_channels_conf; + unsigned int i_chan_mode; unsigned int i_rate; unsigned int i_bitrate; @@ -153,13 +154,16 @@ static inline int vlc_a52_header_ParseAc3( vlc_a52_header_t *p_header, const uint8_t i_lfeon = bs_read( &s, 1 ); p_header->i_channels_conf = p_acmod[i_acmod]; + p_header->i_chan_mode = 0; if( i_dsurmod == 2 ) - p_header->i_channels_conf |= AOUT_CHAN_DOLBYSTEREO; + p_header->i_chan_mode |= AOUT_CHANMODE_DOLBYSTEREO; + if( i_acmod == 0 ) + p_header->i_chan_mode |= AOUT_CHANMODE_DUALMONO; + if( i_lfeon ) p_header->i_channels_conf |= AOUT_CHAN_LFE; - p_header->i_channels = popcount(p_header->i_channels_conf - & AOUT_CHAN_PHYSMASK); + p_header->i_channels = popcount(p_header->i_channels_conf); const unsigned i_rate_shift = VLC_CLIP(i_bsid, 8, 11) - 8; p_header->i_bitrate = (pi_frmsizcod_bitrates[i_frmsizcod >> 1] * 1000) @@ -214,10 +218,12 @@ static inline int vlc_a52_header_ParseEac3( vlc_a52_header_t *p_header, const unsigned i_lfeon = bs_read1( &s ); p_header->i_channels_conf = p_acmod[i_acmod]; + p_header->i_chan_mode = 0; + if( i_acmod == 0 ) + p_header->i_chan_mode |= AOUT_CHANMODE_DUALMONO; if( i_lfeon ) p_header->i_channels_conf |= AOUT_CHAN_LFE; - p_header->i_channels = popcount( p_header->i_channels_conf - & AOUT_CHAN_PHYSMASK ); + p_header->i_channels = popcount( p_header->i_channels_conf ); p_header->i_bitrate = 8 * p_header->i_size * p_header->i_rate / (p_header->i_blocks_per_sync_frame * 256); p_header->i_samples = p_header->i_blocks_per_sync_frame * 256; @@ -236,7 +242,7 @@ static inline int vlc_a52_header_Parse( vlc_a52_header_t *p_header, const uint8_t *p_buffer, int i_buffer ) { static const uint32_t p_acmod[8] = { - AOUT_CHANS_2_0 | AOUT_CHAN_DUALMONO, + AOUT_CHANS_2_0, AOUT_CHAN_CENTER, AOUT_CHANS_2_0, AOUT_CHANS_3_0, diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c index 44239847b3358ca31c756169e72feaadb563b9e6..d9eb147ce967746f9a50ab5baea8fc45c93c5596 100644 --- a/modules/packetizer/dts.c +++ b/modules/packetizer/dts.c @@ -102,9 +102,8 @@ static block_t *GetOutBuffer( decoder_t *p_dec ) p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->dts.i_frame_size; p_dec->fmt_out.audio.i_frame_length = p_sys->dts.i_frame_length; - p_dec->fmt_out.audio.i_original_channels = p_sys->dts.i_original_channels; - p_dec->fmt_out.audio.i_physical_channels = - p_sys->dts.i_original_channels & AOUT_CHAN_PHYSMASK; + p_dec->fmt_out.audio.i_chan_mode = p_sys->dts.i_chan_mode; + p_dec->fmt_out.audio.i_physical_channels = p_sys->dts.i_physical_channels; p_dec->fmt_out.audio.i_channels = popcount( p_dec->fmt_out.audio.i_physical_channels ); diff --git a/modules/packetizer/dts_header.c b/modules/packetizer/dts_header.c index 8074a627d315425d20c44bcdd360790a7e8e20e4..36dd8bac5bebbb89651c437cdb67990b9c9cdfbd 100644 --- a/modules/packetizer/dts_header.c +++ b/modules/packetizer/dts_header.c @@ -162,7 +162,8 @@ static unsigned int dca_get_bitrate( uint8_t i_rate ) return p_dca_bitrates[i_rate]; } -static uint32_t dca_get_channels( uint8_t i_amode, bool b_lfe ) +static uint16_t dca_get_channels( uint8_t i_amode, bool b_lfe, + uint16_t *p_chan_mode ) { /* See ETSI TS 102 114, table 5-4 * 00: A @@ -183,59 +184,60 @@ static uint32_t dca_get_channels( uint8_t i_amode, bool b_lfe ) * 0F: CL + C + CR + L + R + SL + S + SR * 10-3F: user defined */ - uint32_t i_original_channels; + uint16_t i_physical_channels; switch( i_amode ) { case 0x0: - i_original_channels = AOUT_CHAN_CENTER; + i_physical_channels = AOUT_CHAN_CENTER; break; case 0x1: - i_original_channels = AOUT_CHANS_FRONT | AOUT_CHAN_DUALMONO; + i_physical_channels = AOUT_CHANS_FRONT; + *p_chan_mode = AOUT_CHANMODE_DUALMONO; break; case 0x2: case 0x3: case 0x4: - i_original_channels = AOUT_CHANS_FRONT; + i_physical_channels = AOUT_CHANS_FRONT; break; case 0x5: - i_original_channels = AOUT_CHANS_3_0; + i_physical_channels = AOUT_CHANS_3_0; break; case 0x6: - i_original_channels = AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER; + i_physical_channels = AOUT_CHANS_FRONT | AOUT_CHAN_REARCENTER; break; case 0x7: - i_original_channels = AOUT_CHANS_4_CENTER_REAR; + i_physical_channels = AOUT_CHANS_4_CENTER_REAR; break; case 0x8: - i_original_channels = AOUT_CHANS_4_0; + i_physical_channels = AOUT_CHANS_4_0; break; case 0x9: - i_original_channels = AOUT_CHANS_5_0; + i_physical_channels = AOUT_CHANS_5_0; break; case 0xA: case 0xB: - i_original_channels = AOUT_CHANS_6_0; + i_physical_channels = AOUT_CHANS_6_0; break; case 0xC: - i_original_channels = AOUT_CHANS_CENTER | AOUT_CHANS_FRONT + i_physical_channels = AOUT_CHANS_CENTER | AOUT_CHANS_FRONT | AOUT_CHANS_REAR; break; case 0xD: - i_original_channels = AOUT_CHANS_7_0; + i_physical_channels = AOUT_CHANS_7_0; break; case 0xE: case 0xF: /* FIXME: AOUT_CHANS_8_0 */ - i_original_channels = AOUT_CHANS_7_0; + i_physical_channels = AOUT_CHANS_7_0; break; default: return 0; } if (b_lfe) - i_original_channels |= AOUT_CHAN_LFE; + i_physical_channels |= AOUT_CHAN_LFE; - return i_original_channels; + return i_physical_channels; } static int dts_header_ParseSubstream( vlc_dts_header_t *p_header, @@ -290,10 +292,12 @@ static int dts_header_ParseCore( vlc_dts_header_t *p_header, : ( i_fsize + 1 ) * 16 / 14; /* See ETSI TS 102 114, table 5-2 */ p_header->i_frame_length = (i_nblks + 1) * 32; - p_header->i_original_channels = dca_get_channels( i_amode, b_lfe ); + p_header->i_chan_mode = 0; + p_header->i_physical_channels = + dca_get_channels( i_amode, b_lfe, &p_header->i_chan_mode ); if( !p_header->i_rate || !p_header->i_frame_size || - !p_header->i_frame_length || !p_header->i_original_channels ) + !p_header->i_frame_length || !p_header->i_physical_channels ) return VLC_EGENERIC; return VLC_SUCCESS; diff --git a/modules/packetizer/dts_header.h b/modules/packetizer/dts_header.h index c5740559a7e09f18e0d813bb3949807a07251b23..9be4924a3799c31e018bda1f1f662509a56558b3 100644 --- a/modules/packetizer/dts_header.h +++ b/modules/packetizer/dts_header.h @@ -31,7 +31,8 @@ typedef struct unsigned int i_bitrate; unsigned int i_frame_size; unsigned int i_frame_length; - uint32_t i_original_channels; + uint16_t i_physical_channels; + uint16_t i_chan_mode; } vlc_dts_header_t; int vlc_dts_header_Parse( vlc_dts_header_t *p_header, diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c index eca86fa5053fc37be5ab6cfad3ef5d69d68c0038..309804a2899e26314381fd24856414fb7bdab3ea 100644 --- a/modules/packetizer/flac.c +++ b/modules/packetizer/flac.c @@ -763,8 +763,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) p_sys->i_frame_size = 0; p_dec->fmt_out.audio.i_channels = p_sys->i_channels; - p_dec->fmt_out.audio.i_physical_channels = - p_dec->fmt_out.audio.i_original_channels = pi_channels_maps[p_sys->stream_info.channels]; + p_dec->fmt_out.audio.i_physical_channels = pi_channels_maps[p_sys->stream_info.channels]; /* So p_block doesn't get re-added several times */ if ( pp_block ) diff --git a/modules/packetizer/mlp.c b/modules/packetizer/mlp.c index 389fefe687a5d311c25e1021a2ca53b048c68f0d..e16aca157c0ff5cb65ef0e3a4809645fd727326b 100644 --- a/modules/packetizer/mlp.c +++ b/modules/packetizer/mlp.c @@ -431,7 +431,6 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) p_dec->fmt_out.audio.i_rate = p_sys->mlp.i_rate; p_dec->fmt_out.audio.i_channels = p_sys->mlp.i_channels; - p_dec->fmt_out.audio.i_original_channels = p_sys->mlp.i_channels_conf; p_dec->fmt_out.audio.i_physical_channels = p_sys->mlp.i_channels_conf; p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->i_frame_size; p_dec->fmt_out.audio.i_frame_length = p_sys->mlp.i_samples; diff --git a/modules/packetizer/mpeg4audio.c b/modules/packetizer/mpeg4audio.c index 45ff7e2af726ee38f951b7987c9ed610a3379d12..bb7e5663a5742521ea3d1a4c0b8b1320ac093789 100644 --- a/modules/packetizer/mpeg4audio.c +++ b/modules/packetizer/mpeg4audio.c @@ -978,7 +978,6 @@ static void SetupOutput(decoder_t *p_dec, block_t *p_block) p_dec->fmt_out.audio.i_frame_length = p_sys->i_frame_length; #if 0 - p_dec->fmt_out.audio.i_original_channels = p_sys->i_channels_conf; p_dec->fmt_out.audio.i_physical_channels = p_sys->i_channels_conf; #endif diff --git a/modules/packetizer/mpegaudio.c b/modules/packetizer/mpegaudio.c index 66137c00060001ad24ca090bab195637cf3a101b..d2f0186234bdbf3b5e03e84935d67fcc617c40e3 100644 --- a/modules/packetizer/mpegaudio.c +++ b/modules/packetizer/mpegaudio.c @@ -62,7 +62,7 @@ struct decoder_sys_t mtime_t i_pts; int i_frame_size, i_free_frame_size; - unsigned int i_channels_conf, i_channels; + unsigned int i_channels_conf, i_chan_mode, i_channels; unsigned int i_rate, i_max_frame_size, i_frame_length; unsigned int i_layer, i_bit_rate; @@ -128,9 +128,8 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, block_t **pp_out_buffer ) p_dec->fmt_out.audio.i_frame_length = p_sys->i_frame_length; p_dec->fmt_out.audio.i_bytes_per_frame = p_sys->i_max_frame_size; - p_dec->fmt_out.audio.i_original_channels = p_sys->i_channels_conf; - p_dec->fmt_out.audio.i_physical_channels = - p_sys->i_channels_conf & AOUT_CHAN_PHYSMASK; + p_dec->fmt_out.audio.i_physical_channels = p_sys->i_channels_conf; + p_dec->fmt_out.audio.i_chan_mode = p_sys->i_chan_mode; p_dec->fmt_out.i_bitrate = p_sys->i_bit_rate * 1000; @@ -151,6 +150,7 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, block_t **pp_out_buffer ) *****************************************************************************/ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels, unsigned int * pi_channels_conf, + unsigned int * pi_chan_mode, unsigned int * pi_sample_rate, unsigned int * pi_bit_rate, unsigned int * pi_frame_length, unsigned int * pi_max_frame_size, unsigned int * pi_layer) @@ -205,6 +205,7 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels, i_mode = (i_header & 0xc0) >> 6; /* Modeext, copyright & original */ i_emphasis = i_header & 0x3; + *pi_chan_mode = 0; if( *pi_layer != 4 && i_bitrate_index < 0x0f && @@ -213,16 +214,14 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels, { switch ( i_mode ) { + case 2: /* dual-mono */ + *pi_chan_mode = AOUT_CHANMODE_DUALMONO; + /* fall through */ case 0: /* stereo */ case 1: /* joint stereo */ *pi_channels = 2; *pi_channels_conf = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; break; - case 2: /* dual-mono */ - *pi_channels = 2; - *pi_channels_conf = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT - | AOUT_CHAN_DUALMONO; - break; case 3: /* mono */ *pi_channels = 1; *pi_channels_conf = AOUT_CHAN_CENTER; @@ -379,6 +378,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) p_sys->i_frame_size = SyncInfo( i_header, &p_sys->i_channels, &p_sys->i_channels_conf, + &p_sys->i_chan_mode, &p_sys->i_rate, &p_sys->i_bit_rate, &p_sys->i_frame_length, @@ -427,7 +427,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) { /* Startcode is fine, let's try the header as an extra check */ int i_next_frame_size; - unsigned int i_next_channels, i_next_channels_conf; + unsigned int i_next_channels, i_next_stereo_mode, i_next_channels_conf; unsigned int i_next_rate, i_next_bit_rate; unsigned int i_next_frame_length, i_next_max_frame_size; unsigned int i_next_layer; @@ -438,6 +438,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) i_next_frame_size = SyncInfo( i_header, &i_next_channels, &i_next_channels_conf, + &i_next_stereo_mode, &i_next_rate, &i_next_bit_rate, &i_next_frame_length, @@ -473,6 +474,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) /* Check info is in sync with previous one */ if( i_next_channels_conf != p_sys->i_channels_conf || + i_next_stereo_mode != p_sys->i_chan_mode || i_next_rate != p_sys->i_rate || i_next_layer != p_sys->i_layer || i_next_frame_length != p_sys->i_frame_length ) @@ -630,9 +632,9 @@ static int Open( vlc_object_t *p_this ) p_sys->b_discontinuity = false; p_sys->i_frame_size = 0; - p_sys->i_channels_conf = p_sys->i_channels = p_sys->i_rate = - p_sys->i_max_frame_size = p_sys->i_frame_length = p_sys->i_layer = - p_sys->i_bit_rate = 0; + p_sys->i_channels_conf = p_sys->i_chan_mode = p_sys->i_channels = + p_sys->i_rate = p_sys->i_max_frame_size = p_sys->i_frame_length = + p_sys->i_layer = p_sys->i_bit_rate = 0; /* Set output properties */ p_dec->fmt_out.i_codec = VLC_CODEC_MPGA; diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c index 9a2357020a092235595f7271b4f685b522ccda29..e92af6e72ccbf597c6dc7313f11fd5f7c5d7cb69 100644 --- a/modules/stream_out/transcode/audio.c +++ b/modules/stream_out/transcode/audio.c @@ -120,12 +120,10 @@ static int transcode_audio_initialize_encoder( sout_stream_id_sys_t *id, sout_st /* Fix input format */ id->p_encoder->fmt_in.audio.i_format = id->p_encoder->fmt_in.i_codec; - if( !id->p_encoder->fmt_in.audio.i_physical_channels - || !id->p_encoder->fmt_in.audio.i_original_channels ) + if( !id->p_encoder->fmt_in.audio.i_physical_channels ) { if( id->p_encoder->fmt_in.audio.i_channels < (sizeof(pi_channels_maps) / sizeof(*pi_channels_maps)) ) id->p_encoder->fmt_in.audio.i_physical_channels = - id->p_encoder->fmt_in.audio.i_original_channels = pi_channels_maps[id->p_encoder->fmt_in.audio.i_channels]; } aout_FormatPrepare( &id->p_encoder->fmt_in.audio ); @@ -265,10 +263,6 @@ int transcode_audio_process( sout_stream_t *p_stream, id->p_encoder->fmt_out.audio.i_channels = p_sys->i_channels > 0 ? p_sys->i_channels : id->p_decoder->fmt_out.audio.i_channels; - id->p_encoder->fmt_in.audio.i_original_channels = - id->p_encoder->fmt_out.audio.i_original_channels = - id->p_decoder->fmt_out.audio.i_physical_channels; - id->p_encoder->fmt_in.audio.i_physical_channels = id->p_encoder->fmt_out.audio.i_physical_channels = pi_channels_maps[id->p_encoder->fmt_out.audio.i_channels]; @@ -388,10 +382,6 @@ bool transcode_audio_add( sout_stream_t *p_stream, const es_format_t *p_fmt, id->p_encoder->fmt_out.audio.i_channels = p_sys->i_channels > 0 ? p_sys->i_channels : p_fmt->audio.i_channels; - id->p_encoder->fmt_in.audio.i_original_channels = - id->p_encoder->fmt_out.audio.i_original_channels = - id->p_decoder->fmt_out.audio.i_physical_channels; - id->p_encoder->fmt_in.audio.i_physical_channels = id->p_encoder->fmt_out.audio.i_physical_channels = pi_channels_maps[id->p_encoder->fmt_out.audio.i_channels]; diff --git a/src/audio_output/aout_internal.h b/src/audio_output/aout_internal.h index f84a36321eeb6ba04aafab2cb8361f437e3c9683..933304bf641b271651600d18307df54df9f50041 100644 --- a/src/audio_output/aout_internal.h +++ b/src/audio_output/aout_internal.h @@ -163,7 +163,6 @@ static inline void aout_SetWavePhysicalChannels(audio_sample_format_t *fmt) fmt->i_physical_channels = 0; for (int i = 0; i < fmt->i_channels && i < AOUT_CHAN_MAX; ++i) fmt->i_physical_channels |= wave_channels[i]; - fmt->i_original_channels = fmt->i_physical_channels; aout_FormatPrepare(fmt); } diff --git a/src/audio_output/common.c b/src/audio_output/common.c index bba122d7582af50ce14fe08623a9d233cc543472..a1e7cfbf2672a223484d348d6fe3e20326fc7eaa 100644 --- a/src/audio_output/common.c +++ b/src/audio_output/common.c @@ -110,23 +110,23 @@ const char * aout_FormatPrintChannels( const audio_sample_format_t * p_format ) case AOUT_CHAN_LEFT: case AOUT_CHAN_RIGHT: case AOUT_CHAN_CENTER: - if ( (p_format->i_original_channels & AOUT_CHAN_CENTER) - || (p_format->i_original_channels + if ( (p_format->i_physical_channels & AOUT_CHAN_CENTER) + || (p_format->i_physical_channels & (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) ) return "Mono"; - else if ( p_format->i_original_channels & AOUT_CHAN_LEFT ) + else if ( p_format->i_physical_channels & AOUT_CHAN_LEFT ) return "Left"; return "Right"; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT: - if ( p_format->i_original_channels & AOUT_CHAN_DOLBYSTEREO ) + if ( p_format->i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO ) return "Dolby"; - else if ( p_format->i_original_channels & AOUT_CHAN_DUALMONO ) + else if ( p_format->i_chan_mode & AOUT_CHANMODE_DUALMONO ) return "Dual-mono"; - else if ( p_format->i_original_channels == AOUT_CHAN_CENTER ) + else if ( p_format->i_physical_channels == AOUT_CHAN_CENTER ) return "Stereo/Mono"; - else if ( !(p_format->i_original_channels & AOUT_CHAN_RIGHT) ) + else if ( !(p_format->i_physical_channels & AOUT_CHAN_RIGHT) ) return "Stereo/Left"; - else if ( !(p_format->i_original_channels & AOUT_CHAN_LEFT) ) + else if ( !(p_format->i_physical_channels & AOUT_CHAN_LEFT) ) return "Stereo/Right"; return "Stereo"; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER: @@ -150,23 +150,23 @@ const char * aout_FormatPrintChannels( const audio_sample_format_t * p_format ) return "3F2M"; case AOUT_CHAN_CENTER | AOUT_CHAN_LFE: - if ( (p_format->i_original_channels & AOUT_CHAN_CENTER) - || (p_format->i_original_channels + if ( (p_format->i_physical_channels & AOUT_CHAN_CENTER) + || (p_format->i_physical_channels & (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) ) return "Mono/LFE"; - else if ( p_format->i_original_channels & AOUT_CHAN_LEFT ) + else if ( p_format->i_physical_channels & AOUT_CHAN_LEFT ) return "Left/LFE"; return "Right/LFE"; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_LFE: - if ( p_format->i_original_channels & AOUT_CHAN_DOLBYSTEREO ) + if ( p_format->i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO ) return "Dolby/LFE"; - else if ( p_format->i_original_channels & AOUT_CHAN_DUALMONO ) + else if ( p_format->i_chan_mode & AOUT_CHANMODE_DUALMONO ) return "Dual-mono/LFE"; - else if ( p_format->i_original_channels == AOUT_CHAN_CENTER ) + else if ( p_format->i_physical_channels == AOUT_CHAN_CENTER ) return "Mono/LFE"; - else if ( !(p_format->i_original_channels & AOUT_CHAN_RIGHT) ) + else if ( !(p_format->i_physical_channels & AOUT_CHAN_RIGHT) ) return "Stereo/Left/LFE"; - else if ( !(p_format->i_original_channels & AOUT_CHAN_LEFT) ) + else if ( !(p_format->i_physical_channels & AOUT_CHAN_LEFT) ) return "Stereo/Right/LFE"; return "Stereo/LFE"; case AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_LFE: diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c index 3f4ac4e073521c368e851d3ddea8c64265041cb5..f74ac6563c61a2e0e6a4c952f9a55fbb966efb6c 100644 --- a/src/audio_output/filters.c +++ b/src/audio_output/filters.c @@ -163,7 +163,7 @@ static int aout_FiltersPipelineCreate(vlc_object_t *obj, filter_t **filters, /* Remix channels */ if (infmt->i_physical_channels != outfmt->i_physical_channels - || infmt->i_original_channels != outfmt->i_original_channels) + || infmt->i_chan_mode != outfmt->i_chan_mode) { /* Remixing currently requires FL32... TODO: S16N */ if (input.i_format != VLC_CODEC_FL32) { @@ -188,7 +188,7 @@ static int aout_FiltersPipelineCreate(vlc_object_t *obj, filter_t **filters, output.i_format = input.i_format; output.i_rate = input.i_rate; output.i_physical_channels = outfmt->i_physical_channels; - output.i_original_channels = outfmt->i_original_channels; + output.i_chan_mode = outfmt->i_chan_mode; aout_FormatPrepare (&output); filter_t *f = FindConverter (obj, &input, &output); diff --git a/src/audio_output/output.c b/src/audio_output/output.c index a41008dde4280060ddffffd65c98d96f24674444..e362b81e83888d56705d4a9db227d65208f2eecd 100644 --- a/src/audio_output/output.c +++ b/src/audio_output/output.c @@ -427,7 +427,7 @@ int aout_OutputNew (audio_output_t *aout, audio_sample_format_t *restrict fmt, txt.psz_string = _("Original"); var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val, &txt); } - if (fmt->i_original_channels & AOUT_CHAN_DOLBYSTEREO) + if (fmt->i_chan_mode & AOUT_CHANMODE_DOLBYSTEREO) { val.i_int = AOUT_VAR_CHAN_DOLBYS; txt.psz_string = _("Dolby Surround"); @@ -469,10 +469,10 @@ int aout_OutputNew (audio_output_t *aout, audio_sample_format_t *restrict fmt, remap[AOUT_CHANIDX_LEFT] = AOUT_CHANIDX_DISABLE; break; case AOUT_VAR_CHAN_DOLBYS: - fmt->i_original_channels = AOUT_CHANS_STEREO|AOUT_CHAN_DOLBYSTEREO; + fmt->i_chan_mode = AOUT_CHANMODE_DOLBYSTEREO; break; default: - if (fmt->i_original_channels == (AOUT_CHANS_STEREO | AOUT_CHAN_DUALMONO)) + if (b_stereo_original && fmt->i_chan_mode & AOUT_CHANMODE_DUALMONO) { /* Go directly to the left channel. */ remap[AOUT_CHANIDX_RIGHT] = AOUT_CHANIDX_DISABLE; val.i_int = AOUT_VAR_CHAN_LEFT; diff --git a/src/input/decoder.c b/src/input/decoder.c index b292658b382f0940d073be3c957c85eb652e57e4..0cacb4ccfda5feade9809f3d26f2d001b491f5c6 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -347,19 +347,12 @@ static int aout_update_format( decoder_t *p_dec ) const int i_force_dolby = var_InheritInteger( p_dec, "force-dolby-surround" ); if( i_force_dolby && - (format.i_original_channels&AOUT_CHAN_PHYSMASK) == - (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT) ) + format.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT) ) { if( i_force_dolby == 1 ) - { - format.i_original_channels = format.i_original_channels | - AOUT_CHAN_DOLBYSTEREO; - } + format.i_chan_mode |= AOUT_CHANMODE_DOLBYSTEREO; else /* i_force_dolby == 2 */ - { - format.i_original_channels = format.i_original_channels & - ~AOUT_CHAN_DOLBYSTEREO; - } + format.i_chan_mode &= ~AOUT_CHANMODE_DOLBYSTEREO; } aout_request_vout_t request_vout = { diff --git a/src/misc/es_format.c b/src/misc/es_format.c index a436599058abc73f554ab419e8aa30ff70b1648b..b37a35418836708e7f25d050dadbde18a3b34b4d 100644 --- a/src/misc/es_format.c +++ b/src/misc/es_format.c @@ -583,7 +583,7 @@ bool es_format_IsSimilar( const es_format_t *p_fmt1, const es_format_t *p_fmt2 ) if( a1.i_rate != a2.i_rate || a1.i_channels != a2.i_channels || a1.i_physical_channels != a2.i_physical_channels || - a1.i_original_channels != a2.i_original_channels ) + a1.i_chan_mode != a2.i_chan_mode ) return false; return true; }