cdvr_thmb_t *playback_init(int disp) { int file_num; HANDLE hDisp; gp_size_t resolution; if(DispBufManage.DispDev == C_DISP_BUFFER) { resolution.width = DispBufManage.Width; resolution.height = DispBufManage.Height; pixelSize.width = 16; pixelSize.height = 9; hDisp = NULL; } else { if (dispCreate(&hDisp, DISP_LAYER_PRIMARY) != SP_OK) { printf("dispCreate error\n"); return NULL; } dispGetResolution(hDisp, &resolution); dispGetPixelSize(hDisp, disp, &pixelSize); } //mcplayer open ExtGpVideoEngineOpen(disp, resolution.width, resolution.height, videoProcessCallbackMessge, get_idle_buffer, send_ready_buffer); cdvr_thmb_t *pdvr = dvr_thmb_init(resolution.width, resolution.height); if(!pdvr) { printf("%s:%d\n", __FUNCTION__, __LINE__); return NULL; } //init filelist pdvr->pFile = FilelistGetFileNum(pdvr, pdvr->pFile, 1); pdvr->hDisp = hDisp; dvr_thmb_setFileNumber(pdvr, pdvr->file_number, 1); printf("%s:%d, %d\n", __FUNCTION__, __LINE__, pdvr->disp_number); int s_idx = pdvr->disp_number*pdvr->cur_page; int i; disp_thmb_t *pthmb = NULL; for(i=0; i<pdvr->disp_number&&i<=pdvr->cur_pageNum; i++) { pthmb = &pdvr->disp_thmb[i]; pdvr->pUrl = pthmb->url = FilelistGetFilePath(pdvr->pFile, s_idx); printf("get thmb:%s\n", pdvr->pUrl); if(pthmb->url) { pdvr->fileType = pthmb->type = checkFileType(pthmb->url); pthmb->lock = FilelistGetLock(pdvr->pFile, s_idx); printf("get lock %d\n", pthmb->lock); //printf("get %d %s type: %d thumbnail:\n", s_idx, pthmb->url, pthmb->type); } s_idx++; if(s_idx == pdvr->file_number) { break; } } g_cdvr = pdvr; char buf[256]; for(i=0; i<pdvr->file_number; i++) { printf("%s\n", pdvr->pUrl = FilelistGetFilePath(pdvr->pFile, i)); memset(buf, 0, 256); dvr_thmb_getFileInfo(pdvr, buf); printf("%s\n", buf); } printf("%s:%d\n", __FUNCTION__, __LINE__); return pdvr; }
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; }