Commit graph

1750 commits

Author SHA1 Message Date
Arun Raghavan
1f4bb68794 pulsesrc: Implement GstStreamVolume interface
PulseAudio 1.0 supports per-source-output volumes, and this exposes the
functionality via the GstStreamVolume interface.

When compiled against pre-1.0 PulseAudio, the interface is not
implemented, and the "volume" or "mute" properties are not available.
This bit of ugliness will go away when we can depend on PulseAudio 1.0
or greater.

https://bugzilla.gnome.org/show_bug.cgi?id=595055
2011-11-25 22:30:41 +05:30
Arun Raghavan
8c6a548698 pulsesrc: Trivial comment copy-paste-o fix 2011-11-25 22:30:41 +05:30
Arun Raghavan
bdf95eb39b pulseaudiosink: Remove redundant code 2011-11-25 22:30:41 +05:30
Arun Raghavan
f6f1605468 pulseaudiosink: Clean up refcounting in event probe
Makes sure we don't leak a refcount if the object is disposed before a
NEWSEGMENT turns up.
2011-11-25 22:30:41 +05:30
Mark Nauwelaerts
7df8122322 speexenc: ensure to free allocated padded data 2011-11-16 19:08:05 +01:00
Mark Nauwelaerts
c0d86fd26f speexenc: reset tag setter interface when appropriate 2011-11-16 19:06:09 +01:00
Mark Nauwelaerts
413f445455 flacenc: reset tag setter interface when appropriate 2011-11-16 19:06:07 +01:00
Thiago Santos
d6a9de9e2a pulseaudiosink: fix caps leak 2011-11-11 11:02:22 -03:00
Mark Nauwelaerts
37c8abcdbd pulsesink: do not leak clientname when setting up property 2011-11-11 14:59:04 +01:00
Arun Raghavan
6a8af50111 pulse: Chain up dispose() in pulseaudiosink 2011-11-11 18:05:35 +05:30
Vincent Penquerc'h
5a73374f2c flacdec: fix off by one between granpos and last_stop 2011-11-07 12:38:10 +00:00
Vincent Penquerc'h
6a25727321 cairotextoverlay: add a 'silent' property to skip rendering
https://bugzilla.gnome.org/show_bug.cgi?id=662856
2011-11-07 12:35:26 +00:00
Tim-Philipp Müller
d6e1f53233 flacenc: remove dead code from header
We require a new-enough libflac that this condition will never apply.
2011-10-30 19:30:14 +00:00
Tim-Philipp Müller
ff40deb139 jpegdec: add sof-marker to template caps, so we don't get plugged for lossless jpeg
jpegdec (using libjpeg 6.2/8) can't decode some lossless types of JPEG.

https://bugzilla.gnome.org/show_bug.cgi?id=556648
2011-10-28 12:10:34 +01:00
René Stadler
41116224c8 pngenc: increase arbitrary resolution limits
Apparently libpng can technically do up to 2^31-1 rows and columns. However it
imposes an (arbitrary) default limit of 1 million (that could theoretically be
lifted by using some additional API).

Moved array allocation to the heap now.
2011-10-21 10:27:04 +02:00
René Stadler
db1f10adc8 pngenc: don't unconditionally allocate 4096 pointers on the stack
Instead allocate as many as needed (on the stack still).
2011-10-21 10:26:48 +02:00
René Stadler
65f9354803 pngenc: ensure setcaps was called before chain function
This is needed to properly error out for e.g. "fakesrc ! pngenc ! fakesink".
2011-10-21 10:26:20 +02:00
René Stadler
7e390c4635 pngenc: validate input buffer size
Just for safety; of course such mismatch represents a bug in another element.
2011-10-21 10:25:51 +02:00
René Stadler
9eb55c3d8f pngenc: make setcaps more robust, use gstvideo functions
A setcaps function needs to actually verify the caps carefully. In this case,
it was possible to e.g. link a video decoder with YUV+RGB template caps to
pngenc.  That would cause a crash when the decoder pushes a YUV buffer. Same
thing when pushing a valid buffer that exceeds the resolution limits.

Also, missing framerate caps field would cause a glib critical warning due to
invalid GValue. This fails hard now.
2011-10-21 10:25:08 +02:00
Arun Raghavan
a7790efd04 pulse: Get caps correctly on pad block
Instead of always going upstream, we should first see if already got
caps from a setcaps() call.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-10-18 20:02:55 +05:30
Tim-Philipp Müller
e9ad06e202 wavpackenc: don't unref buffer with gst_object_unref() 2011-10-18 12:25:14 +01:00
Wim Taymans
6de67bb014 pulsesink: only use is_pcm for 1.0 of pulseaudio 2011-10-18 12:05:01 +02:00
Wim Taymans
0ade1a5822 pulsesink: only disable trickmodes for !pcm
Only disable trickmodes when we are not dealing with raw PCM samples.
2011-10-18 11:58:57 +02:00
Sjoerd Simons
95db648516 jpegdec: Implement upstream negotiation
Add upstream negotiation for jpegdec. Fixes #660275
2011-10-10 21:37:10 +01:00
Mark Nauwelaerts
00a91fc061 speexenc: only push header buffers following initial events 2011-10-09 21:32:32 +02:00
Tim-Philipp Müller
ca77c96c51 speexenc: initialise variable before adding to it 2011-09-29 23:21:46 +01:00
Mark Nauwelaerts
c5354bee04 speexdec: port to audiodecoder 2011-09-29 17:33:25 +02:00
Mark Nauwelaerts
53476c1580 speexenc: clean up some unused remnants 2011-09-29 17:33:23 +02:00
Mark Nauwelaerts
c1909c32c5 speexenc: port to audioencoder 2011-09-29 17:33:21 +02:00
Mark Nauwelaerts
e8bcd41d73 flacenc: port to audioencoder 2011-09-28 16:14:46 +02:00
Tim-Philipp Müller
3828537857 soup: rename souphttpsink to souphttpclientsink
To avoid confusion, and because we might want a server
sink at some point too.

https://bugzilla.gnome.org/show_bug.cgi?id=659947
2011-09-25 15:13:39 +01:00
Tim-Philipp Müller
be7cbd4c21 souphttpsink: don't create unused second sink pad object
The base class will create the sink pad.
2011-09-23 16:39:46 +01:00
Vincent Penquerc'h
7e4574e968 speexenc: do not use invalid buffer timestamps 2011-09-19 09:37:58 +02:00
Arun Raghavan
8ca420f547 pulse: New pulseaudiosink element to handle format changes
This introduces a new bin which wraps around pulsesink and depending on
the formats supported by the sink, plugs in/out a decodebin2 as
required. This allows users to switch sinks on the stream and adapts
accordingly (for example, you could watch a movie in passthrough mode on
your receiver which supports AC3 decode, then plug out and switch to a
non-digital profile to continue uninterrupted on analog output).

The bin is required because doing the same with playbin2/playsink will
require API changes that cannot be made in 0.10. With 0.11/1.0, we
should be able to ask for upstream caps renegotiation to deal with all
this.

https://bugzilla.gnome.org/show_bug.cgi?id=657179
2011-09-19 07:43:04 +05:30
Konstantin Miller
24d002e04d souphttpsrc: Don't handle HTTP response 407 as error if proxy authentication data is available
Fixes bug #657422.
2011-09-07 13:28:45 +02:00
Sebastian Dröge
7b592ff126 souphttpsrc: Allow positive, non-1.0 segment rates
Only negative rates are not supported. Fixes bug #658305.
2011-09-06 10:34:35 +02:00
Arun Raghavan
bd604175c5 pulsesink: Trivial indentation fix 2011-08-23 22:48:34 +05:30
Monty Montgomery
799c8e3d04 flacdec: Correct sample number rounding resulting in timestamp jitter
flacdec converts the src timestamp to a sample number, uses that internally, then reconverts the sample number to a timestamp for the output buffer.  Unfortunately, sample numbers can't be represented in an integer number of nanoseconds, and the conversion process was truncating rather than rounding, resulting in sample numbers and output timestamps that were often off by a full sample.

This corrects the time->sample convesion
2011-08-23 10:09:41 +02:00
David Henningsson
e70020b456 pulsesink: Allow writes in bigger chunks
There's no use in splitting the incoming data down to the segsize
limit - by writing as much as possible in one chunk, we increase
performance and avoid PulseAudio unnecessary rewinds.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-08-19 09:48:27 +02:00
Vincent Penquerc'h
3e0134f51f flacdec: avoid timestamp/offset tracking going out of sync
The libFLAC API is callback based, and we must only call it to
output data when we know we have enough input data. For this
reason, a single processing step is done when receiving a buffer.
However, if there were metadata buffers still pending, a step
intended for the first audio frame might end up writing that
leftover metadata. Since a single step is done per buffer, this
will cause every buffer to be written one step late.

This would add some latency (a bufferfull's worth), possibly
lose a buffer when seeking or the like, and also cause timestamp
and offset to be applied to the wrong buffer, as updates to
the "current" segment last_stop (from incoming buffer timestamp)
will be applied to an output buffer originating from the previous
incoming buffer.

This fixes the issue by ensuring that, upon receiving the first
audio frame, processing is done till all metadata is processed,
so the next "single step" done will be for the audio frame. After
this, we should keep to 1 input buffer -> 1 output buffer and so
avoid getting out of sync.

https://bugzilla.gnome.org/show_bug.cgi?id=650960
2011-08-17 13:40:59 +01:00
Vincent Penquerc'h
e09eb95a5f flacdec: bail on reserved value
Now that we look at the right bits, we can test against the reserved
value as we do for other fields.

https://bugzilla.gnome.org/show_bug.cgi?id=650960
2011-08-17 00:02:38 +01:00
Vincent Penquerc'h
64beef4610 flacdec: fix bit twiddling
Right shifting a 8 bit value by 8 bits is twice too much
to get the high 4 bits.

https://bugzilla.gnome.org/show_bug.cgi?id=650960
2011-08-17 00:01:37 +01:00
Vincent Penquerc'h
1549aaba27 flacdec: warn if we see a variable block size where unsupported
https://bugzilla.gnome.org/show_bug.cgi?id=650960
2011-08-17 00:01:07 +01:00
Tim-Philipp Müller
26a3a12513 jackaudiosrc: fix error message code
And also post 'not found' error if jackd is not even installed.
2011-08-13 16:52:53 +01:00
Tristan Matthews
c26442a3ba jackaudiosink: Don't call g_alloca() in process_cb
g_alloca() is not RT-safe, so instead we should allocate the
memory needed in advance. Fixes #655866
2011-08-03 09:44:05 +02:00
Tim-Philipp Müller
25ace0e524 pulsesink: fix variable-set-but-not-used compiler warning with older pulse versions 2011-07-29 13:05:42 +01:00
Arun Raghavan
ac7cad431c pulsesink: Add support for compressed formats
This adds support for various compressed formats (AC3, E-AC3, DTS and
MP3) payloaded in IEC 61937 format (used for transmission over S/PDIF,
HDMI and Bluetooth).

The acceptcaps() function allows bins to probe for what formats the sink
being connected to support. This only works after the element is set to
at least READY.

If the underlying sink changes and the format we are streaming is not
available, we emit a message that will allow upstream elements/bins to
block and renegotiate a new format.
2011-07-29 01:25:15 +05:30
Arun Raghavan
a67b536741 pulsesink: Use the extended stream API if available
This uses the new extended API for creating streams. This will allow us
to support compressed formats natively in pulsesink as well.
2011-07-29 01:25:15 +05:30
Arun Raghavan
379049809c pulsesrc: Add a source-output-index property
This exposes the source output index of the record stream that we open
so that clients can use this with the introspection if they want (to
move the stream, for example).
2011-07-29 00:07:52 +05:30
Thiago Santos
14b9fb7be6 pulsesrc: Fix default value leaking
Remember to free the default value of client name, avoiding a
leak
2011-07-18 15:16:01 -03:00