int segment_idx_wrap; ///< number after which the index wraps
int segment_idx_wrap_nb; ///< number of time the index has wraped
int segment_count; ///< number of segment files already written
- AVOutputFormat *oformat;
+ ff_const59 AVOutputFormat *oformat;
AVFormatContext *avf;
char *format; ///< format to use for output segment files
char *format_options_str; ///< format options to use for output segment files
if (!seg->avf || !seg->avf->pb)
return AVERROR(EINVAL);
+ if (!st->codecpar->extradata_size) {
+ int pkt_extradata_size = 0;
+ uint8_t *pkt_extradata = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &pkt_extradata_size);
+ if (pkt_extradata && pkt_extradata_size > 0) {
+ ret = ff_alloc_extradata(st->codecpar, pkt_extradata_size);
+ if (ret < 0) {
+ av_log(s, AV_LOG_WARNING, "Unable to add extradata to stream. Output segments may be invalid.\n");
+ goto calc_times;
+ }
+ memcpy(st->codecpar->extradata, pkt_extradata, pkt_extradata_size);
+ st->codecpar->extradata_size = pkt_extradata_size;
+ }
+ }
+
calc_times:
if (seg->times) {
end_pts = seg->segment_count < seg->nb_times ?
{ "segment_clocktime_offset", "set segment clocktime offset", OFFSET(clocktime_offset), AV_OPT_TYPE_DURATION, {.i64 = 0}, 0, 86400000000LL, E},
{ "segment_clocktime_wrap_duration", "set segment clocktime wrapping duration", OFFSET(clocktime_wrap_duration), AV_OPT_TYPE_DURATION, {.i64 = INT64_MAX}, 0, INT64_MAX, E},
{ "segment_time", "set segment duration", OFFSET(time_str),AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E },
- { "segment_time_delta","set approximation value used for the segment times", OFFSET(time_delta), AV_OPT_TYPE_DURATION, {.i64 = 0}, 0, 0, E },
+ { "segment_time_delta","set approximation value used for the segment times", OFFSET(time_delta), AV_OPT_TYPE_DURATION, {.i64 = 0}, 0, INT64_MAX, E },
{ "segment_times", "set segment split time points", OFFSET(times_str),AV_OPT_TYPE_STRING,{.str = NULL}, 0, 0, E },
{ "segment_frames", "set segment split frame numbers", OFFSET(frames_str),AV_OPT_TYPE_STRING,{.str = NULL}, 0, 0, E },
{ "segment_wrap", "set number after which the index wraps", OFFSET(segment_idx_wrap), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E },