📄 burn.cpp~
字号:
tmp_blks+=((udf_file.F_Lengh)/2048+1); ITRI_context->gui->ITRI_Draw_Burn_Progress(100,""); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx total_size=20+FileNum*sizeof(typeUdfFile); total_blk=total_size/2048+1; Vol_Blocks=Vol_Blocks+tmp_blks;//;//599+566+(34-FileNum)+(ptr1->F_Lengh)/2048+1; RMMemset(tmp_ptr,0x00,total_blk*2048); RMMemcpy(tmp_ptr,ITRI_ID,10); RMMemcpy(tmp_ptr+10,&FileNum,2); RMMemcpy(tmp_ptr+12,&tmp_nwa,4); RMMemcpy(tmp_ptr+16,&Vol_Blocks,4); //for (i=0;i<PrevNum;i++) // RMMemcpy(tmp_ptr+20+i*sizeof(typeUdfFile),pattern+20+i*60,60);//sizeof(typeUdfFile) RMMemcpy(tmp_ptr+20,ptr1,FileNum*60); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx isMultiFlag=0x00; UDF102_FS_Create(isMultiFlag,tmp_ptr,0); //isMultiFlag,tmp_ptr,0); RMMemcpy(udf_ptr+120*2048,tmp_ptr,total_blk*2048); //Write_PASS_PVM(); tmp_lba=0; for (i=0;i<10;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } FVD_Write10(ITRI_context->disc,udf_ptr+614400,300,20); tmp_lba+=20; UDF102_File_ICB_Create(tmp_ptr); for (i=0;i<13;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } FVD_Write10(ITRI_context->disc,udf_ptr+390*2048,tmp_lba,10); tmp_lba+=10; FVD_SyncCache(ITRI_context->disc,0,0); ITRI_context->gui->ITRI_Draw_Burn_Progress(100,"Fnished"); } //END ==>if (strcmp((char *)itri_id,ITRI_ID)==0) else { printf("Find no itri pattern \n"); FileNum=numofItems+6;//1+1+1+3;//Add 1.PASSIDX.PVM 2.ALBUM.PVM 3.ASSET_LIST.PVM ITRI_pnav->MyFavorfiletemp = ITRI_pnav->MyFavorfilefirst; tmp_nwa=720; RMMemset(ptr1,0x00,numofItems * 60); for (i=0;i<numofItems;i++)//tmp_nwa { RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,ITRI_pnav->MyFavorfiletemp->path); RMAppendAscii(fullpath,ITRI_pnav->MyFavorfiletemp->name); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,ITRI_pnav->MyFavorfiletemp->name); udf_file.FileAddr=tmp_nwa; udf_file.F_Lengh=(RMuint32)ITRI_pnav->MyFavorfiletemp->size; udf_file.Attribute=type; RMMemcpy(ptr1+i*60,&udf_file,60); WriteSingleFile(fullpath,tmp_nwa,udf_file.F_Lengh); printf("(no itri patt)0213 %dth Name:%s ,strlen(name):%ld \n",i+1,udf_file.F_name,RMasciiLength(udf_file.F_name)); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; ITRI_pnav->MyFavorfiletemp1 = ITRI_pnav->MyFavorfiletemp->next; ITRI_pnav->MyFavorfiletemp = ITRI_pnav->MyFavorfiletemp1; } /* PASSIDX File 1. File name 2. File Addr 3.File Length 4.Attributes */ RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"PASSIDX.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_PASS_PVM(); udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+numofItems*60,&udf_file,60); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; /* ALBUM.PVM File 1. File name 2. File Addr 3.File Length 4.Attributes */ RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"ALBUM.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_ALBUM_PVM(ptr1,FileNum); udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+(numofItems+1)*60,&udf_file,60); ITRI_context->gui->ITRI_Draw_Burn_Progress(99,udf_file.F_name); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; /* ASSET_LIST.PVM File 1. File name 2. File Addr 3.File Length 4.Attributes */ //Write_AssetList_PVM Write_AssetList_PVM RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"ASSET_LIST.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_AssetList_PVM(); udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+(numofItems+2)*60,&udf_file,60); ITRI_context->gui->ITRI_Draw_Burn_Progress(99,udf_file.F_name); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; /* #define jpg_pvm "PASS_PICTURES.PVM" #define wmv_pvm "PASS_MOVIES.PVM" #define mp3_pvm "PASS_AUDIO.PVM" */ //Write_PASS_PICTURES.PVM ICB=37 RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"PASS_PICTURES.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_Pictures_PVM(ptr1,FileNum);//AssetList_PVM();Write_AssetList_PVM( udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+(numofItems+3)*60,&udf_file,60); ITRI_context->gui->ITRI_Draw_Burn_Progress(99,udf_file.F_name); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; //Write_PASS_AUDIO.PVM ICB=38 RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"PASS_AUDIO.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_Audio_PVM(ptr1,FileNum);//AssetList_PVM();Write_AssetList_PVM( udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+(numofItems+4)*60,&udf_file,60); ITRI_context->gui->ITRI_Draw_Burn_Progress(99,udf_file.F_name); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; //Write_PASS_MOVIES.PVM ICB=39 RMMemset(fullpath,0x00,80); RMCopyAscii(fullpath,"/tmp/itri_tmp.txt"); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,"PASS_MOVIES.PVM"); udf_file.FileAddr=tmp_nwa; length=Write_Movies_PVM(ptr1,FileNum);//AssetList_PVM();Write_AssetList_PVM( udf_file.F_Lengh=(RMuint32)length; udf_file.Attribute=0x04; RMMemcpy(ptr1+(numofItems+5)*60,&udf_file,60); ITRI_context->gui->ITRI_Draw_Burn_Progress(99,udf_file.F_name); WriteSingleMPVFile(fullpath,tmp_nwa,udf_file.F_Lengh); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; //tmp_blks+=((udf_file.F_Lengh)/2048+1); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ next_lba=tmp_nwa; tmp_blks=tmp_nwa-720; total_size=20+FileNum*sizeof(typeUdfFile); total_blk=total_size/2048+1; //pattern info total need allocate space Vol_Blocks=1299+tmp_blks;//599+tmp_blks;//(ptr1->F_Lengh)/2048+1;//261+288+16+34+(ptr1->F_Lengh)/2048+1; RMMemset(tmp_ptr,0x00,total_blk*2048); RMMemcpy(tmp_ptr,ITRI_ID,10); RMMemcpy(tmp_ptr+10,&FileNum,2); RMMemcpy(tmp_ptr+12,&next_lba,4); RMMemcpy(tmp_ptr+16,&Vol_Blocks,4); RMMemcpy(tmp_ptr+20,ptr1,FileNum*60); isMultiFlag=0; UDF102_FS_Create(isMultiFlag,tmp_ptr,0); RMMemcpy(udf_ptr+120*2048,tmp_ptr,total_blk*2048); //Write_PASS_PVM(); tmp_lba=0; for (i=0;i<10;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } FVD_Write10(ITRI_context->disc,udf_ptr+614400,300,20); tmp_lba+=20; UDF102_File_ICB_Create(tmp_ptr); for (i=0;i<13;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } FVD_Write10(ITRI_context->disc,udf_ptr+390*2048,tmp_lba,10); tmp_lba+=10; FVD_SyncCache(ITRI_context->disc,0,0); }//END=>Else break; } ReleaseBuffer(); return RM_OK;}RMstatus ComputeMultiFileListInfo(RMuint16 numofItems,RMuint8 type){ RMuint8 *pattern=NULL,*ptr1=NULL,*tmp_ptr=NULL; struct timespec usleep_req={0,300000000}; struct READ_BUF_CAPA bc; RMbool isDiscReady; RMstatus status=RM_ERROR; RMuint8 itri_id[12],buf[128],isMultiFlag=0,b3,b2,b1,b0; RMascii fullpath[80]; RMuint16 i,PrevNum,FileNum; RMuint32 next_lba,tmp_nwa,BlankBufLen,tmp_blks=0; RMuint32 tmp_lba,tmp_len,total_size,total_blk,Vol_Blocks; typeUdfFile udf_file; printf("numofItems:%d ,type=%d \n",numofItems,type); switch (ITRI_DISC_Flag) { case 1: printf("Blank DVD+RW Disc\n"); FileNum=numofItems; ITRI_pnav->MyFavorfiletemp = ITRI_pnav->MyFavorfilefirst; tmp_nwa=700; ptr1=(RMuint8 *)malloc(5+numofItems * sizeof(typeUdfFile)); if (ptr1==NULL) {printf("Allocate ptr1 buf error\n");return RM_ERROR;} RMMemset(ptr1,0x00,5+numofItems * sizeof(typeUdfFile)); for (i=0;i<numofItems;i++)//tmp_nwa { RMMemset(fullpath,0x00,80*sizeof(RMascii)); RMCopyAscii(fullpath,ITRI_pnav->MyFavorfiletemp->path); RMAppendAscii(fullpath,ITRI_pnav->MyFavorfiletemp->name); RMMemset(udf_file.F_name,0x00,sizeof(typeUdfPath)); RMCopyAscii(udf_file.F_name,ITRI_pnav->MyFavorfiletemp->name); udf_file.FileAddr=tmp_nwa; udf_file.F_Lengh=(RMuint32)ITRI_pnav->MyFavorfiletemp->size; udf_file.Attribute=type; RMMemcpy(ptr1+i*sizeof(typeUdfFile),&udf_file,sizeof(typeUdfFile)); //printf("no itri pattern xx %dth File Name:%s ,NWA=%ld , size:%ld \n",i+1,udf_file.F_name,udf_file.FileAddr,udf_file.F_Lengh); WriteSingleFile(fullpath,tmp_nwa,udf_file.F_Lengh); printf("%dth name:%s ,LBA=%ld ,%ld(in Blks) \n",i+1,udf_file.F_name,tmp_nwa,(udf_file.F_Lengh)/2048+1); tmp_nwa=tmp_nwa+(udf_file.F_Lengh)/2048+1; ITRI_pnav->MyFavorfiletemp1 = ITRI_pnav->MyFavorfiletemp->next; ITRI_pnav->MyFavorfiletemp = ITRI_pnav->MyFavorfiletemp1; } next_lba=tmp_nwa; tmp_blks=tmp_nwa-700; total_size=20+FileNum*sizeof(typeUdfFile); total_blk=total_size/2048+1; //pattern info total need allocate space Vol_Blocks=1299+tmp_blks;//599+tmp_blks;//(ptr1->F_Lengh)/2048+1;//261+288+16+34+(ptr1->F_Lengh)/2048+1; tmp_ptr=(RMuint8 *)malloc(5+total_blk*2048); if (tmp_ptr==NULL) {printf("Allocate tmp_ptr buffer error\n");return RM_ERROR;} RMMemset(tmp_ptr,0x00,5+total_blk*2048); RMMemcpy(tmp_ptr,ITRI_ID,10); RMMemcpy(tmp_ptr+10,&FileNum,2); RMMemcpy(tmp_ptr+12,&next_lba,4); RMMemcpy(tmp_ptr+16,&Vol_Blocks,4); RMMemcpy(tmp_ptr+20,ptr1,FileNum*sizeof(typeUdfFile)); UDF102_FS_Create(isMultiFlag,tmp_ptr,0); RMMemcpy(udf_ptr+120*2048,tmp_ptr,total_blk*2048); tmp_lba=0; for (i=0;i<10;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } UDF102_File_ICB_Create(tmp_ptr); for (i=0;i<13;i++) { //tmp_lba FVD_Write10(ITRI_context->disc,udf_ptr+61440*i,tmp_lba,30); tmp_lba+=30; } FVD_Write10(ITRI_context->disc,udf_ptr+390*2048,tmp_lba,10); tmp_lba+=10; FVD_SyncCache(ITRI_context->disc,0,0); break; case 4: printf("Recorded DVD+R Disc,Next Recording %d th Track Data,NWA=%ld \n",numofSessions,NextWriteAddr); pattern=(RMuint8 *)malloc(2048*3+5); RMMemset(pattern,0x00,2048*3+5); FVD_ReadTrackInfo(ITRI_context->disc,0x01,numofSessions-1,buf); b3=buf[8];b2=buf[8];b1=buf[10];b0=buf[11]; next_lba=b3*16777216+b2*65536+b1*256+b0; printf("(File Data) Next Writable Address=%ld \n",next_lba); RMFDiscReadSector(ITRI_context->disc,(120+next_lba),3,2048,pattern); RMMemset(itri_id,0x00,12); memcpy(itri_id,pattern,10); if (strcmp((
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -