> 在 2017年12月23日,下午6:38,Jeyapal, Karthick <kjeya...@akamai.com> 写道:
> 
> 
>> On 12/23/17 4:59 AM, Steven Liu wrote:
>> just use lrint(lrint(duration * 10.0) / 10.0)
>> fix ticket: 6915
>> 
>> Suggested-by: beloko
>> Signed-off-by: Steven Liu <l...@chinaffmpeg.org>
>> ---
>> libavformat/dashenc.c | 2 +-
>> libavformat/hlsenc.c  | 2 +-
>> 2 files changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
>> index 5368a2334c..102558d17e 100644
>> --- a/libavformat/dashenc.c
>> +++ b/libavformat/dashenc.c
>> @@ -358,7 +358,7 @@ static void output_segment_list(OutputStream *os, 
>> AVIOContext *out, DASHContext
>>             Segment *seg = os->segments[i];
>>             double duration = (double) seg->duration / timescale;
>>             if (target_duration <= duration)
>> -                target_duration = lrint(duration);
>> +                target_duration = lrint(lrint(duration * 10.0) / 10.0);
> This will just move the move the corner case from x.5 to x.45(x.46 depending 
> on the double precision errors). Will not solve the original issue.
> For example, right now 1.5 is a corner case, as lrint(1.5) = 2, and 
> lrint(1.49) = 1.
> After this patch, 1.46 will become the corner case. For example 
> lrint(lrint(1.45 * 10.0) / 10.0) = 1 and lrint(lrint(1.46 * 10.0) / 10.0) = 2
> When someone chooses a segment duration of 1.46, this issue will again 
> resurface.
maybe you are right, and I use mediastreamvalidator check again, I focus the 
error, when the media_0.m3u8 media_1.m3u8 EXT-X-TARGETDURATION different, it no 
error of the two playlist, I think Roger response is right, maybe our focus is 
not right. Look at your lrint patch, the test error context is not target 
duration different error, and I have test use the code before your patch , no 
target duration error of two playlist. Just fragment duration error to target 
duration, look it again.
> 
> Thanks and regards,
> Karthick
>>         }
>> 
>>         ff_hls_write_playlist_header(out_hls, 6, -1, target_duration,
>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> index 0095ca4339..bf6f1d9253 100644
>> --- a/libavformat/hlsenc.c
>> +++ b/libavformat/hlsenc.c
>> @@ -1235,7 +1235,7 @@ static int hls_window(AVFormatContext *s, int last, 
>> VariantStream *vs)
>> 
>>     for (en = vs->segments; en; en = en->next) {
>>         if (target_duration <= en->duration)
>> -            target_duration = lrint(en->duration);
>> +            target_duration = lrint(lrint(en->duration * 10.0) / 10.0);
>>     }
>> 
>>     vs->discontinuity_set = 0;
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel



_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to