Commit graph

214 commits

Author SHA1 Message Date
Sanchayan Maity
da52bedbff fdkaacenc: Update documentation to clarify bitrate and peak-bitrate
bitrate property is only applicable for constant bitrate and
peak-bitrate is only applicable for variable bitrate. Clarify
the same.
2022-10-30 16:54:51 +05:30
Sanchayan Maity
f0ceb9ea4f fdkaacenc: Add support for setting bitrate mode 2022-10-30 16:54:51 +05:30
Sanchayan Maity
595dd7a1ed fdkaacenc: Add support for setting peak bitrate 2022-10-29 16:04:42 +05:30
Sanchayan Maity
734593ccab fdkaacenc: Add support for enabling afterburner
This is an additional quality parameter. In the default configuration this
quality switch is deactivated because it would cause a workload increase
which might be significant. If workload is not an issue in the application
it can be recommended to activate this feature.
2022-10-29 15:57:52 +05:30
Sanchayan Maity
a63d8ee720 fdkaacdec: Do not report decoding error for flush request
A flush request is done when set_format is called to empty internal bit
buffer maintained by fdk-aac. When this happens, during the explicit
call to handle_buffer, decodeFrame does not return a AAC_DEC_OK. This
gets reported as a decoding error while no decoding error in fact took
place. Since this can be confusing, just return a GST_FLOW_OK and log
that an explicit flush was requested.
2022-10-29 10:47:16 +05:30
Thibault Saunier
4f991a55af adaptivedemux: Minor typo fix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159>
2022-10-27 19:45:44 +00:00
Thibault Saunier
8a9821e805 dash: Fix computing repeat_index when seeking in stream with a start !=0 on the first fragment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159>
2022-10-27 19:45:44 +00:00
Tim-Philipp Müller
d7e2aff994 fdkaacenc: fix output caps in case of implicit signaling and HE-AAC
Need to put the actual profile in the output caps otherwise any
capsfilter after the encoder that was used to force the output
profile will fail, such as

  fdkaacenc ! audio/mpeg,stream-format=adts,profile=he-aac-v1 ! ..

because we put profile=lc in there to match the profile signaled
in the ADTS header. This is expressed through the base-profile=lc
in the GStreamer caps though, the profile needs to carry the
'real' profile.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1785>
2022-10-25 00:13:04 +00:00
Tim-Philipp Müller
24645e35c5 fdkaacenc: don't set base-profile=lc for non-backwards compatible output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1785>
2022-10-25 00:13:04 +00:00
Tim-Philipp Müller
31c04f87e3 fdkaacenc: rename profile=sbr|ps to profile=he-aac-v1|he-aac-v2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1785>
2022-10-25 00:13:04 +00:00
Piotrek Brzeziński
d8b1ff4668 fdkaacenc: add support for AAC-LD
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1785>
2022-10-25 00:13:04 +00:00
Piotrek Brzeziński
8cda666cb0 fdkaacenc: add support for HE-AACv1 and HE-AACv2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1785>
2022-10-25 00:13:04 +00:00
Matthew Waters
0077d13304 webrtcbin: configure rtpulpfecdec passthrough property
This allows downstream (payloaders mostly) to be able to correctly
detect actual packet loss from rtp sequence numbers.

