📄 interface.h
字号:
/* * encode.h * * ============================================================================ * Copyright (c) Texas Instruments Inc 2005 * * Use of this software is controlled by the terms and conditions found in the * license agreement under which this software has been supplied or provided. * ============================================================================ */#ifndef _INTERFACE_H#define _INTERFACE_H#include <stdio.h>#include <pthread.h>/* Enables or disables debug output */#ifdef __DEBUG#define DBG(fmt, args...) fprintf(stderr, "Interface Debug: " fmt, ## args)#define dspTraceDump(ce) Engine_fwriteTrace((ce), "[DSP] ", stderr)#else#define DBG(fmt, args...)#define dspTraceDump(ce)#endif#define ERR(fmt, args...) fprintf(stderr, "Interface Error: " fmt, ## args)/* Button pictures in different states */#define CTRL_BUTTON "data/pics/Buttons_SQ.png"#define CTRL_BUTTON_PAUSE_PRESSED "data/pics/Pause_SQ_SEL.png"#define CTRL_BUTTON_PLAY_PRESSED "data/pics/Play_SQ_SEL.png"#define CTRL_BUTTON_REC_PRESSED "data/pics/Rec_SQ_SEL.png"#define CTRL_BUTTON_STOP_PRESSED "data/pics/Stop_SQ_SEL.png"#define NAV_BUTTON "data/pics/Button_DIAG.png"#define NAV_BUTTON_OK_PRESSED "data/pics/Center_Diag_SEL.png"#define NAV_BUTTON_LEFT_PRESSED "data/pics/Left_Diag_SEL.png"#define NAV_BUTTON_RIGHT_PRESSED "data/pics/Right_Diag_SEL.png"#define NAV_BUTTON_UP_PRESSED "data/pics/Top_Diag_SEL.png"#define NAV_BUTTON_DOWN_PRESSED "data/pics/Bottom_Diag_SEL.png"#define INFO_BUTTON "data/pics/INFO_RND.png"#define INFO_BUTTON_PRESSED "data/pics/Info_RND_SEL.png"#define WRONG_BUTTON "data/pics/nowrongbutton.png"#define WRONG_BUTTON_PRESSED "data/pics/wrongbutton.png"/* Button placements on OSD */#define CTRL_BUTTON_X 50#define CTRL_BUTTON_Y 330#define INFO_BUTTON_X 570#define INFO_BUTTON_Y 330/* Text placements on OSD */#define COLUMN_1 40#define COLUMN_2 280#define COLUMN_3 430#define ROW_1 YSCALE(50)#define ROW_2 YSCALE(80)#define ROW_3 YSCALE(110)#define ROW_4 YSCALE(140)#define ROW_5 YSCALE(170)#define ROW_6 YSCALE(200)#define ROW_7 YSCALE(230)/* Function error codes */#define PLAYBACK 3#define NOSELECTION 2#define SUCCESS 0#define FAILURE -1/* True of false enumeration */#define TRUE 1#define FALSE 0/* Scaling factors for the video standards */#define PAL 12#define NTSC 10/* Screen dimensions */#define SCREEN_WIDTH 720#define SCREEN_HEIGHT YSCALE(480)#define SCREEN_BPP 16#define SCREEN_SIZE SCREEN_WIDTH * SCREEN_HEIGHT * SCREEN_BPP / 8enum Resolutions { ZOOM, CIF, NUM_RESOLUTIONS};enum MenuSelections { ENCDEC, ENC, DEC, THIRDPARTY};enum VideoBpsSelection { LOW, HIGH};enum VideoAlgSelection { H264, MPEG4};/* The demo environment passed to all threads */typedef struct DemoEnv { enum MenuSelections demoSelect; enum Resolutions resolution; enum VideoAlgSelection videoAlg; enum VideoBpsSelection videoBps; char *videoFile; char *soundFile; char *thirdPartyCmdPath;} DemoEnv;/* Global data structure */typedef struct GlobalData { unsigned short *display; /* Pointer to the screen frame buffer */ int yFactor; /* Vertical scaling factor (PAL vs. NTSC) */} GlobalData;/* Global data */extern GlobalData gbl;extern pthread_mutex_t dataMutex;/* Global functions */extern int startupFxn(DemoEnv *envp);extern int menuFxn(DemoEnv *envp);extern int encodeDecodeFxn(DemoEnv *envp);extern int encodeFxn(DemoEnv *envp);extern int decodeFxn(DemoEnv *envp);extern int thirdPartyFxn(DemoEnv *envp);extern int setOsdTransparency(unsigned char trans);extern int drawDiagram(char *diagram);/* Functions to protect the global data */static inline unsigned short *getDisplay(void){ unsigned short *display; pthread_mutex_lock(&dataMutex); display = gbl.display; pthread_mutex_unlock(&dataMutex); return display;}static inline void setDisplay(unsigned short *display){ pthread_mutex_lock(&dataMutex); gbl.display = display; pthread_mutex_unlock(&dataMutex);}static inline int getYFactor(void){ int yFactor; pthread_mutex_lock(&dataMutex); yFactor = gbl.yFactor; pthread_mutex_unlock(&dataMutex); return yFactor;}static inline void setYFactor(int yFactor){ pthread_mutex_lock(&dataMutex); gbl.yFactor = yFactor; pthread_mutex_unlock(&dataMutex);}/* Scale vertically depending on video standard */#define YSCALE(x) (((x) * getYFactor()) / 10)/* Cleans up cleanly after a failure */#define CLEANUP(x) \ status = (x); \ quit = 1; \ goto cleanup/* Breaks a processing loop for a clean exit */#define BREAK_LOOP(x) \ status = (x); \ quit = 1; \ break#endif // _INTERFACE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -