From patchwork Thu Mar 26 19:58:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 18416 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 E125E44B11E for ; Thu, 26 Mar 2020 22:00:24 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BFF3768B7A3; Thu, 26 Mar 2020 22:00:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f195.google.com (mail-qt1-f195.google.com [209.85.160.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0631E68AF49 for ; Thu, 26 Mar 2020 22:00:19 +0200 (EET) Received: by mail-qt1-f195.google.com with SMTP id g7so6562654qtj.13 for ; Thu, 26 Mar 2020 13:00:18 -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=1XbA2c5n7I5ixv+g3oBgwvT3BDOI6c8xUbXYwpqJrRg=; b=Iu5l0UWQOVkVj+aG58qOLi812DoXbWHzhvxTeZHXYpZ6gG1jyDIZVpskIdKO+o0pIW 9pG5U3Rv2NB+YvukzrF6xYriB6ipQqBt1w9utOdcQMX4CKEipAzx/zY1wCpl0za87jz7 r1CRIWx5wTH/BYNqOzAC/oPHQwG3TtEc7mC/CE0Syd1i+TIDYiEKX+xglpmRZ6jeYzpA KBIDv37baRSLpz4WyYtS4j44ZC8oHzF+wbisZyzHCPy63u1M0MPUNs093XbvVtVtmQ+j W1SYik0/mozlnk/qvg/WAlWT0fcqhIuP4WOkMkmaliFft+KEzLDvO6eCmOplQByCXFEE w/AQ== 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=1XbA2c5n7I5ixv+g3oBgwvT3BDOI6c8xUbXYwpqJrRg=; b=aGHhn552C8bHiCT0G4PYdD5gd37X7Vx6WYwdMzQBGmcr+Idt4JitcjVU/m771m4j1W RKJAqpFr9wjOG/vBf1p9wFIIZ/n3KfcjgeO+8qFQInk3c4cBZkqFBqjl04GzXsM4hZe7 F+VZ0L/TMzkyBj+VOp/JcANnyMnWuPq069YCJ3cqFQeLVPlNOT2G08M5/ERh9Bri6jtX tqgbMdjD+MO/aheEiwpdtLu1fEdMQr7ZSgdbd/jtHAK1FXFw77YYJ03coMYZkbNhrW6X YDDNtgxIpq5l38D50YN9bU9ZR+gFa8A96FbrQjhjOmqvAXIh4OmlZ2ec228km2YWhwlR 3wkQ== X-Gm-Message-State: ANhLgQ1aKIBqbaCWHOd8+/brp0H4scVVbIS+lhtQonOlZ0XC8GNuWTpy ca34WbDmhzr5s8mwXBiT1Zkx/u1t X-Google-Smtp-Source: ADFU+vsX2+3eLk+1E7YbsGlQ0b86QKIdyqK4yWlOJiQQfA2kll/1kGRzNOs4h0THSC6frvquDCNpRg== X-Received: by 2002:aed:32c7:: with SMTP id z65mr10219764qtd.81.1585252817442; Thu, 26 Mar 2020 13:00:17 -0700 (PDT) Received: from localhost.localdomain ([181.23.71.173]) by smtp.gmail.com with ESMTPSA id f14sm343991qtp.55.2020.03.26.13.00.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2020 13:00:16 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Mar 2020 16:58:55 -0300 Message-Id: <20200326195857.5838-1-jamrial@gmail.com> X-Mailer: git-send-email 2.25.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 0/2 v3] Restructuring the encode API 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" This set follows the same logic as 061a0c14bb, but for the encode API: The new public API will no longer be a wrapper around the old deprecated one, and the internal API used by the encoders now consists of a single receive_packet() callback that pulls frames as required. Because of the above, PATCH 1/2 can't be applied until all the relevant encoders have been adapted, and said changes squashed into it. This means librav1e, nvenc, amfenc, v4l2_m2m, and vaapi_enc. I have ported librav1e in http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-March/258567.html both to test this set and for it to work as an example for the maintainers of the other three encoders in order to get an idea of what they should do. Similarly, Andriy Gelman ported v4l2_m2m_enc in http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-March/258192.html James Almer (2): avcodec/encode: restructure the core encoding code avcodec/encode: restructure the old encode API libavcodec/avcodec.h | 12 +- libavcodec/decode.c | 1 - libavcodec/encode.c | 560 +++++++++++++++++++++--------------------- libavcodec/encode.h | 39 +++ libavcodec/internal.h | 8 +- libavcodec/utils.c | 18 +- 6 files changed, 346 insertions(+), 292 deletions(-) create mode 100644 libavcodec/encode.h