[FFmpeg-devel] [PATCH] matroskadec: Improve TTA duration calculation

James Almer jamrial at gmail.com
Sat Aug 17 19:28:24 CEST 2013


On 17/08/13 6:48 AM, Paul B Mahol wrote:
> On 8/16/13, James Almer <jamrial at gmail.com> wrote:
>> On 16/08/13 5:21 PM, Paul B Mahol wrote:
>>> On 8/16/13, James Almer <jamrial at gmail.com> wrote:
>>>> On 16/08/13 7:24 AM, Paul B Mahol wrote:
>>>>> On 8/15/13, James Almer <jamrial at gmail.com> wrote:
>>>>>> -            avio_wl32(&b, matroska->ctx->duration *
>>>>>> track->audio.out_samplerate);
>>>>>> +            avio_wl32(&b, av_rescale(matroska->ctx->duration,
>>>>>> track->audio.out_samplerate, AV_TIME_BASE));
>>>>>
>>>>> Isn't time base variable thing that can be changed by muxer?
>>>>>
>>>>> Perhaps this could be used when muxing tta files to make sure
>>>>> last packet can always decode.
>>>>
>>>> Our muxer already uses 1000000 (aka AV_TIME_BASE) as timescale for every
>>>> file.
>>>
>>> But this patch does not use time base as used in file, but hardcode it,
>>
>> It's using matroska->ctx->duration, which is calculated using the duration
>> and the timescale of the stream as stored in the file (line 1546).
> 
> But could it use track duration which is set in track time base units?

So you mean doing "av_rescale((matroska->duration * matroska->time_scale), 
track->audio.out_samplerate, AV_TIME_BASE * 1000)"?
I guess that might be a tad more accurate depending on the file.

I'll send a new patch in a moment.


More information about the ffmpeg-devel mailing list