ffmpeg | branch: master | Guo, Yejun <yejun....@intel.com> | Fri Feb 21 19:29:12 2020 +0800| [f9cb7cf424054ea098cb0e329ba49efb41d02b7c] | committer: Guo, Yejun
avfilter/vf_sr.c: refine code to use AVPixFmtDescriptor.log2_chroma_h/w Signed-off-by: Guo, Yejun <yejun....@intel.com> Reviewed-by: Pedro Arthur <bygran...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f9cb7cf424054ea098cb0e329ba49efb41d02b7c --- libavfilter/vf_sr.c | 40 ++++++---------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/libavfilter/vf_sr.c b/libavfilter/vf_sr.c index 562b03069b..f000eda186 100644 --- a/libavfilter/vf_sr.c +++ b/libavfilter/vf_sr.c @@ -176,40 +176,12 @@ static int config_props(AVFilterLink *inlink) sr_context->sws_slice_h = inlink->h; } else { if (inlink->format != AV_PIX_FMT_GRAY8){ - sws_src_h = sr_context->input.height; - sws_src_w = sr_context->input.width; - sws_dst_h = sr_context->output.height; - sws_dst_w = sr_context->output.width; - - switch (inlink->format){ - case AV_PIX_FMT_YUV420P: - sws_src_h = AV_CEIL_RSHIFT(sws_src_h, 1); - sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 1); - sws_dst_h = AV_CEIL_RSHIFT(sws_dst_h, 1); - sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 1); - break; - case AV_PIX_FMT_YUV422P: - sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 1); - sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 1); - break; - case AV_PIX_FMT_YUV444P: - break; - case AV_PIX_FMT_YUV410P: - sws_src_h = AV_CEIL_RSHIFT(sws_src_h, 2); - sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 2); - sws_dst_h = AV_CEIL_RSHIFT(sws_dst_h, 2); - sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 2); - break; - case AV_PIX_FMT_YUV411P: - sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 2); - sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 2); - break; - default: - av_log(context, AV_LOG_ERROR, - "could not create SwsContext for scaling for given input pixel format: %s\n", - av_get_pix_fmt_name(inlink->format)); - return AVERROR(EIO); - } + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format); + sws_src_h = AV_CEIL_RSHIFT(sr_context->input.height, desc->log2_chroma_h); + sws_src_w = AV_CEIL_RSHIFT(sr_context->input.width, desc->log2_chroma_w); + sws_dst_h = AV_CEIL_RSHIFT(sr_context->output.height, desc->log2_chroma_h); + sws_dst_w = AV_CEIL_RSHIFT(sr_context->output.width, desc->log2_chroma_w); + sr_context->sws_contexts[0] = sws_getContext(sws_src_w, sws_src_h, AV_PIX_FMT_GRAY8, sws_dst_w, sws_dst_h, AV_PIX_FMT_GRAY8, SWS_BICUBIC, NULL, NULL, NULL); _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".