summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavimux.c
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2005-11-22 22:21:37 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2005-11-22 22:21:37 +0000
commit11c39abc9a99d5fcb0070988ffe0d773d9780875 (patch)
treec92b2175e0a98b9de7e969cb851c9dc8f0db59fb /gst/avi/gstavimux.c
parentdad9986cb4646c0090a9c8408c1a1d9e00869ae2 (diff)
More fractional framerate conversions
Original commit message from CVS: * ext/cairo/gsttextoverlay.c: (gst_text_overlay_init), (gst_text_overlay_setcaps), (gst_text_overlay_collected): * ext/cairo/gsttextoverlay.h: * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_sink_link): * ext/gdk_pixbuf/gstgdkpixbuf.h: * ext/libpng/gstpngdec.c: (gst_pngdec_init), (gst_pngdec_caps_create_and_set): * ext/libpng/gstpngdec.h: * ext/libpng/gstpngenc.c: (gst_pngenc_setcaps): * gst/alpha/gstalphacolor.c: (gst_alpha_color_set_caps): * gst/avi/gstavimux.c: (gst_avimux_init), (gst_avimux_vidsinkconnect): * gst/flx/gstflxdec.c: (gst_flxdec_chain): * gst/goom/gstgoom.c: (gst_goom_init), (gst_goom_src_setcaps), (gst_goom_src_negotiate), (gst_goom_chain): * gst/goom/gstgoom.h: * gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps): * gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps): * sys/osxvideo/osxvideosink.h: * sys/osxvideo/osxvideosink.m: More fractional framerate conversions
Diffstat (limited to 'gst/avi/gstavimux.c')
-rw-r--r--gst/avi/gstavimux.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index 084d0e28..a17f1066 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -71,51 +71,51 @@ static GstStaticPadTemplate video_sink_factory =
"format = (fourcc) { YUY2, I420 }, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"image/jpeg, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"video/x-divx, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ], "
+ "framerate = (fraction) [ 0, MAX ], "
"divxversion = (int) [ 3, 5 ]; "
"video/x-xvid, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"video/x-3ivx, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"video/x-msmpeg, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ], "
+ "framerate = (fraction) [ 0, MAX ], "
"msmpegversion = (int) [ 41, 43 ]; "
"video/mpeg, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ], "
+ "framerate = (fraction) [ 0, MAX ], "
"mpegversion = (int) 1, "
"systemstream = (boolean) FALSE; "
"video/x-h263, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"video/x-h264, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
- "framerate = (double) [ 0, MAX ]; "
+ "framerate = (fraction) [ 0, MAX ]; "
"video/x-dv, "
"width = (int) 720, "
"height = (int) { 576, 480 }, "
- "framerate = (double) [ 0, MAX ], "
+ "framerate = (fraction) [ 0, MAX ], "
"systemstream = (boolean) FALSE; "
"video/x-huffyuv, "
"width = (int) [ 16, 4096 ], "
- "height = (int) [ 16, 4096 ], " "framerate = (double) [ 0, MAX ]")
+ "height = (int) [ 16, 4096 ], " "framerate = (fraction) [ 0, MAX ]")
);
static GstStaticPadTemplate audio_sink_factory =
@@ -277,7 +277,7 @@ gst_avimux_init (GstAviMux * avimux)
memset (&(avimux->auds_hdr), 0, sizeof (gst_riff_strh));
memset (&(avimux->auds), 0, sizeof (gst_riff_strf_auds));
avimux->vids_hdr.type = GST_MAKE_FOURCC ('v', 'i', 'd', 's');
- avimux->vids_hdr.rate = 1000000;
+ avimux->vids_hdr.rate = 1;
avimux->avi_hdr.max_bps = 10000000;
avimux->auds_hdr.type = GST_MAKE_FOURCC ('a', 'u', 'd', 's');
avimux->vids_hdr.quality = 0xFFFFFFFF;
@@ -299,7 +299,7 @@ gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
GstAviMux *avimux;
GstStructure *structure;
const gchar *mimetype;
- gdouble fps = 0.;
+ const GValue *fps;
gboolean ret;
avimux = GST_AVIMUX (gst_pad_get_parent (pad));
@@ -315,12 +315,13 @@ gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
avimux->vids.planes = 1;
ret = gst_structure_get_int (structure, "width", &avimux->vids.width);
ret &= gst_structure_get_int (structure, "height", &avimux->vids.height);
- ret &= gst_structure_get_double (structure, "framerate", &fps);
+ fps = gst_structure_get_value (structure, "framerate");
+ ret &= (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps));
if (!ret)
return GST_PAD_LINK_REFUSED;
- if (fps != 0.)
- avimux->vids_hdr.scale = avimux->vids_hdr.rate / fps;
+ avimux->vids_hdr.rate = gst_value_get_fraction_numerator (fps);
+ avimux->vids_hdr.scale = gst_value_get_fraction_denominator (fps);
if (!strcmp (mimetype, "video/x-raw-yuv")) {
guint32 format;