⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interface.h

📁 codec engine中的视频操作界面的历程
💻 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 + -