Commit graph

118373 commits

Author SHA1 Message Date
Seungha Yang
7c4cae61b9 decklink2src: Implement soft restart
Instead of stopping stream, do pause, flush, and reset time mapping.
2023-12-14 22:45:09 +09:00
Seungha Yang
e5ad448f47 decklink2: Validate video buffer size 2023-12-14 19:27:50 +09:00
Seungha Yang
26abbb73bc decklink2src: Release mutex while stopping
Stop API will wait for callback function thread which takes mutex too.
Release the mutex while stopping
2023-12-07 18:57:55 +09:00
Seungha Yang
b521150377 decklink2src: Fix mutex usage 2023-12-07 18:39:56 +09:00
Seungha Yang
c0c601fe98 decklink2sink: Add desync-threshold property
Similar to decklink2src, adding a property to restart stream if
desync is detected
2023-12-04 23:49:44 +09:00
Seungha Yang
5af453743c decklink2src: Validate frame resolution and formats
... and fix some deadlocks
2023-11-09 22:14:16 +09:00
Seungha Yang
2e5226a3f9 decklink2output: Update audio drop logic
Upstream should provide a/v aligned stream. Remove append/drop audio
on overrun logic. And duplicate frame up to 2 frames on underrun
2023-11-04 00:25:28 +09:00
Seungha Yang
7e382d53c6 decklink2combiner: Don't aggregate multiple audio buffers
Instead, upstream should provide perfect stream
2023-11-04 00:25:28 +09:00
Seungha Yang
8f1855118f decklink2sink: Add buffered audio and video time to ouptput-stats 2023-11-04 00:25:28 +09:00
Seungha Yang
e6fecabe8e decklink2sink: Add output-stats property 2023-11-04 00:25:28 +09:00
Seungha Yang
96c3e5efee decklink2output: Calculate audio sample timestamp
Calculate audio sample timestamp in samplerate unit (i.e., total number
of audio samples) and pass it to driver, instead of zero timestamp/scale
2023-11-04 00:25:28 +09:00
Seungha Yang
0c8257140a decklink2output: Duplicate more frames on underrun
... and log actual render time with scheduled time
2023-11-04 00:25:28 +09:00
Seungha Yang
4c727b6860 decklink2sink: Restart only when frames are dropped 2023-11-04 00:25:28 +09:00
Seungha Yang
539d8f2c1d decklink2: Fix output audio prepend and add more logs 2023-11-04 00:25:28 +09:00
Seungha Yang
37c760e8f9 decklink2sink: Don't hold lock while stopping
Driver may wait for callback thread to join() but we takes the same
lock there
2023-11-04 00:25:27 +09:00
Seungha Yang
ff34a9ee42 decklink2src: Update for signal state logging 2023-11-04 00:25:27 +09:00
Seungha Yang
6994f20b75 decklink2src: Remove no-signal-threshold property
instead, do auto restart on no-signal to signal state transition
2023-11-04 00:25:27 +09:00
Seungha Yang
b3a53591da decklink2src: Add "desync-threshold" and "no-signal-threshold" properties
Once large A/V desync or no-signal frames are detected, src will
automatically restart streaming
2023-11-04 00:25:27 +09:00
Seungha Yang
cb56e2c8d7 decklink2sink: Loop ScheduleAudioSamples() until all data is written
SDK 12.4.2 doc says if "sampleFramesWritten" is null, it's blocking
operation finished once all data is written to driver. But the behavior
is not mentioned in old SDK docs.
2023-11-04 00:25:27 +09:00
Seungha Yang
c1d41ba5de decklink2sink: Add restart signal action 2023-11-04 00:25:27 +09:00
Seungha Yang
5125f68b12 decklink2sink: Add auto-restart property
Support automatic restart when frame dropping happens
2023-11-04 00:25:27 +09:00
Seungha Yang
ce71612e83 decklink2src: Use GstQueueArray instead of std::queue
Avoid heap allocation in capture thread
2023-11-04 00:25:27 +09:00
Seungha Yang
8696f33e38 decklink2: Update for CFStringRef to std::string converision 2023-11-04 00:25:27 +09:00
Seungha Yang
5a40935222 decklink2src: Add "restart" signal action
Support restart streaming via signal action
2023-11-04 00:25:27 +09:00
Seungha Yang
96365cd8de decklink2src: Add "skip-first-time" property
... so that the element can skip first N frames as requested.
2023-11-04 00:25:27 +09:00
Seungha Yang
f45c572321 decklink2sink: Fill audio silence when video is duplicated 2023-11-04 00:25:27 +09:00
Seungha Yang
cde52f601e decklink2srcbin: Configure small queue between src and demux 2023-11-04 00:25:27 +09:00
Seungha Yang
f75e5343fc Revert "decklink2: Rework audio resync with small updates"
This reverts commit dfda0409d9507ced332b69f750382f4efc10af44.
2023-11-04 00:25:27 +09:00
Seungha Yang
5c5076d113 decklink2: Rework audio resync with small updates 2023-11-04 00:25:27 +09:00
Seungha Yang
1a02d4ad19 decklink2: Add new Blackmagic DeckLink plugin
Key differences from the old decklink plugin:
* Single source/sink element instead of separate audio/video source/sink
* Supports old driver (version 10.11 or newer)
* Windows DeckLink SDK build is integrated into plugin build
2023-11-04 00:25:23 +09:00
Seungha Yang
6c7fe649ab decklink2: Remove fprintf from SDK 2023-11-04 00:24:14 +09:00
Seungha Yang
98b0406589 decklink2: Import SDK v12.4.2 files 2023-11-04 00:24:14 +09:00
Seungha Yang
34d221dad5 wasapi2: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
8009f5275a mediafoundation: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
c3cef6e923 d3d12: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
bf05cfea45 d3d11: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
5e147ed3b8 meson: Fix MSVC build with GST_DISABLE_GST_DEBUG
MSVC does not understand Wno-unused

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
He Junyan
e7479a8c94 libde265dec: Only decode the main profile
The src caps of the libde265 is now fixed to I420, and so if the
stream is other format, such as 4:4:4 or 10 bits format, the pipeline
will crash because the dowstream element accesses the video buffer as
I420 format.
We now restrain the input caps to "main" profile, which only contains
4:2:0 8 bits stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5573>
2023-11-03 12:41:59 +00:00
Philippe Normand
8f18fde21a ges-uri-asset: Fix GESDiscovererManager leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5552>
2023-11-02 18:29:27 +00:00
Sebastian Dröge
2dd65d8715 mpg123audiodec: Update rank from MARGINAL to PRIMARY
This is our primary MP3 decoder after mad got removed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5590>
2023-11-02 14:17:06 +00:00
Sebastian Dröge
ffa30637c4 ptp: Use SO_BINDTOIFINDEX / SO_BINDTODEVICE on Linux
This makes sure we really really really only get packets from the
desired interface as passing a device to IP_ADD_MEMBERSHIP apparently
does not have this effect alone.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5584>
2023-11-02 11:42:44 +00:00
Fabian Orccon
f6ffe34ad5 gst-inspect: Do not check for element clock
Clock is only set at GST_PLAYING state, not the case for gst-inspect

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5570>
2023-11-02 10:12:31 +00:00
Sebastian Dröge
d6adaccf6d ptp: Check once a second for timeouts
While the minimum timeout duration is 5s, checking only every 5s means
that we would notice this 4.9s too late in the worst case.

