Commit graph

1170 commits

Author SHA1 Message Date
Wim Taymans
2e2f1d73ca pulsesink: handle pull-based scheduling
Use the default basesink methods for implementing pull based scheduling, it
works fine for us.
2009-04-09 17:26:20 +02:00
Wim Taymans
8855ed90c0 pulsesink: add beginnings of pull-based scheduling 2009-04-09 17:26:20 +02:00
Wim Taymans
236baa5a13 pulsesink: keep track of clock reset
when we switch streams, the clock will reset to 0. Make sure that the provided
clock doesn't get stuck when this happens by keeping an initial offset. We also
need to make sure that we subtract this offset in samples when writing to the
ringbuffer.
2009-04-09 17:26:20 +02:00
Wim Taymans
6bc6cafcc6 pulsesink: rewrite pulsesink
Derive from BaseAudioSink and implement our custom ringbuffer that maps to the
internal pulseaudio ringbuffer.
2009-04-09 17:26:20 +02:00
Wim Taymans
28d733d53b pulse: remove some stray debug lines 2009-04-09 17:26:20 +02:00
Tim-Philipp Müller
e14bae6637 jpegdec: use slightly more adaptive formula for QoS
Should work at least a tad better if the decoder can't keep up, and
should also spread dropped frames a bit more evenly over time.
2009-04-09 11:34:19 +01:00
Thomas Vander Stichele
8009fcf547 add pending_samples so that we only update segment's last stop after really sending the samples 2009-04-04 15:14:32 +02:00
Thomas Vander Stichele
fb4953a68d add debugging 2009-04-04 15:14:31 +02:00
Thomas Vander Stichele
5e19fc1058 clipping should also work if it's done on the first buffer starting at 0 2009-04-04 15:14:31 +02:00
Jonathan Matthew
9b7c9208c3 id3v2mux: write RVA2 frames containing peak/gain volume data 2009-04-02 00:20:02 +01:00
Tim-Philipp Müller
f1fb1f80fa jpegdec: demote some log message from DEBUG to LOG
And log decoder object.
2009-04-02 00:05:14 +01:00
Tim-Philipp Müller
00c4b0b17a jpegdec: implement basic QoS
Don't decode frames that are going to be too late anyway.
2009-04-01 21:15:02 +01:00
Tim-Philipp Müller
11a8aa91b8 flac: require a 'newer' flac and remove support for the legacy flac API 2009-03-27 21:27:30 +00:00
Tim-Philipp Müller
ab1bbcd58d jpegdec: put GstSegment inside the element struct instead of allocating it separately 2009-03-25 10:36:49 +00:00
Wim Taymans
39f59ea456 pulsesink: clean up the state change function
Make the state change function a bit more readable and only pause after the
parent had a change to pause first.
2009-03-23 11:22:08 +01:00
Jan Schmidt
b39d090a49 pulsesink: Track the corked/uncorked state ourselves
Use an instance variable to track whether the stream is corked or not,
instead of using PA API that was only introduced in 0.9.11
2009-03-20 13:27:59 +00:00
Jan Schmidt
120e6bfc5c pulse: Make sure the stream is uncorked in the write function
If the caps changes, the sink is reset without transitioning through
a PAUSED->PLAYING state change, resulting in a corked stream. This avoids
the problem by checking that the stream is uncorked when writing samples
to it.
2009-03-20 12:11:06 +00:00
Tim-Philipp Müller
335891c757 speexenc: fix direction of latency query and other upstream queries
Don't send queries back to the element they just came from by sending
them to the peer of the wrong pad.
2009-03-20 01:06:14 +00:00
Jan Schmidt
608d13d462 pulsesink: Wait until there is enough room to write an entire segment
When trying to write out a segment, wait until there is enough free space
for the entire segment. This helps to reduce ripple in the clock reporting,
where the app might query the playback position while only half a segment
has been written (and is therefore reported by _delay(), even though
the ring buffer has not yet been advanced)
2009-03-13 15:40:50 +00:00
Laszlo Pandy
73fac6e4ea Don't call FLAC__ methods before it's initialized. Fixes #516031
In the event handler, gst_flac_dec_sink_event(), two functions are called on
the FLAC stream without checking if it has been initialized:
FLAC__stream_decoder_flush()
FLAC__stream_decoder_process_until_end_of_stream()

Both these FLAC__*() functions modify the internal state of the FLAC stream.
Later, when the buffers start flowing, gst_flac_dec_chain() tries to initialize
the stream. the FLAC__stream_decoder_init_stream() call will fail because the
previous calls to FLAC__*() changed the stream state so it is no longer in the
initialized state.
2009-03-12 16:10:25 +01:00
Wim Taymans
18571b9e4f pngdec: various cleanups.
Make some code more readable.
Fix a leak when pull range returns a shot buffer.
Push EOS after posting the error.
2009-03-10 11:03:14 +01:00
Wim Taymans
8f8e035cd5 flacdec: don't lose the first buffer after a seek
The flacdec API calls the write callback when performing a seek. We cannot yet
push out a buffer at that time so we must keep it and push it out later.
Flush out the upstream part of the pipeline when doing a seek.
Fixes #574275.
2009-03-09 17:14:12 +01:00
Edward Hervey
1523ef681b souphttpsrc: Expose the SoupSession 'timeout' property. 2009-03-03 12:20:27 +01:00
Thomas Vander Stichele
9f25f96155 Merge branch 'master' of ssh://thomasvs@git.freedesktop.org/git/gstreamer/gst-plugins-good 2009-03-02 09:43:30 +01:00
Thomas Vander Stichele
13221762d0 Add/clarify/fix some logging. 2009-03-02 08:41:15 +01:00
David Schleef
9f3ad53ca8 Fix the field dominance
PAL is TFF, NTSC is BFF.  Some day I will learn to keep this
straight.
2009-02-27 23:26:40 -08:00
David Schleef
b264c99074 dvdec: Add interlacing info to caps and buffers 2009-02-25 20:01:36 -08:00
Tim-Philipp Müller
1a2bd6c617 jpegenc: error out instead of crashing if no caps have been set
Don't crash if we receive a buffer without caps. Fixes #572413.
2009-02-25 12:50:37 +00:00
Sebastian Dröge
5da35b1ee2 gconf: Rename gconf.[ch] to gstgconf.[ch] to prevent name conflicts 2009-02-24 14:56:14 +01:00
Wim Taymans
7e64f1d106 Some cleanups
Remove some unused variables.
Avoid a useless _resync call.
Correctly use a gboolean.
2009-02-23 15:48:41 +01:00
Sjoerd Simons
ef33cf891f gconfvideo(src|sink): Disconnect GConf notifications
Fixes bug #571321.
2009-02-22 19:30:32 +01:00
Sebastian Dröge
dfa627da30 pulsemixer: Don't use g_atomic_int_(get|set) for accessing the mixer track flags
g_atomic_int_(get|set) only work on ints and the flags are
an enum (which on most architectures is stored as an int).

Also the way the flags were accessed atomically would still
leave a possible race condition and we don't do it in any
other mixer track implementation, let alone at any other
place where an integer could be changed from different
threads. Removing the g_atomic_int_(get|set) will only
introduce a new race condition on architectures where
integers could be half-written while reading them
which shouldn't be the case for any modern architecture
and if we really care about this we need to use
g_atomic_int_(get|set) at many other places too.

Apart from that g_atomic_int_(set|get) will result in
aliasing warnings if their argument is explicitely
casted to an int *. Fixes bug #571153.
2009-02-22 18:08:59 +01:00
Sebastian Dröge
b6e745d2d3 hdv1394src: Don't use void * pointer arithmetic 2009-02-22 12:41:53 +01:00
Thomas Vander Stichele
a7902054bd respect DEFAULT segment by clipping the last buffer to be sent 2009-02-21 12:47:00 +01:00
Mark Nauwelaerts
5cfc906d1b pulsemixer: Fix compiler warnings.
Cast (enum *) to (int *), not necessarily technically right,
but plugs #571153.
2009-02-13 18:50:52 +01:00
Mark Nauwelaerts
7756d37531 pulsesink: Issue property change notification in streaming thread,
rather than PA thread.

pa_threaded_mainloop_lock() (a.o.) and by extension get_property should
not be done from a PA thread, but the latter may occur as a result of a
property change notification.  Fixes #571204 (though current situation
not ideal, e.g. post message rather than signal).
2009-02-13 18:04:41 +01:00
Michael Smith
db0b8755e0 flacdec: if we aborted reading, don't do into an infinite loop.
If our read callback ran out of data, so had to abort reading, we return
GST_FLOW_ERROR instead of going into an infinite loop.
2009-02-05 15:53:04 -08:00
Thomas Vander Stichele
b312bc6931 debug on the object 2009-02-05 20:02:01 +01:00
Jonathan Matthew
9218eae98b Use correct flag for the GNOME proxy configuration
Fixes bug #552140.
2009-02-02 18:38:40 +01:00
Stefan Kost
eb89143219 Add examples for the jpeg elements. 2009-01-29 10:12:43 +02:00
Jan Schmidt
9795e95f39 Fix compile error in the last commit 2009-01-28 21:40:11 +00:00
Jan Schmidt
0037635bf2 Rewrite the pulse plugin, conditionally enabling new behaviour with
newer pulseaudio.

Fixes: #567794

* Hook pulsesink's volume property up with the stream volume -- not the
  sink volume in PA.

* Read the device description directly from the sink instead of going
  via the mixer.

* Properly implement _reset() methods for both sink and source to avoid
  deadlocks when shutting down a pipeline.

* Replace all simple pa_threaded_mainloop_wait() by proper loops to
  guarantee that we wait for the right event in case multiple events are
  fired.  While this is not strictly necessary in many cases it
  certainly is more correct and makes me sleep better at night.

* Replace CHECK_DEAD_GOTO macros with proper functions

* Extend the number of supported channels to 32 since that is the actual
  limit in PA.

* Get rid of _dispose() methods since we don't need them.

* Increase the volume property upper limit of the sink to 1000.

* Reset function pointers after we disconnect a stream/context. Better
  fix for bug 556986.

* Reset the state of the element properly if open/prepare fails

* Cork the PA stream when the pipeline is paused. This allows the PA
* daemon to
  close audio device on pause and thus save a bit of power.

* Set PA stream properties based on GST tags such as GST_TAG_TITLE,
  GST_TAG_ARTIST, and so on.

Signed-off-by: Lennart Poettering <lennart@poettering.net>
2009-01-28 20:34:40 +00:00
Stefan Kost
9cf73bdd8f Update and add documentation for plugins with deps (ext).
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered. Fix warnings that gtk-doc points out.
2009-01-28 18:05:09 +02:00
Jonathan Matthew
5a0e94b8a7 Use libsoup-gnome for proxy configuration if available
If libsoup-gnome is found use this as it will give us
the GNOME proxy configuration. Otherwise use normal
libsoup.

The GNOME proxy configuration will only be used if
the proxy properties are not set on souphttpsrc
and if the http_proxy environment variable is not
set.

Fixes bug #552140.
2009-01-26 09:55:24 +01:00
Jan Schmidt
1e7e381a8d Fix typo and small flaw in flac decoder 2009-01-22 14:33:04 +00:00
Wim Taymans
43fb36545b Whitespace fixes and some improved debug lines. 2009-01-21 13:25:06 +01:00
Lennart Poettering
b1c6dec543 ext/pulse/pulseprobe.c: Fix refcount loop, resulting in a thread leak. Fixes bug #567746.
Original commit message from CVS:
Patch by: Lennart Poettering <lennart at poettering dot net>
* ext/pulse/pulseprobe.c: (gst_pulseprobe_new),
(gst_pulseprobe_free):
Fix refcount loop, resulting in a thread leak. Fixes bug #567746.
2009-01-14 15:37:07 +00:00
Jan Schmidt
3e380b488d ext/pulse/pulsesink.*: Use a mutex to protect the current stream pointer, and ignore callbacks for stream objects tha...
Original commit message from CVS:
* ext/pulse/pulsesink.c:
* ext/pulse/pulsesink.h:
Use a mutex to protect the current stream pointer, and ignore
callbacks for stream objects that have been destroyed already.
Fixes problems with unprepare/prepare cycles caused by the input
caps changing, without reintroducing bug #556986.
2009-01-07 20:38:50 +00:00
Sebastian Dröge
67cc69ad52 ext/pulse/pulsesink.c: Don't wait for the pulse mainloop when destroying the stream.
Original commit message from CVS:
* ext/pulse/pulsesink.c: (gst_pulsesink_destroy_stream):
Don't wait for the pulse mainloop when destroying the stream.
Fixes a deadlock when the pulsedaemon goes away while pulsesink
is PLAYING. Fixes bug #556986.
2009-01-05 17:31:13 +00:00
Wim Taymans
2f1c50ef38 ext/jpeg/gstsmokeenc.*: Implement getcaps function.
Original commit message from CVS:
* ext/jpeg/gstsmokeenc.c: (gst_smokeenc_init),
(gst_smokeenc_getcaps), (gst_smokeenc_setcaps),
(gst_smokeenc_chain), (gst_smokeenc_change_state):
* ext/jpeg/gstsmokeenc.h:
Implement getcaps function.
Set caps on the pad and on all outgoing buffers.
Fixes #565441.
2008-12-23 12:10:41 +00:00