uint8_t AVDMMP3AudioStream::open(char *name)
{
    //int a, b, c;
	uint8_t buffer[2048],*ptr;
	ptr=buffer;
	
    printf("\n opening stream %s (MP3)",name);
    fd = fopen(name, "rb");
    ADM_assert(fd);
    fread(buffer,2048,1,fd);
     _wavheader = new WAVHeader();
    

    if(! mpegAudioIdentify(ptr, 2048,_wavheader,_mpegSync) )
    {
		delete _wavheader;
		_wavheader=NULL;
		fclose(fd);
		return 0;		
	}
    fseek(fd, 0, SEEK_END);
    _length = ftell(fd);
    //
    //
      _codec=getAudioCodec(_wavheader->encoding);
     ADM_assert(_codec);
     _wavheader->blockalign=1;
    return 1;
}
/**
    \fn create
    \brief actually create the track, can fail
*/
bool ADM_edAudioTrackExternal::create(uint32_t extraLen, uint8_t *extraData)
{
    ADM_info("Initializing audio track from external %s \n",sourceFile.c_str());
    codec=getAudioCodec(wavHeader.encoding,&wavHeader,extraLen,extraData);;
    size=internalAccess->getLength();
    internalAudioStream=ADM_audioCreateStream(&wavHeader,internalAccess,true);
    return true;
}
uint8_t AVDMAC3AudioStream::open(char *name)
{
uint8_t syncbuff[10*1024];
uint32_t fq,br,l,chan;
uint32_t syncoff;


    fd = fopen(name, "rb");
    if (!fd)
		return 0;
	l=fread(syncbuff,10*1024,1,fd);
 	if(!l)
  		{
        	abort();
         	return 0;
    	}

    // read wavheader
    _wavheader = new WAVHeader;
    ADM_assert(_wavheader);
    if(! 		ADM_AC3GetInfo(syncbuff, 10*1024,&fq, &br,&chan,&syncoff)   )
    		{
            	abort();
             	printf("\n could not sync ac3!\n");
             	return 0;
        	}
    // else fill up wav header
    _wavheader->encoding = WAV_AC3;
    _wavheader->channels = chan;
    _wavheader->frequency = fq;
    _wavheader->bitspersample = 16;	// yes i know
    _wavheader->byterate = br;
    _wavheader->blockalign = 4;
    // now update length field
    //_________________________
    fseek(fd, 0, SEEK_END);
    _length = ftell(fd);
    //
    //

       _codec=getAudioCodec(WAV_AC3,_wavheader);
     ADM_assert(_codec);
    return 1;

}
Beispiel #4
0
/// Returns a std::string describing the tag in detail.
/// The string includes information about whether the tag is
/// audio, video or metadata, what encoding is used, and the details
/// of the encoding itself.
std::string FLV::Tag::tagType() {
  std::stringstream R;
  R << len << " bytes of ";
  switch (data[0]) {
    case 0x09:
      R << getVideoCodec() << " video ";
      switch (data[11] & 0xF0) {
        case 0x10:
          R << "keyframe";
          break;
        case 0x20:
          R << "iframe";
          break;
        case 0x30:
          R << "disposableiframe";
          break;
        case 0x40:
          R << "generatedkeyframe";
          break;
        case 0x50:
          R << "videoinfo";
          break;
      }
      if ((data[11] & 0x0F) == 7) {
        switch (data[12]) {
          case 0:
            R << " header";
            break;
          case 1:
            R << " NALU";
            break;
          case 2:
            R << " endofsequence";
            break;
        }
      }
      break;
    case 0x08:
      R << getAudioCodec();
      switch (data[11] & 0x0C) {
        case 0x0:
          R << " 5.5kHz";
          break;
        case 0x4:
          R << " 11kHz";
          break;
        case 0x8:
          R << " 22kHz";
          break;
        case 0xC:
          R << " 44kHz";
          break;
      }
      switch (data[11] & 0x02) {
        case 0:
          R << " 8bit";
          break;
        case 2:
          R << " 16bit";
          break;
      }
      switch (data[11] & 0x01) {
        case 0:
          R << " mono";
          break;
        case 1:
          R << " stereo";
          break;
      }
      R << " audio";
      if ((data[12] == 0) && ((data[11] & 0xF0) == 0xA0)) {
        R << " initdata";
      }
      break;
    case 0x12: {
        R << "(meta)data: ";
        AMF::Object metadata = AMF::parse((unsigned char *)data + 11, len - 15);
        R << metadata.Print();
        break;
      }
    default:
      R << "unknown";
      break;
  }
  return R.str();
} //FLV::Tag::tagtype