[vlc-devel] [PATCH] video_chroma: chain: check scaling need on transformed size
Francois Cartegnie
fcvlcdev at free.fr
Mon Sep 2 16:00:13 CEST 2019
---
modules/video_chroma/chain.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/modules/video_chroma/chain.c b/modules/video_chroma/chain.c
index 4be4bc8e1e..6cb9589721 100644
--- a/modules/video_chroma/chain.c
+++ b/modules/video_chroma/chain.c
@@ -212,12 +212,22 @@ static int ActivateConverter( vlc_object_t *p_this )
{
filter_t *p_filter = (filter_t *)p_this;
- const bool b_chroma = p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma;
- const bool b_resize = p_filter->fmt_in.video.i_width != p_filter->fmt_out.video.i_width ||
- p_filter->fmt_in.video.i_height != p_filter->fmt_out.video.i_height;
+ video_format_t vfmtout = p_filter->fmt_out.video;
+ const bool b_chroma = p_filter->fmt_in.video.i_chroma != vfmtout.i_chroma;
+ const bool b_transform = p_filter->fmt_in.video.orientation != vfmtout.orientation;
+ if( b_transform )
+ {
+ /* Get the transformation operation that will be done by converter */
+ video_orientation_t t = video_format_GetTransform( p_filter->fmt_in.video.orientation,
+ vfmtout.orientation );
+ /* Reverse that transformation on the final video size, so we can check if scaling
+ will be required */
+ video_format_TransformTo( &vfmtout, transform_Inverse(t) );
+ }
+ const bool b_resize = p_filter->fmt_in.video.i_width != vfmtout.i_width ||
+ p_filter->fmt_in.video.i_height != vfmtout.i_height;
const bool b_chroma_resize = b_chroma && b_resize;
- const bool b_transform = p_filter->fmt_in.video.orientation != p_filter->fmt_out.video.orientation;
if( !b_chroma && !b_chroma_resize && !b_transform)
return VLC_EGENERIC;
--
2.21.0
More information about the vlc-devel
mailing list