v4l2transform: fix scaling in case of fixed pixel aspect ratio
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 20 May 2016 10:32:25 +0000 (12:32 +0200)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 6 Jun 2016 21:45:38 +0000 (17:45 -0400)
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

index 342d998249d25d6d2f9fb34624f425133abcc559..78191290325f6cf1c6d8f2c2a8c9e39b9c306d86 100644 (file)
@@ -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;