summaryrefslogtreecommitdiff
path: root/gst-libs/gst/codecs/gstmpeg2decoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/codecs/gstmpeg2decoder.c')
-rw-r--r--gst-libs/gst/codecs/gstmpeg2decoder.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/gst-libs/gst/codecs/gstmpeg2decoder.c b/gst-libs/gst/codecs/gstmpeg2decoder.c
index d9c275349..ae0e331e6 100644
--- a/gst-libs/gst/codecs/gstmpeg2decoder.c
+++ b/gst-libs/gst/codecs/gstmpeg2decoder.c
@@ -404,21 +404,27 @@ gst_mpeg2_decoder_set_latency (GstMpeg2Decoder * decoder)
{
GstCaps *caps;
GstClockTime min, max;
+ GstMpeg2DecoderPrivate *priv = decoder->priv;
GstStructure *structure;
gint fps_d = 1, fps_n = 0;
- caps = gst_pad_get_current_caps (GST_VIDEO_DECODER_SRC_PAD (decoder));
- if (!caps)
- return;
-
- structure = gst_caps_get_structure (caps, 0);
- if (gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d)) {
- if (fps_n == 0) {
- /* variable framerate: see if we have a max-framerate */
- gst_structure_get_fraction (structure, "max-framerate", &fps_n, &fps_d);
+ if (priv->tsg.fps_d > 0 && priv->tsg.fps_n > 0) {
+ fps_n = priv->tsg.fps_n;
+ fps_d = priv->tsg.fps_d;
+ } else {
+ caps = gst_pad_get_current_caps (GST_VIDEO_DECODER_SINK_PAD (decoder));
+ if (caps) {
+ structure = gst_caps_get_structure (caps, 0);
+ if (gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d)) {
+ if (fps_n == 0) {
+ /* variable framerate: see if we have a max-framerate */
+ gst_structure_get_fraction (structure, "max-framerate", &fps_n,
+ &fps_d);
+ }
+ }
+ gst_caps_unref (caps);
}
}
- gst_caps_unref (caps);
/* if no fps or variable, then 25/1 */
if (fps_n == 0) {