mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-25 12:40:01 +00:00
timecode: move dropframe code and doxycomment it.
This is based on the original work by Baptiste Coudurier.
This commit is contained in:
parent
5231454560
commit
51fb933dd0
@ -299,13 +299,8 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
|
|||||||
time_code = s->current_picture_ptr->f.coded_picture_number + s->avctx->timecode_frame_start;
|
time_code = s->current_picture_ptr->f.coded_picture_number + s->avctx->timecode_frame_start;
|
||||||
|
|
||||||
s->gop_picture_number = s->current_picture_ptr->f.coded_picture_number;
|
s->gop_picture_number = s->current_picture_ptr->f.coded_picture_number;
|
||||||
if (s->tc.drop) {
|
if (s->tc.drop)
|
||||||
/* only works for NTSC 29.97 */
|
time_code = ff_framenum_to_drop_timecode(time_code);
|
||||||
int d = time_code / 17982;
|
|
||||||
int m = time_code % 17982;
|
|
||||||
//if (m < 2) m += 2; /* not needed since -2,-1 / 1798 in C returns 0 */
|
|
||||||
time_code += 18 * d + 2 * ((m - 2) / 1798);
|
|
||||||
}
|
|
||||||
put_bits(&s->pb, 5, (uint32_t)((time_code / (fps * 3600)) % 24));
|
put_bits(&s->pb, 5, (uint32_t)((time_code / (fps * 3600)) % 24));
|
||||||
put_bits(&s->pb, 6, (uint32_t)((time_code / (fps * 60)) % 60));
|
put_bits(&s->pb, 6, (uint32_t)((time_code / (fps * 60)) % 60));
|
||||||
put_bits(&s->pb, 1, 1);
|
put_bits(&s->pb, 1, 1);
|
||||||
|
@ -28,6 +28,15 @@
|
|||||||
#include "timecode.h"
|
#include "timecode.h"
|
||||||
#include "libavutil/log.h"
|
#include "libavutil/log.h"
|
||||||
|
|
||||||
|
int ff_framenum_to_drop_timecode(int frame_num)
|
||||||
|
{
|
||||||
|
/* only works for NTSC 29.97 */
|
||||||
|
int d = frame_num / 17982;
|
||||||
|
int m = frame_num % 17982;
|
||||||
|
//if (m < 2) m += 2; /* not needed since -2,-1 / 1798 in C returns 0 */
|
||||||
|
return frame_num + 18 * d + 2 * ((m - 2) / 1798);
|
||||||
|
}
|
||||||
|
|
||||||
int ff_init_smtpe_timecode(void *avcl, struct ff_timecode *tc)
|
int ff_init_smtpe_timecode(void *avcl, struct ff_timecode *tc)
|
||||||
{
|
{
|
||||||
int hh, mm, ss, ff, fps;
|
int hh, mm, ss, ff, fps;
|
||||||
|
@ -43,6 +43,14 @@ struct ff_timecode {
|
|||||||
AVRational rate; ///< Frame rate in rationnal form
|
AVRational rate; ///< Frame rate in rationnal form
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Adjust frame number for NTSC drop frame time code
|
||||||
|
* @param frame_num Actual frame number to adjust
|
||||||
|
* @return Adjusted frame number
|
||||||
|
* @warning Adjustment is only valid in NTSC 29.97
|
||||||
|
*/
|
||||||
|
int ff_framenum_to_drop_timecode(int frame_num);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse SMTPE 12M time representation (hh:mm:ss[:;.]ff). str and rate fields
|
* Parse SMTPE 12M time representation (hh:mm:ss[:;.]ff). str and rate fields
|
||||||
* from tc struct must be set.
|
* from tc struct must be set.
|
||||||
|
Loading…
Reference in New Issue
Block a user