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

📄 enc.c

📁 codec engine中的视频操作界面的历程
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * enc.c * * ============================================================================ * 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. * ============================================================================ *//* Standard Linux headers */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <fcntl.h>#include <errno.h>/* Davinci EVM utility libraries */#include <msp430lib.h>#include <simplewidget.h>/* Application header file */#include "interface.h"/* The font size */#define PTSIZE                    20/* The 0-7 transparency value to use for the OSD */#define OSD_TRANSPARENCY          0x66/* The demo diagrams to show on the video window */#define DEMO_DIAGRAM_NTSC         "data/pics/encode_ntsc.uyvy"#define DEMO_DIAGRAM_PAL          "data/pics/encode_pal.uyvy"#define NAV_BUTTON_X              290#define NAV_BUTTON_Y              310#define WRONG_BUTTON_X            325#define WRONG_BUTTON_Y            205/* The strings to draw on the screen */#define DEMONAMESTRING            "Encode"#define H264CODECSTRING           "H.264 BP Video"#define MPEG4CODECSTRING          "MPEG4 Video"#define G711CODECSTRING           "G.711 Speech"#define RESOLUTIONSTRING          "D1 (720x480)"#define DISPLAYSTRING             "NTSC display"#define SAMPLEFREQSTRING          "8KHz samp rate"#define VIDEOLOWBPSSTRING         "1.5 Mbps Video"#define VIDEOHIGHBPSSTRING        "4 Mbps Video"/* Selector color */#define SELECTOR_R                0xff#define SELECTOR_G                0#define SELECTOR_B                0/* Location of video algorithm selector */#define VIDEOALGSELECTOR_X        420#define VIDEOALGSELECTOR_Y        YSCALE(55)#define VIDEOALGSELECTOR_W        250#define VIDEOALGSELECTOR_H        YSCALE(30)/* Location of video bps selector */#define VIDEOBPSSELECTOR_X        420#define VIDEOBPSSELECTOR_Y        YSCALE(205)#define VIDEOBPSSELECTOR_W        250#define VIDEOBPSSELECTOR_H        YSCALE(30)enum InitLevels {    CREATEDINTERFACE = 1,    MSP430LIBINITIALIZED,};typedef struct Button {    simplewidget_png *pressedImgPtr;    simplewidget_png *origImgPtr;    int               x;    int               y;} Button; /* OSD widgets */static simplewidget_screen  simpleScreen      = NULL;static simplewidget_png     infoImg           = NULL;static simplewidget_png     navImg            = NULL;static simplewidget_png     navLeftImg        = NULL;static simplewidget_png     navRightImg       = NULL;static simplewidget_png     navUpImg          = NULL;static simplewidget_png     navDownImg        = NULL;static simplewidget_png     navOkImg          = NULL;static simplewidget_png     ctrlImg           = NULL;static simplewidget_png     ctrlPlayImg       = NULL;static simplewidget_png     ctrlPauseImg      = NULL;static simplewidget_png     ctrlStopImg       = NULL;static simplewidget_png     ctrlRecImg        = NULL;static simplewidget_png     wrongImg          = NULL;static simplewidget_png     noWrongImg        = NULL;static simplewidget_text    demoNameText      = NULL;static simplewidget_text    h264VideoCodecText = NULL;static simplewidget_text    mpeg4VideoCodecText = NULL;static simplewidget_text    soundCodecText    = NULL;static simplewidget_text    resolutionText    = NULL;static simplewidget_text    displayText       = NULL;static simplewidget_text    sampleFreqText    = NULL;static simplewidget_text    videoLowBpsText   = NULL;static simplewidget_text    videoHighBpsText  = NULL;static int                  osdTransparency   = OSD_TRANSPARENCY;static int                  osdVisible        = 1;enum Buttons {    CTRLPLAY,    CTRLPAUSE,    CTRLSTOP,    CTRLREC,    NAVPLUS,    NAVMINUS,    NAVUP,    NAVDOWN,    WRONG};static Button buttons[9] = {    {        &ctrlPlayImg,        &ctrlImg,        CTRL_BUTTON_X,        CTRL_BUTTON_Y    },    {        &ctrlPauseImg,        &ctrlImg,        CTRL_BUTTON_X,        CTRL_BUTTON_Y    },    {        &ctrlStopImg,        &ctrlImg,        CTRL_BUTTON_X,        CTRL_BUTTON_Y    },    {        &ctrlRecImg,        &ctrlImg,        CTRL_BUTTON_X,        CTRL_BUTTON_Y    },    {        &navRightImg,        &navImg,        NAV_BUTTON_X,        NAV_BUTTON_Y    },    {        &navLeftImg,        &navImg,        NAV_BUTTON_X,        NAV_BUTTON_Y    },    {        &navUpImg,        &navImg,        NAV_BUTTON_X,        NAV_BUTTON_Y    },    {        &navDownImg,        &navImg,        NAV_BUTTON_X,        NAV_BUTTON_Y    },    {        &wrongImg,        &noWrongImg,        WRONG_BUTTON_X,        WRONG_BUTTON_Y    }};enum Choice {    VIDEOALG,    VIDEOBPS};enum Choice choice = VIDEOALG;enum VideoBpsSelection videoBpsSelection = HIGH;enum VideoAlgSelection videoAlgSelection = H264;/****************************************************************************** * drawSelection ******************************************************************************/static void drawSelection(enum Choice ch){    if (ch == VIDEOALG) {        if (videoAlgSelection == H264) {            if (simplewidget_text_show(h264VideoCodecText,                                       simpleScreen) == -1) {                ERR("Failed to show video codec text\n");                return;            }        }        else {            if (simplewidget_text_show(mpeg4VideoCodecText,                                       simpleScreen) == -1) {                ERR("Failed to show video codec text\n");                return;            }        }    }    else {        if (videoBpsSelection == LOW) {            if (simplewidget_text_show(videoLowBpsText,                                       simpleScreen) == -1) {                ERR("Failed to show capture resolution text\n");                return;            }        }        else {            if (simplewidget_text_show(videoHighBpsText,                                       simpleScreen) == -1) {                ERR("Failed to show capture resolution text\n");                return;            }        }    }}/****************************************************************************** * changeSelection ******************************************************************************/static void changeSelection(void){    if (choice == VIDEOALG) {        videoAlgSelection = (videoAlgSelection + 1) % 2;        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOALGSELECTOR_X,                                               VIDEOALGSELECTOR_Y,                                               VIDEOALGSELECTOR_W,                                               VIDEOALGSELECTOR_H,                                               SELECTOR_R,                                               SELECTOR_G,                                               SELECTOR_B) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOALG);    }    else {        videoBpsSelection = (videoBpsSelection + 1) % 2;        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOBPSSELECTOR_X,                                               VIDEOBPSSELECTOR_Y,                                               VIDEOBPSSELECTOR_W,                                               VIDEOBPSSELECTOR_H,                                               SELECTOR_R,                                               SELECTOR_G,                                               SELECTOR_B) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOBPS);    }}/****************************************************************************** * changeChoice ******************************************************************************/static void changeChoice(void){    choice = (choice + 1) % 2;    if (choice == VIDEOALG) {        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOALGSELECTOR_X,                                               VIDEOALGSELECTOR_Y,                                               VIDEOALGSELECTOR_W,                                               VIDEOALGSELECTOR_H,                                               SELECTOR_R,                                               SELECTOR_G,                                               SELECTOR_B) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOALG);        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOBPSSELECTOR_X,                                               VIDEOBPSSELECTOR_Y,                                               VIDEOBPSSELECTOR_W,                                               VIDEOBPSSELECTOR_H,                                               0,                                               0,                                               0) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOBPS);    }    else {        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOBPSSELECTOR_X,                                               VIDEOBPSSELECTOR_Y,                                               VIDEOBPSSELECTOR_W,                                               VIDEOBPSSELECTOR_H,                                               SELECTOR_R,                                               SELECTOR_G,                                               SELECTOR_B) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOBPS);        if (simplewidget_screen_draw_rectangle(simpleScreen,                                               VIDEOALGSELECTOR_X,                                               VIDEOALGSELECTOR_Y,                                               VIDEOALGSELECTOR_W,                                               VIDEOALGSELECTOR_H,                                               0,                                               0,                                               0) == FAILURE) {            ERR("Failed to draw rectangle\n");            return;        }        drawSelection(VIDEOALG);    }}/****************************************************************************** * uiPressButton ******************************************************************************/static int uiPressButton(enum Buttons btnIdx){    Button *btnPtr = &buttons[btnIdx];    if (simplewidget_png_show(*btnPtr->pressedImgPtr, simpleScreen,                              btnPtr->x, YSCALE(btnPtr->y)) == -1) {        ERR("Failed to show pressed button png image\n");        return FAILURE;    }    usleep(500000);    if (simplewidget_png_show(*btnPtr->origImgPtr, simpleScreen,                              btnPtr->x, YSCALE(btnPtr->y)) == -1) {        ERR("Failed to show original button png image\n");        return FAILURE;    }    return SUCCESS;}  /****************************************************************************** * uiCreate ******************************************************************************/static int uiCreate(void){    /* Initialize the screens on which to draw widgets */    if (simplewidget_screen_init(getDisplay(), SCREEN_WIDTH,                                 SCREEN_HEIGHT, &simpleScreen) == -1) {        ERR("Failed to initialize simplewidget screen\n");        return FAILURE;    }    /* Create the images for the buttons at the bottom of the screen */    if (simplewidget_png_create(CTRL_BUTTON, &ctrlImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(CTRL_BUTTON_PLAY_PRESSED, &ctrlPlayImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(CTRL_BUTTON_REC_PRESSED, &ctrlRecImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(CTRL_BUTTON_STOP_PRESSED, &ctrlStopImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(CTRL_BUTTON_PAUSE_PRESSED,                                &ctrlPauseImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    /* Create the navigation button in all permutations */    if (simplewidget_png_create(NAV_BUTTON, &navImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(NAV_BUTTON_LEFT_PRESSED, &navLeftImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }    if (simplewidget_png_create(NAV_BUTTON_RIGHT_PRESSED, &navRightImg) == -1) {        ERR("Failed to create png image\n");        return FAILURE;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -