From patchwork Wed Aug 12 18:25:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 21613 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 BAAE544BA80 for ; Wed, 12 Aug 2020 21:52:56 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 91BA368B525; Wed, 12 Aug 2020 21:52:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 910BC680D52 for ; Wed, 12 Aug 2020 21:52:49 +0300 (EEST) Received: by mail-pf1-f196.google.com with SMTP id x25so1479295pff.4 for ; Wed, 12 Aug 2020 11:52:49 -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=6P1flQhi6RhQSw1g/BMjyxdUFytBd8uo5JBYieGCggo=; b=DSNJl1m0nDhvGDjVZ6cvqE+vnjP6vUa2KPktI+vNBbGyJKwBXN6IPhtOsSkTtFMr33 uL346UjAcf6vzkY45uwB8gkCq4G+thEjGJXP9iNHs75TxHK2oWHmiIFnp3Ku1Bk+Y30b wwW13KEf91++NgRywonbV/KcTh7+31rRFaisC0/hXswcpDuT2IxUbIiuariZXTRAD7Md ZaDRvwaJxRDxherDPKx252l/3EFaz0KXHKUZHfvgkEarESUH+KAzspskazil3EI0VkcP V0zE9qc/7CZuRPsiwKomWE+b5qimDvT8WL9/sLmk5BlQhjA1DNHavvhUpnz3ZpPgdwKO OgiQ== 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=6P1flQhi6RhQSw1g/BMjyxdUFytBd8uo5JBYieGCggo=; b=o0jxi0hIBjejfXCmAhcV3ycZjSvrdKQOyXT4XsQXnEZVkyaJMCVD+hz/10VjMV8XbS I2Rkdit/9y+AajmalO5LpiVmuLxJ2VOzpKWom6MCGecjEQuPg3vYeWsBurbckjh3I6Ez 7T/scG+cta4oDek0uemS6NJi3ogsr+X+zceJ+/r5bY/WTQKpA3DsdshGLgECTq0q4JG2 UcXsATeMN1NRMlTw4yjGzaYuZ3KrcbC92BPams7rg2ddk/NZQa0OoVe3IsQN9cluPPSP 6Ulg/A8qGkVXij7s0ldbWSQTHX/ZnhY4I1kUMQuN4HWJHGIav8r2wVxMV4yQ7dO/bY7q +kpQ== X-Gm-Message-State: AOAM531HIBwKrxCL1EwdXhh6d4R31Rg9pEv64cXP2l/IzqVkHJitrIBw sbwGFezp0qHO2W6aLtXqaoLpdKZgWm4= X-Google-Smtp-Source: ABdhPJxsc18Xr1cggByolrEQVuiNA9gfwYaozDsuQDcL3iNcP2OASukunqjDdbUvYIEWpQVMswVltA== X-Received: by 2002:a0c:e9c7:: with SMTP id q7mr892430qvo.195.1597256779876; Wed, 12 Aug 2020 11:26:19 -0700 (PDT) Received: from localhost.localdomain ([181.23.66.204]) by smtp.gmail.com with ESMTPSA id x29sm3266889qtv.80.2020.08.12.11.26.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2020 11:26:18 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Aug 2020 15:25:56 -0300 Message-Id: <20200812182558.14199-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/h2645_parse: always return 0 on successful h{264, evc}_parse_nal_header() calls 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" HEVC NALs are no longer being skipped based on their nuh_layer_id value since ad326379c6. Signed-off-by: James Almer --- libavcodec/h2645_parse.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 2e03871640..a7cdf76e87 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -287,7 +287,7 @@ static int get_bit_length(H2645NAL *nal, int skip_trailing_zeros) /** * @return AVERROR_INVALIDDATA if the packet is not a valid NAL unit, - * 0 if the unit should be skipped, 1 otherwise + * 0 otherwise */ static int hevc_parse_nal_header(H2645NAL *nal, void *logctx) { @@ -307,7 +307,7 @@ static int hevc_parse_nal_header(H2645NAL *nal, void *logctx) "nal_unit_type: %d(%s), nuh_layer_id: %d, temporal_id: %d\n", nal->type, hevc_nal_unit_name(nal->type), nal->nuh_layer_id, nal->temporal_id); - return 1; + return 0; } static int h264_parse_nal_header(H2645NAL *nal, void *logctx) @@ -324,7 +324,7 @@ static int h264_parse_nal_header(H2645NAL *nal, void *logctx) "nal_unit_type: %d(%s), nal_ref_idc: %d\n", nal->type, h264_nal_unit_name(nal->type), nal->ref_idc); - return 1; + return 0; } static int find_next_start_code(const uint8_t *buf, const uint8_t *next_avc) @@ -504,7 +504,7 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, ret = hevc_parse_nal_header(nal, logctx); else ret = h264_parse_nal_header(nal, logctx); - if (ret <= 0 || nal->size <= 0 || nal->size_bits <= 0) { + if (ret < 0 || nal->size <= 0 || nal->size_bits <= 0) { if (ret < 0) { av_log(logctx, AV_LOG_WARNING, "Invalid NAL unit %d, skipping.\n", nal->type); From patchwork Wed Aug 12 18:25:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 21611 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 0C1A8448F08 for ; Wed, 12 Aug 2020 21:26:30 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D98B268B529; Wed, 12 Aug 2020 21:26:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f195.google.com (mail-qt1-f195.google.com [209.85.160.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9BE8668AD55 for ; Wed, 12 Aug 2020 21:26:23 +0300 (EEST) Received: by mail-qt1-f195.google.com with SMTP id d27so2264368qtg.4 for ; Wed, 12 Aug 2020 11:26:23 -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=DIqaUc5Gb8Yg8r66TrEYjY/tFhfr09FTUWkLNSQKhw8=; b=AYMSCQfxJl64ld79HVyWKapA2f6wQ4QRwxH5IOgd+hmFbrTauttWzZCbFFUqFP4uhG QAjg/2Iq+JtGUSt015VsMRa7CXYN0EIpbM3PFLrfp4BP34OU8CTP5m/ar3vzXsZ51hc5 +z0zra+fU1zIhDyi0WCo/hjVx9xT9bxTXjiGh9+UnChVaEHnmRL1La81UFE9sNBdFW7f i2V2SUXZKP2VgM/OQvA4soSaMujGagEKvsNijaT4Dodk8r86KnfJ2wcR7V6qmeCeHv35 zZbzYvSn6qh4qdPFMz5xEwtfowE7er6I7gTCTqnlOrt6rHjWtTlkDAN7z4bpDBk4ev+2 8XDw== 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=DIqaUc5Gb8Yg8r66TrEYjY/tFhfr09FTUWkLNSQKhw8=; b=q0i1LXMQgP0blcFD4RZ6j/meme03bfUzRSyRGO6i6vaDOiedcY/cTiBD3rmgkE9bn5 R7aWE2nAKF412VslLO2KNket1hCR5b8UFXPD1T0XODLLuEqsOTarwbAILuClt5FGrdxd hlUH5vJ6XtkyWbPV2PXY3XmAtxYLkRRfzT3rFQEx3RJScAR+JExWeoy7xOcaGTBDy5Ke 3q+dxf6SPwZpNlSN/pJqkp4raSMqzBtyoS80J9S7DNGVFfqonBbU5pq9oigsF0J5C8fY o55IhuLV9GhOi8IwRM9HprUObjAq8+F5AaD8Mw+vOLBEUpNRatUqMpUFN+22QRAseCS1 5ICw== X-Gm-Message-State: AOAM531PdMgItnzFuQvNsEtn4Zqy4TCqIMQDxFJJcotTOKOoWnueGMWn 1rAdx7+LR9RW0W7BibMhArYURjtX X-Google-Smtp-Source: ABdhPJzomoRyzMsbwfZolCoCtShlbep1ITMxThBNNgiOToxSwQHkG4HuMYdZoghiiJjNc6DgH3GQSw== X-Received: by 2002:ac8:7b51:: with SMTP id m17mr1044874qtu.80.1597256781535; Wed, 12 Aug 2020 11:26:21 -0700 (PDT) Received: from localhost.localdomain ([181.23.66.204]) by smtp.gmail.com with ESMTPSA id x29sm3266889qtv.80.2020.08.12.11.26.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2020 11:26:20 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Aug 2020 15:25:57 -0300 Message-Id: <20200812182558.14199-2-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200812182558.14199-1-jamrial@gmail.com> References: <20200812182558.14199-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/h2645_parse: skip empty NAL units earlier 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" No point in trying to parse nonexistent header bits. Signed-off-by: James Almer --- Will fix indentation before pushing. But the diff was smaller like this. libavcodec/h2645_parse.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index a7cdf76e87..5708fe56f9 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -485,8 +485,6 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, "NALFF: Consumed only %d bytes instead of %d\n", consumed, extract_length); - pkt->nb_nals++; - bytestream2_skip(&bc, consumed); /* see commit 3566042a0 */ @@ -496,6 +494,9 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, nal->size_bits = get_bit_length(nal, skip_trailing_zeros); + if (nal->size <= 0 || nal->size_bits <= 0) + continue; + ret = init_get_bits(&nal->gb, nal->data, nal->size_bits); if (ret < 0) return ret; @@ -504,13 +505,13 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, ret = hevc_parse_nal_header(nal, logctx); else ret = h264_parse_nal_header(nal, logctx); - if (ret < 0 || nal->size <= 0 || nal->size_bits <= 0) { if (ret < 0) { av_log(logctx, AV_LOG_WARNING, "Invalid NAL unit %d, skipping.\n", nal->type); - } - pkt->nb_nals--; + continue; } + + pkt->nb_nals++; } return 0; From patchwork Wed Aug 12 18:25:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 21612 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 DF0A8448F08 for ; Wed, 12 Aug 2020 21:26:31 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C1FF268B524; Wed, 12 Aug 2020 21:26:31 +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 0672B68B53F for ; Wed, 12 Aug 2020 21:26:25 +0300 (EEST) Received: by mail-qk1-f195.google.com with SMTP id g26so2956360qka.3 for ; Wed, 12 Aug 2020 11:26:24 -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=MrD7k61EPbZTzVRnJwUJ6wnjPGfjOuzDe/dc9dORBOs=; b=adArnMMDhNWuL8M9ayOy5l/Vi9KUXbDZMNEdGsCQFH/NZCN0gIEPMkAtC6fDjGU3cV N+2ElJPEGgQbpk2EDb4WXdzigkNYw7q5ZtAClZLdOtQsGFEGrUTFdGCg1Z8HFuHaIvt6 WWNxWzurZ//cdS0oJLWbziM3g60i/7hv6t357xxDzyxjxx6QQ66xRLnu8lqcfpod5cyv KMgJ1lLxbV/vZtuLkX1dOavDa1k250D3iUgcny494/XGAFMZETzMHFRfwniTxRj1Ptu6 OgN/L5rn1FqeLi9qaLz/TJkxdl8AlRaQ+2oboWDxSKaBVXlCDoZcxHpL8GGK/u6xCspq Cj7A== 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=MrD7k61EPbZTzVRnJwUJ6wnjPGfjOuzDe/dc9dORBOs=; b=LGyytjLxUKtsoZyFNKxXKLmsyz9/swwBJy5Iq/434NmA6GRIpJn4vCgyaebjH2r8ZK x99FQPr1A+l4BUSUxGx1LYs8XF5KsAOeiGM+J62bOg4TAlNBe1mFE2Ot/ZpDq0Ioktvc 0WuZgbOmHiZ9P+cf3ZwSzw8VSX/eRxuXyxH0ljJgSf1ntXQdgnzlgg6OtvuSIRNhQWik 2Zb6Z/JHGq3ngJoyKWObMlFE9eW0cQjoSOYXchkNiuQncWVCp4RhYWxKc8H/Pq1ych6Y lTH6QTqJ7mi8tvkEh4N735Q30nlB7TXoRhjj/q+/JnWdV18yFODkDT6kd7AHxWvyw4/I 0dCw== X-Gm-Message-State: AOAM530QteqqxBtZzaLKSL4mbuaamjtX8EpaBj4uSogm1wXD6xO43Dfe E2/JDqg6OVeTSeu9APeMg/a02CHe X-Google-Smtp-Source: ABdhPJxkG//hp7JWmuo769bp+p5RQxZhcsPBLl0cieCZgz5R3szSOgOZyLsVcXb5QAc74uHvaVFupQ== X-Received: by 2002:a37:a882:: with SMTP id r124mr1184101qke.56.1597256783256; Wed, 12 Aug 2020 11:26:23 -0700 (PDT) Received: from localhost.localdomain ([181.23.66.204]) by smtp.gmail.com with ESMTPSA id x29sm3266889qtv.80.2020.08.12.11.26.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2020 11:26:22 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Aug 2020 15:25:58 -0300 Message-Id: <20200812182558.14199-3-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200812182558.14199-1-jamrial@gmail.com> References: <20200812182558.14199-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/h2645_parse: reset the H2645NAL type value before parsing a NAL 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" This will prevent reporting a bogus value in the log message when the header parsing fails. Signed-off-by: James Almer --- libavcodec/h2645_parse.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 5708fe56f9..162272a6de 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -501,6 +501,9 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, if (ret < 0) return ret; + /* Reset type in case it contains a stale value from a previously parsed NAL */ + nal->type = 0; + if (codec_id == AV_CODEC_ID_HEVC) ret = hevc_parse_nal_header(nal, logctx); else