/* * Copyright (c) 2019 Amlogic, Inc. All rights reserved. * * This source code is subject to the terms and conditions defined in the * file 'LICENSE' which is part of this source code package. * * Description: */ #define LOG_MODULE_TAG "TV" #define LOG_CLASS_TAG "CVpp" #include "CVpp.h" #include #include #include "tvutils.h" CVpp *CVpp::mInstance; CVpp *CVpp::getInstance() { if (NULL == mInstance) mInstance = new CVpp(); return mInstance; } CVpp::CVpp() { mpAmVideo = new CAmVideo(); } CVpp::~CVpp() { if (mpAmVideo != NULL) { delete mpAmVideo; mpAmVideo = NULL; } } int CVpp::VPP_setVideoColor(bool needColor) { int ret = 0 ; LOGD("VPP_setVideoColor %d\n", needColor); if (needColor) { ret = setVideoColor(1);//default blue } else { ret = setVideoColor(3);//set black test pattern and disable video } return ret; } int CVpp::setVideoColor(int color) { LOGD("%s: %d\n", __FUNCTION__, color); int ret = 0; int disable = 1; switch (color) { case VIDEO_LAYER_COLOR_BLACK: mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_SET_VIDEO_DISABLE, &disable); ret = setVideoColor(0, 16, 128, 128); break; case VIDEO_LAYER_COLOR_BLUE: mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_SET_VIDEO_DISABLE, &disable); ret = setVideoColor(0, 41, 240, 110); break; default: disable = 2; ret = setVideoColor(0, 16, 128, 128); mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_SET_VIDEO_DISABLE, &disable); break; } return ret; } int CVpp::setVideoColor (int vdin_blending_mask, int y, int u, int v ) { int ret = 0; unsigned long value = vdin_blending_mask << 24; value |= ( unsigned int ) ( y << 16 ) | ( unsigned int ) ( u << 8 ) | ( unsigned int ) ( v ); char val[64] = {0}; sprintf(val, "0x%lx", ( unsigned long ) value); ret = tvWriteSysfs(VIDEO_TEST_SCREEN, val); return ret; } int CVpp::setVideoScreenMode ( int value ) { mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_SET_SCREEN_MODE, &value); return 0; } int CVpp::getVideoScreenMode() { int mode; mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_GET_SCREEN_MODE, &mode); return mode; } int CVpp::setVideoaxis () { int axis[4] = {0, 0, 0, 0}; mpAmVideo->AmVideoDeviceIOCtl(AMSTREAM_IOC_SET_VIDEO_AXIS, &axis); return 0; }