|
|
|
@ -551,7 +551,8 @@ static int ism_flush(AVFormatContext *s, int final) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
write_manifest(s, final); |
|
|
|
|
if (ret >= 0) |
|
|
|
|
ret = write_manifest(s, final); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -561,13 +562,15 @@ static int ism_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
AVStream *st = s->streams[pkt->stream_index]; |
|
|
|
|
OutputStream *os = &c->streams[pkt->stream_index]; |
|
|
|
|
int64_t end_pts = (c->nb_fragments + 1) * c->min_frag_duration; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
if ((!c->has_video || st->codec->codec_type == AVMEDIA_TYPE_VIDEO) && |
|
|
|
|
av_compare_ts(pkt->pts, st->time_base, |
|
|
|
|
end_pts, AV_TIME_BASE_Q) >= 0 && |
|
|
|
|
pkt->flags & AV_PKT_FLAG_KEY && os->packets_written) { |
|
|
|
|
|
|
|
|
|
ism_flush(s, 0); |
|
|
|
|
if ((ret = ism_flush(s, 0)) < 0) |
|
|
|
|
return ret; |
|
|
|
|
c->nb_fragments++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|