예제 #1
0
void quicktime_atom_write_footer(quicktime_t *file, quicktime_atom_t *atom)
{
	atom->end = quicktime_position(file);
	if(file->use_avi)
	{
		quicktime_set_position(file, atom->start - 4);
		quicktime_write_int32_le(file, atom->end - atom->start);
		atom->size = atom->end - atom->start;
	}
	else
	{
		// We should calculate atom->size here also...  it is used in trak.c FIXME
		// I don't know internals of the quicktime to know what is proper calculation - with or wirhout header?
		if(atom->use_64)
		{
			quicktime_set_position(file, atom->start + 8);
//printf("quicktime_atom_write_footer %llx %llx %llx %llx\n", file->total_length, file->file_position, atom->start, atom->end);
			quicktime_write_int64(file, atom->end - atom->start);
		}
		else
		{
			quicktime_set_position(file, atom->start);
			quicktime_write_int32(file, atom->end - atom->start);
		}
	}
	quicktime_set_position(file, atom->end);
}
예제 #2
0
파일: nump.c 프로젝트: HunterChen/mpeg4ip
int quicktime_write_nump(quicktime_t *file, quicktime_nump_t *nump)
{
	quicktime_atom_t atom;

	quicktime_atom_write_header(file, &atom, "nump");

	quicktime_write_int64(file, nump->numPackets);
	
	quicktime_atom_write_footer(file, &atom);
}
예제 #3
0
파일: dimm.c 프로젝트: cmjonze/faad
int quicktime_write_dimm(quicktime_t *file, quicktime_dimm_t *dimm)
{
	quicktime_atom_t atom;

	quicktime_atom_write_header(file, &atom, "dimm");

	quicktime_write_int64(file, dimm->numBytes);
	
	quicktime_atom_write_footer(file, &atom);
}
예제 #4
0
int quicktime_atom_write_header64(quicktime_t *file, quicktime_atom_t *atom, char *text)
{
	int result = 0;
	atom->start = quicktime_position(file);

	result = !quicktime_write_int32(file, 1);
	if(!result) result = !quicktime_write_char32(file, text);
	if(!result) result = !quicktime_write_int64(file, 0);

	atom->use_64 = 1;
	return result;
}