Commit graph

23129 commits

Author SHA1 Message Date
Matthew Waters
1894293d63 webrtcbin: an element that handles the transport aspects of webrtc connections
SDP's are generated and consumed according to the W3C PeerConnection API
available from https://www.w3.org/TR/webrtc/

The SDP is either created initially from the connected
sink pads/attached transceivers as in the case of generating an offer or
intersected with the connected sink pads/attached transceivers as in
the case for creating an answer.  In both cases, the rtp payloaded streams
sent by the peer are exposed as separate src pads.

The implementation supports trickle ICE, RTCP muxing, reduced size RTCP.

With contributions from:
Nirbheek Chauhan <nirbheek@centricular.com>
Mathieu Duponchelle <mathieu@centricular.com>
Edward Hervey <edward@centricular.com>

https://bugzilla.gnome.org/show_bug.cgi?id=792523
2018-02-02 15:02:21 +11:00
Matthew Waters
94a7bf9ede dtls: remove reliance on a default GMainContext/Loop
By removing the indirection to the main loop completely when receiving
the peer certificate. For reference, the on-decoder-key signal does not
have a redirection.
2018-02-01 23:25:18 +11:00
Omar Akkila
c365ab7e66 netsim: fix format errors for different platforms
https://bugzilla.gnome.org/show_bug.cgi?id=793073
2018-02-01 11:10:50 +00:00
Tim-Philipp Müller
4167b02050 configure: fix opengl api conditional
Fixes build of openglmixers plugin due to mismatch between
build system conditional USE_OPENGL and define in gstglconfig.h
2018-01-31 16:10:39 +00:00
Tim-Philipp Müller
b19e3d8cf3 configure: fix OpenGL API detection
And don't build gl mosaic element unconditionally.
2018-01-31 13:11:04 +00:00
Tim-Philipp Müller
bd37da2de4 autotools: fix build if OpenGL support is not available
https://bugzilla.gnome.org/show_bug.cgi?id=793039
2018-01-31 13:11:04 +00:00
Víctor Manuel Jáquez Leal
f6cb16ab8c gdpdepay: don't use allocator if it has custom alloc
gdpdepay element uses the decide_allocation to fetch the downstream
allocator. Nonetheless it is possible that allocate uses a custom
alloc function, which is not usable by gdpdepay, crashing later the
application when the allocater buffer is NULL.

This patch checks for the allocator flags and reset it if the
allocator has a custom alloc function.

https://bugzilla.gnome.org/show_bug.cgi?id=789476
2018-01-31 14:03:36 +01:00
Víctor Manuel Jáquez Leal
f04b20e59e gdpdepay: don't allocation query if caps aren't fixed
When querying downstream for allocation, and the source caps hasn't
set its caps, using ANY by default, it raises a critical message in
console:

CRITICAL **: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)' failed

This patch bails out decide_allocation() if the caps aren't fixed.

https://bugzilla.gnome.org/show_bug.cgi?id=789476
2018-01-31 14:03:36 +01:00
Nirbheek Chauhan
538ccb6093 wasapi: Correctly set ringbuffer segsize/segtotal
This will set the actual-latency-time and actual-buffer-time of the sink
and source.

We completely ignore the latency-time/buffer-time values set
on the element because WASAPI is happiest when it is reading/writing at
the default period. Improving this will likely require the use of the
IAudioClient3 interfaces which are not available in MinGW yet.

https://bugzilla.gnome.org/show_bug.cgi?id=792897
2018-01-31 14:58:21 +05:30
Nirbheek Chauhan
ec6a10ed06 wasapi: Implement a device provider for probing
Currently only does probing and does not handle messages from
endpoints/devices. In the future we want to do proper monitoring which
is well-supported in WASAPI.

