From patchwork Mon Dec 7 12:55:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24416 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2578447ybf; Mon, 7 Dec 2020 05:01:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwI0FKUI0vzBcTlCSIiscEmw3nUC5uRw3e7fu2Ifx468oaBWquc3HRBYXGMO1thY9VvJ55B X-Received: by 2002:adf:c844:: with SMTP id e4mr20256004wrh.345.1607346111998; Mon, 07 Dec 2020 05:01:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607346111; cv=none; d=google.com; s=arc-20160816; b=EYK7f9OsNeRxvzMsWI/Sb99vGcc2Li6aQdmnLH+sxrhTvJYTS9xnWSkdCoqmQ4WMdM RP6oNBwV3qwT3TF4jcif0DV3C1eb7lvGTE+zNAN5I6FqbPT8SWOQ7NOfAVzZMocPHRS7 Exevupcz001rA1KQX5ws6R5fwKU3U66yehGKAU4hlKwrJYkDUM4mtzwJAkYheebaRySS HoNProifLMorE0YNjyfpQ8pKQekUisdB4I9DcmtT3Vx+FKToshLsNuz7Hu3rHiPBCtZL zdwronGYxF9UY4ciFxjCen+LUPd5SKoEx7xTmdHcKV4M2hrPzcamZ2TdONm8tHriMhn+ bkBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=kXvxCX/oXLOfl+qdAVSat+HoAH/fITSvVzA2wlgBEm0=; b=bhvH2LrGAeLzEfbiVFXQccDXmhqUnI002U5kFBVbJ4iyQ62WcvZRptLvxg/v//rhEs qXrACBNuSD2sjKC4N0jhcYMWwjeLxeY+hrb9rTR5QST6x1bPkJ0eGSldAsv0VzShRD62 ser1OHU09AiPd/Vk3uf1Q8bl1HSEcvnKyihFH/jAYeJ7amovOHc+so///7Hkbwn+XkDZ 1CTPGfaoLurGLymlgTdFuYNrS+Mii6kdjjJk5Usq/YIizccrO/+6NbSTUb5XfHvoUoLT v4m0ZI2BOJMF1iC6Cm30/BO6oq/YUsSmFJZqydQcp7L7UCuU/RcqmefEtQG3ghQ7bNWF GxAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=VZ5vLm9T; 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 f5si6651385wro.387.2020.12.07.05.01.40; Mon, 07 Dec 2020 05:01:51 -0800 (PST) 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=VZ5vLm9T; 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 9A31A68A276; Mon, 7 Dec 2020 15:01:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDAA2689B6C for ; Mon, 7 Dec 2020 15:01:31 +0200 (EET) Received: by mail-qk1-f177.google.com with SMTP id y18so12296298qki.11 for ; Mon, 07 Dec 2020 05:01:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/z1VyTHnbGBCcoOQXcqYugRpR/A8i6ct+gZlwNwCWag=; b=VZ5vLm9TLUncikByxtpYi0pIcTZttW1VGdAx0abRW1bYe7gqUtidFY5EPD/R7BsX47 nKeaWS43K+wyp/BWmpYjyJYudVmKE4HQu0sk/uNiXEbJiIrnl6hGruyc9cWPMBaTKxcp u76PU2Z2ib9jvvqNRSvGf5ojooG2/7Q0x3R7gsxNQzzxJwalejlxqUTG0CGNlVxjSes5 qaT09WV1xpNHKUcUZ0tQhrLq0d+T4YPOfEDORfLyaNs89u5d9SekaGIFLMKDa/Susl9D 0pMQhCDr4XEvaVwGbntjCmaSqFQnB8Jy3xRGB9Q+OqdoULkm/5uTdVZ8JAu2XJ7b34fJ Cpng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/z1VyTHnbGBCcoOQXcqYugRpR/A8i6ct+gZlwNwCWag=; b=bMcYyw4of44xtJhwIxCUfNy+LWsPSQLMTbhf1ZoIz/G2ulkJni1IgceZJD8N8l5C8s 7HSEUGPBjXzOtFlZ/yfx3fT2xn3rIh7l7l8sxi/zcWNrAKGPaoJqeg4sJEBZ9bHiVYw1 shEwxZxkmFIrqRdWGjfdSO7XiSXzDsRmV4M2551QV6ETbBpLg+RS+0+V2nhxFZsgGM2Z 2AoLb7BClxKiACNFn02OShF1NBux00yLvuDHDJFM02dKdCveFiGqGtFSRDBrlMa1hsq8 x1dN6gP3vuaHVaExdyETtuzWtXvQZNUpOGELPrJ3vns0eZN4W1M2mI4dDQPAFu88oclJ 888g== X-Gm-Message-State: AOAM532iCLK2We8WwZCYTrICHZNNPIWlDW10WZonMrdEfsuVfvAwUgYW pSBORZKQPDWEv5D03bubg/khnwB4VDy48A== X-Received: by 2002:ae9:ed0f:: with SMTP id c15mr24977930qkg.348.1607345776614; Mon, 07 Dec 2020 04:56:16 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:16 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:38 +0000 Message-Id: <20201207125545.621159-2-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/8] lavc/avcodec: Add FF_PROFILE_HEVC_SCC for screen content coding 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 Cc: Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: mNHSYl4V6x0m Content-Length: 3036 From: Linjie Fu Signed-off-by: Linjie Fu --- libavcodec/avcodec.h | 1 + libavcodec/hevc_ps.c | 2 ++ libavcodec/profiles.c | 1 + 3 files changed, 4 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 20af3ef00d..2e853bfdef 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1948,6 +1948,7 @@ typedef struct AVCodecContext { #define FF_PROFILE_HEVC_MAIN_10 2 #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 #define FF_PROFILE_HEVC_REXT 4 +#define FF_PROFILE_HEVC_SCC 9 #define FF_PROFILE_AV1_MAIN 0 #define FF_PROFILE_AV1_HIGH 1 diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index ea6fd536c6..584e2ba0d6 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -281,6 +281,8 @@ static int decode_profile_tier_level(GetBitContext *gb, AVCodecContext *avctx, av_log(avctx, AV_LOG_DEBUG, "Main Still Picture profile bitstream\n"); else if (ptl->profile_idc == FF_PROFILE_HEVC_REXT) av_log(avctx, AV_LOG_DEBUG, "Range Extension profile bitstream\n"); + else if (ptl->profile_idc == FF_PROFILE_HEVC_SCC) + av_log(avctx, AV_LOG_DEBUG, "Screen Content Coding Extension profile bitstream\n"); else av_log(avctx, AV_LOG_WARNING, "Unknown HEVC profile: %d\n", ptl->profile_idc); diff --git a/libavcodec/profiles.c b/libavcodec/profiles.c index e59a3a5c12..e815b90c6a 100644 --- a/libavcodec/profiles.c +++ b/libavcodec/profiles.c @@ -79,6 +79,7 @@ const AVProfile ff_hevc_profiles[] = { { FF_PROFILE_HEVC_MAIN_10, "Main 10" }, { FF_PROFILE_HEVC_MAIN_STILL_PICTURE, "Main Still Picture" }, { FF_PROFILE_HEVC_REXT, "Rext" }, + { FF_PROFILE_HEVC_SCC, "Scc" }, { FF_PROFILE_UNKNOWN }, }; From patchwork Mon Dec 7 12:55:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24417 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2575319ybf; Mon, 7 Dec 2020 04:56:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzzPtWWKbhhZ0tBG00TMC0kt+R97YlqJf/+LmCbrjU6lLbc78YszWvT1W+mTv9bG9Nhvvwn X-Received: by 2002:a5d:4cd1:: with SMTP id c17mr3074091wrt.49.1607345797693; Mon, 07 Dec 2020 04:56:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607345797; cv=none; d=google.com; s=arc-20160816; b=NKmXfE1K5JUScjuG1xyChcDgBHwuGzNwqOPJYyicnhGVNwY0qbegNgAqapymXNfKj8 oa6sRn+iz4FoZUKQT5fPBnq1dfiqF+/BqEgyfJQqxH/PG/Bq8DN2bqptwyMBtZ4nfFzD TboR2/i/JCk8EeQ2tKfqU8LonFEsn2HK0hU1eaaRlep/ukDiZXoyehcIXlCKG+3zm2mE RyZ2xCPCxmu4J1nSuVqD89TTDvg+l3i7kCtFHfe/sf5AijnL1CE0t7wnWFQHM/CmfXDr 1vbytBC2/rYkNDhc9YIhC1FDA/UGesx2qRwBdKGW17gxnUR6F35te0AjkjdobXqRRMF8 Ma7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=o7qTR/13l+FEluJnnk1ZX3NKzV4a9X6OzqUrEMqnnac=; b=qrKo17Gf96+fU8TfnsgP3BT1ZnGf49YgXz7RQa+5jkX10iUTohx4tBGp2XEc8fcExQ 3nu9gNgalg+9bKEOKHd0YKMSZmU+Y4k9GqvuiORpiJS5gTBMmR5MNN7ovVrag+EWaruJ 1k4as/rYWVXB3+ZOORkWAQJz0fOQ9p7VDT21Cg8uO9MoN5vqPf05a+IEEKYYTP1BXz+/ Z7byS6CSMH94xibOBxvdYSckZckMSfHgDILdAXjfzapLEVGYqduIiqBaaN0QryAnv8/1 hoJYUxcwZGtxJndMz//mEZVlKxaHkYEOqnlmpI+eQHHmShbKC7qaYQkDOWPLuCq83dMz Fbnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=RZ3pkt9d; 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 s70si10690602wme.158.2020.12.07.04.56.35; Mon, 07 Dec 2020 04:56:37 -0800 (PST) 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=RZ3pkt9d; 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 201DE68A13C; Mon, 7 Dec 2020 14:56:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f66.google.com (mail-qv1-f66.google.com [209.85.219.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E27C689A0D for ; Mon, 7 Dec 2020 14:56:21 +0200 (EET) Received: by mail-qv1-f66.google.com with SMTP id 4so6417542qvh.1 for ; Mon, 07 Dec 2020 04:56:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4W91JjwnkBF2PfS58fwQDCU7JKg6xjzEEy62UGlNdYc=; b=RZ3pkt9d/FTyZVrsVHoZJ4LZPoa68IqBqsnHfhqxewyoR1pjQtdE6lnEs/kaZFFu5W xrHua1/Q56XgmACrixxxLpvN9NgKWPAc0cjX51TUCqiP/U2Y8ZzETjRfZ6yMJqMkBmQU 3/lMVoeun3Jt22/Cmn0Q7be+SsN7HELHBs8yxRF30Zt2LfokZZr8I1G9g/VDxXTaStn3 QgGRYn6xfQtEk4hYV8PxO2ly5Oc+DTPWU2T6T9bUcOggc8Ny62dI4PEdeRAXR1XgpGPk GyDt1tOLg2ns7PbIMKHJ97s3LDY5vrOOyiCZwPlNlzo6nzk1xiGyWxeeReP7gDcqu0qe 3kQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4W91JjwnkBF2PfS58fwQDCU7JKg6xjzEEy62UGlNdYc=; b=tuwjurlHWv5UD+CZTpAAGSFhRz0QEV3JBk0CmKdO6cfPOFt5ZJeAKpCqbEAEHRgVrp UyFad80NJtfajbjVoZ4TjjHwRUs7k9ufK5qyh6UywriKIJkMNfAdyzmrvF3CjJcFlx7o PhAkqDaazq08EXjqoLx/RrfCXmKahqnpzw523ZGorjys5Lu3/l07oMY9OCG4cdwtStzs oPjpsAfTSZ7MsGiN/zaJiDvEV5S9howlka+vV0Cw4CC6ayIM9FipZQOgLMy/UTiihmud PeYpDkBr9fuVuNdXNmoBPPtLX7JCn8BquGBfpIO9VfJHEq5WpAbxEbuj4CP2XS3awi78 2nUA== X-Gm-Message-State: AOAM533AzvAazc7aYs0HYtQPtocp+Jhg+AtPfgmkPUJ/9DJ+b3bjuMeu xwvsdFJ3iLfb0DiZjQHLV/KTerV/MnhHcA== X-Received: by 2002:a0c:f981:: with SMTP id t1mr21013085qvn.60.1607345779706; Mon, 07 Dec 2020 04:56:19 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:18 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:39 +0000 Message-Id: <20201207125545.621159-3-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/8] lavc/hevc_ps: Add sps parse support for HEVC SCC extension syntax 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 Cc: Haihao Xiang , Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Mh7mke28nVqa Content-Length: 7757 From: Linjie Fu According to 7.3.2.2.3 in T-REC-H.265-201911. Signed-off-by: Linjie Fu Signed-off-by: Haihao Xiang --- libavcodec/hevc.h | 3 +++ libavcodec/hevc_ps.c | 44 +++++++++++++++++++++++++++++++++++++++++--- libavcodec/hevc_ps.h | 15 +++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h index 1804755327..6b454a75c1 100644 --- a/libavcodec/hevc.h +++ b/libavcodec/hevc.h @@ -154,6 +154,9 @@ enum { // get near that, though, so set a lower limit here with the maximum // possible value for 4K video (at most 135 16x16 Ctb rows). HEVC_MAX_ENTRY_POINT_OFFSETS = HEVC_MAX_TILE_COLUMNS * 135, + + // A.3.7: Screen content coding extensions + HEVC_MAX_PALETTE_PREDICTOR_SIZE = 128, }; diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 584e2ba0d6..d65efc1aef 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -909,7 +909,7 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, HEVCWindow *ow; int ret = 0; int log2_diff_max_min_transform_block_size; - int bit_depth_chroma, start, vui_present, sublayer_ordering_info; + int bit_depth_chroma, start, vui_present, sublayer_ordering_info, num_comps; int i; // Coded parameters @@ -1130,8 +1130,20 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, decode_vui(gb, avctx, apply_defdispwin, sps); if (get_bits1(gb)) { // sps_extension_flag - sps->sps_range_extension_flag = get_bits1(gb); - skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7); + sps->sps_range_extension_flag = get_bits1(gb); + + /* To keep consistency with the workaround for hevc-conformance-PS_A_VIDYO_3 + * in PPS, here ignore sps_multilayer_extension_flag, sps_3d_extension_flag + * and sps_scc_extension_flag for non-SCC streams too. Note multilayer_extension + * or 3d_extension is not implemented in FFmpeg */ + if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_SCC) { + sps->sps_multilayer_extension_flag = get_bits1(gb); + sps->sps_3d_extension_flag = get_bits1(gb); + sps->sps_scc_extension_flag = get_bits1(gb); + skip_bits(gb, 4); //sps_extension_4bits = get_bits(gb, 4); + } else + skip_bits(gb, 7); + if (sps->sps_range_extension_flag) { sps->transform_skip_rotation_enabled_flag = get_bits1(gb); sps->transform_skip_context_enabled_flag = get_bits1(gb); @@ -1157,6 +1169,32 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, av_log(avctx, AV_LOG_WARNING, "cabac_bypass_alignment_enabled_flag not yet implemented\n"); } + if (sps->sps_multilayer_extension_flag || sps->sps_3d_extension_flag) { + av_log(avctx, AV_LOG_ERROR, + "multilayer_extension or 3d_extension not yet implemented\n"); + return AVERROR_PATCHWELCOME; + } + + if (sps->sps_scc_extension_flag) { + sps->sps_curr_pic_ref_enabled_flag = get_bits1(gb); + sps->palette_mode_enabled_flag = get_bits1(gb); + if (sps->palette_mode_enabled_flag) { + sps->palette_max_size = get_ue_golomb_long(gb); + sps->delta_palette_max_predictor_size = get_ue_golomb_long(gb); + sps->sps_palette_predictor_initializers_present_flag = get_bits1(gb); + + if (sps->sps_palette_predictor_initializers_present_flag) { + sps->sps_num_palette_predictor_initializers_minus1 = get_ue_golomb_long(gb); + num_comps = !sps->chroma_format_idc ? 1 : 3; + for (int comp = 0; comp < num_comps; comp++) + for (i = 0; i <= sps->sps_num_palette_predictor_initializers_minus1; i++) + sps->sps_palette_predictor_initializer[comp][i] = + get_bits(gb, !comp ? sps->bit_depth : sps->bit_depth_chroma); + } + } + sps->motion_vector_resolution_control_idc = get_bits(gb, 2); + sps->intra_boundary_filtering_disabled_flag = get_bits1(gb); + } } if (apply_defdispwin) { sps->output_window.left_offset += sps->vui.def_disp_win.left_offset; diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 2a1bbf6489..be23758008 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -223,6 +223,21 @@ typedef struct HEVCSPS { int persistent_rice_adaptation_enabled_flag; int cabac_bypass_alignment_enabled_flag; + // Not yet implemented + int sps_multilayer_extension_flag; + int sps_3d_extension_flag; + + int sps_scc_extension_flag; + int sps_curr_pic_ref_enabled_flag; + int palette_mode_enabled_flag; + int palette_max_size; + int delta_palette_max_predictor_size; + int sps_palette_predictor_initializers_present_flag; + int sps_num_palette_predictor_initializers_minus1; + int sps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE]; + int motion_vector_resolution_control_idc; + int intra_boundary_filtering_disabled_flag; + ///< coded frame dimension in various units int width; int height; From patchwork Mon Dec 7 12:55:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24414 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2575404ybf; Mon, 7 Dec 2020 04:56:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJzDMKMRSHK1nVArdGskWOyAJ2p4ypGFhU7VnamBj2/gVgUeJCXjp0/r2vafODAT7y64RHxa X-Received: by 2002:a05:600c:2106:: with SMTP id u6mr18614387wml.4.1607345807609; Mon, 07 Dec 2020 04:56:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607345807; cv=none; d=google.com; s=arc-20160816; b=QqiWL4ONPHYDKLlG5DFTVaBVjloKFi55ZbAE5Th0/YF5X1dvoUM9Zym3Un/ePOWfew 6uulnAU2zZQ92wcyoCC1O+UpegeYPh89DmoS2zKsG3ieAQuYhOFC0r9382tRzcyY9nMi tj7MA495IXLyCprf737u+xlIis3VsNn5dGd5JNoZXHQar7wZF4cUY9kPHuVOV33zm13v ha5wfuX3QmcKidEtn4Uaj7oWxMH2AUBb7qt0w0vAzspOorsK0+nu/Tbn2dxRqAfJC1oS MBIVE3cwRAa2713UrnWw7H+CRgx6dQiaZljHFrNY9RBh2PBNuBacN6mS/AmCeBH640Pp iC1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=YF5SUGKvEUqNSF/rG/WZrGIsBLj6y14S62BH1ryOzGU=; b=W7+RsnJ+cVqGQPBtHfDA6TBqoNK1n+clvVRtPgmwbyrQ2mNPl6YxPrMBVXs/XR4J0m sF2tRFys/c/NZjHSQnjsEbzFD18v2lxkeH4nuNDhf2Akf3+/jl/5eN/DtTXTlY0wyUo1 3ymEMYE6pZGFyLBjj4zWYjGJSRayyCd4jk0rd9xEk/8ajzPIOgC3qgiD9qVnOKLjbmTE 10FSXHiRbxrQu/5ErI02Z2+QNLSl4evMivBFNxOB/NkJbjtTIrPv7ZE/7hc0PC65of4K kXbQCNDYIZr0KEw9iPyoebnLOyruzd9xIQdkfBGQBk6MEBBYeEXMm5XCoFnlTb9Bjclw AyfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=mtmUjrQu; 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 n124si10554772wmb.22.2020.12.07.04.56.47; Mon, 07 Dec 2020 04:56:47 -0800 (PST) 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=mtmUjrQu; 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 62E2B68A17B; Mon, 7 Dec 2020 14:56:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3035F68A141 for ; Mon, 7 Dec 2020 14:56:24 +0200 (EET) Received: by mail-qv1-f67.google.com with SMTP id b18so2881775qvt.10 for ; Mon, 07 Dec 2020 04:56:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BtusEg35xRC65GanXSL5Qv2fSCuSNjsCJOc/ZWJ4UuA=; b=mtmUjrQu2yNIaNNGufx8vEX0Md7Rb0qkIxG74uiaDnaqHhWPgYr1k3NcjAHBiX4uiB /YYCP+lNg9xhvbssncQEoFUIikEmDosSv/iZZVlSa+ySEtxhFDyBj6XcmAiZP0Rbfy9L fwVrDS+iHMNe9HYCIWzX8WwA/Nra7d9e8/34+Yjz3QTJqE9y1BiD2Gz0u5BZuFUjtRU9 e+xcOvGZBuhkh55P1FhzXjs+udiunyl0vW4IY4nQonLuu4kMmHm9C1D49b3ZCKb//EFm wrCK91D0wgq2jiEYB+R+LSzfxJ3rsVYoTPJyo6/PIBXw6fIwvw8MTP65j30AwXcz6qsg yc6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BtusEg35xRC65GanXSL5Qv2fSCuSNjsCJOc/ZWJ4UuA=; b=qBWgRHgo2MliyubSfrE9Qe0HFiMzly/DET0dDMKRQyji0g+sN/0u9trM6bKMV0xh8W R65+Oy4J4ohHQELPXn/pbXk6k0CwNc+OGKUVL5rsflWwSqqOg9jD/GreUvtBqRhLuHhi 0nGJr+NoJscUi+eSl+wQ+vndt7vW1JvlntI9r+fpNYaynUJ39gdxBnz6NEtu2jq17QQ4 9sGgJFAmUTtYWkUwihJ0GJBRNF5avKx7s/FjyZWCWBpV6dNQjwnuOui06uvj8FFA5GkK MGpCWhFrVpmn5YPYRnc07DdD585v/wWSpXyG9GfoP9r5MjuvodSa/fS4c8Ks4rtaLZ9/ RPrA== X-Gm-Message-State: AOAM532R1wqB8xVprpDd5Wlnw9EyNIGJv+3kUT27yHhgDXetQhWll3Na CdVEimOnb7LlxloqUJI1+kiuOiMk/K1xdA== X-Received: by 2002:a0c:e312:: with SMTP id s18mr6883789qvl.60.1607345782591; Mon, 07 Dec 2020 04:56:22 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:21 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:40 +0000 Message-Id: <20201207125545.621159-4-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 3/8] lavc/hevc_ps: Add pps parse support for HEVC SCC extension 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 Cc: Haihao Xiang , Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 1WSdfR6xE6m7 Content-Length: 8430 From: Linjie Fu Signed-off-by: Linjie Fu Signed-off-by: Haihao Xiang --- libavcodec/hevc_ps.c | 70 +++++++++++++++++++++++++++++++++++++++++++- libavcodec/hevc_ps.h | 17 +++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index d65efc1aef..704b666756 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1400,6 +1400,48 @@ static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx, return(0); } +static int pps_scc_extension(GetBitContext *gb, AVCodecContext *avctx, + HEVCPPS *pps, HEVCSPS *sps) +{ + int num_comps; + int i, ret; + + pps->pps_curr_pic_ref_enabled_flag = get_bits1(gb); + if (pps->residual_adaptive_colour_transform_enabled_flag = get_bits1(gb)) { + pps->pps_slice_act_qp_offsets_present_flag = get_bits1(gb); + pps->pps_act_y_qp_offset = get_se_golomb_long(gb) - 5; + pps->pps_act_cb_qp_offset = get_se_golomb_long(gb) - 5; + pps->pps_act_cr_qp_offset = get_se_golomb_long(gb) - 3; + +#define CHECK_QP_OFFSET(name) (pps->pps_act_ ## name ## _qp_offset < -12 || \ + pps->pps_act_ ## name ## _qp_offset > 12) + ret = CHECK_QP_OFFSET(y) || CHECK_QP_OFFSET(cb) || CHECK_QP_OFFSET(cr); +#undef CHECK_QP_OFFSET + if (ret) { + av_log(avctx, AV_LOG_ERROR, + "PpsActQpOffsetY/Cb/Cr shall be in the range of [-12, 12].\n"); + return AVERROR_INVALIDDATA; + } + } + + if (pps->pps_palette_predictor_initializers_present_flag = get_bits1(gb)) { + if ((pps->pps_num_palette_predictor_initializers = get_ue_golomb_long(gb)) > 0) { + pps->monochrome_palette_flag = get_bits1(gb); + pps->luma_bit_depth_entry_minus8 = get_ue_golomb_long(gb); + if (!pps->monochrome_palette_flag) + pps->chroma_bit_depth_entry_minus8 = get_ue_golomb_long(gb); + num_comps = pps->monochrome_palette_flag ? 1 : 3; + for (int comp = 0; comp < num_comps; comp++) + for (i = 0; i < pps->pps_num_palette_predictor_initializers; i++) + pps->pps_palette_predictor_initializer[comp][i] = + get_bits(gb, 8 + (!comp ? pps->luma_bit_depth_entry_minus8 : + pps->chroma_bit_depth_entry_minus8)); + } + } + + return 0; +} + static inline int setup_pps(AVCodecContext *avctx, GetBitContext *gb, HEVCPPS *pps, HEVCSPS *sps) { @@ -1753,11 +1795,37 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, if (get_bits1(gb)) { // pps_extension_present_flag pps->pps_range_extensions_flag = get_bits1(gb); - skip_bits(gb, 7); // pps_extension_7bits + + /* hevc-conformance-PS_A_VIDYO_3 in fate has pps_multilayer_extension_flag (1), + * pps_3d_extension_flag (1) and pps_scc_extension_flag (1) but has the wrong + * data for pps_multilayer_extension(), pps_3d_extension(), and pps_scc_extension(). + * To avoid regression for hevc-conformance-PS_A_VIDYO_3, here check + * pps_multilayer_extension_flag, pps_3d_extension_flag and pps_scc_extension_flag + * only for SCC streams */ + if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_SCC) { + pps->pps_multilayer_extension_flag = get_bits1(gb); + pps->pps_3d_extension_flag = get_bits1(gb); + pps->pps_scc_extension_flag = get_bits1(gb); + skip_bits(gb, 4); // pps_extension_4bits + } else + skip_bits(gb, 7); + if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) { if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0) goto err; } + + if (pps->pps_multilayer_extension_flag || pps->pps_3d_extension_flag) { + av_log(avctx, AV_LOG_ERROR, + "multilayer_extension or 3d_extension not yet implemented\n"); + ret = AVERROR_PATCHWELCOME; + goto err; + } + + if (pps->pps_scc_extension_flag) { + if ((ret = pps_scc_extension(gb, avctx, pps, sps)) < 0) + goto err; + } } ret = setup_pps(avctx, gb, pps, sps); diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index be23758008..155b66062e 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -312,6 +312,9 @@ typedef struct HEVCPPS { uint8_t slice_header_extension_present_flag; uint8_t log2_max_transform_skip_block_size; uint8_t pps_range_extensions_flag; + uint8_t pps_multilayer_extension_flag; + uint8_t pps_3d_extension_flag; + uint8_t pps_scc_extension_flag; uint8_t cross_component_prediction_enabled_flag; uint8_t chroma_qp_offset_list_enabled_flag; uint8_t diff_cu_chroma_qp_offset_depth; @@ -321,6 +324,20 @@ typedef struct HEVCPPS { uint8_t log2_sao_offset_scale_luma; uint8_t log2_sao_offset_scale_chroma; + // SCC extension parameters + uint8_t pps_curr_pic_ref_enabled_flag; + uint8_t residual_adaptive_colour_transform_enabled_flag; + uint8_t pps_slice_act_qp_offsets_present_flag; + int8_t pps_act_y_qp_offset; // _plus5 + int8_t pps_act_cb_qp_offset; // _plus5 + int8_t pps_act_cr_qp_offset; // _plus3 + uint8_t pps_palette_predictor_initializers_present_flag; + uint8_t pps_num_palette_predictor_initializers; + uint8_t monochrome_palette_flag; + uint8_t luma_bit_depth_entry_minus8; + uint8_t chroma_bit_depth_entry_minus8; + uint8_t pps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE]; + // Inferred parameters unsigned int *column_width; ///< ColumnWidth unsigned int *row_height; ///< RowHeight From patchwork Mon Dec 7 12:55:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24423 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2580709ybf; Mon, 7 Dec 2020 05:04:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwx7FYkKRfaW8NzQwWk/QF1ifttW6h6DH0VYWU85yBXBjYIGWmQ5KccKrsbjqS51jSUyFAu X-Received: by 2002:a1c:5506:: with SMTP id j6mr18891898wmb.30.1607346286725; Mon, 07 Dec 2020 05:04:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607346286; cv=none; d=google.com; s=arc-20160816; b=UygeDxjiKtOx1r31JBOUdEaBGP6s4czY+SjQwiRaO47JBrp350l9RWn6ZjZoKG6k0K EKfTuldcN4KSVO1tmbixL6Ckyql0X3D2AO9TaVpAWe1rh77rGP7SyXsgYj0Okwl7mnyc wIkxYXAVqVMklDnOgfz0QvoPviQst4sImDHlFnf8daZsAilIEiwPYelOucZ0P7/MU/+2 uudLgUAhNbLiZLSrG2g+9NXX30xdfwkHlkxTl/0OheZx1pwKodHjSAyZvN6VFebkjftu QeniHkp8cfQmEp7PVOQzNRWjyLXeYD80OlF/S5T8Hy5wThDzhLAIs98/QCe5UQe7cuVS DcBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=IUKCJDJkYTpyDTZuvbMJGxDGbP0r0sTj7N39X6GPX8U=; b=i9CV1+lbkYjdZo3pP945cjGHyWJmpvNDnl+nTJUyCjh2iGAIiA8FLJI8dq8xOSzzSq MdwTpoDoPx38YLkVXEUwEnNGuUIjjM8l9HVDasThhTSlJxoFg6BT8dxAPb3rs3uTg9lW 0+YxRg//hRgZt4CnydlW/4rzEnbinWBxOZtclA065p1l+pbM05Gc/lpYrTy4GNIC2fNH GJiRyIViylgskxd+KxV7vOehlql1AaMg0beiWIC/lwYHsqGMAg2Yb5re1OpzN4tf+wEB 4qQzN4s62V9qBVFQZkM9iZQ2p6MBvNWPcJwdZ/wSD2NJbztR3CIdRosM0aafVbsh0zQ4 STCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b="sJtJe/aP"; 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 f15si10523792wrx.440.2020.12.07.05.04.46; Mon, 07 Dec 2020 05:04:46 -0800 (PST) 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="sJtJe/aP"; 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 48C0C68A2BC; Mon, 7 Dec 2020 15:04:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 776A4688091 for ; Mon, 7 Dec 2020 15:04:37 +0200 (EET) Received: by mail-io1-f49.google.com with SMTP id i18so13279474ioa.1 for ; Mon, 07 Dec 2020 05:04:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MkkJjbB7nDed0lZqwuKmykxANjXLsCUs1NEBdwa5O1o=; b=sJtJe/aPBYxGEiibvv+ffer2QcZD604WObiWwzld4A3FW8Hle6RHddpdZR7aLaUwGp 559iEjswms6jusjWrxLVuBe/c6gNfF6FxW/dz3oKIWiukl9Li+s/Lt75e5ZxjBCwInUt bUmNc+TG9Ss4XXuNN5k6d+foJ3Why7k0etU8ipe2Uw/gEcIAlDABMFJDqVoj/N3Mzvqk BZxw/mzTUOT6vZK1iFst+saJ+J2hkbNnJodlcFVIADIeSvRQWU4NSD0rQm2Vfx8/hwUF 9oWdgCfRgG0saxWpMe7U+oVUtkBCwdubG/mRJStmSx+sTmiIMvAKNjEmFkH0wk4/c8nl Z1yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MkkJjbB7nDed0lZqwuKmykxANjXLsCUs1NEBdwa5O1o=; b=BCO2vMw5A46NDTx9VwVxD28Yxisz+1NkTgJbN1AF6BF1ENylSy2V5PzAf+wQPYA+iA 0SG5l6CLusKJOdpz0xYYYPbx5ZuO4cOeHpPqGSJho6szmJhvu5nJT30CTwibiKX7IR5s SkWqaf6zjnudbd/rq05EwlE8OlHvbea+UMyYNCflIfl/Ej8HoPmWCLcrSgxHT/B2z8cs 8qH4Zi8B5iU1aKdGA7YySuQ8O1P/ggx+sQKArwkI9ZGn767VBXF6iMP3EjGlUtA05kUV 1Y7jJLUk1IuW3IbfS+4FmIPURB3lq5Ykl1OHuFohRLVSCUEHJGoXLD4TZjIICaSXPEM5 IGnQ== X-Gm-Message-State: AOAM532veAHekQfoLRRQi8ItezAKqGEGcpKvzgsuQ8hVIHUyYhHNcdkp 1s1b9UxoPArVd7FptxPjxTe4dfDoXpxIvA== X-Received: by 2002:a05:620a:4113:: with SMTP id j19mr24291026qko.301.1607345784842; Mon, 07 Dec 2020 04:56:24 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:24 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:41 +0000 Message-Id: <20201207125545.621159-5-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 4/8] lavc/hevc_ps: Add slice parse support for HEVC SCC extension 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 Cc: Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rAjjrezXdRYI Content-Length: 2140 From: Linjie Fu Signed-off-by: Linjie Fu --- libavcodec/hevcdec.c | 6 ++++++ libavcodec/hevcdec.h | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 699c13bbcc..7074a0760a 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -825,6 +825,12 @@ static int hls_slice_header(HEVCContext *s) sh->slice_cr_qp_offset = 0; } + if (s->ps.pps->pps_slice_act_qp_offsets_present_flag) { + sh->slice_act_y_qp_offset = get_se_golomb(gb); + sh->slice_act_cb_qp_offset = get_se_golomb(gb); + sh->slice_act_cr_qp_offset = get_se_golomb(gb); + } + if (s->ps.pps->chroma_qp_offset_list_enabled_flag) sh->cu_chroma_qp_offset_enabled_flag = get_bits1(gb); else diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 39c5c7f89f..6e22e044dd 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -292,6 +292,10 @@ typedef struct SliceHeader { int slice_cb_qp_offset; int slice_cr_qp_offset; + int slice_act_y_qp_offset; + int slice_act_cb_qp_offset; + int slice_act_cr_qp_offset; + uint8_t cu_chroma_qp_offset_enabled_flag; int beta_offset; ///< beta_offset_div2 * 2 From patchwork Mon Dec 7 12:55:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24405 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2592164ybf; Mon, 7 Dec 2020 05:20:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJwaceJNTqa7Xh9jEyLvwKEPvbwkSNNVTdr3++ci6t8uwOZms1vnGnAo8oJ2ytnZTzOTQOKm X-Received: by 2002:a5d:4ccd:: with SMTP id c13mr19833042wrt.254.1607347214426; Mon, 07 Dec 2020 05:20:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607347214; cv=none; d=google.com; s=arc-20160816; b=RTpYPXy2LaKinq93e7ciGCc7vNefwjy3OE1HurHwxpOt9vwJeYkTbDrMIOF/g9lUBX RsXUhc4WSLl956gzHNKPCCYWZkF9/Zb/ZoCKDF4AQt4iBaom6tvhktbeTc1GqLceNdok Mcy/GZaujPDY1WKzHcCU0K4srvGGG0Twaw6v6SY4U4btwNrEweQv65p9mWjmmqRtqqBg SCAScpY5O66Rjo82nsDUtKN+ZdhTg9WEyOn1lsyGpRvnPF78Aezdg0cN+Ss9BBoMVO/J XHh86EPCvQzCrYJBEShh9isUU9Q/gBuTHbC39Z6lvJjqwIUK0qDg7meoD5fG084LiPQz 1c5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=sD1dIPlXNlIw0ugqZCIMRGxmTqIg/Tj6qdyEeEZf5AQ=; b=t12Oz8ABpS6nL1mQ+6e3GG+uZnNy3oxYwDslEQYBb3lA1+RLReUR/h4K5T2ZvY2KJd 4b8qJMtqzeU3AsIf1w9o0ZFw5GwhpW5hW8sPIjn0Ca1wmbU4yfxNDzYQrlnLnuknJljU jBVmctcyvDPHeuICFfCfG8fDaYjHs3p4R69rQW4AqQubCLZq+9RF/rH7fhxVz+Cn7Aa7 oxaScONzUwBNPzWMRmlWodjUuzu7cy0tNzZXxS2pPhZNtClvL3qEJ+3DfpXDXHvePQb7 KYJT7vtJ5V1kOfoy6GjqGJQBDXCaOfTKZN1x1qWpojpPCQHfZgicwVI7hpHRc6JE45jD O7SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b="MN/AoRX+"; 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 c137si10925353wme.86.2020.12.07.05.20.14; Mon, 07 Dec 2020 05:20:14 -0800 (PST) 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="MN/AoRX+"; 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 DB28468A1BC; Mon, 7 Dec 2020 15:20:10 +0200 (EET) 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 7B7E568A1BC for ; Mon, 7 Dec 2020 15:20:03 +0200 (EET) Received: by mail-qt1-f195.google.com with SMTP id l7so9271583qtp.8 for ; Mon, 07 Dec 2020 05:20:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AiKxfnmafTxf/imtYn1fAg/com/kSXVjcLw8S6VITmI=; b=MN/AoRX++Sws7Tpas4wyT5DKbhsDmhWFvOWMvBWs7t6Exi0glprAAnWOlT5mLbnqA2 V998xhFG69qi1bC34bQGh/5z5HxmqlF931wMT7TTXpXR87xEVvESYKRIEA7DOiOARP4h 0yvS4KI1dxOFHjzpQZ9HmnoTNtqWVvW4Tdsxeo6wHc28SGhZZKluLooe1jxjqUGLKauY YL5mz/LCXkXC92eM0a3iW2qC4uIE9Advwp+14rhqQDH+Kjh/CFdGTURB4ZYQUzsLEU/I m70Z77g5anVVFQv+KM6JNqF4RLK5uzyufIGSUzEco9Jbj2b7zWCkkF/Gb4EjkMaKFlCv /GoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AiKxfnmafTxf/imtYn1fAg/com/kSXVjcLw8S6VITmI=; b=C04CHJaNSQ6FeeZd4dXFWyrrxD6MQzZ8S3VcTXeJtqEf1+xCXdWrSs125+3yEr0ISw hrHEFpCvEFR9lNjACGKds8cVNlaplLQzLBB9YwUT+jg0y9RAwpN0kvEVITsRFAxmwbcL JM41tWR83KvBhI6p9fX5Nyg1/e8hnvwcrCzhnT4woC6IIEd7QDHg22s4hJ3yqSplrrKj wK/VekTg5sGBMN0GtonM05Lh5cFw1Q+XteaYgHV9Wv4KyHZ3xRqNXgZL0tGCn4lfHime k0o7cN5YkO6QrARtZD7xIpaJHbF6CFE8+ejgAa6VALRBo88GtmuVS4MFMgNKxPQ1TITr tUVA== X-Gm-Message-State: AOAM531vHHojpvOEgNvf10631tpmYQHOu48a35I0woRJ1XEi3Jx1GRuQ ZxqIwHVP5z+xZcKbamOUs3nDSgDgr5LD5w== X-Received: by 2002:ac8:4a92:: with SMTP id l18mr24303709qtq.212.1607345786949; Mon, 07 Dec 2020 04:56:26 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:26 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:42 +0000 Message-Id: <20201207125545.621159-6-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 5/8] lavc/hevcdec: Fix the parsing for use_integer_mv_flag 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 Cc: Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TqYsGdj/Wc9D Content-Length: 2456 From: Linjie Fu According to 7.3.6.1, use_integer_mv_flag should be parsed if motion_vector_resolution_control_idc equals to 2. Otherwise wrong parameters in the subsequent parsing procedures would be got. Signed-off-by: Linjie Fu --- libavcodec/hevcdec.c | 8 ++++++++ libavcodec/hevcdec.h | 1 + 2 files changed, 9 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 7074a0760a..6a029b270e 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -808,6 +808,14 @@ static int hls_slice_header(HEVCContext *s) sh->max_num_merge_cand); return AVERROR_INVALIDDATA; } + + // Syntax in 7.3.6.1 + if (s->ps.sps->motion_vector_resolution_control_idc == 2) + sh->use_integer_mv_flag = get_bits1(gb); + else + // Inferred to be equal to motion_vector_resolution_control_idc if not present + sh->use_integer_mv_flag = s->ps.sps->motion_vector_resolution_control_idc; + } sh->slice_qp_delta = get_se_golomb(gb); diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 6e22e044dd..1164af2862 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -302,6 +302,7 @@ typedef struct SliceHeader { int tc_offset; ///< tc_offset_div2 * 2 unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand + uint8_t use_integer_mv_flag; unsigned *entry_point_offset; int * offset; From patchwork Mon Dec 7 12:55:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24413 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2575480ybf; Mon, 7 Dec 2020 04:56:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJxv0Q8cDVPnQlMbu4hPCC77kIXE7kPqRmroDegq1RYyJzYY+wcy3wOSCL16UAxUSdCgcVx2 X-Received: by 2002:a1c:9acb:: with SMTP id c194mr17957163wme.43.1607345818950; Mon, 07 Dec 2020 04:56:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607345818; cv=none; d=google.com; s=arc-20160816; b=hazsUIjZOxWCrB8s97A0PdqF6MJSVUzfD79aRKaxgV062qPX/yhS6Mm/LYw0YLy9bK X4Id6q4RSQbqJieOJyYCv7qMj2TRbg4f+/TvGOILFRW9uHwbTpQ6p+s9YKb3Jagw3tkz f1g4MS4ALZ0s3L09CXWSKqsQljj3v4eUV15azanRCqvZwCn7PSCq2R8cTKR8WcOunMW/ ClSx8uoq1ley+PZjf8Nc0CeElRPudHhMslS0K3dxhps4cY+TSBtNzcbGsPWfQhiuG3xd crasp3lr1KkpfxUr3DGAMO3EABPIls7jBK7GyV4Lc0wpqIksVyXboMaY4IWHDQ3fdhCG 6+mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=/CKwGAP1YM0E79++1DlgbETzp2FWAVVw081oA+koUGc=; b=fO2Cpg32BYgRyC34cYez6adZkaw2h1BHACIL+WvfUcRQBcl5LqPXKnXTdjSzuBl4Jr p/tzYS+HyrRwgmody2mGVueFnahupqvF1Q6isYIJCS1A7/v2/Wkxzi7opAhQrEV+7b7y THXS+xhAjDnkekZADu2czSmtZ4UmNyypaR1kbei8T1ELBwcN6NBSTaHMii1A4fYSPz3u GC7Ny7dr1s1ef3PnLVAi8LyVcMh8+AXRRkA+jo8hIEhAMARF6EENSbnGD34YHJYrXHmS j7tNFfhlQGFiBsTADwYfDiHFagdkCIMU1ALc7bJ3GMOD+5PMujc0PUVjCGVr9NEHjKTQ +6lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=UDrPGLdY; 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 f24si11143087wmj.18.2020.12.07.04.56.58; Mon, 07 Dec 2020 04:56:58 -0800 (PST) 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=UDrPGLdY; 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 84C63689A0D; Mon, 7 Dec 2020 14:56:37 +0200 (EET) 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 C4D8B689A0D for ; Mon, 7 Dec 2020 14:56:30 +0200 (EET) Received: by mail-qk1-f195.google.com with SMTP id z11so3134012qkj.7 for ; Mon, 07 Dec 2020 04:56:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OERLF4zwwkwOcBFlsGQTepTZ0Z335riwj7aK8UQqPe0=; b=UDrPGLdYdmINLaizTJt1Sva60xajHKGInB0canKYXURErRbvCeRvJgAG9+Mz2NqlgI OMQeupvuyJzxqyjYwNxfR36dlL1JiHMdwJFVYkPZkTWXOUsPbpohYLlruogXEpqDaImP UAVGreXFeuyeHYGBEP5Zh8VmUW3VIsCFKd7EnXUiZT6uspgjukRV6SSFRXUEBbNobhMP 6nBaveDvv3eYNTK6giQQcBRDpd71hIm/5C9TbqOLab7tQZKce9bgDyuOhZQrFBfFauJj Repk/742eLprH/KRKzpDNTJN6AxRxGgXqy+2H6eTi/L80J/srbTTfy1cGs5K+Tj6x8xC AuEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OERLF4zwwkwOcBFlsGQTepTZ0Z335riwj7aK8UQqPe0=; b=M2VhvIXH76Qq4EgUpBmv/eE1H51EqXcD3pLPnM05Nbau24B/DTp3i11ulyGleqfXli c5Xd2ERvsTVR6deJ+rDcZYgzb2Jj2WVjTOSeJlHTjRMtKJmQXk0SK6V0uh119n/ymoww xZ8nfTSmgEpAHWW4ayuyERFABnljQHoHZ4YSNX7hl+k1lmrb1VpQ+EpAl6CWMOdfmVwJ f1qeuuMyo7QbwXYIkiBpMuaodcusEVOPJL4xRpWTIa57wKtOpgG5g37rc88vGo22DTfT aiVJy7IsrL9d2/IvkjxWZhIKTy0cQVaBiydA5mu3zKmktos9qV8spBoUDXT/AbCfolOt 9yxg== X-Gm-Message-State: AOAM531SsD9U1I8C78Lq6rJ50HmcE/os9kq2xQntGtOu72KR/ckhVlZP XXOGAa3uC7t6NT/Hl9Qsj5pQ3oI6hNHceQ== X-Received: by 2002:a37:5243:: with SMTP id g64mr23753632qkb.248.1607345789087; Mon, 07 Dec 2020 04:56:29 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:28 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:43 +0000 Message-Id: <20201207125545.621159-7-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 6/8] lavc/hevcdec: Set max_num_merge_cand to uint8_t 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 Cc: Linjie Fu , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PxAMHUwa4eim Content-Length: 1386 From: Linjie Fu uint8_t is big enough and keep consistent with the definition in cbs_h265.h. Signed-off-by: Linjie Fu --- libavcodec/hevcdec.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 1164af2862..464eb7cd3c 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -301,7 +301,7 @@ typedef struct SliceHeader { int beta_offset; ///< beta_offset_div2 * 2 int tc_offset; ///< tc_offset_div2 * 2 - unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand + uint8_t max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand uint8_t use_integer_mv_flag; unsigned *entry_point_offset; From patchwork Mon Dec 7 12:55:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24408 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2575556ybf; Mon, 7 Dec 2020 04:57:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJyTR9RR0BSOg6oCeqXLlWOCgCoojxBf/GP98YM6GFKsI4TY1JidJH1fDXC+k9d2OhLpFWzU X-Received: by 2002:adf:f9c5:: with SMTP id w5mr19109615wrr.69.1607345827919; Mon, 07 Dec 2020 04:57:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607345827; cv=none; d=google.com; s=arc-20160816; b=nZ693f1iNmsDTs05oEufs0QpU/9Nu+HU7k78t4jflGwyJcKc4TAfL8/Et9XShySdxH eu+OuDVLmJeAI5RJQ9yqweVTJcPA8tm6nLlgLqwdk9MFR3fURSnxNGGOZkyAsBXozt2H de4YlpNG01GzGCtLqMWB9IhLqo6mfJjXzarnmHM72841523rhRralNrNi8rOukYEUDed rrb4UPzpT1Tqhf2kn0QM0S4n5jQ4uEX0sE2bRhXoIPAz5fYFCCSrSZe+ccB0q2JjU8w5 L8O+HpBOvsB6dm7dSKrMlU/v5Yz7rx9NB+ZrmyJX6siBq0iNus4s6eo+QFh048tSw4x8 bR1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=jc47XIiDxJK3P+y6TqrX0wX7XVleAkBv0Eo4TFAWk90=; b=toZvArE4zLAhc/1g9u5JLVz8joHNpAC2Icf/7/1vxgCtgjPeXIJB1j1Ujz3Px6o4oC XtpKciWQkZjX3mM0w/AY5Kf0sHokrkPaM3hDV3XCau5pjOkn2i3HL5eYr+XEuFk6vB+r kIgHO9ildkDpgMdhtmbJT+Dt9s6BLACDTxCOXKYTboB5CTOOAEG2wjWkcwL5Iul/Zjv0 9gIYnRT2/2wxRLNWWWLrzPMAHRey7TYkG0+PweyG5Bmt6MQ1MwLt6AxfE6fBMHdzMPGs PWpGgI/le8orXvfyCnPt/vNzhnlQBsLZNpHCQ19ERkWIqUxs0ZtJlxzYtPnv9mhm8Ig7 hNmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=p9BP2owo; 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 f10si10958550wre.89.2020.12.07.04.57.06; Mon, 07 Dec 2020 04:57:07 -0800 (PST) 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=p9BP2owo; 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 17C1D68A1CC; Mon, 7 Dec 2020 14:56:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 22D9A68A1C5 for ; Mon, 7 Dec 2020 14:56:33 +0200 (EET) Received: by mail-qk1-f179.google.com with SMTP id q5so12292700qkc.12 for ; Mon, 07 Dec 2020 04:56:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GQMDpvX3ABI+GyrNRQUYzo7++SRroAMcDVshxbHTuKQ=; b=p9BP2owoxuZA/kle7FAlEw4zzFI7R35ypKubW+TK5/7AAhV0WLGUJxYPr0f6dG7Vbx /iae3E2owVcaS08cIxwxeYCciW7Gi2rd39L5Dmt7MKQ1dsqryZf0rmJ27qs/L6/B0tlV 7/gF+Tef7xxHVkWG3mZypbSYHlUHwzIEN3oLINsfXoVJxm0Jjxa5Dfn7hZKf0RgnTqKJ KsFwGc/kswPmu+ESYintgS+ylBJ1JT+0plFg8FfJZNrgrasx6nqkGfItjh2+dB8mJK+n EzajqFDrZzu6we/ibEqobXv9W4Kk3QmI2ug1RjExremTzUjW4f+4oDGR89rUmBJs6ERu jtQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GQMDpvX3ABI+GyrNRQUYzo7++SRroAMcDVshxbHTuKQ=; b=pmM6V9DPQlC0lgQ3u6vBhslGySHOiGimes4oUWGWCZApSqUjk+fHdlYFFjpBNIOv5t L7FIUWQZYlbGA3ss5pheQSbF/Fn4u7sUsl4fGbNN8NQdm5VS65e/AHMpgsesqf0Ki9P+ zcUEpDMMxJLS/3JviJCvE+oVjSad4OPDcBW35CibhiNKa2t2YZ2mVuLprLwWa1R3apeL okfgUYZj5/TxrtcZOeDGGUqp8296CuwZ8jZu9GASrXppKf+7RiBQD4oerfLgAAFki9/u 3bo0m4m2RsO/FZwey2AOJcrTPTkVbzLyT6baEwfVJ+7Fu0aujMh8kvLM7AeG25xLvNHn NqJQ== X-Gm-Message-State: AOAM53368ahI4sFeQqE6GfiwJ3dCcroVTSCrPkZ+CLDRfCdDajmoKHuS cq8HpXK45tuTYNdR39+eYnI0U0t0iDZgwQ== X-Received: by 2002:a05:620a:16a5:: with SMTP id s5mr505516qkj.368.1607345791484; Mon, 07 Dec 2020 04:56:31 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:30 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:44 +0000 Message-Id: <20201207125545.621159-8-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 7/8] lavc/hevc: Update reference list for SCC 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 Cc: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /Y9Kz+As7yEd Content-Length: 6347 Screen Content Coding allows non-intra slice in an IDR frame, and would mark the current decoded picture as "used for long-term reference", no matter TwoVersionsOfCurrDecPicFlag(8.1.3), hence some previous restricts are not suitable any more. Constructe RefPicListTemp and RefPicList according to 8-8/9/10. Add a check for native decoder to quit while self-referencing is detected, since it's not supported yet. Signed-off-by: Linjie Fu --- libavcodec/hevc_refs.c | 27 +++++++++++++++++++++++++-- libavcodec/hevcdec.c | 6 +++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 4f6d985ae6..ba32e232bb 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -301,7 +301,7 @@ int ff_hevc_slice_rpl(HEVCContext *s) return ret; if (!(s->rps[ST_CURR_BEF].nb_refs + s->rps[ST_CURR_AFT].nb_refs + - s->rps[LT_CURR].nb_refs)) { + s->rps[LT_CURR].nb_refs) && !s->ps.pps->pps_curr_pic_ref_enabled_flag) { av_log(s->avctx, AV_LOG_ERROR, "Zero refs in the frame RPS.\n"); return AVERROR_INVALIDDATA; } @@ -328,6 +328,12 @@ int ff_hevc_slice_rpl(HEVCContext *s) rpl_tmp.nb_refs++; } } + // Construct RefPicList0, RefPicList1 (8-8, 8-10) + if (s->ps.pps->pps_curr_pic_ref_enabled_flag) { + rpl_tmp.ref[rpl_tmp.nb_refs] = s->ref; + rpl_tmp.isLongTerm[rpl_tmp.nb_refs] = 1; + rpl_tmp.nb_refs++; + } } /* reorder the references if necessary */ @@ -350,6 +356,12 @@ int ff_hevc_slice_rpl(HEVCContext *s) rpl->nb_refs = FFMIN(rpl->nb_refs, sh->nb_refs[list_idx]); } + // 8-9 + if (s->ps.pps->pps_curr_pic_ref_enabled_flag && sh->slice_type == HEVC_SLICE_P && + !sh->rpl_modification_flag[list_idx] && rpl_tmp.nb_refs > sh->nb_refs[L0]) { + rpl->ref[sh->nb_refs[L0]] = s->ref; + } + if (sh->collocated_list == list_idx && sh->collocated_ref_idx < rpl->nb_refs) s->ref->collocated_ref = rpl->ref[sh->collocated_ref_idx]; @@ -423,7 +435,8 @@ static int add_candidate_ref(HEVCContext *s, RefPicList *list, { HEVCFrame *ref = find_ref_idx(s, poc, use_msb); - if (ref == s->ref || list->nb_refs >= HEVC_MAX_REFS) + if ((ref == s->ref && !s->ps.pps->pps_curr_pic_ref_enabled_flag) || + list->nb_refs >= HEVC_MAX_REFS) return AVERROR_INVALIDDATA; if (!ref) { @@ -492,6 +505,12 @@ int ff_hevc_frame_rps(HEVCContext *s) goto fail; } + if (s->ps.pps->pps_curr_pic_ref_enabled_flag) { + ret = add_candidate_ref(s, &rps[LT_FOLL], s->poc, HEVC_FRAME_FLAG_LONG_REF, 1); + if (ret < 0) + goto fail; + } + fail: /* release any frames that are now unused */ for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) @@ -518,5 +537,9 @@ int ff_hevc_frame_nb_refs(const HEVCContext *s) for (i = 0; i < long_rps->nb_refs; i++) ret += !!long_rps->used[i]; } + + if (s->ps.pps->pps_curr_pic_ref_enabled_flag) + ret++; + return ret; } diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 6a029b270e..e1d469658c 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -637,7 +637,8 @@ static int hls_slice_header(HEVCContext *s) sh->slice_type); return AVERROR_INVALIDDATA; } - if (IS_IRAP(s) && sh->slice_type != HEVC_SLICE_I) { + if (IS_IRAP(s) && sh->slice_type != HEVC_SLICE_I && + s->ps.sps->ptl.general_ptl.profile_idc != FF_PROFILE_HEVC_SCC) { av_log(s->avctx, AV_LOG_ERROR, "Inter slices in an IRAP frame.\n"); return AVERROR_INVALIDDATA; } @@ -752,6 +753,9 @@ static int hls_slice_header(HEVCContext *s) if (!nb_refs) { av_log(s->avctx, AV_LOG_ERROR, "Zero refs for a frame with P or B slices.\n"); return AVERROR_INVALIDDATA; + } else if (s->ps.pps->pps_curr_pic_ref_enabled_flag) { + av_log(s->avctx, AV_LOG_ERROR, "Self refs for a frame is not supprted yet.\n"); + return AVERROR_INVALIDDATA; } if (s->ps.pps->lists_modification_present_flag && nb_refs > 1) { From patchwork Mon Dec 7 12:55:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 24418 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp2578919ybf; Mon, 7 Dec 2020 05:02:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJxcWzLeAlEyqLIiZd1syizAXb9JiUTeJbTQtUV1f0/VKMFbwvtEYNSFmYSvCKl4DwhP/4ET X-Received: by 2002:adf:e788:: with SMTP id n8mr19540355wrm.84.1607346150107; Mon, 07 Dec 2020 05:02:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607346150; cv=none; d=google.com; s=arc-20160816; b=JNu0SCyvQR5q/wjUVFTiAY5pHuyRFGB+DlfYLXY8tUlH9gQ41N/FjuEhRYylX1ZrIm W4iIaqtBm6hdxyZlRL5vAzDnDUJga5RNI5bNTKSzgbX4hEKZSTlrbBNOKC8GmoF/kfVK K//5wZeU6fMbZZIE+dPMZxrfHEkdGGfe8IFmNcIfXncD3YMekmLW8Y64ZknEx64kJMyO HQc8Zhra/nF7o7ICyBq/Ra2QvuIQTiquT0qMqy76bfEswSX5+Y3McxHdKmv8uCDLx7Y9 xXx/Kj6UKodKz2RNHxsip51QzPBOi6UtglwyIFyLRc+5VPjiLa5owOMQ3LeHfvpeiilZ O7Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=ZG7/FJUA88d/gIpuZb6cyd1ZhqZeSJx4EPMXx8ddzNA=; b=0/B1WQUKDaWRDOU++QP7GUEVfjR5R7wKZ9UH0Hi4QmzHs/YhP+JzLzYL6aT5od9a5n JC8fdmJ3Q/utKWH1vC3RlGeHxQ2tnDVhS8jULex/IRXRiSuog95vt87UDqUBYBQZ6mKE 2+e7+3+OtoeM6LlfFGgVmrCwN6tlejcr3gNylbWYVSqdBJoDa7WT5hCxXwA6wyNN1cjG tOmP03VccuuxkTpB5CTLCHvOHmz6UbqMMccH+n9IH6u9KA1iAqBFPlEVqSQHcxpVZUSx 3Al8yY/MCmo5q9LwaQyWEQYTGHpE03sC/RFSCLUBxl/w8nNY4gU+URigzDAZBQHzo43f mB6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=nw9hMbiC; 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 v12si12105950wrc.23.2020.12.07.05.02.27; Mon, 07 Dec 2020 05:02:30 -0800 (PST) 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=nw9hMbiC; 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 A9A9168A276; Mon, 7 Dec 2020 15:02:26 +0200 (EET) 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 D5DCB689A5E for ; Mon, 7 Dec 2020 15:02:19 +0200 (EET) Received: by mail-qk1-f193.google.com with SMTP id y18so12298998qki.11 for ; Mon, 07 Dec 2020 05:02:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sqCQWuqXaqnhER534/PYGqg9zM42ac4uOUZ4NSlH05k=; b=nw9hMbiCOvVZUHPzJl5r6oHCIi7OXxeD5F5ieRuKPapgyPko9KhAwfW37TiIu+4oGG 6ORPVef52Nytlhii1oBaGIDdh8b3C4ZDloqynJa34U+eSjcU1crzieCDFmU7kFHe7GoM 7w2I1s2+mCVAfvWW9gypUN6ZHsFE7/F2eJQtFwT9Is81LqnDyorI0BhmKvYFMh7oYbUn ED2zMW1zmQS4n6AQXozBniqGLZMHFBP6mX5VcrWmpi0yHjn8A9PaDEy5WIhYYC83GaIh bDhw5O5XWRsr1lFzRlGW8ugMat2r04myO3D4hAMtnMO3LFkd/eQnX3WBdb8ZZx6W9je3 3iww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sqCQWuqXaqnhER534/PYGqg9zM42ac4uOUZ4NSlH05k=; b=JHKqKCeIMIxVM5fS3mOq4+vhjtevoFPbsc6u9v+sRmzMez0xrzPNsrwC8c3Svud7dJ e4lxKXXFhrdB6oPxQVWr2p3s/AFowG5hPOSNGaJKRQYN7UoYzxbH1F3aLhBKk6IMyYfh gIEaOb5vwfV/y/5mr5Q0Y8etv7buyVJBdEyr0JGwExabuevfbfBvdCV5RxTlFtNHaI2P hunLD2G1o5dWAR5av5c3Q64jS9IA1zKf6+CcdviG75mpZaYfjY+A06LfY6/PcTHxfG6C Dachm/kyl/G3ATeqU49/DMUBLPMRVpLtCi31ApGIMBDval67qVCObF288QmVeAtWHc04 3bVw== X-Gm-Message-State: AOAM532S6iR8OWVO8G6FVc2ERqAzjbLdvdwl57gkjAYon8a9NK8wVo7g E5ZWWV9M+6v606gk+BQZqHL2dKggKpSJNQ== X-Received: by 2002:ac8:7501:: with SMTP id u1mr9815033qtq.346.1607345793604; Mon, 07 Dec 2020 04:56:33 -0800 (PST) Received: from ip-172-31-39-116.us-east-2.compute.internal (ec2-52-14-134-25.us-east-2.compute.amazonaws.com. [52.14.134.25]) by smtp.gmail.com with ESMTPSA id w15sm1638489qta.95.2020.12.07.04.56.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Dec 2020 04:56:33 -0800 (PST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Dec 2020 12:55:45 +0000 Message-Id: <20201207125545.621159-9-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201207125545.621159-1-linjie.justin.fu@gmail.com> References: <20201207125545.621159-1-linjie.justin.fu@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 8/8] lavc/hevcdec: Prompt detailed logs for invalid PPS id 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 Cc: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6Jf/P0oxZ73u Content-Length: 2878 There are 3 functions reporting the same log, which is not straight forward enough for users: - hevc_parse_slice_header() - ff_hevc_decode_nal_pps() - hls_slice_header() Provide detailed logs to distinguish from "out of range PPS id" and "empty pps_list[pps_id]". Before: PPS id out of range: 0 After: PPS id out of range or empty pps_list[0]: 0 Since 0 is within the range of pps_id, it's more clear that there is an invalid pps_list. Signed-off-by: Linjie Fu --- libavcodec/hevc_parser.c | 2 +- libavcodec/hevcdec.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index 463d352055..0c6b50c0b9 100644 --- a/libavcodec/hevc_parser.c +++ b/libavcodec/hevc_parser.c @@ -75,7 +75,7 @@ static int hevc_parse_slice_header(AVCodecParserContext *s, H2645NAL *nal, pps_id = get_ue_golomb(gb); if (pps_id >= HEVC_MAX_PPS_COUNT || !ps->pps_list[pps_id]) { - av_log(avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", pps_id); + av_log(avctx, AV_LOG_ERROR, "PPS id out of range or empty pps_list[%d]: %d\n", pps_id, pps_id); return AVERROR_INVALIDDATA; } ps->pps = (HEVCPPS*)ps->pps_list[pps_id]->data; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index e1d469658c..02c489e1f9 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -554,7 +554,7 @@ static int hls_slice_header(HEVCContext *s) sh->pps_id = get_ue_golomb_long(gb); if (sh->pps_id >= HEVC_MAX_PPS_COUNT || !s->ps.pps_list[sh->pps_id]) { - av_log(s->avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", sh->pps_id); + av_log(s->avctx, AV_LOG_ERROR, "PPS id out of range or empty pps_list[%d]: %d\n", sh->pps_id, sh->pps_id); return AVERROR_INVALIDDATA; } if (!sh->first_slice_in_pic_flag &&