[codec] Last proposal for the update draft

Jean-Marc Valin <jmvalin@jmvalin.ca> Fri, 17 June 2016 12:26 UTC

Return-Path: <jmvalin@jmvalin.ca>
X-Original-To: codec@ietfa.amsl.com
Delivered-To: codec@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 7B40412D50D for <codec@ietfa.amsl.com>; Fri, 17 Jun 2016 05:26:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=jmvalin-ca.20150623.gappssmtp.com
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id LTT7dJEF_YSZ for <codec@ietfa.amsl.com>; Fri, 17 Jun 2016 05:26:08 -0700 (PDT)
Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 10C6412D147 for <codec@ietf.org>; Fri, 17 Jun 2016 05:26:07 -0700 (PDT)
Received: by mail-wm0-x22a.google.com with SMTP id f126so87015022wma.1 for <codec@ietf.org>; Fri, 17 Jun 2016 05:26:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jmvalin-ca.20150623.gappssmtp.com; s=20150623; h=from:subject:to:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=+mXo7vRKbqL4SCtPjdP7qfsDgmgsKGn8DO+6wiqLF2A=; b=pQcuVO3W896UgUJgzQwLF3zfa4eCcP8YSM/WaudWjMrykU9q5Jt8pDeC49SBmO905x M7nk+UVdzlzFtLVhXHTAW/G+oPhKXsXZRYodhY8jlhj4w8wPzZ3ylMcjMXcAPHQ260CA A62XKRsKqYQzIBRwK/eZ7noVN6xWLni7Wxo0PD0hPiIFw/MA3NzUZHNpY8ATNoZSLesB ZqhCfJ/UeUiqyi5cnTIPNDyeM6vXCC4/otOYpusC4PqdP/zQdp9jeCccFdf5x0+ZT/MS tbzPKfbYd+2hUhxntX7gQgMcvR2ZubGZc7a9ij6NIWQpTAvOj74HAqD0evCDCJKuF07p 3QcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=+mXo7vRKbqL4SCtPjdP7qfsDgmgsKGn8DO+6wiqLF2A=; b=gJdPZ0MUXHaOwm0Sw1SkmpSS8lsizQZZm4P+x8joGWMwMUzhYvBRGwxr/CHovvTv2G HpRcORQt1HGpLd1EsFkjDxvpRxNs08TEU46neV5uOiNXtT5q/1dFDPSx5XZxzt+PzIPb 4+1XU2a0l6Be7qyuFxDuMC7fTAuzovIPv7dBrJlHTaWwbby3YXhWOmwGKynL07v+5d/b d8o7LwK+8EVcLndQ7SgwIJiiNvS/TtXLzLONra71e98zE3w1wJ70jDS9RPwPfhxpagtC v/skhsSXEYle9vSJfjLIrCNC/EE5rY1UStkzpV3j34Rt42UWzyObA8aJmSfcOGN/sPFA NsqA==
X-Gm-Message-State: ALyK8tI3pY1W0S6UpQaJcjRtYZM4rLz8cwQKO232mg3GYCFX9aXAlF8mcNYjV8Sh1zFUag==
X-Received: by with SMTP id q186mr2237002wma.94.1466166366208; Fri, 17 Jun 2016 05:26:06 -0700 (PDT)
Received: from panoramix.jmvalin.ca ([]) by smtp.gmail.com with ESMTPSA id bh4sm18697157wjc.43.2016. for <codec@ietf.org> (version=TLSv1/SSLv3 cipher=OTHER); Fri, 17 Jun 2016 05:26:05 -0700 (PDT)
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
X-Enigmail-Draft-Status: N1110
To: "codec@ietf.org" <codec@ietf.org>
Message-ID: <d743fe38-a558-770d-9a23-2c37900b47ec@jmvalin.ca>
Date: Fri, 17 Jun 2016 08:26:04 -0400
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/codec/od6HwB8snANgx7GN2N6YWCac5Sg>
Subject: [codec] Last proposal for the update draft
X-BeenThere: codec@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Codec WG <codec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/codec>, <mailto:codec-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/codec/>
List-Post: <mailto:codec@ietf.org>
List-Help: <mailto:codec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/codec>, <mailto:codec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Jun 2016 12:26:12 -0000


I've been working on completing the update draft and have come across
one last thing that I think should be updated in the spec. This was
discovered through running hybrid mode at low rates, around 16 kb/s.

At those rates, we sometimes only have enough bits to code a single
CELT band (8 - 9.6 kHz). When that happens in hybrid mode (unlike
CELT-only), the second band (CELT band 18, from 9.6 to 12 kHz) cannot
use folding because it is wider than the amount already coded, and
falls back to LCG noise. Because it can also happen on transients
(e.g. stops), it can cause audible pre-echo.

My proposed solution is to fix the folding behaviour so that it is
never forced to fall back to LCG due to not enough folding data. This
is achieved by simply repeating part of the first band in the folding
of the second band. The proposed patch is available at:
It's a decoder-only change and it fixes the low-bitrate pre-echo
problem. I uploaded a short example that demonstrates the problem and
the fix. This is before the change:
and this is after the change:
Note especially the "t" in the word "tour", which has noticeable HF
pre-echo in the "before" file. Both files are decoded from the same 16
kb/s CBR bit-stream.

The fix does not impact compatibility, because the improvement does
not depend on the encoder doing anything special. I also do not see
any case where an encoder could have effectively used the current
broken behaviour to improve quality over the proposed change.

For these reasons, I think it should be included in the update draft.