From patchwork Thu Jan 10 20:58:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 11696 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 5A2B944D208 for ; Thu, 10 Jan 2019 22:58:59 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7AA3968A450; Thu, 10 Jan 2019 22:58:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it1-f181.google.com (mail-it1-f181.google.com [209.85.166.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B996668A38B for ; Thu, 10 Jan 2019 22:58:41 +0200 (EET) Received: by mail-it1-f181.google.com with SMTP id z7so839529iti.0 for ; Thu, 10 Jan 2019 12:58:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=wiiSGqRM7aNSpfc58wa3XhK0FzX/pKojuxIsX+h84h4=; b=BO+7YCSRZl+CIE683H+1DQP5Jmf3Fafu9HhX0SZBhl2NJsmW6WqKfSHTKrFi/c2wO7 N9yB2S9zRgLbaQUt6liGvnV2RJKA4qCsI6QepQEDolLdmEKdnmZ7WhZrpHAcu+WLYvUs h5Ga6a6oiB9e++f3EAXToZE2DrQlzEO50FJz293xsXvy60qT8RWo6nqmvkLsxn7ybIv3 72LwmnRDCYSLo/YyH12tWYUmsN/eaDuzXUa1Y1tQiQRJEh8Kql1QHwWHl1idBwRsgX4N KJ+2GUjMA31vLlxwXHdCDVmCWXxPDlvbJVj1VgFafpONigOylCoek1MDTIW91SUs0IzC kjag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wiiSGqRM7aNSpfc58wa3XhK0FzX/pKojuxIsX+h84h4=; b=GnViOnPF+AoxS7OlVOUWf8TnfCXi5mEfBA2Hd2ZUOLT+jo76nqBOpub0xCpd8rX20T OFjMoFRY3SnS9VL4jVH4agH3FoCV1U1US0pf1zHfzEW/FZ1kx3+jFJJqpIErhwq95cc5 g19AXQEr+9LSbc4m4vRUO6WBJLuPXZ8QRGRBHdiBeCO2FqvGoDWvOhPGaHJwjB2ghLLt TrUy466eWk7XZ0zX4o/rh+GZpX/evqWEVHtpw20xYYBm2MCW0Rwx7uM5jZD76MKmu8NQ r4/ru0JPRBPEZb9Doam00Zw3sAz8Ury1FTYo0pI2qnRtGS1gVHtLeHa+dvONw3vIhCtA xusA== X-Gm-Message-State: AJcUuke+b7qWST8u2fzxRE/LlspF0vqYslK6vmAbqzbCr6maoAKASjZH 4ekuj0LQOYinWebgVn4LFzonYlXPIPNgmBxiv9LsDA== X-Google-Smtp-Source: ALg8bN4fSoeiq4H0ez9seugnMfdn70BTYDga3tFRBK3khifqLM1ZJaxQcYAeCh9avbo/cdWGRczjGYoe88p2SZelAIM= X-Received: by 2002:a24:3752:: with SMTP id r79mr258383itr.121.1547153932619; Thu, 10 Jan 2019 12:58:52 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a02:5f11:0:0:0:0:0 with HTTP; Thu, 10 Jan 2019 12:58:51 -0800 (PST) From: Carl Eugen Hoyos Date: Thu, 10 Jan 2019 21:58:51 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavc/libaomenc: Support lossless encoding 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" Hi! Attached patch fixes ticket #7600. Please comment, Carl Eugen From 90492e635c461f328a18cb6a55a71206f9cd5aeb Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Thu, 10 Jan 2019 21:56:28 +0100 Subject: [PATCH] lavc/libaomenc: Support lossless encoding. Tested-by: Ewout ter Hoeven --- libavcodec/libaomenc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index faec61c..244c71a 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -79,6 +79,7 @@ typedef struct AOMEncoderContext { aom_superblock_size_t superblock_size; int uniform_tiles; int row_mt; + int lossless; } AOMContext; static const char *const ctlidstr[] = { @@ -96,6 +97,7 @@ static const char *const ctlidstr[] = { #ifdef AOM_CTRL_AV1E_SET_ROW_MT [AV1E_SET_ROW_MT] = "AV1E_SET_ROW_MT", #endif + [AV1E_SET_LOSSLESS] = "AV1E_SET_LOSSLESS", }; static av_cold void log_encoder_error(AVCodecContext *avctx, const char *desc) @@ -662,6 +664,7 @@ static av_cold int aom_init(AVCodecContext *avctx, #ifdef AOM_CTRL_AV1E_SET_ROW_MT codecctl_int(avctx, AV1E_SET_ROW_MT, ctx->row_mt); #endif + codecctl_int(avctx, AV1E_SET_LOSSLESS, ctx->lossless); // provide dummy value to initialize wrapper, values will be updated each _encode() aom_img_wrap(&ctx->rawimg, img_fmt, avctx->width, avctx->height, 1, @@ -997,6 +1000,7 @@ static const AVOption options[] = { { "tile-columns", "Log2 of number of tile columns to use", OFFSET(tile_cols_log2), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE}, { "tile-rows", "Log2 of number of tile rows to use", OFFSET(tile_rows_log2), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE}, { "row-mt", "Enable row based multi-threading", OFFSET(row_mt), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VE}, + { "lossless", "Lossless mode", OFFSET(lossless), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VE}, { NULL } }; -- 1.7.10.4