https://bugzilla.gnome.org/show_bug.cgi?id=792897
2018-01-31 14:58:21 +05:30
Nirbheek Chauhan
d6d31064b4 wasapi: Implement support for >2 channels
We need to parse the WAVEFORMATEXTENSIBLE structure, figure out what
positions the channels have (if they are positional), and reorder them
as necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=792897
2018-01-31 14:58:21 +05:30
Tim-Philipp Müller
f75c7823dd meson: use -fno-strict-aliasing where supported
https://bugzilla.gnome.org/show_bug.cgi?id=769183
2018-01-30 20:35:10 +00:00
Sreerenj Balachandran
cedc7d4def codecparser: vp8: Fix range decoder init
According to the vp8 spec, the first partition (size can be derived from
the frame header) should have all compressed header information and we
implemented gst codecparser based on that. But it doesn't seem to be the
case with some of the streams (#792773) and libvpx
works fine because it uses the whole frame size (not the first partition
size) to initialize the bool decoder.

https://bugzilla.gnome.org/show_bug.cgi?id=792773
2018-01-30 11:34:58 -09:00
Nicolas Dufresne
a7c207630c kmssink: Make render rectangle property controllable
https://bugzilla.gnome.org/show_bug.cgi?id=792798
2018-01-30 10:02:14 +00:00
Vincent Penquerc'h
782fb43887 glvideomixer: fix vertex_buffer leak
We call the base class first as this will remove the pad from
the aggregator, thus stopping misc callbacks from being called,
one of which (process_textures) will recreate the vertex_buffer
if it is destroyed

https://bugzilla.gnome.org/show_bug.cgi?id=760873
2018-01-29 09:58:00 +00:00
Jan Alexander Steffens (heftig)
e9aa117200 srtp: Support libsrtp2
For libsrtp 1, add defines that translate the new namespaced identifiers
to the old unnamespaced ones. Also move the code for setting and getting
a stream's ROC into two compat functions that match libsrtp2's API.

It seems that libsrtp2 properly supports changing the ROC without having
to touch the sequence numbers afterwards, given that srtp_set_stream_roc
sets a pending_roc field, so the entire roc_changed dance should not be
needed anymore. The compat functions for libsrtp 1 just contain our
preexisting hacks, however, so it's still needed there.

libsrtp2 has no means of discovering the streams in the session, so to
create the stats structure we need to iterate over our own set of SSRCs.
For this we also need to re-add the previously removed ssrcs_set to the
encoder.

https://bugzilla.gnome.org/show_bug.cgi?id=776901
2018-01-29 09:58:11 +02:00
Tim-Philipp Müller
49d30c901d rtmpsink: don't crash if there's streamheader field in the caps
Fix regression when used in combination with new flvmux which was
ported to GstAggregator, and which sends plain video/x-flv caps
before sending full caps that include streamheaders.
2018-01-28 14:28:33 +00:00
Justin Kim
297f7e4f04 ahc: enable autofocus callback
It should be enabled to set autofocus properly, but
it seems to be commented out mistakenly from the first commit.

https://bugzilla.gnome.org/show_bug.cgi?id=790945
2018-01-26 10:13:00 +00:00
Sean DuBois
2b03bc021c aom: Add direct casts for GstAV1Enc and GstAV1Dec
https://bugzilla.gnome.org/show_bug.cgi?id=791674
2018-01-26 11:12:06 +02:00
Sean DuBois
8b27637b4a aom: Deadline was removed from AV1
https://bugzilla.gnome.org/show_bug.cgi?id=791674
2018-01-26 11:12:06 +02:00
Sean DuBois
c89f6107cd aom: Fix leak in av1dec
AOM Decoder wasn't being destroyed in stop

https://bugzilla.gnome.org/show_bug.cgi?id=791674
2018-01-26 11:12:06 +02:00
Sean DuBois
0900cbd0a2 aom: Put av1enc config debugging under gst_av1_enc_debug namespace
https://bugzilla.gnome.org/show_bug.cgi?id=791674
2018-01-26 11:12:06 +02:00
Sebastian Dröge
357a5746b0 directsoundsrc: Add missing \ in multi-line #define 2018-01-25 21:23:09 +02:00
Sebastian Dröge
b174a91a1a directsoundsrc: Add support for a DeviceProvider
https://bugzilla.gnome.org/show_bug.cgi?id=792782
2018-01-25 20:20:08 +02:00
Nirbheek Chauhan
c8c32a7200 wasapi: Fix some leaks, bugs, and compiler warnings
Also improve logging.
2018-01-25 17:57:23 +05:30
Guillaume Desmottes
a1b271d2ec h26{4,5}parse: expose chroma format and bit depth in caps
This information could be used for example to pick a decoder supporting
a specific chroma and/or bit depth, like 4:2:2 10 bits.
It can also be used to inform earlier decoder about the format it is
about to decode.

https://bugzilla.gnome.org/show_bug.cgi?id=792039
2018-01-24 11:50:54 -05:00
Tim-Philipp Müller
07c8417799 nvenc: add "gop-size" property
This also changes the default gop size from 30 to 75 frames.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:39:40 +00:00
Tim-Philipp Müller
bea0ea66be nvenc: mark properties that can be changed at runtime accordingly
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:21:48 +00:00
Ole André Vadla Ravnås
59365e3d7b nvenc: Add support for dynamic bitrate/preset reconfiguration
Useful for dynamically updating bitrate in live scenarios.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:17:58 +00:00
Ole André Vadla Ravnås
bc92b10164 nvenc: Add support for I420
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 09:30:49 +00:00
Jun Xie
3f87a9dd7f netsim: fix misleading packet delay log
packet delay time shall be calculated by ready_time minus current time

https://bugzilla.gnome.org/show_bug.cgi?id=791838
2018-01-24 00:22:06 +00:00
Mathieu Duponchelle
99f646b009 videoaggregatorpad: implement skip_buffer
Skip buffers from sources with a framerate higher than the output
framerate.

https://bugzilla.gnome.org/show_bug.cgi?id=781928
2018-01-23 20:19:38 +01:00
Tim-Philipp Müller
2a40ab6ad6 decklink: don't crash if there are no decklink devices
Fixes generic/states check.
2018-01-23 14:49:51 +00:00
Tim-Philipp Müller
9bb905620c decklink: don't limit number of devices to 16
There is no fixed limitation for the number of devices on the
decklink API side according to BlackMagic. Many PC motherboards
are able support 6 decklink cards each with up to 8 inputs so
a limit of 16 might well be too low.

https://bugzilla.gnome.org/show_bug.cgi?id=777239
2018-01-23 14:14:35 +00:00
Tim-Philipp Müller
c7e34a0b2f Update for renamed aggregator pad API
https://bugzilla.gnome.org/show_bug.cgi?id=791204
2018-01-23 09:01:00 +00:00
Tim-Philipp Müller
cfe030ad1b meosn: curl: also check for and use libssh2 if available 2018-01-22 18:55:06 +00:00
Sebastian Dröge
b691700f5e directsoundsrc: Don't dynamically load one DirectSound symbol at runtime
Just link statically to it, like for all other DirectSound symbols.
2018-01-22 15:24:56 +02:00
Nirbheek Chauhan
1450851095 wasapi: Rewrite most of the code to make it work
Both the source and the sink elements were broken in a number of ways:

* prepare() was assuming that the format was always S16LE 2ch 44.1KHz.
  We now probe the preferred format with GetMixFormat().
* Device initialization was done with the wrong buffer size
  (buffer_time is in microseconds, not nanoseconds).
* sink_write() and src_read() were just plain wrong and would never
  write or read anything useful.
* Some functions in prepare() were always returning FALSE which meant
  trying to use the elements would *always* fail.
* get_caps() and delay() were not implemented at all.

TODO: support for >2 channels
TODO: pro-audio low-latency
TODO: SPDIF and other encoded passthroughs

Three new properties are now implemented: role, mute, and device.

* 'role' designates the stream role of the initialized device, see:
   https://msdn.microsoft.com/en-us/library/windows/desktop/dd370842(v=vs.85).aspx
* 'device' is a system-wide GUIDesque string for a specific device.
* 'mute' is a sink property and simply mutes it.

On my Windows 8.1 system, the lowest latency that works is:

  wasapisrc buffer-time=20000
  wasapisink buffer-time=10000

aka, 20ms and 10ms respectively. These values are close to the lowest
possible with the IAudioClient interface. Further improvements require
porting to IAudioClient2 or IAudioClient3.

https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/low-latency-audio
2018-01-22 14:18:53 +05:30
Tim-Philipp Müller
92400a3b69 tests: camerabin: skip checks if we don't have encoders for the default format
https://bugzilla.gnome.org/show_bug.cgi?id=767863
2018-01-20 15:49:35 +00:00
Tim-Philipp Müller
e62eb34bfc tests: ipcpipeline: fix struct initialisation warnings with clang
Use init macros to avoid gst-indent making a mess of it.

https://bugzilla.gnome.org/show_bug.cgi?id=787980
2018-01-17 12:06:29 +00:00
Tim-Philipp Müller
0409d7d0fa tests: remove test that's never been ported to 1.x 2018-01-16 11:36:05 +00:00
Jun Xie
e9240762ed hlsdemux: fix memory leak while updating master playlist
new_master needs to be freed if current playlist is not a master playlist

https://bugzilla.gnome.org/show_bug.cgi?id=792146
2018-01-16 08:49:04 +01:00
Tim-Philipp Müller
944f347d00 lv2: fix inverted boolean properties
https://bugzilla.gnome.org/show_bug.cgi?id=791330
2018-01-15 20:01:06 +00:00
Edward Hervey
5d8d1d359c check: Update gitignore 2018-01-11 11:49:06 +01:00
Edward Hervey
6c2fc31012 mxfdemux: Remove useless check
Any modification of ret in that "while (ret == GST_FLOW_OK)" loop will
break (and cause it to stop the iteration).

CID #1427095
2018-01-11 11:41:33 +01:00
Edward Hervey
c755ad5032 kateenc: Refactoring for readability and leak fixing
Instead of a massive if/else/if/else/if/else/...:
* Use a common cleanup path for allocated items just before leaving
  the function (which will be free-d only if we're not dealing with
  a delayed SPU).
* "goto" that cleanup path wherever needed

CID #1427096
CID #1427114
2018-01-11 11:38:25 +01:00
Víctor Manuel Jáquez Leal
568c552ac0 msdk: change plugin's description
There are not only encoders nowadays, there are decoders too and a
postprocessor in the future.
2018-01-11 11:29:38 +01:00
Sreerenj Balachandran
b6c26919df msdk: init the debug category for mpeg2dec
https://bugzilla.gnome.org/show_bug.cgi?id=792260
2018-01-10 18:24:07 -09:00
Sreerenj Balachandran
7536d12095 msdk: Add mpeg2 decoder
https://bugzilla.gnome.org/show_bug.cgi?id=792260
2018-01-10 10:40:24 -09:00
Olivier Crête
83380de808 srt: The pkgconfig is "srt", not "libsrt"
Also, always use the pkgconfig file instead of falling back
2018-01-09 18:11:52 -05:00