Commit graph

937 commits

Author SHA1 Message Date
Wim Taymans
55eb26f1e7 v4l2: More work on bufferpools
Add different transport methods to the bufferpool (MMAP and READ/WRITE)
Do more parsing of the bufferpool config.
Start and stop streaming based on the bufferpool state.
Make separate methods for getting a buffer from the pool and filling it with
data. This allows us to fill buffers from other pools too. Either use copy or
read to fill up the target buffers.
Add property to force a transfer mode in v4l2src.
Increase default number of buffers to 4.
Negotiate bufferpool and its properties in v4l2src.
2011-07-18 18:54:49 +02:00
Wim Taymans
39716c02a7 v4l2: add IO method enum 2011-07-18 10:52:23 +02:00
Wim Taymans
23656bbb72 bufferpool: improve _new function 2011-07-18 10:51:21 +02:00
Wim Taymans
4440801ace v4l2: implement setup_allocation
Implement the setup_allocation vmethod, we'll hopefully do something clever in
there later.
2011-07-15 16:55:50 +02:00
Wim Taymans
3eaecf3aed v4l2: improve bufferpool config setting
Pass the caps and the default video size to the bufferpool config.
Don't activate the bufferpool, this will be done by the object that decides to
use the bufferpool.
Improve debugging and error reporting.
2011-07-15 16:26:06 +01:00
Wim Taymans
37ef3f8997 v4l2: handle dequeueing correcly
First clean up the buffers in the queue, then the remaining ones in the
device.
2011-07-15 13:52:38 +01:00
Wim Taymans
c807bfb693 v4l2: unref copied buffer
After we copy the incomming buffer to one of our bufferpool buffers, unref the
target buffer after rendering so that it is put back in the pool.
2011-07-15 13:29:42 +01:00
Wim Taymans
b1378f159a v4l2: dequeue buffers for the sink
When we have all buffers queued for playback and we need a new empty buffer,
dequeue one and return it.
Set the right size for sink buffers.
Improve counting of queued buffers.
2011-07-15 13:07:11 +01:00
Wim Taymans
4dc85b87d9 v4l2: use the parent queue for the sink
We want to maintain a queue of free buffers for the sink, use the parent methods
to do that.
2011-07-15 12:35:14 +01:00
Wim Taymans
47816e1155 v4l2: fix error messages 2011-07-15 12:00:54 +02:00
Wim Taymans
549a4ddc8f v4l2: add ALLOCATION query to the sink 2011-07-15 11:30:25 +02:00
Wim Taymans
21f532ae10 v4l2: convert to GstBufferPool
Extend from GstBufferPool.
Handle the lifetime of the pool buffers correctly with the start/stop vmethods.
Map acquire and release directly to QBUF and DQBUF. We still expose an explicit
qbuf for the v4l2sink for now.
2011-07-15 11:27:18 +02:00
Wim Taymans
0f16daed15 v4l2: remove experimental markers 2011-07-15 11:18:03 +02:00
Wim Taymans
ef18a3c09b v4l2: merge code 2011-07-14 16:21:36 +02:00
Wim Taymans
33d93069c1 v4l2: Move output details to device object
Move the details of how a buffer is rendered to the device object.
2011-07-14 16:12:15 +02:00
Wim Taymans
7c5f5b1b7f v4l2: move capture code to device object
Move the details of how to capture to the device object. Remove the
v4l2src_calls.[ch] files because they are empty now.
Provide two simple methods to get and return a buffer to the device.
Also do a slow copy when the buffer is not from our pool.
2011-07-13 18:32:00 +02:00
Wim Taymans
ebd03a3fad v4l2: add some more debug 2011-07-13 16:58:08 +02:00
Wim Taymans
d7a27613c1 v4l2: stop streaming in READY and NULL 2011-07-13 16:56:21 +01:00
Wim Taymans
387e76114d v4l2: start streaming for the output as well 2011-07-13 16:40:39 +02:00
Wim Taymans
d9e61954a1 v4l2: Let the device object manage the pool
Rename start and stop methods to open and close because that is what they do.
After setting the format on the device object, setup the bufferpools. Move this
code from the v4l2src_calls.c file, it is shared between source and sink.
Make new device start and stop method that merges various bits of common code
spread over several files.
2011-07-13 16:33:58 +02:00
Wim Taymans
398001f20d v4l2: don't store stride in the videoinfo
We want to keep the default strides in the videoinfo. Keep the stride of the
video frames separate so that we can use both to copy a video frame and do
correct stride conversion.
2011-07-13 13:52:30 +01:00
Wim Taymans
3aed125163 v4l2: Use video frame copy for raw video
Use the video frame copy API for raw video frames so that we copy with the right
strides.
2011-07-13 13:38:15 +02:00
Wim Taymans
e77d183a1e v4l2: add video metadata to raw video buffers 2011-07-13 13:37:58 +02:00
Wim Taymans
be83e4f704 v4l2: small cleanups 2011-07-13 13:15:16 +02:00
Wim Taymans
01def08e7a v4l2: improve caps parsing
Use GstVideoInfo to store the parsed caps.
Remove outsize from the caps parsing code, it's wrong because it does not use
the stride given by the driver.
2011-07-13 13:04:40 +02:00
Wim Taymans
c83730fc11 v4l2: use errno 2011-07-13 11:40:11 +01:00
Wim Taymans
6d97bfc41f v4l2: handle EINVAL without posting a warning
EINVAL means that a call is not supported, we only want to post a WARNING when
something is really wrong.
2011-07-13 11:36:54 +02:00
Wim Taymans
50ce1807f0 v4l2: only set framerate for capture for now 2011-07-13 11:29:26 +02:00
Wim Taymans
9f4cf3be58 v4l2: Move configuration of framerate to _set_format
Move the configuration of the framerate to where we set the other format
parameters.
Remove hack to check if the device is active.
Store streamparm in the device info.
Use some macros to access the current device configuration.
Remove some duplicate fields in src and sink and use the device configuration
instead.
2011-07-13 11:19:28 +02:00
Wim Taymans
100d46b5b9 v4l2: fix return value... 2011-07-12 19:13:45 +02:00
Wim Taymans
e8ae00f5fc v4l2: simplify setting the capture format
Pass the caps to the set_format function and make _set_format parse the caps.
Also keep the parsed values in the v4l2object so that we can refer to them when
we want.
2011-07-12 19:03:32 +01:00
Wim Taymans
b7ad28ba53 v4l2: remove more unused parameters 2011-07-12 18:41:47 +01:00
Wim Taymans
baa03a951b v4l: handle object out of the normal flow 2011-07-12 18:29:35 +01:00
Wim Taymans
0dcf0aebb0 v4l2: Let the bufferpool own the V4l2Object
Keep track of the currently configured format and setting in the
v4l2object.
Pass the v4l2object to the bufferpool constructor so that the bufferpool can
know everything about the currently configured settings. This also allows us
to remove some awkward code.
2011-07-12 18:13:42 +02:00
Wim Taymans
f55656dcfc v4l: remove caps argument, it's not needed
Remove the caps parameter, we don't need it anymore because we don't set
caps on buffers anymore.
2011-07-12 17:06:41 +02:00
Wim Taymans
59b86d2558 v4l: pass the bytesperline around
When setting a format, return the bytesperline to the caller so that it can be
used to allocate buffers.
2011-07-12 16:46:21 +01:00
Wim Taymans
1ef806181c pool: make buffer writable
We need writable buffers when we need to do a slow memcpy.
2011-07-12 16:43:04 +01:00
Wim Taymans
e9d80b9f14 v4l2sink: handle pools
Create a new pool in setcaps and stop/destroy the old one.
Remove buffer_alloc functions.
Check that we have v4l2 metadata in show_frame and fall back to memcpy into a
buffer from our pool if we don't receive one of our own buffers.
2011-07-11 13:51:52 +02:00
Wim Taymans
851f550003 v4l2: various cleanups
Various cleanups, avoids useless casts, move error handling outside of the main
code flow.
Negotiate to a resonable resolution instead of the max resolution.
2011-07-11 12:15:12 +02:00
Wim Taymans
9e276e4f81 ximage: port to 0.11 2011-07-10 14:56:00 +02:00
Wim Taymans
caf1760694 Merge branch 'master' into 0.11 2011-07-10 11:42:37 +02:00
Philip Jägenstedt
fbe726c3da directsoundsink: 16-bit audio is signed, 8-bit is unsigned.
Pretending to handle 8-bit signed causes distorted audio when
actually given such audio, which you will get if passing 8-bit
unsigned through audioconvert ! audioresample, as audioresample
only handles 8-bit signed.  Fixes #605834.

Signed-off-by: David Schleef <ds@schleef.org>
2011-07-09 16:45:51 -07:00
Wim Taymans
3b4afcb8df v4l2: fix gray format, use filter in getcaps 2011-07-08 16:37:11 +02:00
Wim Taymans
7a296af37f v4l2: port and enable v4l2sink 2011-07-08 16:10:47 +02:00
Wim Taymans
b8640c8cd9 v4l2src: port to new video formats 2011-07-08 14:34:40 +02:00
Wim Taymans
e20d6f0bb5 v4l2: port to 0.11 2011-07-08 12:49:12 +02:00
Wim Taymans
cc65bff7c1 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	docs/plugins/inspect/plugin-esdsink.xml
	docs/plugins/inspect/plugin-gconfelements.xml
2011-06-21 18:24:41 +02:00
Tim-Philipp Müller
53ee37b3d2 sunaudio: fix typo in comment 2011-06-18 13:36:06 +01:00
Wim Taymans
0b1bdcf7cb Merge branch 'master' into 0.11
Conflicts:
	sys/ximage/ximageutil.c
2011-06-02 18:51:29 +02:00
Sebastian Dröge
1f707ac3e0 xvimagesink: Fallback to non-XShm mode if allocating the XShm image failed
Fixes bug #630456.
2011-05-26 12:48:36 +02:00
Wim Taymans
d89790d545 Merge branch 'master' into 0.11
Conflicts:
	gst/avi/gstavidemux.c
	gst/rtp/gstrtpac3depay.c
	gst/rtp/gstrtpg726depay.c
	gst/rtp/gstrtpmpvdepay.c
	gst/videofilter/gstgamma.c
