From patchwork Fri Mar 5 16:33:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 26159 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 69C0F44B46F for ; Fri, 5 Mar 2021 18:43:56 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 228A668ADAD; Fri, 5 Mar 2021 18:36:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7285468A980 for ; Fri, 5 Mar 2021 18:36:21 +0200 (EET) Received: by mail-qt1-f170.google.com with SMTP id b3so2141914qtj.10 for ; Fri, 05 Mar 2021 08:36:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=WrEjY+9grZCXdZ7DsUv7LGck09dyNGg9POm8j2ImSmk=; b=ibTeSIUKMA1Kh65JNYG1lDEriHquf/izg8SOARQfei2PjxZ+zg7ktMgV/Ae2IWeC6o 28/5Zdo1fjniQX7TsZLPCJt3mfrmsg8RLjSm++5Se8DSdNzadjU1GXSB3kz7OAeelVrX JZ7fVrxB2RVqsUiS6LSGd3c5kWZVvld8fFm20yAsPjD2ZiAnrSeKdP7I2r7F56sgNTKn KF3G5iwoHi2jjj+1KDWssVW/vWJBu41Eo8xM6z2HK+c9mBVSPlgKHCgGL2NFL0GwknSz 1HqsZsjyi8+Wf5O/J45spEsGArLJg3DXFTkWsR7ZqT9b6tnn4YTqMt8V8tl1Wnl22aP6 VLsQ== 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=WrEjY+9grZCXdZ7DsUv7LGck09dyNGg9POm8j2ImSmk=; b=sb3g/hv3FLIhhnartYis9YGtUNZxnTsPXeRlaVrKYgKdykHNYkXaMACiv/REaVG4/g rpcYO73TDJltAgiJm5ag2LHQkGtEDuMRHtgTax8Y1jPethglRrxmxvQGjmrWZbcR1YSH 49El8c6uNOe84IMGZ9Jg9AQ2C0ptIYkk4B3/OVcdtO9suV7/ubnyOnVCvBKzN6z2O7J4 95XCHdZ0eQ3eYKirXGxmmKf4WPDK0MacJPc4jV6ie1rndzVV4+mRAWzk+yDeOhR7FwfK xJT40T94DWXq1jxSlpsJG+GdeVLn+3+jkdgDxWeQBBilmcEIq3400ZuzjQMcCnj+mVgl dDaA== X-Gm-Message-State: AOAM532jqw9DtxXEzlaq2QA6UMKCu54CTR4ydJebBiwnvMw/ZC1c00bD XBe10g7AKVM5O+7gdBK/KnAR6TpIhSluAQ== X-Google-Smtp-Source: ABdhPJwnP7KNOTRoYcTMIlwbi2Gm8V6VLXsAHFg5Jyvgi5r4ZHAbqlPyf12BSIA9xXe3wGCuffkOCw== X-Received: by 2002:ac8:5ec8:: with SMTP id s8mr9515001qtx.256.1614962179835; Fri, 05 Mar 2021 08:36:19 -0800 (PST) Received: from localhost.localdomain ([181.23.89.132]) by smtp.gmail.com with ESMTPSA id b10sm2168494qtt.23.2021.03.05.08.36.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Mar 2021 08:36:19 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 Mar 2021 13:33:34 -0300 Message-Id: <20210305163339.63164-44-jamrial@gmail.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210305163339.63164-1-jamrial@gmail.com> References: <20210305163339.63164-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 43/48] doc/examples/transcode_aac: use av_packet_alloc() to allocate packets 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 --- doc/examples/transcode_aac.c | 46 +++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c index e0c76f5b35..73786ab59b 100644 --- a/doc/examples/transcode_aac.c +++ b/doc/examples/transcode_aac.c @@ -245,14 +245,16 @@ cleanup: /** * Initialize one data packet for reading or writing. - * @param packet Packet to be initialized + * @param[out] packet Packet to be initialized + * @return Error code (0 if successful) */ -static void init_packet(AVPacket *packet) +static int init_packet(AVPacket **packet) { - av_init_packet(packet); - /* Set the packet data and size so that it is recognized as being empty. */ - packet->data = NULL; - packet->size = 0; + if (!(*packet = av_packet_alloc())) { + fprintf(stderr, "Could not allocate packet\n"); + return AVERROR(ENOMEM); + } + return 0; } /** @@ -371,28 +373,31 @@ static int decode_audio_frame(AVFrame *frame, int *data_present, int *finished) { /* Packet used for temporary storage. */ - AVPacket input_packet; + AVPacket *input_packet; int error; - init_packet(&input_packet); + + error = init_packet(&input_packet); + if (error < 0) + return error; /* Read one audio frame from the input file into a temporary packet. */ - if ((error = av_read_frame(input_format_context, &input_packet)) < 0) { + if ((error = av_read_frame(input_format_context, input_packet)) < 0) { /* If we are at the end of the file, flush the decoder below. */ if (error == AVERROR_EOF) *finished = 1; else { fprintf(stderr, "Could not read frame (error '%s')\n", av_err2str(error)); - return error; + goto cleanup; } } /* Send the audio frame stored in the temporary packet to the decoder. * The input audio stream decoder is used to do this. */ - if ((error = avcodec_send_packet(input_codec_context, &input_packet)) < 0) { + if ((error = avcodec_send_packet(input_codec_context, input_packet)) < 0) { fprintf(stderr, "Could not send packet for decoding (error '%s')\n", av_err2str(error)); - return error; + goto cleanup; } /* Receive one frame from the decoder. */ @@ -418,7 +423,7 @@ static int decode_audio_frame(AVFrame *frame, } cleanup: - av_packet_unref(&input_packet); + av_packet_free(&input_packet); return error; } @@ -661,9 +666,12 @@ static int encode_audio_frame(AVFrame *frame, int *data_present) { /* Packet used for temporary storage. */ - AVPacket output_packet; + AVPacket *output_packet; int error; - init_packet(&output_packet); + + error = init_packet(&output_packet); + if (error < 0) + return error; /* Set a timestamp based on the sample rate for the container. */ if (frame) { @@ -681,11 +689,11 @@ static int encode_audio_frame(AVFrame *frame, } else if (error < 0) { fprintf(stderr, "Could not send packet for encoding (error '%s')\n", av_err2str(error)); - return error; + goto cleanup; } /* Receive one encoded frame from the encoder. */ - error = avcodec_receive_packet(output_codec_context, &output_packet); + error = avcodec_receive_packet(output_codec_context, output_packet); /* If the encoder asks for more data to be able to provide an * encoded frame, return indicating that no data is present. */ if (error == AVERROR(EAGAIN)) { @@ -706,14 +714,14 @@ static int encode_audio_frame(AVFrame *frame, /* Write one audio frame from the temporary packet to the output file. */ if (*data_present && - (error = av_write_frame(output_format_context, &output_packet)) < 0) { + (error = av_write_frame(output_format_context, output_packet)) < 0) { fprintf(stderr, "Could not write frame (error '%s')\n", av_err2str(error)); goto cleanup; } cleanup: - av_packet_unref(&output_packet); + av_packet_free(&output_packet); return error; }