From patchwork Sun Aug 8 22:56:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29366 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp2364440ioh; Sun, 8 Aug 2021 15:56:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyKWVDphh7tZ4qlt3cOSFJPXuep37vhMR5RATCxCLTkNmc/pE1mDvVnPdREGOkz6f3K+OrL X-Received: by 2002:aa7:d3cf:: with SMTP id o15mr3883082edr.98.1628463416527; Sun, 08 Aug 2021 15:56:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628463416; cv=none; d=google.com; s=arc-20160816; b=geX6zYLo9zz48xMCtAi9MYM8ovEP2XMunRJQWpmcXnfQX7lj/2Bs7EWQbQESLEWyyk WjhCB1S8NOFu4l3hwBBUw0V8+uVjFCYamyw/enstaY5qaSA6NSYol0ZKvSwfwo1T9BgJ o+Gmmo7gmRh+ZC3gFJ0fUZ9uj5GkBWZ6Z2bzEO8tH/SZD8pDlbTOOFhOxNJfD+3lUlLn 7J/E6kYJ83cOEylg+/sqDYtJ+F/Bg3wNt8TPy5n4lwuB3Orqtp2CXT05x+m03VZq3T4L L4ZpIo0/yUgHLw9DbSgOcUP0vbUA0dLBxKRbUdJeFqScluGuguszyvFjXi/30ZJP/ISJ xhag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=dKsGPWdKgERM0Xlc+Jdjbkpx9gsIJYQ6o9qUT5RhvI0=; b=GAnpMJ25fX3Z3Wxot56MqjJbD6qpy5WrbCWMWuk5YWuvQDH/xFzN3cRm/WBuzNIMTH F1h/nWokBQ/CsaTFbtB1AYvHw8wJz/ktrX9Hbf53vcByhHeMu+OiEZc2UOWCjHw1MWq7 dMgrHvhdB4cReonpIzVB6wmf3LRKOAtZ3Jbl6M7/9kfJewPQq7AL1h5rfVFJ9iSHDDfS x6taEQwir7oubYPRG1XiQ7eJEPIfXZz8r1dFD4uecmBXlml4CO1BLP0wQ/G51445gGdn OA13CUie3/1UMkdJNA7BmYKD9QzxlKWXl8+Y+7GrW2mqGPh6hai4QupKfY6QgbICu9xT LL4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=kRow5auL; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b14si15334968edd.329.2021.08.08.15.56.55; Sun, 08 Aug 2021 15:56:56 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=kRow5auL; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7308E68A3B7; Mon, 9 Aug 2021 01:56:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5683068A0F1 for ; Mon, 9 Aug 2021 01:56:46 +0300 (EEST) Received: by mail-pj1-f42.google.com with SMTP id e2-20020a17090a4a02b029016f3020d867so27168169pjh.3 for ; Sun, 08 Aug 2021 15:56:46 -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=YbY9YUYq2gODTPqSl6XDj3fSH3R1DT3GWPZEFBzWb8E=; b=kRow5auLvYE8CgkGYU1y/R+gpp8lgOVqjCZsf9GVpUfVdy9L5GtfVBULSTvr3cR+a2 mrLX4q6n2Qv7O+BfrhC7vIy4W+JwG6q8wnxuvneBbuoIBDOz1I+xRzKRCD67uiDMEDi6 ZCpw4oHDAgXiL5FePDOc5zkbTexFiMXjLfM1mEHqhQTuwEIBunUHxesnCqNj55TSYgWf PyfHBCh4d5ZO6AMGniSWeWS0l0PkN4iMa7pqb4vxJyvGvYxwRuWvpaXdsLnD/B7wO1y2 Fb2fewyUIsRh3EPQ25lcYDYLKfBW9f1me/ZkwFKnVcogrnYxibZG+vIPmgi5tdEoNPoH QeCA== 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=YbY9YUYq2gODTPqSl6XDj3fSH3R1DT3GWPZEFBzWb8E=; b=Oc/KHVFONyNy6gcDEGcajb+9Eo0TdpMroJVyRZU9Sc1/yvVvvBppPOCnNZ0Xu5kXGK uMI0aitlcAQoKR0Dg6NBxuLnCnTHcrC+yz8tzX20I2hgeVG/kWcsp4aE/DM2sAhMhzjh /+6KDIa1V/IRzFmb19I47CEHxXOAfwN2hIX6mvtK/LiZDDosskyMJ0u6dMSfQ7fOPZ6d ap9HIPxK+RllmCNUYHBmJ2zMkRc9Q3BVF4yURqhFJuhR9LNDkyt2xMwLUu+w/SU6DI3h 3qGGzOFixS6EccFAR9bDpzkmM3Hqti0QmTaCmthAgzirHZt4XhYtY9EDpWFCpYH6UB9Q dVTw== X-Gm-Message-State: AOAM530T0fbMlpQ35usaPEvgb2ZcpDf6PKOijQIBRb0zV0NrVwTQbb2t qIvPUCdYB2LZP48wa2i1uTKn1FpKNzg= X-Received: by 2002:a63:5fd4:: with SMTP id t203mr131157pgb.141.1628463404330; Sun, 08 Aug 2021 15:56:44 -0700 (PDT) Received: from localhost.localdomain ([191.84.233.71]) by smtp.gmail.com with ESMTPSA id t9sm22337491pgc.81.2021.08.08.15.56.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Aug 2021 15:56:43 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Aug 2021 19:56:10 -0300 Message-Id: <20210808225612.11600-1-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/h264_picture: split copying some H264Picture fields into a separate function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: PpvTDGBVArAN Signed-off-by: James Almer --- libavcodec/h264_picture.c | 57 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index eec5e9fb9a..89aef37edd 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -63,6 +63,38 @@ void ff_h264_unref_picture(H264Context *h, H264Picture *pic) memset((uint8_t*)pic + off, 0, sizeof(*pic) - off); } +static void h264_copy_picture_params(H264Picture *dst, H264Picture *src) +{ + dst->qscale_table = src->qscale_table; + dst->mb_type = src->mb_type; + dst->pps = src->pps; + + for (int i = 0; i < 2; i++) { + dst->motion_val[i] = src->motion_val[i]; + dst->ref_index[i] = src->ref_index[i]; + } + + for (int i = 0; i < 2; i++) + dst->field_poc[i] = src->field_poc[i]; + + memcpy(dst->ref_poc, src->ref_poc, sizeof(src->ref_poc)); + memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count)); + + dst->poc = src->poc; + dst->frame_num = src->frame_num; + dst->mmco_reset = src->mmco_reset; + dst->long_ref = src->long_ref; + dst->mbaff = src->mbaff; + dst->field_picture = src->field_picture; + dst->reference = src->reference; + dst->recovered = src->recovered; + dst->invalid_gap = src->invalid_gap; + dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt; + dst->mb_width = src->mb_width; + dst->mb_height = src->mb_height; + dst->mb_stride = src->mb_stride; +} + int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) { int ret, i; @@ -83,9 +115,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) ret = AVERROR(ENOMEM); goto fail; } - dst->qscale_table = src->qscale_table; - dst->mb_type = src->mb_type; - dst->pps = src->pps; for (i = 0; i < 2; i++) { dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]); @@ -94,8 +123,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) ret = AVERROR(ENOMEM); goto fail; } - dst->motion_val[i] = src->motion_val[i]; - dst->ref_index[i] = src->ref_index[i]; } if (src->hwaccel_picture_private) { @@ -107,25 +134,7 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data; } - for (i = 0; i < 2; i++) - dst->field_poc[i] = src->field_poc[i]; - - memcpy(dst->ref_poc, src->ref_poc, sizeof(src->ref_poc)); - memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count)); - - dst->poc = src->poc; - dst->frame_num = src->frame_num; - dst->mmco_reset = src->mmco_reset; - dst->long_ref = src->long_ref; - dst->mbaff = src->mbaff; - dst->field_picture = src->field_picture; - dst->reference = src->reference; - dst->recovered = src->recovered; - dst->invalid_gap = src->invalid_gap; - dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt; - dst->mb_width = src->mb_width; - dst->mb_height = src->mb_height; - dst->mb_stride = src->mb_stride; + h264_copy_picture_params(dst, src); return 0; fail: From patchwork Sun Aug 8 22:56:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29365 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp2364530ioh; Sun, 8 Aug 2021 15:57:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwidsnLTuVXrx1bppRrL5R1giXr+KxCi6TqyXnSqxds0Z+5+DOlSfNJCgo9ax4kgmIw5Ptu X-Received: by 2002:a05:6402:50:: with SMTP id f16mr26016368edu.346.1628463425719; Sun, 08 Aug 2021 15:57:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628463425; cv=none; d=google.com; s=arc-20160816; b=ynPajIN+9tOKoiMwg1xnvrVLGe+qiocYMlkfJNvmsN670oehZsiPM87KRYNwPoKEj8 Qshk7tRkCyrX9IMScPNeZRVEQCDwmEGFnKy763M2tcOwIiileqIH54pfm74yyVecIvLp g1bB8+lC9A485cN5T5IKftkKL94VpP/O4Befqfmib+AfEFhaNyWZRDP35XcqDPKN7RXY wiyAos0vz4F6aODiO6OvrHPxVI4yDa+eigdupVU9XFNYcRTC0/Qu+Nzxf58IdiiKSWZA JOl2rMFEBvQ4jXKY0F6hFuHtsQgKPDKjsP6gYgthLFwgH8L/k4lDtiD5op7x6R0k5kRI Jc+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=tV1qHWxJsKd4q2uz+bp6Mx6RwoaR7PfQHbjSxlA99CY=; b=tOjB4ozYhErl0r0NdEcKvqJFrDdc3QwQkI22pawo2aKfe61qqKEkGlYC41/PitSLbB /7ikTjm7WY1TY/3ngbETUwgB/SLKaTArZmGJv9kSyASPnyC612hGIweVZNWOPeM9gzKW fHHgQ0g52wInUtnuWNi3QDES/7pKiYMX/dI7peAglHWJ4qCTvVmRrF7bY9J4UivxDvaw G1VGYV6nyxrSzKTgSWRvNA105X3QbldPxfkmYUcpkLa6R0t2pLWZQAnCWTC+otJY+QsN IAa6vs7pVCQwOTeds//WpbX2a++GtUrNXHDVneabyTD4Xc6W63qFkKVPYnjtCghv+wkj 5sBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=iw2MpuDr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id cq4si16299198edb.74.2021.08.08.15.57.05; Sun, 08 Aug 2021 15:57:05 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=iw2MpuDr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6BE0D68A41C; Mon, 9 Aug 2021 01:56:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7AB1A68A3B8 for ; Mon, 9 Aug 2021 01:56:47 +0300 (EEST) Received: by mail-pj1-f54.google.com with SMTP id u21-20020a17090a8915b02901782c36f543so22743403pjn.4 for ; Sun, 08 Aug 2021 15:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Npa9WhySsmTsdlH9VJkxC1n4dZTAuS7aBsS4X1+00S0=; b=iw2MpuDrJ3hd11gSAWfmr55dUUAsB7wL4Di+WDLYe4EYFawDFZtsAu7fRNmlMMrteH a+yAyknei4vx8jX3jp90V+9G4L7WzlzeGGTORoVNU4eNg+zeHARM+k4hw4U3oRrhxE1L IfuYQ5mLML1CmNa4ziMeWUYs210vHm0+hF9CLm2aQ6jwUCnGr2km1FfaoJdEjL8NayQC K+C5DrDAKUMaAGoGJDgFR5OzH3Y+xJViLJno1jyEykbDjQD9t9LknBeXeApqE3IaEr4d qsJ5896qnT1IUOAhcZcJRM1N+EeiklgZqy9JeCjCE40Z9nbpq5CsyHD4K8BThBHNNi8k NNOQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Npa9WhySsmTsdlH9VJkxC1n4dZTAuS7aBsS4X1+00S0=; b=oxHIJ+MUqSI0stvlK4bHUoBRGil+iroYF9lCjjPx1eho5jEIgRSWOsKEQFSNG9lRH7 XDdzrJKZlQqS7u+LG8zf1yuZAkZIAZ6D4iujSdx4n5Xw+gjKxeTmkSMD/5sUDiy1PO2C Ggfc/MtTHc3doPX8Fux4fU8WTnibVN3QoZXhwot1TUPnMAltLJDiUvPFpOcJwXtFN3hK +l75KwaJgqIzqaZdfDp1CncdLcNrrlLgf0RfqQEpjyV/2wg3jQCLnGm8b16LCoXK/XuU 6j/208Kqyk0iglp3dwiZ5PP2kNenj+KWDU/XNGUwIIC6ZqDjV11YUs5HU63piYpv28A+ UyHQ== X-Gm-Message-State: AOAM530RAd73GeVmCn3UZMApZbOsyZdQeD+Tj4XUa225AgudjL/kVrnE KzmyoAcS6/9xOQQbe4ef6GkOv7n3qjU= X-Received: by 2002:a63:510f:: with SMTP id f15mr404844pgb.222.1628463405801; Sun, 08 Aug 2021 15:56:45 -0700 (PDT) Received: from localhost.localdomain ([191.84.233.71]) by smtp.gmail.com with ESMTPSA id t9sm22337491pgc.81.2021.08.08.15.56.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Aug 2021 15:56:45 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Aug 2021 19:56:11 -0300 Message-Id: <20210808225612.11600-2-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210808225612.11600-1-jamrial@gmail.com> References: <20210808225612.11600-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/h264_picture: add ff_h264_replace_picture() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: TYN+n9TVxUtA Will remove unnecessary allocations when both src and dst picture contain references to the same buffers. Signed-off-by: James Almer --- libavcodec/h264_picture.c | 45 +++++++++++++++++++++++++++++++++++++++ libavcodec/h264dec.h | 1 + 2 files changed, 46 insertions(+) diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index 89aef37edd..1073d9e7e0 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -142,6 +142,51 @@ fail: return ret; } +int ff_h264_replace_picture(H264Context *h, H264Picture *dst, H264Picture *src) +{ + int ret, i; + + if (!src->f || !src->f->buf[0]) { + ff_h264_unref_picture(h, dst); + return 0; + } + + av_assert0(src->tf.f == src->f); + + dst->tf.f = dst->f; + ff_thread_release_buffer(h->avctx, &dst->tf); + ret = ff_thread_ref_frame(&dst->tf, &src->tf); + if (ret < 0) + goto fail; + + ret = av_buffer_replace(&dst->qscale_table_buf, src->qscale_table_buf); + ret |= av_buffer_replace(&dst->mb_type_buf, src->mb_type_buf); + ret |= av_buffer_replace(&dst->pps_buf, src->pps_buf); + if (ret < 0) + goto fail; + + for (i = 0; i < 2; i++) { + ret = av_buffer_replace(&dst->motion_val_buf[i], src->motion_val_buf[i]); + ret |= av_buffer_replace(&dst->ref_index_buf[i], src->ref_index_buf[i]); + if (ret < 0) + goto fail; + } + + if (src->hwaccel_picture_private) { + ret = av_buffer_replace(&dst->hwaccel_priv_buf, src->hwaccel_priv_buf); + if (ret < 0) + goto fail; + dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data; + } + + h264_copy_picture_params(dst, src); + + return 0; +fail: + ff_h264_unref_picture(h, dst); + return ret; +} + void ff_h264_set_erpic(ERPicture *dst, H264Picture *src) { #if CONFIG_ERROR_RESILIENCE diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h index 8954b74795..655b8f0b9a 100644 --- a/libavcodec/h264dec.h +++ b/libavcodec/h264dec.h @@ -833,6 +833,7 @@ static inline int find_start_code(const uint8_t *buf, int buf_size, int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup); int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src); +int ff_h264_replace_picture(H264Context *h, H264Picture *dst, H264Picture *src); void ff_h264_unref_picture(H264Context *h, H264Picture *pic); int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl); From patchwork Sun Aug 8 22:56:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29367 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp2364598ioh; Sun, 8 Aug 2021 15:57:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWEPstYdtxFC85BGTerYSgNaAaaNIKzEyCLSpl/qnDffqqCPBWqd5MMTIoCXOwkSXIHwgB X-Received: by 2002:a05:6402:648:: with SMTP id u8mr26849404edx.162.1628463434473; Sun, 08 Aug 2021 15:57:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628463434; cv=none; d=google.com; s=arc-20160816; b=gdEh3g4o9QdBV4Damf/PRiznCigBNOU73LFJ6kA5ps5hXX2lTfLhtOil/PzilauBiv WLU82DIAv+CsLWowMQWjmExL1F9OlyVzbLBjdME3grH1QDo5awilcdXY0StQULwTwRNP limL9cQWVuQYb4dlBeJLCPsPWjKPHFCDfOiumGvpXVN2NB4Jh9XrIqtwzuU0fi+uCzL/ IV9fZashJ6hzpPIYNs08+EcW9G8314PBT7DhbaQf4dZ5p1YDX1hWwldXN1k5SvF+Rt+p Oj01oce6UxybjNO32vIGpiahxqGEl9Ijzx0+aB8Q5mwr8zmVTc2PNm5MkamsxYTEodxk OD+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=QBrAoatphOuSGiXY28p8yo2883MgdLp9OukJT7pUntU=; b=XI3AkjsxtPg9OmC+l7O+gS+YYhYGLBUDfiguJyrG8aeS8O8hi2D79a4DUQbZeW1SiW pLwa5CZDFKWVy6CmiBDFynMSCf4Fq6e11C6zGbPLuLIXAwgM3joculND+Ms4YE38PeIA 0ukEKA8ExZlfTT+BatEOEPJ0TPmozYSD9kWRyBLYSeH4uAvzO4DVH+WNiAjH62VLbSG5 bI0LgYC5oVPL9Y3kkdjuxX1N/IxbGnJoaOiy22zYkvHzro2Mqim+0FslFAuBoXHstXWG 0WH8cG1edqF4X3N5GCjsuUjd983Df1PeS/Bv4/q2f0ig43zmD8OrVRwdh/YmMsPfvRrE LwDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=rUAKfHzK; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dk3si9115253edb.202.2021.08.08.15.57.13; Sun, 08 Aug 2021 15:57:14 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=rUAKfHzK; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 528AC68A44A; Mon, 9 Aug 2021 01:56:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 07F3668A408 for ; Mon, 9 Aug 2021 01:56:49 +0300 (EEST) Received: by mail-pj1-f53.google.com with SMTP id a8so25025659pjk.4 for ; Sun, 08 Aug 2021 15:56:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=lx6HfkDvIGNvpuFg/n+L/RLRDF2wWTLHq1QdGfW+Aic=; b=rUAKfHzKVNOrgW4XgdTtFHadk7qA703HOYFvgqYN2Sdmoz6W3fw7WMHVtm0TsEA81G MES39ptc/07lbeyZoBZmLj+oEHFSkhkRUaPC6ch55LbTZXOQJ1oDqlGx84fp9XcNElRr XaVVbnC++WNEUm7iXChO37BzpsXqS6rYLQwgra/zsxatjv4sp7P9WfgQP0kSzTfo8FrZ qCNSltCSWszpKyPhLhziDWc+HzjWsWyHp5kO2AIOHNov9RLCZB8kFjRtGtOouhPp0/lp kE3NNxZkbQbMC0lFNOswRdmBWJB4WJx0RKC4FV5lpS2/Rf2Xm3/g453hagy6VpsjlJ0q k08Q== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=lx6HfkDvIGNvpuFg/n+L/RLRDF2wWTLHq1QdGfW+Aic=; b=AO83VV0M+EM+7V6kKEGTniGZGTogIjIc7+gug51mce2w+QLTqXisQQdlyy2Fq4VAnY Rn1x+uOynmT8G0MAvTITBNBg8nKJ3wPqh22bS14Ig0WU3iQd+PV1JT5vSwEIErHeoEcI NaKw+l1zvETxJDm795Dtl3bzI8POjL5baFJeElJIAkTQ4fFTQ5vLFpDaTxKmvxl4D4lz sB8VDM1z6Gr5h3sFx0Qivs90uxp2ibx88CVvphZrJTLJP+N2+bAz5XDxju4zZs8M+u5M W2fW88EQgXQrTYHotshR/TIlS1nHTAkz+M/vB0g8SojjaiV+XQW2KF3PgFBzNOk9PL0T 5S4Q== X-Gm-Message-State: AOAM532opxZo8TJ9uXXE7qJcSgMzsBhdxCvPpsPR0HOP0h1lK95mr1NJ 3lCnm8V91C3T/YFxMUzGIjjwBwR+TeM= X-Received: by 2002:a63:100e:: with SMTP id f14mr51578pgl.188.1628463407134; Sun, 08 Aug 2021 15:56:47 -0700 (PDT) Received: from localhost.localdomain ([191.84.233.71]) by smtp.gmail.com with ESMTPSA id t9sm22337491pgc.81.2021.08.08.15.56.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Aug 2021 15:56:46 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Aug 2021 19:56:12 -0300 Message-Id: <20210808225612.11600-3-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210808225612.11600-1-jamrial@gmail.com> References: <20210808225612.11600-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/h264_slice: use ff_h264_replace_picture when updating thread contexts X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: FfEiTsYWWv5H Signed-off-by: James Almer --- libavcodec/h264_slice.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index a31e804620..0d7107d455 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -379,19 +379,15 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->droppable = h1->droppable; for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) { - ff_h264_unref_picture(h, &h->DPB[i]); - if (h1->DPB[i].f->buf[0] && - (ret = ff_h264_ref_picture(h, &h->DPB[i], &h1->DPB[i])) < 0) + ret = ff_h264_replace_picture(h, &h->DPB[i], &h1->DPB[i]); + if (ret < 0) return ret; } h->cur_pic_ptr = REBASE_PICTURE(h1->cur_pic_ptr, h, h1); - ff_h264_unref_picture(h, &h->cur_pic); - if (h1->cur_pic.f->buf[0]) { - ret = ff_h264_ref_picture(h, &h->cur_pic, &h1->cur_pic); - if (ret < 0) - return ret; - } + ret = ff_h264_replace_picture(h, &h->cur_pic, &h1->cur_pic); + if (ret < 0) + return ret; h->enable_er = h1->enable_er; h->workaround_bugs = h1->workaround_bugs;