+ /* */
+ int i_col;
+ int i_row;
+ panoramix_output_t pp_output[COL_MAX][ROW_MAX]; /* [x][y] */
+};
+
+/* */
+static int Filter( video_splitter_t *, picture_t *pp_dst[], picture_t * );
+
+static int Mouse( video_splitter_t *, vlc_mouse_t *,
+ int i_index,
+ const vlc_mouse_t *p_old, const vlc_mouse_t *p_new );
+
+
+/* */
+static int Configuration( panoramix_output_t pp_output[ROW_MAX][COL_MAX],
+ int i_col, int i_row,
+ int i_src_width, int i_src_height,
+ int i_half_w, int i_half_h,
+ bool b_attenuate,
+ const bool *pb_active );
+static double GammaFactor( const panoramix_gamma_t *, float f_value );
+
+static void FilterPlanar( uint8_t *p_out, int i_out_pitch,
+ const uint8_t *p_in, int i_in_pitch,
+ int i_copy_pitch,
+ int i_copy_lines,
+ int i_pixel_black,
+ const panoramix_filter_t *,
+ uint8_t p_lut[ACCURACY + 1][256],
+ int lambdav[2][ACCURACY/2],
+ int lambdah[2][ACCURACY/2] );
+
+/* */
+static const panoramix_chroma_t p_chroma_array[] = {
+ /* Planar chroma */
+ { VLC_CODEC_I410, { 1, 4, 4, }, { 1, 1, 1, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_I411, { 1, 4, 4, }, { 1, 4, 4, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_YV12, { 1, 2, 2, }, { 1, 2, 2, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_I420, { 1, 2, 2, }, { 1, 2, 2, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_J420, { 1, 2, 2, }, { 1, 2, 2, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_I422, { 1, 2, 2, }, { 1, 1, 1, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_J422, { 1, 2, 2, }, { 1, 1, 1, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_I440, { 1, 1, 1, }, { 1, 2, 2, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_J440, { 1, 1, 1, }, { 1, 2, 2, }, { 0, 128, 128 }, true },
+ { VLC_CODEC_I444, { 1, 1, 1, }, { 1, 1, 1, }, { 0, 128, 128 }, true },
+ /* TODO packed chroma (yuv/rgb) ? */
+
+ { 0, {0, }, { 0, }, { 0, 0, 0 }, false }
+};
+
+#ifndef _WIN32
+/* Get the number of outputs */
+static unsigned CountMonitors( vlc_object_t *obj )