int playback_down_key_active(cdvr_thmb_t *pdvr) { printf("%s:%d dispmode %d\n", __FUNCTION__, __LINE__, pdvr->dispMode); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { // jpeg for scale up function playback_Set_PIPE_With_CMD(CMD_GET_JPEG_SCLIDX, 1); if(pdvr->sclIdx == 0) { //will be in thumbnail mode //dvr_thmb_setDispThmbMode(pdvr); //enter thmb mode #if !CVR_DUAL dvr_thmb_dispPage(pdvr); #else //CVR_DUAL mode // to next file dvr_thmb_nextIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); #endif } else { //if not scale down playback_Set_PIPE_With_CMD(CMD_SET_SCALE_DOWN, 1); playback_Set_PIPE_With_CMD(CMD_GET_JPEG_SCLIDX, 1); } } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { //dvr_thmb_setDispThmbMode(pdvr); //enter thmb mode #if !CVR_DUAL dvr_thmb_dispPage(pdvr); #else //CVR_DUAL mode // to next file pdvr->pVideoInfo->frameRate = 0; dvr_thmb_nextIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); #endif } } else if(pdvr->dispMode == DISP_THMB_SCREEN){ int curPage = pdvr->cur_page; //dvr_thmb_preIdx(pdvr); dvr_thmb_nextIdx(pdvr); if(curPage != pdvr->cur_page) { dvr_thmb_dispPage(pdvr); } } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { pdvr->pVideoInfo->volume -= VIDEO_PLAY_VOLUME_STEP; if(pdvr->pVideoInfo->volume <= 0) { pdvr->pVideoInfo->volume = 0; } ExtGpVideoEngineSetVolume(pdvr->pVideoInfo->volume); } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { playback_Set_PIPE_With_CMD(CMD_SET_SCALE_DOWN, 1); playback_Set_PIPE_With_CMD(CMD_GET_JPEG_SCLIDX, 1); if(pdvr->sclIdx == 0) { dvr_thmb_setDispFullMode(pdvr); //enter full mode } } pthread_mutex_unlock(&g_cdvr->pb_mutex); }
int dvr_thmb_deleteAllFile(cdvr_thmb_t *pdvr, gp_file_t **ppFile) { int number = pdvr->file_number; int i; printf("get delete file number:%d\n", number); for(i=0; i<number; i++) { pdvr->pUrl = FilelistGetFilePath(*ppFile, i); if(FilelistGetLock(*ppFile, i) == GP_FILE_UNLOCK) { printf("======del file %d %s=======\n", i, pdvr->pUrl); fileDel(*ppFile, pdvr->pUrl); printf("delete ok!\n"); } else { printf("%s is lock!!!!\n", pdvr->pUrl); } } sync(); *ppFile = FilelistGetFileNum(pdvr, *ppFile, 1); printf("get file number:%d\n", pdvr->file_number); dvr_thmb_setFileNumber(pdvr, pdvr->file_number, 1); if(pdvr->dispMode == DISP_FULL_SCREEN) { dvr_thmb_dispFullScreen(pdvr, pdvr->upFrame); } return 0; }
/** * menu key active. * return: 0: need do draw ui. -1:do not draw ui. * */ int playback_menu_key_active(cdvr_thmb_t *pdvr) { int ret = 0; printf("%s:%d\n", __FUNCTION__, __LINE__); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { } ret = 0; } else if(pdvr->dispMode == DISP_THMB_SCREEN) { ret = -1; } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { ret = -1; } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { dvr_thmb_dispFullScreen(pdvr); ret = -1; } pthread_mutex_unlock(&g_cdvr->pb_mutex); return ret; }
int playback_up_key_active(cdvr_thmb_t *pdvr) { printf("%s:%d dispmode %d\n", __FUNCTION__, __LINE__, pdvr->dispMode); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { // jpeg for scale up function #if !CVR_DUAL dvr_thmb_setDispScaleMode(pdvr); //image_scale_up(pdvr->pPhotoInfo); playback_Set_PIPE_With_CMD(CMD_SET_SCALE_UP, 1); dvr_thmb_getScaleIndex(pdvr); #else dvr_thmb_preIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); #endif } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { #if CVR_DUAL pdvr->pVideoInfo->frameRate = 0; dvr_thmb_preIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); #endif } } else if(pdvr->dispMode == DISP_THMB_SCREEN){ int curPage = pdvr->cur_page; //dvr_thmb_nextIdx(pdvr); dvr_thmb_preIdx(pdvr); if(curPage != pdvr->cur_page) { dvr_thmb_dispPage(pdvr); } } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { pdvr->pVideoInfo->volume += VIDEO_PLAY_VOLUME_STEP; if(pdvr->pVideoInfo->volume >= 8) { pdvr->pVideoInfo->volume = 8; } ExtGpVideoEngineSetVolume(pdvr->pVideoInfo->volume); } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { //now only in photo playback_Set_PIPE_With_CMD(CMD_SET_SCALE_UP, 1); dvr_thmb_getScaleIndex(pdvr); } pthread_mutex_unlock(&g_cdvr->pb_mutex); }
int dvr_thmb_deleteFile(cdvr_thmb_t *pdvr, gp_file_t **ppFile) { if(FilelistGetLock(*ppFile, dvr_thmb_getCurIdxOfFile(pdvr)) == GP_FILE_UNLOCK) { printf("======del file %s=======\n", pdvr->pUrl); fileDel(*ppFile, pdvr->pUrl); printf("delete ok!\n"); sync(); *ppFile = FilelistGetFileNum(pdvr, *ppFile, 1); printf("get file number:%d\n", pdvr->file_number); dvr_thmb_setFileNumber(pdvr, pdvr->file_number, 0); if(pdvr->dispMode == DISP_FULL_SCREEN) { dvr_thmb_dispFullScreen(pdvr, pdvr->upFrame); } } return 0; }
int dvr_thmb_UpdateAllInfo(cdvr_thmb_t *pdvr) { if(!pdvr) { pdvr = g_cdvr; if(!pdvr) { return -1; } } dvr_thmb_get_info(); pdvr->pUrl = NULL; pdvr->pPath= NULL; FilelistGetPageLock(); FilelistGetFilePath(0); FilelistGetFileName(0); playback_Set_PIPE_With_CMD(CMD_GET_FILE_ALL_TYPE, 1); dvr_thmb_dispFullScreen(pdvr); return 0; }
/** * playback mode key active. * return: 0: do mode active, 1: change mode. **/ int playback_mode_key_active(cdvr_thmb_t *pdvr) { printf("%s:%d\n", __FUNCTION__, __LINE__); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { } } else if(pdvr->dispMode == DISP_THMB_SCREEN) { } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { if(pdvr->pVideoInfo->videoMode == VIDEO_PAUSE) { ExtGpVideoEngineResume(); } ExtGpVideoEngineStop(); g_VideoEnd = 0; pdvr->pVideoInfo->videoMode = VIDEO_OPEN; pdvr->pVideoInfo->speed = 0; //dvr_thmb_dispFullScreen(pdvr); dvr_thmb_dispFullScreen_Replace(pdvr); Dsp_Open(); ExtGpVideoEngineSetVolume(g_sys_vol); timeOut_count = 0; pthread_mutex_unlock(&g_cdvr->pb_mutex); return 1; } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { dvr_thmb_dispFullScreen(pdvr); playback_Set_PIPE_With_CMD(CMD_GET_JPEG_SCLIDX, 1); pthread_mutex_unlock(&g_cdvr->pb_mutex); return 1; } pthread_mutex_unlock(&g_cdvr->pb_mutex); return 0; }
int playback_enter_key_active(cdvr_thmb_t *pdvr) { printf("%s:%d\n", __FUNCTION__, __LINE__); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { #if CVR_DUAL printf("%s:%d\n", __FUNCTION__, __LINE__); //int idx = dvr_thmb_getScaleIndex(pdvr); //if(idx == 0) { dvr_thmb_setDispScaleMode(pdvr); //} //image_scale_up(pdvr->pPhotoInfo); playback_Set_PIPE_With_CMD(CMD_SET_SCALE_UP, 1); dvr_thmb_getScaleIndex(pdvr); #endif } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { printf("%s:%d\n", __FUNCTION__, __LINE__); dvr_thmb_setDispVideoMode(pdvr); if(pdvr->pVideoInfo->videoMode == VIDEO_OPEN) { g_cdvr->pVideoInfo->play_time = 0; g_cdvr->pVideoInfo->show_time = 0; g_cdvr->pVideoInfo->speed = 0; printf("%s:%d\n", __FUNCTION__, __LINE__); Dsp_close(); ExtGpVideoEngineSetVolume(pdvr->pVideoInfo->volume); //ExtGpVideoEngineSetUrl(pdvr->pUrl); g_VideoEnd = 0; ExtGpVideoEnginePlay(); pdvr->pVideoInfo->videoMode = VIDEO_PLAY; } } } else if(pdvr->dispMode == DISP_THMB_SCREEN){ printf("%s:%d\n", __FUNCTION__, __LINE__); //dvr_thmb_setDispFullMode(pdvr); pdvr->pVideoInfo->videoMode = VIDEO_OPEN; pdvr->pVideoInfo->frameRate = 0; dvr_thmb_dispFullScreen(pdvr); } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { if(pdvr->pVideoInfo->videoMode == VIDEO_PAUSE) { //pdvr->pVideoInfo->videoMode = VIDEO_PLAY; pdvr->pVideoInfo->videoMode = pdvr->pVideoInfo->lastMode; pdvr->pVideoInfo->lastMode = -1; ExtGpVideoEngineResume(); } else if(pdvr->pVideoInfo->videoMode == VIDEO_PLAY || pdvr->pVideoInfo->videoMode == VIDEO_SPEED|| pdvr->pVideoInfo->videoMode == VIDEO_REVERSE) { pdvr->pVideoInfo->lastMode = pdvr->pVideoInfo->videoMode; pdvr->pVideoInfo->videoMode = VIDEO_PAUSE; ExtGpVideoEnginePause(); } } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { //need to change to dv mode #if CVR_DUAL playback_Set_PIPE_With_CMD(CMD_SET_SCALE_UP, 1); dvr_thmb_getScaleIndex(pdvr); #endif } pthread_mutex_unlock(&g_cdvr->pb_mutex); }
int playback_down_L_key_active(cdvr_thmb_t *pdvr) { printf("%s:%d\n", __FUNCTION__, __LINE__); int speed = 0; pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { // jpeg for scale up function //dvr_thmb_preIdx(pdvr); dvr_thmb_nextIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { //dvr_thmb_preIdx(pdvr); pdvr->pVideoInfo->frameRate = 0; dvr_thmb_nextIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); } } else if(pdvr->dispMode == DISP_THMB_SCREEN){ //dvr_thmb_prePage(pdvr); dvr_thmb_nextPage(pdvr); dvr_thmb_dispPage(pdvr); } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { printf("set speed: %d\n", pdvr->pVideoInfo->speed); if(pdvr->pVideoInfo->videoMode == VIDEO_PLAY || pdvr->pVideoInfo->videoMode == VIDEO_REVERSE) { if(pdvr->pVideoInfo->videoMode == VIDEO_PLAY) { //call pipe to enter reversed mode in pipe revice cmd callback function, //if set error, it will be in video play ExtGpVideoEngineReversePlay(1); //enter reversed play } if(pdvr->pVideoInfo->videoMode == VIDEO_REVERSE) { speed = pdvr->pVideoInfo->speed; speed++; if(speed == VIDEO_PLAY_SPEED_STEP) { speed = VIDEO_PLAY_SPEED_STEP-1; } else { g_SetSpeed = -1; ExtGpVideoEngineSetSpeed(speed); if(g_SetSpeed != 0) { if(g_SetSpeed == -1) { //-2 is not set pdvr->pVideoInfo->speed = speed; } printf("%s:%d change speed to %d error ret: %d!!!\n", __FUNCTION__, __LINE__, speed, g_SetSpeed); } else { pdvr->pVideoInfo->speed = speed; } } } } else if(pdvr->pVideoInfo->videoMode == VIDEO_SPEED){ speed = pdvr->pVideoInfo->speed; speed--; g_SetSpeed = -1; ExtGpVideoEngineSetSpeed(speed); if(g_SetSpeed == 0) { pdvr->pVideoInfo->speed = speed; if(speed == 0) { pdvr->pVideoInfo->videoMode = VIDEO_PLAY; } else { pdvr->pVideoInfo->videoMode = VIDEO_SPEED; } } else { if(g_SetSpeed == -1) { //-2 is not set pdvr->pVideoInfo->speed = speed; } printf("%s:%d change speed to %d error ret: %d!!!\n", __FUNCTION__, __LINE__, speed, g_SetSpeed); } } } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { } pthread_mutex_unlock(&g_cdvr->pb_mutex); }
int playback_up_L_key_active(cdvr_thmb_t *pdvr) { int speed; printf("%s:%d\n", __FUNCTION__, __LINE__); pthread_mutex_lock(&g_cdvr->pb_mutex); if(pdvr->dispMode == DISP_FULL_SCREEN) { if(pdvr->fileType == GP_FILE_TYPE_JPEG) { // jpeg for scale up function //dvr_thmb_nextIdx(pdvr); dvr_thmb_preIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); } else if(pdvr->fileType == GP_FILE_TYPE_VIDEO) { //dvr_thmb_nextIdx(pdvr); pdvr->pVideoInfo->frameRate = 0; dvr_thmb_preIdx(pdvr); dvr_thmb_dispFullScreen(pdvr); } } else if(pdvr->dispMode == DISP_THMB_SCREEN){ dvr_thmb_prePage(pdvr); //dvr_thmb_nextPage(pdvr); dvr_thmb_dispPage(pdvr); } else if(pdvr->dispMode == DISP_VIDEO_SCREEN) { if(pdvr->pVideoInfo->videoMode == VIDEO_PLAY || pdvr->pVideoInfo->videoMode == VIDEO_SPEED) { speed = pdvr->pVideoInfo->speed; speed++; if(speed == VIDEO_PLAY_SPEED_STEP) { speed = VIDEO_PLAY_SPEED_STEP-1; } else { g_SetSpeed = -1; ExtGpVideoEngineSetSpeed(speed); if(g_SetSpeed != 0) { if(g_SetSpeed == -1) { //-2 is not set pdvr->pVideoInfo->speed = speed; } printf("%s:%d change speed to %d error ret: %d!!!\n", __FUNCTION__, __LINE__, speed, g_SetSpeed); } else { pdvr->pVideoInfo->videoMode = VIDEO_SPEED; pdvr->pVideoInfo->speed = speed; } } } else if(pdvr->pVideoInfo->videoMode == VIDEO_REVERSE){ speed = pdvr->pVideoInfo->speed; speed--; if(speed == 0) { ExtGpVideoEngineReversePlay(0); //disable reversed play // disable reversed mode, if at the last sec, it can not // change video mode. if(pdvr->pVideoInfo->videoMode == VIDEO_PLAY) { g_SetSpeed = -1; ExtGpVideoEngineSetSpeed(speed); if(g_SetSpeed != 0) { if(g_SetSpeed == -1) { //-2 is not set pdvr->pVideoInfo->speed = speed; } printf("%s:%d change speed to %d error ret: %d!!!\n", __FUNCTION__, __LINE__, speed, g_SetSpeed); } else { pdvr->pVideoInfo->speed = speed; } } } else { pdvr->pVideoInfo->videoMode = VIDEO_REVERSE; g_SetSpeed = -1; ExtGpVideoEngineSetSpeed(speed); if(g_SetSpeed != 0) { if(g_SetSpeed == -1) { //-2 is not set pdvr->pVideoInfo->speed = speed; } printf("%s:%d change speed to %d error ret: %d!!!\n", __FUNCTION__, __LINE__, speed, g_SetSpeed); } else { pdvr->pVideoInfo->speed = speed; } } } } else if(pdvr->dispMode == DISP_SCALE_SCREEN) { } pthread_mutex_unlock(&g_cdvr->pb_mutex); }
cdvr_thmb_t *playback_init(int disp, int width, int height) { int i, idx=0; pid_t cam_pid; char *argv[32]; cdvr_thmb_t *pdvr = NULL; g_width = width; g_height = height; g_SetSpeed = -1; timeOut_count = 0; argv[idx++] = strdup("/system/app/cvrplayer"); //argv[idx++] = strdup("/media/sdcardc1/cvrplayer"); argv[idx++] = strdup("cvrplayer"); argv[idx++] = strdup("-p"); argv[idx++] = strdup(Memory_path); argv[idx++] = strdup("-d"); argv[idx++] = (char *)malloc(32); sprintf(argv[idx-1], "%d", disp); argv[idx++] = strdup("-m"); //for filelist argv[idx++] = strdup("0"); argv[idx++] = (char *)0; public_pipeinit(playback_receive_cmd_callback); signal(SIGCHLD, SIG_IGN); if((cam_pid = fork()) <0) { perror("creat pid fail\n"); return NULL; } else if(cam_pid==0) { for(i=0; i<idx-1; i++) { printf("%s\n", argv[i]); } execv(argv[0], &argv[1]); } else { for(i=0; i<idx-1; i++) { free(argv[i]); } g_sys_vol = ExtGpVideoEngineGetVolume(); g_cdvr = pdvr = dvr_thmb_init(width, height); if(!pdvr) { printf("%s:%d\n", __FUNCTION__, __LINE__); return NULL; } usleep(200*1000); printf("%s:%d\n", __FUNCTION__, __LINE__); do{ dvr_thmb_get_info(); if(pdvr->dispMode != -1) { printf("cvrplayer init ok!\n"); break; } else { usleep(200 *1000); } }while(pdvr->dispMode == -1); if(pdvr->dispMode == DISP_FULL_SCREEN) { printf("%s:%d init cvrplayer to FullScreen mode\n", __FUNCTION__, __LINE__); dvr_thmb_dispFullScreen(g_cdvr); FilelistGetPageLock(); } else if (pdvr->dispMode == DISP_NO_FILE) { printf("%s:%d no file mode\n", __FUNCTION__, __LINE__); } pdvr->pid = cam_pid; } return pdvr; }
void playback_reboot(int w, int h) { int i, idx=0; int disp = 0; pid_t cam_pid; char *argv[32]; cdvr_thmb_t *pdvr = NULL; argv[idx++] = strdup("/system/app/cvrplayer"); //argv[idx++] = strdup("/media/sdcardc1/cvrplayer"); argv[idx++] = strdup("cvrplayer"); argv[idx++] = strdup("-p"); argv[idx++] = strdup(Memory_path); argv[idx++] = strdup("-d"); argv[idx++] = (char *)malloc(32); /*if(HDMI_Check() == 1) { // for hdmi and tv check. disp = 6; } else if(TV_Check() == 1) { disp = 4; } else */{ disp = 0; } sprintf(argv[idx-1], "%d", disp); argv[idx++] = (char *)0; pipeDelete(); public_pipeinit(playback_receive_cmd_callback); signal(SIGCHLD, SIG_IGN); if((cam_pid = fork()) <0) { perror("creat pid fail\n"); return ; } else if(cam_pid==0) { for(i=0; i<idx-1; i++) { printf("%s\n", argv[i]); } execv(argv[0], &argv[1]); } else { for(i=0; i<idx-1; i++) { free(argv[i]); } pdvr = g_cdvr; if (pdvr->dispMode == DISP_NO_FILE) { pdvr->pid = cam_pid; printf("%s:%d no file mode\n", __FUNCTION__, __LINE__); } usleep(500*1000); dvr_thmb_set_info(pdvr); pdvr->pUrl = NULL; pdvr->pPath = NULL; pdvr->pVideoInfo->speed = 0; pdvr->sclIdx = 0; pdvr->pVideoInfo->volume = ExtGpVideoEngineGetVolume(); if(pdvr->pVideoInfo->volume > 8) { pdvr->pVideoInfo->volume = 8; } pdvr->pVideoInfo->videoMode = VIDEO_OPEN; pdvr->pUrl = FilelistGetFileName(0); pdvr->pPath = FilelistGetFilePath(0); FilelistGetPageLock(); if(pdvr->dispMode == DISP_THMB_SCREEN) { dvr_thmb_dispPage(g_cdvr); } else { printf("%s:%d init cvrplayer to FullScreen mode\n", __FUNCTION__, __LINE__); dvr_thmb_dispFullScreen(g_cdvr); } pdvr->pid = cam_pid; } return ; }