mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-26 13:00:33 +00:00
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.
This commit is contained in:
parent
452860d7e0
commit
778111592b
@ -35,13 +35,22 @@
|
||||
|
||||
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. "
|
||||
"Valid DV profiles are:\n",
|
||||
avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt));
|
||||
ff_dv_print_profiles(avctx, AV_LOG_ERROR);
|
||||
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();
|
||||
if (!avctx->coded_frame)
|
||||
@ -660,9 +669,6 @@ static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt,
|
||||
DVVideoContext *s = c->priv_data;
|
||||
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) {
|
||||
av_log(c, AV_LOG_ERROR, "Error getting output packet.\n");
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user