Commit graph

2719 commits

Author SHA1 Message Date
Sebastian Dröge
634cd87c76 gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent
https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:23 +03:00
Sebastian Dröge
c40b8a894d decklink: Sink the clock reference in the constructor
This is now needed as GstClock does not do that internally anymore,
because that broke bindings.

https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:23 +03:00
Nicolas Dufresne
4261692187 Remove plugin specific static build option
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-05-16 14:05:52 -04:00
Sebastian Dröge
7d64bb7513 decklinkvideosink: Copy min(gstreamer_stride, decklink_stride) per line
Instead of just bpp * width, which might be more than we can copy.
2017-05-15 16:38:51 +03:00
Sebastian Dröge
5dc1039937 decklinkvideo/audiosrc: Add GstReferenceTimestampMeta with the stream time to each buffer
This is basically a frame counter provided by the driver and it's
advancing at the speed of the HDMI/SDI input. Having this available on
each buffer allows to know what constant-framerate-based timestamp each
frame is corresponding to and can be used e.g. to write out files
accordingly without having the local pipeline clock timestamps used.

https://bugzilla.gnome.org/show_bug.cgi?id=779213
2017-05-12 11:42:00 +02:00
Sebastian Dröge
4df6be45f0 decklinkaudiosrc: Consistently pass stream_time and stream_duration to audio/video src
It's the same value now, pass it consistently.
2017-05-12 11:36:27 +02:00
Nirbheek Chauhan
8494f1e709 directsoundsrc: Use a GstClockID to wait instead of Sleep()
The main advantage is that our sleeps can be interrupted in case of
an src_reset(). Earlier, we would need to wait for a read to complete
before we could do a reset, which could take a long time.

https://bugzilla.gnome.org/show_bug.cgi?id=781249
2017-05-12 14:51:10 +05:30
Scott D Phillips
b2663e12e4 msdk: Declare libmfx.a as a C++ static library
This lets meson know that the overall plugin needs built with C++
linking.

https://bugzilla.gnome.org/show_bug.cgi?id=781561
2017-05-11 07:17:09 +01:00
Sebastian Dröge
28a16b5e94 decklink: Always use the video stream time for audio too
The audio packet times can be completely unrelated to the video stream
time, depending on the card. While this looks like a bug in the driver,
just always using the video stream time (which is correct) works as a
workaround for now.
2017-05-10 17:02:28 +02:00
Nirbheek Chauhan
1a8610f8f8 directsoundsrc: Use latency-time and buffer-time settings
Earlier, the plugin was ignoring those settings and blindly setting
buffer-time to 2 seconds and latency-time to 200ms, which forced all
pipelines to have a minimum latency of 200ms + sink latency.

The values of segsize and segtotal were also not derived correctly.
Now we obey these values, and you can get close to the previous
behaviour by setting buffer-time and latency-time manually. Note that
they are set in microseconds.

As a consequence, when we haven't received enough data from the
device, we now sleep for a time proportional to the data remaining.
However, Directsound is a deprecated API so it maintains its own
software ringbuffer which updates at arbitrary intervals. Hence we
might have to wait a full segsize to get the last 10% of data. To
avoid tight loops, we clamp our sleep floor at 10ms.

In my testing, this keeps the wakeups not-too-high (proportional to
the latency-time set on the source). Further improvements should be
made by fixing the WASAPI audio source plugin instead of this.
Directsound is deprecated and as the comments explain, it is
impossible to get low latency, decent quality, or good performance
from it.

Based on a patch by Sebastian Dröge <sebastian@centricular.com>

https://bugzilla.gnome.org/show_bug.cgi?id=781249
2017-05-08 16:13:20 +02:00
Nirbheek Chauhan
b63fb59a11 Revert "decklink: Fix debug logging warnings on Windows"
This reverts commit 845832263b.

The commit broke cross-mingw CI:
https://ci.gstreamer.net/job/GStreamer-master/8659/console

It seems that cross-mingw on Autotools and native-mingw on Meson
disagree about the size of HRESULT. Revert for now till I can
investigate the Meson side of things some more.
2017-05-05 18:52:24 +05:30
Nirbheek Chauhan
8865b440d9 decklink: Fix linking on MinGW
MinGW does not provide comsupp.lib, so there's no implementation of
_com_util::ConvertBSTRToString. Use a fallback implementation that
uses wcstombs() instead.

On MinGW we also truncate the name to 100 chars which should be fine.
2017-05-05 17:49:22 +05:30
Nirbheek Chauhan
3d4c428e41 decklink: Fix building on Windows
BSTR is already a pointer to a string
2017-05-05 17:49:22 +05:30
Nirbheek Chauhan
845832263b decklink: Fix debug logging warnings on Windows
HRESULT is unsigned long int, not unsigned int
2017-05-05 17:49:22 +05:30
Nirbheek Chauhan
e8e639081a meson: Fix decklink building on Windows
Needs comsuppw, and does not need libdl or pthread.
2017-05-05 17:49:21 +05:30
Josep Torra
367b4a353f qtkit: drop the qtkitvideosrc element
The QTKit framework had been deprecated for long in favour of AVFundation
framework and we already have avfvideosrc that provides the same
functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=782078
2017-05-03 13:21:42 +02:00
shakin chou
febbaaddcf amcvideodec/enc: Correctly check for no PTS on input buffers
MediaCodec gives us a presentation timestamp of 0 if it does not know
anything, but GStreamer gives us GST_CLOCK_TIME_NONE. Don't mix up these
two.

