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; }
/// 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