示例#1
0
int asf_check_header(demuxer_t *demuxer){
  unsigned char asfhdrguid[16]={0x30,0x26,0xB2,0x75,0x8E,0x66,0xCF,0x11,0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C};
  struct asf_priv* asf = calloc(1,sizeof(*asf));
  asf->scrambling_h=asf->scrambling_w=asf->scrambling_b=1;
  stream_read(demuxer->stream,(char*) &asf->header,sizeof(asf->header)); // header obj
  le2me_ASF_header_t(&asf->header);			// swap to machine endian
//  for(i=0;i<16;i++) printf(" %02X",temp[i]);printf("\n");
//  for(i=0;i<16;i++) printf(" %02X",asfhdrguid[i]);printf("\n");
  if(memcmp(asfhdrguid,asf->header.objh.guid,16)){
    mp_msg(MSGT_HEADER,MSGL_V,"ASF_check: not ASF guid!\n");
    free(asf);
    return 0; // not ASF guid
  }
  if(asf->header.cno>256){
    mp_msg(MSGT_HEADER,MSGL_V,"ASF_check: invalid subchunks_no %d\n",(int) asf->header.cno);
    free(asf);
    return 0; // invalid header???
  }
  demuxer->priv = asf;
  return DEMUXER_TYPE_ASF;
}
示例#2
0
int
asf_check_header(struct statex *statex, FILE *fp)
{
	unsigned char	asfhdrguid[16]={0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11,
					0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C};

	fread((char*) &asfh, sizeof(asfh), 1, fp);
	le2me_ASF_header_t(&asfh);

	if (memcmp(asfhdrguid, asfh.objh.guid, 16))
	{
		fprintf(stderr, "%s: %s is not a wma file\n",
			progopts.progname, statex->path);
		return 0;
	}

	if (asfh.cno > 256)
	{
		fprintf(stdout, "ASF_check: invalid subchunks_no %d\n", (int) asfh.cno);
		return 0;
	}
	return 1;
}