[FFmpeg-devel] [PATCH 1/3] avformat: add AV_DISPOSITION_FRAME_BASED flag

Marton Balint cus at passwd.hu
Tue Feb 18 22:47:05 CET 2014


On Tue, 18 Feb 2014, Clément Bœsch wrote:

> On Mon, Feb 17, 2014 at 09:49:34PM +0100, wm4 wrote:
>> This is needed to distinguish subtitles with real timestamps, and
>> subtitles which use frame numbers. Formats like MicroDVD can have both,
>> depending on the file header.
>> ---
>>  doc/APIchanges         | 3 +++
>>  libavformat/avformat.h | 7 +++++++
>>  2 files changed, 10 insertions(+)
>>
>> diff --git a/doc/APIchanges b/doc/APIchanges
>> index 047b9bd..32532ca 100644
>> --- a/doc/APIchanges
>> +++ b/doc/APIchanges
>> @@ -15,6 +15,9 @@ libavutil:     2012-10-22
>>
>>  API changes, most recent first:
>>
>> +2014-02-xx - xxxxxxx - lavf 55.33.xxx - avformat.h
>> +  Add AV_DISPOSITION_FRAME_BASED flag to indicate subtitle timestamp type.
>> +
>>  2014-02-xx - xxxxxxx - lavd 55.10.100 - avdevice.h
>>    Add avdevice_list_devices() and avdevice_free_list_devices()
>>
>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>> index c990ad6..9491c82 100644
>> --- a/libavformat/avformat.h
>> +++ b/libavformat/avformat.h
>> @@ -725,6 +725,13 @@ typedef struct AVIndexEntry {
>>  #define AV_DISPOSITION_METADATA     0x40000
>>
>>  /**
>> + * This is a frame-based subtitle format. It does not contain any real
>> + * timestamps, just frame numbers. Returned AVPackets will have the pts field
>> + * set to the frame number, and the stream time_base is a made-up fallback.
>> + */
>> +#define AV_DISPOSITION_FRAME_BASED  0x80000
>> +
>> +/**
>>   * Options for behavior on timestamp wrap detection.
>>   */
>>  #define AV_PTS_WRAP_IGNORE      0   ///< ignore the wrap
>
> OK so you prefer introducing a new symbol instead of adding a private
> option the microdvd demuxer? (to read the FPS and check if it was set or
> not).
>
> I'm a bit uncomfortable adding a generic flag for just a single format;
> can you find another format in the same situation? (AQTitle?)
>
> If you can't, I'd really like to have the private option way...

I'd vote for a private option myself - e.g. ffmpeg users directly 
benefit from being able to set the default time base for microdvd format 
as a demuxer option.

BTW what is the main reason for not using 0/0 or 0/1 as an unkown time 
base? FFmpeg depens on a sane time base everywhere? Or it would break 
existing applications?

Thanks,
Marton


More information about the ffmpeg-devel mailing list