See
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/581
for background.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1407

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3212>
2022-10-23 23:44:07 +00:00
Matthew Waters
a633f5d287 webrtcbin: also add rtcp-fb ccm fir for video mlines by default
In addition to the 'nack pli' already added.  Both are supported by
rtpbin/rtpsession by default already.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3235>
2022-10-21 01:02:34 +00:00
Sangchul Lee
0f05be382b webrtcbin: Improve documentation of 'turn-server' property
Description about how to set time-limited credentials is added.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3229>
2022-10-20 15:30:07 +00:00
Fabian Orccon
50c6c54675 srtp: Fix test skipping when plugin option is disabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3200>
2022-10-18 22:12:41 +00:00
Johan Sternerup
44eea7bd8a sctpenc: Prohibit sending of interleaved message parts
Apparently we cannot start sending messages from another datachannel
before the previous message was completely sent. usrsctplib will
complain about being locked on another stream id and set
errno=EINVAL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2454>
2022-10-11 09:36:13 +00:00
Xavier Claessens
56eb44c502 Meson: Fix libxml2 fallback
The variable xml2lib_dep does not exist. The correct name is already in
the wrap file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3136>
2022-10-07 07:56:21 -04:00
Sangchul Lee
93b896eb4e webrtcbin: Fix pointer dereference before null check
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3129>
2022-10-06 16:46:33 +00:00
Johan Sternerup
212c09a70e webrtc: return error when sending on non-open datachannel
According to W3C
specification (https://w3c.github.io/webrtc-pc/#datachannel-send) we
should return InvalidStateError exception when trying to send when the
channel is not open. In the world of C/glib/gstreamer we don't have
exceptions but have to rely on gboolean/GError instead. Introducing
these calls for a change in function signature of the action signals
used to send data on the datachannel. Changing the signature of the
existing "send-string" and "send-data" signals would mean an immediate
breaking change so instead we deprecate them. Furthermore, there is no
way to express GError** as an argument to an action signal in a way
that fits language bindings (pointer-to-pointer simply does not work)
and we have to use regular functions instead.

Therefore we introduce gst_webrtc_data_channel_send_data_full() and
gst_webrtc_data_channel_send_string_full() while deprecating the old
functions and corresponding signals.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1958>
2022-10-05 11:08:30 +00:00
Devin Anderson
31831eb47e voamrwbenc: Fix truncation of audio data at end-of-stream when audio data
doesn't align on 20 millisecond frame size.

The AMR-WB codec imposes a fixed 20 millisecond frame size.  In its current
form, the `voamrwbenc` plugin deals with this limitation by discarding any
audio at the end of the stream that falls short of 20 milliseconds.  This patch
keeps the audio data, and appends silence to the end to preserve frame size
alignment.

The patch also adds tests to check for the updated behavior.  I noticed that
tests weren't being built, so I changed the build to allow for building the
tests when the `tests` and `voamrwbenc` options are set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3027>
2022-09-16 00:14:58 +00:00
Mathieu Duponchelle
b454ec972f webrtcbin: fix picking available payload types
When picking an available payload type, we need to pick one that is
available across all media.

The previous code, when multiple media were present, looked at the first one,
noticed it had pt 96 as the media pt, then simply looked at the next media,
noticed it didn't, and decided 96 was available.

Instead, check if the pt is used by any of the media, if it is, decide
it is not available and go to the next pt. I'm fairly sure that was the
original intent.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2984>
2022-09-07 03:22:34 +00:00
Jordan Petridis
a7f9c97454 fluidsynth: correctly version guard methods
We bumped the minimum version to 2.1 but the api we used
wasn't introduced till version 2.2 of fluidsynth

Follow-up to gstreamer/gstreamer!2718

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2718

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2835>
2022-09-05 17:48:27 +00:00
Jan Schmidt
4e25c519de dashdemux: Preserve current representation on live manifest updates
When updating a manifest during live playback, preserve the current
representation for each stream.

During update_fragment_info, if the current representation changed
because it couldn't be matched, trigger a caps change and new
header download.

This reverts commit e0e1db212f
and reapplies "dashdemux: Fix issue when manifest update sets slow start
without passing necessary header & caps changes downstream" with
changes.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/507
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1729

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2920>
2022-09-05 16:07:00 +00:00
Olivier Crête
4b3b234f72 webrtcbin: Allow locked mlines with no caps, as the last ones
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2439>
2022-09-02 11:52:58 +02:00
Olivier Crête
0930c467d4 webrtcbin: Reject creating an offer if a locked mline has no caps
This avoids getting in a bunch of corner cases. We'd have to insert
a "rejected" line from the start as a place-holder to get around this,
but the rest of the code just becomes more complicated, so just
disallow it for now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2439>
2022-09-02 11:52:58 +02:00
Olivier Crête
3503599e0a webrtcbin: Store pending mid to make create-offer idempotent
If the mid is not stored in the transceiver, but it is stored in
last_offer, then a further create-offer call will just ignore that
transceiver.

Also include unit test for ensure it doesn't regress.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2439>
2022-09-02 11:52:58 +02:00
Thibault Saunier
6a4425e46a meson: Call pkgconfig.generate in the loop where we declare plugins dependencies
Removing some copy pasted code

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970>
2022-09-01 21:17:35 +00:00
Robert Rosengren
ab9ce0500a curlbasesink: gst_curl_base_sink_transfer_thread_close is internal
gst_curl_base_sink_transfer_thread_close is moved from external header
to be static function, as it has no users.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2732>
2022-08-29 09:40:23 +00:00
Robert Rosengren
8677d573b7 curlhttpsink: Only set MIME as content-type if not set by property
Setting the content-type property shall override internally detected MIME
types, to make it possible to do as following example (where audio/basic to be
used prior to audio/x-mulaw):

gst-launch-1.0 ... ! mulawenc ! audio/x-mulaw,rate=8000,channels=1 !
  curlhttpsink location=<url> content-type=audio/basic

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2732>
2022-08-29 09:40:23 +00:00
Philippe Normand
0151d621af openh264: Register debug categories earlier
Otherwise the GST_ERROR message logged in case of ABI mismatch would be done on
an uninitialized category.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2918>
2022-08-22 13:34:33 +00:00
Philippe Normand
cfd3bd4850 openh264enc: Fix constrained-high encoding
constrained-high is high without B-frames, there is no EProfileIdc for this, so
assume high instead of hitting an assert down the line.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2919>
2022-08-20 16:57:27 +01:00
Philippe Normand
90d46c1748 wpesrc: Switch URI handler to web+... protocols
The web://http:// URIs were not compliant with RFC 3986. Using web+http://
allows us to use the GstUri parser to pass down a valid URI to `wpevideosrc`.

Corresponding change for the CEF source element:
8d499495dd

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2856>
2022-08-10 15:10:26 +00:00
Robert Mader
e93773bda7 waylandsink: Logging code style updates
For better readability of debug messages and to keep similar code
in sync with `GstGtkWaylandsink`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2694>
2022-08-03 14:25:17 +00:00
Robert Mader
062638a639 waylandsink: Rename occurrences of GstWaylandSink to 'self'
Rename all occurrences to `self`, making it consintent with `GstWl*`
and `GstGtkWaylandsink`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2694>
2022-08-03 14:25:17 +00:00
George Kiagiadakis
7e18fc1b1f Add new gtkwaylandsink element
This is based on gtksink, but similar to waylandsink uses Wayland APIs
directly instead of rendering with Gtk/Cairo primitives.

Note that the long term plan is to move this into the existing extension
in `-good`, which requires the Wayland library to move the as well.

For this reason several files like `gstgtkutils.*` and `gtkgstbasewidget.*`
are straight copies and should be kept in sync.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1515>
2022-08-02 16:34:13 +00:00
Philippe Normand
10eaae1243 dtls: Properly name encoder/decoder logging categories
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2820>
2022-08-01 09:02:03 +00:00
Philippe Normand
7c3f73ec2e dtls: Make agent and connection GstObjects
Facilitates debug logs interpretation of GST_DEBUG_OBJECT() calls.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2820>
2022-08-01 09:02:03 +00:00
Nirbheek Chauhan
b2d22c0f00 meson: Don't pass -Werror to vendored code
Do it the correct way with libusrsctp -- override the option so that
it's done in a compiler-agnostic and future-proof way.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2494>
2022-07-30 11:27:12 +00:00
Nirbheek Chauhan
11ecda9d73 dtls: Disable OpenSSL 3.0 deprecation warnings for now
Fedora 36 ships with OpenSSL 3.0, which deprecates all low-level APIs,
so this code needs to be rewritten. There is no easy fix in the
porting guide, and it recommends disabling the warnings if you can't
use the high-level API.

https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.1.1

Here's the replacement API:

https://www.openssl.org/docs/man3.0/man7/migration_guide.html#Deprecated-low-level-object-creation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2494>
2022-07-30 11:27:12 +00:00
U. Artie Eoff
e3e98da727 meson: webrtc: ensure definition of libgstwebrtcnice_dep
... and skip if it's disabled.

Fixes #1344

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2797>
2022-07-26 17:39:52 -04:00
yatinmaan
2c1e61ea16 webrtc: Split WebRTCICE into base classes and implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2398>
2022-07-26 13:51:11 +00:00
Jordan Petridis
3a20a4564f openmpt: update from now deprecated api
https://lib.openmpt.org/doc/classopenmpt_1_1module.html#ab2695af0baa274054f5687741fa7c05b

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2721>
2022-07-21 07:52:37 +00:00
Thibault Saunier
073df3d820 webrtcbin: Add a signal to plug bandwidth estimator elements
We need GStreamer elements to do the bandwidth estimation as this way
they can also control the pacing of the transmission flow as specified
 in the [GCC] algorithm for example.

Bandwidth estimator element are placed right before the "RTPSession" as
an "rtp-aux-sender" element. This way they can use the "Transport-wide
Congestion Control" RTCP feedback messages through the "RTPTwcc" custom
events that are sent by the rtpsession.

Applications are responsible to react to the bandwidth estimator element
and set the encoder target bitrate etc... which means that we can not
pass an estimator as an element factory, so a signal as been chosen
instead.

[GCC]: https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2562>
2022-07-12 20:40:55 +00:00
Jordan Petridis
3385ea3481 fluiddec: Remove workaround for version 1.1.9
We require >= 2.1 version since the previous commit

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2718>
2022-07-09 14:19:11 +00:00
Jordan Petridis
2fa6ec8733 fluidsynth: update from now deprecated api
fluid_synth_set_chorus_on and fluid_synth_set_reverb_on were
deprecated in favor of new funtions where you can also specify
the fx_group the effect would apply.

The behavior of the set_* variants was to apply to all groups
so we pass -1 to the new functions as per documentation.

https://www.fluidsynth.org/api/group__chorus__effect.html#ga3c48310eecdca9cd338799d19f19c32d

and

https://www.fluidsynth.org/api/group__reverb__effect.html#gacb7917564c988cf54f2e35189b509c8e

and the introduction of the change:

https://github.com/FluidSynth/fluidsynth/pull/673

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2718>
2022-07-09 14:19:11 +00:00
Matthew Waters
6066e913ee webrtc: implement support for asynchronous host resolution
Doesn't block anymore if a mdns host resolution takes multiple seconds
to complete in e.g. stun/turn/ice candidate usage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1961>
2022-07-05 03:20:57 +00:00
Sebastian Dröge
a54eddad3a webrtcbin: Reject caps that are not valid for creating an SDP media.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2689>
2022-06-30 09:28:27 +00:00
Tim-Philipp Müller
afc94046ba dv, opusparse: fix duplicate symbols in static build
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2670>
2022-06-28 01:29:06 +01:00
Robert Mader
6aa0b0cae2 gstwaylandsink: Add rotate-method property
Similar to and inspired by glimagesink and gtkglsink.

Using the Wayland buffer transform API allows to offload
rotate operations to the Wayland compositor. This can have
several advantages:
 - The Wayland compositor may be able to use hardware plane
   capabilities to do the rotation.
 - In case of pre-rotated content on rotated outputs the
   rotations may equal out, potentially allowing the
   compositor to use hardware planes even if they don't
   support rotate operations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2543>
2022-06-20 18:30:56 +00:00