summaryrefslogtreecommitdiff
path: root/libavfilter/vf_mcdeint.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-01-29 13:32:19 -0300
committerJames Almer <jamrial@gmail.com>2021-03-17 15:19:36 -0300
commit79c6e040f8884d58119a7ac891e709754f4ed961 (patch)
tree35c796117fac4a164fb68a81eb479dcaf22a61be /libavfilter/vf_mcdeint.c
parent54cb30ce64dc75d047609deb9dd8702e5d5c1782 (diff)
avfilter/vf_mcdeint: use av_packet_alloc() to allocate packets
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavfilter/vf_mcdeint.c')
-rw-r--r--libavfilter/vf_mcdeint.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/libavfilter/vf_mcdeint.c b/libavfilter/vf_mcdeint.c
index bc7b3230d3..1cad45cd4e 100644
--- a/libavfilter/vf_mcdeint.c
+++ b/libavfilter/vf_mcdeint.c
@@ -74,6 +74,7 @@ typedef struct MCDeintContext {
int mode; ///< MCDeintMode
int parity; ///< MCDeintParity
int qp;
+ AVPacket *pkt;
AVCodecContext *enc_ctx;
} MCDeintContext;
@@ -112,6 +113,9 @@ static int config_props(AVFilterLink *inlink)
return AVERROR(EINVAL);
}
+ mcdeint->pkt = av_packet_alloc();
+ if (!mcdeint->pkt)
+ return AVERROR(ENOMEM);
mcdeint->enc_ctx = avcodec_alloc_context3(enc);
if (!mcdeint->enc_ctx)
return AVERROR(ENOMEM);
@@ -154,6 +158,7 @@ static av_cold void uninit(AVFilterContext *ctx)
{
MCDeintContext *mcdeint = ctx->priv;
+ av_packet_free(&mcdeint->pkt);
avcodec_free_context(&mcdeint->enc_ctx);
}
@@ -173,7 +178,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
MCDeintContext *mcdeint = inlink->dst->priv;
AVFilterLink *outlink = inlink->dst->outputs[0];
AVFrame *outpic, *frame_dec;
- AVPacket pkt = {0};
+ AVPacket *pkt = mcdeint->pkt;
int x, y, i, ret, got_frame = 0;
outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
@@ -184,9 +189,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
av_frame_copy_props(outpic, inpic);
inpic->quality = mcdeint->qp * FF_QP2LAMBDA;
- av_init_packet(&pkt);
-
- ret = avcodec_encode_video2(mcdeint->enc_ctx, &pkt, inpic, &got_frame);
+ ret = avcodec_encode_video2(mcdeint->enc_ctx, pkt, inpic, &got_frame);
if (ret < 0)
goto end;
@@ -274,7 +277,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
mcdeint->parity ^= 1;
end:
- av_packet_unref(&pkt);
+ av_packet_unref(pkt);
av_frame_free(&inpic);
if (ret < 0) {
av_frame_free(&outpic);