+ /* guess master index size based on bitrate and duration */
+ if (!avi->reserve_index_space) {
+ double duration_est, filesize_est;
+ if (s->duration > 0)
+ duration_est = (double)s->duration / AV_TIME_BASE;
+ else if (max_stream_duration > 0)
+ duration_est = (double)max_stream_duration / AV_TIME_BASE;
+ else
+ duration_est = 10 * 60 * 60; /* default to 10 hours */
+ filesize_est = duration_est * (bitrate / 8) * 1.10; /* add 10% safety margin for muxer+bitrate */
+ avi->master_index_max_size = FFMAX((int)ceil(filesize_est / AVI_MAX_RIFF_SIZE) + 1,
+ avi->master_index_max_size);
+ av_log(s, AV_LOG_DEBUG, "duration_est:%0.3f, filesize_est:%0.1fGiB, master_index_max_size:%d\n",
+ duration_est, filesize_est / (1024*1024*1024), avi->master_index_max_size);
+ }
+