From patchwork Thu Aug 29 22:26:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 14802 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 63A87449931 for ; Fri, 30 Aug 2019 01:27:18 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 40589680A86; Fri, 30 Aug 2019 01:27:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BDC4568077C for ; Fri, 30 Aug 2019 01:27:11 +0300 (EEST) Received: by mail-qk1-f196.google.com with SMTP id s14so4498674qkm.4 for ; Thu, 29 Aug 2019 15:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=bxroqw1mK08UiQRoEzw88Q9c9Yq6cIHa+6U8JE+Ea5s=; b=Cyii9tkwFuFY0uBkEYEH++1CIO4jauzlv6BnFGN+CJXScZokWwbeCJZMBZBIdGTbNB eJAjwWXJxjNw9tY4pF/LYk0ctOBUGrstL7u1W35sO9k4yr4zs+/ZybECltwrli8PjYhS NXUwyJ+2bI8bxTfS8QD00SagilfoJ5nGHvg2HSRFabU8U92V6S0q6toTHFICC0UxB9+V pdlB26BW3cgbudq6exJM0ZDjWkmsMqnVLkigW1UbLJRIa90Sn34KvR3EoO107trUrCQl QZieyu3P0e197e/q3pQH5n1zvfNSnH8ayqQxcFALKn11fmwdoIaj8YdkOAxcgZ+u6cbx vdWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=bxroqw1mK08UiQRoEzw88Q9c9Yq6cIHa+6U8JE+Ea5s=; b=qdMSucxlZzEJHnTklJJOyjXfenT/PSD3hgIYsoh6zLrPjr4UpxG0eBTGfbwPZLAW+m rq/9SXJpzq7RkgI1woeSLl9UJ2yPbAiHBcnmAzRS8vruKni2lsXf+050M2QM53wZhxKd K1KOwE3rydrd85As4td1OkjjPLsNcc0QMKJWtH8NERKM7rRpxBJecpGJep6ru+GN6DTs Dzampdnzgd4DPRP4HP+9phWeq1pFXyYx6IB0c1i5tb8t1GXZI9OOasiGAviHzVB58uE+ aNxgRQRJEXMWC3doCGbXRNnIyA+dl4YPx2F6VkrXzdYu+otFa9tP46/BW7j/QsdO3QS9 bzPQ== X-Gm-Message-State: APjAAAUlOZzFT4kkFCQjdwm7fS7eRizju3K3vvp6C43avwaseqgmsH7w cKe+YHtMLmKMoazS9QSIFn5ofbLr X-Google-Smtp-Source: APXvYqzEWWbVLGXCqjN09ZZYBciZMPfsbiwBTTsXWEs9BFyYFR0EO5eZHRcblxI8wzu64z/ZwgNmJQ== X-Received: by 2002:a37:e509:: with SMTP id e9mr5242778qkg.259.1567117630059; Thu, 29 Aug 2019 15:27:10 -0700 (PDT) Received: from localhost.localdomain ([181.23.80.183]) by smtp.gmail.com with ESMTPSA id e17sm2011409qkn.61.2019.08.29.15.27.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Aug 2019 15:27:09 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Aug 2019 19:26:57 -0300 Message-Id: <20190829222657.10931-1-jamrial@gmail.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/wcmv: use ff_reget_buffer() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- Untested. There doesn't seem to be a fate test, and i have no samples at hand. libavcodec/wcmv.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/libavcodec/wcmv.c b/libavcodec/wcmv.c index 0d60b9fe1f..68142b45fd 100644 --- a/libavcodec/wcmv.c +++ b/libavcodec/wcmv.c @@ -60,7 +60,7 @@ static int decode_frame(AVCodecContext *avctx, if (!blocks) return avpkt->size; - if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0) + if ((ret = ff_reget_buffer(avctx, s->prev_frame)) < 0) return ret; if (blocks > 5) { @@ -157,13 +157,9 @@ static int decode_frame(AVCodecContext *avctx, if (bytestream2_get_bytes_left(&gb) < 8LL * blocks) return AVERROR_INVALIDDATA; - if (s->prev_frame->data[0]) { - ret = av_frame_copy(frame, s->prev_frame); - if (ret < 0) - return ret; - } else { - ptrdiff_t linesize[4] = { frame->linesize[0], 0, 0, 0 }; - av_image_fill_black(frame->data, linesize, avctx->pix_fmt, 0, + if (!avctx->frame_number) { + ptrdiff_t linesize[4] = { s->prev_frame->linesize[0], 0, 0, 0 }; + av_image_fill_black(s->prev_frame->data, linesize, avctx->pix_fmt, 0, avctx->width, avctx->height); } @@ -184,7 +180,7 @@ static int decode_frame(AVCodecContext *avctx, if (w > avctx->width || h > avctx->height) return AVERROR_INVALIDDATA; - dst = frame->data[0] + (avctx->height - y - 1) * frame->linesize[0] + x * bpp; + dst = s->prev_frame->data[0] + (avctx->height - y - 1) * s->prev_frame->linesize[0] + x * bpp; for (int i = 0; i < h; i++) { s->zstream.next_out = dst; s->zstream.avail_out = w * bpp; @@ -196,15 +192,14 @@ static int decode_frame(AVCodecContext *avctx, return AVERROR_INVALIDDATA; } - dst -= frame->linesize[0]; + dst -= s->prev_frame->linesize[0]; } } - frame->key_frame = intra; - frame->pict_type = intra ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; + s->prev_frame->key_frame = intra; + s->prev_frame->pict_type = intra ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; - av_frame_unref(s->prev_frame); - if ((ret = av_frame_ref(s->prev_frame, frame)) < 0) + if ((ret = av_frame_ref(frame, s->prev_frame)) < 0) return ret; *got_frame = 1;