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

📄 fsound.cpp

📁 这是一个用VC++开发的flashsource端的程序
💻 CPP
字号:
#include <strstream>#include "FSound.h"std::ostream& operator<<(std::ostream& out, const FlashTagDefineSound &data){	out << FlashTagHeader(14,2+1+4+data.len);	WRITE_UWORD(data.GetID());	out.put(data.flags);	WRITE_UDWORD(data.samplecount);	for(UDWORD i=0; i < data.len; i++)	{		out.put((char)data.samples[i]);	}	return out;}std::istream& operator>>(std::istream& in, FlashTagDefineSound &data){	UWORD id;	READ_UWORD(id);	data.SetID(id);	int flags = in.get();	//if(flags == EOF) throw;	data.flags = flags;	READ_UDWORD(data.samplecount);		data.len = data.importsize - (2+1+4);		data.samples = (char *)malloc(data.len);	data.samplevec.push_back(data.samples);	in.read(data.samples,data.len);	return in;}std::ostream& operator<<(std::ostream& out, const FlashTagDefineSoundMP3 &data){	out << FlashTagHeader(14,2+1+4+data.len+2);	WRITE_UWORD(data.GetID());	out.put(data.flags);	WRITE_UDWORD(data.samplecount);	WRITE_UWORD(data.delayseek);	for(UDWORD i=0; i < data.len; i++)	{		out.put((char)data.samples[i]);	}	return out;}std::istream& operator>>(std::istream& in, FlashTagDefineSoundMP3 &data){	UWORD id;	READ_UWORD(id);	data.SetID(id);	int flags = in.get();	//if(flags == EOF) throw;	data.flags = flags;	READ_UDWORD(data.samplecount);	READ_UWORD(data.delayseek);	data.len = data.importsize - (2+1+6);		data.samples = (char *)malloc(data.len);	data.samplevec.push_back(data.samples);	in.read(data.samples,data.len);	return in;}std::ostream& operator<<(std::ostream& out, FlashSoundEnvelope &data){	WRITE_UDWORD(data.mark44);	WRITE_UWORD(data.level0);	WRITE_UWORD(data.level1);	return out;}std::istream& operator>>(std::istream& in, FlashSoundEnvelope &data){	READ_UDWORD(data.mark44);	READ_UWORD(data.level0);	READ_UWORD(data.level1);	return in;}std::ostream& operator<<(std::ostream& out, FlashSoundInfo &data){	out.put(data.flags);	if(data.flags & 0x1) WRITE_UDWORD(data.inPoint);	if(data.flags & 0x2) WRITE_UDWORD(data.outPoint);	if(data.flags & 0x4) WRITE_UWORD(data.loopCount);	if(data.flags & 0x8) 	{		out.put((char)data.v_snd_env.size());		for(std::vector<FlashSoundEnvelope>::iterator i=data.v_snd_env.begin();		i != data.v_snd_env.end(); i++)		{			out << *i;		}	}	return out;}std::istream& operator>>(std::istream& in, FlashSoundInfo &data){	int flags = in.get();	//if(flags == EOF) throw;	data.flags = flags;	if(data.flags & 0x1) READ_UDWORD(data.inPoint);	if(data.flags & 0x2) READ_UDWORD(data.outPoint);	if(data.flags & 0x4) READ_UWORD(data.loopCount);	if(data.flags & 0x8) 	{		int size = in.get();		//if(size != EOF) throw;				for(int i = 0; i < size; i++)		{			FlashSoundEnvelope fse(0,0,0);			in >> fse;		}	}	return in;}std::ostream& operator<<(std::ostream& out, FlashTagStartSound &data){	std::ostrstream tmp;	WRITE_UWORD2(data.id,tmp);	tmp << data.si;	out << FlashTagHeader(15,tmp.pcount());	out.write(tmp.rdbuf()->str(), tmp.pcount());	return out;}std::istream& operator>>(std::istream& in, FlashTagStartSound &data){	READ_UWORD(data.id);	in >> data.si;	return in;}std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamHead &data){	out << FlashTagHeader(18,4);	out.put((char)((int)(data.mplay_rate << 2) | ((int)data.mplay_16bit << 1) | ((int)data.mplay_stereo)));	out.put((char)(((int)data.mcompression << 4) | (int)(data.mstream_rate << 2) | ((int)data.mstream_16bit << 1) | ((int)data.mstream_stereo)));	WRITE_UWORD(data.msamplecountavg);	return out;}std::istream& operator>>(std::istream& in, FlashTagSoundStreamHead &data){	int flags = in.get();	//if(flags == EOF) throw;		data.mplay_rate = (GetIsolatedBits((unsigned char)flags, 2, 4));	data.mplay_16bit = (GetIsolatedBits((unsigned char)flags, 1, 2) == 1);	data.mplay_stereo = (GetIsolatedBits((unsigned char)flags, 0, 1) == 1);		flags = in.get();	//if(flags == EOF) throw;	data.mcompression = (GetIsolatedBits((unsigned char)flags, 4, 6));	data.mstream_rate = (GetIsolatedBits((unsigned char)flags, 2, 4));	data.mstream_16bit = (GetIsolatedBits((unsigned char)flags, 1, 2) == 1);	data.mstream_stereo = (GetIsolatedBits((unsigned char)flags, 0, 1) == 1);	READ_UWORD(data.msamplecountavg);	return in;}std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamHead2 &data){	out << FlashTagHeader(45,4);	out.put((char)(((int)data.mplay_rate << 2) | ((int)data.mplay_16bit << 1) | ((int)data.mplay_stereo)));	out.put((char)(((int)data.mcompression << 4) | ((int)data.mstream_rate << 2) | ((int)data.mstream_16bit << 1) | ((int)data.mstream_stereo)));	WRITE_UWORD(data.msamplecountavg);	return out;}std::istream& operator>>(std::istream& in, FlashTagSoundStreamHead2 &data){	int flags = in.get();	//if(flags == EOF) throw;	data.mplay_rate = (GetIsolatedBits((unsigned char)flags, 2, 4));	data.mplay_16bit = (GetIsolatedBits((unsigned char)flags, 1, 2) == 1);	data.mplay_stereo = (GetIsolatedBits((unsigned char)flags, 0, 1) == 1);		flags = in.get();	//if(flags == EOF) throw;	data.mcompression = (GetIsolatedBits((unsigned char)flags, 4, 6));	data.mstream_rate = (GetIsolatedBits((unsigned char)flags, 2, 4));	data.mstream_16bit = (GetIsolatedBits((unsigned char)flags, 1, 2) == 1);	data.mstream_stereo = (GetIsolatedBits((unsigned char)flags, 0, 1) == 1);	READ_UWORD(data.msamplecountavg);	return in;}std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamBlock &data){	out << FlashTagHeader(19,data.len);	for(UDWORD i = 0; i < data.len; i++)	{		out.put(data.data[i]);	}	return out;}std::istream& operator>>(std::istream& in, FlashTagSoundStreamBlock &data){	data.data = (char *)malloc(data.importsize);	data.len = data.importsize;	in.read(data.data, data.importsize);	data.gc.push_back(data.data);	return in;}std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamBlockMP3 &data){	out << FlashTagHeader(19,data.len+4);	WRITE_UWORD(data.samplecount);	WRITE_UWORD(data.delay_seek);	for(UDWORD i = 0; i < data.len; i++)	{		out.put(data.data[i]);	}	return out;	}std::istream& operator>>(std::istream& in, FlashTagSoundStreamBlockMP3 &data){	READ_UWORD(data.samplecount);	READ_UWORD(data.delay_seek);	data.data = (char *)malloc(data.importsize-4);	data.len = data.importsize-4;	in.read(data.data, data.importsize-4);	data.gc.push_back(data.data);	return in;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -