yanghuolin
67a7b5a993
alsasink: don't use 100% CPU
...
The root cause is that alsa-lib is not thread safe for the same handle.
There are two threads in the gstreamer accessing alsa-lib not serilized.
The race condition happens when one thread holds the old framebuffer app_ptr
position in the kernel, another thread advances the framebuffer app_ptr.
when the former thread is scheduled to run again, it overwrites the app_ptr
to old value by copying from kernel.Thus,the app_ptr in the upper
alsa-lib(pcm_rate) become one period size more advanced than the lower
alsa-lib(pcm_hw & kernel).
gstreamer uses noblock and poll method to communicate with the alsa-lib.
The app_ptr unsync situation as described above makes the poll return immediately because
it concludes there is enough space for the ring-buffer via the low-level alsa-lib.
The write function returns immediately because it concludes there is not enough
space for the ring-buffer from the upper-level alsa-lib. Then the loop of poll
and write runs again and again until another period size is available for
ring-buffer.This leads to the cpu 100 problem.
delay_lock is used to avoid the race condition.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=690937
2013-01-24 15:08:31 +01:00
Tim-Philipp Müller
df6031f7c6
alsasrc: return negative value on read error
...
Otherwise baseaudiosrc won't go into the error code path.
https://bugzilla.gnome.org/show_bug.cgi?id=690197
2012-12-17 20:50:33 +00:00
Tim-Philipp Müller
3d5a78e67a
alsa: post error message when audio device disappears
...
Don't loop forever if an USB audio device gets disconnected
while in use. Post an error message instead. This is not
enough yet though, we still need to make the base class
and/or the ring buffer bail out.
https://bugzilla.gnome.org/show_bug.cgi?id=690197
2012-12-16 01:00:43 +00:00
Sebastian Dröge
d9b25afe71
ext: Fix some compilation errors caused by circular header includes
2012-12-12 17:22:31 +00:00
Tim-Philipp Müller
5f59b4f7ee
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Sebastian Dröge
3c1041d5eb
Revert "gst: Add better support for static plugins"
...
This reverts commit d2d79e3bc2
,
which was accidentially pushed.
2012-10-24 13:26:26 +02:00
Sebastian Dröge
d2d79e3bc2
gst: Add better support for static plugins
2012-10-24 12:10:44 +02:00
Tim-Philipp Müller
ccbb233da8
alsasink: fix caps leak in acceptcaps function
...
https://bugzilla.gnome.org/show_bug.cgi?id=681192
2012-10-20 11:38:55 +01:00
Tim-Philipp Müller
1a69ec3fd3
alsa: if no formats in native endianness could be detected, try non-native endianness as well
...
This can happen, e.g. when using an USB sound card on
a big-endian device
https://bugzilla.gnome.org/show_bug.cgi?id=680904
2012-10-18 11:04:06 +01:00
Tim-Philipp Müller
1e329bb4f4
alsa: fix supported format detection
...
The format probing code was assuming there'd be one caps
structure for each separate width/depth combination like
we did in 0.10 all over the place: for one, we'd query
unsigned/signed formats together for the same width/height,
and we'd add the entire current structure to the probed
caps when we find a format is supported. Now that we have
all raw formats in a single structure, this is all not going
to work so well any more. We added the entire structure with
all possible formats to the caps if we support just one format.
Fix probing so that we only return the list of actually
supported raw audio formats (with native endianness) from
get_caps().
2012-10-18 11:03:07 +01:00
Arun Raghavan
9f9718715a
audio: Explicitly specify endianness for IEC 61937 payloading
...
This is required since some systems (DirectSound and OS X) manage the
final byte order themselves.
https://bugzilla.gnome.org/show_bug.cgi?id=678021
2012-09-19 09:15:16 +05:30
Pontus Oldberg
a2f8ec4f5a
ringbuffer: add support for timestamps
...
Make it possible for subclasses to provide the timestamp (as an absolute time
against the pipeline clock) of the last read data.
Fix up alsa to provide the timestamp received from alsa. Because the alsa
timestamps are in monotonic time, we can only do this when the monotonic clock
has been selected as the pipeline clock.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=635256
2012-09-10 11:34:14 +02:00
Tim-Philipp Müller
794af4fc51
alsa: port to new GLib thread API
2012-09-10 01:06:51 +01:00
Tim-Philipp Müller
2079a8c12b
Remove glib-compat-private.h stuff we don't need any more
...
It's all been ported to the latest GLib API now.
2012-09-09 18:36:49 +01:00
Tim-Philipp Müller
fc37cf5779
Silence some 'variable may be used uninitialized' compiler warnings
...
when compiling with -DG_DISABLE_ASSERT
2012-08-08 10:19:20 +01:00
Andoni Morales Alastruey
2434f2932b
alsasink: check for spdif support only in the current device
2012-05-18 12:01:06 +02:00
Mark Nauwelaerts
1c70c5b85e
alsasink: really use local ringbuffer spec helper var and init it a bit more
...
... to avoid assertion failures
Conflicts:
ext/alsa/gstalsasink.c
2012-05-09 10:28:16 +02:00
Andoni Morales Alastruey
c6409806c1
alsasink: use the iec958 payloader to support non-payloaded input streams
2012-05-07 13:31:01 +02:00
Sebastian Dröge
69b18ab09d
gst-libs: Remove interfaces libs and mixer/tuner interfaces
...
The navigation interface is now in the video library.
2012-04-13 13:14:13 +02:00
Tim-Philipp Müller
3c6a3ad629
Use new gst_element_class_set_static_metadata()
2012-04-10 00:45:16 +01:00
Sebastian Dröge
ad42b16375
gst: Update for GST_PLUGIN_DEFINE() API change
2012-04-05 15:11:05 +02:00
Sebastian Dröge
65307dd132
gst: Update versioning
2012-04-04 14:55:15 +02:00
Wim Taymans
6e054dfc3d
alsa: fix small caps leak
2012-03-27 15:43:44 +02:00
Wim Taymans
25137962ad
fix for caps API changes
2012-03-11 19:04:41 +01:00
Sebastian Dröge
1cbcb9281c
mixer/colorbalance: Update for API changes
2012-03-02 10:00:59 +01:00
Sebastian Dröge
f7939bb43f
Merge branch 'master' into 0.11
...
Conflicts:
NEWS
RELEASE
configure.ac
docs/plugins/gst-plugins-base-plugins.args
docs/plugins/gst-plugins-base-plugins.hierarchy
docs/plugins/gst-plugins-base-plugins.interfaces
docs/plugins/inspect/plugin-adder.xml
docs/plugins/inspect/plugin-alsa.xml
docs/plugins/inspect/plugin-app.xml
docs/plugins/inspect/plugin-audioconvert.xml
docs/plugins/inspect/plugin-audiorate.xml
docs/plugins/inspect/plugin-audioresample.xml
docs/plugins/inspect/plugin-audiotestsrc.xml
docs/plugins/inspect/plugin-cdparanoia.xml
docs/plugins/inspect/plugin-encoding.xml
docs/plugins/inspect/plugin-ffmpegcolorspace.xml
docs/plugins/inspect/plugin-gdp.xml
docs/plugins/inspect/plugin-gio.xml
docs/plugins/inspect/plugin-gnomevfs.xml
docs/plugins/inspect/plugin-libvisual.xml
docs/plugins/inspect/plugin-ogg.xml
docs/plugins/inspect/plugin-pango.xml
docs/plugins/inspect/plugin-playback.xml
docs/plugins/inspect/plugin-subparse.xml
docs/plugins/inspect/plugin-tcp.xml
docs/plugins/inspect/plugin-theora.xml
docs/plugins/inspect/plugin-typefindfunctions.xml
docs/plugins/inspect/plugin-uridecodebin.xml
docs/plugins/inspect/plugin-videorate.xml
docs/plugins/inspect/plugin-videoscale.xml
docs/plugins/inspect/plugin-videotestsrc.xml
docs/plugins/inspect/plugin-volume.xml
docs/plugins/inspect/plugin-vorbis.xml
docs/plugins/inspect/plugin-ximagesink.xml
docs/plugins/inspect/plugin-xvimagesink.xml
gst-libs/gst/app/gstappsink.c
gst-libs/gst/audio/mixer.c
gst-libs/gst/audio/mixer.h
gst-libs/gst/tag/gstxmptag.c
gst-libs/gst/video/colorbalance.c
gst-libs/gst/video/colorbalance.h
gst/adder/gstadder.c
gst/playback/gstplaybasebin.c
gst/playback/gstplaybin2.c
gst/playback/gstplaysink.c
gst/videoscale/gstvideoscale.c
tests/check/elements/videoscale.c
tests/examples/seek/seek.c
tests/examples/v4l/probe.c
win32/common/_stdint.h
win32/common/audio-enumtypes.c
win32/common/config.h
2012-03-02 10:00:55 +01:00
Edward Hervey
59918e841f
Suppress deprecation warnings in selected files, for g_value_array_* mostly
2012-02-27 14:28:15 +01:00
Wim Taymans
61a53092e4
alsa: merge instead of appending structures
2012-01-26 14:28:06 +01:00
Sebastian Dröge
68c0790817
Merge branch 'master' into 0.11
...
Conflicts:
gst-libs/gst/interfaces/propertyprobe.c
sys/xvimage/xvimagesink.c
2012-01-25 11:50:54 +01:00
Tim-Philipp Müller
5487cb98ef
Replace deprecated GStaticMutex with GMutex
2012-01-22 22:52:28 +00:00
Wim Taymans
3d42f0f6ed
port to new glib thread API
2012-01-19 11:36:17 +01:00
Tim-Philipp Müller
576bbb4fd8
Remove compatibility code cruft for old GLib versions
2012-01-18 17:22:21 +00:00
Vincent Penquerc'h
8d29fe8834
alsasink: fix high sample rates being rejected
...
An ALSA sink may select a different rate (as we use the _set_rate_near
API, which is not guaranteed to set the exact target rate).
The rest of the code seems to already handle this well, as output
from a 88200 Hz file seems to have the correct pitch when selecting
a 96 kHz rate.
2012-01-16 11:46:05 +00:00
Vincent Penquerc'h
361f2b169c
alsasink: fix rate match message mistaking error code for sample rate
2012-01-16 11:46:05 +00:00
Vincent Penquerc'h
e60027c795
alsasink: log API errors along with the error code and string
2012-01-16 11:46:05 +00:00
Sebastian Dröge
75f91ebea0
ext: Add new layout field to the raw audio caps
2012-01-05 10:34:25 +01:00
Sebastian Dröge
2fc75efdce
alsa: Port to the new multichannel caps
2012-01-05 10:34:20 +01:00
Tim-Philipp Müller
3dfdd6be9d
audioringbuffer: rename GST_BUFTYPE_* to GST_AUDIO_RING_BUFFER_FORMAT_TYPE_*
...
Bit unwieldy, but more appropriate. Could also be moved into
audio.h as GstAudioFormatType.
2011-12-25 21:38:21 +00:00
Tim-Philipp Müller
cab6432c68
alsasink: make work for raw audio formats by fixing template caps
2011-12-23 00:54:43 +00:00
Wim Taymans
dde5e5a248
alsa: remove more property probe stuff
2011-12-22 16:37:29 +01:00
Wim Taymans
ddc05e0ed1
propertyprobe: remove propertyprobe
...
Remove the propertyprobe interface
Improve docs
2011-12-21 11:58:53 +01:00
Tim-Philipp Müller
fb6d09055a
Merge remote-tracking branch 'origin/master' into 0.11
...
Conflicts:
ext/alsa/gstalsadeviceprobe.c
ext/alsa/gstalsamixer.c
ext/pango/gsttextoverlay.c
ext/pango/gsttextoverlay.h
gst-libs/gst/audio/gstaudiobasesink.c
gst-libs/gst/audio/gstaudioringbuffer.c
gst-libs/gst/audio/gstaudiosrc.c
gst-libs/gst/video/Makefile.am
gst-libs/gst/video/video.c
gst/encoding/gststreamcombiner.c
gst/encoding/gststreamsplitter.c
gst/playback/gstplaybasebin.c
gst/playback/gststreamsynchronizer.c
gst/playback/gstsubtitleoverlay.c
gst/playback/gsturidecodebin.c
sys/xvimage/xvimagesink.c
tests/examples/Makefile.am
win32/common/libgstvideo.def
Video overlay composition disabled for now, needs
porting to buffer meta.
2011-12-08 01:19:03 +00:00
Tim-Philipp Müller
5440ae3c18
Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
...
GStaticRecMutex is part of our API/ABI, not much we can do here
in 0.10 for most of these.
2011-12-04 20:50:25 +00:00
Tim-Philipp Müller
4828234639
alsamixer: use GRectMutext instead of GStaticRecMutex with newer glib versions
2011-12-04 20:38:19 +00:00
Tim-Philipp Müller
9c307bccc5
alsamixer: embed static mutexes into the mixer structure
...
instead of allocating them dynamically
2011-12-04 20:21:26 +00:00
Tim-Philipp Müller
0d98aa25b8
Work around deprecated thread API in glib master
...
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We'll change these
over to the new API once we depend on glib >= 2.32.
Replace g_thread_create() with g_thread_try_new().
2011-12-04 17:16:30 +00:00
Tim-Philipp Müller
177525f89f
Merge remote-tracking branch 'origin/master' into 0.11
...
Conflicts:
gst-libs/gst/netbuffer/gstnetbuffer.c
gst/ffmpegcolorspace/avcodec.h
gst/ffmpegcolorspace/gstffmpegcodecmap.c
gst/ffmpegcolorspace/imgconvert.c
gst/ffmpegcolorspace/imgconvert_template.h
gst/ffmpegcolorspace/mem.c
gst/playback/README
gst/playback/gstplaybasebin.c
gst/playback/gstplaybasebin.h
gst/playback/gstplaybin.c
sys/v4l/v4lmjpegsrc_calls.c
sys/v4l/videodev_mjpeg.h
tests/check/elements/gnomevfssink.c
2011-12-02 11:10:17 +00:00
Piotr Fusik
14644457b0
various: typo fixes
...
Fix typos in code and docs. Fixes. #658984
2011-12-02 12:03:27 +01:00
Tim-Philipp Müller
ec0d3566bf
Merge remote-tracking branch 'origin/master' into 0.11
...
Conflicts:
ext/alsa/gstalsasrc.c
ext/alsa/gstalsasrc.h
gst/adder/gstadder.c
gst/playback/gstplaybin2.c
gst/playback/gstplaysinkconvertbin.c
win32/common/libgstvideo.def
2011-12-02 00:07:39 +00:00
Tim-Philipp Müller
e88e47cd24
Revert "alsasrc: Improve timestamp accuracy"
...
This reverts commit 0b774e0b7c
.
2011-11-30 23:15:35 +00:00