📄 dec.c
字号:
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; } if (simplewidget_png_create(INFO_BUTTON, &infoImg) == -1) { ERR("Failed to create png image\n"); return FAILURE; } if (simplewidget_png_create(WRONG_BUTTON, &noWrongImg) == -1) { ERR("Failed to create png image\n"); return FAILURE; } if (simplewidget_png_create(WRONG_BUTTON_PRESSED, &wrongImg) == -1) { ERR("Failed to create png image\n"); return FAILURE; } /* Create the text strings to be displayed at the top of the screen */ if (simplewidget_text_create(COLUMN_3, ROW_1, PTSIZE, DEMONAMESTRING, &demoNameText) == -1) { ERR("Failed to create cpu load text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_2, PTSIZE, H264CODECSTRING, &h264VideoCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_2, PTSIZE, MPEG4CODECSTRING, &mpeg4VideoCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_2, PTSIZE, MPEG2CODECSTRING, &mpeg2VideoCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_3, PTSIZE, AACCODECSTRING, &aacAudioCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_3, PTSIZE, MPEG1L2CODECSTRING, &mpeg1l2AudioCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_3, PTSIZE, G711CODECSTRING, &g711SpeechCodecText) == -1) { ERR("Failed to create video codec text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_4, PTSIZE, RESOLUTIONSTRING, &resolutionText) == -1) { ERR("Failed to create kbps text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_5, PTSIZE, DISPLAYSTRING, &displayText) == -1) { ERR("Failed to create kbps text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_6, PTSIZE, AUDIOSAMFREQSTRING, &audioSampleFreqText) == -1) { ERR("Failed to create kbps text\n"); return FAILURE; } if (simplewidget_text_create(COLUMN_3, ROW_6, PTSIZE, SPEECHSAMFREQSTRING, &speechSampleFreqText) == -1) { ERR("Failed to create kbps text\n"); return FAILURE; } if (gbl.yFactor == NTSC) { strncpy(fileCombos[0].videoFile, DAVINCIEFFECT_MPEG2_NTSC, MAX_FILENAME_LENGTH); strncpy(fileCombos[1].videoFile, DAVINCIEFFECT_H264_NTSC, MAX_FILENAME_LENGTH); strncpy(fileCombos[2].videoFile, DAVINCIEFFECT_MPEG4_NTSC, MAX_FILENAME_LENGTH); } else { strncpy(fileCombos[0].videoFile, DAVINCIEFFECT_MPEG2_PAL, MAX_FILENAME_LENGTH); strncpy(fileCombos[1].videoFile, DAVINCIEFFECT_H264_PAL, MAX_FILENAME_LENGTH); strncpy(fileCombos[2].videoFile, DAVINCIEFFECT_MPEG4_PAL, MAX_FILENAME_LENGTH); } strncpy(fileCombos[0].soundFile, DAVINCIEFFECT_MPEG1L2, MAX_FILENAME_LENGTH); strncpy(fileCombos[1].soundFile, DAVINCIEFFECT_AAC, MAX_FILENAME_LENGTH); strncpy(fileCombos[2].soundFile, DAVINCIEFFECT_G711, MAX_FILENAME_LENGTH); strncpy(fileCombos[3].videoFile, USERMADE_MPEG4, MAX_FILENAME_LENGTH); strncpy(fileCombos[3].soundFile, USERMADE_MPEG4_G711, MAX_FILENAME_LENGTH); strncpy(fileCombos[4].videoFile, USERMADE_H264, MAX_FILENAME_LENGTH); strncpy(fileCombos[4].soundFile, USERMADE_H264_G711, MAX_FILENAME_LENGTH); DBG("Successfully created OSD\n"); return SUCCESS;}/****************************************************************************** * uiDraw ******************************************************************************/static int uiDraw(void){ /* Clear the OSD window (s) */ simplewidget_screen_clear(simpleScreen, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); if (simplewidget_png_show(ctrlImg, simpleScreen, CTRL_BUTTON_X, YSCALE(CTRL_BUTTON_Y)) == -1) { ERR("Failed to show png image\n"); return FAILURE; } if (simplewidget_png_show(navImg, simpleScreen, NAV_BUTTON_X, YSCALE(NAV_BUTTON_Y)) == -1) { ERR("Failed to show png image\n"); return FAILURE; } if (simplewidget_png_show(infoImg, simpleScreen, INFO_BUTTON_X, YSCALE(INFO_BUTTON_Y)) == -1) { ERR("Failed to show png image\n"); return FAILURE; } if (simplewidget_text_show(demoNameText, simpleScreen) == -1) { ERR("Failed to show capture resolution text\n"); return FAILURE; } if (simplewidget_text_show(resolutionText, simpleScreen) == -1) { ERR("Failed to show capture resolution text\n"); return FAILURE; } if (simplewidget_text_show(displayText, simpleScreen) == -1) { ERR("Failed to show capture resolution text\n"); return FAILURE; } if (simplewidget_text_show(audioSampleFreqText, simpleScreen) == -1) { ERR("Failed to show capture resolution text\n"); return FAILURE; } drawSelection(); return SUCCESS;}/****************************************************************************** * uiDelete ******************************************************************************/static int uiDelete(void){ if (demoNameText) { simplewidget_text_delete(demoNameText); } if (displayText) { simplewidget_text_delete(displayText); } if (resolutionText) { simplewidget_text_delete(resolutionText); } if (h264VideoCodecText) { simplewidget_text_delete(h264VideoCodecText); } if (mpeg2VideoCodecText) { simplewidget_text_delete(mpeg2VideoCodecText); } if (mpeg4VideoCodecText) { simplewidget_text_delete(mpeg4VideoCodecText); } if (aacAudioCodecText) { simplewidget_text_delete(aacAudioCodecText); } if (mpeg1l2AudioCodecText) { simplewidget_text_delete(mpeg1l2AudioCodecText); } if (g711SpeechCodecText) { simplewidget_text_delete(g711SpeechCodecText); } if (ctrlRecImg) { simplewidget_png_delete(ctrlRecImg); } if (ctrlPauseImg) { simplewidget_png_delete(ctrlPauseImg); } if (ctrlStopImg) { simplewidget_png_delete(ctrlStopImg); } if (ctrlPlayImg) { simplewidget_png_delete(ctrlPlayImg); } if (ctrlImg) { simplewidget_png_delete(ctrlImg); } if (infoImg) { simplewidget_png_delete(infoImg); } if (wrongImg) { simplewidget_png_delete(wrongImg); } if (noWrongImg) { simplewidget_png_delete(noWrongImg); } if (navRightImg) { simplewidget_png_delete(navRightImg); } if (navLeftImg) { simplewidget_png_delete(navLeftImg); } if (navImg) { simplewidget_png_delete(navImg); } if (simpleScreen) { simplewidget_screen_exit(simpleScreen); } return SUCCESS;}/****************************************************************************** * keyAction ******************************************************************************/static int keyAction(enum msp430lib_keycode key, DemoEnv *envp, int *quitPtr){ switch(key) { case MSP430LIB_KEYCODE_PLAY: if (uiPressButton(CTRLPLAY) == FAILURE) { return FAILURE; } if (videoAvail && soundAvail) { *quitPtr = TRUE; } break; case MSP430LIB_KEYCODE_STOP: *quitPtr = NOSELECTION; break; case MSP430LIB_KEYCODE_VOLINC: fileComboIdx = (fileComboIdx + 1) % NUM_FILE_COMBOS; drawSelection(); if (uiPressButton(NAVPLUS) == FAILURE) { return FAILURE; } break; case MSP430LIB_KEYCODE_VOLDEC: if (fileComboIdx - 1 < 0) { fileComboIdx = NUM_FILE_COMBOS - 1; } else { fileComboIdx--; } drawSelection(); if (uiPressButton(NAVMINUS) == FAILURE) { return FAILURE; } break; case MSP430LIB_KEYCODE_INFOSELECT: DBG("Menu done or info/select command received.\n"); if (osdVisible) { setOsdTransparency(0x0); osdVisible = 0; } else { setOsdTransparency(osdTransparency); osdVisible = 1; } break; default: DBG("Unknown button pressed.\n"); if (uiPressButton(WRONG) == FAILURE) { return FAILURE; } } return SUCCESS;}/****************************************************************************** * decodeFxn ******************************************************************************/int decodeFxn(DemoEnv *envp){ enum InitLevels initLevel = 0; int status = SUCCESS; int quit = 0; enum msp430lib_keycode key; if (getYFactor() == NTSC) { if (drawDiagram(DEMO_DIAGRAM_NTSC) == FAILURE) { CLEANUP(FAILURE); } } else { if (drawDiagram(DEMO_DIAGRAM_PAL) == FAILURE) { CLEANUP(FAILURE); } } if (uiCreate() == FAILURE) { CLEANUP(FAILURE); } initLevel = CREATEDINTERFACE; if (setOsdTransparency(osdTransparency) == FAILURE) { CLEANUP(FAILURE); } if (uiDraw() == FAILURE) { CLEANUP(FAILURE); } if (msp430lib_init() == MSP430LIB_FAILURE) { ERR("Failed to initialize msp430lib.\n"); CLEANUP(FAILURE); } initLevel = MSP430LIBINITIALIZED; while (!quit) { /* See if an IR remote key has been pressed */ if (msp430lib_get_ir_key(&key) == MSP430LIB_FAILURE) { ERR("Failed to get IR value.\n"); } DBG("Got IR key %#x from the MSP430\n", key); /* If an IR key had been pressed, service it */ if (key != 0) { if (keyAction(key, envp, &quit) == FAILURE) { BREAK_LOOP(FAILURE); } } usleep(500000); } envp->videoFile = fileCombos[fileComboIdx].videoFile; envp->soundFile = fileCombos[fileComboIdx].soundFile; if (quit == NOSELECTION) { status = NOSELECTION; }cleanup: if (initLevel >= MSP430LIBINITIALIZED) { msp430lib_exit(); } if (initLevel >= CREATEDINTERFACE) { uiDelete(); } return status;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -