From patchwork Sat Jan 7 09:26:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: foo86 X-Patchwork-Id: 2092 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp6209446vsb; Sat, 7 Jan 2017 01:35:31 -0800 (PST) X-Received: by 10.28.221.11 with SMTP id u11mr219037wmg.75.1483781731204; Sat, 07 Jan 2017 01:35:31 -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 p64si2899940wrc.270.2017.01.07.01.35.30; Sat, 07 Jan 2017 01:35:31 -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 6A1C968A402; Sat, 7 Jan 2017 11:35:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f42.google.com (mail-lf0-f42.google.com [209.85.215.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 738E568A347 for ; Sat, 7 Jan 2017 11:35:15 +0200 (EET) Received: by mail-lf0-f42.google.com with SMTP id o140so12916274lff.3 for ; Sat, 07 Jan 2017 01:35:21 -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=9Sazk2FTIaMKDKcQnhRW/4nCHOu2ms5I6JRaHcQNyU4=; b=sPGNZr7dWxKEw4vdaf8jV6Gfkp/eOOAA6E8sOOerqTj4APKJm3xxvuLe8aYMKchX1m h8toc/KlPsuP6v5otvS/DBF+kcXDVGdSN56CLDjOQtcifqOj/Ct0574ikx+wu0f5hMIB DXZiGFN1s2dJcZT+Q5DJR4mTHwQ47CXtu3CEsOQEact3rxdw+ZBcwjoXkwyaOsuwkTpa OpHKklFScwnyaY1SsECEGCTzpN1PQSDMx7pLLKKA28xNSBsPPHc07cZ3DkLt88gReMC0 GF7m5z9rkIrW1Ya0K1KjSWJOkRapCi1SBgGepU/sk2K1E5Bt9nm+ro9uMrhqmwzUp406 oplA== 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=9Sazk2FTIaMKDKcQnhRW/4nCHOu2ms5I6JRaHcQNyU4=; b=ir3+ff1NTtj57aWrSZcpVW0xmFE37jlMNG4rlomPisFoUtkLjFGeycG0lcJYygBaa7 uNP8E3EI8WfnB1vgXx/mwaJ2qnuhV30sGfVdtjMWFEDi/FD8qQh2U0kYvuvK0Ax3J+2w 5M/az8SiOqo2030MvThWi3BuQnM4qYJnrqTrnZcv5Z4byd9lPGMvZRbqauLHwWnvRbmI 3ytjCOmBJjWhemSfr4nYCnquIJSDBlTL+ecbgG4YtdgtKSIpQaJuSukA9e3pGE/gjZK/ 6gkxzS56OzSNUD/qRbLsOKVMLcsIgHDTS5JH9Pv8rRd/hoIkeKgz4iBb0HNxOy9XMWTZ q2WA== X-Gm-Message-State: AIkVDXKkqrqQX6VMGq9gBHZtEjTKx4OfWJ5BGDuJ0Mdj3k9tku68kTn0e2c47Cdu2YzucQ== X-Received: by 10.46.69.7 with SMTP id s7mr424655lja.44.1483781282436; Sat, 07 Jan 2017 01:28:02 -0800 (PST) Received: from foohost.foodomain ([2001:470:28:661::4]) by smtp.gmail.com with ESMTPSA id 10sm19557885ljo.36.2017.01.07.01.28.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 07 Jan 2017 01:28:01 -0800 (PST) From: foo86 To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 Jan 2017 12:26:43 +0300 Message-Id: <20170107092643.27112-1-foobaz86@gmail.com> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH] avcodec/dca: add support for 20-bit XLL 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" Fixes ticket #6063. --- libavcodec/dca_xll.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/dca_xll.c b/libavcodec/dca_xll.c index 1d616c298c..1320aaf28f 100644 --- a/libavcodec/dca_xll.c +++ b/libavcodec/dca_xll.c @@ -143,7 +143,7 @@ static int chs_parse_header(DCAXllDecoder *s, DCAXllChSet *c, DCAExssAsset *asse // Storage unit width c->storage_bit_res = get_bits(&s->gb, 5) + 1; - if (c->storage_bit_res != 16 && c->storage_bit_res != 24) { + if (c->storage_bit_res != 16 && c->storage_bit_res != 20 && c->storage_bit_res != 24) { avpriv_request_sample(s->avctx, "%d-bit XLL storage resolution", c->storage_bit_res); return AVERROR_PATCHWELCOME; } @@ -1415,9 +1415,12 @@ int ff_dca_xll_filter_frame(DCAXllDecoder *s, AVFrame *frame) switch (p->storage_bit_res) { case 16: avctx->sample_fmt = AV_SAMPLE_FMT_S16P; + shift = 16 - p->pcm_bit_res; break; + case 20: case 24: avctx->sample_fmt = AV_SAMPLE_FMT_S32P; + shift = 24 - p->pcm_bit_res; break; default: return AVERROR(EINVAL); @@ -1438,7 +1441,6 @@ int ff_dca_xll_filter_frame(DCAXllDecoder *s, AVFrame *frame) s->output_mask); } - shift = p->storage_bit_res - p->pcm_bit_res; for (i = 0; i < avctx->channels; i++) { int32_t *samples = s->output_samples[ch_remap[i]]; if (frame->format == AV_SAMPLE_FMT_S16P) {