Commit graph

65 commits

Author SHA1 Message Date
Sanchayan Maity
86d1dd0d70 rtp: Enable support for OPUS
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/510>
2021-07-30 13:10:08 +00:00
Arun Raghavan
74f8456acb rtp: Add a GStreamer-based RTP implementation
This adds a GStreamer-based RTP implementation to replace our own. The
original implementation is retained for cases where it is not possible
to include GStreamer as a dependency.

The idea with this is to be able to start supporting more advanced RTP
features such as RTCP, non-PCM audio, and potentially synchronised
playback.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2019-11-08 17:39:40 +05:30
Arun Raghavan
d15291bbbb rtp: Hide RTP implementation details from module-rtp-*
This moves RTP implementation-specific information out of
module-rtp-send/recv. This is basically done by making the
pa_rtp_context structure opaque from the perspective of these modules.
We can then potentially replace the underlying RTP implementation with
something else transparently.

One RTP detail that does "leak" is the RTP timestamp. We provide this to
module-rtp-recv so that it can perform rate adjustments to match the
sender rate.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2019-11-08 17:39:03 +05:30
Arun Raghavan
0548cdc6d6 rtp: Move MTU handling to the RTP implementation
module-rtp-send itself doesn't really need to handle this, the
implementation can keep track (and make sure sending happens in MTU
sized chunks).

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2019-11-08 17:39:03 +05:30
Arun Raghavan
7766f0e8d7 rtp: Don't use cookie for SSRC
Publishing the cookie on multicast seems to be a bad idea.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2019-11-08 17:39:03 +05:30
Arun Raghavan
a9a3f0874a rtp: Make init return a value for success/failure
This will be used in the future when writing other RTP implementations
that can fail on init.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2019-11-08 17:39:03 +05:30
ckdo
aee67ba806 rtp: Fix reverted test for INHIBIT_AUTO_SUSPEND_ONLY_WITH_NON_MONITOR_SOURCES
RTP Monitor sources were never suspended when
inhibit_auto_suspend=only_with_non_monitor_sources

Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/735
2019-10-26 16:36:19 +03:00
Ing. Jaroslav Safka
bee9b9481a rtp-send: add configurable RTP stream name
Add configuration option 'stream_name' for stream/session name so user
will see it on receiver side as RTP Strean ($stream_name)

ex: load-module module-rtp-send source=rtp.monitor stream_name=MyServerMedia
2018-07-05 14:47:17 +03:00
Sangchul Lee
47ed9ae1f4 rtp-send: remove dead code
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
2018-06-21 06:29:32 +05:30
Arun Raghavan
d9624e0382 build-sys: Stop using symdef headers for modules
This removes the symdef header generation m4 magic in favour of a
simpler macro method, allowing us to skip one unnecessary build step
while moving to meson, and removing an 11 year old todo!
2017-12-12 12:58:52 +05:30
Tanu Kaskinen
3d698d17af sink-input, source-output: add sink/source_requested_by_application flag
When a stream is created, and the stream creator specifies which device
should be used, that can affect automatic routing policies.
Specifically, module-device-manager shouldn't apply its priority list
routing when a stream has been routed by the application that created
the stream.

A stream that was initially routed by the application may be moved for
some valid reason (e.g. user requesting a move, or the original device
disappearing). When the stream is moved away from its initial device,
the "device requested by application" flag isn't relevant any more, so
it's set to false and never reset to true again.

The change in module-device-manager's routing logic will be done in the
following patch.
2017-12-02 16:13:21 +02:00
Ondrej Holecek
5effc83479 update FSF addresses to FSF web page
FSF addresses used in PA sources are no longer valid and rpmlint
generates numerous warnings during packaging because of this.
This patch changes all FSF addresses to FSF web page according to
the GPL how-to: https://www.gnu.org/licenses/gpl-howto.en.html

