diff --git a/libspark/video.cpp b/libspark/video.cpp index f165cd0..2572b79 100644 --- a/libspark/video.cpp +++ b/libspark/video.cpp @@ -714,3 +714,32 @@ void cVideo::SetControl(int control, int value) { proc_put(p, buf, len); } } + +void cVideo::SetColorFormat(COLOR_FORMAT color_format) { + const char *p = NULL; + switch(color_format) { + case COLORFORMAT_RGB: + p = "rgb"; + break; + case COLORFORMAT_YUV: + p = "yuv"; + break; + case COLORFORMAT_CVBS: + p = "cvbs"; + break; + case COLORFORMAT_SVIDEO: + p = "svideo"; + break; + case COLORFORMAT_HDMI_RGB: + p = "hdmi_rgb"; + break; + case COLORFORMAT_HDMI_YCBCR444: + p = "hdmi_yuv"; + break; + case COLORFORMAT_HDMI_YCBCR422: + p = "hdmi_422"; + break; + } + if (p) + proc_put("/proc/stb/avs/0/colorformat", p, strlen(p)); +} diff --git a/libspark/video_lib.h b/libspark/video_lib.h index 1f122c1..81955a7 100644 --- a/libspark/video_lib.h +++ b/libspark/video_lib.h @@ -17,6 +17,16 @@ typedef enum { ANALOG_SCART_MASK = 0x10 } analog_mode_t; +typedef enum { + COLORFORMAT_RGB = 0x10, // keep compatible with analog_mode_t + COLORFORMAT_YUV, + COLORFORMAT_CVBS, + COLORFORMAT_SVIDEO, + COLORFORMAT_HDMI_RGB, + COLORFORMAT_HDMI_YCBCR444, + COLORFORMAT_HDMI_YCBCR422 +} COLOR_FORMAT; + typedef enum { VIDEO_FORMAT_MPEG2 = 0, @@ -192,6 +202,7 @@ class cVideo int StartVBI(unsigned short) { return 0; }; int StopVBI(void) { return 0; }; void SetDemux(cDemux *dmx); + void SetColorFormat(COLOR_FORMAT color_format); }; #endif