From patchwork Mon Jul 10 14:11:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: foo86 X-Patchwork-Id: 4282 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.1.76 with SMTP id 73csp3617200vsb; Mon, 10 Jul 2017 07:27:40 -0700 (PDT) X-Received: by 10.28.23.137 with SMTP id 131mr8130963wmx.7.1499696860144; Mon, 10 Jul 2017 07:27:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499696860; cv=none; d=google.com; s=arc-20160816; b=k0jdaDVUpTRN6vssqlHojzCchCxO58DGXJt6+RIMnoRPzJaas4OgjObA77PQJkw1U9 XPIX8QDmOzSxrlrHPQeRnvWzMKyLNwdnlZHF2v1OVzduWNlGx9FA4J5jP7E6TPFpLhpG T/pz95//pBqkzxCQDWzhkAxUv2IS7kmSor9ooqxyMY94Ro4MHmHofJd7BuzbFaVpWbJW jnEGnQoTxACveV/jACItpxef5oufyEFbEhrGomSeaReYw95Noqr7PN4AgUb/q3/2/e75 1eaip1DTvYR1FYLkb9fsmrKbyOplng0CZwfYArZXdL2HQO/+OT8H771Adz3pvGuss0+r eycg== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=OZ7Y6vyYXueXbDa57dv1hvfd3u/QqPMswUiElHit4po=; b=Uq0CO30Xpk5BZGOT8JgVX8BUt5dSLSwkaK3KaattrKfnRxDNF/DW730QIbILNfx6z/ RsxVRELhuvcf4k+oo2u/eXY+o5x/SJ5f+7LOPjrF+LikhAEsPZJuSyMMai4Ex3whSPcO wLVJFfcxdNeAtPMUQjeqTb2wSbGu5Z7sbRuhid2HJMErWioE/TJ+FH1oz5iJNFAq+0Sk gVPjUKETJ23HVtlGo2MJj6R59V60UVujTM5VRBA173rhWJX264zfVGCmg0HS/JQgxp3p DOTO0CNil3ZBllPk/Lh0k8OBub1/wXS7VH7+nY8yAM7M6zxMNSQnbqXOBYBQiBfyzlzz ro0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.b=NlkeirOz; 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 p83si6906558wmf.62.2017.07.10.07.27.39; Mon, 10 Jul 2017 07:27:40 -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.b=NlkeirOz; 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 35B7F689DCD; Mon, 10 Jul 2017 17:27:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0B01689B50 for ; Mon, 10 Jul 2017 17:27:26 +0300 (EEST) Received: by mail-lf0-f68.google.com with SMTP id z78so10794259lff.2 for ; Mon, 10 Jul 2017 07:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=vvKxC8Pj887TZj125acUAQ9xWBrAgBrTt1GBIxjWW08=; b=NlkeirOzGRRTRYKElM3UIzxVvRWkS2ovWI66O96e5pn85ar4bo5wIvfdBRUYM5Y6yX NBxK7dPBx99kmThUnz0YJ3aeEam/VYe7rdFirWsqnJ/nWa3GI9EHluP74OfnsgQj3yiN REzFg3dwBYzz3JuOoYbW3runYrCUHkw2cw+wSO3ooY4O+lbK1oQFg9P8qj2fbDrjczvy u/aofTA/9m1SUjke/0dIMubx2YvOU+0j+kSM+37N9+sN3lrL2sZNcDE9nfDWpLdKT5iC fBts/5JqDU96Wyew1eGaeWqwxf6OQ5xUIj0ZtUzPfyY2S9p3HRLbDB06n9sWRitAU39c qwrQ== 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:in-reply-to :references; bh=vvKxC8Pj887TZj125acUAQ9xWBrAgBrTt1GBIxjWW08=; b=ZXHjTsAkCWKRp5bsRnSdBpCbpD8Jf0EggwkxKPUUd8Uk0O49nZPuZ4uKWhgxX5iany TJbiayF7OZaeDh2xO6oF8TTjfVlSMk7AA51s1sBIdTHE8kJ77cyl/riKNRKVtf3xFCIK zAUWT6sGSaIOYq08psdat9hYYbnsfF3Znz5HjYvAkPQSK62fFpz94I9bOOGab/1G3Gx2 UpkU2gjXBXvF3OW6Vz2juNU2pqltvVzs82q1u92sD6nsjkoMniEQztlpaxMNbR6OYYPZ 2WVYJltlMsjHCEHdB57AMSlCACOnF0oswa2PCKg6x7CP+eapMnUZOKpigCA/E6aKpULj U2gQ== X-Gm-Message-State: AIVw111APUPrXWldEXdmD8ZVS/QbZi1f3gRE1gy0vxdXo2ekx6NO5eIS r1ZqgpzfHYYd1cKM X-Received: by 10.46.22.5 with SMTP id w5mr4660683ljd.26.1499696528995; Mon, 10 Jul 2017 07:22:08 -0700 (PDT) Received: from foohost.foodomain ([2001:470:28:661::4]) by smtp.gmail.com with ESMTPSA id v196sm2722713lfa.16.2017.07.10.07.22.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Jul 2017 07:22:08 -0700 (PDT) From: foo86 To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Jul 2017 17:11:35 +0300 Message-Id: <20170710141140.20075-5-foobaz86@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170710141140.20075-1-foobaz86@gmail.com> References: <20170710141140.20075-1-foobaz86@gmail.com> Subject: [FFmpeg-devel] [PATCH 05/10] avcodec/dca_parser: switch to common frame header parsing function 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" --- libavcodec/dca_parser.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c index e5bea3347c..6107358773 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -192,10 +192,11 @@ static int dca_parse_params(DCAParseContext *pc1, const uint8_t *buf, int buf_size, int *duration, int *sample_rate) { GetBitContext gb; - uint8_t hdr[12 + AV_INPUT_BUFFER_PADDING_SIZE] = { 0 }; - int ret, sample_blocks; + DCACoreFrameHeader h; + uint8_t hdr[DCA_CORE_FRAME_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE] = { 0 }; + int ret; - if (buf_size < 12) + if (buf_size < DCA_CORE_FRAME_HEADER_SIZE) return AVERROR_INVALIDDATA; if (AV_RB32(buf) == DCA_SYNCWORD_SUBSTREAM) { @@ -255,21 +256,16 @@ static int dca_parse_params(DCAParseContext *pc1, const uint8_t *buf, return AVERROR_INVALIDDATA; } - if ((ret = avpriv_dca_convert_bitstream(buf, 12, hdr, 12)) < 0) + if ((ret = avpriv_dca_convert_bitstream(buf, DCA_CORE_FRAME_HEADER_SIZE, + hdr, DCA_CORE_FRAME_HEADER_SIZE)) < 0) return ret; - - init_get_bits(&gb, hdr, 96); - - skip_bits_long(&gb, 39); - sample_blocks = get_bits(&gb, 7) + 1; - if (sample_blocks < 8) + if ((ret = init_get_bits8(&gb, hdr, ret)) < 0) + return ret; + if (avpriv_dca_parse_core_frame_header(&gb, &h) < 0) return AVERROR_INVALIDDATA; - *duration = 256 * (sample_blocks / 8); - skip_bits(&gb, 20); - *sample_rate = avpriv_dca_sample_rates[get_bits(&gb, 4)]; - if (*sample_rate == 0) - return AVERROR_INVALIDDATA; + *duration = 256 * (h.npcmblocks / 8); + *sample_rate = avpriv_dca_sample_rates[h.sr_code]; return 0; }