From patchwork Thu Aug 8 20:52:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: velocityra@gmail.com X-Patchwork-Id: 14325 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 A26F644A056 for ; Thu, 8 Aug 2019 23:55:38 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8CA7368ABA6; Thu, 8 Aug 2019 23:55:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 682CB68AB42 for ; Thu, 8 Aug 2019 23:55:30 +0300 (EEST) Received: by mail-wr1-f44.google.com with SMTP id 31so96266843wrm.1 for ; Thu, 08 Aug 2019 13:55:30 -0700 (PDT) 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=k6m0UI50ceTCz0wcZyuuBTWmNE7q7dyvJM7UDSlc8yw=; b=F0KQ+m9XdNVf0tjDyW2IhQ1CGfkTwavQwSzonEQBNjc+z5MRyscr1prbpSxSa/GQLW xYWVoJ2KWrKGP6C2QwmqrF9CO5FxSYkczUbGwtIM8PhzwfnB8KCrBn0/NgfSihLy2FKC +WzjTYrnJHmYukEMzP3dQdm1Yl3tiyhZgTW8UkVbMUTWL+7ty3dDPBBV/rYD0nWuMDHE FkUvcAamJ2xyAaJV58RnLwKhLlGf+INeFOiuhni/czWsaGjT8YFZ8GNOhxNaeTQVp53m J+dBFz8Z8u/V7YeBl6QBB5UuJO9hHPl9bpmDbwuI2zY1ccRAO9LC4SYD2YDnYmTVHnf4 7byQ== 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=k6m0UI50ceTCz0wcZyuuBTWmNE7q7dyvJM7UDSlc8yw=; b=DSv9PjZ3Ip4VtrxfHaVOYKAyc8F3O22wG6UDHlPMLjdVD+mU/t1EXCsm/LkAEAWvro gq2iSVbTZspC16nNYXCj0OzAE+q8WDpggx3RLRGtIiiRS8OraXcjR9QMPTDLpYQoXjqF YocZ/olTD73Ot6zznlamjaN73u317xbFf7GeEucKCsj/B1SBpJsQS2Ksd7wRva4njTYC ps9FOXxdyHeV9jk4JtqSSfNQ3KGj+GJq+AP/OYPRUbmLZK8rovjzyNg1DPicRNEGlQzz l4Qh3eyT5Kwhk5Z5BCD64WLg6bdn4K3usyWHmg/MGXFEWpByiwPfvsNbbTZsJUCAWnhV TAMg== X-Gm-Message-State: APjAAAVO/xNfWa1p2FvuAk9mbmCSIsFPiFAZ8hKMsXF3UX+7vP2SgoqA LNkAUts1wz4GhOlR6ipFjBdUBTf9YM4= X-Google-Smtp-Source: APXvYqzntqxDKcuvtlRGG/6wzHvn30YWExi1gyD91guuvQlxtl3UkipKn3kN3IDqE3CtiGnPiIRGdg== X-Received: by 2002:adf:b1d0:: with SMTP id r16mr19906127wra.332.1565297729654; Thu, 08 Aug 2019 13:55:29 -0700 (PDT) Received: from localhost.localdomain ([2a02:587:2409:5200:1de8:6b2e:8289:ee0e]) by smtp.gmail.com with ESMTPSA id g25sm3446686wmk.18.2019.08.08.13.55.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Aug 2019 13:55:28 -0700 (PDT) From: velocityra@gmail.com X-Google-Original-From: velocityra@gmail To: ffmpeg-devel@ffmpeg.org Date: Thu, 8 Aug 2019 23:52:24 +0300 Message-Id: <20190808205233.16368-5-velocityra@gmail.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20190808205233.16368-1-velocityra@gmail.com> References: <20190808205233.16368-1-velocityra@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v11 05/14] lavc/jpegtables: Handle multiple mappings to the same value 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: Nick Renieris Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Nick Renieris Some JPEGs [1] have incorrect DHT entries that map 2 codes to the same value. The second (last) mapping does not ever actually appear in the code stream, therefore ignoring any mappings after the first one fixes this. Without this, an "mjpeg_decode_dc: bad vlc: 0:0" error is thrown. --- [1]: Embedded JPEGs in "X7 RAW" and "X7 CinemaDNG" samples here: https://www.dji.com/gr/zenmuse-x7/info#downloads Signed-off-by: Nick Renieris --- libavcodec/jpegtables.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/libavcodec/jpegtables.c b/libavcodec/jpegtables.c index cbe5523cb4..6f596cfc92 100644 --- a/libavcodec/jpegtables.c +++ b/libavcodec/jpegtables.c @@ -130,14 +130,27 @@ void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code, { int i, j, k,nb, code, sym; - code = 0; + /* Zero-initialize huff_size (needed for multiple mappings check below) */ + k = 0; + for(i=1;i<=16;i++) { + nb = bits_table[i]; + for(j=0;j