[FFmpeg-trac] #6533(avformat:reopened): Invalid EXT-X-TARGETDURATION in HLS
FFmpeg
trac at avcodec.org
Thu Aug 10 12:45:32 EEST 2017
#6533: Invalid EXT-X-TARGETDURATION in HLS
-------------------------------------+------------------------------------
Reporter: tonn81 | Owner:
Type: defect | Status: reopened
Priority: normal | Component: avformat
Version: unspecified | Resolution:
Keywords: hls | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+------------------------------------
Comment (by stevenliu):
Replying to [comment:12 tonn81]:
> OK, let me be more specific.
>
> Specification says this rule must be followed:
>
> `all {round(chunk_duration) <= EXT_X_TARGETDURATION}`
>
> In current implementation, we have:
>
> `EXT_X_TARGETDURATION = ceil(max{chunk_duration})`
>
> It gives result that matches the specification (part about `less`)
but not precise.
>
> I suggest to have:
>
> `EXT_X_TARGETDURATION = round(max{chunk_duration})`
>
> It gives result that matches the specification (part about `equal`)
and precise.
>
> Also, that aligns with the value that user provided as input to
ffmpeg (`-hls_time`) and allows to ignore small difference that HLS
segmenter generates (e.g. `4.02` instead of `4.0`).
>
> Current implementation:
>
> {{{
> for (en = hls->segments; en; en = en->next) {
> if (target_duration <= en->duration)
> # that would actually ceil
> target_duration = get_int_from_double(en->duration);
> }
> }}}
That is not ceil:
static int get_int_from_double(double val)
{
return (int)((val - (int)val) >= 0.001) ? (int)(val + 1) : (int)val;
}
or can you reproduce the bug of the EXT_X_TARGETDURATION *LESS* than
en->duration ?
>
> Suggested implementation (pseudo-code):
>
> {{{
> for (en = hls->segments; en; en = en->next) {
> if (target_duration < en->duration)
> # if chunk duration is bigger than target duration -- round
it and use it,
> # it could be also the same value as target_duration if
rounded to lower value
> target_duration = (int)round(en->duration);
> }
> }}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6533#comment:13>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list