[FFmpeg-devel] [PATCH 1/8] avutil/timecode: fix av_timecode_get_smpte_from_framenum with 50/60 fps

Marton Balint cus at passwd.hu
Sun Sep 13 19:51:08 EEST 2020

On Sat, 12 Sep 2020, Marton Balint wrote:

> On Sat, 5 Sep 2020, Marton Balint wrote:
>> SMPTE 12M timecode can only count frames up to 39, because the 
> tens-of-frames
>> value is stored in 2 bit. In order to resolve this 50/60 fps SMPTE timecode 
> is
>> using the field bit (which is the same bit as the phase correction bit) to
>> signal the least significant bit of a 50/60 fps timecode. See SMPTE ST
>> 12-1:2014 section 12.1.
>> Therefore we slightly change the format of the return value of
>> av_timecode_get_smpte_from_framenum and AV_FRAME_DATA_S12M_TIMECODE and 
> start
>> using the previously unused Phase Correction bit as Field bit. (As the 
>> standard suggests)
>> We add 50/60 fps support to av_timecode_get_smpte_from_framenum by calling 
> the
>> recently added av_timecode_get_smpte function in it which already handles 
> this
>> properly.
>> This change affects the decklink indev and the DV and MXF muxers. MXF has 
> no
>> fate test for 50/60fps content, DV does, therefore the changes.
>> MediaInfo (a recent version) confirms that half-frame timecode must be 
> inserted
>> to DV. MXFInspect confirms valid timecode insertion to the System Item of 
>> files. For MXF, also see EBU R122.
>> Note that for DV the field flag is not used because in the HDV specs (SMPTE
>> 370M) it is still defined as biphase mark polarity correction flag. So it
>> should not matter that the DV muxer overrides the field bit.
> Will apply the series soon.



More information about the ffmpeg-devel mailing list