int dvr_thmb_dispPage(cdvr_thmb_t *pdvr, int page, char *disp_pData)
{
	int s_idx = -1;
	int ret = -1;
	int i;
	SINT64 stime, etime;
	disp_thmb_t *pthmb = NULL;
	if(!pdvr) {
		return -1;
	}

	dvr_thmb_setDispThmbMode(pdvr);

	photo_uninit(pdvr->pPhotoInfo); //for jpeg->thmb->jpeg
	pdvr->pPhotoInfo = NULL;

	//pdvr->cur_page = page;
	s_idx = pdvr->disp_number*pdvr->cur_page;
	//pdvr->cur_idx = 0;

	for(i=0; i<pdvr->disp_number; 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);
			stime = sysGetCurTime(); 
			ret = -1;

			if(pthmb->type == GP_FILE_TYPE_VIDEO) {
				pthmb->bitmap.pData = disp_pData;
				ret = mcpQtffGetThumbnail(&pthmb->bitmap, pthmb->url);
				if(ret == -1) {
					printf("WARNNING: USING parse video thumbnail !\n");
					ret = mcpGetThumbnail(&pthmb->bitmap, pthmb->url, 0);
					if(ret == -1) {
						printf("WARNNING: get video thumbnail error!!!!!!!\n");
					}
				}
			}
			else if(pthmb->type == GP_FILE_TYPE_JPEG) {
				ret = load_imageThumbnail(pthmb->url, pdvr, pthmb, (UINT8 *)disp_pData);
			}
			etime = sysGetCurTime();
			printf("thumbnail used time %lld - %lld = %lldms ret %d\n", etime, stime, etime - stime, ret);
		}
		s_idx++;
		if(s_idx == pdvr->file_number) {
			break;
		}
	}

	return 0;
}
const CHR *AudioIO::detectSourceType(const CHR *const fileName, const bool verbose)
{
	if (verbose)
	{
		PRINT_NFO(TXT("------- Audio I/O -------"));
	}
	
	uint8_t type = AUDIO_LIB_NULL;
	const bool bStdIn = (STRCASECMP(fileName, TXT("-")) == 0);

	if (bStdIn || PATH_ISREG(fileName))
	{
		if (FILE *const file = bStdIn ? stdin : FOPEN(fileName, TXT("rb")))
		{
			if (FD_ISREG(FILENO(file)))
			{
				for (size_t i = 0; g_audioIO_mapping[i].id; ++i)
				{
					if (verbose)
					{
						PRINT2_NFO(TXT("Trying input module ") FMT_CHR TXT("..."), g_audioIO_mapping[i].name);
					}
					if (checkFileType(g_audioIO_mapping[i].checkFileType, file))
					{
						type = g_audioIO_mapping[i].id;
						if (verbose)
						{
							PRINT_NFO(TXT("succeeded."));
						}
						break;
					}
				}
			}
			if (!bStdIn)
			{
				fclose(file);
			}
		}
	}

	if (verbose)
	{
		if(type == AUDIO_LIB_NULL)
		{
			PRINT_NFO(TXT("No suitable input module found -> falling back to default!"));
		}
		PRINT_NFO(TXT("------- Audio I/O -------\n"));
	}

	return getLibName(type);
}
RAMPFILE* rampOpenFile(const char* filename){
	int i=checkFileType(filename);
	if(i==0){
		return NULL;
	} else {
		RAMPFILE* r=new RAMPFILE();
		r->bs = new BasicSpectrum();
		r->fileType=i;
		switch(i){
			case 1: //mzML
			case 3:
				r->mzML=new mzpSAXMzmlHandler(r->bs);
				if(i==3)r->mzML->setGZCompression(true);
				else r->mzML->setGZCompression(false);
				if(!r->mzML->load(filename)){
					delete r;
					return NULL;
				} else {
					return r;
				}
			case 2: //mzXML
			case 4:
				r->mzXML=new mzpSAXMzxmlHandler(r->bs);
				if(i==4) r->mzXML->setGZCompression(true);
				else r->mzXML->setGZCompression(false);
				if(!r->mzXML->load(filename)){
					delete r;
					return NULL;
				} else {
					return r;
				}
			case 5: //mz5
				r->mz5Config = new mzpMz5Config();
				r->mz5=new mzpMz5Handler(r->mz5Config, r->bs);
				if(!r->mz5->readFile(filename)){
					delete r;
					return NULL;
				} else {
					return r;
				}
			default:
				delete r;
				return NULL;
		}
	}

}
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;
}
/**
 * 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;
}
Exemple #6
0
int C3dsTool::CheckOptions()
{
	if (m_eAction == kActionNone)
	{
		printf("ERROR: nothing to do\n\n");
		return 1;
	}
	if (m_eAction != kActionDiff && m_eAction != kActionSample && m_eAction != kActionHelp && m_pFileName == nullptr)
	{
		printf("ERROR: no --file option\n\n");
		return 1;
	}
	if (m_eAction == kActionExtract)
	{
		if (!checkFileType())
		{
			printf("ERROR: %s\n\n", m_pMessage);
			return 1;
		}
		switch (m_eFileType)
		{
		case kFileTypeCci:
			if (m_pHeaderFileName == nullptr)
			{
				bool bNull = true;
				for (int i = 0; i < 8; i++)
				{
					if (m_pNcchFileName[i] != nullptr)
					{
						bNull = false;
						break;
					}
				}
				if (bNull)
				{
					printf("ERROR: nothing to be extract\n\n");
					return 1;
				}
			}
			break;
		case kFileTypeCxi:
			if (m_pHeaderFileName == nullptr && m_pExtendedHeaderFileName == nullptr && m_pLogoRegionFileName == nullptr && m_pPlainRegionFileName == nullptr && m_pExeFsFileName == nullptr && m_pRomFsFileName == nullptr)
			{
				printf("ERROR: nothing to be extract\n\n");
				return 1;
			}
			break;
		case kFileTypeCfa:
			if (m_pHeaderFileName == nullptr && m_pRomFsFileName == nullptr)
			{
				printf("ERROR: nothing to be extract\n\n");
				return 1;
			}
			break;
		case kFileTypeExeFs:
			if (m_pHeaderFileName == nullptr && m_pExeFsDirName == nullptr)
			{
				printf("ERROR: nothing to be extract\n\n");
				return 1;
			}
			break;
		case kFileTypeRomFs:
			if (m_pRomFsDirName == nullptr)
			{
				printf("ERROR: no --romfs-dir option\n\n");
				return 1;
			}
			break;
		case kFileTypeBanner:
			if (m_pBannerDirName == nullptr)
			{
				printf("ERROR: no --banner-dir option\n\n");
				return 1;
			}
			break;
		default:
			break;
		}
	}
	if (m_eAction == kActionCreate)
	{
		if (m_eFileType == kFileTypeUnknown)
		{
			printf("ERROR: no --type option\n\n");
			return 1;
		}
		else
		{
			if (m_eFileType == kFileTypeCci || m_eFileType == kFileTypeCxi || m_eFileType == kFileTypeCfa || m_eFileType == kFileTypeExeFs)
			{
				if (m_pHeaderFileName == nullptr)
				{
					printf("ERROR: no --header option\n\n");
					return 1;
				}
			}
			if (m_eFileType == kFileTypeCci)
			{
				if (m_pNcchFileName[0] == nullptr)
				{
					printf("ERROR: no --partition0 option\n\n");
					return 1;
				}
			}
			else if (m_eFileType == kFileTypeCxi)
			{
				if (m_pExtendedHeaderFileName == nullptr || m_pExeFsFileName == nullptr)
				{
					printf("ERROR: no --extendedheader or --exefs option\n\n");
					return 1;
				}
			}
			else if (m_eFileType == kFileTypeCfa)
			{
				if (m_pRomFsFileName == nullptr)
				{
					printf("ERROR: no --romfs option\n\n");
					return 1;
				}
			}
			else if (m_eFileType == kFileTypeExeFs)
			{
				if (m_pExeFsDirName == nullptr)
				{
					printf("ERROR: no --exefs-dir option\n\n");
					return 1;
				}
			}
			else if (m_eFileType == kFileTypeRomFs)
			{
				if (m_pRomFsDirName == nullptr)
				{
					printf("ERROR: no --romfs-dir option\n\n");
					return 1;
				}
			}
			else if (m_eFileType == kFileTypeBanner)
			{
				if (m_pBannerDirName == nullptr)
				{
					printf("ERROR: no --banner-dir option\n\n");
					return 1;
				}
			}
		}
	}
	if (m_eAction == kActionEncrypt)
	{
		if (m_nEncryptMode == CNcch::kEncryptModeNone)
		{
			printf("ERROR: no key or xor data file\n\n");
			return 1;
		}
		else if (m_nEncryptMode == CNcch::kEncryptModeXor)
		{
			if (m_pExtendedHeaderXorFileName != nullptr || m_pExeFsXorFileName != nullptr || m_pRomFsXorFileName != nullptr)
			{
				if (m_pXorFileName != nullptr)
				{
					printf("ERROR: --xor can not with --extendedheader-xor or --exefs-xor or --romfs-xor\n\n");
					return 1;
				}
				if (CNcch::IsCxiFile(m_pFileName))
				{
					if (m_eFileType != kFileTypeUnknown && m_eFileType != kFileTypeCxi && m_bVerbose)
					{
						printf("INFO: ignore --type option\n");
					}
				}
				else if (CNcch::IsCfaFile(m_pFileName))
				{
					if (m_pRomFsXorFileName == nullptr)
					{
						printf("ERROR: no --romfs-xor option\n\n");
						return 1;
					}
					if (m_eFileType != kFileTypeUnknown && m_eFileType != kFileTypeCfa && m_bVerbose)
					{
						printf("INFO: ignore --type option\n");
					}
				}
				else
				{
					printf("ERROR: %s is not a ncch file\n\n", m_pFileName);
					return 1;
				}
			}
		}
	}
	if (m_eAction == kActionUncompress || m_eAction == kActionCompress)
	{
		if (m_eCompressType == kCompressTypeNone)
		{
			printf("ERROR: no --compress-type option\n\n");
			return 1;
		}
		if (m_pCompressOutFileName == nullptr)
		{
			m_pCompressOutFileName = m_pFileName;
		}
	}
	if (m_eAction == kActionTrim || m_eAction == kActionPad)
	{
		if (!CNcsd::IsNcsdFile(m_pFileName))
		{
			printf("ERROR: %s is not a ncsd file\n\n", m_pFileName);
			return 1;
		}
		else if (m_eFileType != kFileTypeUnknown && m_eFileType != kFileTypeCci && m_bVerbose)
		{
			printf("INFO: ignore --type option\n");
		}
	}
	if (m_eAction == kActionDiff)
	{
		if (m_pOldFileName == nullptr)
		{
			printf("ERROR: no --old option\n\n");
			return 1;
		}
		if (m_pNewFileName == nullptr)
		{
			printf("ERROR: no --new option\n\n");
			return 1;
		}
		if (m_pPatchFileName == nullptr)
		{
			printf("ERROR: no --patch-file option\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionPatch)
	{
		if (m_pPatchFileName == nullptr)
		{
			printf("ERROR: no --patch-file option\n\n");
			return 1;
		}
	}
	return 0;
}