2011-05-24 17:34:19 +02:00
Rob Clark
9c9585116c v4l2: add norm property
Based on a patch by Guennadi Liakhovetski.

v2: updates because I forgot to add GstTuner interface to v4l2sink
v3: update to add all possible values to norm enum
2011-05-24 10:47:26 +02:00
Wim Taymans
e15651816e Merge branch 'master' into 0.11 2011-05-17 16:13:59 +02:00
Edward Hervey
1a310d558c v4l2objects: Only allow mpeg-ts on source objects
Ugly fix for #648312
2011-05-17 09:25:23 +02:00
Wim Taymans
7555d0949f Merge branch 'master' into 0.11
Conflicts:
	android/apetag.mk
	android/avi.mk
	android/flv.mk
	android/icydemux.mk
	android/id3demux.mk
	android/qtdemux.mk
	android/rtp.mk
	android/rtpmanager.mk
	android/rtsp.mk
	android/soup.mk
	android/udp.mk
	android/wavenc.mk
	android/wavparse.mk
	configure.ac
2011-04-18 10:23:45 +02:00
Tim-Philipp Müller
86d8c8162e v4l2sink: fix another unused-but-set-variable warning 2011-04-16 18:16:11 +01:00
Robert Swain
e02b7e7fdf v4l2src: Address unused but set variable
The v4l2object formats list was being obtained into a local variable and
then still used from the context. Make use of the local variable.
2011-04-16 13:15:03 +01:00
Robert Swain
75886ba63d oss4: Address unused but set variables
GCC 4.6.x complains about such variable usage. Unused but set variables
were removed except that gst_oss4_mixer_slider_set_mute () now returns
the value from the call to gst_oss4_mixer_set_control_val ().
2011-04-16 13:14:57 +01:00
Sebastian Dröge
0b9cf7e47d v4l2radio: Free videodev string before replacing it 2011-04-14 13:38:30 +02:00
David Schleef
8c07e52236 directsoundsink: Add conditionals on WAVE_FORMAT_DOLBY_AC3_SPDIF 2011-04-13 16:53:30 -07:00
Wim Taymans
c124ba1489 Merge branch 'master' into 0.11
Conflicts:
	gst/rtsp/gstrtspsrc.c
2011-04-05 17:20:08 +02:00
Stefan Kost
270dd376bc docs: fix docuemntation warnings (and reindent) 2011-04-05 12:06:55 +03:00
Wim Taymans
8f22a09dc4 Merge branch 'master' into 0.11-fdo 2011-03-28 20:50:59 +02:00
Alexey Chernov
e7a63c34ac v4l2: new v4l2radio element to control analog radio devices
https://bugzilla.gnome.org/show_bug.cgi?id=640118
2011-03-27 20:29:43 +01:00
Wim Taymans
c63dc97adf meta: update for new API 2011-03-08 17:02:30 +00:00
Wim Taymans
a4fdb8ee44 Merge branch 'master' into 0.11
Conflicts:
	tests/examples/cairo/Makefile.am
2011-03-08 10:14:20 +00:00
David Schleef
910a6f0c96 v4l2: Use #ifdefs for V4L2_PIX_FMT_PJPG
It's only recently added to kernel headers.
2011-03-04 18:38:39 -08:00
Wim Taymans
338c300f5f Merge branch 'master' into 0.11 2011-03-04 16:30:36 +01:00
Tim-Philipp Müller
0cd62a10ad v4l2: remove unnecessary linux/videodev.h include
Causes compilation issues with newer kernel headers where the old
v4l interface has been removed.

https://bugzilla.gnome.org/show_bug.cgi?id=643716
2011-03-03 17:37:19 +00:00
Wim Taymans
de1ca68077 v4l2: register metadata 2011-02-28 11:58:49 +01:00
Wim Taymans
9c08bde90b meta: fix for new API 2011-02-28 11:58:49 +01:00
Wim Taymans
f229f4d192 metadata: use metadata for private buffer data
Use buffer metadata to store element private data.
2011-02-28 11:58:49 +01:00
Wim Taymans
d90a388289 miniobject: port to 0.11
Use buffer private data instead of subclassing.
2011-02-28 11:58:48 +01:00
Wim Taymans
759a3507d7 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2011-02-28 11:58:05 +01:00
Thiago Santos
5dac2e5fde v4l2: Add PJPG mapping
Adds mapping of progressive jpeg format
2011-02-15 16:14:25 -03:00
Mark Nauwelaerts
6b86b56abd v4l2: fix interlaced set_format configuration
Commit 6c8268dbfd broke recording
from interlaced v4l2 source (e.g. typical tv capture card) since
V4L2_FIELD_SEQ_TB (with fields stored separately) does not map
to currently defined interlaced format (fields stored interleaved).

Besides this mismatch, hardware might quite likely not support or
appreciate this field value, since querying supported formats mapped
_INTERLACED field formats to interlaced=true caps (so the latter should
not be mapped to field value that is not known to be supported).
2011-02-04 10:49:06 +01:00
Mark Nauwelaerts
564976b609 directsound: arrange for definition of _swab on Cygwin
gstdirectsoundsink.c: In function 'gst_directsound_sink_write':
gstdirectsoundsink.c:557: error: implicit declaration of function '_swab'
gstdirectsoundsink.c:557: error: nested extern declaration of '_swab'
2011-02-01 20:11:06 +01:00
Tim-Philipp Müller
9acda034f8 v4l2sink: fix accidental breakage of navigation interface support 2011-01-20 00:08:18 +00:00
Tim-Philipp Müller
9dcb60822f v4l2: define V4L2_FIELD_INTERLACED_{TB,BT} if not available in header
Older kernels don't have these, and there's no easy way to check for the
existance of enums that doesn't involve a configure check, so just define
these if the V4L2_CAP_VIDEO_OUTPUT_OVERLAY define is not there, which was
added in the same commit as the TB/BT enum. Fixes compilation on CentOS 5.

https://bugzilla.gnome.org/show_bug.cgi?id=639339
2011-01-12 22:41:17 +00:00
Tim-Philipp Müller
09d19e7dcd v4l2sink: don't put functional code like ioctl calls into g_return_if_fail()
These macros will expand to NOOPs given the right defines. Also,
g_return_if_fail() and friends are meant to be used to catch programming
errors (like invalid input to functions), not runtime error handling.
2011-01-07 01:35:45 +00:00
Tim-Philipp Müller
06b68c81b4 v4l2src: undo presumably accidental enablement of the GstXOverlay interface
Looks like this got enabled by accident when adding it to v4l2sink,
so undo this for now. Not sure it makes much sense in a GStreamer
context with current hardware.
2011-01-03 15:16:48 +00:00
Tim-Philipp Müller
b0eb10cc53 v4l2: mark v4l2sink as experimental and build only if --enable-experimental is passed
It's not really of 'good' quality yet, but there's a lot of
code shared with v4l2src, so not so easy to move it elswhere.

https://bugzilla.gnome.org/show_bug.cgi?id=612244
2011-01-02 11:40:29 +00:00
Tim-Philipp Müller
0be6bd355a Revert "v4l2: add norm property"
This reverts commit 9e1d419d07.

Reverting this since it adds unreviewed and bad API to v4l2src
(property of type enum, with seemingly random and unsorted values).
2011-01-02 11:40:28 +00:00
Rob Clark
6c8268dbfd v4l2: add interlaced support 2010-12-29 11:46:42 -06:00
Rob Clark
538d3a959b v4l2sink: add navigation support 2010-12-29 11:46:42 -06:00
Rob Clark
9e1d419d07 v4l2: add norm property
Based on a patch by Guennadi Liakhovetski.
2010-12-29 11:46:42 -06:00
Rob Clark
bb07a39c67 v4l2: cleanup get/set input/output
output devices should use get/set output, and in either case we should
not print a warning message if the ioctl fails but the device does not
claim to support the tuner interface
2010-12-29 11:46:41 -06:00
Rob Clark
bf88547489 v4l2xoverlay: add support to create window
If xoverlay is available, v4l2sink should create a window for the overlay to
display in.

The window automatically tries to make itself as large as possible.
This works well on a small screen, but perhaps should first attempt to use
the size of the video that is played (no scaling).
2010-12-29 11:46:41 -06:00
Rob Clark
ff5494046a v4l2sink: special handling for cases gst_buffer_make_metadata_writable()
Special case check for sub-buffers:  In certain cases, places like
GstBaseTransform, which might check that the buffer is writable before copying
metadata, timestamp, and such, will find that the buffer has more than one
reference to it.  In these cases, they will create a sub-buffer with an offset=0
and length equal to the original buffer size.

This could happen in two scenarios: (1) a tee in the pipeline, and (2) because
the refcnt is incremented in gst_mini_object_free() before the finalize function
is called, and decremented after it returns..  but returning this buffer to the
buffer pool in the finalize function, could wake up a thread blocked in
_buffer_alloc() which could run and get a buffer w/ refcnt==2 before the thread
originally unref'ing the buffer returns from finalize function and decrements
the refcnt back to 1!

