asf.h.svn-base
来自「这是和p2p相关的一份源码」· SVN-BASE 代码 · 共 164 行
SVN-BASE
164 行
#ifndef _ASF_H#define _ASF_H#include "stream.h"// -----------------------------------class MSID{public: void read(Stream &in) { data1 = in.readLong(); data2 = in.readShort(); data3 = in.readShort(); in.read(data4,8); } void write(Stream &out) { out.writeLong(data1); out.writeShort(data2); out.writeShort(data3); out.write(data4,8); } void toString(String &s) { sprintf(s.data,"%X-%X-%X-%02X%02X%02X%02X%02X%02X%02X%02X", data1,data2,data3, data4[0],data4[1],data4[2],data4[3], data4[4],data4[5],data4[6],data4[7]); } int operator==(const MSID& msid) const{return !memcmp(this, &msid, sizeof(MSID));} unsigned int data1; unsigned short data2,data3; unsigned char data4[8];};// -----------------------------------const MSID headObjID= {0x75B22630, 0x668E, 0x11CF, 0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C};const MSID dataObjID= {0x75B22636, 0x668E, 0x11CF, 0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C};const MSID filePropObjID= {0x8CABDCA1, 0xA947, 0x11CF, 0x8E,0xE4,0x00,0xC0,0x0C,0x20,0x53,0x65};const MSID streamPropObjID= {0xB7DC0791, 0xA9B7, 0x11CF, 0x8E,0xE6,0x00,0xC0,0x0C,0x20,0x53,0x65};// -----------------------------------class ASFObject{public: enum TYPE { T_UNKNOWN, T_HEAD_OBJECT, T_DATA_OBJECT, T_FILE_PROP, T_STREAM_PROP }; int getTotalLen() { return 24+dataLen; } unsigned int readHead(Stream &in) { id.read(in); lenLo = in.readLong(); lenHi = in.readLong(); type = T_UNKNOWN; if (id == headObjID) type = T_HEAD_OBJECT; else if (id == dataObjID) type = T_DATA_OBJECT; else if (id == filePropObjID) type = T_FILE_PROP; else if (id == streamPropObjID) type = T_STREAM_PROP; String str; id.toString(str); LOG("ASF: %s (%s)= %d : %d\n",str.data,getTypeName(),lenLo,lenHi); dataLen = 0; return lenLo-24; } void readData(Stream &in,int len) { dataLen = len; if ((dataLen > sizeof(data)) || (lenHi)) throw StreamException("ASF object too big"); in.read(data,dataLen); } void write(Stream &out) { id.write(out); out.writeLong(lenLo); out.writeLong(lenHi); if (dataLen) out.write(data,dataLen); } const char *getTypeName() { switch(type) { case T_HEAD_OBJECT: return "ASF_Header_Object"; case T_DATA_OBJECT: return "ASF_Data_Object"; case T_FILE_PROP: return "ASF_File_Properties_Object"; case T_STREAM_PROP: return "ASF_Stream_Properties_Object"; default: return "Unknown_Object"; } } char data[8192]; MSID id; unsigned int lenLo,lenHi,dataLen; TYPE type;};// -----------------------------------class ASFStream{public: ASFStream() { numPackets = 0; packetSize = 0; bitrate = 0; flags = 0; } unsigned int packetSize,bitrate,numPackets,flags;};#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?