⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 burn.cpp~

📁 It is for standalone platform executing DVD Burning function,it supports DVD+R/+RW Disc .
💻 CPP~
📖 第 1 页 / 共 5 页
字号:
		 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 + -