return ret;
}
- if ((ret = init_pts(s) < 0))
+ if ((ret = init_pts(s)) < 0)
return ret;
return 0;
next_point = &s->packet_buffer;
}
- if (*next_point) {
- if (chunked) {
- uint64_t max= av_rescale_q(s->max_chunk_duration, AV_TIME_BASE_Q, st->time_base);
- if ( st->interleaver_chunk_size + pkt->size <= s->max_chunk_size-1U
- && st->interleaver_chunk_duration + pkt->duration <= max-1U) {
- st->interleaver_chunk_size += pkt->size;
- st->interleaver_chunk_duration += pkt->duration;
- goto next_non_null;
- } else {
- st->interleaver_chunk_size =
- st->interleaver_chunk_duration = 0;
- this_pktl->pkt.flags |= CHUNK_START;
- }
+ if (chunked) {
+ uint64_t max= av_rescale_q_rnd(s->max_chunk_duration, AV_TIME_BASE_Q, st->time_base, AV_ROUND_UP);
+ if ( st->interleaver_chunk_size + pkt->size <= s->max_chunk_size-1U
+ && st->interleaver_chunk_duration + pkt->duration <= max-1U) {
+ st->interleaver_chunk_size += pkt->size;
+ st->interleaver_chunk_duration += pkt->duration;
+ } else {
+ st->interleaver_chunk_size =
+ st->interleaver_chunk_duration = 0;
+ this_pktl->pkt.flags |= CHUNK_START;
}
+ }
+ if (*next_point) {
+ if (chunked && !(this_pktl->pkt.flags & CHUNK_START))
+ goto next_non_null;
if (compare(s, &s->packet_buffer_end->pkt, pkt)) {
while ( *next_point