From 89a2f0a6470483ca1da184cf4c8bde3ba23a918b Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Fri, 20 May 2016 12:32:25 +0200 Subject: [PATCH] v4l2transform: fix scaling in case of fixed pixel aspect ratio To change pixel aspect ratio from DAR to PAR, the necessary scaling factor is DAR/PAR, not DAR*PAR. For good measure, add debug output similar to the fixed-width and fixed-height cases. https://bugzilla.gnome.org/show_bug.cgi?id=766711 --- sys/v4l2/gstv4l2transform.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/v4l2/gstv4l2transform.c b/sys/v4l2/gstv4l2transform.c index 342d998..7819129 100644 --- a/sys/v4l2/gstv4l2transform.c +++ b/sys/v4l2/gstv4l2transform.c @@ -687,9 +687,11 @@ gst_v4l2_transform_fixate_caps (GstBaseTransform * trans, to_par_n = gst_value_get_fraction_numerator (to_par); to_par_d = gst_value_get_fraction_denominator (to_par); + GST_DEBUG_OBJECT (trans, "PAR is fixed %d/%d", to_par_n, to_par_d); + /* Calculate scale factor for the PAR change */ - if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_n, - to_par_d, &num, &den)) { + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_d, + to_par_n, &num, &den)) { GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), ("Error calculating the output scaled size - integer overflow")); goto done; -- 2.7.4