Checking once a second reduces this considerably while keeping the
number of wakeups still low.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
9ba8107ec6 ptp: Only warn if the clock id and interface of a timed out matches the current one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
bd985ea608 ptp: Only time out SYNCs if we're actually waiting for a FOLLOW_UP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
c7421c0f16 ptp: Downgrade clocks that don't send FOLLOW_UPs / DELAY_RESPs
This allows to select a different clock if there is one that is
for the same grandmaster clock and has fewer timeouts.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
ea7861a757 ptp: Don't switch domain's master clock if it is equivalent to the previous one
Otherwise it can happen that we regularly switch back and forth between
clocks under certain circumstances for no good reason.

Also remove redundant comparison when comparing the steps removed between two
clocks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Kalev Lember
cfa1d036a1 openh264: Fail gracefully if openh264 encoder/decoder creation fails
This can happen with the dummy "noopenh264" library that the freedesktop
flatpak runtime ships, and Fedora is planning on shipping as well. In
both cases the dummy implementation gets replaced with the actual
openh264 library that's downloaded directly from Cisco, but just to be
on safe side, this patch makes it careful to check the return values to
avoid crashing if the underlying library hasn't been swapped out yet.

The patch is taken from freedesktop-sdk and was originally written by
Valentin David <valentin.david@codethink.co.uk>.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5581>
2023-11-01 16:31:11 +00:00
Seungha Yang
033f98ad86 d3d11: Set MaxAnisotropy value for the best quality
... and use anisotropic filter without comparison, which is actually
intended one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00
Seungha Yang
0e9fdabb1b d3d11converter: Simplify private struct ctor
Initialize transform matrix using memcpy

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00