On 2014-01-03 15:07:44 +0100, Anton Khirnov wrote:
> Allocating edges will be removed from generic code, so the encoder must
> handle this explicitly.
> ---
> libavcodec/mpegvideo.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
> index caf8ca2..484dba4 100644
> --- a/libavcodec/mpegvideo.c
> +++ b/libavcodec/mpegvideo.c
> @@ -422,15 +422,21 @@ fail:
> */
> static int alloc_frame_buffer(MpegEncContext *s, Picture *pic)
> {
> + int edges_needed = av_codec_is_encoder(s->avctx->codec);
> int r, ret;
>
> pic->tf.f = &pic->f;
> if (s->codec_id != AV_CODEC_ID_WMV3IMAGE &&
> s->codec_id != AV_CODEC_ID_VC1IMAGE &&
> - s->codec_id != AV_CODEC_ID_MSS2)
> + s->codec_id != AV_CODEC_ID_MSS2) {
> + if (edges_needed) {
> + pic->f.width = s->avctx->width + 2 * EDGE_WIDTH;
> + pic->f.height = s->avctx->height + 2 * EDGE_WIDTH;
is s->avctx->width/height guaranteed to be multiple of the macroblock
size? iirc get_buffer aligned the dimension in addition to adding edges.
Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel