From patchwork Wed Mar 29 13:03:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Bouron X-Patchwork-Id: 3167 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp1061040vss; Wed, 29 Mar 2017 05:10:15 -0700 (PDT) X-Received: by 10.223.133.188 with SMTP id 57mr130470wrt.161.1490789415445; Wed, 29 Mar 2017 05:10:15 -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 f18si8254875wrc.171.2017.03.29.05.10.14; Wed, 29 Mar 2017 05:10:15 -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 B1AF8689A3F; Wed, 29 Mar 2017 15:09:48 +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 65EDA689818 for ; Wed, 29 Mar 2017 15:09:42 +0300 (EEST) Received: by mail-wr0-f172.google.com with SMTP id l43so12653564wre.1 for ; Wed, 29 Mar 2017 05:10:05 -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=yjtglRutivLaLM/pfFVpmKJaAnDk1lGN7nJSKMIat/4=; b=bS+HQPcIC4RI/kDxH3S/CuM6yo1zgQ8UDukOqRoM5Kkgn2prxdmqZJW2+gvSJojDPf gfihnHfqqWVQAiUsHsKP2vYfKeIPL8OGyzagpCMzD/1oKPm6g7DWxBNWhi4JpPlDKMKy JJuURVcOkIPNgxP9w+U13amsnJxpWRKPDRw0qGi0rV5lu8W4H4PKmeljvAy8amHsTFaI HWkXRQGkaP7e0AOZp6X3p3lZpuSPog/R8B8mgkOPGTuyfBe+U9LSR8nE4zuOHbl4zGhF Yl04Uhoh3l9Vczemkjb2i+rzzepDpTJwKaZ5pgyQ4x6IGvjtyQKgpUWfbNg4LWthZCeU sEhg== 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=yjtglRutivLaLM/pfFVpmKJaAnDk1lGN7nJSKMIat/4=; b=nk99tYbaLjsnxgO3RL7pMrAzdcXqn0sV2JGij+mPCffztM5tBZQmHB2QgXEJofT2Ze PZTCM61lCio7Yny5TL76o53ejYKdTgkgaM7JpLdriUi+F38ldDlyopH/7A44HS1TvdLY OANRACv2FeNq64LmjLsGn3m68FxsXpycBxRjN/IzYQgEdyTPp/N0Vqn3t48AYfHUyCKD GYu5HutSJ+zPfLIaemhVld7JJTA+8vr6CcGwxqRrDmHi5kU+VG7VvZRR1Svw7/xOOBQK q21iFN7yGKGZcwYLU4OsqIyWZWLpuEhGUCR9dOm6EDNpjhzl+kFYSRcqWbLHCv/0d0ab VR/Q== X-Gm-Message-State: AFeK/H1pIMGPLoHMtXGpkcy6gzFocU3W6XCs37B7icrKSzm0TzvK7K3c3E62wLSNfAScPg== X-Received: by 10.28.92.65 with SMTP id q62mr1051892wmb.139.1490789025803; Wed, 29 Mar 2017 05:03:45 -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 q4sm7928902wme.17.2017.03.29.05.03.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Mar 2017 05:03:45 -0700 (PDT) From: Matthieu Bouron To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Mar 2017 15:03:55 +0200 Message-Id: <20170329130355.23199-1-matthieu.bouron@gmail.com> X-Mailer: git-send-email 2.12.0 Subject: [FFmpeg-devel] [PATCH] doc/examples/filtering_video: 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_video.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/doc/examples/filtering_video.c b/doc/examples/filtering_video.c index 15116d3881..b664c69f9d 100644 --- a/doc/examples/filtering_video.c +++ b/doc/examples/filtering_video.c @@ -211,6 +211,7 @@ int main(int argc, char **argv) { int ret; AVPacket packet; + int keep_packet = 0; AVFrame *frame = av_frame_alloc(); AVFrame *filt_frame = av_frame_alloc(); int got_frame; @@ -234,14 +235,30 @@ int main(int argc, char **argv) /* read all packets */ while (1) { - if ((ret = av_read_frame(fmt_ctx, &packet)) < 0) - break; + if (!keep_packet) { + if ((ret = av_read_frame(fmt_ctx, &packet)) < 0) + break; + keep_packet = 1; + } if (packet.stream_index == video_stream_index) { got_frame = 0; - ret = avcodec_decode_video2(dec_ctx, frame, &got_frame, &packet); - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Error decoding video\n"); + + 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; } @@ -266,8 +283,11 @@ int main(int argc, char **argv) } av_frame_unref(frame); } + } else { + keep_packet = 0; } - av_packet_unref(&packet); + if (!keep_packet) + av_packet_unref(&packet); } end: avfilter_graph_free(&filter_graph);