This is related to issue #545501
2010-12-29 11:46:41 -06:00
Rob Clark
c3721534c9 v4l2: fix race condition
The size of the buffer would be zero'd out in gst_v4l2_buffer_finalize()
after the buffer is qbuf'd or pushed onto the queue of available buffers..
leaving a race condition where the thread waiting for the buffer could awake
and set back a valid size before the finalizing thread zeros out the length.
This would result that the newly allocated buffer has length of zero.
2010-12-29 11:46:41 -06:00
Rob Clark
34e448980b v4l2sink: add properties to control crop 2010-12-29 11:46:41 -06:00
Rob Clark
67cd90408f v4l2: re-enable x-overlay support 2010-12-29 11:46:41 -06:00
Rob Clark
417b899c44 v4l2sink: fix for PAUSED->READY->PAUSED state transitions
When v4l2sink goes to PAUSED->READY it only stops streaming, so the state
should be set to STATE_PENDING_STREAMON in case the element transitions
back to PLAYING.
2010-12-29 11:46:41 -06:00
Rob Clark
61db502a12 v4l2sink: add "min-queued-bufs" property 2010-12-29 11:46:41 -06:00
Rob Clark
0cec72b97e v4l2sink: Add support for blocking dequeue.
We'd prefer to throttle the decoder if we run out of buffers, to keep a bound
on memory usage.  Also, for OMAP4 it is a requirement of the decoder to not
alternate between memory alloced by the display driver and malloc'd userspace
memory.
2010-12-29 11:46:40 -06:00
Rob Clark
ecfbaf58a5 v4l2: clear flags before reusing buffer from buffer pool
note: this really only affects v4l2sink since gst_v4l2_buffer_pool_get() is
only called once per buffer in the v4l2src case (in
gst_v4l2src_buffer_pool_activate())
2010-12-29 11:46:40 -06:00
Rob Clark
e24cfa7250 v4l2sink: don't render preroll buffers
Most v4l2 drivers will get upset when you queue the same buffer twice in a
row without first dequeueing it.

Rendering of pre-roll buffers can be re-introduced later, but will require
tracking the state of the buffer, and avoiding to re-QBUF if the buffer has
already been passed to the driver.
2010-12-29 11:46:40 -06:00
Rob Clark
48a8b53bdd v4l2sink: Improve behavior for shared buffers.
When the decoder is using pad_alloc(), v4l2sink would behave badly if
the number of buffers ('queue-size' property) was not high enough to
account for all the buffers needed by the decoder, and other elements
(such as queues) between the decoder and v4l2sink.  This patch
slightly increases the default number of buffers, and changes v4l2sink
to drop frames rather than return an error in case the number of
buffers is not high enough.
2010-12-29 11:46:40 -06:00
Rob Clark
60c1a44917 v4l2: fix typo 2010-12-23 16:44:06 -06:00
Edward Hervey
d2a43eb8ff ximagesrc: remote is a boolean (and not uint) property 2010-12-22 21:27:11 +01:00
Vincent Penquerc'h
7ac31b3d22 ximagesrc: change from XGetImage to XGetSubImage dependant on a property
ximagesrc: change from XGetImage to XGetSubImage dependant on a property
 to avoid unnecessary performance hits by default.
2010-12-18 15:35:19 +01:00
Vincent Penquerc'h
ac872f61cf ximagesrc: use XGetSubImage instead of XGetImage, works with remote X
ximagesrc: use XGetSubImage instead of XGetImage, works with remote X
 (on my setup anyway...)
2010-12-18 15:35:09 +01:00
Vincent Penquerc'h
fbd9581f87 ximagesrc: fix various width/height calculations being off by one,
ximagesrc: fix various width/height calculations being off by one,
 and make it so a single pixel width/height can be captured (except
 the top left one, as 0,0,0,0 is reserved for full screen as per
 the property comments).
2010-12-18 15:34:59 +01:00
Rob Clark
66387181ac fix compile errors on macosx
with i686-apple-darwin10-gcc-4.2.1:

gstv4l2object.c: In function 'gst_v4l2_object_get_nearest_size':
gstv4l2object.c:1988: warning: format '%u' expects type 'unsigned int', but argument 12 has type 'gint *'
gstv4l2object.c:1988: warning: format '%u' expects type 'unsigned int', but argument 13 has type 'gint *'
2010-12-17 19:19:35 -06:00
Wim Taymans
22443cfb13 v4l2: don't abuse the class lock
Use a new static lock to protect the probed device list instead of the object
class lock.
2010-12-07 11:40:58 +01:00
Janne Grunau
ab69275f4d v4l2src: set top field first for interlaced buffers if v4l2 exports it
https://bugzilla.gnome.org/show_bug.cgi?id=634393
2010-12-04 16:42:21 +00:00
Janne Grunau
351ac54822 v4l2src: check field information and set interlaced caps accordingly
Reject the format if the field type is not supported.

