diff options
Diffstat (limited to 'submenu.c')
-rw-r--r-- | submenu.c | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/submenu.c b/submenu.c new file mode 100644 index 0000000..4bfb039 --- /dev/null +++ b/submenu.c @@ -0,0 +1,308 @@ +/** + * pvrinput plugin for the Video Disk Recorder + * + * submenu.c - submenu of the plugin configuration + * + * (c) 2010 Rainer Blickle <rblickle AT gmx.de> + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include "submenu.h" +#define PVR_DEBUG + +static const char *aspectRatios[] = { + "1:1", + "4:3", + "16:9", + "2.21:1" + }; + +static const char * audioBitrateValues[] = { + "32", + "48", + "56", + "64", + "80", + "96", + "112", + "128", + "160", + "192", + "224", + "256", + "320", + "384" + }; + +static const char *bitrateModes[] = { + "VBR", + "CBR" + }; + +/* order must match the 'audmode' values in videodev2.h */ +static const char *tunerAudioModes[] = { + "mono", + "stereo", + "lang2", + "lang1", + "bilingual" + }; + +#ifdef PVR_DEBUG +static const char *useOnlyCard[] = { + "/dev/video0", + "/dev/video1", + "/dev/video2", + "/dev/video3", + "/dev/video4", + "/dev/video5", + "/dev/video6", + "/dev/video7", + "all", // 8 + "PVR150", // 9 + "PVR250", //10 + "PVR350", //11 + "PVR500#1", //12 + "PVR500#2", //13 + "HVR1300", //14 + "HVR1600", //15 + "HVR1900", //16 + "HVR1950", //17 + "PVRUSB2", //18 + "HDPVR" //19 + }; +#endif + +#ifdef PVR_DEBUG +static const char *streamType[] = { + "MPEG2 PS", + "MPEG2 DVD" + }; +#endif + +static const char *exceptionVolumeForCard[] = { + "/dev/video0", + "/dev/video1", + "/dev/video2", + "/dev/video3", + "/dev/video4", + "/dev/video5", + "/dev/video6", + "/dev/video7", + "-", // 8 + "PVR150", // 9 + "PVR250", //10 + "PVR350", //11 + "PVR500#1", //12 + "PVR500#2", //13 + "HVR1300", //14 + "HVR1600", //15 + "HVR1900", //16 + "HVR1950", //17 + "PVRUSB2" //18 + }; + +cPvrMenuGeneral::cPvrMenuGeneral(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$General Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) +{ + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Log level"), &setup->LogLevel, 0, 4)); + + Add(new cMenuEditBoolItem(tr("Setup.pvrinput$Slice VBI Teletext"), &setup->SliceVBI)); + + Add(new cMenuEditBoolItem(tr("Setup.pvrinput$Hide main menu entry"), &setup->HideMainMenuEntry)); +} + + +cPvrMenuVideo::cPvrMenuVideo(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$Video Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) +{ + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Brightness"), &setup->Brightness.value, 0, 100)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Contrast"), &setup->Contrast.value, 0, 100)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Saturation"), &setup->Saturation.value, 0, 100)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Hue"), &setup->Hue.value, 0, 100)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Bitrate mode"), + &setup->BitrateMode.value, + setup->BitrateMode.queryctrl.maximum + 1, + bitrateModes)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Video bitrate TV (kbit/s)"), + &setup->VideoBitrateTV.value, + setup->VideoBitrateTV.queryctrl.minimum, + setup->VideoBitrateTV.queryctrl.maximum)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Aspect ratio"), + &setup->AspectRatio.value, + setup->AspectRatio.queryctrl.maximum + 1, + aspectRatios)); + +} + +cPvrMenuAudio::cPvrMenuAudio(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$Audio Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) +{ + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Common Audio volume (TV)"), &setup->AudioVolumeTVCommon.value, 0, 100)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Exception Audio volume (TV)"), &setup->AudioVolumeTVException.value, 0, 100)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Exception TV Volume for Card"), &setup->AudioVolumeTVExceptionCard, 19, exceptionVolumeForCard)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Tuner Audio Mode"), &setup->TunerAudioMode, 5, tunerAudioModes)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Audio radio volume"), &setup->AudioVolumeFM.value, 0, 100)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Audio bitrate (kbit/s)"), + &setup->AudioBitrate.value, + setup->AudioBitrate.queryctrl.maximum + 1, + audioBitrateValues)); + + static const char *SamplingFreqs[3]; + SamplingFreqs[0] = tr("Setup.pvrinput$44.1 kHz"); + SamplingFreqs[1] = tr("Setup.pvrinput$48 kHz"); + SamplingFreqs[2] = tr("Setup.pvrinput$32 kHz"); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Audio sampling rate"), + &setup->AudioSampling.value, + setup->AudioSampling.queryctrl.maximum + 1, + SamplingFreqs)); + +} + +cPvrMenuMpegFilter::cPvrMenuMpegFilter(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$MPEG Filter Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) +{ + static const char *FilterModes[2]; + FilterModes[0] = tr("Setup.pvrinput$manual"); + FilterModes[1] = tr("Setup.pvrinput$auto"); + + static const char *SpatialTypes[5]; + SpatialTypes[0] = tr("Setup.pvrinput$off"); + SpatialTypes[1] = tr("Setup.pvrinput$1D horizontal"); + SpatialTypes[2] = tr("Setup.pvrinput$1D vertical"); + SpatialTypes[3] = tr("Setup.pvrinput$2D hv separable"); + SpatialTypes[4] = tr("Setup.pvrinput$2D sym non separable"); + + static const char *MedianTypes[5]; + MedianTypes[0] = tr("Setup.pvrinput$off"); + MedianTypes[1] = tr("Setup.pvrinput$horizontal"); + MedianTypes[2] = tr("Setup.pvrinput$vertical"); + MedianTypes[3] = tr("Setup.pvrinput$horizontal + vertical"); + MedianTypes[4] = tr("Setup.pvrinput$diagonal"); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Mode Spatial Video Filter"), + &setup->FilterSpatialMode.value, + setup->FilterSpatialMode.queryctrl.maximum + 1, + FilterModes)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Strength Spatial Video Filter"), + &setup->FilterSpatial.value, + setup->FilterSpatial.queryctrl.minimum, + setup->FilterSpatial.queryctrl.maximum)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Luma Spatial Filter Type"), + &setup->FilterLumaSpatialType.value, + setup->FilterLumaSpatialType.queryctrl.maximum + 1, + SpatialTypes)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Chroma Spatial Filter Type"), + &setup->FilterChromaSpatialType.value, + setup->FilterChromaSpatialType.queryctrl.maximum + 1, + SpatialTypes)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Mode Temporal Video Filter"), + &setup->FilterTemporalMode.value, + setup->FilterTemporalMode.queryctrl.maximum + 1, + FilterModes)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Strength Temporal Video Filter"), + &setup->FilterTemporal.value, + setup->FilterTemporal.queryctrl.minimum, + setup->FilterTemporal.queryctrl.maximum)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Median Filter Type"), + &setup->FilterMedianType.value, + setup->FilterMedianType.queryctrl.maximum + 1, + MedianTypes)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Luma Median Filter Bottom"), + &setup->FilterLumaMedianBottom.value, + setup->FilterLumaMedianBottom.queryctrl.minimum, + setup->FilterLumaMedianBottom.queryctrl.maximum)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Luma Median Filter Top"), + &setup->FilterLumaMedianTop.value, + setup->FilterLumaMedianTop.queryctrl.minimum, + setup->FilterLumaMedianTop.queryctrl.maximum)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Chroma Median Filter Bottom"), + &setup->FilterChromaMedianBottom.value, + setup->FilterChromaMedianBottom.queryctrl.minimum, + setup->FilterChromaMedianBottom.queryctrl.maximum)); + + Add(new cMenuEditIntItem(tr("Setup.pvrinput$Chroma Median Filter Top"), + &setup->FilterChromaMedianTop.value, + setup->FilterChromaMedianTop.queryctrl.minimum, + setup->FilterChromaMedianTop.queryctrl.maximum)); +} + +cPvrMenuExperts::cPvrMenuExperts(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$Expert Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) +{ +#ifdef PVR_DEBUG + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Stream type"), &setup->StreamType.value, 2, streamType)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$Use only card"), &setup->UseOnlyCard, 20, useOnlyCard)); +#endif + + Add(new cMenuEditBoolItem(tr("Setup.pvrinput$use externchannelswitch.sh"), &setup->UseExternChannelSwitchScript)); +} + +cPvrMenuHdPvr::cPvrMenuHdPvr(cPvrSetup *setupObject) : + cOsdMenu(tr("Setup.pvrinput$HDPVR Parameters"), + 33/*same col value as in cMenuSetupPage::cMenuSetupPage*/), + setup(setupObject) { + + static const char *HDPVR_AudioEncodings[2]; + HDPVR_AudioEncodings[0] = tr("Setup.pvrinput$AAC"); + HDPVR_AudioEncodings[1] = tr("Setup.pvrinput$AC3"); + + static const char *HDPVR_AudioInputs[3]; + HDPVR_AudioInputs[0] = tr("Setup.pvrinput$RCA back"); + HDPVR_AudioInputs[1] = tr("Setup.pvrinput$RCA front"); + HDPVR_AudioInputs[2] = tr("Setup.pvrinput$SPDIF"); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$HDPVR audio encoding"), &setup->HDPVR_AudioEncoding.value, 2, HDPVR_AudioEncodings)); + + Add(new cMenuEditStraItem(tr("Setup.pvrinput$HDPVR audio input"), &setup->HDPVR_AudioInput, 3, HDPVR_AudioInputs)); +} |