From patchwork Tue May 9 15:29:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3632 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp1393287vsd; Tue, 9 May 2017 08:30:34 -0700 (PDT) X-Received: by 10.28.186.65 with SMTP id k62mr1899015wmf.0.1494343834334; Tue, 09 May 2017 08:30:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1494343834; cv=none; d=google.com; s=arc-20160816; b=AZBExuuHNMADb6uF1vh8+sWFloxw6VvcfDZ98ff5k3ZEYERjQpO9xVn58Bcp+sNH4g S98tzTJpnkBHsDDNbED43qlM+9r2IIbqxoym9d5wjMz7NwkO/zzV1M+0JAysFzL6X56H XKZ27PaLhPU2JFlHft+Cq+M3umN0naWSMuh7C7CgKLpwM/LA4IiV2IyyYfd+YG0EP5hA EDs0dHeN81hgB7bt2iqubTdZvX5bOFtmihXBycN9TCgdPRMdPv+BNfloVjtmtCGdY0o7 +YsnZsf2w1x8QsC7OBET47kXtKISnMIvsPIg3JVEG4E5tdzrqYwTE2ZWV0j5iIXnp+vA Fe3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=Nc3OSFKpeyk+LZ9TW5rwPFUSuUDOAGHLR7NwvisbW6c=; b=m6fz3cLpG+77s/qe0RwdgswIU4AgS9NFX/xQlDb3w8OeO4u3+RxoriGwjvkZf5B4eb lM0TTNC2NrZk68fAqeHKmtpKXX7RN3XSkK/fgqiT0jZ8zelwJJAg+DQDccH0PSAaXebe 5J13xe33bfDb5JXx5+ZjYJwEOacMFQovOWsV+oM5Uui3AaYvUB4imfmZLE2IcmsNdodt Os2Hngpu71cHEW+f7553+iw2UDkZPlEU5H3qungUDQwO440t4bT5jfYS14y634OUUbRs tRvYz7VDhBaPVmhv6S1dDVRDoX7CyyERBvMkhtzpm5KLaHtPU2gdFGwvC0mTzP3Ivv7a /cKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; 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=NONE 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 l35si294923wre.212.2017.05.09.08.30.33; Tue, 09 May 2017 08:30:34 -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; 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=NONE 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 300D86883BA; Tue, 9 May 2017 18:30:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D0F9C680934 for ; Tue, 9 May 2017 18:30:17 +0300 (EEST) Received: by mail-qt0-f194.google.com with SMTP id r58so401534qtb.2 for ; Tue, 09 May 2017 08:30: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; bh=69ZIIq8Ax0xM2bSeH2rGwJpk8I3lxZx/P6Fv1pNyVEs=; b=TkOSd9gun+B6HxiM91Gq73LFmNUISAm7nAGoR7pt/5EsJvQO9u+ZhvZK4FKQtN5aix VBmutJPXO0adqlwQN9oADWAhJxlDlx5KZW+ZC1cecwkezFKy2O/7aqEhUQ+nwfDmcY/l 1DuMC79ypviH4yqVreio+TOiHwYZS5MBcwEAntt+sfd2zt+7FIYY0rzJeRJ0tVrdNiOW t2oZqiE4tMJhkQRX6xhIxpR6lkOXkFm9sTMH1zyQCgGYIg79OF7YQdkNR6f3SZB0K4Pj HsdnOE4m/qg+2TYdDuu3sbJKqoFKMw9q6BI9boJiaLZNbRHLZVc9QeEuogNb3xfsxehe O5vA== 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; bh=69ZIIq8Ax0xM2bSeH2rGwJpk8I3lxZx/P6Fv1pNyVEs=; b=D9sl3g+vintJO1aF3ZJnKiO7coxqKl0KFMlgscWVd6xPmzHqtQH7jbxwzTRzkyyfR2 IIjid/jDNur24v41gB4LkSwjRMZm7zp/HDCVauDJXsH3BD3JWfr7MwfHKfkncWyQ3csf N5hCNdMZur5Nvn5QvXpH3aweWKxVbDcoOpU3+PhkV8AUhik2ok6hZCyajiHqNCY6pGQ+ sTJiybJPharUBb4qIecHvuRRzIClzstxjhsBXLimEyreCpbPdmnwdshPB508x4/sfAH5 8M5Ba0248oqA9f/bl1DqZ/hPXTuNIaQMhM2D9qp9A/r+VgA0lXJBAkTA99YEgcgCzuKp FVOg== X-Gm-Message-State: AODbwcBS6N5YEFo7HMrM/FgTX2E4yV3eMZ4DOTTV8EcLodxCJJnmW+wS MmLWZ1U03FEl+Ob7 X-Received: by 10.200.42.171 with SMTP id b40mr823943qta.92.1494343823058; Tue, 09 May 2017 08:30:23 -0700 (PDT) Received: from localhost.localdomain ([181.231.116.134]) by smtp.gmail.com with ESMTPSA id 36sm187825qtz.16.2017.05.09.08.30.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 May 2017 08:30:22 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 9 May 2017 12:29:55 -0300 Message-Id: <20170509152955.9092-1-jamrial@gmail.com> X-Mailer: git-send-email 2.12.1 Subject: [FFmpeg-devel] [PATCH] avcodec/hevc_sei: fix amount of bits skipped when reading picture timing SEI message 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The code was skipping the entire reported SEI message size regardless of the amount of bits read. While in theory safe for NALU where the picture timing SEI message is alone or at the end as we're using the checked bitstream reader, it isn't in any other situation, where every SEI message in the NALU after the picture timing one would potentially fail to parse. Change the function name to one more in line with the rest of file, and remove the bogus "Skipped SEI" debug message while at it. Signed-off-by: James Almer --- No test case, all the files i checked plus those in the FATE suite seem to have one SEI message per NALU, or the Picture Timing SEI as the last one. libavcodec/hevc_sei.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index c5054bfaab..0ecf00c14c 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -124,8 +124,8 @@ static int decode_nal_sei_display_orientation(HEVCSEIDisplayOrientation *s, GetB return 0; } -static int decode_pic_timing(HEVCSEIContext *s, GetBitContext *gb, const HEVCParamSets *ps, - void *logctx) +static int decode_nal_sei_pic_timing(HEVCSEIContext *s, GetBitContext *gb, const HEVCParamSets *ps, + void *logctx, int size) { HEVCSEIPictureTiming *h = &s->picture_timing; HEVCSPS *sps; @@ -146,7 +146,11 @@ static int decode_pic_timing(HEVCSEIContext *s, GetBitContext *gb, const HEVCPar } get_bits(gb, 2); // source_scan_type get_bits(gb, 1); // duplicate_flag + skip_bits1(gb); + size--; } + skip_bits_long(gb, 8 * size); + return 1; } @@ -272,12 +276,7 @@ static int decode_nal_sei_prefix(GetBitContext *gb, HEVCSEIContext *s, const HEV case HEVC_SEI_TYPE_DISPLAY_ORIENTATION: return decode_nal_sei_display_orientation(&s->display_orientation, gb); case HEVC_SEI_TYPE_PICTURE_TIMING: - { - int ret = decode_pic_timing(s, gb, ps, logctx); - av_log(logctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", type); - skip_bits(gb, 8 * size); - return ret; - } + return decode_nal_sei_pic_timing(s, gb, ps, logctx, size); case HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO: return decode_nal_sei_mastering_display_info(&s->mastering_display, gb); case HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO: