📄 test.c
字号:
/* Copyright (C) 2006 Guangzhou Jinpeng Group LT All Rights Reserved.*//** @file test.c @brief Demonstration of Video Rendering functionality@b Application: test*//*Rev Date Author Comments--------------------------------------------------------------------------------001 20060908 huangym Original-------------------------------------------------------------------------------- For consistency and standardisation retain the Section Separators.*//************************************************ INCLUDE FILES ************************************************/#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <linux/types.h>#include <linux/video_decoder.h>#include <sys/ioctl.h>#define SET_REG 17#define GET_REG 20#include "tw2834.h"/************************************************ LOCAL MACROS ************************************************//* Entry point for the application */int main(int argc, char **argv){ int opra,temp_opra,temp_data; int df; int df0=0,df1=0,df2=0,df3=0; int err,i; int param[5]; char DEVNAME[20]; if((argc<3) |(argv[1] == "-h") ) { printf("1 arg need for the program.\n"); printf("use: test chipnum -[channel][cmd]\n"); printf(" chipnum from 0 to 3\n"); printf(" -channel from -0 to -3\n"); printf(" cmd:v--get video signal\n"); printf(" b,h\n"); printf(" p,n--pal,ntsc\n"); printf(" f,d--fullscreen,default split screen\n"); printf(" H,S--close preview,preview\n"); printf(" P -- split screen\n"); printf(" s [reg] [value]--set reg = value\n"); exit(1); } if ((argv[2][0] == '-')&&((argv[2][1] == '0')|(argv[2][1] == '1')|(argv[2][1] == '2')|(argv[2][1] == '3'))) { /* Test next character to determine param type */ //param[0] =9;// argv[2][1]; param[0] =argv[2][1]-0x30; // strtol(param[0],NULL,0); printf("test is :%d\n",param[0]); switch (argv[2][2]) { case 'v': opra = GET_VIDEO_SIGNAL; break; case 'b': case 'B': opra = SET_BRIGHTNESS; /* brightness */ break; case 'c': case 'C': opra = SET_CONTRAST; /* contrast */ break; case 'p': opra = PAL_STD; /* NTSC mode */ break; case 'n': opra = NTSC_STD; /* NTSC mode */ break; case 'd': opra = SET_DEFAULT; /*chip default config*/ break; case 'h': opra = SET_HUE; /* hue */ break; case 's': opra = SET_REG; /* standard */ if(argv[4]==NULL) {opra = GET_REG; //param[1] = a);//atoi(argv[3]); param[1] = strtoul(argv[3],NULL,0);//atoi(argv[3]); } else { param[1] = strtoul(argv[3],NULL,0);//atoi(argv[3]); param[2] = strtoul(argv[4],NULL,0);//atoi(argv[4]); } break; case 'f': opra = SET_FULLSCREEN; /* */ break; case 'S': opra = SET_PREVIEW; /* preview */ break; case 'H': opra = SET_CLOSE_PREVIEW; /*close preview */ break; case 'P': //split opra = SET_SPLIT; /* split preview */ break; default: /* ignore unrecognised characters */ printf("Parameter is error, the right is -[n]b -[n]c -[n]h -[n]B -[n]C -[n]H.\n"); //printf("n which is standed for the chip(tw2834_0,tw2834_1,tw2834_2,tw2834_3) must be <4,.\n"); exit(1); break; } } else { printf("Parameter is error, the right is -[n]b -[n]c -[n]h -[n]B -[n]C -[n]H.\n"); exit(1); } //chipnum = strtol(argv[1],NULL,0); sprintf(DEVNAME,"/dev/tw2834%s",argv[1]); printf("Open %s\n",DEVNAME); df = open(DEVNAME,O_RDWR); if (df == -1) { printf("Can't open %s device.\n",DEVNAME); exit(1); } if((opra == SET_SPLIT) |(opra == SET_FULLSCREEN ) ) { temp_opra = opra; opra = GET_CHIP_NUMBER; err = ioctl(df, opra, param); printf("This is four split\n"); for (i =0; i<param[0]+1; i++) { //sprintf(DEVNAMET,"/dev/tw2834%s",i); //df0 = open(DEVNAMET,O_RDWR); if(i == 0) { df0 = open("/dev/tw28340",O_RDWR); opra = SET_ALL_CHANNEL_DISABLE; err = ioctl(df0, opra, param); } if(i == 1) { df1 = open("/dev/tw28341",O_RDWR); err = ioctl(df1, opra, param); } if(i == 2) { df2 = open("/dev/tw28342",O_RDWR); err = ioctl(df2, opra, param); } if(i == 3) { df3 = open("/dev/tw28343",O_RDWR); err = ioctl(df3, opra, param); } } printf("*****************\n"); param[0] = argv[2][1]-0x30; if(temp_opra == SET_FULLSCREEN) { temp_data=param[0]; opra = temp_opra; err = ioctl(df, opra, param); close(df); goto this; } opra = SET_SPLIT; param[0]=atoi(argv[1]);//param[1]=atoi(argv[3]);param[2]=atoi(argv[4]); param[3]=atoi(argv[5]);param[4]=atoi(argv[6]); if(param[0] ==0 ) { param[0]=0;param[1]=4;param[2]=0; err = ioctl(df0, opra, param); //set position param[0]=1;param[1]=4;param[2]=1; err = ioctl(df0, opra, param); param[0]=2;param[1]=4;param[2]=2; err = ioctl(df0, opra, param); param[0]=3;param[1]=4;param[2]=3; err = ioctl(df0, opra, param); goto this; } if(param[0] ==1 ) { param[0]=0;param[1]=4;param[2]=0; err = ioctl(df1, opra, param); param[0]=1;param[1]=4;param[2]=1; err = ioctl(df1, opra, param); param[0]=2;param[1]=4;param[2]=2; err = ioctl(df1, opra, param); param[0]=3;param[1]=4;param[2]=3; err = ioctl(df1, opra, param); goto this; } if(param[0] ==2 ) { param[0]=0;param[1]=4;param[2]=0; err = ioctl(df3, opra, param); param[0]=1;param[1]=4;param[2]=1; err = ioctl(df3, opra, param); param[0]=2;param[1]=4;param[2]=2; err = ioctl(df3, opra, param); param[0]=3;param[1]=4;param[2]=3; err = ioctl(df3, opra, param); goto this; } if(param[0] ==3 ) { param[0]=0;param[1]=9;param[2]=0; err = ioctl(df0, opra, param); param[0]=0;param[1]=9;param[2]=1; err = ioctl(df1, opra, param); param[0]=1;param[1]=9;param[2]=2; err = ioctl(df1, opra, param); param[0]=1;param[1]=9;param[2]=3; err = ioctl(df2, opra, param); param[0]=2;param[1]=9;param[2]=4; err = ioctl(df2, opra, param); param[0]=0;param[1]=9;param[2]=5; err = ioctl(df3, opra, param); param[0]=1;param[1]=9;param[2]=6; err = ioctl(df3, opra, param); param[0]=2;param[1]=9;param[2]=7; err = ioctl(df3, opra, param); param[0]=3;param[1]=9;param[2]=8; err = ioctl(df3, opra, param); } this: printf("four split\n"); close(df0); close(df1); close(df2); close(df3); return 0; } else { printf ("%s seting ...\n",DEVNAME); err = ioctl(df, opra, param); printf("return from %s %d\n",DEVNAME,param[0]); if(err) { perror(""); printf("%s ioctl err.\n",DEVNAME); close(df); exit(1); } } close(df); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -