read

int Id3v2Tag::Readxxxxxx()
{
 FILE *fp=NULL;
 fp= fopen(m_pFileName,"rb");
// fseek(fp,-128,SEEK_END);
 fread(&m_stHeader,sizeof(HEADER),1,fp);
 if( (m_stHeader.Header[0] == 'I'||m_stHeader.Header[0] == 'i' )
  &&(m_stHeader.Header[1] == 'D'||m_stHeader.Header[1] == 'd' )
  &&(m_stHeader.Header[2] == '3'))
 {
  m_headerSize = CalcHeadSize(m_stHeader.Size);
 }
 else
 {
  return -1;
 }
 FRAME header;
 FRAME *pheader = &header;
 int i=0,j =0;
 do{
  memset(pheader,0,sizeof(FRAME));
  fread((char *)pheader,sizeof(FRAME),1,fp);
//  pheader = (ID3V2Header *)(pId3Info+i);
  int FSize = 0;
  int frameId = IsId3v2Frame(pheader->FrameID);
  if(frameId)
  {
   FRAMELIST *frameNode = (FRAMELIST *)malloc(sizeof(FRAMELIST));
   if(frameNode == NULL)
   {
    return -1;
   }
   memset(frameNode,0,sizeof(FRAMELIST));
   memcpy(&frameNode->frame,pheader,sizeof(FRAME));
   FSize = pheader->Size[0]*0x100000000+pheader->Size[1]*0x10000+pheader->Size[2]*0x100+pheader->Size[3];
   frameNode->frameSize = FSize ;
   frameNode->frameID = frameId;
   //FSize = (pheader->Size[0]&0x7F)*0x200000 + (pheader->Size[1]&0x7F)*0x400 + (pheader->Size[2]&0x7F)*0x80 +(pheader->Size[3]&0x7F);
   char *tmp = (char *)malloc(FSize+1);
   if(tmp == NULL)
   {
    return -1;
   }
   memset(tmp,0,FSize+1);
   int len=FSize;
   int sumlen = 0;
   int ret = 0,ret2=0;
   ret=FSize/300;
   if(ret != 0)
   ret=fread(tmp+sumlen,300,ret,fp);
   ret2=FSize%300;
   int res = ftell(fp);
   if(ret2 != 0)
   ret=fread(tmp+ret*300,ret2,1,fp);
   
   frameNode->content = tmp;

   if(m_pFrameList == NULL)
   {
    m_pFrameList = frameNode;
    m_pTemp = m_pFrameList;
   }
   else
   {
    m_pTemp->pNext = frameNode;
    m_pTemp = m_pTemp->pNext;
   }
  }
  i+=(FSize+sizeof(ID3V2Header));
 }while(i<m_headerSize); 
 fclose(fp);
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值