diff options
author | Jan Schmidt <thaytan@mad.scientist.com> | 2008-02-03 18:22:18 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@mad.scientist.com> | 2008-02-03 18:22:18 +0000 |
commit | c6507559fbebf31bd24a063eb8312be59a545e14 (patch) | |
tree | 8461060bb59e24859000aa8188560aa7bd9dbaba /ext/mpeg2enc | |
parent | b451b72f2d1190a6838f2750c3f42bd808d7982e (diff) | |
download | gst-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.cc | 38 |
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); } /* |