Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}