summaryrefslogtreecommitdiffstats
path: root/libavcodec/proresenc_kostya.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2015-03-02 20:55:16 +0100
committerClément Bœsch <u@pkh.me>2015-03-02 22:52:49 +0100
commitda2a49ac9ab55c857fe4116c0996728c49e2be77 (patch)
tree730953a74e0fbf3c6940f769fd20d930e8acd130 /libavcodec/proresenc_kostya.c
parentbf691e1d39560532344e6df2e72f522cea6c9bea (diff)
downloadffmpeg-streaming-da2a49ac9ab55c857fe4116c0996728c49e2be77.zip
ffmpeg-streaming-da2a49ac9ab55c857fe4116c0996728c49e2be77.tar.gz
avcodec/proresenc_kostya: fix coded_frame handling
Diffstat (limited to 'libavcodec/proresenc_kostya.c')
-rw-r--r--libavcodec/proresenc_kostya.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c
index 59f73fb..440cc8b 100644
--- a/libavcodec/proresenc_kostya.c
+++ b/libavcodec/proresenc_kostya.c
@@ -914,7 +914,7 @@ static int find_quant_thread(AVCodecContext *avctx, void *arg,
for (x = mb = 0; x < ctx->mb_width; x += mbs_per_slice, mb++) {
while (ctx->mb_width - x < mbs_per_slice)
mbs_per_slice >>= 1;
- q = find_slice_quant(avctx, avctx->coded_frame,
+ q = find_slice_quant(avctx, arg,
(mb + 1) * TRELLIS_WIDTH, x, y,
mbs_per_slice, td);
}
@@ -942,10 +942,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
int max_slice_size = (ctx->frame_size_upper_bound - 200) / (ctx->pictures_per_frame * ctx->slices_per_picture + 1);
uint8_t frame_flags;
- *avctx->coded_frame = *pic;
- avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I;
- avctx->coded_frame->key_frame = 1;
-
pkt_size = ctx->frame_size_upper_bound;
if ((ret = ff_alloc_packet2(avctx, pkt, pkt_size + FF_MIN_BUFFER_SIZE)) < 0)
@@ -1006,7 +1002,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
// slices
if (!ctx->force_quant) {
- ret = avctx->execute2(avctx, find_quant_thread, NULL, NULL,
+ ret = avctx->execute2(avctx, find_quant_thread, (void*)pic, NULL,
ctx->mb_height);
if (ret)
return ret;
@@ -1096,7 +1092,7 @@ static av_cold int encode_close(AVCodecContext *avctx)
ProresContext *ctx = avctx->priv_data;
int i;
- av_freep(&avctx->coded_frame);
+ av_frame_free(&avctx->coded_frame);
if (ctx->tdata) {
for (i = 0; i < avctx->thread_count; i++)
@@ -1134,6 +1130,8 @@ static av_cold int encode_init(AVCodecContext *avctx)
avctx->coded_frame = av_frame_alloc();
if (!avctx->coded_frame)
return AVERROR(ENOMEM);
+ avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I;
+ avctx->coded_frame->key_frame = 1;
ctx->fdct = prores_fdct;
ctx->scantable = interlaced ? ff_prores_interlaced_scan
OpenPOWER on IntegriCloud