X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/b19b4ede044e0e2f4674ed9b1beddae510f40a95..952989bf287cbc37b28832c08a3d439ccacb6db6:/examples/am7xxx-play.c diff --git a/examples/am7xxx-play.c b/examples/am7xxx-play.c index 4b9565c..7bad4f7 100644 --- a/examples/am7xxx-play.c +++ b/examples/am7xxx-play.c @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -237,7 +238,7 @@ static int video_output_init(struct video_output_ctx *output_ctx, output_codec_ctx->qmin = output_codec_ctx->qmax = ((100 - (quality - 1)) * FF_QUALITY_SCALE) / 100; output_codec_ctx->mb_lmin = output_codec_ctx->qmin * FF_QP2LAMBDA; output_codec_ctx->mb_lmax = output_codec_ctx->qmax * FF_QP2LAMBDA; - output_codec_ctx->flags |= CODEC_FLAG_QSCALE; + output_codec_ctx->flags |= AV_CODEC_FLAG_QSCALE; output_codec_ctx->global_quality = output_codec_ctx->qmin * FF_QP2LAMBDA; /* find the encoder */ @@ -326,9 +327,10 @@ static int am7xxx_play(const char *input_format_string, picture_scaled->height = (output_ctx.codec_ctx)->height; /* calculate the bytes needed for the output image and create buffer for the output image */ - out_buf_size = avpicture_get_size((output_ctx.codec_ctx)->pix_fmt, - (output_ctx.codec_ctx)->width, - (output_ctx.codec_ctx)->height); + out_buf_size = av_image_get_buffer_size((output_ctx.codec_ctx)->pix_fmt, + (output_ctx.codec_ctx)->width, + (output_ctx.codec_ctx)->height, + 1); out_buf = av_malloc(out_buf_size * sizeof(uint8_t)); if (out_buf == NULL) { fprintf(stderr, "cannot allocate output data buffer!\n"); @@ -337,11 +339,13 @@ static int am7xxx_play(const char *input_format_string, } /* assign appropriate parts of buffer to image planes in picture_scaled */ - avpicture_fill((AVPicture *)picture_scaled, - out_buf, - (output_ctx.codec_ctx)->pix_fmt, - (output_ctx.codec_ctx)->width, - (output_ctx.codec_ctx)->height); + av_image_fill_arrays(picture_scaled->data, + picture_scaled->linesize, + out_buf, + (output_ctx.codec_ctx)->pix_fmt, + (output_ctx.codec_ctx)->width, + (output_ctx.codec_ctx)->height, + 1); sw_scale_ctx = sws_getCachedContext(NULL, (input_ctx.codec_ctx)->width, @@ -388,7 +392,11 @@ static int am7xxx_play(const char *input_format_string, /* if we got the complete frame */ if (got_picture) { - /* convert it to YUV */ + /* + * Rescaling the picture also changes its pixel format + * to the raw format supported by the projector if + * this was set in video_output_init() + */ sws_scale(sw_scale_ctx, (const uint8_t * const *)picture_raw->data, picture_raw->linesize, @@ -450,8 +458,8 @@ static int am7xxx_play(const char *input_format_string, } end_while: if (!output_ctx.raw_output && got_packet) - av_free_packet(&out_packet); - av_free_packet(&in_packet); + av_packet_unref(&out_packet); + av_packet_unref(&in_packet); } sws_freeContext(sw_scale_ctx);