@@ -60,10 +60,15 @@ typedef struct XAVS2EContext {
static av_cold int xavs2_init(AVCodecContext *avctx)
{
XAVS2EContext *cae = avctx->priv_data;
- int bit_depth, code;
+ int bit_depth;
+ double framerate = 30.0;
bit_depth = avctx->pix_fmt == AV_PIX_FMT_YUV420P ? 8 : 10;
+ if (avctx->framerate.den > 0 && avctx->framerate.num > 0) {
+ framerate = av_q2d(avctx->framerate);
+ }
+
/* get API handler */
cae->api = xavs2_api_get(bit_depth);
if (!cae->api) {
@@ -83,6 +88,7 @@ static av_cold int xavs2_init(AVCodecContext *avctx)
xavs2_opt_set2("BitDepth", "%d", bit_depth);
xavs2_opt_set2("Log", "%d", cae->log_level);
xavs2_opt_set2("Preset", "%d", cae->preset_level);
+ xavs2_opt_set2("fps", "%.3lf", framerate);
xavs2_opt_set2("IntraPeriodMax", "%d", avctx->gop_size);
xavs2_opt_set2("IntraPeriodMin", "%d", avctx->gop_size);
@@ -115,9 +121,6 @@ static av_cold int xavs2_init(AVCodecContext *avctx)
xavs2_opt_set2("InitialQP", "%d", cae->qp);
}
- ff_mpeg12_find_best_frame_rate(avctx->framerate, &code, NULL, NULL, 0);
- xavs2_opt_set2("FrameRate", "%d", code);
-
cae->encoder = cae->api->encoder_create(cae->param);
if (!cae->encoder) {
Signed-off-by: hwren <hwrenx@126.com> --- libavcodec/libxavs2.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)