int dvr_thmb_dispFullScreen(cdvr_thmb_t *pdvr) { int ret; if(!pdvr) { pdvr = g_cdvr; if(!pdvr) return -1; } printf("%s:%d\n", __FUNCTION__, __LINE__); if(pdvr->dispMode == DISP_NO_FILE) { return -1; } dvr_thmb_setDispFullMode(pdvr); ret = playback_Set_PIPE_With_CMD(CMD_SET_FULLSCREEN, 1); if(g_cmd_ret == -1) { g_cmd_ret = dvr_thmb_setMovRecover(pdvr); ret = playback_Set_PIPE_With_CMD(CMD_SET_FULLSCREEN, 1); } dvr_thmb_get_info(); pdvr->pUrl = FilelistGetFileName(0); #if CVR_DUAL playback_Set_PIPE_With_CMD(CMD_GET_FILE_DUAL_IDX, 1); #endif return ret; }
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_dispFullScreen_Replace(cdvr_thmb_t *pdvr) { int ret; if(!pdvr) { pdvr = g_cdvr; if(!pdvr) return -1; } if(pdvr->dispMode == DISP_NO_FILE) { return -1; } dvr_thmb_setDispFullMode(pdvr); ret = playback_Set_PIPE_With_CMD(CMD_SET_FULLSCREEN_REPLACE, 1); dvr_thmb_get_info(); pdvr->pUrl = FilelistGetFileName(0); return ret; }
/** * jpeg file : need to updata pdvr->disp_bitmap to display; * video: need to call dispFlip(); **/ int dvr_thmb_dispFullScreen(cdvr_thmb_t *pdvr, char *disp_pData) { int ret = -1; SINT64 stime, etime; gp_bitmap_t *pbitmap= NULL; if(!pdvr) { return -1; } char *purl = NULL; int type = -1; dvr_thmb_setDispFullMode(pdvr); if(DispBufManage.DispDev == C_DISP_BUFFER) { pdvr->upFrame = (unsigned char *)get_idle_buffer(0); clean_buffer(pdvr->upFrame, 0); } else { pdvr->upFrame = (char *)dispGetFramebuffer(pdvr->hDisp); } pdvr->pUrl = FilelistGetFilePath(pdvr->pFile, dvr_thmb_getCurIdxOfFile(pdvr)); pdvr->fileType = checkFileType(pdvr->pUrl); printf("[%s:%d]curIdx %d curPage %d pageNum %d type %d\n", __FUNCTION__, __LINE__, pdvr->cur_idx, pdvr->cur_page, pdvr->cur_pageNum, pdvr->fileType); purl = pdvr->pUrl; type = pdvr->fileType; photo_uninit(pdvr->pPhotoInfo); //for jpeg->video->jpeg pdvr->pPhotoInfo = NULL; if(purl) { stime = sysGetCurTime(); ret = -1; if(type == GP_FILE_TYPE_VIDEO) { pbitmap= &pdvr->disp_bitmap; pbitmap->pData = (unsigned char*)pdvr->upFrame; ret = mcpGetThumbnail(pbitmap, purl, 0); } else if(type == GP_FILE_TYPE_JPEG) { pdvr->pPhotoInfo = photo_init(purl, &pdvr->disp_bitmap); if(pdvr->pPhotoInfo) { pdvr->pPhotoInfo->bitmap->pData = (unsigned char*)pdvr->upFrame; ret = image_scale(pdvr->pPhotoInfo); if(ret == -1) { } } } etime = sysGetCurTime(); printf("thumbnail used time %lld - %lld = %lldms ret %d\n", etime, stime, etime - stime, ret); if(ret == -1) { //dispCleanFramebuffer(pdvr->hDisp); if(DispBufManage.DispDev == C_DISP_BUFFER) { pdvr->upFrame = (unsigned char *)get_idle_buffer(0); clean_buffer(pdvr->upFrame, 0); } else { pdvr->upFrame = (char *)dispGetFramebuffer(pdvr->hDisp); dispCleanFramebuffer(pdvr->hDisp); } printf("WARNNING: get fulscreen error!!!!!!!\n"); } } dvr_thmb_dispFlip(pdvr); return ret; }