From patchwork Fri Sep 25 14:43:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22580 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 7880D44B0B7 for ; Fri, 25 Sep 2020 17:43:40 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5A36468B5AB; Fri, 25 Sep 2020 17:43:40 +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 ECE88689C7E for ; Fri, 25 Sep 2020 17:43:33 +0300 (EEST) Received: by mail-qk1-f196.google.com with SMTP id w16so2974403qkj.7 for ; Fri, 25 Sep 2020 07:43:33 -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=lhoezBc5WumKgwCS+HpSoHOYVrV6Ln6eTYojdoiY/Kw=; b=WQ8tQyQGflWimE6bn9V3xPqWkEdyZIR+cjIKz8WtV0jH9eiUqOT36JIy645x9cB/+X b7vIBt6g9eGXQQzZXiCFK5P+meNpOZy8bro8S7dir+3mL0nVMyK2JWcJ7Oo8YENCDTYi RFxzgBFfnoPfZSjDQT787unqCC/tGZGbP7eStJTJwGgmgXxG1T4jnTRI3BE4OOLsII9T aBtYWKVEW1XC5aHM0aZpJ1THV/gQez8VU9kcXTuyMsmTNtXIXecCIKKRcH81UwHaI0ag PMHjcrSMvJtfz8tRQxEfsxhLJhhB9LgPUMfbu9zmEiE8jIUmuKjN0bSnBsx5svXVsItj D5Qg== 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=lhoezBc5WumKgwCS+HpSoHOYVrV6Ln6eTYojdoiY/Kw=; b=iAq6MTAgWrpUYWim6wwh5OFr6cr9AJf+z8vwPyVDxYJ/O2Udz05sUfETHGjyYG92gi d2Vnch2hAmwKQPbrLPxdnyG6zLNnSGIeoDLlPc44+ATCEB5YrrdhoeE8vmCX5tcCJMbg RKUeydpqm5XOj6lSHg8lP25dI1WFd67NFd7QFZ664fUboDoQJ4Ua8EAAO6hI94FHGJBW ArhzF8JKIOq835cEGU159ArvnLoPCNkqemc6ImZPUXlQX1TA+znRmeNINengsIM8FF2L a1CgcYvHaY2s6w9bYr8e+06g3Lr8O0KCOxo8qMLlVPyTsGVSis4PeRDE08seJ3vS8A5y 1cNg== X-Gm-Message-State: AOAM5300vnBqIzQkWaFSoomK8+gwDXyCCmLSqx59Ppw8gRCwm2ZIBp0h cX/xASC8AY/wJlgUNO1iYrKFQwbShic7jg== X-Google-Smtp-Source: ABdhPJzBxESuzVHAWeQMeFLOKIpNOgBpF85BTmeZZ+r8O8H4OvZJrq7rZAnAcRlrkkwG0+Adnvy6dA== X-Received: by 2002:a05:620a:7f6:: with SMTP id k22mr273069qkk.337.1601045011961; Fri, 25 Sep 2020 07:43:31 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:30 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:11 -0300 Message-Id: <20200925144318.6194-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/8] avcodec/cbs: add a flush callback to CodedBitstreamType 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" Used to reset the codec's private internal state. Signed-off-by: James Almer --- libavcodec/cbs.c | 6 ++++++ libavcodec/cbs.h | 5 +++++ libavcodec/cbs_internal.h | 3 +++ 3 files changed, 14 insertions(+) diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c index 7c1aa005c2..c8c526ab12 100644 --- a/libavcodec/cbs.c +++ b/libavcodec/cbs.c @@ -112,6 +112,12 @@ int ff_cbs_init(CodedBitstreamContext **ctx_ptr, return 0; } +void ff_cbs_flush(CodedBitstreamContext *ctx) +{ + if (ctx->codec && ctx->codec->flush) + ctx->codec->flush(ctx); +} + void ff_cbs_close(CodedBitstreamContext **ctx_ptr) { CodedBitstreamContext *ctx = *ctx_ptr; diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h index 3a054aa8f3..635921b11e 100644 --- a/libavcodec/cbs.h +++ b/libavcodec/cbs.h @@ -236,6 +236,11 @@ extern const enum AVCodecID ff_cbs_all_codec_ids[]; int ff_cbs_init(CodedBitstreamContext **ctx, enum AVCodecID codec_id, void *log_ctx); +/** + * Reset all internal state in a context. + */ +void ff_cbs_flush(CodedBitstreamContext *ctx); + /** * Close a context and free all internal state. */ diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h index d991e1eedf..faa847aad3 100644 --- a/libavcodec/cbs_internal.h +++ b/libavcodec/cbs_internal.h @@ -117,6 +117,9 @@ typedef struct CodedBitstreamType { int (*assemble_fragment)(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag); + // Reset the codec internal state. + void (*flush)(CodedBitstreamContext *ctx); + // Free the codec internal state. void (*close)(CodedBitstreamContext *ctx); } CodedBitstreamType; From patchwork Fri Sep 25 14:43:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22586 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 6A6D944AD03 for ; Fri, 25 Sep 2020 18:05:37 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F66668B6AA; Fri, 25 Sep 2020 18:05:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F107E689AE3 for ; Fri, 25 Sep 2020 18:05:30 +0300 (EEST) Received: by mail-pg1-f193.google.com with SMTP id g29so2842418pgl.2 for ; Fri, 25 Sep 2020 08:05:30 -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=Sf9Z4f+5STWqAxOzNS2yAJVPmBjuTNzwgLMJAhFZLHc=; b=PJU1dr1DUhdLU0Qbw69HNt10bYb2omGeF/kFAX8d7qqh8XkhdP8dsSarG1XKcN5Sk+ Cfxhxi0JswUaYL66GtiUZNLbv2VkKNXM0ElTPjHYCmYomQVzGO0/qlXhZFF1NlFF7WmW 55gPRDHw9UR0vgobQBa5bk0ufaOjILq6l3TT/vNtVovcFiZFdKSgvhKjjLVoULwDBW0w c8PhhW0Yelm0tGxDHjRt3FeOrGRrpm1pFyaBemnI91aHl9e+tGEU2GQ87nZDqb+4SgvE TX/vvLpmsUUsPf4X6GUNgQcKfr/MMsn2RMam8NqxwsUGKxRQZgbQVQ2Z/9EbioGeZw5B Jj2A== 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=Sf9Z4f+5STWqAxOzNS2yAJVPmBjuTNzwgLMJAhFZLHc=; b=WZY1Q1RsdvNP8zXLQah0Xs0SkC3+o3wYlBRZs7mKYWfGndWVO+nNBmBrdsN2ikE0FM rpw1yh2Npx6bchbICcW/hYc757j87mDzlZrNEpmpsRVUbCiFKYIVcAC0pUa0oyQxHIqX hGMd6nRFYuRXzfn9o1VhOKH7VqALlkcvvS846zIki3rua6osrSTYVR6IiNDZGp11swMG sK3oPwvUiyxrU72WvZ6zN1bbtmdDYqEKq3Q9jGaddE2p3DyxE/nEYrRc28316s11/UXc GP4322cmUlZfE13V6PQY1bNWJMQVvXWa8me1j+lqol0RM1sHdb9YKMYFTl63BBlfdyBt 92fA== X-Gm-Message-State: AOAM533X7GYl7L3pFCqXCR9DpBc1pKqPaL12W6SH89Ej5bI0/dKo9kaG NG8zT1JpbZZlOPu83I0+OId+kPy6bcycWQ== X-Google-Smtp-Source: ABdhPJyEKY5aoe5ef9axW2nkmI2yZBylA2Y4a2owRqADTAu5Dq2yHgHI8PBXnLnpY+dxUv9AXRX3jA== X-Received: by 2002:a05:6214:d6b:: with SMTP id 11mr4922711qvs.30.1601045013566; Fri, 25 Sep 2020 07:43:33 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:32 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:12 -0300 Message-Id: <20200925144318.6194-2-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/8] avcodec/cbs_av1: implement a CodedBitstreamType.flush() callback 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 --- libavcodec/cbs_av1.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index dcf6c140ae..65cf45fcfa 100644 --- a/libavcodec/cbs_av1.c +++ b/libavcodec/cbs_av1.c @@ -1194,6 +1194,19 @@ static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx, return 0; } +static void cbs_av1_flush(CodedBitstreamContext *ctx) +{ + CodedBitstreamAV1Context *priv = ctx->priv_data; + + av_buffer_unref(&priv->frame_header_ref); + priv->sequence_header = NULL; + priv->frame_header = NULL; + + memset(priv->ref, 0, sizeof(priv->ref)); + priv->operating_point_idc = 0; + priv->seen_frame_header = 0; +} + static void cbs_av1_close(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; @@ -1250,5 +1263,6 @@ const CodedBitstreamType ff_cbs_type_av1 = { .write_unit = &cbs_av1_write_obu, .assemble_fragment = &cbs_av1_assemble_fragment, + .flush = &cbs_av1_flush, .close = &cbs_av1_close, }; From patchwork Fri Sep 25 14:43:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22587 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 75D8044B053 for ; Fri, 25 Sep 2020 18:06:26 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E6ED68B6AA; Fri, 25 Sep 2020 18:06:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE70A68AE53 for ; Fri, 25 Sep 2020 18:06:19 +0300 (EEST) Received: by mail-qt1-f194.google.com with SMTP id k25so2143880qtu.4 for ; Fri, 25 Sep 2020 08:06:19 -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=OZyJ6HrGq3ndBr8jJnZs7m+N8LjdHWLrpT6cNG4Pzd4=; b=VZfY1ogaA1JWEwl1eDYnr116mLV+RBtqViPiZqw28j0t7t+5ncRTZnSDxRrW7WkCXn 37E42w/b+rD5xrzT0JYIvGPqwb/q44SaLjZ671Fh+6CrCbE6URyKaYvRR9j2daXvsFaQ bk23Fp9Hb93+n9kQLyHJbctHBNx7ZHYCdAn1FsjPSqhrtzsN+GUWLb+62wza5tEZB3J8 q5TuJUhdAAO8TEGb2jW8BeGiZYnk89Gy56tt7rxgtcsBG8UuqEdRIYbl9nW29s/kiYde h+6xSBfr1nqVTJn6Ab+7FpJW232mmTaiU7Jzv1AIyZz6AV3T7ULc/7Z2+3ZT+e6JcN/j UTpQ== 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=OZyJ6HrGq3ndBr8jJnZs7m+N8LjdHWLrpT6cNG4Pzd4=; b=uc4gUfoXNT7MiSlsG/hWpZaP6hkN/5gbWDyQkhcHFnkc3mQBDUuhVhmNfF0CLZCaVe CHzrPbHPds37P/DpOpwJ9YDkQPo+viLPxORG4mABa/oPvfGTlIYEGXgsnHZlRfABm11f OVH4p5Mph8qqUCxn+1WygAlV+Oy0TU/1CBwDI/Pr1Jtdy5CAzWEMvXEqquuoxyKcQzLF AfYn0fBhf87dGE/6VIu4xnpye1MoHGK+4DqUuSTdepENQDyWkvLR9drjZsQuxofZT76y oo5PE0bteMwxpcniE4XckwGY6a3yeiHkDhsuNIVvwiwsuOLFo5PjxdwJ9Wbxz50DABBR trxw== X-Gm-Message-State: AOAM533yyAhSj0g+LizXaYiqAPOwF68n0pjpuYcl62RCHplJXAIDW373 kqXI5Lh4KtJCCxBtIAueIvtL3RfO2n5wkQ== X-Google-Smtp-Source: ABdhPJysXDiMIGMXCNluLvCx0p1Ic7UstNufFs/Q3be+VNS9Pl8C+UxHHnnjIev64OfKDgEkk3NoLQ== X-Received: by 2002:ac8:7003:: with SMTP id x3mr4667755qtm.206.1601045015349; Fri, 25 Sep 2020 07:43:35 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:34 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:13 -0300 Message-Id: <20200925144318.6194-3-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/8] avcodec/cbs_h2645: implement CodedBitstreamType.flush() callbacks 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 --- libavcodec/cbs_h2645.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index b9233f4df7..b6d77dd17f 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1296,6 +1296,24 @@ static int cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx, return 0; } +static void cbs_h264_flush(CodedBitstreamContext *ctx) +{ + CodedBitstreamH264Context *h264 = ctx->priv_data; + + for (int i = 0; i < FF_ARRAY_ELEMS(h264->sps); i++) { + av_buffer_unref(&h264->sps_ref[i]); + h264->sps[i] = NULL; + } + for (int i = 0; i < FF_ARRAY_ELEMS(h264->pps); i++) { + av_buffer_unref(&h264->pps_ref[i]); + h264->pps[i] = NULL; + } + + h264->active_sps = NULL; + h264->active_pps = NULL; + h264->last_slice_nal_unit_type = 0; +} + static void cbs_h264_close(CodedBitstreamContext *ctx) { CodedBitstreamH264Context *h264 = ctx->priv_data; @@ -1309,6 +1327,28 @@ static void cbs_h264_close(CodedBitstreamContext *ctx) av_buffer_unref(&h264->pps_ref[i]); } +static void cbs_h265_flush(CodedBitstreamContext *ctx) +{ + CodedBitstreamH265Context *h265 = ctx->priv_data; + + for (int i = 0; i < FF_ARRAY_ELEMS(h265->vps); i++) { + av_buffer_unref(&h265->vps_ref[i]); + h265->vps[i] = NULL; + } + for (int i = 0; i < FF_ARRAY_ELEMS(h265->sps); i++) { + av_buffer_unref(&h265->sps_ref[i]); + h265->sps[i] = NULL; + } + for (int i = 0; i < FF_ARRAY_ELEMS(h265->pps); i++) { + av_buffer_unref(&h265->pps_ref[i]); + h265->pps[i] = NULL; + } + + h265->active_vps = NULL; + h265->active_sps = NULL; + h265->active_pps = NULL; +} + static void cbs_h265_close(CodedBitstreamContext *ctx) { CodedBitstreamH265Context *h265 = ctx->priv_data; @@ -1480,6 +1520,7 @@ const CodedBitstreamType ff_cbs_type_h264 = { .write_unit = &cbs_h264_write_nal_unit, .assemble_fragment = &cbs_h2645_assemble_fragment, + .flush = &cbs_h264_flush, .close = &cbs_h264_close, }; @@ -1495,6 +1536,7 @@ const CodedBitstreamType ff_cbs_type_h265 = { .write_unit = &cbs_h265_write_nal_unit, .assemble_fragment = &cbs_h2645_assemble_fragment, + .flush = &cbs_h265_flush, .close = &cbs_h265_close, }; From patchwork Fri Sep 25 14:43:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22584 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 3BDD54498BF for ; Fri, 25 Sep 2020 17:50:27 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 15FC768B669; Fri, 25 Sep 2020 17:50:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDDD068ABC3 for ; Fri, 25 Sep 2020 17:50:19 +0300 (EEST) Received: by mail-qt1-f193.google.com with SMTP id v54so2075222qtj.7 for ; Fri, 25 Sep 2020 07:50:19 -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=TBipnZE1WFpCtiG/OOy3XcAZXfSDT22LANAgfeE5P94=; b=TvuHw9eplJ9q3WCvwu3x1NwvNDwOJby6NZ/Ja52MPFILiw6R0MLzaZ1lkulwrtHbBr s4qnrvK0/BGTMHq8MRnPjWz1ka3AVmHzBfRX19jIVld2ei7Ix1nD9GktYKpaBoO1GV3T +GKxV7TniG8jtlHZCAB/gcsh1eueOQG65eGPDr1V8viHNI/A5RMOiOTv76h560rIhKR8 BwjsZAyFJ7Rv679JOV7LuJyR8c/KWS4F4xezg0pYTXqIHBozUfSxdyZqj59zNgZyppO1 ew17TKoqa8rUeM+SlqVp7SgU4tFoumcQneu2SvaGZBaIjhzz76meq3+Nyx5TZnhhvUZe eyQg== 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=TBipnZE1WFpCtiG/OOy3XcAZXfSDT22LANAgfeE5P94=; b=XKw62H+ltYrIenre7XqkCT63FDP1wLGJSGI3NkWEnkTHSL61Yc5lAxTWGu/u2FRRdJ HYKKEjRolJLJFHUApV2+yPBVAJXH351n7k6hAclvJu+631oC1WAYBSINGz4VjHjEy4Vx gtcainSI/kksGPpN05STvCh6qFYFMLmYSkuFspCUs1u5XmuHdTjJqeHTKHooPyPbco9s EdR1BsbmFUFlo3/qJ8cCOTh+jhJanDN+xQNuFaGMJ+Wn7VCkSABjvFaMi/RNI+bu+dVL AU4GQHsy8QTXlFqQs7YxQDo05UTFzI19m9RlKTrbf64ejmFxcn3J2nSl4kEI9bJAQ6A/ NO0Q== X-Gm-Message-State: AOAM533ayTJs+vPI2c3sPSIeb7jOU+VxxrGPXXEoMU7YzI1+ZDSB7BH2 s8ewpxGr4bMPjBgn1gJeU8QrYTy+wUwJ2w== X-Google-Smtp-Source: ABdhPJw65+167XWRBcfA8bIhjvgTo5PAYFMmMv6Nh7hyqSrs9Ok/afkTb+ZcP75oJgOX/yefj7sX9w== X-Received: by 2002:ac8:863:: with SMTP id x32mr4612221qth.27.1601045019592; Fri, 25 Sep 2020 07:43:39 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:38 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:14 -0300 Message-Id: <20200925144318.6194-4-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/8] avcodec/cbs_vp9: implement a CodedBitstreamType.flush() callback 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 --- libavcodec/cbs_vp9.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavcodec/cbs_vp9.c b/libavcodec/cbs_vp9.c index 6a480b4ce3..e0b8c02ac2 100644 --- a/libavcodec/cbs_vp9.c +++ b/libavcodec/cbs_vp9.c @@ -634,6 +634,13 @@ static int cbs_vp9_assemble_fragment(CodedBitstreamContext *ctx, return 0; } +static void cbs_vp9_flush(CodedBitstreamContext *ctx) +{ + CodedBitstreamVP9Context *vp9 = ctx->priv_data; + + memset(vp9->ref, 0, sizeof(vp9->ref)); +} + static const CodedBitstreamUnitTypeDescriptor cbs_vp9_unit_types[] = { CBS_UNIT_TYPE_INTERNAL_REF(0, VP9RawFrame, data), CBS_UNIT_TYPE_END_OF_LIST @@ -649,5 +656,8 @@ const CodedBitstreamType ff_cbs_type_vp9 = { .split_fragment = &cbs_vp9_split_fragment, .read_unit = &cbs_vp9_read_unit, .write_unit = &cbs_vp9_write_unit, + + .flush = &cbs_vp9_flush, + .assemble_fragment = &cbs_vp9_assemble_fragment, }; From patchwork Fri Sep 25 14:43:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22581 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 577C744B0B7 for ; Fri, 25 Sep 2020 17:43:49 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4190F68B5CB; Fri, 25 Sep 2020 17:43:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC4E268AA33 for ; Fri, 25 Sep 2020 17:43:42 +0300 (EEST) Received: by mail-qk1-f195.google.com with SMTP id d20so2986063qka.5 for ; Fri, 25 Sep 2020 07:43:42 -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=7w84hQZb3a2qIp2UGWeUaIOfottrVhjpeJBuh9aFqNY=; b=GLp9G3i0/dmyxOg6xeZ4Z6ibRWSD46WMy4gb7lrWdkGgcJ3cdvqzzvVnBP2Vh0tov4 izvxtV5BvOK2v+hWb5Cp1Pmf7vVFCf6BwpoefHfSe0ZSzmXlGxkl+fD/p8ax89AdZCqR wCLreKMJVr0IvPCS40Pq4Inv6/iXIE4+vORskoiLr+ZvWBKw32pp+2+AcNGfeIfuc1Bl Xw7QmbmF0mlnY6TC6OVz/K2UGTgqk7WWP2gml/+CAb8DS1OQVI2K075Pfc/tj+dhHeFw xqykll4ScmrZK1MuEXdRIX7rQD3HttI25vDIMDwzE8ZAXBdvPMZkVKNTlSgxMqKaSO6G 8mqQ== 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=7w84hQZb3a2qIp2UGWeUaIOfottrVhjpeJBuh9aFqNY=; b=nzK+T3+JcufIIvucVC1TjDAcln9g7Cdquleq0UF22V+72kQ1+HJxfQ0regEFtOeeVn d8Ze57AY527qnyC8C9J5JyaC9+4+Zt7eyaYfYTyZNqZ/B4LVIuExzsPLzJnMOGm9PXEh K67NqEHQGIG0wMwOMAZ9Wh/ciqGpz5a/fVkb/XrlYCrjPs1NJdc5v3yUQAU+lVMrVJ+e mgc4O/R9qT94F/2Whdcx9l01ok//RVTrjAQn0+6hRKaW5KIPAlrs79ist2RxXpp9ocI7 wWpwQxFIisezYm0/w4aw4hK571wOMvm7B3dOGGplAT+tE6iZClkUuqM8+Fp/Ze6+54Bv 4w3A== X-Gm-Message-State: AOAM5316ugupZ6FF/h14FLm19fnw4kukZrFPYjsRYPhr9uxl7gQPyq4N 0uHAF6yiNuFH+A1ViGsnf9JJeeBSVRLk8A== X-Google-Smtp-Source: ABdhPJxM6qwjAL9P3P2Rb7ZNxGsy4vebY90cERjAIvhB5G6pBESZ2XdMqlkn+Cd8a1MFL7Wewtf0DQ== X-Received: by 2002:a05:620a:4c3:: with SMTP id 3mr304764qks.105.1601045021475; Fri, 25 Sep 2020 07:43:41 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:40 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:15 -0300 Message-Id: <20200925144318.6194-5-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/8] avcodec/av1dec: parse dimensions from the sequence header in extradata 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 --- libavcodec/av1dec.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 0bb04a3e44..f6b9fbbac3 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -405,6 +405,9 @@ static av_cold int av1_decode_free(AVCodecContext *avctx) static int set_context_with_sequence(AVCodecContext *avctx, const AV1RawSequenceHeader *seq) { + int width = seq->max_frame_width_minus_1 + 1; + int height = seq->max_frame_height_minus_1 + 1; + avctx->profile = seq->seq_profile; avctx->level = seq->seq_level_idx[0]; @@ -423,6 +426,13 @@ static int set_context_with_sequence(AVCodecContext *avctx, break; } + if (avctx->width != width || avctx->height != height) { + int ret = ff_set_dimensions(avctx, width, height); + if (ret < 0) + return ret; + } + avctx->sample_aspect_ratio = (AVRational) { 1, 1 }; + if (seq->timing_info.num_units_in_display_tick && seq->timing_info.time_scale) { av_reduce(&avctx->framerate.den, &avctx->framerate.num, From patchwork Fri Sep 25 14:43:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22582 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 4200844B0B7 for ; Fri, 25 Sep 2020 17:43:51 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3025768B66C; Fri, 25 Sep 2020 17:43:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D615A68B669 for ; Fri, 25 Sep 2020 17:43:44 +0300 (EEST) Received: by mail-qk1-f193.google.com with SMTP id q63so2996460qkf.3 for ; Fri, 25 Sep 2020 07:43:44 -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=X+n80oUSlWBIQ8y3xYTfe38ggKWEPlHdcRxYqvd3aq4=; b=j0LUgFLo0CzPpRyROcXOMVMzvRSH9Wk4KYEuiTauK0NYQ46kueAsaMkMn0xH0eFtqA tao1kGWnMN6VlhsMad/aVHdrGOyWHE1kjVLuSWCXQNTKdYHGWpydXzLWgao9Ai5z6Rxd SuGtadKgzZ5r73vPKM+Q+/deQGj4x1NWt6bkqEbojOJpv/Dr57eFKNQVoX/zYDiYHC3P RcY+ADYSlEpLs+hTKwIEgdRjVXPpWDNXJ0AV1gcnhHu5BrGDLr3dp7M5YrLiKVj/6KbK Phl+NOFn5qz5QFm9cR5ihkrNQyaArokw/NDNHn9voDXSpppEqjzs7nVyAOdqXRmCLtng gTIg== 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=X+n80oUSlWBIQ8y3xYTfe38ggKWEPlHdcRxYqvd3aq4=; b=G3xB9uDLpYTe5DoZVjI3T/OLbgxVpk05YI3wDLidibP1eRwhb/fmGGzKAHH9Qt4JuC WLwH7Q6v5V66ylukxrDF3fn5eWROvv0/673Din4BAuNj9MalTirEjaRZVOppWxw6oQnj UWEUplwCsLLJh4/lSBuUC3cZ4ezi3QVvxmdAiExJJluQ7TiUpquy9jDWKxLw3o/r8Gox EYsWutCMKsHQ4mP+fd6FEO5DHZy/pPT8DKkY+UNJT9LGU6cLpSqnxvggSAbxzdDSu4Hh NptI2zwAZmbUouuNpLDNkJ4MsqHw+d4jXlaY2kIStlTskUdMfk2hW62kRzWG/Ke1dSMv riow== X-Gm-Message-State: AOAM530ImJoubH+x7doH0kjXjQA5e+VOV2giKYhGKdbO7H07Reyy3rYD hIy3N9KxkFGfQ8yTLCFhy4utTchgKnyBGQ== X-Google-Smtp-Source: ABdhPJyJDer7bdghdeVsQtiPErNiE7MRKZFvzabbCrCIs5JHqp5EtON/WLRnU8Nj8TixED2U12idKA== X-Received: by 2002:a37:4a57:: with SMTP id x84mr289581qka.17.1601045023176; Fri, 25 Sep 2020 07:43:43 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:42 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:16 -0300 Message-Id: <20200925144318.6194-6-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/8] avcodec/av1dec: fix check for active sequence header 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" We clear the AV1RawSequenceHeader pointer on flush, not the relevant AVBufferRef. Signed-off-by: James Almer --- libavcodec/av1dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index f6b9fbbac3..a30a496b4c 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -713,7 +713,7 @@ static int av1_decode_frame(AVCodecContext *avctx, void *frame, // fall-through case AV1_OBU_FRAME: case AV1_OBU_FRAME_HEADER: - if (!s->seq_ref) { + if (!s->raw_seq) { av_log(avctx, AV_LOG_ERROR, "Missing Sequence Header.\n"); ret = AVERROR_INVALIDDATA; goto end; From patchwork Fri Sep 25 14:43:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22585 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 46986449C54 for ; Fri, 25 Sep 2020 17:51:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E4F168B6A0; Fri, 25 Sep 2020 17:51:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 10E8968B66C for ; Fri, 25 Sep 2020 17:51:36 +0300 (EEST) Received: by mail-qt1-f194.google.com with SMTP id y11so2071752qtn.9 for ; Fri, 25 Sep 2020 07:51:36 -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=4qnKlFidj25/7uppe9A+SXGv/nme2Nrdgvj6zvumAA0=; b=le5KlnNHo54n9MxDPQAxSAQ6NSQ7Qejv+ywKb4uU/blprjuKSHPY9jYbwFZ6+BOyl6 eY0//IfuziU81E/ZEVVSIi8H4GDRORNk3rhl1BMZDiicJ4SD/GOYf1Y0KZx2YRL+jIg+ /KQh3pDqJy4IZDAerX06hcTmqjnXmtizXO5kogTw2EX4HnVvNv125eWss1pKccrChPjc ltESjmQ+80k5OrTCsSvn6fCwvYThRqv9mSxpUpbDvzuZ2mXefaWF8OWsajDQ/c0d6PeX X/PVrKdS7tX4KnFOG/QbGkM5BYHkvAPja9Dl8b1skQztc8JXuJrzG6afaRyAo2c/3Kq9 7tLw== 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=4qnKlFidj25/7uppe9A+SXGv/nme2Nrdgvj6zvumAA0=; b=Hq/WssrzZLU636Xe52oGp9GIvX8fplHhVWFk8hQ+E46qIVFqpCc9GDOCm+5Irzt4Mv pwKW0ZbmZ0kOou8LCzZ16E0E/OU7jm/+6XRSbu6sn33WzPA5O8/jS+VxrtDVPlzz868d kjFf/iLY6DWEECYi1JxloAmFgDRCUL4cBj/k6q+39Fzt9qDHJxvSFfUCp3tbxhxlo28A /xeUeybqiyrtqgNkEnHbOt1O82P4IYHnUc+7STQEEayfcSympk0ty4zApj5Ux08TDaNG INGBaECGlCxHuJ+hFyGgKktS50akXg9xImRzy8bkAXYI6Q8YSqXPeUhvRCUXb/zglO1M G2xg== X-Gm-Message-State: AOAM532PI93bY0L8WendydLOK8VXRy6JD1NyOd7sEfxBpvuiZdO3YNb/ 4l3ynazlihaY2gbkNC3KdaeuOV0CNSkOZQ== X-Google-Smtp-Source: ABdhPJwcgNPjdUCvdBxSnI5Jrik+vcpzS2pjJRCfAI2qYlGZ+l39XcShxCQ4RhmK0CEL5jUakYnJTA== X-Received: by 2002:ac8:3704:: with SMTP id o4mr4352921qtb.330.1601045024895; Fri, 25 Sep 2020 07:43:44 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:44 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:17 -0300 Message-Id: <20200925144318.6194-7-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/8] avcodec/av1dec: call ff_cbs_flush() on decoder flush 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 --- libavcodec/av1dec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index a30a496b4c..07026b7aeb 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -854,6 +854,8 @@ static void av1_decode_flush(AVCodecContext *avctx) av1_frame_unref(avctx, &s->cur_frame); s->raw_frame_header = NULL; s->raw_seq = NULL; + + ff_cbs_flush(s->cbc); } AVCodec ff_av1_decoder = { From patchwork Fri Sep 25 14:43:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22583 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 01B2D44B0B7 for ; Fri, 25 Sep 2020 17:43:54 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E5B5668B669; Fri, 25 Sep 2020 17:43:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f170.google.com (mail-qk1-f170.google.com [209.85.222.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F0F268B48C for ; Fri, 25 Sep 2020 17:43:48 +0300 (EEST) Received: by mail-qk1-f170.google.com with SMTP id c2so2953613qkf.10 for ; Fri, 25 Sep 2020 07:43: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=OwhDz9tlM5pCUaqnTvTA5HwYzpzT5yBGRR2SOTDM1N4=; b=VLMrwWyggJMiS4nZMf5nOKykuZchxmlUoRght49YjrmqyQMgA7dEkwZbxeR3fZ6SZl T3A7L14wzt9fLhYz3sUvQgpS4wG2MBC47ZNfFwpIIMGWQjILk06LTEu+/138zLpfa5rL /X+7LV/BqHWHaHRTJgnYTjRk8MmxZraOB4EoUN/e2FKldn7/k1iRGsMQ92o+PtUkl6Vs kWjfABrBh1Dj77xZ4BnIEkn3z3tNq671+SfJHvd5YZUKfFVwQDf8Tpb4+m7T650HdONs 7DZEe9VT4xi8UEkARL2xDWrhmoPc7t4ySFnyFGFihdDpM9Q+a+GHi4Ry4L/GL/ZClByq 9BWg== 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=OwhDz9tlM5pCUaqnTvTA5HwYzpzT5yBGRR2SOTDM1N4=; b=e7S5lhBbWxSm4OyqnyFmRoOwuKMq9TbH2Ipa2LBsYLGwDYFpQMstU8dpuVf1Iv1TLG JGek7i36W/LxP9OlTEeTPM0qRvv64Sxq7ZAnKDtDCaDh747LhK8YunS4hGY4+dTUiCjS 5HgcXxzk+oSz7ftfBAOZ0eOHP+CyQoJd2x8QG70wYr5KkP8vaxSqQbGusxEAZMj3LXFY /QELaE6FoSG9RAC4CjHQj3jSgTd23hqas7nuy7XjVeDPY6/GazSnJo84nn5Qgzu3SzEQ jUSMNLpiUy/veUFIPaLJ71Obd0lXQ79phjGsaxkW9hPFquEqAul+ixloKbt9bev4upWG aMyA== X-Gm-Message-State: AOAM533E+YiXpeSUuDaC6TzKCfZ0i7pP/W7MrVvWifLitn4Qjpk/8hfF FHvt1f6uG73KWihj0T48M16NwV75VByvzQ== X-Google-Smtp-Source: ABdhPJx0GCKhWJOBl1KC5BvsweFRYm0E45sDRTvr9HDrL8fo5se7sRzGPVhBuZEf1Iids+zlT3+YNA== X-Received: by 2002:a37:64d4:: with SMTP id y203mr276631qkb.359.1601045026549; Fri, 25 Sep 2020 07:43:46 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.67]) by smtp.gmail.com with ESMTPSA id x126sm1792498qkb.101.2020.09.25.07.43.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 07:43:45 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 25 Sep 2020 11:43:18 -0300 Message-Id: <20200925144318.6194-8-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200925144318.6194-1-jamrial@gmail.com> References: <20200925144318.6194-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 8/8] avcodec/av1dec: clean state on frame decoding errors 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" Fixes: member access within null pointer of type 'TileGroupInfo' (aka 'struct TileGroupInfo') Fixes: 25725/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AV1_fuzzer-5166692706287616 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: James Almer --- libavcodec/av1dec.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 07026b7aeb..e5cfc3f2f2 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -381,6 +381,20 @@ fail: return AVERROR(ENOMEM); } +static void av1_decode_flush(AVCodecContext *avctx) +{ + AV1DecContext *s = avctx->priv_data; + + for (int i = 0; i < FF_ARRAY_ELEMS(s->ref); i++) + av1_frame_unref(avctx, &s->ref[i]); + + av1_frame_unref(avctx, &s->cur_frame); + s->raw_frame_header = NULL; + s->raw_seq = NULL; + + ff_cbs_flush(s->cbc); +} + static av_cold int av1_decode_free(AVCodecContext *avctx) { AV1DecContext *s = avctx->priv_data; @@ -841,23 +855,11 @@ static int av1_decode_frame(AVCodecContext *avctx, void *frame, end: ff_cbs_fragment_reset(&s->current_obu); + if (ret < 0) + av1_decode_flush(avctx); return ret; } -static void av1_decode_flush(AVCodecContext *avctx) -{ - AV1DecContext *s = avctx->priv_data; - - for (int i = 0; i < FF_ARRAY_ELEMS(s->ref); i++) - av1_frame_unref(avctx, &s->ref[i]); - - av1_frame_unref(avctx, &s->cur_frame); - s->raw_frame_header = NULL; - s->raw_seq = NULL; - - ff_cbs_flush(s->cbc); -} - AVCodec ff_av1_decoder = { .name = "av1", .long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"),