From patchwork Wed Mar 29 14:31:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Bouron X-Patchwork-Id: 3170 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp1094676vss; Wed, 29 Mar 2017 06:31:50 -0700 (PDT) X-Received: by 10.223.139.221 with SMTP id w29mr567410wra.18.1490794310586; Wed, 29 Mar 2017 06:31:50 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 137si7198774wmb.51.2017.03.29.06.31.49; Wed, 29 Mar 2017 06:31:50 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 64F74689A9C; Wed, 29 Mar 2017 16:31:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f172.google.com (mail-wr0-f172.google.com [209.85.128.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB8196808B9 for ; Wed, 29 Mar 2017 16:31:17 +0300 (EEST) Received: by mail-wr0-f172.google.com with SMTP id w43so15670047wrb.0 for ; Wed, 29 Mar 2017 06:31:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Bc/CCVvsj584RXfJ4V1XL4wwQY46Z1Q9PUISfBoO5w8=; b=s2OCpVbCGqe39GCl29agFRkYGRE5w0hEH6F4r8yCv3YKuEvGYBtfblF8PY8XM/j+Ed IepvzZdVXKmNnXoC7IBhLjFbokEhnok+b1aVcZhAhgQUAWAOR6tcnrgbwv/P6Eo3m2ij 4ptsmqzUNd5C6f94QmNEvcGPx8PYA7Pc9eulrnBVzD2WUvBYCUPpiEa5WuyMaEdUcRCd wqM2vY3ybuqTLELhGlxekKT0kkpksONFVCl3uF60ic0Gh7RxspptPnlqWlMQbdhEY8PS JeAyODCnMa3+1EAF2s8YVoWuyMzzeNk0sEqqiD2zKVA4pdtvo0gAM+s5JDg5Xf7vw+FT kRcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Bc/CCVvsj584RXfJ4V1XL4wwQY46Z1Q9PUISfBoO5w8=; b=OF5xQqeg6Ye3LlJX/WV2C9RMULOH/bee0LeJuJl4lm5LklutMAWVPCMSTDWqNQTQ4n hZqj5WFvQMoM3xtGdiKt/7H4gHvzVM8RRZvhyRy10rFxzI4mb+ssT1vdvRrLs8F1xS/O Ftv0XaY5iQBigjQjqgC2ug/7yC/weiyn9UAtyS5mr8cEFn+XmeOLGgwaJ7oc1mrI/rBQ khDUsaXoOOi3o3zk4FeDnCLWZXvSIhUerngQh0jRBYu9uZWxx9wNf3VM4CELbSIOpvQy zlB1P5Tg9sIOkVVIOiNe6yFjPveQykpO9YHGsW6mKU5JE+50dO5lkchEX7WjWzkwdW8j DEvw== X-Gm-Message-State: AFeK/H3C7FVKoeEoO7o33gnenJExiJwX2P1CKFdlcera0FR3Bzd4oHJzJRKTTGOOCy8RcA== X-Received: by 10.28.20.148 with SMTP id 142mr822394wmu.134.1490794299494; Wed, 29 Mar 2017 06:31:39 -0700 (PDT) Received: from boken.gopro.lcl (LPuteaux-656-1-74-135.w80-12.abo.wanadoo.fr. [80.12.80.135]) by smtp.gmail.com with ESMTPSA id g13sm8185325wmd.28.2017.03.29.06.31.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Mar 2017 06:31:38 -0700 (PDT) From: Matthieu Bouron To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Mar 2017 16:31:47 +0200 Message-Id: <20170329143147.26644-1-matthieu.bouron@gmail.com> X-Mailer: git-send-email 2.12.0 Subject: [FFmpeg-devel] [PATCH] doc/examples/filtering_audio: switch to new decoding 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 Cc: Matthieu Bouron MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- doc/examples/filtering_audio.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/doc/examples/filtering_audio.c b/doc/examples/filtering_audio.c index c6a930ba8b..c62a1f6f62 100644 --- a/doc/examples/filtering_audio.c +++ b/doc/examples/filtering_audio.c @@ -216,7 +216,8 @@ static void print_frame(const AVFrame *frame) int main(int argc, char **argv) { int ret; - AVPacket packet0, packet; + AVPacket packet; + int keep_packet = 0; AVFrame *frame = av_frame_alloc(); AVFrame *filt_frame = av_frame_alloc(); int got_frame; @@ -239,28 +240,37 @@ int main(int argc, char **argv) goto end; /* read all packets */ - packet0.data = NULL; - packet.data = NULL; while (1) { - if (!packet0.data) { + if (!keep_packet) { if ((ret = av_read_frame(fmt_ctx, &packet)) < 0) break; - packet0 = packet; + keep_packet = 1; } if (packet.stream_index == audio_stream_index) { got_frame = 0; - ret = avcodec_decode_audio4(dec_ctx, frame, &got_frame, &packet); - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Error decoding audio\n"); - continue; + + ret = avcodec_send_packet(dec_ctx, &packet); + if (ret >= 0) { + keep_packet = 0; + } else if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) { + av_log(NULL, AV_LOG_ERROR, "Error while sending a packet to the decoder\n"); + break; + } + + ret = avcodec_receive_frame(dec_ctx, frame); + if (ret >= 0) { + got_frame = 1; + } else if (ret == AVERROR_EOF) { + break; + } else if (ret != AVERROR(EAGAIN)) { + av_log(NULL, AV_LOG_ERROR, "Error while receiving a frame from the decoder\n"); + break; } - packet.size -= ret; - packet.data += ret; if (got_frame) { /* push the audio data from decoded frame into the filtergraph */ - if (av_buffersrc_add_frame_flags(buffersrc_ctx, frame, 0) < 0) { + if (av_buffersrc_add_frame_flags(buffersrc_ctx, frame, AV_BUFFERSRC_FLAG_KEEP_REF) < 0) { av_log(NULL, AV_LOG_ERROR, "Error while feeding the audio filtergraph\n"); break; } @@ -275,14 +285,14 @@ int main(int argc, char **argv) print_frame(filt_frame); av_frame_unref(filt_frame); } + av_frame_unref(frame); } - - if (packet.size <= 0) - av_packet_unref(&packet0); } else { /* discard non-wanted packets */ - av_packet_unref(&packet0); + keep_packet = 0; } + if (!keep_packet) + av_packet_unref(&packet); } end: avfilter_graph_free(&filter_graph);