106 lines
2.4 KiB
C++
106 lines
2.4 KiB
C++
/*
|
|||
|
|
* 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 <CTvLog.h>
|
||
|
|
#include <sys/ioctl.h>
|
||
|
|
#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;
|
||
|
|
}
|
||
|
|
|
||
|
|
|