Esempio n. 1
0
size_t mov_write_avcc(const struct mov_t* mov)
{
	const struct mov_track_t* track = mov->track;
	const struct mov_sample_entry_t* entry = track->stsd.current;
	mov_buffer_w32(&mov->io, entry->extra_data_size + 8); /* size */
	mov_buffer_write(&mov->io, "avcC", 4);
	if (entry->extra_data_size > 0)
		mov_buffer_write(&mov->io, entry->extra_data, entry->extra_data_size);
	return entry->extra_data_size + 8;
}
Esempio n. 2
0
size_t mov_write_ctts(const struct mov_t* mov, uint32_t count)
{
	size_t size, i;
	const struct mov_sample_t* sample;
	const struct mov_track_t* track = mov->track;

	size = 12/* full box */ + 4/* entry count */ + count * 8/* entry */;

	mov_buffer_w32(&mov->io, size); /* size */
	mov_buffer_write(&mov->io, "ctts", 4);
	mov_buffer_w8(&mov->io, 1); /* version */
	mov_buffer_w24(&mov->io, 0); /* flags */
	mov_buffer_w32(&mov->io, count); /* entry count */

	for (i = 0; i < track->sample_count; i++)
	{
		sample = &track->samples[i];
		if(0 == sample->first_chunk)
			continue;;
		mov_buffer_w32(&mov->io, sample->first_chunk); // count
		mov_buffer_w32(&mov->io, sample->samples_per_chunk); // offset * timescale / 1000
	}

	return size;
}
Esempio n. 3
0
size_t mov_write_vmhd(const struct mov_t* mov)
{
	mov_buffer_w32(&mov->io, 20); /* size (always 0x14) */
	mov_buffer_write(&mov->io, "vmhd", 4);
	mov_buffer_w32(&mov->io, 0x01); /* version & flags */
	mov_buffer_w64(&mov->io, 0); /* reserved (graphics mode = copy) */
	return 20;
}
Esempio n. 4
0
size_t mov_write_smhd(const struct mov_t* mov)
{
	mov_buffer_w32(&mov->io, 16); /* size */
	mov_buffer_write(&mov->io, "smhd", 4);
	mov_buffer_w32(&mov->io, 0); /* version & flags */
	mov_buffer_w16(&mov->io, 0); /* reserved (balance, normally = 0) */
	mov_buffer_w16(&mov->io, 0); /* reserved */
	return 16;
}