00001
00002
00003 #ifndef _VIDEOOUT_TYPES_H_
00004 #define _VIDEOOUT_TYPES_H_
00005
00006 #include <qdeepcopy.h>
00007 #include <qstring.h>
00008 #include <qobject.h>
00009
00010 typedef enum PIPLocation
00011 {
00012 kPIPTopLeft = 0,
00013 kPIPBottomLeft,
00014 kPIPTopRight,
00015 kPIPBottomRight,
00016 kPIP_END
00017 } PIPLocation;
00018
00019 typedef enum ZoomDirection
00020 {
00021 kZoomHome = 0,
00022 kZoomIn,
00023 kZoomOut,
00024 kZoomUp,
00025 kZoomDown,
00026 kZoomLeft,
00027 kZoomRight,
00028 kZoomAspectUp,
00029 kZoomAspectDown,
00030 } ZoomDirection;
00031
00032 typedef enum AspectOverrideMode
00033 {
00034 kAspect_Toggle = -1,
00035 kAspect_Off = 0,
00036 kAspect_4_3,
00037 kAspect_16_9,
00038 kAspect_14_9,
00039 kAspect_END
00040 } AspectOverrideMode;
00041
00042 typedef enum AdjustFillMode
00043 {
00044 kAdjustFill_Toggle = -1,
00045 kAdjustFill_Off = 0,
00046 kAdjustFill_Half,
00047 kAdjustFill_Full,
00048 kAdjustFill_Stretch,
00049 kAdjustFill_END
00050 } AdjustFillMode;
00051
00052 typedef enum LetterBoxColour
00053 {
00054 kLetterBoxColour_Toggle = -1,
00055 kLetterBoxColour_Black = 0,
00056 kLetterBoxColour_Gray25,
00057 kLetterBoxColour_END
00058 } LetterBoxColour;
00059
00060 typedef enum FrameScanType
00061 {
00062 kScan_Ignore = -1,
00063 kScan_Detect = 0,
00064 kScan_Interlaced = 1,
00065 kScan_Intr2ndField = 2,
00066 kScan_Progressive = 3,
00067 } FrameScanType;
00068
00069 typedef enum PictureAttribute
00070 {
00071 kPictureAttribute_None = 0,
00072 kPictureAttribute_MIN = 1,
00073 kPictureAttribute_Brightness = 1,
00074 kPictureAttribute_Contrast,
00075 kPictureAttribute_Colour,
00076 kPictureAttribute_Hue,
00077 kPictureAttribute_Volume,
00078 kPictureAttribute_MAX
00079 } PictureAttribute;
00080
00081 typedef enum PictureAttributeSupported
00082 {
00083 kPictureAttributeSupported_None = 0x00,
00084 kPictureAttributeSupported_Brightness = 0x01,
00085 kPictureAttributeSupported_Contrast = 0x02,
00086 kPictureAttributeSupported_Colour = 0x04,
00087 kPictureAttributeSupported_Hue = 0x08,
00088 kPictureAttributeSupported_Volume = 0x10,
00089 } PictureAttributeSupported;
00090
00091 inline bool is_interlaced(FrameScanType scan)
00092 {
00093 return (kScan_Interlaced == scan) || (kScan_Intr2ndField == scan);
00094 }
00095
00096 inline bool is_progressive(FrameScanType scan)
00097 {
00098 return (kScan_Progressive == scan);
00099 }
00100
00101 inline QString toString(FrameScanType scan, bool brief = false)
00102 {
00103 QString ret = QObject::tr("Unknown");
00104 switch (scan)
00105 {
00106 case kScan_Ignore:
00107 ret = QObject::tr("Ignore"); break;
00108 case kScan_Detect:
00109 ret = QObject::tr("Detect"); break;
00110 case kScan_Interlaced:
00111 if (brief)
00112 ret = QObject::tr("Interlaced");
00113 else
00114 ret = QObject::tr("Interlaced (Normal)");
00115 break;
00116 case kScan_Intr2ndField:
00117 if (brief)
00118 ret = QObject::tr("Interlaced");
00119 else
00120 ret = QObject::tr("Interlaced (Reversed)");
00121 break;
00122 case kScan_Progressive:
00123 ret = QObject::tr("Progressive"); break;
00124 default:
00125 break;
00126 }
00127 return QDeepCopy<QString>(ret);
00128 }
00129
00130 inline QString toString(PIPLocation location)
00131 {
00132 QString ret = QString::null;
00133 switch (location)
00134 {
00135 case kPIPTopLeft: ret = QObject::tr("Top Left"); break;
00136 case kPIPBottomLeft: ret = QObject::tr("Bottom Left"); break;
00137 case kPIPTopRight: ret = QObject::tr("Top Right"); break;
00138 case kPIPBottomRight: ret = QObject::tr("Bottom Right"); break;
00139 case kPIP_END: break;
00140 }
00141 return QDeepCopy<QString>(ret);
00142 }
00143
00144 inline QString toString(AspectOverrideMode aspectmode)
00145 {
00146 QString ret = QObject::tr("Off");
00147 switch (aspectmode)
00148 {
00149 case kAspect_4_3: ret = QObject::tr("4:3"); break;
00150 case kAspect_14_9: ret = QObject::tr("14:9"); break;
00151 case kAspect_16_9: ret = QObject::tr("16:9"); break;
00152 case kAspect_Toggle:
00153 case kAspect_Off:
00154 case kAspect_END: break;
00155 }
00156 return QDeepCopy<QString>(ret);
00157 }
00158
00159 inline QString toString(LetterBoxColour letterboxcolour)
00160 {
00161 QString ret = QObject::tr("Black");
00162 switch (letterboxcolour)
00163 {
00164 case kLetterBoxColour_Gray25: ret = QObject::tr("Gray"); break;
00165 case kLetterBoxColour_Black:
00166 case kLetterBoxColour_Toggle:
00167 case kLetterBoxColour_END: break;
00168 }
00169 return QDeepCopy<QString>(ret);
00170 }
00171
00172 inline QString toXString(LetterBoxColour letterboxcolour)
00173 {
00174 QString ret = "gray0";
00175 switch (letterboxcolour)
00176 {
00177 case kLetterBoxColour_Gray25: ret = "gray25"; break;
00178 case kLetterBoxColour_Black:
00179 case kLetterBoxColour_Toggle:
00180 case kLetterBoxColour_END: break;
00181 }
00182 return QDeepCopy<QString>(ret);
00183 }
00184
00185 inline float get_aspect_override(AspectOverrideMode aspectmode, float orig)
00186 {
00187 float ret = orig;
00188 switch (aspectmode)
00189 {
00190 case kAspect_4_3: ret = 4.0f / 3.0f; break;
00191 case kAspect_14_9: ret = 14.0f / 9.0f; break;
00192 case kAspect_16_9: ret = 16.0f / 9.0f; break;
00193 case kAspect_Toggle:
00194 case kAspect_Off:
00195 case kAspect_END: break;
00196 }
00197 return ret;
00198 }
00199
00200 inline QString toString(AdjustFillMode aspectmode)
00201 {
00202 QString ret = QObject::tr("Off");
00203 switch (aspectmode)
00204 {
00205 case kAdjustFill_Half: ret = QObject::tr("Half"); break;
00206 case kAdjustFill_Full: ret = QObject::tr("Full"); break;
00207 case kAdjustFill_Stretch: ret = QObject::tr("Stretch"); break;
00208 case kAdjustFill_Toggle:
00209 case kAdjustFill_Off:
00210 case kAdjustFill_END: break;
00211 }
00212 return QDeepCopy<QString>(ret);
00213 }
00214
00215 inline QString toString(PictureAttribute pictureattribute)
00216 {
00217 QString ret = QObject::tr("None");
00218 switch (pictureattribute)
00219 {
00220 case kPictureAttribute_None: break;
00221 case kPictureAttribute_Brightness:
00222 ret = QObject::tr("Brightness"); break;
00223 case kPictureAttribute_Contrast:
00224 ret = QObject::tr("Contrast"); break;
00225 case kPictureAttribute_Colour:
00226 ret = QObject::tr("Color"); break;
00227 case kPictureAttribute_Hue:
00228 ret = QObject::tr("Hue"); break;
00229 case kPictureAttribute_Volume:
00230 ret = QObject::tr("Volume"); break;
00231 case kPictureAttribute_MAX:
00232 ret = "MAX"; break;
00233 }
00234 return QDeepCopy<QString>(ret);
00235 }
00236
00237 inline QString toDBString(PictureAttribute pictureattribute)
00238 {
00239 QString ret = QString::null;
00240 switch (pictureattribute)
00241 {
00242 case kPictureAttribute_None: break;
00243 case kPictureAttribute_Brightness:
00244 ret = "brightness"; break;
00245 case kPictureAttribute_Contrast:
00246 ret = "contrast"; break;
00247 case kPictureAttribute_Colour:
00248 ret = "colour"; break;
00249 case kPictureAttribute_Hue:
00250 ret = "hue"; break;
00251 case kPictureAttribute_Volume:
00252 case kPictureAttribute_MAX: break;
00253 }
00254
00255 if (ret.isEmpty())
00256 return QString::null;
00257
00258 return QDeepCopy<QString>(ret);
00259 }
00260
00261 inline QString toXVString(PictureAttribute pictureattribute)
00262 {
00263 QString ret = QString::null;
00264 switch (pictureattribute)
00265 {
00266 case kPictureAttribute_None: break;
00267 case kPictureAttribute_Brightness:
00268 ret = "XV_BRIGHTNESS"; break;
00269 case kPictureAttribute_Contrast:
00270 ret = "XV_CONTRAST"; break;
00271 case kPictureAttribute_Colour:
00272 ret = "XV_SATURATION"; break;
00273 case kPictureAttribute_Hue:
00274 ret = "XV_HUE"; break;
00275 case kPictureAttribute_Volume:
00276 case kPictureAttribute_MAX: break;
00277 }
00278
00279 if (ret.isEmpty())
00280 return QString::null;
00281
00282 return QDeepCopy<QString>(ret);
00283 }
00284
00285 inline QString toString(PictureAttributeSupported supported)
00286 {
00287 QString ret = "";
00288
00289 if (kPictureAttributeSupported_Brightness & supported)
00290 ret += "Brightness, ";
00291 if (kPictureAttributeSupported_Contrast & supported)
00292 ret += "Contrast, ";
00293 if (kPictureAttributeSupported_Colour & supported)
00294 ret += "Colour, ";
00295 if (kPictureAttributeSupported_Hue & supported)
00296 ret += "Hue, ";
00297 if (kPictureAttributeSupported_Volume & supported)
00298 ret += "Volume, ";
00299
00300 return (ret.isEmpty()) ? "" : ret.left(ret.length() - 2);
00301 }
00302
00303 inline PictureAttributeSupported toMask(PictureAttribute pictureattribute)
00304 {
00305 PictureAttributeSupported ret = kPictureAttributeSupported_None;
00306 switch (pictureattribute)
00307 {
00308 case kPictureAttribute_None: break;
00309 case kPictureAttribute_Brightness:
00310 ret = kPictureAttributeSupported_Brightness; break;
00311 case kPictureAttribute_Contrast:
00312 ret = kPictureAttributeSupported_Contrast; break;
00313 case kPictureAttribute_Colour:
00314 ret = kPictureAttributeSupported_Colour; break;
00315 case kPictureAttribute_Hue:
00316 ret = kPictureAttributeSupported_Hue; break;
00317 case kPictureAttribute_Volume:
00318 ret = kPictureAttributeSupported_Volume; break;
00319 case kPictureAttribute_MAX: break;
00320 }
00321 return ret;
00322 }
00323
00324 inline PictureAttribute next(PictureAttributeSupported supported,
00325 PictureAttribute attribute)
00326 {
00327 int i = ((int) attribute + 1) % (int) kPictureAttribute_MAX;
00328 for (int j = 0; j < kPictureAttribute_MAX;
00329 (i = (i+1) % kPictureAttribute_MAX), j++)
00330 {
00331 if (toMask((PictureAttribute) i) & supported)
00332 return (PictureAttribute) i;
00333 }
00334 return kPictureAttribute_None;
00335 }
00336
00337 #endif // _VIDEOOUT_TYPES_H_