Done automatically by sed-ing through sources.
2015-01-14 22:20:40 +02:00
Peter Meerwald
f390e6e974 Cleanup !! for bool
!!x makes no sense if x is bool (this is a leftover from the
convertion pa_bool_t -> bool, d806b197)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Tanu Kaskinen
4ebe88c2b2 rtp-send: Add "inhibit_auto_suspend" module argument
Some people want module-rtp-send to send silence when the sink that is
monitored goes idle, and some people want module-rtp-send to pause the
RTP stream to avoid unnecessary bandwidth consumption.
2014-02-28 15:54:06 +02:00
Tanu Kaskinen
d94cd5f730 rtp-send: Use _cb suffix with callbacks 2014-02-23 19:45:02 +02:00
Peter Meerwald
0c4c2b3110 modules: Fix uninitialized variable in rtp-send
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-02-23 17:03:50 +01:00
Ben Brewer
298ffffd1a rtp-send: Remove "don't inhibit auto-suspend" flag
A source is no longer considered idle in pa_source_check_suspend when
module-rtp-send is consuming data from it.
2014-01-14 14:57:10 +02:00
Peter Meerwald
d3cddfed5c modules: Fix uninit value in rtp-send
https://scan7.coverity.com:8443/reports.htm#v10205/p10016/fileInstanceId=8803&defectInstanceId=3705&mergedDefectId=591292&eventIds=3705-36&eventId=3705-36

see http://silviocesare.wordpress.com/2007/10/22/setting-sin_zero-to-0-in-struct-sockaddr_in/

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2013-12-20 12:55:17 +01:00
poljar (Damir Jelić)
d806b19714 Remove pa_bool_t and replace it with bool.
commands used for this (executed from the pulseaudio/src directory):
    find . -regex '\(.*\.[hc]\|.*\.cc\|.*\.m4\)' -not -name 'macro.h' \
        -a -not -name 'reserve.[ch]' -a -not -name 'reserve-monitor.[ch]' \
        -a -not -name 'glib-mainloop.c' -a -not -name 'gkt-test.c' \
        -a -not -name 'glib-mainloop.c' -a -not -name 'gkt-test.c' \
        -a -not -name 'poll-win32.c' -a -not -name 'thread-win32.c' \
        -a -not -name 'dllmain.c' -a -not -name 'gconf-helper.c' \
        -exec sed -i -e 's/\bpa_bool_t\b/bool/g' \
        -e 's/\bTRUE\b/true/g' -e 's/\bFALSE\b/false/g' {} \;

and:
    sed -i -e '181,194!s/\bpa_bool_t\b/bool/' \
        -e '181,194!s/\bTRUE\b/true/' -e \
        '181,194!s/\bFALSE\b/false/' pulsecore/macro.h
2013-07-04 12:25:30 +03:00
Robin H. Johnson
088ed8a8d6 rtp: Introduce source IP configuration
On a multi-homed system, the user may wish RTP to be used only on
specific interfaces. The default binding of 0.0.0.0 for the source
address causes SAP multicast on all interfaces, which is not ideal.

Introduce a new module argument, that allows selection of the source IP,
and thus interface.

(changes in v2: s/srcip/source_ip)

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2013-03-25 09:47:04 +00:00
Robin H. Johnson
d18c3664b5 rtp: rename modarg destination to destination_ip
The module argument 'source' already has special meaning as the
pa_source, however, the argument 'destination' expects an IP address.

Prior to introducing a source IP modarg for the source IP address,
rename the 'destination' argument to 'destination_ip'. Include
compatibility support for old RTP users so they don't need to change
their module usage immediately.

(changes in v2: minor formatting fixes, s/dstip/destination_ip)

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2013-03-25 09:47:04 +00:00
Robin H. Johnson
ce0294ccf2 rtp: Cleanup variable naming.
Before introducing new functionality, clarify the variable names

dest -> dst_addr
sa[46] -> dst_sa[46]
sap_sa[46] -> dst_sap_sa[46]

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
2013-03-25 09:47:04 +00:00
Tanu Kaskinen
666261ece8 memblockq: Improve debuggability by storing a name and a sample spec.
These are not used for anything at this point, but this
makes it easy to add ad-hoc debug prints that show the
memblockq name and to convert between bytes and usecs.
2011-10-01 13:25:16 +01:00
Maarten Bosmans
dd9265ac78 Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
Colin Guthrie
5d35375aa7 capture: Add the passthrough format negotiation to capture streams.
This helps to keep the API more symmetrical and also potentially
allows support for passthrough monitor sources at some point in the future.
2011-06-22 21:55:27 +01:00
Maarten Bosmans
c470680e1b Use pulsecore/arpa-inet.h to make arpa/inet.h functionality available
Automatically use replacement function on platforms (win32) where not all arpa/inet.h is available natively.
2011-03-19 13:41:05 +01:00
Lennart Poettering
65e7bc18a9 use cloexec wrappers wherever applicable 2009-10-30 03:32:38 +01:00
Lennart Poettering
84eb6614eb core: move 'flags' field into 'pa_sink_input_new_data' structure so that hooks can access it 2009-08-28 23:24:09 +02:00
Marc-André Lureau
0955e3d45b Base mainloop on pa_rtclock_now()
Move the mainloop to monotonic based time events.

