mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-09-01 18:01:13 +02:00
videosettings: select VIDEOMENU_43MODE_OPTIONS at runtime
instead of hard coded hardware dependence, select panscan and display AR options at run time via hw_caps.
This commit is contained in:
@@ -85,11 +85,12 @@ CVideoSettings::CVideoSettings(int wizard_mode)
|
|||||||
prev_video_mode = g_settings.video_Mode;
|
prev_video_mode = g_settings.video_Mode;
|
||||||
|
|
||||||
setupVideoSystem(false);
|
setupVideoSystem(false);
|
||||||
|
Init43ModeOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
CVideoSettings::~CVideoSettings()
|
CVideoSettings::~CVideoSettings()
|
||||||
{
|
{
|
||||||
|
videomenu_43mode_options.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CVideoSettings::exec(CMenuTarget* parent, const std::string &/*actionKey*/)
|
int CVideoSettings::exec(CMenuTarget* parent, const std::string &/*actionKey*/)
|
||||||
@@ -110,9 +111,7 @@ int CVideoSettings::exec(CMenuTarget* parent, const std::string &/*actionKey*/)
|
|||||||
const CMenuOptionChooser::keyval VIDEOMENU_43MODE_OPTIONS[] =
|
const CMenuOptionChooser::keyval VIDEOMENU_43MODE_OPTIONS[] =
|
||||||
{
|
{
|
||||||
{ DISPLAY_AR_MODE_PANSCAN, LOCALE_VIDEOMENU_PANSCAN },
|
{ DISPLAY_AR_MODE_PANSCAN, LOCALE_VIDEOMENU_PANSCAN },
|
||||||
#ifndef BOXMODEL_CS_HD2
|
|
||||||
{ DISPLAY_AR_MODE_PANSCAN2, LOCALE_VIDEOMENU_PANSCAN2 },
|
{ DISPLAY_AR_MODE_PANSCAN2, LOCALE_VIDEOMENU_PANSCAN2 },
|
||||||
#endif
|
|
||||||
{ DISPLAY_AR_MODE_LETTERBOX, LOCALE_VIDEOMENU_LETTERBOX },
|
{ DISPLAY_AR_MODE_LETTERBOX, LOCALE_VIDEOMENU_LETTERBOX },
|
||||||
{ DISPLAY_AR_MODE_NONE, LOCALE_VIDEOMENU_FULLSCREEN }
|
{ DISPLAY_AR_MODE_NONE, LOCALE_VIDEOMENU_FULLSCREEN }
|
||||||
//{ 2, LOCALE_VIDEOMENU_AUTO } // whatever is this auto mode, it seems its totally broken
|
//{ 2, LOCALE_VIDEOMENU_AUTO } // whatever is this auto mode, it seems its totally broken
|
||||||
@@ -290,18 +289,12 @@ CMenuOptionChooser::keyval_ext VIDEOMENU_VIDEOMODE_OPTIONS[VIDEOMENU_VIDEOMODE_O
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_TRIPLEDRAGON
|
|
||||||
#define VIDEOMENU_VIDEOFORMAT_OPTION_COUNT 2
|
|
||||||
#else
|
|
||||||
#define VIDEOMENU_VIDEOFORMAT_OPTION_COUNT 3//2
|
#define VIDEOMENU_VIDEOFORMAT_OPTION_COUNT 3//2
|
||||||
#endif
|
|
||||||
const CMenuOptionChooser::keyval VIDEOMENU_VIDEOFORMAT_OPTIONS[VIDEOMENU_VIDEOFORMAT_OPTION_COUNT] =
|
const CMenuOptionChooser::keyval VIDEOMENU_VIDEOFORMAT_OPTIONS[VIDEOMENU_VIDEOFORMAT_OPTION_COUNT] =
|
||||||
{
|
{
|
||||||
{ DISPLAY_AR_4_3, LOCALE_VIDEOMENU_VIDEOFORMAT_43 },
|
{ DISPLAY_AR_4_3, LOCALE_VIDEOMENU_VIDEOFORMAT_43 },
|
||||||
{ DISPLAY_AR_16_9, LOCALE_VIDEOMENU_VIDEOFORMAT_169 },
|
{ DISPLAY_AR_16_9, LOCALE_VIDEOMENU_VIDEOFORMAT_169 },
|
||||||
#if !HAVE_TRIPLEDRAGON
|
|
||||||
{ DISPLAY_AR_14_9, LOCALE_VIDEOMENU_VIDEOFORMAT_149 }
|
{ DISPLAY_AR_14_9, LOCALE_VIDEOMENU_VIDEOFORMAT_149 }
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VIDEOMENU_DBDR_OPTION_COUNT 3
|
#define VIDEOMENU_DBDR_OPTION_COUNT 3
|
||||||
@@ -361,11 +354,11 @@ int CVideoSettings::showVideoSetup()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//4:3 mode
|
//4:3 mode
|
||||||
CMenuOptionChooser * vs_43mode_ch = new CMenuOptionChooser(LOCALE_VIDEOMENU_43MODE, &g_settings.video_43mode, VIDEOMENU_43MODE_OPTIONS, VIDEOMENU_43MODE_OPTION_COUNT, true, this);
|
CMenuOptionChooser * vs_43mode_ch = new CMenuOptionChooser(LOCALE_VIDEOMENU_43MODE, &g_settings.video_43mode, videomenu_43mode_options, true, this);
|
||||||
vs_43mode_ch->setHint("", LOCALE_MENU_HINT_VIDEO_43MODE);
|
vs_43mode_ch->setHint("", LOCALE_MENU_HINT_VIDEO_43MODE);
|
||||||
|
|
||||||
//display format
|
//display format
|
||||||
CMenuOptionChooser * vs_dispformat_ch = new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOFORMAT, &g_settings.video_Format, VIDEOMENU_VIDEOFORMAT_OPTIONS, VIDEOMENU_VIDEOFORMAT_OPTION_COUNT, true, this);
|
CMenuOptionChooser * vs_dispformat_ch = new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOFORMAT, &g_settings.video_Format, VIDEOMENU_VIDEOFORMAT_OPTIONS, g_info.hw_caps->can_ar_14_9 ? VIDEOMENU_VIDEOFORMAT_OPTION_COUNT : VIDEOMENU_VIDEOFORMAT_OPTION_COUNT -1, true, this); /* works only if 14:9 is last! */
|
||||||
vs_dispformat_ch->setHint("", LOCALE_MENU_HINT_VIDEO_FORMAT);
|
vs_dispformat_ch->setHint("", LOCALE_MENU_HINT_VIDEO_FORMAT);
|
||||||
|
|
||||||
//video system
|
//video system
|
||||||
@@ -623,20 +616,20 @@ void CVideoSettings::next43Mode(void)
|
|||||||
{
|
{
|
||||||
printf("[neutrino VideoSettings] %s setting 43Mode...\n", __FUNCTION__);
|
printf("[neutrino VideoSettings] %s setting 43Mode...\n", __FUNCTION__);
|
||||||
neutrino_locale_t text;
|
neutrino_locale_t text;
|
||||||
int curmode = 0;
|
unsigned int curmode = 0;
|
||||||
|
|
||||||
for (int i = 0; i < (int) VIDEOMENU_43MODE_OPTION_COUNT; i++) {
|
for (unsigned int i = 0; i < videomenu_43mode_options.size(); i++) {
|
||||||
if (VIDEOMENU_43MODE_OPTIONS[i].key == g_settings.video_43mode) {
|
if (videomenu_43mode_options[i].key == g_settings.video_43mode) {
|
||||||
curmode = i;
|
curmode = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
curmode++;
|
curmode++;
|
||||||
if (curmode >= (int) VIDEOMENU_43MODE_OPTION_COUNT)
|
if (curmode >= videomenu_43mode_options.size())
|
||||||
curmode = 0;
|
curmode = 0;
|
||||||
|
|
||||||
text = VIDEOMENU_43MODE_OPTIONS[curmode].value;
|
text = videomenu_43mode_options[curmode].value;
|
||||||
g_settings.video_43mode = VIDEOMENU_43MODE_OPTIONS[curmode].key;
|
g_settings.video_43mode = videomenu_43mode_options[curmode].key;
|
||||||
videoDecoder->setAspectRatio(-1, g_settings.video_43mode);
|
videoDecoder->setAspectRatio(-1, g_settings.video_43mode);
|
||||||
#ifdef ENABLE_PIP
|
#ifdef ENABLE_PIP
|
||||||
pipDecoder->setAspectRatio(-1, g_settings.video_43mode);
|
pipDecoder->setAspectRatio(-1, g_settings.video_43mode);
|
||||||
@@ -659,7 +652,8 @@ void CVideoSettings::SwitchFormat()
|
|||||||
curmode++;
|
curmode++;
|
||||||
if (curmode >= VIDEOMENU_VIDEOFORMAT_OPTION_COUNT)
|
if (curmode >= VIDEOMENU_VIDEOFORMAT_OPTION_COUNT)
|
||||||
curmode = 0;
|
curmode = 0;
|
||||||
|
if (VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].key == DISPLAY_AR_14_9 && g_info.hw_caps->can_ar_14_9 == 0)
|
||||||
|
curmode = 0;
|
||||||
text = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].value;
|
text = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].value;
|
||||||
g_settings.video_Format = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].key;
|
g_settings.video_Format = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].key;
|
||||||
|
|
||||||
@@ -730,3 +724,17 @@ void CVideoSettings::nextMode(void)
|
|||||||
CVFD::getInstance()->showServicename(g_RemoteControl->getCurrentChannelName(), g_RemoteControl->getCurrentChannelNumber());
|
CVFD::getInstance()->showServicename(g_RemoteControl->getCurrentChannelName(), g_RemoteControl->getCurrentChannelNumber());
|
||||||
//ShowHint(LOCALE_VIDEOMENU_VIDEOMODE, text, 450, 2);
|
//ShowHint(LOCALE_VIDEOMENU_VIDEOMODE, text, 450, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CVideoSettings::Init43ModeOptions()
|
||||||
|
{
|
||||||
|
videomenu_43mode_options.clear();
|
||||||
|
for (unsigned int i = 0; i < VIDEOMENU_43MODE_OPTION_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (VIDEOMENU_43MODE_OPTIONS[i].key == DISPLAY_AR_MODE_PANSCAN2 &&
|
||||||
|
g_info.hw_caps->can_ps_14_9 == 0)
|
||||||
|
continue;
|
||||||
|
CMenuOptionChooser::keyval_ext o;
|
||||||
|
o = VIDEOMENU_43MODE_OPTIONS[i];
|
||||||
|
videomenu_43mode_options.push_back(o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -47,6 +47,8 @@ class CVideoSettings : public CMenuWidget, CChangeObserver
|
|||||||
|
|
||||||
int width, selected;
|
int width, selected;
|
||||||
int showVideoSetup();
|
int showVideoSetup();
|
||||||
|
std::vector<CMenuOptionChooser::keyval_ext> videomenu_43mode_options;
|
||||||
|
void Init43ModeOptions();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CVideoSettings(int wizard_mode = SNeutrinoSettings::WIZARD_OFF);
|
CVideoSettings(int wizard_mode = SNeutrinoSettings::WIZARD_OFF);
|
||||||
|
Reference in New Issue
Block a user