From patchwork Sun Oct 31 22:48:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 31266 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5e:a610:0:0:0:0:0 with SMTP id q16csp2037458ioi; Sun, 31 Oct 2021 15:48:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3ZOyG0HnBf7rfsOM5UISos1mb9x5EfYvTP1jwCTpcQ+M+rzbSL4vYCHkPKHcCXLNon/z+ X-Received: by 2002:a17:906:1f0d:: with SMTP id w13mr13562612ejj.161.1635720501703; Sun, 31 Oct 2021 15:48:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635720501; cv=none; d=google.com; s=arc-20160816; b=Jz5NU7ClSmI+M8cjcLZFAdMi3fMUXJhvslmTjT5Yu30tEwCTubALB57dz2kx+FogAI m1v8Cq8gH7QMWNSyh9tU5xZoxIefEBLklIHphiW3a7VTsCjdvbL4kSQXWxySI6NUy+wb AjMAkIGhQggAKIkeOJPbGaS7qz92/IlZpc3hoDQxfhA4OzPIQx2IqTPANmreaBso0M0c CMkGMav4ZhRvchiCXt5ijB12cLAmtFz9GtquB1HDwGTcUJvbOpxOgTou0PDD9K2yd1XY 1KliUXalR81obpfb+eKPbZ0h4IYDKLbTYD5Of1oTUz/HdceyWorAlaj3jdv2CjPhVKVN c1eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=HZlkyD2Xwnt0avl/UfMqJLntul1o9jFXLgwmq5qa+IY=; b=kWjH0q0GhFNlqZ+5NZudHJO5nh/eBYH+piK1iYX6+IXCihRxf0IssI0/p6aJxkj6/u Vbn4aM19CcnDmuaniUAcw/vFblmvtKk8KSYcrf2BGskowgQ7BAkp0/Q8Dru8VsJXclsi Jq32QfPqiiVhz58udQCJU2CV9QKevFcptdFO2GPFS3XzqpxEQ0qopsy9aCf5J6imMp+j HSAhiHQQ06siuM23G8MiTwMrtFPa2lxurweLHqaxHP/0TtEOphrfQ7Psbr9yWryZapuX YtnZ1Tqt0OwRg91CYIrYW9HHh64AK5HECtNIE8EzcE9ttvtfSEIocFlBLh9DGroXyemA iNqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=awscSy4T; 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 g12si22125851edb.152.2021.10.31.15.48.20; Sun, 31 Oct 2021 15:48:21 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=awscSy4T; 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 0743468A878; Mon, 1 Nov 2021 00:48:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E83868035C for ; Mon, 1 Nov 2021 00:48:10 +0200 (EET) Received: by mail-ed1-f51.google.com with SMTP id m14so5471956edd.0 for ; Sun, 31 Oct 2021 15:48:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=gCmp4Zx8kyeFt/L+6KwB1NyBfS4QvN26hrzRFMQGlF8=; b=awscSy4TgL8W2WwG3ON3axEFuhS/v0RosjfyWxM63skwncdNldjx+bYkjJIGaB0UDh 80+yv+/Y4iFMiHc/Ptix3bsdPkpNhjvgoxnsCzjW+K+51kV7YhJpUuur+yDPcOo0vz91 WoRZj4yrZ8c0fcbPz3l9lI5p8t2hBNdFJYBMh1gPnNGbNzV2AEGTR6GWFutdzShS8IlQ bcPJDatBgfhhG0u0vGKaGbahiJkxsYricLHsihgAfG17P3h8V8uUFEMhanwOUDZULuPA RCzBks2lrdNuVa2Gyc34lztfNVHsie1+wg3AaKAT79T5A8MZs+a1BsrNbyZlAkwM2Bbr QvsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=gCmp4Zx8kyeFt/L+6KwB1NyBfS4QvN26hrzRFMQGlF8=; b=DtQOD9nlGUHM/UFHL0wmfKzkRfVxIs0i+zLz//HpL+VjzNPVr0FVqJe8x48pWiOHME hw9/t1+RTrJUrU7H3sJexgeCjemTPbreBRnizba46Q4rSVJRGsIi5fue+w1Z84/CUAF/ nOqIK8I0pdxvjE/bZkDc1WtsOdEJdbSFE5dHCfRfk4cfeS1ns9mq7KnXtx+rbLvsL6zH VpWj1U6/ZGrUdipg8lTJOc/B75jWvDke8mGFCD5Mda2ezPuKqRD8ltmNk5QUYO7ipISE 5xogPpeP/uO0iv4zbYwO0fG8cr/MWZyJGv0bNjkWevcVAdIqjfrAkVmHylmhuPj81SOW KBFQ== X-Gm-Message-State: AOAM530vxmrjR99Wg9Jl3PcXM08WY23z0Wv9Qf1az/kPobNvJN3nVN3N D1dNFQHaAzDoSdYMuZ40F5Y1j0FNHow= X-Received: by 2002:a17:906:3d62:: with SMTP id r2mr31037562ejf.174.1635720489393; Sun, 31 Oct 2021 15:48:09 -0700 (PDT) Received: from localhost.localdomain ([95.168.118.28]) by smtp.gmail.com with ESMTPSA id w1sm1236317edd.49.2021.10.31.15.48.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Oct 2021 15:48:09 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 Oct 2021 23:48:25 +0100 Message-Id: <20211031224826.77737-1-onemda@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/dnxhd_parser: make parser more reliable for smaller VBR frame sizes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: BILq8/IU+xRg Signed-off-by: Paul B Mahol --- libavcodec/dnxhd_parser.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c index 4ba619c9bb..ff80294cca 100644 --- a/libavcodec/dnxhd_parser.c +++ b/libavcodec/dnxhd_parser.c @@ -62,7 +62,14 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx, dctx->cur_byte++; state = (state << 8) | buf[i]; - if (dctx->cur_byte == 24) { + if (dctx->cur_byte > 42 && (state & 0xFFFFFFFF) == 0x600DC0DE) { + int remaining = i + 1; + pc->frame_start_found = 0; + pc->state64 = -1; + dctx->cur_byte = 0; + dctx->remaining = 0; + return remaining; + } else if (dctx->cur_byte == 24) { dctx->h = (state >> 32) & 0xFFFF; } else if (dctx->cur_byte == 26) { dctx->w = (state >> 32) & 0xFFFF; @@ -74,11 +81,8 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx, continue; remaining = avpriv_dnxhd_get_frame_size(cid); - if (remaining <= 0) { - remaining = avpriv_dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h); - if (remaining <= 0) - continue; - } + if (remaining <= 0) + continue; remaining += i - 47; dctx->remaining = remaining; if (buf_size >= dctx->remaining) {