[vlc-devel] [RFC] audio: let VLC decode more than 9 audio channels
Jean-Baptiste Kempf
jb at videolan.org
Wed Oct 7 10:42:16 CEST 2015
On 06 Oct, Emeric Grange wrote :
> These channels doesn't have to correspond to "real" output speakers, so the code
> related to new speakers from the WAVE_FORMAT_PCM is just here to avoid VLC
> segfaulting when playing these files directly.
Then you need to work on object-based audio.
> - AOUT_CHAN_CENTER, AOUT_CHAN_LFE, 0
> + AOUT_CHAN_CENTER, AOUT_CHAN_LFE,
> +
> + AOUT_CHAN_SIDE_LEFT,
> + AOUT_CHAN_SIDE_RIGHT,
This is MIDDLE_LEFT, MIDDLE_RIGHT.
> + AOUT_CHAN_TOP_CENTER,
> + AOUT_CHAN_TOP_FRONT_CENTER,
> + AOUT_CHAN_TOP_FRONT_LEFT,
> + AOUT_CHAN_TOP_FRONT_RIGHT,
> + AOUT_CHAN_TOP_BACK_CENTER,
> + AOUT_CHAN_TOP_BACK_LEFT,
> + AOUT_CHAN_TOP_BACK_RIGHT,
> +
> + 0
> };
>
> #define AOUT_RESTART_FILTERS 1
> diff --git a/include/vlc_es.h b/include/vlc_es.h
> index 97cdb78..bf0bc11 100644
> --- a/include/vlc_es.h
> +++ b/include/vlc_es.h
> @@ -108,13 +108,28 @@ struct audio_format_t
> #define AOUT_CHAN_REARRIGHT 0x40
> #define AOUT_CHAN_MIDDLELEFT 0x100
> #define AOUT_CHAN_MIDDLERIGHT 0x200
> -#define AOUT_CHAN_LFE 0x1000
> +
> +#define AOUT_CHAN_SIDE_LEFT 0x100
> +#define AOUT_CHAN_SIDE_RIGHT 0x200
See above.
> +#define AOUT_CHAN_TOP_CENTER 0x400
> +#define AOUT_CHAN_TOP_FRONT_CENTER 0x800
> +#define AOUT_CHAN_TOP_FRONT_LEFT 0x1000
> +#define AOUT_CHAN_TOP_FRONT_RIGHT 0x2000
> +#define AOUT_CHAN_TOP_BACK_CENTER 0x4000
> +#define AOUT_CHAN_TOP_BACK_LEFT 0x8000
> +#define AOUT_CHAN_TOP_BACK_RIGHT 0x10000
> +
> +#define AOUT_CHAN_LFE 0x80000
OK.
>
> #define AOUT_CHANS_FRONT (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)
> #define AOUT_CHANS_MIDDLE (AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT)
> #define AOUT_CHANS_REAR (AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT)
> #define AOUT_CHANS_CENTER (AOUT_CHAN_CENTER | AOUT_CHAN_REARCENTER)
>
> +#define AOUT_CHANS_TOP_FRONT (AOUT_CHAN_TOP_FRONT_LEFT | AOUT_CHAN_TOP_FRONT_RIGHT)
> +#define AOUT_CHANS_TOP_REAR (AOUT_CHAN_TOP_BACK_LEFT | AOUT_CHAN_TOP_BACK_LEFT)
> +#define AOUT_CHANS_TOP_CENTER (AOUT_CHAN_TOP_CENTER | AOUT_CHAN_TOP_FRONT_CENTER | AOUT_CHAN_TOP_BACK_CENTER)
> +
> #define AOUT_CHANS_STEREO AOUT_CHANS_2_0
> #define AOUT_CHANS_2_0 (AOUT_CHANS_FRONT)
> #define AOUT_CHANS_2_1 (AOUT_CHANS_FRONT | AOUT_CHAN_LFE)
> @@ -128,6 +143,7 @@ struct audio_format_t
> #define AOUT_CHANS_7_0 (AOUT_CHANS_6_0 | AOUT_CHAN_CENTER)
> #define AOUT_CHANS_7_1 (AOUT_CHANS_5_1 | AOUT_CHANS_MIDDLE)
> #define AOUT_CHANS_8_1 (AOUT_CHANS_7_1 | AOUT_CHAN_REARCENTER)
> +#define AOUT_CHANS_16_0 (AOUT_CHANS_8_1 | AOUT_CHANS_TOP_FRONT | AOUT_CHANS_TOP_REAR | AOUT_CHANS_TOP_CENTER)
This is incorrect.
> #define AOUT_CHANS_4_0_MIDDLE (AOUT_CHANS_FRONT | AOUT_CHANS_MIDDLE)
> #define AOUT_CHANS_4_CENTER_REAR (AOUT_CHANS_FRONT | AOUT_CHANS_CENTER)
> @@ -135,12 +151,12 @@ struct audio_format_t
> #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_REVERSESTEREO 0x40000
> +#define AOUT_CHAN_DOLBYSTEREO 0x100000
> +#define AOUT_CHAN_DUALMONO 0x200000
> +#define AOUT_CHAN_REVERSESTEREO 0x400000
You cannot change that, without breaking all the existing plugins.
> #define AOUT_CHAN_PHYSMASK 0xFFFF
> -#define AOUT_CHAN_MAX 9
> +#define AOUT_CHAN_MAX 18
With my kindest regards,
--
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
More information about the vlc-devel
mailing list