From patchwork Sat Nov 9 23:08:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 16183 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 BCB5C448AFC for ; Sun, 10 Nov 2019 01:08:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9CEDD68ADB2; Sun, 10 Nov 2019 01:08:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 74B4968AD83 for ; Sun, 10 Nov 2019 01:08:32 +0200 (EET) Received: by mail-qv1-f67.google.com with SMTP id i3so3404056qvv.7 for ; Sat, 09 Nov 2019 15:08:32 -0800 (PST) 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=Ecs4ar+VjDbxJAAjD0rnFEAgY3rptLDI8nWbolV2Yrw=; b=UsxcC+loOH1ZlA73W4HajZv2Yfkam8Flc7tkWo5vY/89dKRohfrF302LBq6jAqOfF3 zGQ97EfnjxpNRLWDQvp1CrRKSd3dThYru7wKcxlyzSzszHgrQ/d0y7SzR7uzhVJrSb+C Huge0vsLM1e+nsknX0VcCFZdO/n7taAHi7BCqV6cS90wIkZ68mYHZJOkUtpZs64KmGUC zeUxAVRQa4u4ug2a1DK/v/TSfqJL1dZSnPw5VtxFVm/ZmAjVubkINuPLzhMrjrDtHzgq vAmx1eN6YLw6d7793IxVkr266KgZnKeomAI2OTdOusuh0JN4VJ9vkK+BLE8eeX3WB3gZ dcRw== 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=Ecs4ar+VjDbxJAAjD0rnFEAgY3rptLDI8nWbolV2Yrw=; b=E3xqYLjD2sQyLN9+IWLzabPrHFvZj1wQMUlh9kK++kqpqpPCUbN6VR5BAd+ZZObYzO r4oMjAv/Nw9tHpUfJ3MIqRq83jUr2RUtS6WMtUWH4Mura4mzWoqJfxfC0bAYcV/K4pvt fiQItI3fXetx5r9IogAvNK9hfGmEz/c9SWZrDDp4ebCbvIBevvcqecARVlkQlZm2mbcI ZsvjMRAcm5J2FhjD+61+lecptk5vVKNq8uE8LR8fNJV0qSz/KqmwOKcOKq0LqiySxrVZ jM7lgxhv3eUaxyflngsBrQcalvoqahcYxDwTNDdoBrvQCFRL7blRgYbGBXY2iksdNB9l 5BUw== X-Gm-Message-State: APjAAAXVC/3VoNwSD7ibgAUzDOi7iURCDxNDsu+t7RYTUKTW5gPWdrgt asaigm0ucMjQ1loxFwBM5jj2eY/C X-Google-Smtp-Source: APXvYqyI75Cr0AVRnUtF9WtCUQtNsKCxfKuFyj8u4iK5LGxzZl6olL7bMvifgalB8mGuS11XATKxrA== X-Received: by 2002:a0c:94d7:: with SMTP id k23mr17424030qvk.200.1573340910989; Sat, 09 Nov 2019 15:08:30 -0800 (PST) Received: from localhost.localdomain ([181.23.83.211]) by smtp.gmail.com with ESMTPSA id j18sm4571812qtn.52.2019.11.09.15.08.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Nov 2019 15:08:30 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 9 Nov 2019 20:08:17 -0300 Message-Id: <20191109230817.3110-1-jamrial@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/encode: add missing assert to avcodec_receive_packet() 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" Encoders must return reference counted packets. This was checked only for encoders using the encode2 AVCodec API, while blindly accepting whatever encoders using the receive_packet AVCodec API were returning. Signed-off-by: James Almer --- libavcodec/encode.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/encode.c b/libavcodec/encode.c index d81b32b983..9ed2cf0f59 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -428,9 +428,15 @@ int attribute_align_arg avcodec_receive_packet(AVCodecContext *avctx, AVPacket * return AVERROR(EINVAL); if (avctx->codec->receive_packet) { + int ret; if (avctx->internal->draining && !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY)) return AVERROR_EOF; - return avctx->codec->receive_packet(avctx, avpkt); + ret = avctx->codec->receive_packet(avctx, avpkt); + if (!ret) + // Encoders must always return ref-counted buffers. + // Side-data only packets have no data and can be not ref-counted. + av_assert0(!avpkt->data || avpkt->buf); + return ret; } // Emulation via old API.