On Thu, Jun 18, 2020 at 12:32:57PM +0800, [email protected] wrote: > From: Limin Wang <[email protected]> > > Signed-off-by: Limin Wang <[email protected]> > --- > libavcodec/nvenc.c | 17 +++++++++++++++++ > libavcodec/nvenc.h | 1 + > libavcodec/nvenc_hevc.c | 1 + > 3 files changed, 19 insertions(+) > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > index e4356ce..81e8338 100644 > --- a/libavcodec/nvenc.c > +++ b/libavcodec/nvenc.c > @@ -22,6 +22,7 @@ > #include "config.h" > > #include "nvenc.h" > +#include "hevc_sei.h" > > #include "libavutil/hwcontext_cuda.h" > #include "libavutil/hwcontext.h" > @@ -2156,6 +2157,22 @@ int ff_nvenc_send_frame(AVCodecContext *avctx, const > AVFrame *frame) > } > } > > + if (ctx->tc && av_frame_get_side_data(frame, > AV_FRAME_DATA_S12M_TIMECODE)) { > + void *tc_data = NULL; > + size_t tc_size = 0; > + > + if (ff_alloc_timecode_sei(frame, 0, (void**)&tc_data, &tc_size) > < 0) { > + av_log(ctx, AV_LOG_ERROR, "Not enough memory for timecode > sei, skipping\n"); > + } > + > + if (tc_data) { > + sei_data[sei_count].payloadSize = (uint32_t)tc_size; > + sei_data[sei_count].payloadType = HEVC_SEI_TYPE_TIME_CODE; > + sei_data[sei_count].payload = (uint8_t*)tc_data; > + sei_count ++; > + } > + } > + > nvenc_codec_specific_pic_params(avctx, &pic_params, sei_data, > sei_count); > } else { > pic_params.encodePicFlags = NV_ENC_PIC_FLAG_EOS; > diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h > index 7a415a4..f1adaeb 100644 > --- a/libavcodec/nvenc.h > +++ b/libavcodec/nvenc.h > @@ -196,6 +196,7 @@ typedef struct NvencContext > int coder; > int b_ref_mode; > int a53_cc; > + int tc; > int dpb_size; > } NvencContext; > > diff --git a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c > index 7f12b56..74ca548 100644 > --- a/libavcodec/nvenc_hevc.c > +++ b/libavcodec/nvenc_hevc.c > @@ -129,6 +129,7 @@ static const AVOption options[] = { > { "each", "", 0, > AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, VE, "b_ref_mode" }, > { "middle", "", 0, > AV_OPT_TYPE_CONST, { .i64 = 2 }, 0, 0, VE, "b_ref_mode" }, > #endif > + { "tc", "Use timecode (if available)", OFFSET(tc), > AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, VE }, > { "dpb_size", "Specifies the DPB size used for encoding (0 means > automatic)", > > OFFSET(dpb_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, > { NULL } > -- > 1.8.3.1 >
ping -- Thanks, Limin Wang _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
