stts = 16 + (8*stts_count)
stsc = 28
stsz = 20 + (4*frame)
- stco = 16 + (4*frame)
+ stco = 16 + (4*stco_count)
- AAC
stsd = 94 (16, mp4a : 78(36 ,esds : 42))
guint nb_video_frames = 0;
guint nb_video_i_frames = 0;
guint nb_video_stts_entry = 0;
+ guint nb_video_stco_entry = 0;
guint nb_audio_frames = 0;
guint nb_audio_stts_entry = 0;
+ guint nb_audio_stco_entry = 0;
gboolean video_stream = FALSE;
gboolean audio_stream = FALSE;
guint exp_size = 0;
qtmux_klass = (GstQTMuxClass *)(G_OBJECT_GET_CLASS(qtmux));
if (!strncmp(GST_PAD_NAME(pad), "video", 5)) {
- nb_video_frames += pad->trak->mdia.minf.stbl.stsz.table_size;
- nb_video_i_frames += pad->trak->mdia.minf.stbl.stss.entries.len;
- nb_video_stts_entry += pad->trak->mdia.minf.stbl.stts.entries.len;
+ nb_video_frames = pad->trak->mdia.minf.stbl.stsz.table_size;
+ nb_video_i_frames = pad->trak->mdia.minf.stbl.stss.entries.len;
+ nb_video_stts_entry = pad->trak->mdia.minf.stbl.stts.entries.len;
+ nb_video_stco_entry = pad->trak->mdia.minf.stbl.stco64.entries.len;
video_stream = TRUE;
} else if (!strncmp(GST_PAD_NAME(pad), "audio", 5)) {
- nb_audio_frames += pad->trak->mdia.minf.stbl.stsz.table_size;
- nb_audio_stts_entry += pad->trak->mdia.minf.stbl.stts.entries.len;
+ nb_audio_frames = pad->trak->mdia.minf.stbl.stsz.table_size;
+ nb_audio_stts_entry = pad->trak->mdia.minf.stbl.stts.entries.len;
+ nb_audio_stco_entry = pad->trak->mdia.minf.stbl.stco64.entries.len;
audio_stream = TRUE;
}
/* frame related */
exp_size += ENTRY_SIZE_VIDEO_ST + (ENTRY_SIZE_VIDEO_STTS * nb_video_stts_entry) +
(ENTRY_SIZE_VIDEO_STSS * nb_video_i_frames) + (ENTRY_SIZE_STSC) +
- ((ENTRY_SIZE_VIDEO_STSZ + ENTRY_SIZE_VIDEO_STCO) * nb_video_frames);
+ (ENTRY_SIZE_VIDEO_STSZ * nb_video_frames) + (ENTRY_SIZE_VIDEO_STCO * nb_video_stco_entry);
qtmux->video_expected_trailer_size = exp_size;
}
/* Calculate trailer size for audio stream */
if (audio_stream) {
exp_size += MUX_COMMON_SIZE_AUDIO_HEADER + ENTRY_SIZE_AUDIO_ST + (ENTRY_SIZE_AUDIO_STTS * nb_audio_stts_entry) +
- (ENTRY_SIZE_STSC) + ((ENTRY_SIZE_AUDIO_STSZ + ENTRY_SIZE_AUDIO_STCO) * nb_audio_frames);
+ (ENTRY_SIZE_STSC) + (ENTRY_SIZE_AUDIO_STSZ * nb_audio_frames) + (ENTRY_SIZE_AUDIO_STCO * nb_audio_stco_entry);
if (pad->fourcc == FOURCC_samr)
exp_size += ENTRY_SIZE_AUDIO_AMR_STSD;