diff options
author | Jan Schmidt <thaytan@mad.scientist.com> | 2005-11-22 22:21:37 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@mad.scientist.com> | 2005-11-22 22:21:37 +0000 |
commit | 11c39abc9a99d5fcb0070988ffe0d773d9780875 (patch) | |
tree | c92b2175e0a98b9de7e969cb851c9dc8f0db59fb /gst/avi/gstavimux.c | |
parent | dad9986cb4646c0090a9c8408c1a1d9e00869ae2 (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.c | 33 |
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; |