mpeg2dec: make the aspect ratio calculation more accurate.
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Tue, 4 Jun 2013 13:12:27 +0000 (16:12 +0300)
committerSebastian Dröge <slomo@circular-chaos.org>
Tue, 4 Jun 2013 15:29:31 +0000 (17:29 +0200)
Utilize the libmpeg2 api: mpeg2_guess_aspect() to guess the
aspect-ratio if we don't have a valid upstream PAR.

https://bugzilla.gnome.org/show_bug.cgi?id=685103

ext/mpeg2dec/gstmpeg2dec.c

index 6ae893917ad97301d7e90a62921722a2dfa7ab2c..87308dd1868883e4f6f7fb425e471f464f999943 100644 (file)
@@ -625,10 +625,18 @@ handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
   if (GST_VIDEO_INFO_PAR_N (vinfo) == 1 &&
       GST_VIDEO_INFO_PAR_D (vinfo) == 1 &&
       sequence->pixel_width != 0 && sequence->pixel_height != 0) {
-    GST_DEBUG_OBJECT (mpeg2dec, "Setting PAR %d x %d",
-        sequence->pixel_width, sequence->pixel_height);
+#if MPEG2_RELEASE >= MPEG2_VERSION(0,5,0)
+    guint pixel_width, pixel_height;
+    if (mpeg2_guess_aspect (sequence, &pixel_width, &pixel_height)) {
+      vinfo->par_n = pixel_width;
+      vinfo->par_d = pixel_height;
+    }
+#else
     vinfo->par_n = sequence->pixel_width;
     vinfo->par_d = sequence->pixel_height;
+#endif
+    GST_DEBUG_OBJECT (mpeg2dec, "Setting PAR %d x %d",
+        vinfo->par_n, vinfo->par_d);
   }
   vinfo->fps_n = 27000000;
   vinfo->fps_d = sequence->frame_period;