From patchwork Wed Feb 1 03:13:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rostislav Pehlivanov X-Patchwork-Id: 2391 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp2247562vsb; Tue, 31 Jan 2017 19:20:54 -0800 (PST) X-Received: by 10.28.137.211 with SMTP id l202mr736981wmd.88.1485919254460; Tue, 31 Jan 2017 19:20:54 -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 57si23166904wrv.17.2017.01.31.19.20.54; Tue, 31 Jan 2017 19:20:54 -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 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 8468B680CA2; Wed, 1 Feb 2017 05:20:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FA936809ED for ; Wed, 1 Feb 2017 05:20:43 +0200 (EET) Received: by mail-wm0-f66.google.com with SMTP id r18so2646851wmd.3 for ; Tue, 31 Jan 2017 19:20:46 -0800 (PST) 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; bh=7JesOdh5aqDxwLvnQROd5Ql7k4Jss1TLlWR62AhH7UI=; b=KD4Sm3QckRgw94+NoDihp055/795LkTEVWyprAAiYFym0eQIkdallLUuKDf7tHg2wj cPe40j7a5eGIS4hIgkYLciU3pnqZwuUxNBstBvQ6iz93XCTIaqkagDB4wDhiOv1oluXV tk1ZJxwI29hmJ4XRTdIaShNhTmsA/jc5oOOxzj6h+wtGkOJjykf+jABnOIxwuD64M7+O 8ArnqdCcJFUSRKXd3iFDavrH5ruOUrMRpA3uLUhBaXJO4FWgOLETm39w36sEoeB+DwwE RTQO5i2Uv7Q7ue3ETuBIL4Rl/5HHPF1ImpmXpg2OSmW/Z/vsNhBXMVW3CTZgqnNPIOsq hWAg== 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; bh=7JesOdh5aqDxwLvnQROd5Ql7k4Jss1TLlWR62AhH7UI=; b=OTN2VbflkACr0iyozf1SrIyFd0jNnZY6NV0W7zHHPJIV353hxp5U8eQz5RNau0L3VT R9cBouVEs0oBqhQNEYBV9E6TQhjI1+6fuROBXo3kjjF0i7zejtjs8BlKHMVwFeH2qr4q BI7ULbVnKOPvgZeKvyVFDU8k20/DqZRgpKwyWsqAUaaSwgDGxEAU3/1isz0AGRLQXSBK aKQCyeSysj7WoeEvQC+iD7U5MR5LmOM3qnZ9RyLh84+P8qfJyHaMqM8RdB5LQFVdBaZP DCpCYCz02uw80xt4kvU80VZBmQd57su3eFXtEqA1Ow5VQ+8WWuvpaTUqSMhsCyr2vgRh F4mA== X-Gm-Message-State: AIkVDXJ/+0I4f8ECiN6Bo7Ksx7FpsXyz911IZk2W++ztZ+1o5qtQ9A9dYwpCyDFaAKxtig== X-Received: by 10.223.170.154 with SMTP id h26mr401165wrc.29.1485918793582; Tue, 31 Jan 2017 19:13:13 -0800 (PST) Received: from moonbase.lan (host86-136-238-164.range86-136.btcentralplus.com. [86.136.238.164]) by smtp.gmail.com with ESMTPSA id b8sm31441545wrb.17.2017.01.31.19.13.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jan 2017 19:13:12 -0800 (PST) From: Rostislav Pehlivanov To: ffmpeg-devel@ffmpeg.org Date: Wed, 1 Feb 2017 03:13:04 +0000 Message-Id: <20170201031309.99552-2-atomnuker@gmail.com> X-Mailer: git-send-email 2.11.0.483.g087da7b7c In-Reply-To: <20170201031309.99552-1-atomnuker@gmail.com> References: <20170201031309.99552-1-atomnuker@gmail.com> Subject: [FFmpeg-devel] [PATCH 1/6] opus_rc: rename total_bits_used to total_bits and #define some constants 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: Rostislav Pehlivanov MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Rostislav Pehlivanov --- libavcodec/opus_celt.c | 2 +- libavcodec/opus_rc.c | 19 +++++++++++++------ libavcodec/opus_rc.h | 6 +++--- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libavcodec/opus_celt.c b/libavcodec/opus_celt.c index c115ee7ad3..96fedb7a49 100644 --- a/libavcodec/opus_celt.c +++ b/libavcodec/opus_celt.c @@ -1641,7 +1641,7 @@ int ff_celt_decode_frame(CeltContext *s, OpusRangeCoder *rc, if (silence) { consumed = s->framebits; - rc->total_read_bits += s->framebits - opus_rc_tell(rc); + rc->total_bits += s->framebits - opus_rc_tell(rc); } /* obtain post-filter options */ diff --git a/libavcodec/opus_rc.c b/libavcodec/opus_rc.c index 1f9af041aa..b0e72f6ffe 100644 --- a/libavcodec/opus_rc.c +++ b/libavcodec/opus_rc.c @@ -22,12 +22,19 @@ #include "opus_rc.h" +#define OPUS_RC_BITS 32 +#define OPUS_RC_SYM 8 +#define OPUS_RC_CEIL ((1 << OPUS_RC_SYM) - 1) +#define OPUS_RC_TOP (1u << 31) +#define OPUS_RC_BOT (OPUS_RC_TOP >> OPUS_RC_SYM) +#define OPUS_RC_SHIFT (OPUS_RC_BITS - OPUS_RC_SYM - 1) + static av_always_inline void opus_rc_dec_normalize(OpusRangeCoder *rc) { - while (rc->range <= 1<<23) { - rc->value = ((rc->value << 8) | (get_bits(&rc->gb, 8) ^ 0xFF)) & ((1u << 31) - 1); - rc->range <<= 8; - rc->total_read_bits += 8; + while (rc->range <= OPUS_RC_BOT) { + rc->value = ((rc->value << OPUS_RC_SYM) | (get_bits(&rc->gb, OPUS_RC_SYM) ^ OPUS_RC_CEIL)) & (OPUS_RC_TOP - 1); + rc->range <<= OPUS_RC_SYM; + rc->total_bits += OPUS_RC_SYM; } } @@ -93,7 +100,7 @@ uint32_t ff_opus_rc_get_raw(OpusRangeCoder *rc, uint32_t count) value = av_mod_uintp2(rc->rb.cacheval, count); rc->rb.cacheval >>= count; rc->rb.cachelen -= count; - rc->total_read_bits += count; + rc->total_bits += count; return value; } @@ -206,7 +213,7 @@ int ff_opus_rc_dec_init(OpusRangeCoder *rc, const uint8_t *data, int size) rc->range = 128; rc->value = 127 - get_bits(&rc->gb, 7); - rc->total_read_bits = 9; + rc->total_bits = 9; opus_rc_dec_normalize(rc); return 0; diff --git a/libavcodec/opus_rc.h b/libavcodec/opus_rc.h index 68ebc05af6..9f5253b51d 100644 --- a/libavcodec/opus_rc.h +++ b/libavcodec/opus_rc.h @@ -40,7 +40,7 @@ typedef struct OpusRangeCoder { RawBitsContext rb; uint32_t range; uint32_t value; - uint32_t total_read_bits; + uint32_t total_bits; } OpusRangeCoder; /** @@ -49,14 +49,14 @@ typedef struct OpusRangeCoder { */ static av_always_inline uint32_t opus_rc_tell(const OpusRangeCoder *rc) { - return rc->total_read_bits - av_log2(rc->range) - 1; + return rc->total_bits - av_log2(rc->range) - 1; } static av_always_inline uint32_t opus_rc_tell_frac(const OpusRangeCoder *rc) { uint32_t i, total_bits, rcbuffer, range; - total_bits = rc->total_read_bits << 3; + total_bits = rc->total_bits << 3; rcbuffer = av_log2(rc->range) + 1; range = rc->range >> (rcbuffer-16);