From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4260C42A2F for ; Thu, 12 May 2022 01:25:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 949A768B3F4; Thu, 12 May 2022 04:24:57 +0300 (EEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B01A968B2F9 for ; Thu, 12 May 2022 04:24:50 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652318695; x=1683854695; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=eHvKsNUdpcGw9owWJ9dUzwAMDdmzETAwmVtyKPSXEUA=; b=XC9/g+jO2uCRA+CHG39ksxA71Bh/ftVyulS7vnsfYudo7OKRZbQ7oolQ vAhDCghnkZclooqsXjYQCV9SrvstQNmZsdTn21oMbtOadkyLu2BCR8uj6 s+tpvuL0DHVgnN9gPw53uiZG9YQswmRYbb/PVZWuwPGIah+idCRN8JOPC WzrZLqAPkxRr70Fy3i+OEs2wxFgWrE8l+icRvihmlqRSXBD/dJkA+UIIC ljJUbhgUfihRQ4ygFW1nVD1r9tJDwarEBtR31vpZh5YP7IcsXzfKLDrOT oDtzCgJJmF+cb6wIYjhVsHx1+Otc4r6rfuXQ65idCgOnqDiPifF7l00wi w==; X-IronPort-AV: E=McAfee;i="6400,9594,10344"; a="295102836" X-IronPort-AV: E=Sophos;i="5.91,218,1647327600"; d="scan'208";a="295102836" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2022 18:24:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,218,1647327600"; d="scan'208";a="739467139" Received: from t.sh.intel.com ([10.239.159.147]) by orsmga005.jf.intel.com with ESMTP; 11 May 2022 18:24:46 -0700 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 May 2022 09:18:21 +0800 Message-Id: <20220512011821.2342620-1-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1] avfilter/vf_vpp_qsv: set outlink to EOF correctly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Fei Wang Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 1. Return error if filter frame fail before set outlink to EOF in none pass through mode. 2. Set outlink to EOF before return success in pass through mode. Fix endless cmd: ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 -hwaccel_output_format \ qsv -v debug -c:v hevc_qsv -i 4k.h265 \ -filter_complex "vpp_qsv=w=3840:h=2160:async_depth=4[o1];[o1]split=2[s1][s2]; [s2]vpp_qsv=w=1920:h=1080:async_depth=4[o2];[o2]split=2[s3][s4]; [s4]vpp_qsv=w=1920:h=1080:async_depth=4[o3]" \ -map [s1] -c:v hevc_qsv -async 3 -async_depth 3 -b:v 9000k -preset 7 -g 33 -y -f null - \ -map [s3] -c:v hevc_qsv -async 3 -async_depth 3 -b:v 4000k -preset 7 -g 33 -y -f null - \ -map [o3] -c:v hevc_qsv -async 3 -async_depth 3 -b:v 3100k -preset 7 -g 33 -y -f null - --- libavfilter/vf_vpp_qsv.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c index cfe343822b..3d9d3afbc8 100644 --- a/libavfilter/vf_vpp_qsv.c +++ b/libavfilter/vf_vpp_qsv.c @@ -556,15 +556,17 @@ static int activate(AVFilterContext *ctx) qsv->eof = s->eof; ret = ff_qsvvpp_filter_frame(qsv, inlink, in); av_frame_free(&in); + if (ret == AVERROR(EAGAIN)) + goto not_ready; + else if (ret < 0) + return ret; - if (s->eof) { - ff_outlink_set_status(outlink, status, pts); - return 0; - } + if (s->eof) + goto eof; if (qsv->got_frame) { qsv->got_frame = 0; - return ret; + return 0; } } } else { @@ -573,18 +575,27 @@ static int activate(AVFilterContext *ctx) in->pts = av_rescale_q(in->pts, inlink->time_base, outlink->time_base); ret = ff_filter_frame(outlink, in); - return ret; + if (ret < 0) + return ret; + + if (s->eof) + goto eof; + + return 0; } } - if (s->eof) { - ff_outlink_set_status(outlink, status, pts); - return 0; - } else { - FF_FILTER_FORWARD_WANTED(outlink, inlink); - } +not_ready: + if (s->eof) + goto eof; + + FF_FILTER_FORWARD_WANTED(outlink, inlink); return FFERROR_NOT_READY; + +eof: + ff_outlink_set_status(outlink, status, pts); + return 0; } static int query_formats(AVFilterContext *ctx) -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".