From patchwork Fri Oct 21 12:56:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 38864 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp756335pzb; Fri, 21 Oct 2022 05:56:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM71PFERkqqfpWnVpG0b0urYoR49UvBDZqmIFy1Rqc8VdxI5VUvk2+YcOtdx+DqVC/UZ+KUN X-Received: by 2002:a05:6402:2694:b0:45c:a035:34bc with SMTP id w20-20020a056402269400b0045ca03534bcmr16872922edd.158.1666357002498; Fri, 21 Oct 2022 05:56:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666357002; cv=none; d=google.com; s=arc-20160816; b=oX6w3EQEFMCV8UcKkeMXJfUjkHu0MMwk8k9TBeaegO45q2tneoaxyDt+2p8fagCL/V NznDbYmHDrDjmuy4ni+9VKxha07QtKkLa3CNZ4gm/zOQPSgzwGE65RR7QPv8x5pf/N68 E0pryM5h+vgpDEFzZFLpjZ1z+BTdoHFpsd63vX8mVfApNrrw03qndJuS4K3ri15MmxaE vskw13aB51hQxTZZGE9ZJHfU9SXxfn62utW6lyjPtZ5BqntkJw/z57PQe/x4/Ec4Sv4L Z3DB49fOSeVAx/IOC3ZZCCtXh69fXa06iGkCRfidsRkPErC0DSoRnNltIW5H4FH5HB+8 J4gQ== 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=E/VD7lOLeZBItNSIkmq54Ey5xDUSqoeGaTTfAwWf9os=; b=LAuLLtvqcVxHu5d14cPAJSr3WErMVzw9BZAwEngJJUrVRRkaChS5TrPBGAy+nu1Luw iDdtoazYKPiLSegfjUp/WoU47X23B80/Y/g9/5cBWeQICyqaC7R1Y0mbB6gnsAUEQDPg cpZ3R3xZkmdzi2Fe360DnDap85JffyffFUPzL46/HbEvuUXNf5aOhII1g+bvSALk1YP2 SGL+M2fiuG1VEpnjoU5ciWwvWXhIZqzsNxkOI+t1qOx7arA9w4PJnkqTPi1Se69yOawp zBQOAUtuxle3Lu1rBJFioODpl8q02bs7bvsH4d6TAEQ4HybHRd/5w/2q6Pl7M3bdd5P/ IO3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=CaREaCW6; 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 e22-20020a1709067e1600b0073da5c8de1asi19006108ejr.178.2022.10.21.05.56.41; Fri, 21 Oct 2022 05:56:42 -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=CaREaCW6; 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 385D468BE86; Fri, 21 Oct 2022 15:56:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A86068BE70 for ; Fri, 21 Oct 2022 15:56:33 +0300 (EEST) Received: by mail-ot1-f54.google.com with SMTP id a16-20020a056830101000b006619dba7fd4so1731842otp.12 for ; Fri, 21 Oct 2022 05:56:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=a6pYP/71ctfYApUoRrig6GwLL3ZMtAWvPyIBht6Fydc=; b=CaREaCW6L5TdAgsQzFDwAiaQ/5eR3oRMF9D7e1rEvRanal3x4JhLFVYMVHCqJKHdMN XzKxq7qz5ycrHfAKSltXzUHaZH1lZA4t2LYzGXzA4a0Ggckg4kRBWkEJF8KqTG1ZXoWp +9dpZStFjrDHCt+RTTGtaJ2FjycoDm5Ud31J5H+okn8Rkk0j5KxYkjNKGrLNSH/z46mn 5U+VqlIj7D8wsPGz6QzHrBuMQB6lbiwAET3vczMelYTFgsSFrPNlWB/HENeCV6GVjtJA 6TfIIuWy4hhaY2M2gJJDSTJcJW+9slsYlTCokx4h2mgas/8TynA1WGPziOAhVYw2Pa2G HKyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=a6pYP/71ctfYApUoRrig6GwLL3ZMtAWvPyIBht6Fydc=; b=tYAkLbX5oa+77EAhXi5tBB8UC8tlxEQOT7862VrNg3lGfDME7gQyIBXMD/lh6RIW9Y Y51DSf5c5gM8OEaKxj9m7IOUFfzAg4TXicm7e8/KFNYqGUw0SRtlcM1jEZW5SOmAThby lCASMm52t/mouOvJpLeujdEc1fkpXxS8XTjydDyvOWjdHIFhnCziUhJwhKKQy0FFQOHJ 0CNsm9pf3rJxRcVgKhr34VrYrvxOHrQJ5g0tDRvplXJQW/Jv/5tDQzmQl4WTkLVOMN9p bMSfDYgE9XW3DPrblLvuvpeXp3L+yvsb91A2m03AQsd5fECgxPnhCN5okKChRYfdl52Q sVKQ== X-Gm-Message-State: ACrzQf190otDTAeQWoxTikTIim1NP9WaWdVLHx57HPcikxZ2Q0eSzQlO a8pDvrZEkI9NKmvtRONW6fXpR4J9OLM= X-Received: by 2002:a9d:6f02:0:b0:661:d432:fb52 with SMTP id n2-20020a9d6f02000000b00661d432fb52mr9984114otq.153.1666356991376; Fri, 21 Oct 2022 05:56:31 -0700 (PDT) Received: from localhost.localdomain ([191.97.187.183]) by smtp.gmail.com with ESMTPSA id s17-20020a4ac811000000b00480dccc0c2asm3735994ooq.14.2022.10.21.05.56.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Oct 2022 05:56:31 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 Oct 2022 09:56:03 -0300 Message-Id: <20221021125604.1107-1-jamrial@gmail.com> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/ac3dec: split off code discarding garbage at the beginning of a packet 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: 72f0OhtsFSWD Signed-off-by: James Almer --- libavcodec/ac3_parser.c | 19 +++++++++++++++++++ libavcodec/ac3_parser_internal.h | 2 ++ libavcodec/ac3dec.c | 15 ++------------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index 4f154bb7c4..425e1b4742 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -53,6 +53,25 @@ static const uint8_t center_levels[4] = { 4, 5, 6, 5 }; */ static const uint8_t surround_levels[4] = { 4, 6, 7, 6 }; +int ff_ac3_find_syncword(const uint8_t *buf, int buf_size) +{ + int i; + + for (i = 1; i < buf_size; i += 2) { + if (buf[i] == 0x77 || buf[i] == 0x0B) { + if ((buf[i] ^ buf[i-1]) == (0x77 ^ 0x0B)) { + i--; + break; + } else if ((buf[i] ^ buf[i+1]) == (0x77 ^ 0x0B)) { + break; + } + } + } + if (i >= buf_size) + return AVERROR_INVALIDDATA; + + return i; +} int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) { diff --git a/libavcodec/ac3_parser_internal.h b/libavcodec/ac3_parser_internal.h index bd4e1bbffb..2ac0e67ec2 100644 --- a/libavcodec/ac3_parser_internal.h +++ b/libavcodec/ac3_parser_internal.h @@ -79,4 +79,6 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr); int avpriv_ac3_parse_header(AC3HeaderInfo **hdr, const uint8_t *buf, size_t size); +int ff_ac3_find_syncword(const uint8_t *buf, int buf_size); + #endif /* AVCODEC_AC3_PARSER_INTERNAL_H */ diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index 340f6e1e37..8e40587ff1 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -1508,19 +1508,8 @@ static int ac3_decode_frame(AVCodecContext *avctx, AVFrame *frame, s->superframe_size = 0; buf_size = full_buf_size; - for (i = 1; i < buf_size; i += 2) { - if (buf[i] == 0x77 || buf[i] == 0x0B) { - if ((buf[i] ^ buf[i-1]) == (0x77 ^ 0x0B)) { - i--; - break; - } else if ((buf[i] ^ buf[i+1]) == (0x77 ^ 0x0B)) { - break; - } - } - } - if (i >= buf_size) - return AVERROR_INVALIDDATA; - if (i > 10) + i = ff_ac3_find_syncword(buf, buf_size); + if (i < 0 || i > 10) return i; buf += i; buf_size -= i; From patchwork Fri Oct 21 12:56:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 38865 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp756385pzb; Fri, 21 Oct 2022 05:56:51 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6/vDw2Tks/tHKcWDBxyu+aT+HljHnoKaldFO2Nr+0/2FyV/n4l2IiJdowk5oaOZao3x8t+ X-Received: by 2002:a17:906:8a79:b0:78d:9c52:2196 with SMTP id hy25-20020a1709068a7900b0078d9c522196mr15563270ejc.328.1666357011398; Fri, 21 Oct 2022 05:56:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666357011; cv=none; d=google.com; s=arc-20160816; b=qJjy+habua8cRXfYRsDh52D/oMg3htx7hMO4eKJqgjOlD+tFNR00K3x1AZu+VWb22S UeO79Iw/2n0047qQDW2OKZW7ELFdUiz77m9OxtcOWd42eRPY373C4Ag+13eE08Xr98Bh 5AJq60qxJq6iBWnSnfhEC/LQsBxXkSq1NyuDaLkE9kZMhqnnoEWLkVfv4Be1GFNoezqZ uKEbbHd3qvcE6TiXtRymGEJEPsUKMRHcar26AnShw1EfKMw3XRcAwQbvXunJWVTU9CTG N8gnhDN4n++PaW4YGEtu1oK6/nBegs/g20Ixa3Gk1KGiXIJrlEPZBbk2yt9QB17c5aIp H6Dw== 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:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=8SVUEtZkPOG1UpWIjUR2Bh3RQq5A86OW1t+wahZZbwg=; b=xcRtCtCfYhbInXvHSC97K/wVlJ62ZbwGHeICIzPpmBtCYwpPdlgT+OQNzoxPwe3qpP CfMLKgap89GWNNha531lOOl88MlHNBcn8cA8JoScdUZ5qTNwqdgmEFuGMv0KS7UDjx0j RlC370zjcwtigutFzyL0wlxqId12TMERMIo2QAHm4bi5TFmO4hdyKRHJP7WHGOjW+fcA ugF5VZ3I+ije2uKin/4IRqpBrcZGNIGA6H6DIijIXI4qdE7wcIMW/CCmPPljfVxt9u2h jf/J+Ab133KlIR8/LubswHkakiSDCK4H1kQDDwxJH16Ay3p9zZQfShR+5AvMWhb97oHd ZFzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=N9V433UH; 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 y29-20020a50ce1d000000b0046153dd47f0si921984edi.441.2022.10.21.05.56.50; Fri, 21 Oct 2022 05:56:51 -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=N9V433UH; 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 3265D68BE76; Fri, 21 Oct 2022 15:56:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f53.google.com (mail-ot1-f53.google.com [209.85.210.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 32A1F68BE85 for ; Fri, 21 Oct 2022 15:56:34 +0300 (EEST) Received: by mail-ot1-f53.google.com with SMTP id f4-20020a9d0384000000b0066208c73094so1789001otf.0 for ; Fri, 21 Oct 2022 05:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LRLXINPhxKQ6hSCUzDmEgMI7uId5Jk5vZRi6M3ePxaM=; b=N9V433UHCHKBuutA4Je4qGtA6L3Qqth96FQlvamFYJl0MwJPNkKTy8Jhsb+prfd5Us xflYQSbORsD5pD9hG3A7Eq+7DWdnnLLFq4Wb90IUMFKmLgkbicLxNRw/HxU6xOmBfQml qr+V8WsicxlS6gn1hwSeAJJNmwvePGuQOrOOqd+XJOo//V+Cuxc3n815wSn3vh9HH954 Jisvyi950q9LhcZks5JO+oXk5JqNHIOcg/fyo3Pk1QNK8uitokzCkELciOolANnWuEPD 608nXqn4SC519MrVR7Oy2WdVb24fmtCNMcxsMcHGSEkEYLopj9mWqgUyYojfxK5iNTCx CUiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LRLXINPhxKQ6hSCUzDmEgMI7uId5Jk5vZRi6M3ePxaM=; b=4ehLkleomTj3AL4Fx7tEaqs/ZH2r4QfClddBtd6ngFp7rYbRQyQB4lhMigXRPRfqSb 0QOPK8nEEY5YLpsdwmkl9KVZkMq7T02DJNAKnPSXCCZuYEYbprziH+HylnhJMkiIdKvc AxaQvuDwuJKmlVmZWgOEIgZlGj3GRwu76X65b9P2fp7+l8T3BvayZQ5+iHRT5l2eEUeT 48dkgDv340J8/heUqnU8hhFOz1bDmI1fO+BJuTMDCra+DLcK5AjcdFgBsZrpXbj3MxFh cC2lZZbzZmYJih3qDOFhfL5ey7uqiS7rsYzTGpGI2ZJ2Psikrk+8b0PhWICaLqebAsDb ClNQ== X-Gm-Message-State: ACrzQf0gd9P9baGNCLK5r+i1XBYl4C+71zcOwh6uo46M6v4xthBYnM9P egPBLLquBii3GbJGW4fL291IXwPvUFg= X-Received: by 2002:a9d:4798:0:b0:661:bdda:d2b2 with SMTP id b24-20020a9d4798000000b00661bddad2b2mr9608432otf.310.1666356992551; Fri, 21 Oct 2022 05:56:32 -0700 (PDT) Received: from localhost.localdomain ([191.97.187.183]) by smtp.gmail.com with ESMTPSA id s17-20020a4ac811000000b00480dccc0c2asm3735994ooq.14.2022.10.21.05.56.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Oct 2022 05:56:32 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 Oct 2022 09:56:04 -0300 Message-Id: <20221021125604.1107-2-jamrial@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221021125604.1107-1-jamrial@gmail.com> References: <20221021125604.1107-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/ac3_parser: improve false positive detection when parsing sync frames 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: 3x4H6LVPIKmA A two byte sync word is not enough to ensure we got a real syncframe, nor are all the range checks we do in the first seven bytes. Do therefore an integrity check for the sync frame in order to prevent the parser from filling avctx with bogus information. Signed-off-by: James Almer --- libavcodec/aac_ac3_parser.c | 38 +++++++++++++++++++++++++++++++++---- libavcodec/aac_ac3_parser.h | 2 ++ libavcodec/ac3_parser.c | 1 + 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index b14b1e31f9..1279db6e05 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -24,8 +24,11 @@ #include "libavutil/channel_layout.h" #include "libavutil/common.h" +#include "libavutil/intreadwrite.h" #include "parser.h" #include "aac_ac3_parser.h" +#include "ac3_parser.h" +#include "ac3_parser_internal.h" int ff_aac_ac3_parse(AVCodecParserContext *s1, AVCodecContext *avctx, @@ -79,10 +82,6 @@ get_next: *poutbuf = buf; *poutbuf_size = buf_size; - /* update codec info */ - if(s->codec_id) - avctx->codec_id = s->codec_id; - if (got_frame) { /* Due to backwards compatible HE-AAC the sample rate, channel count, and total number of samples found in an AAC ADTS header are not @@ -90,6 +89,34 @@ get_next: duration in seconds is still correct (as is the number of bits in the frame). */ if (avctx->codec_id != AV_CODEC_ID_AAC) { + int offset = ff_ac3_find_syncword(buf, buf_size); + + if (offset < 0) + return i; + + buf += offset; + buf_size -= offset; + while (buf_size > 0) { + uint16_t frame_size; + uint8_t bsid; + int ret = av_ac3_parse_header(buf, buf_size, &bsid, &frame_size); + + if (ret < 0 || frame_size > buf_size) + return i; + + /* Check for false positives since the syncword is not enough, + and only for the last syncframe in the buffer, as that was + used to fill AACAC3ParseContext. See section 6.1.2 of A/52. */ + if (buf_size > frame_size) { + buf += frame_size; + buf_size -= frame_size; + continue; + } + if (av_crc(s->crc_ctx, 0, buf + 2, frame_size - 4) != AV_RL16(buf + frame_size - 2)) + return i; + break; + } + avctx->sample_rate = s->sample_rate; if (!CONFIG_EAC3_DECODER || avctx->codec_id != AV_CODEC_ID_EAC3) { av_channel_layout_uninit(&avctx->ch_layout); @@ -110,6 +137,9 @@ FF_ENABLE_DEPRECATION_WARNINGS avctx->audio_service_type = s->service_type; } + if(s->codec_id) + avctx->codec_id = s->codec_id; + /* Calculate the average bit rate */ s->frame_number++; if (!CONFIG_EAC3_DECODER || avctx->codec_id != AV_CODEC_ID_EAC3) { diff --git a/libavcodec/aac_ac3_parser.h b/libavcodec/aac_ac3_parser.h index 8b93cbf84f..9d56606f2e 100644 --- a/libavcodec/aac_ac3_parser.h +++ b/libavcodec/aac_ac3_parser.h @@ -24,6 +24,7 @@ #define AVCODEC_AAC_AC3_PARSER_H #include +#include "libavutil/crc.h" #include "avcodec.h" #include "parser.h" @@ -44,6 +45,7 @@ typedef struct AACAC3ParseContext { int (*sync)(uint64_t state, struct AACAC3ParseContext *hdr_info, int *need_next_header, int *new_frame_start); + const AVCRC *crc_ctx; int channels; int sample_rate; int bit_rate; diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index 425e1b4742..ecbc63ce9a 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -260,6 +260,7 @@ static av_cold int ac3_parse_init(AVCodecParserContext *s1) { AACAC3ParseContext *s = s1->priv_data; s->header_size = AC3_HEADER_SIZE; + s->crc_ctx = av_crc_get_table(AV_CRC_16_ANSI); s->sync = ac3_sync; return 0; }