From patchwork Fri Jan 24 10:33:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jai Luthra X-Patchwork-Id: 17507 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1F00E44ACAD for ; Fri, 24 Jan 2020 13:41:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F361768AFD0; Fri, 24 Jan 2020 13:41:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f196.google.com (mail-vk1-f196.google.com [209.85.221.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E50368AFBC for ; Fri, 24 Jan 2020 13:41:31 +0200 (EET) Received: by mail-vk1-f196.google.com with SMTP id i4so525424vkc.3 for ; Fri, 24 Jan 2020 03:41:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jailuthra-in.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=QtIvMlR+nSNaaH+oLsKa341yhDwPnx15M1hd0xcNM2A=; b=GjN60D8c4Sxu+71tQZ+7+yHCTvIBgl182824vdei3y/2nasjkbZdHg3MhdzmDwjZOF ore+ay2lq7Bwg3p247HTQ5NLjMO9WPxgddH1aHUkCJcRPINfS1ZgQOsPkMXRgBkFSm+d 97oN5BdazlBqO0E2lNr2WdsUWPla6erQOV5l/8V+dfN5WcWgkFqchgrvcTH4d3R9GINy lVjtr0ieE29fb2/Et9ZwgitNMDBFdyIAIGQaiouBjolWr5mNw7+LKhsQiQEBDOiXSCba zVhuOhTWn7krqCj5RgNIw553r4wgEWdycheWvzyKGUZWr88w1YsC22c3XIJmkB1Uo/Xl a2Bw== 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:mime-version:content-transfer-encoding; bh=QtIvMlR+nSNaaH+oLsKa341yhDwPnx15M1hd0xcNM2A=; b=ZWH7t6sf6u/X6lqQewGKNtK4PFwbR3+sCkOGRWhxBAgXcHT1f/vXhCSRaCb7jTKF8h IeBUKpefAYnsmy1nY4wBTO3B2P9w3y3ltWpe6zRGzhKHqP7K63kRHlhcmV1NGNf1lIc+ X4jEP6oLgbJwKkBVSYCT6Mv1rESzISwaAAfDWgm+aIsC9sB2qqqoPgNcCbTbeL3yryfP dinXP6v30ffcZevOj8Kf0wBfGEn1Q603piUZJGQzHBv5sMWNvw7T+Osss9abX6x3ZT1E 3E0diL6kDs+hO1NMNeCjQ6dJZazA935iBaQN/BO9gKdXUqW5kttBpu6B4cmwAHlgnxhp 2IRw== X-Gm-Message-State: APjAAAUwz/7aVQLQKGHuNx4QBOo0GEpPr/YVwkc1M8AiV8yNLgpHgwBk pzRj/7XC1ehIKg+XyX9GLHhdZQm49eQ= X-Google-Smtp-Source: APXvYqzP1oZ5YChLkrp6YekWH4rbglSiksMC3WIUkIxdIGWblSd+c4O6zIoNeGmOEHgocbqDJvharQ== X-Received: by 2002:a17:902:b40b:: with SMTP id x11mr2993117plr.268.1579862031914; Fri, 24 Jan 2020 02:33:51 -0800 (PST) Received: from localhost.localdomain ([49.207.55.142]) by smtp.googlemail.com with ESMTPSA id j125sm5471274pfg.160.2020.01.24.02.33.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 02:33:51 -0800 (PST) From: Jai Luthra To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 16:03:34 +0530 Message-Id: <20200124103334.110855-6-me@jailuthra.in> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200124103334.110855-1-me@jailuthra.in> References: <20200124103334.110855-1-me@jailuthra.in> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/5] mlpenc: clean up 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Jai Luthra --- libavcodec/mlpenc.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c index 0e7a9b7640..40872c42fa 100644 --- a/libavcodec/mlpenc.c +++ b/libavcodec/mlpenc.c @@ -94,8 +94,8 @@ typedef struct BestOffset { int16_t max; } BestOffset; -#define HUFF_OFFSET_MIN -16384 -#define HUFF_OFFSET_MAX 16383 +#define HUFF_OFFSET_MIN (-16384) +#define HUFF_OFFSET_MAX ( 16383) /** Number of possible codebooks (counting "no codebooks") */ #define NUM_CODEBOOKS 4 @@ -808,7 +808,7 @@ static void write_major_sync(MLPEncodeContext *ctx, uint8_t *buf, int buf_size) static void write_restart_header(MLPEncodeContext *ctx, PutBitContext *pb) { RestartHeader *rh = ctx->cur_restart_header; - int32_t lossless_check = xor_32_to_8(rh->lossless_check_data); + uint8_t lossless_check = xor_32_to_8(rh->lossless_check_data); unsigned int start_count = put_bits_count(pb); PutBitContext tmpb; uint8_t checksum; @@ -1017,12 +1017,10 @@ static void write_block_data(MLPEncodeContext *ctx, PutBitContext *pb) codebook_index [ch] = cp->codebook - 1; sign_huff_offset[ch] = cp->huff_offset; - sign_shift = lsb_bits[ch] - 1; + sign_shift = lsb_bits[ch] + (cp->codebook ? 2 - cp->codebook : -1); - if (cp->codebook > 0) { + if (cp->codebook > 0) sign_huff_offset[ch] -= 7 << lsb_bits[ch]; - sign_shift += 3 - cp->codebook; - } /* Unsign if needed. */ if (sign_shift >= 0) @@ -1032,7 +1030,6 @@ static void write_block_data(MLPEncodeContext *ctx, PutBitContext *pb) for (i = 0; i < dp->blocksize; i++) { for (ch = rh->min_channel; ch <= rh->max_channel; ch++) { int32_t sample = *sample_buffer++ >> dp->quant_step_size[ch]; - sample -= sign_huff_offset[ch]; if (codebook_index[ch] >= 0) { @@ -1252,7 +1249,7 @@ static void input_data_internal(MLPEncodeContext *ctx, const uint8_t *samples, uint32_t abs_sample; int32_t sample; - sample = is24 ? *samples_32++ >> 8 : *samples_16++ << 8; + sample = is24 ? *samples_32++ >> 8 : *samples_16++ * 256U; /* TODO Find out if number_sbits can be used for negative values. */ abs_sample = FFABS(sample); @@ -1795,7 +1792,7 @@ static void determine_bits(MLPEncodeContext *ctx) #define SAMPLE_MAX(bitdepth) ((1 << (bitdepth - 1)) - 1) #define SAMPLE_MIN(bitdepth) (~SAMPLE_MAX(bitdepth)) -#define MSB_MASK(bits) (-1u << bits) +#define MSB_MASK(bits) (-(1u << (bits))) /** Applies the filter to the current samples, and saves the residual back * into the samples buffer. If the filter is too bad and overflows the @@ -1899,8 +1896,8 @@ static void generate_2_noise_channels(MLPEncodeContext *ctx) for (i = 0; i < ctx->number_of_samples; i++) { uint16_t seed_shr7 = seed >> 7; - *sample_buffer++ = ((int8_t)(seed >> 15)) << rh->noise_shift; - *sample_buffer++ = ((int8_t) seed_shr7) << rh->noise_shift; + *sample_buffer++ = ((int8_t)(seed >> 15)) * (1 << rh->noise_shift); + *sample_buffer++ = ((int8_t) seed_shr7) * (1 << rh->noise_shift); seed = (seed << 16) ^ seed_shr7 ^ (seed_shr7 << 5); @@ -2071,9 +2068,10 @@ static void set_best_codebook(MLPEncodeContext *ctx) best_codebook = *best_path++ - ZERO_PATH; cur_bo = &ctx->best_offset[index][channel][best_codebook]; - cp->huff_offset = cur_bo->offset; - cp->huff_lsbs = cur_bo->lsb_bits + dp->quant_step_size[channel]; - cp->codebook = best_codebook; + cp->huff_offset = cur_bo->offset; + cp->sign_huff_offset = -(1 << 23); + cp->huff_lsbs = cur_bo->lsb_bits + dp->quant_step_size[channel]; + cp->codebook = best_codebook; } } } @@ -2275,7 +2273,7 @@ static int mlp_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, if (restart_frame) { set_major_params(ctx); if (ctx->min_restart_interval != ctx->max_restart_interval) - process_major_frame(ctx); + process_major_frame(ctx); } if (ctx->min_restart_interval == ctx->max_restart_interval)