https://bugzilla.gnome.org/show_bug.cgi?id=780190
2017-04-26 13:40:28 +03:00
Nicolas Dufresne
99755badbe kmssink: Add msm to the list of drivers
This prevent having to set the driver-name explicitly when running on
Qualcomm/MSM boards.
2017-04-21 21:30:10 -04:00
Sebastian Dröge
0a4717ea20 Revert "decklinkvideo/audiosrc: Add GstReferenceTimestampMeta with the stream time to each buffer"
This reverts commit d5684d5b14.

This shouldn't have been merged before 1.12.
2017-04-19 19:08:41 +01:00
Sebastian Dröge
d5684d5b14 decklinkvideo/audiosrc: Add GstReferenceTimestampMeta with the stream time to each buffer
This is basically a frame counter provided by the driver and it's
advancing at the speed of the HDMI/SDI input. Having this available on
each buffer allows to know what constant-framerate-based timestamp each
frame is corresponding to and can be used e.g. to write out files
accordingly without having the local pipeline clock timestamps used.

https://bugzilla.gnome.org/show_bug.cgi?id=779213
2017-04-19 19:06:37 +01:00
Ole André Vadla Ravnås
cb28314013 nvenc: Stop bitstream thread in ::stop()
Otherwise we are likely to crash if EOS didn't happen yet.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:57 +01:00
Ole André Vadla Ravnås
70ac63a97c nvenc: Update to the current gstreamer-gl API
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:55 +01:00
Philipp Zabel
9ed9c14eb5 kmssink: if the plane can not scale, retry without scaling and remember
Retry the drmModeSetPlane call without scaling if the first try fails,
and remember not to scale anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=781188
2017-04-12 19:31:47 +02:00
Thibault Saunier
78022a6e0c docs: Port all docstring to gtk-doc markdown 2017-04-12 12:57:57 -03:00
Sebastian Dröge
244a80787d Revert "directsoundsrc: Correctly calculate segsize and segtotal"
This reverts commit 6d256d9908.

It was configuring the period/buffer size in a way that often causes
drop-outs or complete underruns. Needs further investigation.
2017-04-12 13:18:18 +03:00
Tim-Philipp Müller
0ded4c1356 meson: decklink: fix meson configure error on macOS
"meson encountered an error in file
sys/decklink/meson.build, line 33, column 2:
Invalid use of addition: must be str, not list"

Also remove nonsensical linker flags on windows.

https://bugzilla.gnome.org/show_bug.cgi?id=781156
2017-04-11 09:43:53 +01:00
Sebastian Dröge
6d256d9908 directsoundsrc: Correctly calculate segsize and segtotal
segsize should be based on latency-time, and must be a multiple of the
frame size. segtotal should be based on buffer-time and segsize.