Introduces 4 helper functions:
pa_{context,core}_rttime_{new,restart}(), that fill correctly a
timeval with the rtclock flag set if the mainloop supports it.

Both mainloop-test and mainloop-test-glib works with rt and timeval
based time events. PulseAudio and clients should be fully functional.

This patch has received several iterations, and this one as been
largely untested.

Signed-off-by: Marc-André Lureau <marca-andre.lureau@nokia.com>
2009-06-20 17:29:31 +03:00
Lennart Poettering
e5dd9dfe68 rtp: remove gcc warning 2009-06-05 19:25:15 +02:00
Lennart Poettering
e976034063 send the source latency based on the MTU size 2009-04-07 00:47:13 +02:00
Colin Guthrie
86dee05aec Use LGPL 2.1 on all files previously using LGPL 2 2009-03-03 20:23:02 +00:00
Iain Hibbert
dc590c7d0a Optionally disable IPv6
Closes #79
2009-02-13 21:58:09 +01:00
Lennart Poettering
08800c35b0 make a couple of functions return proper error codes 2009-02-03 03:14:20 +01:00
Lennart Poettering
29c7a28817 kill autoload stuff as planned 2009-01-15 20:07:13 +01:00
Tom Bamford
fe2b8c359b Multicast SDP packets sent with same IP TTL as RTP packets
Signed-off-by: Lennart Poettering <lennart@poettering.net>
2009-01-05 19:56:01 +01:00
Lennart Poettering
adc2973c8d Implement new flags DONT_INHIBIT_AUTO_SUSPEND and START_UNMUTED 2008-10-26 19:32:04 +01:00
Lennart Poettering
b7026bf248 add a few more gcc warning flags and fix quite a few problems found by doing so 2008-08-19 22:39:54 +02:00
Lennart Poettering
67858c6e46 fix type error 2008-08-18 17:36:59 +02:00
Lennart Poettering
8d596a9bc5 Make Multicast TTL for RTP configurable, patch from 'dfort'
Signed-off-by: Lennart Poettering <lennart@poettering.net>
2008-08-15 14:40:08 +02:00
Lennart Poettering
34dd4a20f2 fix shutdown when --disallow-module-loading=1 is passed 2008-08-05 23:56:25 +02:00
Lennart Poettering
8ae83d618e get rid of svn $ keywords 2008-06-18 23:23:21 +03:00
Lennart Poettering
045c1d602d merge glitch-free branch back into trunk
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2445 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-05-15 23:34:41 +00:00
Lennart Poettering
d17bb53d3e Completely rework ALSA device selection code: choose the device to open depending on the requested number of channels and channel map. In most cases it will now suffice to set default-channels=6 to enable 5.1 sound for all devices that support it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2050 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-13 17:37:44 +00:00
Lennart Poettering
e313fe1b3d tag modules that may only be loaded once at most especially, and enforce that in the module loader
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2043 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-09 18:25:40 +00:00
Lennart Poettering
a67c21f093 merge 'lennart' branch back into trunk.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1971 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-28 19:13:50 +00:00
Lennart Poettering
1e12e0ee8d Kill spaces on EOL
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1465 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-05-29 17:24:48 +00:00
Pierre Ossman
06211b7c8f Add copyright notices to all relevant files. (based on svn log)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1426 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-02-13 15:35:19 +00:00
Lennart Poettering
8f5b86b77d fix handling of "mtu" module argument (patch by "theBear")
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1329 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-23 22:28:53 +00:00
Lennart Poettering
e385d93e5a remove all occurences of
pa_logXXX(__FILE__":  
   
and replace them by 
  
   pa_logXXX("



git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1272 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 21:38:40 +00:00