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

Paul B Mahol onemda at gmail.com
Sat Aug 17 23:13:33 CEST 2013


On 8/17/13, James Almer <jamrial at gmail.com> wrote:
> On 17/08/13 4:23 PM, Paul B Mahol wrote:
>> On 8/17/13, James Almer <jamrial at gmail.com> wrote:
>>> On 17/08/13 3:30 PM, Paul B Mahol wrote:
>>>> On 8/17/13, James Almer <jamrial at gmail.com> wrote:
>>>>> 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 do not mean anything. But isn't time scale & duration different for
>>>> each track?
>>>
>>> I guess so, but what difference does that make?
>>
>> audio is in track and each track can have different duration?
>> Thus global one can be for anything else.
>
> I tried two muxers (ffmpeg and mkvtoolnix) and neither of them stored a
> value for
> track->time_scale.
> Our muxer also didn't store a value for track->default_duration. The other
> muxer
> did, but i can't make sense of the value after a quick look.
>
> I'm not sure how to use those, or if they can be used. But until we find how
> we
> should commit this patch which will at least improve support for audio only
> files.

Yes, I agree.


More information about the ffmpeg-devel mailing list