This prevents errors caused by outputting buffers that are not a
multiple of the frame size, and actually makes the buffer-time and
latency-time properties do what they're supposed to do.
2017-04-06 16:15:28 +03:00
Sebastian Dröge
d53da45886 decklink: Use GstQueueArray instead of GQueue
Let's save two allocations and frees per frame.
2017-03-24 14:26:39 +02:00
Sebastian Dröge
40a2deef80 kmssink: Fix compiler warning with gcc 7
gstkmssink.c: In function ‘gst_kms_sink_get_input_buffer’:
gstkmssink.c:1102:29: error: ‘mems[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   kmsmem = (GstKMSMemory *) get_cached_kmsmem (mems[0]);
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
2017-03-22 17:38:37 +02:00
Georg Lippitsch
7ee593e493 decklinkvideosrc: Add read-only "signal" property
https://bugzilla.gnome.org/show_bug.cgi?id=780367
2017-03-22 15:17:30 +02:00
Reynaldo H. Verdejo Pinochet
b1434d1f1c dvb: camutils: drop macro disabling glib deprecation warnings
No longer needed.
2017-03-21 11:28:02 -07:00
Tim-Philipp Müller
1d34c9e0bf dvb: fix distcheck
Apparently automake automatically dists README files,
but can't handle when they disappear.
2017-03-20 19:57:32 +00:00
Tim-Philipp Müller
24ee608947 Update for 'mad' mp3 decoder removal
https://bugzilla.gnome.org/show_bug.cgi?id=776140
2017-03-20 17:15:54 +00:00
George Kiagiadakis
4757ec8860 kmssink: adjust memory offset calculation for dmabuf buffers
The data in the dmabuf fd may not start from byte 0, therefore
we need to inform DRM about this additional offset.

https://bugzilla.gnome.org/show_bug.cgi?id=779790
2017-03-14 17:07:41 +02:00
Matthew Waters
b01ae6e5e6 applemedia/iosurfacememory: Fix missing variable name change
956c4d0bde missed a variable name change.
Fix that.
2017-03-14 11:39:23 +11:00
Matthew Waters
956c4d0bde gl/format: use our own GL format enum's instead of gstvideo's
They can describe in more detail (such as component sizes) the requested format.
2017-03-13 21:10:58 +11:00
Samuel Maroy
1e77971dff shmsink: continue polling after EINTR
https://bugzilla.gnome.org/show_bug.cgi?id=779856
2017-03-10 15:51:11 -05:00
Sebastian Dröge
2bcd155a6a avfvideosrc: Use AVCaptureDeviceTypeBuiltInDuoCamera instead of DualCamera for now
The former is deprecated in 10.2 but we don't require that SDK yet.
2017-03-09 10:10:37 +02:00
Nicolas Dufresne
eb2dae8fd6 Rename plugin filesnames to match plugin names
- libgstgtksink.so -> libgstgtk.so
- libgstteletextdec.so -> libgstteletex.so
- libgstcamerabin2.so -> libgstcamerabin.so
- libgstonvif.so -> libgstrtponvif.so (meson only)
- sdp -> sdpelem (avoid clash with libgstsdp)
- gstsiren -> siren
- libgstkmssink.so -> libgstkms.so

https://bugzilla.gnome.org/show_bug.cgi?id=779344
2017-03-08 20:04:23 -05:00
Nick Kallen
82c132aa50 applemedia/gl: Fix compile issues for OSX
https://bugzilla.gnome.org/show_bug.cgi?id=778333
2017-03-08 15:23:42 +02:00
Nick Kallen
0968bad8a4 applemedia: avfvideosrc supports position, device-type, and orientation
Avfvideosrc represents an iphone camera or, on mac, a screencapture session.
The old API allowed you to select an input device by device index only. The new
API adds the ability to select the position (front or back facing) and
device-type (wide angle, telephoto, etc.). Furthermore, you can now specify
the orientation (portrait, landscape, etc.) of the videostream.

https://bugzilla.gnome.org/show_bug.cgi?id=778333
2017-03-07 13:39:19 +02:00
Nick Kallen
46bbc60d24 applemedia/gl: Update code to use ARC
All code interacting with Objective-C objects should now use Automated
Reference Counting rather than manual memory management or Garbage
Collection. Because ARC prohibits C-structs from containing
references to Objective-C objects, all such fields are now typed
'gpointer'. Setting and gettings Objective-C fields on such a
struct now uses explicit __bridge_* calls to tell ARC about
object lifetimes.

https://bugzilla.gnome.org/show_bug.cgi?id=777847
2017-03-07 13:37:07 +02:00
Nick Kallen
6e4354600d applemedia: Fix video texture cache build issue on MacOS
https://bugzilla.gnome.org/show_bug.cgi?id=779247
2017-03-04 17:35:23 +02:00
Nick Kallen
e557e93f3b applemedia: ensure all textures are released before texturecache is released
It was previously possible for videotexturecache to be finalized before all of
its textures. Finalizing outstanding textures in this circumstance leads
to a crash. This patch ensure resources are freed in the proper order.

https://bugzilla.gnome.org/show_bug.cgi?id=779247
2017-03-04 11:59:57 +02:00
Sebastian Dröge
ce4df5311b decklinkvideosink: Don't error out if displaying the preroll frame fails
This seems to happen sometimes on some hardware, and is not really
critical as long as the scheduling of the normal frames works fine.

Only post a warning message for this case.
2017-03-01 12:08:58 +02:00
Arun Raghavan
962d747c3a bluez: Chain up to basesrc query instead of override pad query function
Overriding the pad query function completely overrides all the default
query handling implemented in basesrc, including caps etc. The correct
thing to do is just override the basesrc query vfunc and then chain up
for the queries we don't handle.
2017-02-23 00:36:33 +05:30
Nick Kallen
2f676d61a7 Builds for MacOS
https://bugzilla.gnome.org/show_bug.cgi?id=778434
2017-02-14 14:50:34 +01:00
Nick Kallen
487e57f1b7 applemedia: free videotexturecache texture in gl thread
The cached texture was treated as user_data passed to GstGLBaseMemory
and freed with a GDestroyNotify function. However, this data must
be treated specially: it must be destroyed in the GL thread.

https://bugzilla.gnome.org/show_bug.cgi?id=778434
2017-02-14 12:25:55 +02:00
Sebastian Dröge
0102caf06d shm: Change example pipelines to something that actually works
Enforce exactly the same raw video format on both sides, include a
videoconvert and queue before the video sink and make the shm area a
little bit bigger so that things don't get stuck.
2017-02-13 13:32:14 +02:00
Sebastian Dröge
aca89aeeaa amcvideoenc: Encoder output is generally not properly parsed
Don't claim it is and let h264parse and other parsers do their job.

https://bugzilla.gnome.org/show_bug.cgi?id=774772
2017-02-08 00:05:47 +02:00