Commit 77811159 authored by Anton Khirnov's avatar Anton Khirnov

dvenc: initialize the profile only once, at init

We do not allow the frame parameters to change during encoding, so there
is no need to do this for each frame.
parent 452860d7
...@@ -35,13 +35,22 @@ ...@@ -35,13 +35,22 @@
static av_cold int dvvideo_encode_init(AVCodecContext *avctx) static av_cold int dvvideo_encode_init(AVCodecContext *avctx)
{ {
if (!avpriv_dv_codec_profile(avctx)) { DVVideoContext *s = avctx->priv_data;
int ret;
s->sys = avpriv_dv_codec_profile(avctx);
if (!s->sys) {
av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. " av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. "
"Valid DV profiles are:\n", "Valid DV profiles are:\n",
avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt)); avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt));
ff_dv_print_profiles(avctx, AV_LOG_ERROR); ff_dv_print_profiles(avctx, AV_LOG_ERROR);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
ret = ff_dv_init_dynamic_tables(s->sys);
if (ret < 0) {
av_log(avctx, AV_LOG_ERROR, "Error initializing work tables.\n");
return ret;
}
avctx->coded_frame = av_frame_alloc(); avctx->coded_frame = av_frame_alloc();
if (!avctx->coded_frame) if (!avctx->coded_frame)
...@@ -660,9 +669,6 @@ static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt, ...@@ -660,9 +669,6 @@ static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt,
DVVideoContext *s = c->priv_data; DVVideoContext *s = c->priv_data;
int ret; int ret;
s->sys = avpriv_dv_codec_profile(c);
if (!s->sys || ff_dv_init_dynamic_tables(s->sys))
return -1;
if ((ret = ff_alloc_packet(pkt, s->sys->frame_size)) < 0) { if ((ret = ff_alloc_packet(pkt, s->sys->frame_size)) < 0) {
av_log(c, AV_LOG_ERROR, "Error getting output packet.\n"); av_log(c, AV_LOG_ERROR, "Error getting output packet.\n");
return ret; return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment