bool TRIFFWriter::WriteavihChunk() { #ifdef DEBUG printf("Writing 'avif' chunk...\n"); #endif // Write out 'avih' chunkID WriteIntMsb(m_File, kRiff_avih_Chunk, sizeof(uint32)); // Write out size of avih data uint32 size = sizeof(AVIHeader); WriteIntLsb(m_File, size, sizeof(uint32)); // Write out the header bool retVal = WriteAVIHeader(); return retVal; }
static bool WriteFileHeaders (FILE *f_) { if (fseek(f_, 0, SEEK_SET) != 0) return false; lRiffPos = WriteChunkStart(f_, "RIFF", "AVI "); long lHdrlPos = WriteChunkStart(f_, "LIST", "hdrl"); WriteAVIHeader(f_); long lPos = WriteChunkStart(f_, "LIST", "strl"); WriteVideoHeader(f_); WriteChunkEnd(f_, lPos); if (nAudioReduce < 4) { lPos = WriteChunkStart(f_, "LIST", "strl"); WriteAudioHeader(f_); WriteChunkEnd(f_, lPos); } lPos = WriteChunkStart(f_, "JUNK"); // Align movi data to 2048-byte boundary if (fseek(f_, (-ftell(f)-3*sizeof(DWORD)) & 0x3ff, SEEK_CUR) != 0) return false; WriteChunkEnd(f_, lPos); WriteChunkEnd(f_, lHdrlPos); // Start of movie data lMoviPos = WriteChunkStart(f_, "LIST", "movi"); // Check last write succeeded return lMoviPos != 0; }