32 #include "id3/io_decorators.h"
33 #include "io_helpers.h"
34 #include "io_strings.h"
36 #if defined HAVE_SYS_PARAM_H
37 #include <sys/param.h>
73 if (frame) frame->Render(writer);
83 ID3D_WARNING(
"id3::v2::render(): no frames to render" );
87 ID3D_NOTICE(
"id3::v2::render(): rendering" );
98 io::StringWriter frmWriter(frms);
101 ID3D_NOTICE(
"id3::v2::render(): rendering frames" );
102 renderFrames(frmWriter, tag);
107 ID3D_NOTICE(
"id3::v2::render(): rendering unsynced frames" );
108 io::UnsyncedWriter uw(frmWriter);
109 renderFrames(uw, tag);
111 ID3D_NOTICE(
"id3::v2::render(): numsyncs = " << uw.getNumSyncs() );
114 size_t frmSize = frms.size();
117 ID3D_WARNING(
"id3::v2::render(): rendered frame size is 0 bytes" );
123 ID3D_NOTICE(
"id3::v2::render(): padding size = " << nPadding );
131 for (
size_t i = 0; i < nPadding; ++i)
142 if (this->NumFrames() == 0)
149 size_t bytesUsed = hdr.
Size();
151 size_t frameBytes = 0;
152 for (
const_iterator cur = _frames.begin(); cur != _frames.end(); ++cur)
156 (*cur)->SetSpec(this->GetSpec());
157 frameBytes += (*cur)->Size();
166 bytesUsed += frameBytes;
168 if (this->GetUnsync())
170 bytesUsed += bytesUsed / 3;
173 bytesUsed += this->PaddingSize(bytesUsed);
188 #define ID3_PADMULTIPLE (2048)
189 #define ID3_PADMAX (4096)
222 newSize = tempSize -
ID3_GetDataSize(*
this) - this->GetAppendedBytes () -
226 return newSize - curSize;