Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}