34 #include "io_helpers.h"
42 if (
NULL == _frame_def)
48 _frame_def->bTagDiscard =
false;
49 _frame_def->bFileDiscard =
false;
51 _frame_def->sDescription =
NULL;
54 strcpy(_frame_def->sShortTextID,
id);
55 strcpy(_frame_def->sLongTextID,
"");
59 strcpy(_frame_def->sLongTextID,
id);
60 strcpy(_frame_def->sShortTextID,
"");
62 _dyn_frame_def =
true;
72 _flags.set(TAGALTER, _frame_def->bTagDiscard);
73 _flags.set(FILEALTER, _frame_def->bFileDiscard);
86 _info->frame_bytes_id +
87 _info->frame_bytes_size +
88 _info->frame_bytes_flags;
93 ID3D_NOTICE(
"ID3_FrameHeader::Parse(): getCur() = " << reader.
getCur() );
94 io::ExitTrigger et(reader);
104 String textID = io::readText(reader, _info->frame_bytes_id);
106 ID3D_NOTICE(
"ID3_FrameHeader::Parse: textID = " << textID );
107 ID3D_NOTICE(
"ID3_FrameHeader::Parse: getCur() = " << reader.
getCur() );
112 this->SetUnknownFrame(textID.c_str());
113 ID3D_NOTICE(
"ID3_FrameHeader::Parse: unknown frame id" );
117 this->SetFrameID(fid);
120 uint32 dataSize = io::readBENumber(reader, _info->frame_bytes_size);
121 ID3D_NOTICE(
"ID3_FrameHeader::Parse: dataSize = " << dataSize );
122 ID3D_NOTICE(
"ID3_FrameHeader::Parse: getCur() = " << reader.
getCur() );
123 this->SetDataSize(dataSize);
125 uint32 flags = io::readBENumber(reader, _info->frame_bytes_flags);
128 ID3D_NOTICE(
"ID3_FrameHeader::Parse: flags = " << flags );
129 ID3D_NOTICE(
"ID3_FrameHeader::Parse: getCur() = " << reader.
getCur() );
130 et.setExitPos(reader.
getCur());
139 if (
NULL == _frame_def)
142 ID3D_WARNING(
"ID3_FrameHeader::Render(): _frame_def is NULL!" );
147 if (_info->frame_bytes_id == strlen(_frame_def->sShortTextID))
149 textID = _frame_def->sShortTextID;
153 textID = _frame_def->sLongTextID;
156 ID3D_NOTICE(
"ID3_FrameHeader::Render(): writing " << textID <<
", " << (
int) _info->frame_bytes_size <<
" bytes");
159 io::writeBENumber(writer, _data_size, _info->frame_bytes_size);
160 io::writeBENumber(writer, _flags.get(), _info->frame_bytes_flags);
166 if (_info && _frame_def)
168 if (_info->frame_bytes_id == strlen(_frame_def->sShortTextID))
170 textID = _frame_def->sShortTextID;
174 textID = _frame_def->sLongTextID;
186 if (!hdr._dyn_frame_def)
188 _frame_def = hdr._frame_def;
193 if (
NULL == _frame_def)
197 _frame_def->
eID = hdr._frame_def->
eID;
198 _frame_def->bTagDiscard = hdr._frame_def->
bTagDiscard;
199 _frame_def->bFileDiscard = hdr._frame_def->
bFileDiscard;
200 _frame_def->aeFieldDefs = hdr._frame_def->
aeFieldDefs;
201 strcpy(_frame_def->sShortTextID, hdr._frame_def->
sShortTextID);
202 strcpy(_frame_def->sLongTextID, hdr._frame_def->
sLongTextID);
203 _dyn_frame_def =
true;
212 if (
NULL != _frame_def)
214 eID = _frame_def->eID;
231 _dyn_frame_def =
false;
virtual pos_type getCur()=0
Return the current position in the reader.
virtual pos_type getEnd()
Return the ending position in the reader.
virtual size_type writeChars(const char_type buf[], size_type len)=0
Write up to len characters into buf and advance the internal position accordingly.
ID3_FrameDef * ID3_FindFrameDef(ID3_FrameID id)
ID3_FrameID ID3_FindFrameID(const char *id)
ID3_FrameID
Enumeration of the different types of frames recognized by id3lib.
@ ID3FID_NOFRAME
No known frame.
static const ID3_FieldDef * DEFAULT
const ID3_FieldDef * aeFieldDefs