Don't leak a string everytime get_uri() is called and a device
has been set. There's a limited number of devices, so just
intern the string instead of doing more elaborate housekeeping
and storing it in the instance struct or so.
Old videodevice2.h kernel headers used ioctl stuff without
including ioctl.h, making compilation fail on older systems.
Note: Including ioctl.h here is only a workaround for old kernel
headers, should be removed once everybody has new enough headers.
Fixes bug #597867.
For cameras/drivers that don't support e.g. VIDIOC_G_PARM we'd end up without
a framerate and would try to divide by 0, causing run-time warnings and all
frames to be timestamped with 0, which makes sinks that sync against the clock
drop them, causing 'hangs' (observed with the pwc driver and a Logitech QuickCam
Pro 4000). So if we do not know the framerate, simply don't adjust the
timestamps. Fixes#591451.
Clear format list and probed caps when going to NULL so if a new device
is set we'll probe the formats again instead of using previously
detected ones. Fixes bug #591747.
It seems to cause strange occasional high latencies (almost 200ms) when dequeuing buffers from _buffer_alloc(). It is simpler and seems to work much better to dqbuf from the same thread that is queuing the next buffer.
This also does the following changes:
(1) pull the bufferpool code out into gstv4l2bufferpool.c, and make a
bit more generic so it can be used both for v4l2src and v4l2sink
(2) move some of the device probing/configuration/caps stuff into
gstv4l2object.c so it does not have to be duplicated between
v4l2src and v4l2sink
Fixes bug #590280.
The v4l2 driver for USB webcams on OpenSolaris does not support select()
calls. Detect when select() fails, and skip polling the device afterward,
which restores the pre 0.10.14 behaviour on OpenSolaris.
Signed-off-by: Jan Schmidt <thaytan@noraisin.net>
We need a cast here for pointer arithmetic to work correctly, but some
MSVC versions don't seem to like 'byte', so use guint8 here. Hopefully
fixes#585361.
Fix the setting of toggle switches on some broken audio drivers which
report that no audio ports are settable by ignoring the mod_port field
there.
Add some debug statements.
Fix a FIXME now that Good relies on a new enough gst-plugins-base.
Use new audio mixer flags added in Base 0.10.23 to expose flags and options
on the SunAudio devices.
Fixes: #583593
Patch By: Brian Cameron <brian.cameron@sun.com>
Patch By: Garrett D'Amore <garrett.damore@sun.com>
Use GstPoll to wait for the fd of the video device to become readable before
trying to capture a frame. This speeds up stopping v4l2src a lot as it no
longer has to wait for the next frame, especially when capturing with low
framerates or when the video device just never generates a frame (which seems a
common issue for uvcvideo devices)
Fixes bug #563574.
sort_by_frame_size is declared static and only used inside
an ifdef, so use the same ifdef to define the function. Fixes#572185
Signed-off-by: David Schleef <ds@schleef.org>
Remove non-embedded mode. Embed mode becomes default and only mode.
embed property is retained for binary compatibility.
Added autorelease pools around all objc functions that might be called
from a non-main thread.
Ensure we create the ringbuffer segment size as a multiple of the
bytes per sample (fixes 6-channel output).
Reset the segoffset when acquiring the ringbuffer, so we don't retain
a bogus offset when caps change.
Original commit message from CVS:
* sys/osxaudio/Makefile.am:
Link against CoreServices (needed for osx 10.4) and fix up the linker
flags. Fixes#567853.
Original commit message from CVS:
* sys/osxaudio/Makefile.am:
osxaudio plugin now requires AudioUnit framework, so link against that.
Clean up tabs v spaces while I'm there.
Original commit message from CVS:
Patch by: Sascha Hauer <s dot hauer at pengutronix dot de>
Luotao Fu <l dot fu at pengutronix dot de>
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_structure),
(gst_v4l2_get_caps_info):
Add support for grayscale v4l2 devices. Fixes bug #566616.
Original commit message from CVS:
Patch by: Justin Karnegas <justin@affinix.com> and
Michael Smith <msmith@songbirdnest.com>
* sys/osxaudio/gstosxaudio.c:
* sys/osxaudio/gstosxaudioelement.c:
* sys/osxaudio/gstosxaudioelement.h:
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxaudiosrc.h:
* sys/osxaudio/gstosxringbuffer.c:
* sys/osxaudio/gstosxringbuffer.h:
Rewrite osxaudio to work more flexibly and more reliably, using a
different abstraction layer of coreaudio that is the recommended way of
doing low-level audio I/O on OSX.
Fixes byg #564948.
Original commit message from CVS:
Patch by: Brian Cameron <brian.cameron at sun dot com>
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_open):
Set the mixer fd before calling ioctl() on it. Fixes bug #563414.
Original commit message from CVS:
* sys/osxvideo/osxvideosink.h:
* sys/osxvideo/osxvideosink.m:
Handle video window resizing more correctly, avoiding crashes when
embedding the window and resizing it.
Original commit message from CVS:
* sys/v4l2/v4l2src_calls.c:
(gst_v4l2src_probe_caps_for_format_and_size), (sort_by_frame_size),
(gst_v4l2src_probe_caps_for_format):
Turns out we don't always get the frame sizes in a predefined
order from lowest to highest resolution, so let's just sort the
list by frame size once we've queried the possible resolutions
rather than assume any particular order. Fixes probed caps for
the camera in my HP2133 mini notebook and makes v4l2src default
to a decent size.
Original commit message from CVS:
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_format_get_rank):
Guard more uncommon formats with ifdefs so that we can compile on older
versions.
Original commit message from CVS:
* sys/ximage/gstximagesrc.c: (gst_ximage_src_start),
(gst_ximage_src_stop), (gst_ximage_src_ximage_get):
Stop leaking the cursor image.
Unref the last_ximage and the cached cursor image on shutdown.
Fixes#551570.
Original commit message from CVS:
* sys/v4l2/gstv4l2object.h:
Getting the Class from an instance is not just a matter of casting it to
the class struct but it involves calling G_OBJECT_GET_CLASS on the
instance. Fixes#549784.
Original commit message from CVS:
* configure.ac:
Fix libs for linking directsound.
* sys/directsound/gstdirectsoundsink.c:
Fix buffer sizing to prevent racing the ringbuffer at startup.
Add volume property.
Original commit message from CVS:
* sys/osxaudio/gstosxaudiosink.c:
(gst_osx_audio_sink_select_device):
* sys/osxaudio/gstosxaudiosrc.c:
(gst_osx_audio_src_create_ringbuffer),
(gst_osx_audio_src_select_device):
* sys/osxaudio/gstosxringbuffer.c: (gst_osx_ring_buffer_acquire):
Fix the build on macosx.
Original commit message from CVS:
* sys/osxaudio/Makefile.am:
* sys/osxaudio/gstosxaudio.c:
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxaudiosrc.h:
* sys/osxaudio/gstosxringbuffer.c:
* sys/osxaudio/gstosxringbuffer.h:
Rewrite caps setting and ring buffer initialisation.
Previously we never told CoreAudio what format we were going to send it,
so it only worked due to luck, and not at all on some hardware.
Now we explicitly advertise what formats the hardware supports, and then
configure the selected one correctly.
Original commit message from CVS:
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2src.c:
* sys/v4l2/gstv4l2src.h:
* sys/v4l2/v4l2_calls.c:
* sys/v4l2/v4l2src_calls.c:
Fix memory leaks. Small code cleanups : No need for empty _init(). No
need to memset instance structures. Some more FIXME's.
Original commit message from CVS:
Patch by: Filippo Argiolas <filippo dot argiolas at gmail dot com>
* sys/v4l2/gstv4l2tuner.c: (gst_v4l2_tuner_set_norm_and_notify):
v4l2src doesn't have a property named "norm" so don't try to notify
about changes to that property. The "norm" property and related
code are commented out currently. Fixes bug #549090.
Original commit message from CVS:
Patch by: Mike Ruprecht <cmaiku at gmail dot com>
* sys/v4l2/gstv4l2object.c: (gst_v4l2_class_probe_devices):
Reprobe devices again instead of taking a cached list as new
devices could've been plugged in. Fixes bug #549062.
Original commit message from CVS:
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_buffer_alloc,
gst_directdraw_sink_bufferpool_clear):
Fix two more buffer ref leaks.
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås <ole.andre.ravnas at tandberg com>
* sys/directdraw/gstdirectdrawsink.c:
(gst_directdraw_sink_show_frame):
Fix buffer ref leak.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_structure),
(gst_v4l2_get_caps_info):
Add S910 and PWC formats with a low priority.
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_format_get_rank),
(gst_v4l2src_probe_caps_for_format):
Add more debugging.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_query):
Properly set the maximum latency value, in the same way it is done in
v4lsrc.
* sys/v4l2/v4l2src_calls.c:
Simplify fraction equality check, no need to use GValues for this.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_query):
Add warning messages stating exactly why the latency query failed.
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_set_capture):
In some cases, the negotiated framerate might be the default one which
is already set internally. But we still need to mark it down in fps_n
and fps_d so that the latency query can happen properly.
Original commit message from CVS:
Patch by: Frederic Crozat <fcrozat@mandriva.org>
* ext/esd/gstesd.c: (plugin_init):
* ext/flac/gstflac.c: (plugin_init):
* ext/shout2/gstshout2.c: (plugin_init):
* ext/wavpack/gstwavpack.c: (plugin_init):
* sys/oss/gstossaudio.c: (plugin_init):
* sys/v4l2/gstv4l2.c: (plugin_init):
Make sure gettext returns translations in UTF-8 encoding rather
than in the current locale encoding (#546822).
Original commit message from CVS:
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_probe_caps_for_format):
When outputting a pad template range for the size, include a framerate
range too, to avoid 'not a real subset of template caps' errors.
Original commit message from CVS:
Patch by: Daniel Drake <dsd at gentoo dot org>
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_set_capture),
(gst_v4l2src_get_nearest_size):
Try progressive video if interlaced fails. Fixes bug #541956
and the usage of v4l2src on OLPC.
Original commit message from CVS:
* sys/v4l2/v4l2_calls.c::
Don't include unused gstv4l2xoverlay.h. Fixes build
in case where X11 headers are not installed.
Original commit message from CVS:
Patch by: Brian Cameron <brian.cameron at sun dot com>
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_get_volume),
(gst_sunaudiomixer_ctrl_set_volume):
Improvements for the SunAudio mixer by handling mute as no gain
for tracks that have a gain property but no mute property.
Fixes bug #536067.
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_negotiate):
Improve negotiation a bit more by picking the smallest possible
resolution that is larger than the resolution specified in the
first caps entry of the peer caps. Fixes bug #536994.
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_class_init),
(gst_v4l2src_fixate), (gst_v4l2src_negotiate):
Provide a custom negotiation function to make sure to pick the highest
possible framerate and resolution. Fixes bug #536646.
Original commit message from CVS:
Patch by: William M. Brack <wbrack at mmm dot com dot hk>
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_probe_caps_for_format):
Fix potential caps leak.
If we can't get the framerate with an ioctl, try to get it with the
current norm. Fixes#520092.
Original commit message from CVS:
Patch by: William M. Brack <wbrack at mmm dot com dot hk>
* sys/v4l2/v4l2src_calls.c:
(gst_v4l2src_probe_caps_for_format_and_size):
If we fail to get the frame intervals, simply don't touch the framerates
on the template caps instead of discarding the format. See #520092.
Original commit message from CVS:
Patch by: William M. Brack <wbrack at mmm dot com dot hk>
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_structure),
(gst_v4l2_get_caps_info):
Add NV12, NV21 and bayer support. See #520092.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c:
Don't include the gstv4l2xoverlay.h header as the XOverlay support
isn't implemented at all yet and this requires X headers to be
installed. Fixes bug #533264.
Original commit message from CVS:
patch by: Haakon Sporsheim <haakon.sporsheim at tandberg com>
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_setup_ddraw):
Do IDirectDrawClipper_SetHWnd() if the window ID has already been
set after creating the clipper.
Original commit message from CVS:
patch by: Haakon Sporsheim <haakon.sporsheim at tandberg com>
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_show_frame):
Added checking of surface lost case after an unsuccessful
IDirectDrawSurface7_Lock() call.
If surface is lost, return GST_FLOW_OK.
Original commit message from CVS:
patch by: Haakon Sporsheim <haakon.sporsheim at tandberg com>
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_show_frame,
WndProc, gst_directdraw_sink_window_thread):
Improved Windows message loop and fixed window destruction issue.
When the window which DirectDraw is rendering to is destroyed, the
render/show_frame function will return GST_FLOW_ERROR.
Partially fixes#520885.
Original commit message from CVS:
patch by: Haakon Sporsheim <haakon.sporsheim at tandberg com>
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_set_caps):
Fixed mid stream resolution change bug, the offscreen surface is now
released when set_caps is called.
Partially fixes#520885.
Original commit message from CVS:
* sys/directdraw/gstdirectdrawsink.c
(gst_directdraw_sink_buffer_alloc):
Make it so that gst_directdraw_sink_buffer_alloc uses the right
width/height.
Especially when looking through the pool of buffers, make sure that
the width/height of caps is used instead of the already negotiated
dimensions.
For example if a buffer with different caps is requested, i.e.
higher resolution, the caller would get a buffer with the old
dimensions and thus corrupt the heap.
Original commit message from CVS:
* sys/directdraw/gstdirectdrawsink.c
(gst_directdraw_sink_buffer_alloc):
Clear the flags on recycled buffers from buffer_alloc.
Partially fixes#520885.
The right fix this time.
Original commit message from CVS:
* sys/directdraw/gstdirectdrawsink.c
(gst_directdraw_sink_buffer_alloc):
Reverting previous commit, it had it all mixed up, was for a different
patch (major automation screw-up). Sorry!
Original commit message from CVS:
* sys/directdraw/gstdirectdrawsink.c
(gst_directdraw_sink_buffer_alloc):
Clear the flags on recycled buffers from buffer_alloc.
Partially fixes#520885.
Original commit message from CVS:
* sys/oss/gstosshelper.c: (gst_oss_helper_rate_check_rate):
* sys/oss/gstosssink.c: (gst_oss_sink_reset):
* sys/oss/gstosssrc.c: (gst_oss_src_reset):
More logging when probing (see #518474), some comments in _reset().
Original commit message from CVS:
Patch by: Brian Cameron <brian.cameron at sun dot com>
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_get_volume),
(gst_sunaudiomixer_ctrl_set_volume):
* sys/sunaudio/gstsunaudiomixertrack.c: (gst_sunaudiomixer_track_new):
Fix up the mixer tracks to use a volume range of 0-255, which is what
the sun audio API uses. This simplifies the code and avoids rounding
errors. Fixes#524593.
Original commit message from CVS:
Based on patch by: William M. Brack <wbrack at mmm com hk>
* sys/v4l2/v4l2src_calls.c: (fractions_are_equal),
(gst_v4l2src_set_capture):
Check whether the device supports setting the framerate before
trying to set it and then posting a warning or error if it doesn't
work (#516649, #520092). Also compare fractions more correctly.
Original commit message from CVS:
2008-03-18 Andy Wingo <wingo@pobox.com>
* sys/osxvideo/osxvideosink.m
(gst_osx_video_sink_osxwindow_destroy)
(gst_osx_video_sink_osxwindow_new): Actually set a lock on the
task, whoopdee.
(cocoa_event_loop): Pacify the taymans by upping the usleepage to
2 ms.
Original commit message from CVS:
2008-03-18 Andy Wingo <wingo@pobox.com>
* sys/osxvideo/osxvideosink.m (gst_osx_video_sink_osxwindow_destroy)
(gst_osx_video_sink_osxwindow_new, cocoa_event_loop):
* sys/osxvideo/osxvideosink.h (struct _GstOSXVideoSink): If we
need to run an event loop, do so in a task instead of assuming
that there will be a GMainLoop. Fixes#523134.
Original commit message from CVS:
Patch by: William M. Brack <wbrack at mmm com hk>
* sys/v4l2/v4l2src_calls.c:
(gst_v4l2src_probe_caps_for_format_and_size),
(gst_v4l2src_probe_caps_for_format):
Make sure the probed frame sizes are reversed in the resulting
caps also when using V4L2_FRMSIZE_STEPWISE (so they end up
highest resolution first); also remove unused variable.
(Partly fixes#520092)
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw skynet be>
* sys/oss/gstosssrc.c: (gst_oss_src_init), (gst_oss_src_getcaps),
(gst_oss_src_close):
* sys/oss/gstosssrc.h:
Cache probed caps, so _get_caps() during recording doesn't cause
ioctl calls which may disrupt the recording (fixes#521875).
Original commit message from CVS:
* sys/ximage/gstximagesrc.c:
Initialise variables when opening the X display rather
than in _start(), as the display can be opened before that.
Fixes: #515985
Original commit message from CVS:
* sys/v4l2/v4l2src_calls.c: (gst_v4l2_buffer_finalize),
(gst_v4l2_buffer_class_init), (gst_v4l2_buffer_pool_finalize),
(gst_v4l2_buffer_pool_class_init):
Chain up the finalize functions. Fixes bug #515984.
Original commit message from CVS:
* sys/ximage/ximageutil.c:
Chain up in the finalize function for our custom
buffer sub-class.
Patch by: Sebastian Dröge <slomo@circular-chaos.org>
Fixes: #515706
Original commit message from CVS:
* sys/ximage/gstximagesrc.c:
Free allocated Damage memory before closing our connection to the
X server. Fixes: #515706
Original commit message from CVS:
* sys/v4l2/v4l2_calls.c: (gst_v4l2_fill_lists):
Treat ENOTTY (driver does not implement ioctl) the same as
EINVAL since it implies there are no available standards.
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_probe_caps_for_format),
(gst_v4l2src_get_nearest_size):
Replace gst_v4l2src_get_size_limits with 2 calls to new function
gst_v4l2src_get_nearest_size, and get it to use VIDIOC_S_FMT to
probe if the driver does not support VIDIOC_TRY_FMT for whatever
reason, and if we aren't yet actively capturing.
* sys/v4l2/v4l2src_calls.h:
Remove replaced function declaration.
Original commit message from CVS:
* configure.ac:
Detect video4linux headers on Solaris too.
* sys/v4l2/gstv4l2colorbalance.h:
* sys/v4l2/gstv4l2object.h:
* sys/v4l2/v4l2_calls.c:
* sys/v4l2/v4l2src_calls.c: (gst_v4l2_buffer_finalize),
(gst_v4l2_buffer_new):
Make v4l2 build on Solaris.
Patch by: Brian Cameron <brian.cameron at sun dot com>
Fixes: #510505
Original commit message from CVS:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* sys/osxvideo/osxvideosink.h:
Revert previous change caused by a file that got stuck on an old
revision.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxvideo/osxvideosink.h:
Managed to resolve most unused declarations. Filed a bug for one left.
Original commit message from CVS:
* ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer):
* gst/id3demux/id3v2frames.c: (parse_picture_frame):
Generate the image-type values correctly. Leave them out of the caps
when outputting a "preview image" tag, since it only makes sense
to have one of those - the type is irrelevant.
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_open):
If we can, mark the mixer multiple open when we use it, in case
(for some reason) the process wants to open it again elsewhere.
Original commit message from CVS:
2008-01-05 Julien Moutte <julien@fluendo.com>
* sys/directdraw/gstdirectdrawsink.c:
(gst_directdraw_sink_set_window_id),
(gst_directdraw_sink_set_caps),
(gst_directdraw_sink_change_state),
(gst_directdraw_sink_buffer_alloc),
(gst_directdraw_sink_draw_borders),
(gst_directdraw_sink_show_frame),
(gst_directdraw_sink_setup_ddraw),
(gst_directdraw_sink_window_thread),
(gst_directdraw_sink_get_ddrawcaps),
(gst_directdraw_sink_surface_create): Make sure we create our
internal window only when we need it. That will give a chance to
the application to get the prepare-xwindow-id bus message. Draw
black borders when keeping aspect ratio. Handle the case where
our
rendering window disappears (closed or errors) like other sinks
do. Various 80 columns fixes, improve state change order. That
element could need some more love.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_loop):
* gst/wavparse/gstwavparse.c: (gst_wavparse_chain):
* sys/ximage/gstximagesrc.c: (composite_pixel):
Fix 'xyz may be used uninitialized' compiler warnings caused
by broken g_assert_not_reached() macro in GLib-2.15.x (it's
not really nice to abort in any case). Fixes#505745.
Original commit message from CVS:
* sys/v4l2/v4l2_calls.c: (gst_v4l2_fill_lists):
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_fill_format_list):
Init some structs to zero before we pass them to ioctl, which
avoids valgrind warnings. Also fix a small memory leak.
Original commit message from CVS:
* sys/oss/gstosshelper.c:
Verify that the format returned after the ioctl is the one
we requested. It is valid for the ioctl to succeed while
substituting an alternate 'supported' sample format.