https://bugzilla.gnome.org/show_bug.cgi?id=634391
2010-12-04 16:39:35 +00:00
Stefan Kost
d8167e3071 various (gst): add a missing G_PARAM_STATIC_STRINGS flags 2010-10-13 18:00:28 +03:00
Stefan Kost
77b656eec1 various (sys): add a missing G_PARAM_STATIC_STRINGS flags 2010-10-13 17:39:36 +03:00
IOhannes m zmölnig
b37845dac0 v4l2sink: Only get/set overlay params if needed
it's perfectly ok for a video output device to not have overlay capabilities.
this patch removes the need to get/set the overlay parameters if the user
does not explicitely request one of the overlay properties
2010-10-10 11:23:39 +02:00
IOhannes m zmölnig
4ba93e9f1a v4l2sink: Protect against NULL-pointer access
gst_v4l2sink_change_state() would free the pool without checking whether there
was a valid pool...
2010-10-10 11:23:39 +02:00
Philippe Normand
672bfc3369 v4l2: use the xoverlay APIs 2010-09-21 13:40:33 +02:00
Philippe Normand
720369c06e osxvideosink: use the new xoverlay APIs
Also bumped -base requirements.
2010-09-21 13:40:33 +02:00
Tim-Philipp Müller
601b993f95 docs: add gtk-doc chunks with Since: markers for new v4l2src properties 2010-09-15 17:05:30 +01:00
Stefan Kost
1f4f4581d8 v4l2src: don't skip calculating the duration 2010-09-10 17:00:58 +03:00
Stefan Kost
a08d4a5447 v4l2src: add controlable colorbalance parameters
Expose colorbalance controls as object properties (like we do on xvimagesink).
Make them controlable.
2010-09-10 17:00:58 +03:00
David Schleef
178c57be4f v4l2src: add decimate property 2010-09-04 12:39:26 -07:00
Sjoerd Simons
e9a30e454a v4l2src: Use GstBaseSrc::block-size as fallback size 2010-09-04 14:52:11 +02:00
Sjoerd Simons
74d7521a7c v4l2src: Fix using mpegts via the mmap interface
MPEG doesn't have a static size per frame, so don't pretend it has one
and fail when capturing because it doesn't match. Instead mark the size
as unknown and let the read frame grabbing method use a reasonable fallback
value (assuming that's only for actual streaming formats)

Fixes bug #628349.
2010-09-04 14:52:11 +02:00
Tim-Philipp Müller
6321d9910d v4l2src: also log pixel formats in sorted order 2010-08-06 20:07:26 +01:00
Sjoerd Simons
dcea1b2dfc v4l2: sort formats in the right order so that non-emulated formats are prefered
The format list should be sorted from high ranks to low ranks. In the GSList
sorting function this means the compare needs to return a positive value if
format a has a lower rank than format b.

Among other things this fixes v4l2src to prefer non-emulated formats
to emulated formats when built against libv4l.
2010-08-06 20:07:21 +01:00
Michael Grzeschik
34c7cabe2c v4l2sink: destroy buffer pool when changing state to NULL
In the case we change the State from READY_TO_NULL the buffers in the pool
still hold an open dup file descriptor to the device, therefore the device
release function will not be called and the device will probably answer with
-EBUSY when we reopen it in the next NULL_TO_READY transition.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>

See bug #622500 and #612244.
2010-07-06 11:03:39 +01:00
Stefan Kost
23106e243b v4l2: precalculate duration
Have frame duration in the instance struct and calculate it after changing the caps.
2010-06-22 15:46:51 +03:00
Stefan Kost
ac8e87bb2c v4l2sink: use glib defines in property declarations for readability 2010-06-21 12:19:59 +03:00
Stefan Kost
f9fe85dbb2 v4l2: use G_PARAM_STATIC_STRINGS to save a few bytes and strdups 2010-06-21 12:19:59 +03:00
Sebastian Dröge
34d42e4ea3 ximagesrc: Fix NULL pointer dereference when allocation of the ximage fails 2010-06-16 19:30:25 +02:00
Havoc Pennington
f06b105058 v4l2src: do not try to change device format if it's already correct
This allows set_caps to succeed if caps change in a way that
would not modify the format we're getting from the hardware.
Otherwise if not in NULL state, setting caps would fail
with EBUSY.

With this change, in some cases it's OK to go PLAYING->READY->PLAYING
rather than PLAYING->NULL->PLAYING to avoid a time-consuming close
and reopen of the device.

Fixes #621723
2010-06-16 17:48:47 +02:00
Havoc Pennington
9b9f9d0a2a v4l2src: in negotiate, check for error return from set_caps
Fixes #621723  (partially)

set_caps can fail if the video device is running, in that case
setting its format leads to EBUSY.

If set_caps fails then we will not have set up the buffer pool
(it will be NULL) which leads to a crash when we try to pull
buffers. If we fail the negotiate on set_caps failure, then we
won't go to playing state and won't crash.

This is a small improvement. Of course, a nicer fix would
be to make set_caps work in the case where the format is
unchanged. If the format has changed, failing is
probably correct because we need to close the device
(go to NULL state) in order to set caps.
2010-06-16 17:48:47 +02:00
Sebastian Dröge
acd0c1ff90 v4l2: Initialize variable 2010-06-15 19:47:16 +02:00
Sebastian Dröge
a88acc848e oss4: Use g_ascii_strcasecmp() instead of the deprecated g_strcasecmp() 2010-06-14 13:48:28 +02:00
David Schleef
3478f31664 v4l2src: Fix element description 2010-06-11 16:24:15 -07:00
Julien Moutte
055586f2d9 directsoundsink: Plug some memleak and support 22050Hz mono sound.
Segment size needs to be a multiple of the sample size in bytes.
2010-06-09 20:07:09 +02:00
Sebastian Dröge
2ffcb159d7 sys: Don't use GST_DEBUG_FUNCPTR for GObject vfuncs 2010-06-06 17:57:03 +02:00
Tim-Philipp Müller
972631ae6d oss4: add some comments for translators to clarify meaning of "Low"
"Low" etc. are quality settings here (e.g. for the internal resampler).
Some day when we use GLib's i18n functions we might want to use
NC_() and g_dpgettext2() here instead of the comments.

Fixes #555967.
2010-06-03 20:23:48 +01:00
Alessandro Decina
3fdd51952b osxvideosink: allow switching views at runtime. 2010-05-11 22:30:03 +02:00
Tim-Philipp Müller
d56126931f oss4: minor cleanup
Remove fixed FIXME, change finalise to finalize for consistency.
2010-05-11 19:05:08 +01:00
Tim-Philipp Müller
1732ce033a Move oss4 plugin from -bad to -good
Hook up build infrastructure, docs and tests.

Fixes #614305.
2010-05-11 19:02:55 +01:00
Brian Cameron
02a226f746 oss4sink: implement GstStreamVolume interface and add mute and volume properties
OSS4 supports per-stream volume control, so expose this using the right
API, so that playbin2 and applications like totem can make use of it
(instead of using a volume element for volume control).

Fixes #614305.
2010-05-11 19:02:55 +01:00
Tim-Philipp Müller
719515126c oss4: 8-bit PCM audio caps don't need an endianness field 2010-05-11 19:02:55 +01:00
Tim-Philipp Müller
4d658c188c oss4: don't iterate the formats table twice for each entry
When iterating the formats table, we can just pass the whole
entry to our helper function, which avoids iterating the table
again to find the entry structure from the passed format id.
2010-05-11 19:02:55 +01:00
Tim-Philipp Müller
59120a0222 oss4: also accept formats not natively supported
Also accept formats that are not natively supported by the
hardware, OSS4 can convert them internally. List the native
formats first in the caps though, to express our preference
for the native formats. We need this in order to support the
case properly where the audio hardware supports only e.g.
little endian PCM, but the host is big endian, since many
audio elements only support native endianness and make the
reasonable assumption that any audiosink will be able to
handle audio in native endianness.

Based on patch by Jerry Tan <jerry.tan@sun.com>

Fixes #614317.
2010-05-11 19:02:55 +01:00
Tim-Philipp Müller
3b1347260f oss4: add comment for translators
Not that that will make these strings much better. Also remove i18n
marker where it doesn't make sense.
2010-05-11 19:02:54 +01:00
Benjamin Otte
ab5f546143 oss4: Refactor code to make it look more modern
A side effect is that it passes -Wformat-nonliteral and doesn't read
invalid memory in some cases, like when the mixer track contains
a % sign or there is a number but not a known mixer name.
2010-05-11 19:02:54 +01:00
Benjamin Otte
85124337dc oss4: Avoid g_quark_to_string (g_quark_from_string ()) madness
We to the strdup inside gst_oss4_mixer_control_get_translated_name()
instead of in the only caller.
2010-05-11 19:02:54 +01:00
Benjamin Otte
6c916a144d Add -Wmissing-declarations -Wmissing-prototypes to configure flags
And fix all warnings
2010-05-11 19:02:54 +01:00
Benjamin Otte
117485973a Fix compiler warning about unused return value 2010-05-11 19:02:54 +01:00
Jan Schmidt
039604b11f oss4: Attempt to fix a compiler warning
Don't store a const gchar * in a non-const gchar * local var.

Also, make the translation string function static since it's only
used in the one file.
2010-05-11 19:02:54 +01:00
Garrett D'Amore
2a402de32d oss4: Enhancements to the mixer and audio output
Code cleanups, general improvements, support for the
new mixer flags in latest gst-plugins-base.

Fixes: #584252
Patch By: Brian Cameron <brian.cameron@sun.com>
Patch By: Garrett D'Amore <garrett.damore@sun.com>
2010-05-11 19:02:54 +01:00
Tim-Philipp Müller
0453094fbb Make build without warnings with debugging disabled 2010-05-11 19:02:54 +01:00
Stefan Kost
5ac46548ca Don't install static libs for plugins. Fixes #550851 for -bad.
Original commit message from CVS:
* ext/alsaspdif/Makefile.am:
* ext/amrwb/Makefile.am:
* ext/apexsink/Makefile.am:
* ext/arts/Makefile.am:
* ext/artsd/Makefile.am:
* ext/audiofile/Makefile.am:
* ext/audioresample/Makefile.am:
* ext/bz2/Makefile.am:
* ext/cdaudio/Makefile.am:
* ext/celt/Makefile.am:
* ext/dc1394/Makefile.am:
* ext/dirac/Makefile.am:
* ext/directfb/Makefile.am:
* ext/divx/Makefile.am:
* ext/dts/Makefile.am:
* ext/faac/Makefile.am:
* ext/faad/Makefile.am:
* ext/gsm/Makefile.am:
* ext/hermes/Makefile.am:
* ext/ivorbis/Makefile.am:
* ext/jack/Makefile.am:
* ext/jp2k/Makefile.am:
* ext/ladspa/Makefile.am:
* ext/lcs/Makefile.am:
* ext/libfame/Makefile.am:
* ext/libmms/Makefile.am:
* ext/metadata/Makefile.am:
* ext/mpeg2enc/Makefile.am:
* ext/mplex/Makefile.am:
* ext/musepack/Makefile.am:
* ext/musicbrainz/Makefile.am:
* ext/mythtv/Makefile.am:
* ext/nas/Makefile.am:
* ext/neon/Makefile.am:
* ext/ofa/Makefile.am:
* ext/polyp/Makefile.am:
* ext/resindvd/Makefile.am:
* ext/sdl/Makefile.am:
* ext/shout/Makefile.am:
* ext/snapshot/Makefile.am:
* ext/sndfile/Makefile.am:
* ext/soundtouch/Makefile.am:
* ext/spc/Makefile.am:
* ext/swfdec/Makefile.am:
* ext/tarkin/Makefile.am:
* ext/theora/Makefile.am:
* ext/timidity/Makefile.am:
* ext/twolame/Makefile.am:
* ext/x264/Makefile.am:
* ext/xine/Makefile.am:
* ext/xvid/Makefile.am:
* gst-libs/gst/app/Makefile.am:
* gst-libs/gst/dshow/Makefile.am:
* gst/aiffparse/Makefile.am:
* gst/app/Makefile.am:
* gst/audiobuffer/Makefile.am:
* gst/bayer/Makefile.am:
* gst/cdxaparse/Makefile.am:
* gst/chart/Makefile.am:
* gst/colorspace/Makefile.am:
* gst/dccp/Makefile.am:
* gst/deinterlace/Makefile.am:
* gst/deinterlace2/Makefile.am:
* gst/dvdspu/Makefile.am:
* gst/festival/Makefile.am:
* gst/filter/Makefile.am:
* gst/flacparse/Makefile.am:
* gst/flv/Makefile.am:
* gst/games/Makefile.am:
* gst/h264parse/Makefile.am:
* gst/librfb/Makefile.am:
* gst/mixmatrix/Makefile.am:
* gst/modplug/Makefile.am:
* gst/mpeg1sys/Makefile.am:
* gst/mpeg4videoparse/Makefile.am:
* gst/mpegdemux/Makefile.am:
* gst/mpegtsmux/Makefile.am:
* gst/mpegvideoparse/Makefile.am:
* gst/mve/Makefile.am:
* gst/nsf/Makefile.am:
* gst/nuvdemux/Makefile.am:
* gst/overlay/Makefile.am:
* gst/passthrough/Makefile.am:
* gst/pcapparse/Makefile.am:
* gst/playondemand/Makefile.am:
* gst/rawparse/Makefile.am:
* gst/real/Makefile.am:
* gst/rtjpeg/Makefile.am:
* gst/rtpmanager/Makefile.am:
* gst/scaletempo/Makefile.am:
* gst/sdp/Makefile.am:
* gst/selector/Makefile.am:
* gst/smooth/Makefile.am:
* gst/smoothwave/Makefile.am:
* gst/speed/Makefile.am:
* gst/speexresample/Makefile.am:
* gst/stereo/Makefile.am:
* gst/subenc/Makefile.am:
* gst/tta/Makefile.am:
* gst/vbidec/Makefile.am:
* gst/videodrop/Makefile.am:
* gst/videosignal/Makefile.am:
* gst/virtualdub/Makefile.am:
* gst/vmnc/Makefile.am:
* gst/y4m/Makefile.am:
* sys/acmenc/Makefile.am:
* sys/cdrom/Makefile.am:
* sys/dshowdecwrapper/Makefile.am:
* sys/dshowsrcwrapper/Makefile.am:
* sys/dvb/Makefile.am:
* sys/dxr3/Makefile.am:
* sys/fbdev/Makefile.am:
* sys/oss4/Makefile.am:
* sys/qcam/Makefile.am:
* sys/qtwrapper/Makefile.am:
* sys/vcd/Makefile.am:
* sys/wininet/Makefile.am:
* win32/common/config.h:
Don't install static libs for plugins. Fixes #550851 for -bad.
2010-05-11 19:02:54 +01:00