diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-10-25 08:40:07 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-10-25 08:40:07 +0000 |
commit | b41cdefc0551d263c84abb2186ee34ca4d4a9ef6 (patch) | |
tree | 94f5e1e47991622089af4d91b8e513c3b87e143b /sys | |
parent | 7d1805fda41615e2f4ae15cfdaf9d957ea73991b (diff) |
sys/oss/gstosssrc.*: OK, so people want offset in DEFAULT. This time, actually fix all cases.
Original commit message from CVS:
* sys/oss/gstosssrc.c: (gst_osssrc_get_time), (gst_osssrc_get),
(gst_osssrc_src_query):
* sys/oss/gstosssrc.h:
OK, so people want offset in DEFAULT. This time, actually fix all
cases.
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_getcaps):
Add FPS properly.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/oss/gstosssrc.c | 10 | ||||
-rw-r--r-- | sys/oss/gstosssrc.h | 3 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2src.c | 4 |
3 files changed, 10 insertions, 7 deletions
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index da7e61d7..ffc750d7 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -305,7 +305,7 @@ gst_osssrc_get_time (GstClock * clock, gpointer data) if (ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_GETISPACE, &info) < 0) return 0; - return (osssrc->curoffset + + return (osssrc->curoffset * GST_OSSELEMENT (osssrc)->sample_width + info.bytes) * GST_SECOND / GST_OSSELEMENT (osssrc)->bps; } @@ -382,7 +382,7 @@ gst_osssrc_get (GstPad * pad) GST_BUFFER_SIZE (buf) = readbytes; GST_BUFFER_OFFSET (buf) = src->curoffset; - GST_BUFFER_OFFSET_END (buf) = src->curoffset + readbytes; + GST_BUFFER_OFFSET_END (buf) = src->curoffset + readsamples; GST_BUFFER_DURATION (buf) = readsamples * GST_SECOND / GST_OSSELEMENT (src)->rate; @@ -391,7 +391,7 @@ gst_osssrc_get (GstPad * pad) if (src->clock == src->provided_clock) { /* if it's our own clock, we can be very accurate */ GST_BUFFER_TIMESTAMP (buf) = - src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->bps; + src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->rate; } else { /* somebody elses clock, timestamp with that clock, no discontinuity in * the stream since the OFFSET is updated correctly. Elements can stretch @@ -404,7 +404,7 @@ gst_osssrc_get (GstPad * pad) GST_BUFFER_TIMESTAMP (buf) = GST_CLOCK_TIME_NONE; } - src->curoffset += readbytes; + src->curoffset += readsamples; GST_DEBUG ("pushed buffer from soundcard of %ld bytes, timestamp %" G_GINT64_FORMAT, readbytes, GST_BUFFER_TIMESTAMP (buf)); @@ -591,7 +591,7 @@ gst_osssrc_src_query (GstPad * pad, GstQueryType type, GstFormat * format, switch (type) { case GST_QUERY_POSITION: res = gst_osselement_convert (GST_OSSELEMENT (osssrc), - GST_FORMAT_BYTES, osssrc->curoffset, format, value); + GST_FORMAT_DEFAULT, osssrc->curoffset, format, value); break; default: break; diff --git a/sys/oss/gstosssrc.h b/sys/oss/gstosssrc.h index 2bc6204f..dac32897 100644 --- a/sys/oss/gstosssrc.h +++ b/sys/oss/gstosssrc.h @@ -58,7 +58,8 @@ struct _GstOssSrc { gboolean need_eos; /* Do we need to emit an EOS? */ - /* blocking */ + /* blocking. + * curoffset is in *samples*. */ gulong curoffset; gulong buffersize; diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index 40bc0dae..af20eebb 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -768,6 +768,7 @@ gst_v4l2src_getcaps (GstPad * pad) int min_w, max_w, min_h, max_h; GSList *walk; GstStructure *structure; + gdouble fps; if (!GST_V4L2_IS_OPEN (GST_V4L2ELEMENT (v4l2src))) { return gst_caps_copy (gst_pad_get_pad_template_caps (pad)); @@ -776,6 +777,7 @@ gst_v4l2src_getcaps (GstPad * pad) /* build our own capslist */ caps = gst_caps_new_empty (); walk = v4l2src->formats; + fps = gst_v4l2src_get_fps (v4l2src); while (walk) { format = (struct v4l2_fmtdesc *) walk->data; walk = g_slist_next (walk); @@ -793,7 +795,7 @@ gst_v4l2src_getcaps (GstPad * pad) gst_structure_set (structure, "width", GST_TYPE_INT_RANGE, min_w, max_w, "height", GST_TYPE_INT_RANGE, min_h, max_h, - "framerate", GST_TYPE_DOUBLE_RANGE, (double) 0, G_MAXDOUBLE, NULL); + "framerate", G_TYPE_DOUBLE, fps, NULL); gst_caps_append_structure (caps, structure); } |