summaryrefslogtreecommitdiffstats
path: root/ext/mpeg2enc
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2008-02-03 18:22:18 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2008-02-03 18:22:18 +0000
commitc6507559fbebf31bd24a063eb8312be59a545e14 (patch)
tree8461060bb59e24859000aa8188560aa7bd9dbaba /ext/mpeg2enc
parentb451b72f2d1190a6838f2750c3f42bd808d7982e (diff)
downloadgst-plugins-bad-c6507559fbebf31bd24a063eb8312be59a545e14.tar.gz
gst-plugins-bad-c6507559fbebf31bd24a063eb8312be59a545e14.tar.bz2
gst-plugins-bad-c6507559fbebf31bd24a063eb8312be59a545e14.zip
ext/mpeg2enc/gstmpeg2encpicturereader.cc: Use the incoming pixel-aspect-ratio if provided to infer a default aspect r...
Original commit message from CVS: * ext/mpeg2enc/gstmpeg2encpicturereader.cc: Use the incoming pixel-aspect-ratio if provided to infer a default aspect ratio, which can be overridden using the 'aspect' property. Fixes: #499008
Diffstat (limited to 'ext/mpeg2enc')
-rw-r--r--ext/mpeg2enc/gstmpeg2encpicturereader.cc38
1 files changed, 31 insertions, 7 deletions
diff --git a/ext/mpeg2enc/gstmpeg2encpicturereader.cc b/ext/mpeg2enc/gstmpeg2encpicturereader.cc
index 57f95ccd..7b6cfbb7 100644
--- a/ext/mpeg2enc/gstmpeg2encpicturereader.cc
+++ b/ext/mpeg2enc/gstmpeg2encpicturereader.cc
@@ -61,21 +61,45 @@ GstMpeg2EncPictureReader::StreamPictureParams (MPEG2EncInVidParams & strm)
GstStructure *structure = gst_caps_get_structure (caps, 0);
gint width, height;
const GValue *fps_val;
+ const GValue *par_val;
y4m_ratio_t fps;
+ y4m_ratio_t par;
+
+ if (!gst_structure_get_int (structure, "width", &width))
+ width = -1;
+
+ if (!gst_structure_get_int (structure, "height", &height))
+ height = -1;
- gst_structure_get_int (structure, "width", &width);
- gst_structure_get_int (structure, "height", &height);
fps_val = gst_structure_get_value (structure, "framerate");
- fps.n = gst_value_get_fraction_numerator (fps_val);
- fps.d = gst_value_get_fraction_denominator (fps_val);
+ if (fps_val != NULL) {
+ fps.n = gst_value_get_fraction_numerator (fps_val);
+ fps.d = gst_value_get_fraction_denominator (fps_val);
+
+ strm.frame_rate_code = mpeg_framerate_code (fps);
+ } else
+ strm.frame_rate_code = 0;
+
+ par_val = gst_structure_get_value (structure, "pixel-aspect-ratio");
+ if (par_val != NULL) {
+ par.n = gst_value_get_fraction_numerator (par_val);
+ par.d = gst_value_get_fraction_denominator (par_val);
+ } else {
+ /* By default, assume square pixels */
+ par.n = 1;
+ par.d = 1;
+ }
strm.horizontal_size = width;
strm.vertical_size = height;
- strm.frame_rate_code = mpeg_framerate_code (fps);
+
strm.interlacing_code = Y4M_ILACE_NONE;
- /* FIXME perhaps involve pixel-aspect-ratio for 'better' sar */
- strm.aspect_ratio_code = mpeg_guess_mpeg_aspect_code (2, y4m_sar_SQUARE,
+
+ strm.aspect_ratio_code = mpeg_guess_mpeg_aspect_code (2, par,
strm.horizontal_size, strm.vertical_size);
+ GST_DEBUG_OBJECT (element, "Guessing aspect ratio code for PAR %d/%d "
+ "MPEG version %d yielded: %d", par.n, par.d, mpeg_version,
+ strm.aspect_ratio_code);
}
/*