1 /*
2  * This file is part of bino, a 3D video player.
3  *
4  * Copyright (C) 2010, 2011, 2012, 2013, 2014
5  * Martin Lambers <marlam@marlam.de>
6  * Frédéric Devernay <Frederic.Devernay@inrialpes.fr>
7  * Joe <cuchac@email.cz>
8  * Daniel Schaal <farbing@web.de>
9  * D. Matz <bandregent@yahoo.de>
10  * Binocle <http://binocle.com> (author: Olivier Letz <oletz@binocle.com>)
11  * Frédéric Bour <frederic.bour@lakaban.net>
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 3 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
25  */
26 
27 #include "config.h"
28 
29 #include <QLabel>
30 #include <QComboBox>
31 #include <QGridLayout>
32 
33 #include "sdioutputdialog.h"
34 
35 #include "gui_common.h"
36 
37 #if HAVE_LIBXNVCTRL
38 #include <NVCtrl/NVCtrl.h>
39 #include "NvSDIutils.h"
40 #endif // HAVE_LIBXNVCTRL
41 
sdi_output_dialog(QWidget * parent)42 sdi_output_dialog::sdi_output_dialog(QWidget *parent) : QWidget(parent),
43     _lock(false)
44 {
45 #if HAVE_LIBXNVCTRL
46 
47     QLabel *sdi_output_format_label = new QLabel(_("SDI Output Format:"));
48     sdi_output_format_label->setToolTip(_("<p>Select output format used for SDI output.</p>"));
49     _sdi_output_format_combobox = new QComboBox();
50     _sdi_output_format_combobox->setToolTip(sdi_output_format_label->toolTip());
51     for (int i=NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC; i < NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372+1; ++i) {
52         _sdi_output_format_combobox->addItem(decodeSignalFormat(i));
53     }
54     connect(_sdi_output_format_combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(sdi_output_format_changed(int)));
55 
56     QLabel *sdi_output_left_stereo_mode_label = new QLabel(_("Left stereo mode:"));
57     sdi_output_left_stereo_mode_label->setToolTip(_("<p>Select stereo mode used for left SDI output.</p>"));
58     _sdi_output_left_stereo_mode_combobox = new QComboBox();
59     _sdi_output_left_stereo_mode_combobox->setToolTip(sdi_output_left_stereo_mode_label->toolTip());
60     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-mono-left.png"), _("Left view"));
61     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-mono-right.png"), _("Right view"));
62     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-top-bottom.png"), _("Top/bottom"));
63     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-top-bottom-half.png"), _("Top/bottom, half height"));
64     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-left-right.png"), _("Left/right"));
65     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-left-right-half.png"), _("Left/right, half width"));
66     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-even-odd-rows.png"), _("Even/odd rows"));
67     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-even-odd-columns.png"), _("Even/odd columns"));
68     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-checkerboard.png"), _("Checkerboard pattern"));
69     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, monochrome"));
70     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, half color"));
71     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, full color"));
72     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, Dubois"));
73     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, monochrome"));
74     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, half color"));
75     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, full color"));
76     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, Dubois"));
77     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, monochrome"));
78     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, half color"));
79     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, full color"));
80     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, Dubois"));
81     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-green.png"), _("Red/green glasses, monochrome"));
82     _sdi_output_left_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-blue.png"), _("Red/blue glasses, monochrome"));
83     connect(_sdi_output_left_stereo_mode_combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(sdi_output_left_stereo_mode_changed(int)));
84 
85     QLabel *sdi_output_right_stereo_mode_label = new QLabel(_("Right stereo mode:"));
86     sdi_output_right_stereo_mode_label->setToolTip(_("<p>Select stereo mode used for right SDI output.</p>"));
87     _sdi_output_right_stereo_mode_combobox = new QComboBox();
88     _sdi_output_right_stereo_mode_combobox->setToolTip(sdi_output_right_stereo_mode_label->toolTip());
89     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-mono-left.png"), _("Left view"));
90     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-mono-right.png"), _("Right view"));
91     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-top-bottom.png"), _("Top/bottom"));
92     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-top-bottom-half.png"), _("Top/bottom, half height"));
93     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-left-right.png"), _("Left/right"));
94     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-left-right-half.png"), _("Left/right, half width"));
95     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-even-odd-rows.png"), _("Even/odd rows"));
96     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-even-odd-columns.png"), _("Even/odd columns"));
97     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-checkerboard.png"), _("Checkerboard pattern"));
98     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, monochrome"));
99     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, half color"));
100     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, full color"));
101     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-cyan.png"), _("Red/cyan glasses, Dubois"));
102     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, monochrome"));
103     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, half color"));
104     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, full color"));
105     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-green-magenta.png"), _("Green/magenta glasses, Dubois"));
106     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, monochrome"));
107     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, half color"));
108     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, full color"));
109     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-amber-blue.png"), _("Amber/blue glasses, Dubois"));
110     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-green.png"), _("Red/green glasses, monochrome"));
111     _sdi_output_right_stereo_mode_combobox->addItem(QIcon(":icons-local/output-type-red-blue.png"), _("Red/blue glasses, monochrome"));
112     connect(_sdi_output_right_stereo_mode_combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(sdi_output_right_stereo_mode_changed(int)));
113 
114     QGridLayout *layout = new QGridLayout;
115     layout->addWidget(sdi_output_format_label, 0, 0);
116     layout->addWidget(_sdi_output_format_combobox, 0, 1, 1, 1);
117     layout->addWidget(sdi_output_left_stereo_mode_label, 1, 0);
118     layout->addWidget(_sdi_output_left_stereo_mode_combobox, 1, 1);
119     layout->addWidget(sdi_output_right_stereo_mode_label, 2, 0);
120     layout->addWidget(_sdi_output_right_stereo_mode_combobox, 2, 1);
121     setLayout(layout);
122 
123     update();
124 #endif // HAVE_LIBXNVCTRL
125 }
126 
update()127 void sdi_output_dialog::update()
128 {
129 #if HAVE_LIBXNVCTRL
130     _lock = true;
131     set_sdi_output_format(dispatch::parameters().sdi_output_format());
132     set_sdi_output_left_stereo_mode(dispatch::parameters().sdi_output_left_stereo_mode());
133     set_sdi_output_right_stereo_mode(dispatch::parameters().sdi_output_right_stereo_mode());
134     _lock = false;
135 #endif // HAVE_LIBXNVCTRL
136 }
137 
set_sdi_output_format(int val)138 void sdi_output_dialog::set_sdi_output_format(int val)
139 {
140 #if HAVE_LIBXNVCTRL
141     _sdi_output_format_combobox->setCurrentIndex(val-1);
142 #else
143     (void)val;
144 #endif // HAVE_LIBXNVCTRL
145 }
146 
set_sdi_output_left_stereo_mode(parameters::stereo_mode_t stereo_mode)147 void sdi_output_dialog::set_sdi_output_left_stereo_mode(parameters::stereo_mode_t stereo_mode)
148 {
149 #if HAVE_LIBXNVCTRL
150     switch (stereo_mode)
151     {
152     default:
153     case parameters::mode_mono_left:
154         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(0);
155         break;
156     case parameters::mode_mono_right:
157         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(1);
158         break;
159     case parameters::mode_top_bottom:
160         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(2);
161         break;
162     case parameters::mode_top_bottom_half:
163         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(3);
164         break;
165     case parameters::mode_left_right:
166         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(4);
167         break;
168     case parameters::mode_left_right_half:
169         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(5);
170         break;
171     case parameters::mode_even_odd_rows:
172         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(6);
173         break;
174     case parameters::mode_even_odd_columns:
175         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(7);
176         break;
177     case parameters::mode_checkerboard:
178         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(8);
179         break;
180     case parameters::mode_red_cyan_monochrome:
181         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(9);
182         break;
183     case parameters::mode_red_cyan_half_color:
184         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(10);
185         break;
186     case parameters::mode_red_cyan_full_color:
187         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(11);
188         break;
189     case parameters::mode_red_cyan_dubois:
190         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(12);
191         break;
192     case parameters::mode_green_magenta_monochrome:
193         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(13);
194         break;
195     case parameters::mode_green_magenta_half_color:
196         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(14);
197         break;
198     case parameters::mode_green_magenta_full_color:
199         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(15);
200         break;
201     case parameters::mode_green_magenta_dubois:
202         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(16);
203         break;
204     case parameters::mode_amber_blue_monochrome:
205         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(17);
206         break;
207     case parameters::mode_amber_blue_half_color:
208         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(18);
209         break;
210     case parameters::mode_amber_blue_full_color:
211         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(19);
212         break;
213     case parameters::mode_amber_blue_dubois:
214         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(20);
215         break;
216     case parameters::mode_red_green_monochrome:
217         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(21);
218         break;
219     case parameters::mode_red_blue_monochrome:
220         _sdi_output_left_stereo_mode_combobox->setCurrentIndex(22);
221         break;
222     }
223 #else
224     (void)stereo_mode;
225 #endif // HAVE_LIBXNVCTRL
226 }
227 
set_sdi_output_right_stereo_mode(parameters::stereo_mode_t stereo_mode)228 void sdi_output_dialog::set_sdi_output_right_stereo_mode(parameters::stereo_mode_t stereo_mode)
229 {
230 #if HAVE_LIBXNVCTRL
231     switch (stereo_mode)
232     {
233     default:
234     case parameters::mode_mono_left:
235         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(0);
236         break;
237     case parameters::mode_mono_right:
238         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(1);
239         break;
240     case parameters::mode_top_bottom:
241         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(2);
242         break;
243     case parameters::mode_top_bottom_half:
244         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(3);
245         break;
246     case parameters::mode_left_right:
247         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(4);
248         break;
249     case parameters::mode_left_right_half:
250         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(5);
251         break;
252     case parameters::mode_even_odd_rows:
253         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(6);
254         break;
255     case parameters::mode_even_odd_columns:
256         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(7);
257         break;
258     case parameters::mode_checkerboard:
259         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(8);
260         break;
261     case parameters::mode_red_cyan_monochrome:
262         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(9);
263         break;
264     case parameters::mode_red_cyan_half_color:
265         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(10);
266         break;
267     case parameters::mode_red_cyan_full_color:
268         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(11);
269         break;
270     case parameters::mode_red_cyan_dubois:
271         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(12);
272         break;
273     case parameters::mode_green_magenta_monochrome:
274         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(13);
275         break;
276     case parameters::mode_green_magenta_half_color:
277         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(14);
278         break;
279     case parameters::mode_green_magenta_full_color:
280         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(15);
281         break;
282     case parameters::mode_green_magenta_dubois:
283         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(16);
284         break;
285     case parameters::mode_amber_blue_monochrome:
286         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(17);
287         break;
288     case parameters::mode_amber_blue_half_color:
289         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(18);
290         break;
291     case parameters::mode_amber_blue_full_color:
292         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(19);
293         break;
294     case parameters::mode_amber_blue_dubois:
295         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(20);
296         break;
297     case parameters::mode_red_green_monochrome:
298         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(21);
299         break;
300     case parameters::mode_red_blue_monochrome:
301         _sdi_output_right_stereo_mode_combobox->setCurrentIndex(22);
302         break;
303     }
304 #else
305     (void)stereo_mode;
306 #endif // HAVE_LIBXNVCTRL
307 }
308 
sdi_output_format_changed(int val)309 void sdi_output_dialog::sdi_output_format_changed(int val)
310 {
311 #if HAVE_LIBXNVCTRL
312     if (!_lock)
313         send_cmd(command::set_sdi_output_format, val+1);
314 #else
315     (void)val;
316 #endif // HAVE_LIBXNVCTRL
317 }
318 
sdi_output_left_stereo_mode_changed(int val)319 void sdi_output_dialog::sdi_output_left_stereo_mode_changed(int val)
320 {
321 #if HAVE_LIBXNVCTRL
322     parameters::stereo_mode_t stereo_mode = parameters::mode_mono_left;
323 
324     switch (val)
325     {
326     case 0:
327         stereo_mode = parameters::mode_mono_left;
328         break;
329     case 1:
330         stereo_mode = parameters::mode_mono_right;
331         break;
332     case 2:
333         stereo_mode = parameters::mode_top_bottom;
334         break;
335     case 3:
336         stereo_mode = parameters::mode_top_bottom_half;
337         break;
338     case 4:
339         stereo_mode = parameters::mode_left_right;
340         break;
341     case 5:
342         stereo_mode = parameters::mode_left_right_half;
343         break;
344     case 6:
345         stereo_mode = parameters::mode_even_odd_rows;
346         break;
347     case 7:
348         stereo_mode = parameters::mode_even_odd_columns;
349         break;
350     case 8:
351         stereo_mode = parameters::mode_checkerboard;
352         break;
353     case 9:
354         stereo_mode = parameters::mode_red_cyan_monochrome;
355         break;
356     case 10:
357         stereo_mode = parameters::mode_red_cyan_half_color;
358         break;
359     case 11:
360         stereo_mode = parameters::mode_red_cyan_full_color;
361         break;
362     case 12:
363         stereo_mode = parameters::mode_red_cyan_dubois;
364         break;
365     case 13:
366         stereo_mode = parameters::mode_green_magenta_monochrome;
367         break;
368     case 14:
369         stereo_mode = parameters::mode_green_magenta_half_color;
370         break;
371     case 15:
372         stereo_mode = parameters::mode_green_magenta_full_color;
373         break;
374     case 16:
375         stereo_mode = parameters::mode_green_magenta_dubois;
376         break;
377     case 17:
378         stereo_mode = parameters::mode_amber_blue_monochrome;
379         break;
380     case 18:
381         stereo_mode = parameters::mode_amber_blue_half_color;
382         break;
383     case 19:
384         stereo_mode = parameters::mode_amber_blue_full_color;
385         break;
386     case 20:
387         stereo_mode = parameters::mode_amber_blue_dubois;
388         break;
389     case 21:
390         stereo_mode = parameters::mode_red_green_monochrome;
391         break;
392     case 22:
393         stereo_mode = parameters::mode_red_blue_monochrome;
394         break;
395     }
396 
397     if (!_lock)
398         send_cmd(command::set_sdi_output_left_stereo_mode, static_cast<int>(stereo_mode));
399 #else
400     (void)val;
401 #endif // HAVE_LIBXNVCTRL
402 }
403 
sdi_output_right_stereo_mode_changed(int val)404 void sdi_output_dialog::sdi_output_right_stereo_mode_changed(int val)
405 {
406 #if HAVE_LIBXNVCTRL
407     parameters::stereo_mode_t stereo_mode = parameters::mode_mono_left;
408 
409     switch (val)
410     {
411     case 0:
412         stereo_mode = parameters::mode_mono_left;
413         break;
414     case 1:
415         stereo_mode = parameters::mode_mono_right;
416         break;
417     case 2:
418         stereo_mode = parameters::mode_top_bottom;
419         break;
420     case 3:
421         stereo_mode = parameters::mode_top_bottom_half;
422         break;
423     case 4:
424         stereo_mode = parameters::mode_left_right;
425         break;
426     case 5:
427         stereo_mode = parameters::mode_left_right_half;
428         break;
429     case 6:
430         stereo_mode = parameters::mode_even_odd_rows;
431         break;
432     case 7:
433         stereo_mode = parameters::mode_even_odd_columns;
434         break;
435     case 8:
436         stereo_mode = parameters::mode_checkerboard;
437         break;
438     case 9:
439         stereo_mode = parameters::mode_red_cyan_monochrome;
440         break;
441     case 10:
442         stereo_mode = parameters::mode_red_cyan_half_color;
443         break;
444     case 11:
445         stereo_mode = parameters::mode_red_cyan_full_color;
446         break;
447     case 12:
448         stereo_mode = parameters::mode_red_cyan_dubois;
449         break;
450     case 13:
451         stereo_mode = parameters::mode_green_magenta_monochrome;
452         break;
453     case 14:
454         stereo_mode = parameters::mode_green_magenta_half_color;
455         break;
456     case 15:
457         stereo_mode = parameters::mode_green_magenta_full_color;
458         break;
459     case 16:
460         stereo_mode = parameters::mode_green_magenta_dubois;
461         break;
462     case 17:
463         stereo_mode = parameters::mode_amber_blue_monochrome;
464         break;
465     case 18:
466         stereo_mode = parameters::mode_amber_blue_half_color;
467         break;
468     case 19:
469         stereo_mode = parameters::mode_amber_blue_full_color;
470         break;
471     case 20:
472         stereo_mode = parameters::mode_amber_blue_dubois;
473         break;
474     case 21:
475         stereo_mode = parameters::mode_red_green_monochrome;
476         break;
477     case 22:
478         stereo_mode = parameters::mode_red_blue_monochrome;
479         break;
480     }
481 
482     if (!_lock)
483         send_cmd(command::set_sdi_output_right_stereo_mode, static_cast<int>(stereo_mode));
484 #else
485     (void)val;
486 #endif // HAVE_LIBXNVCTRL
487 }
488 
receive_notification(const notification & note)489 void sdi_output_dialog::receive_notification(const notification &note)
490 {
491 #if HAVE_LIBXNVCTRL
492     switch (note.type)
493     {
494     case notification::sdi_output_format:
495         update();
496         break;
497     case notification::sdi_output_left_stereo_mode:
498         update();
499         break;
500     case notification::sdi_output_right_stereo_mode:
501         update();
502         break;
503     default:
504         /* not handled */
505         break;
506     }
507 #else
508     (void)note;
509 #endif // HAVE_LIBXNVCTRL
510 }
511