From patchwork Tue May 19 18:55:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19776 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 709EC44B600 for ; Tue, 19 May 2020 21:56:29 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 48E33688395; Tue, 19 May 2020 21:56:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C0E956882D8 for ; Tue, 19 May 2020 21:56:22 +0300 (EEST) Received: by mail-qk1-f193.google.com with SMTP id n14so690640qke.8 for ; Tue, 19 May 2020 11:56:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=CPmB2yAMuWjq4un7gbe6rjrkqaqIsetdTrh5v66xx+M=; b=RvPI6cEjqyV1IG74Igo56K5XgF6bAY3mUV2DABsN5MG2c1Ecgc1OjJ1C/iCXxUpptZ O4E8triWbBOyBzy5CijnJoBMUmeWFt7gXBSRhDoNWGGymU1NXFIa7HRf/D4oNIFxGpp6 uIOjrWM01sN0YLHE7MP5VLsHIXVp5fH//7bU9hPfFBlE2kiQEgY9Gndf37Q793k/HttZ bEflvOYylTbmLo5Z1KPIhJQk1ZBJXlyvPHpv46fpQNWwv9f2hs56iu4r9tODuICcDCUW wI3GA4G8rLRrw2qCWhcTXZVdC0L+Krbe6Mn9m1f+6W/yy/MkbVtgBcIa0MmXkqG2n3Oc jPGQ== 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:mime-version :content-transfer-encoding; bh=CPmB2yAMuWjq4un7gbe6rjrkqaqIsetdTrh5v66xx+M=; b=FQ82O4ucaRUF8Y4d6FhJGFepukWMfXBlsLnn6FoSQ9VdjW0h4VyOVTiC/h+gJA/1YH 6y/6UjATCjz/i3BDyP2NuAEpF+zXNwXJ90MSciC5F/s0F88fq8P2MnFBM1A0oFFOHdmn hP2DhAQg2O9QJ/0jj9WTFeUTnXRg2uU3rkV01/HrcCPCKEy4Ya6EovD3MjNSHogyUpGN BmGoq/rAFA55HMI8oRy6CQV10s0FdxDp6HpOE03nyExdThp36EzfJSTn6XfLNE7meGYZ nR05XLqQDv8dgQONuLJMGZDsHEuNZw8AK2gdEpYZOWnjhIg2E8btDYwORq3gSpxi6o7H 7WDQ== X-Gm-Message-State: AOAM5319BEIO4LozgrhdJwzq2RY4KBQSndhIxT+ViLlG/hq7pAvv/ZVD d4oriFJwODKiBb1YrZNa8z6Mrl8a X-Google-Smtp-Source: ABdhPJyGFNqzmnkWEkjmlY6BloLuxi3wWJXTjiy+73vKyfypvLcHkUbBY2n31KI8u5cqQL6n2OUBFQ== X-Received: by 2002:a37:a2d4:: with SMTP id l203mr810063qke.485.1589914580052; Tue, 19 May 2020 11:56:20 -0700 (PDT) Received: from localhost.localdomain ([191.83.209.22]) by smtp.gmail.com with ESMTPSA id y28sm453660qtc.62.2020.05.19.11.56.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 11:56:19 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 15:55:25 -0300 Message-Id: <20200519185525.713-1-jamrial@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/libx265: add support for reordered_opaque 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: James Almer --- libavcodec/libx265.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 573ecc8cb0..821175c1b6 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -504,6 +504,16 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, ret = libx265_encode_set_roi(ctx, pic, &x265pic); if (ret < 0) return ret; + + if (pic->reordered_opaque) { + x265pic.userData = av_malloc(sizeof(pic->reordered_opaque)); + if (!x265pic.userData) { + av_freep(&x265pic.quantOffsets); + return AVERROR(ENOMEM); + } + + memcpy(x265pic.userData, &pic->reordered_opaque, sizeof(pic->reordered_opaque)); + } } ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal, @@ -570,6 +580,12 @@ FF_ENABLE_DEPRECATION_WARNINGS ff_side_data_set_encoder_stats(pkt, x265pic_out.frameData.qp * FF_QP2LAMBDA, NULL, 0, pict_type); + if (x265pic_out.userData) { + memcpy(&avctx->reordered_opaque, x265pic_out.userData, sizeof(avctx->reordered_opaque)); + av_freep(&x265pic_out.userData); + } else + avctx->reordered_opaque = 0; + *got_packet = 1; return 0; } @@ -683,6 +699,7 @@ AVCodec ff_libx265_encoder = { .priv_data_size = sizeof(libx265Context), .priv_class = &class, .defaults = x265_defaults, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .wrapper_name = "libx265", };