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