From patchwork Sun Jan 8 19:00:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 2122 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp6765142vsb; Sun, 8 Jan 2017 11:01:00 -0800 (PST) X-Received: by 10.223.176.175 with SMTP id i44mr9158366wra.3.1483902060861; Sun, 08 Jan 2017 11:01:00 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l67si8185813wml.30.2017.01.08.11.01.00; Sun, 08 Jan 2017 11:01:00 -0800 (PST) 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 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 AFEC568A577; Sun, 8 Jan 2017 21:00:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wj0-f194.google.com (mail-wj0-f194.google.com [209.85.210.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7A4D468A534 for ; Sun, 8 Jan 2017 21:00:45 +0200 (EET) Received: by mail-wj0-f194.google.com with SMTP id kp2so83172340wjc.0 for ; Sun, 08 Jan 2017 11:00:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=j9UvM4lf4YOvGqhSqFEJcYxwqOf98YIGvNbnHA4VAHY=; b=LqDncQeVauSGvNkv/91pdDAoina/k6jKZsK23G1mL+OIOTrPzsjPCSLhO976duvaAQ 1dmfM+aYnFfvkphzXPxS4LMcKdrotDnSRx+vvlHretfuCXBfRI+7agX8i4m3p5oM3hsn /daPOuGaQBphrO0DNARHb//tA/D/0DDNCa9SUh8SvwqEujtwaRcFpvQ0FcKScSP3eGGW dE5yDZDQHNxJTjXbqjVJvcQ5gqv1ZDFZU5H/BP1VVMXbaO++qpl3q6Pl4BSKY7xW4dwq QH3dMzSsi7oXY6Hh3NBYrA3/j5r9y1N6sN5qMvhAC/GbjOxkZ1frA33jtuNYs89Y1AIR Wq7Q== 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=j9UvM4lf4YOvGqhSqFEJcYxwqOf98YIGvNbnHA4VAHY=; b=jKI8YlvG6YYAeyFTCHVUkb1toBMP91RzacBR79xKOlOh8N/s5O5lLpnnzOnef5Rcz3 X3Ztb+5TLEum4ZGAMKGzhTllAOpc6UlCURcOfTPirZZ4Ye6pZh2zq6AYqRWpN4Qw/fSn 3zZMcky5OuK2ymq7CTBMOWkTjz4r6fMd84c0bs2PQ+eywH5FHhaVebfJK0sbwPENnOF+ 7cSFaLyYcwB+ncZdVzWakVp8Fu7J1pjPqMqYBq9qQxsXW1NZ+ez2sqMHPZJfs93gosIi Ejbcx5v4hoYUGN5/ERA9sBM9EM+bmH4XTZZv545huzk0UGAdatbk0qEg/nd3W3MX2izP ZNKw== X-Gm-Message-State: AIkVDXIXLYk7Y9ls/NBAEgENJYqv5vUNKpf+hP8ln2rgahfCf/xK5FjxjZ3womkvlASDkQ== X-Received: by 10.194.66.37 with SMTP id c5mr63425016wjt.138.1483902051662; Sun, 08 Jan 2017 11:00:51 -0800 (PST) Received: from localhost.localdomain ([109.227.54.117]) by smtp.gmail.com with ESMTPSA id w197sm14735430wmd.11.2017.01.08.11.00.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Jan 2017 11:00:50 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Jan 2017 20:00:01 +0100 Message-Id: <20170108190001.26444-1-onemda@gmail.com> X-Mailer: git-send-email 2.9.3 Subject: [FFmpeg-devel] [PATCH] avcodec/qdm2: make use of bytestream2 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" Signed-off-by: Paul B Mahol --- libavcodec/qdm2.c | 66 ++++++++++++++++++------------------------------------- 1 file changed, 21 insertions(+), 45 deletions(-) diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c index e3cc902..88b6b19 100644 --- a/libavcodec/qdm2.c +++ b/libavcodec/qdm2.c @@ -40,6 +40,7 @@ #define BITSTREAM_READER_LE #include "avcodec.h" #include "get_bits.h" +#include "bytestream.h" #include "internal.h" #include "mpegaudio.h" #include "mpegaudiodsp.h" @@ -1605,9 +1606,8 @@ static av_cold void qdm2_init_static_data(void) { static av_cold int qdm2_decode_init(AVCodecContext *avctx) { QDM2Context *s = avctx->priv_data; - uint8_t *extradata; - int extradata_size; int tmp_val, tmp, size; + GetByteContext gb; qdm2_init_static_data(); @@ -1650,55 +1650,39 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) return AVERROR_INVALIDDATA; } - extradata = avctx->extradata; - extradata_size = avctx->extradata_size; + bytestream2_init(&gb, avctx->extradata, avctx->extradata_size); - while (extradata_size > 7) { - if (!memcmp(extradata, "frmaQDM", 7)) + while (bytestream2_get_bytes_left(&gb) > 8) { + if (bytestream2_peek_be64(&gb) == (((uint64_t)MKBETAG('f','r','m','a') << 32) | + (uint64_t)MKBETAG('Q','D','M','2'))) break; - extradata++; - extradata_size--; + bytestream2_skip(&gb, 1); } - if (extradata_size < 12) { + if (bytestream2_get_bytes_left(&gb) < 12) { av_log(avctx, AV_LOG_ERROR, "not enough extradata (%i)\n", - extradata_size); + bytestream2_get_bytes_left(&gb)); return AVERROR_INVALIDDATA; } - if (memcmp(extradata, "frmaQDM", 7)) { - av_log(avctx, AV_LOG_ERROR, "invalid headers, QDM? not found\n"); - return AVERROR_INVALIDDATA; - } - - if (extradata[7] == 'C') { -// s->is_qdmc = 1; - avpriv_report_missing_feature(avctx, "QDMC version 1"); - return AVERROR_PATCHWELCOME; - } - - extradata += 8; - extradata_size -= 8; + bytestream2_skip(&gb, 8); + size = bytestream2_get_be32(&gb); - size = AV_RB32(extradata); - - if(size > extradata_size){ + if (size > bytestream2_get_bytes_left(&gb)) { av_log(avctx, AV_LOG_ERROR, "extradata size too small, %i < %i\n", - extradata_size, size); + bytestream2_get_bytes_left(&gb), size); return AVERROR_INVALIDDATA; } - extradata += 4; av_log(avctx, AV_LOG_DEBUG, "size: %d\n", size); - if (AV_RB32(extradata) != MKBETAG('Q','D','C','A')) { + if (bytestream2_get_be32(&gb) != MKBETAG('Q','D','C','A')) { av_log(avctx, AV_LOG_ERROR, "invalid extradata, expecting QDCA\n"); return AVERROR_INVALIDDATA; } - extradata += 8; + bytestream2_skip(&gb, 4); - avctx->channels = s->nb_channels = s->channels = AV_RB32(extradata); - extradata += 4; + avctx->channels = s->nb_channels = s->channels = bytestream2_get_be32(&gb); if (s->channels <= 0 || s->channels > MPA_MAX_CHANNELS) { av_log(avctx, AV_LOG_ERROR, "Invalid number of channels\n"); return AVERROR_INVALIDDATA; @@ -1706,19 +1690,11 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) avctx->channel_layout = avctx->channels == 2 ? AV_CH_LAYOUT_STEREO : AV_CH_LAYOUT_MONO; - avctx->sample_rate = AV_RB32(extradata); - extradata += 4; - - avctx->bit_rate = AV_RB32(extradata); - extradata += 4; - - s->group_size = AV_RB32(extradata); - extradata += 4; - - s->fft_size = AV_RB32(extradata); - extradata += 4; - - s->checksum_size = AV_RB32(extradata); + avctx->sample_rate = bytestream2_get_be32(&gb); + avctx->bit_rate = bytestream2_get_be32(&gb); + s->group_size = bytestream2_get_be32(&gb); + s->fft_size = bytestream2_get_be32(&gb); + s->checksum_size = bytestream2_get_be32(&gb); if (s->checksum_size >= 1U << 28) { av_log(avctx, AV_LOG_ERROR, "data block size too large (%u)\n", s->checksum_size); return AVERROR_INVALIDDATA;