Commit graph

3500 commits

Author SHA1 Message Date
Nirbheek Chauhan
a163dff91d decklink: Fix building with MSYS2's MinGW
Reported and tested by Philippe Renon.

https://bugzilla.gnome.org/show_bug.cgi?id=784943
2017-07-20 19:18:28 +05:30
Alessandro Decina
6e3f493a96 meson: fix potentially undefined shm_deps variable 2017-07-20 18:52:19 +10:00
Nirbheek Chauhan
ca8c63080f decklink: Fix format specifier warnings in logging v2
HRESULT is unsigned long on Windows, but the Decklink headers define
it to 'int' on Linux. Confusingly, the defines that talk about the
possible return values for it use long constants. The easy fix would
be to change the linux/LinuxCOM.h header, but that's copied from the
decklink SDK.

Change the logging to always upcast to unsigned long while printing
HRESULT for consistency across platforms.
2017-07-19 04:19:34 +05:30
Nirbheek Chauhan
3fd4249a1d decklink: Fix CI failure due to missing WINAPI definition
WINAPI is for the windows calling convention to use, and should expand
to nothing on Linux.

https://build.gnome.org/continuous/buildmaster/builds/2017/07/18/76/build/log-gst-plugins-bad.txt
2017-07-19 04:14:13 +05:30
Nirbheek Chauhan
2fac6fa6a6 decklink: Fix format specifier warnings in logging
gstdecklinkvideosrc.cpp:425:7: warning: format '%x' expects argument of type 'unsigned int', but argument 8 has type 'HRESULT {aka long int}' [-Wformat]

[and so on]
2017-07-19 02:27:48 +05:30
Nirbheek Chauhan
0084bfccc9 decklink: Fix build on mingw32 by adding missing WINAPI
gstdecklinkaudiosink.cpp:155:19: error: conflicting type attributes specified for 'virtual HRESULT GStreamerAudioOutputCallback::QueryInterface(const IID&, void**)'
In file included from /var/lib/jenkins/workspace/cerbero-cross-mingw32/workdir/mingw/w32/bin/../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw32/include/objbase.h:153:0,
                 from /var/lib/jenkins/workspace/cerbero-cross-mingw32/workdir/mingw/w32/bin/../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw32/include/ole2.h:16,
                 from /var/lib/jenkins/workspace/cerbero-cross-mingw32/workdir/mingw/w32/bin/../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw32/include/windows.h:94,
                 from /var/lib/jenkins/workspace/cerbero-cross-mingw32/workdir/mingw/w32/bin/../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw32/include/rpc.h:16,
                 from win/DeckLinkAPI.h:27,
                 from gstdecklink.h:35,
                 from gstdecklinkaudiosink.h:27,
                 from gstdecklinkaudiosink.cpp:25:
/var/lib/jenkins/workspace/cerbero-cross-mingw32/workdir/mingw/w32/bin/../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw32/include/unknwn.h:67:25: error:   overriding 'virtual HRESULT IUnknown::QueryInterface(const IID&, void**)'

(and many more)

https://ci.gstreamer.net/job/cerbero-cross-mingw32/6407/console
2017-07-19 02:27:29 +05:30
Reynaldo H. Verdejo Pinochet
43335d31c6 dvb: src: consolidate tuning stats gathering
Additionally: drop unneeded fe_fd variable.
2017-07-14 14:16:46 -07:00
Nirbheek Chauhan
528ae2c15d decklink: Add autotools support on Windows
Also add a missing windows file to EXTRA_DIST

https://bugzilla.gnome.org/show_bug.cgi?id=784943
2017-07-14 17:21:13 +05:30
Georg Lippitsch
f0c7fbb371 decklinkvideosrc: Add custom memory allocator
The default memory allocator of the decklink library allocates
a fixed pool of buffers, and the number of buffers is unknown.
This makes it impossible do useful queuing downstream. The new
memory allocator can create an unlimited number of buffers,
giving all queuing features one would expect from a live source.

https://bugzilla.gnome.org/show_bug.cgi?id=782556
2017-07-11 14:26:31 +03:00
Philippe Renon
db36718ee4 directsoundsrc: Properly pass pLockedBuffer by reference when calling IDirectSoundCaptureBuffer_Lock
https://bugzilla.gnome.org/show_bug.cgi?id=784755
2017-07-11 09:12:48 +03:00
Víctor Manuel Jáquez Leal
c538942b0d kmssink: initialize variable
Otherwise clang complains:

gstkmssink.c:1192:7: warning: variable 'buf' is used uninitialized
whenever 'if' condition is true [-Wsometimes-uninitialized]
2017-07-10 13:32:49 +02:00
Nicolas Dufresne
0a0bc8ab94 kmssink: Track cached kmsmem and clear them on drain
In this patch we keep track of the cached kmsmem in a way
that we can clear the cache during the drain process. This
release the framebuffer before waiting for the next vblank,
hence add support for DRM driver (like Intel one) that release
the associated DMABuf reference asynchronously.

https://bugzilla.gnome.org/show_bug.cgi?id=782774
2017-07-07 14:36:38 -04:00
Nicolas Dufresne
98b91d09c2 kmssink: Move kmsmem cache code higher
This will be needed as this API will be used elsewhere to clear
the cache.

https://bugzilla.gnome.org/show_bug.cgi?id=782774
2017-07-07 14:36:38 -04:00
Nicolas Dufresne
b8c5a4c9ed kmssink: drop last rendered buffer on ALLOCATION and DRAIN queries
kmssink keeps a reference on the last rendered buffer. If this buffer
refers to an upstream buffer, it should be should be released on DRAIN
and ALLOCATION queries so all upstream buffers can be returned to the
pool if needed. As the buffer may be used for scanout, we copy this
buffer into a dumb buffer prior to let it go.

Based on patch from Guillaume Desmottes <guillaume.desmottes@collabora.com>

https://bugzilla.gnome.org/show_bug.cgi?id=782774
2017-07-07 14:36:38 -04:00
Nicolas Dufresne
cfadd5a936 kmssink: Don't leak GEM primed from DMABuf
This otherwise breaks DMABuf reclaiming. This is not visible from
userspace, but inside the kernel, the DRM driver will hold a ref to the
DMABuf object. With a V4L2 driver allocating those DMABuf, it then
prevent changing the resolution and re-allocation new buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=782774
2017-07-07 14:36:38 -04:00
Nicolas Dufresne
6e3fe4eaab kmssink: Factor out copying to dump buffer
This will be used to copy any upstream memory in order to return it on
resolution change, allocation query or drain query.

https://bugzilla.gnome.org/show_bug.cgi?id=782774
2017-07-07 14:36:38 -04:00
Tim-Philipp Müller
c29843dc94 meson: msdk: use python3 from python3 module 2017-07-07 12:28:14 +01:00
Reynaldo H. Verdejo Pinochet
2d511343cb dvb: src: use correct unit in tuning-timeout prop description
Milliseconds was wrong and made use of this timeout quite
confusing. The code uses the value as microsenconds so
any meaningful number was off by orders of magnitude.
2017-06-28 16:40:50 -07:00
Per-Erik Brodin
3223d605bf nvdec: Use qdata on memory instead of buffer meta
Using a meta can be problematic since the memory contained in the buffer
can be transferred to a new buffer in which case the meta would be lost.

https://bugzilla.gnome.org/show_bug.cgi?id=784235
2017-06-28 10:15:52 +03:00
Per-Erik Brodin
ab9d87f168 nvdec: New plugin for NVIDIA hardware video decode
https://bugzilla.gnome.org/show_bug.cgi?id=781537
2017-06-27 08:59:59 +03:00
Nicolas Dufresne
eab6cd8d6d meson: Enable shm unit test 2017-06-21 15:15:37 -04:00
Nicolas Dufresne
af338de2b8 meson: Enable building shm plugin 2017-06-21 13:45:04 -04:00
Nicolas Dufresne
809d313493 shmpipe: Should not use glib type without ifdef
The shmpipe should build without GLIB.
2017-06-21 13:42:31 -04:00
Reynaldo H. Verdejo Pinochet
b09b17365d dvb: src: fix use of wrong array index for tune signal
Erroneous value made "TUNE" overwrite "TUNNING_FAIL" ....
2017-06-16 13:57:49 -07:00
Reynaldo H. Verdejo Pinochet
5ad88a0352 dvb: src: issue warning on failed delsys-vs-parameter issues
Aids in understanding misses with the delsys auto-detection logic
2017-06-16 13:56:40 -07:00
Scott D Phillips
dcd9032d95 msdk: enc: set pts and dts, fix inverted sync_point flag
Set the pts and dts on the frame that we receive from the msdk.
Also fix the inverted logic in setting sync points, previously we
were marking all frames as sync points except IDRs.

https://bugzilla.gnome.org/show_bug.cgi?id=782801
2017-06-07 19:23:28 +03:00
Sebastian Dröge
f0b1b97b25 decklink: Make timestamp reference specifier driver specific 2017-06-07 17:50:09 +03:00
Guillaume Desmottes
d373c4478b kmssink: Add xilinx_drm to the list of drivers
This prevent having to set the driver-name explicitly when running on
Zynq UltraScale+ boards.

https://bugzilla.gnome.org/show_bug.cgi?id=783188
2017-06-05 12:56:03 +02:00
Jan Schmidt
47abc9a09c uvch264src: Apply timestamps to outgoing aux buffers
When extracting an aux buffer from an MJPG carrier, at
*least* put the original timestamp on it, even if we
fail to apply any other timestamp (which we always do
at the moment, because the timestamp calculating code
was never finished). Apply a DTS using the camera
supplied delay value as well, assuming that there's
no re-ordering going on (there isn't in the C920,
which is really the only extant camera doing this
stuff) and a warning if that turns out not to be true.
2017-05-18 17:49:46 +02:00
Sebastian Dröge
732012a78e amcvideodec: Unref downstream caps after usage
https://bugzilla.gnome.org/show_bug.cgi?id=782771
2017-05-18 14:34:46 +03:00
Tim-Philipp Müller
80d66dfec8 Fix up package name and origin in some plugins 2017-05-18 10:58:20 +01:00
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
Sebastian Dröge
7817f85759 amcvideoenc: Set timestamps on header buffers too
https://bugzilla.gnome.org/show_bug.cgi?id=774772
2017-02-08 00:05:47 +02:00
Sebastian Dröge
c27091d67f amcvideoenc: Encoded H264 is generally not AU aligned
Claiming that it is, can cause h264parse to skip some parsing steps and
the output stays unaligned.

https://bugzilla.gnome.org/show_bug.cgi?id=774772
2017-02-08 00:05:47 +02:00
Sebastian Dröge
2ab19144be decklinkvideosink: Show video frames synchronously in PAUSED
Otherwise we will only show the preroll frame once PLAYING is reached,
which is rather suboptimal for e.g. seeking in PAUSED.
2017-02-01 17:11:37 +02:00
Sebastian Dröge
8d723c5fe1 decklinkvideosink: Do nothing if set_caps() is called with basically the same caps again
and error out here already otherwise. We currently don't support
reconfiguration here and it can't happen really either unless the auto
mode is selected.
2017-02-01 16:45:53 +02:00
Vivia Nikolaidou
21a9a89851 decklinkaudiosrc: Fix get_caps returning EMPTY
If get_caps is called before negotiation, channels_found will be 0 and
therefore won't intersect with the template caps.

https://bugzilla.gnome.org/show_bug.cgi?id=778028
2017-02-01 15:17:33 +02:00
Sebastian Dröge
dd4f14fd68 decklink: Add to the meson Windows build 2017-01-31 14:56:34 +02:00
Sebastian Dröge
4cdd234add decklink: Fix indentation 2017-01-31 14:56:34 +02:00
Sebastian Dröge
861cb49895 decklink: Fix compilation on Windows by properly using COM strings there 2017-01-31 14:56:34 +02:00
Axel Menzel
f784fda162 decklink: Fix compilation with MSVC 2017-01-31 14:56:34 +02:00
Sebastian Dröge
97be9446f5 decklink: Include stdint.h for int32_t, etc as needed by the Decklink headers 2017-01-31 14:56:34 +02:00
Sebastian Dröge
858e7b28d3 decklink: Add "extern C" forward declaration for CreateDeckLinkIteratorInstance() 2017-01-31 14:56:34 +02:00
Axel Menzel
dcacb99aaf decklink: Update Windows SDK to a newer version 2017-01-31 14:56:34 +02:00
Sebastian Dröge
01c60e664d applemedia: Fix some compiler warnings on iOS 2017-01-27 18:11:15 +02:00
Sebastian Dröge
81b20f15fc decklinkaudiosrc: Fix compilation on OSX
15:18:47 gstdecklinkaudiosrc.cpp:745:45: error: cannot initialize a parameter of type 'int64_t *' (aka 'long long *') with an rvalue of type 'gint64 *' (aka 'long *')
15:18:47           (BMDDeckLinkMaximumAudioChannels, &self->channels_found);
15:18:47                                             ^~~~~~~~~~~~~~~~~~~~~
15:18:47 ./linux/DeckLinkAPI.h:970:87: note: passing argument to parameter 'value' here
15:18:47     virtual HRESULT GetInt (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ int64_t *value) = 0;
15:18:47                                                                                       ^
2017-01-27 17:24:20 +02:00
Vivia Nikolaidou
f23277e55d decklinkaudiosrc: Option to use max channels supported by device
Query the device for the maximum number of channels supported and have
an option to use that. Default is still 2.

https://bugzilla.gnome.org/show_bug.cgi?id=777458
2017-01-26 16:18:57 +02:00
Sebastian Dröge
926c9a243d applemedia: Fail cleanly instead of crashing if obtaining a GL display failed
https://bugzilla.gnome.org/show_bug.cgi?id=777742
2017-01-26 15:35:53 +02:00
Sebastian Dröge
d6b75e5233 decklink: Fix compiler warning with clang
gstdecklink.cpp:821:11: warning: variable 'dtc' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      if (m_input->videosrc) {
          ^~~~~~~~~~~~~~~~~
gstdecklink.cpp:837:41: note: uninitialized use occurs here
          stream_time, stream_duration, dtc, no_signal);
                                        ^~~
gstdecklink.cpp:821:7: note: remove the 'if' if its condition is always true
      if (m_input->videosrc) {
      ^~~~~~~~~~~~~~~~~~~~~~~
gstdecklink.cpp:810:29: note: initialize the variable 'dtc' to silence this warning
      IDeckLinkTimecode *dtc;
                            ^
                             = NULL
2017-01-25 20:48:58 +02:00
Scott D Phillips
732a157cb7 msdk: Propagate GstFlowReturn values
In some places a GST_FLOW_FLUSHING result was return as a FALSE
gboolean and then returned from a parent function as
GST_FLOW_ERROR. This prevented seeking from working.

https://bugzilla.gnome.org/show_bug.cgi?id=776360
2017-01-20 11:11:50 -08:00
Edward Hervey
e99e69843a androidmedia: Use proper instance name 2017-01-13 14:46:36 +01:00
Matthew Waters
ed03fd6d3f amcvideodec: fix build error from change in libgstgl
gstamcvideodec.c: In function 'gst_amc_video_dec_src_query':
gstamcvideodec.c:2412:55: error: 'self' undeclared (first use in this function)
       if (gst_gl_handle_context_query ((GstElement *) self, query,
2017-01-13 21:17:33 +11:00
Matthew Waters
03b539bdfc gl: update sys dependants for function removals
4315a4b54d forgot to change the androidmedia/videotoolbox/caopengllayer
sources as required.
2017-01-13 13:01:28 +11:00
Vivia Nikolaidou
3cb43f35b8 decklinkvideosrc: Do not append a zero timecode if none is found on the source
If the source doesn't give us timecode information, do not append a zero
timecode to the frames.

https://bugzilla.gnome.org/show_bug.cgi?id=776900
2017-01-09 18:37:50 +02:00
Tim-Philipp Müller
aceb64a21c meson: decklink: fix plugin filename 2017-01-05 20:45:15 +00:00
Tim-Philipp Müller
3ecf1d8fd1 meson: build decklink plugin 2017-01-05 20:34:14 +00:00
Sebastian Dröge
9988ad9c42 androidmedia: Add support for Opus in the decoder 2017-01-05 15:05:42 +02:00
Sebastian Dröge
8b46e1b95a androidmedia: Silently skip COLOR_FormatAndroidOpaque when converting to caps
This is special and handled in the decoder when doing rendering to a
surface. Printing a warning for this is just unnecessary noise
2017-01-05 15:05:42 +02:00
Sebastian Dröge
5619690ae1 androidmedia: Add support for VP9 2017-01-04 20:59:39 +02:00
Sebastian Dröge
eca6c35601 androidmedia: Actively request the Java VM from the application
This is more consistent with how we already request the application
class loader and other application resources elsewhere.
2017-01-03 18:53:39 +02:00
Sebastian Dröge
e31714691a decklink: Fix indentation 2017-01-03 17:31:03 +02:00
Sebastian Dröge
e8e531ee12 decklinkaudiosrc: Add support for 8/16 channels via property
These are unpositioned channel layouts.
2017-01-03 17:30:07 +02:00
Garima Gaur
81b0a14d69 Fix some caps leaks in pad template creation code
gst_pad_template_new() does not take ownership of
the caps passed to it, so we need to unref the caps.

https://bugzilla.gnome.org/show_bug.cgi?id=776790
https://bugzilla.gnome.org/show_bug.cgi?id=776787
2017-01-03 10:02:58 +00:00
Arun Raghavan
b70ef1de49 uvch264src: Add meson build support 2017-01-02 19:58:06 +05:30
Arun Raghavan
4f282f6068 uvch264src: Fix wrong argument order to force-key-unit event
CID 1373421
2017-01-02 19:58:06 +05:30
Ursula Maplehurst
d741c9ecc3 androidmedia: some files are missing in the release tarball
https://bugzilla.gnome.org/show_bug.cgi?id=776591
2016-12-30 07:37:23 +01:00
Reynaldo H. Verdejo Pinochet
3e519937a1 dvb: move adapter number set-up by way of environment to dvbsrc
This logic did not belong to the channel configuration
parser (only used by dvbbasebin) but to dvbsrc, which
is the element directly using this value and honoring
the "adapter" property.

Allows previously non-working cases like this to work:

GST_DVB_ADAPTER=1 gst-launch-1.0 dvbsrc delsys=11 modulation=7 frequency=689000000 ! fakesink
2016-12-22 16:39:24 -08:00
Reynaldo H. Verdejo Pinochet
61b7b1856e dvb: parsechannels: replace missleadign error message
Possible failure cases also include not finding the
requested channel.
2016-12-22 13:42:59 -08:00
Reynaldo H. Verdejo Pinochet
6c0d9ecc35 dvbsrc: add DTV_STREAM_ID to the >= v8 (minor) group
Drop redundant comment while at it.
2016-12-22 13:06:21 -08:00
Sebastian Dröge
9b5de05399 Remove various unported plugins
If they were not ported after 4+ years it seems unlikely that anybody is
ever going to need them again. They're still in the GIT history if
needed.

https://bugzilla.gnome.org/show_bug.cgi?id=774530
2016-12-21 11:17:11 +02:00
Garima Gaur
0fdd4e2539 gst: Fix memory leaks in usage of gst_element_get_request_pad() API
The return value has to be unreffed at some point.

https://bugzilla.gnome.org/show_bug.cgi?id=776334
2016-12-21 10:28:12 +02:00
Sebastian Dröge
3357ddb0e1 amcaudiodec: Set "is-adts" to 1 for ADTS AAC
Otherwise it fails to decode.

https://bugzilla.gnome.org/show_bug.cgi?id=740101
2016-12-15 14:09:25 +02:00
Garima Gaur
9be02ccb2a sys: Fix caps memory leak from pad template creation
https://bugzilla.gnome.org/show_bug.cgi?id=776076
2016-12-14 10:21:39 +02:00
Sebastian Dröge
5c99f9cf37 gst: Don't declare variables inside the for loop header
This is a C99 feature.
2016-12-13 22:39:01 +02:00
Scott D Phillips
fbf7e905f0 msdk: add mjpeg decoder
https://bugzilla.gnome.org/show_bug.cgi?id=774793
2016-12-13 00:06:42 +01:00
Scott D Phillips
1a4db8846f msdk: add mjpeg encoder
https://bugzilla.gnome.org/show_bug.cgi?id=774793
2016-12-13 00:06:42 +01:00
Scott D Phillips
1f6903bf3e msdk: Add H.265 decoder
https://bugzilla.gnome.org/show_bug.cgi?id=775726
2016-12-12 23:48:46 +01:00
Scott D Phillips
83774c3eb9 msdk: Add H.264 decoder
The decoder only supports system memory output presently.

https://bugzilla.gnome.org/show_bug.cgi?id=774587
2016-12-12 23:16:11 +01:00
Reynaldo H. Verdejo Pinochet
1172b4df5a dvbsrc: fix unconditional use of FEC 2/5
It is not defined for < v5 minor 7
2016-12-08 12:16:28 -08:00
Reynaldo H. Verdejo Pinochet
9d94b15310 dvbsrc: add delivery system to missing modulation check message
A tuning operation can spawn multiple checks. Being
able to differentiate between them makes debugging
easier.
2016-12-08 12:13:48 -08:00
Reynaldo H. Verdejo Pinochet
a8d3f4d785 dvb/parsechannels: drop trailing whitespace 2016-12-08 11:30:42 -08:00
Reynaldo H. Verdejo Pinochet
b00cdd944b dvbsrc: drop needless wrapper around DVB API's dvb_diseqc_master_cmd
Its only purpose was to hold a wait time that was always 0
2016-12-05 23:38:53 -08:00
Reynaldo H. Verdejo Pinochet
ff9cc21933 dvbsrc: drop supperfluous wait in diseqc_send_msg()
It is always zero.
2016-12-05 23:18:38 -08:00
Reynaldo H. Verdejo Pinochet
1dbbd4c91e dvbsrc: fix unconditional use of SYS_DVBC_ANNEX_C
It is not defined for < v5 minor 6
2016-12-05 16:18:54 -08:00
Reynaldo H. Verdejo Pinochet
43aa0462f4 dvbsrc: fix value for DVB-C annex B field in adapter structure 2016-12-05 16:18:05 -08:00
Víctor Manuel Jáquez Leal
4b3baab40a kmssink: post error message if start() fails
It is expected to post an error message in the bus if the device cannot
be started.
2016-11-30 20:13:55 +01:00
Michael Tretter
649364b923 kmssink: configure display mode during set_caps
Configure the display mode when setting the negotiated caps instead of
during showing the first frame.

A framebuffer is required to set the mode. Allocate a buffer object
according to the negotiated caps and use it to set the mode. This buffer
object cannot be freed until another page flip happened on the crtc
(i.e., until the first frame is rendered).

https://bugzilla.gnome.org/show_bug.cgi?id=773473

Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
2016-11-30 20:13:55 +01:00
Michael Tretter
dff77fd15f kmssink: add parameter force-modesetting
The force-modesetting parameter forces the kmssink to ignore already
configured display modes, to configure the display mode itself and use
the base plane for output.

https://bugzilla.gnome.org/show_bug.cgi?id=773473
2016-11-30 20:13:55 +01:00
Michael Tretter
3d0c5dd58e kmssink: allow only supported resolutions
If the input buffers have a different size than the display, the frames
would have to be scaled or positioned on the display. The kmssink cannot
decide which behaviour would be appropriate for which use case.

In order to avoid scaling or positioning of the input stream, allow only
the supported connector resolutions in the sink caps.

https://bugzilla.gnome.org/show_bug.cgi?id=773473

Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
2016-11-30 20:13:55 +01:00
Michael Tretter
ca96cc6083 kmssink: set mode based on framebuffer configuration
Displays usually support multiple modes. Therefore, the kmssink should
not only support the preferred mode, but any mode that is supported by
the display.

https://bugzilla.gnome.org/show_bug.cgi?id=773473
2016-11-30 20:13:55 +01:00
Michael Tretter
f52baadd1e kmssink: add mode setting and base plane rendering
The kmssink assumed that the mode was already set by another application
and used an overlay plane for displaying the frames.

Use the preferred mode of the monitor and render to the base plane if
the crtc does not have a valid mode.

https://bugzilla.gnome.org/show_bug.cgi?id=773473

Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
2016-11-30 20:13:55 +01:00
Sebastian Dröge
5725bad218 decklink: Fix compiler warning
gstdecklink.cpp: In member function ‘virtual HRESULT GStreamerDecklinkInputCallback::VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*)’:
gstdecklink.cpp:766:34: error: ‘base_time’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         capture_time -= base_time;
                                  ^
2016-11-29 15:35:09 +02:00
Sebastian Dröge
fdf1a57953 decklink: Correctly set top-field-first/bottom-field-first
First of all, all the HD and UHD modes should be top-field-first, as
also returned by the Decklink mode iterator API.

Then we should include the caps field "field-order" in the caps of the
source (not the sink due to negotiation problems with optional fields).

And finally we should set the TFF flag on interlaced buffers that are
top-field-first.
2016-11-28 17:19:26 +02:00
Sebastian Dröge
aec46143bb decklinksrc: Add property to drop frames that are marked as having no input signal
https://bugzilla.gnome.org/show_bug.cgi?id=774850
2016-11-28 14:27:51 +02:00
Sebastian Dröge
331b2af050 decklinksrc: Add property to skip the first N seconds of capture
On some hardware the first few frames are bogus and not very useful.
Their timestamps are off, they have no timecodes, or there are spurious
black frames / no-signal frames. After a few frames this stabilizes
though.

https://bugzilla.gnome.org/show_bug.cgi?id=774850
2016-11-28 14:27:51 +02:00
Sebastian Dröge
cf224a9990 decklinksrc: Set GAP flag on buffers that are captured without signal
https://bugzilla.gnome.org/show_bug.cgi?id=774850
2016-11-28 14:27:51 +02:00
Sebastian Dröge
09dd64bb4f decklinksrc: Keep track of a window of capture/stream time mappings and calculate relationship
Based on this we calculate the actual capture time, which should get us
rid of any capturing jitter by averaging it out.

Also add a output-stream-time property which forces the elements to
output the stream time directly instead of doing any conversion to the
pipeline clock. Use with care.

https://bugzilla.gnome.org/show_bug.cgi?id=774850
2016-11-28 14:27:51 +02:00
Sebastian Dröge
881a08671e decklinksrc: Stop using the "hardware" timestamps and directly use the pipeline clock
The hardware timestamps have no relation to when frames were produced,
only when frames arrived somewhere in the hardware. Especially there is
no guarantee that audio and video will have the same hardware timestamps
although they belong together, and even more important: the rate with
which the hardware timestamps increase is completely unrelated to the
rate with which the frames are captured!

As such we can as well use the pipeline clock directly and stop doing
complicated calculations. Also as a side effect this allows now running
without any pipeline clock, by directly making use of the stream times
as reported by the driver.

https://bugzilla.gnome.org/show_bug.cgi?id=774850
2016-11-28 14:27:51 +02:00
Sebastian Dröge
2a66653bdc decklinkvideosrc: Free timecodes when done with a frame 2016-11-24 14:48:52 +02:00
Víctor Manuel Jáquez Leal
88dbae3ab9 kmssink: include drm.h after stdlib.h
As drm.h is internal to libdrm, it expects to have already included
stdlib.h.
2016-11-23 20:13:59 +01:00
Víctor Manuel Jáquez Leal
79cd4bb44b kms: include stdlib.h
drm.h does not include all what it needs to compile, in particular
stdlib.h which defines size_t
2016-11-23 19:44:49 +01:00
Michael Tretter
12e82aac28 kmssink: remove dependency on libkms
libkms should not be used, because it imposes limitations on the DRM
API, especially regarding bpp and stride. Instead the DRM IOCTL should
be used directly.

Switch from libkms to the IOCTL interface. Set bpp and height for
framebuffer allocation to properly handle planar video formats.

https://bugzilla.gnome.org/show_bug.cgi?id=773473

Signed-off-by: Víctor Jáquez <vjaquez@igalia.com>
2016-11-23 16:43:28 +01:00
Sebastian Dröge
279fb3d99f vtdec: Mark pad as needing reconfiguration again if it failed
And return FLUSHING instead of NOT_NEGOTIATED on flushing pads.

https://bugzilla.gnome.org/show_bug.cgi?id=774623
2016-11-18 12:22:44 +02:00
Vivia Nikolaidou
85ef4166a2 decklinkvideosrc: Issue "no signal" warnings
When a frame is found to not have an associated input source (cable
unplugged, wrong mode selected), an element warning will be issued. When
the next frame in the stream is found to have an input source selected
(e.g. cable replugged), an element info will be issued.

https://bugzilla.gnome.org/show_bug.cgi?id=774629
2016-11-17 18:40:42 +02:00
Matthew Waters
ba805938e3 applemedia: error out if the uri property is not set
Fixes:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithUTF8String:]: NULL cString

in the state change test.
2016-11-17 17:30:54 +11:00
Philippe Renon
dcc7ab25f3 gdiscreencapsrc: remove empty gst_gdiscreencapsrc_stop vfunc
https://bugzilla.gnome.org/show_bug.cgi?id=774400
2016-11-14 21:02:24 +02:00
Arun Raghavan
2121e99dc8 fbdevsink: Add to meson build 2016-11-14 23:15:34 +05:30
Arun Raghavan
3e1a230337 kmssink: Trivial naming fix in meson for consistency 2016-11-14 23:11:11 +05:30
Arun Raghavan
9f6ffdf348 kmssink: Enable in meson build 2016-11-14 22:35:10 +05:30
Scott D Phillips
71df82db63 msdk: Initial windows build support
https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:17:41 +01:00
Scott D Phillips
8949c12aaf meson: add build files for msdk
https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:17:30 +01:00
Scott D Phillips
35f76fc33a msdk: load plugins in h265 and vp8 init
https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:17:19 +01:00
Scott D Phillips
2905a7e33e msdk: Width and Height need to be integer multiples of 32
https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:17:09 +01:00
Scott D Phillips
22551a42cc msdk: add to build
https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:17:01 +01:00
Josep Torra
7d68d40239 msdk: Create plugin for Intel's Media SDK
[scott.d.phillips@intel.com: gst-indent *.c *.h]
[scott.d.phillips@intel.com: link with libva at build time]
[scott.d.phillips@intel.com: remove unused includes]
[scott.d.phillips@intel.com: Update README]

https://bugzilla.gnome.org/show_bug.cgi?id=770990
2016-11-14 15:16:45 +01:00
Scott D Phillips
83d8f1eb20 winks: undef windows SDK macros before redefining them
Redefining an already defined macro causes a warning from the msvc
preprocessor

https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-12 10:53:02 +02:00
Scott D Phillips
c7ee3b5d5f Remove 'return' from void functions
https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-12 10:53:02 +02:00
Philipp Zabel
4f19d5d20a kmssink: do not get kms bo pitch for planar formats
The API is ill defined for planar formats in case of dumb BOs,
do not use the reported stride in those cases.

https://bugzilla.gnome.org/show_bug.cgi?id=773473
2016-11-10 15:57:24 +01:00
Michael Tretter
b52c39e1c7 kmssink: remove custom gst_kms_sink_get_times
The default get_times() function of the base sink is just fine.

Remove the custom get_times() function, because the default function
already reads the timestamps from the buffers.

Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>

https://bugzilla.gnome.org/show_bug.cgi?id=773473
2016-11-10 15:57:24 +01:00
Sebastian Dröge
e6651a733b amc: Allow registering codecs, camera or sensors if any of the others failed
https://bugzilla.gnome.org/show_bug.cgi?id=774048
2016-11-08 13:52:17 +02:00
Sebastian Dröge
56ee6c4cee ahs: Don't assert on deinit if initialization failed before
Initialization failure is handled correctly by just not registering the
ahssrc element.

https://bugzilla.gnome.org/show_bug.cgi?id=774048
2016-11-08 13:45:17 +02:00
Gaurav Gupta
fd2fed4844 vdpsink: fix Memory leak due to Xlib API usage
https://bugzilla.gnome.org/show_bug.cgi?id=773932
2016-11-05 11:40:02 +00:00
Tim-Philipp Müller
bdcc9d1704 kms: rename variable used
Since this includes kms.
2016-11-04 09:27:06 +00:00
Matthew Waters
41a6448918 gl: GST_GL_TYPE -> GST_TYPE_GL
Some deprecated symbols are kept for backwards compatibility
2016-11-03 16:16:12 +11:00
Sebastian Dröge
33a93a66c8 decklinkvideosink: Also stop scheduled playback when gst_element_lost_state() is called
Unfortunately this does not go through the normal state change
machinery, so we don't get notified about this in change_state().
However we need to stop scheduled playback, so that once PLAYING is
reached again we can start scheduled playback with the correct time.

Without this, flushing seeks in PLAYING will not work correctly:
decklinkvideosink will wait before showing the new frames for the amount
of time the pipeline was in PLAYING before.
2016-11-02 16:12:42 +02:00
Sebastian Dröge
ac37bdb9ac decklink: Use gst_clock_adjust_with_calibration() and unadjust_with_calibration()
Instead of hand-crafted versions of the same calculation. These
calculations are still too complicated though.
2016-11-02 15:00:36 +02:00
Florian Zwoch
8960debc24 dx9screencapsrc: add "cursor" option to draw the cursor
Drawing is done via the GDI drawing functions. The cursor is
converted to a monochrome version before drawing. This is because
the GDI drawing functions seem to have undefined behavior with
cursor images including an alpha channel.

I could not find any other reliable way to draw these alpha
channel cursors without producing unwanted artifacts. These type
of cursors were introduced with Window Vista when run with it's
Aero theme.

Also adjust the cursor coordinates when capturing non-primary
screens via the "monitor" option.

https://bugzilla.gnome.org/show_bug.cgi?id=760172
2016-11-02 10:38:59 +02:00
Vivia Nikolaidou
ab991db7ed decklinkaudiosrc: Ignore channel-mask when checking set_caps compatibility
channel-mask doesn't matter in decklinkaudiosrc, and differences in it
can cause caps negotiations to fail without a real reason.

https://bugzilla.gnome.org/show_bug.cgi?id=773313
2016-11-01 19:39:36 +02:00
Artem Martynovich
bd2fcc9571 directsoundsrc: Correctly cast mixer to uintptr
https://bugzilla.gnome.org/show_bug.cgi?id=773720
2016-10-31 16:06:49 +02:00
Reynaldo H. Verdejo Pinochet
86e75e5c90 dvb/parsechannels: collapse notes on channel_name encoding conflict 2016-10-23 22:13:33 -07:00
Reynaldo H. Verdejo Pinochet
6e0eb266bd dvb/parsechannels: rename ZAP parser for clarity
This function only does ZAP parsing. Additionally, remove redundant
comment while at it.
2016-10-23 22:00:30 -07:00
Reynaldo H. Verdejo Pinochet
3551d61af5 dvb: fix gtk-doc syntax for wrongly formatted comments 2016-10-23 21:46:27 -07:00
Scott D Phillips
2ea67f0da2 meson: directsound: Add ole32 library dependency
https://bugzilla.gnome.org/show_bug.cgi?id=773114
2016-10-21 06:05:27 -03:00
Scott D Phillips
3f93d7c3d3 meson: winscreencap depends on gstvideo
https://bugzilla.gnome.org/show_bug.cgi?id=773114
2016-10-21 06:05:23 -03:00
Reynaldo H. Verdejo Pinochet
dbdb84c2d3 dvbsrc: fix 'delivery system'-related messages
* Rephrase tune error to be delsys-neutral
* Refer to the actual check in the 'missing sanity check' warnings
* Use "Delivery system" instead of 'delsys'. The
  latter is OK as a shorthand in the code but not
  even a real word
2016-10-14 15:55:18 -07:00
Reynaldo H. Verdejo Pinochet
7dd42aee5b dvb/parsechannels: parse guard interval as a fraction
Fixes wrong default failover when parsing libdvbv5 formatted
channel configuration files.
2016-10-09 08:06:45 -07:00
Reynaldo H. Verdejo Pinochet
5d1b62ccda dvb/parsechannels: add prototypes and reorganize for clarity 2016-10-09 08:06:45 -07:00
Reynaldo H. Verdejo Pinochet
6f4d40ded3 Update my email address 2016-10-09 08:06:45 -07:00
Reynaldo H. Verdejo Pinochet
408b3a87fd dvb: drop trailing whitespace and c&p leftovers 2016-10-09 08:06:45 -07:00
Reynaldo H. Verdejo Pinochet
572c9154db dvb/parsechannels: parse DVB-T hierarchy from v5 config file
Avoids relying on the H/W default when the information
can be extracted from the configuration file.
2016-10-09 08:06:00 -07:00
Reynaldo H. Verdejo Pinochet
fd96f42ac4 dvb/parsechannels: parse DVB-T lp and hp code rates 2016-10-09 04:33:03 -07:00
Reynaldo H. Verdejo Pinochet
5771e6a066 dvb/parsechannels: make parsing errors delsys-neutral
DVB is a group of delivery standards but we support
several others. While at this, make message formating
more congruent.
2016-09-30 15:03:22 -07:00
Arun Raghavan
a07bc92319 a2dpsink: Drop some dead-code
Left over from the last cleanup.

CID: 1373418
2016-09-29 21:46:56 +05:30
Tim-Philipp Müller
80f3bf7ac2 meson: bluez: fix build 2016-09-26 16:30:02 +01:00
Sebastian Dröge
82edbde1fc decklink: Update to SDK 10.8
OSX and Linux only, Windows needs someone on Windows to convert the .idl
files to C source code.
2016-09-26 16:39:18 +03:00
Tim-Philipp Müller
4b4b306795 bluez: dist new header file
Fixes distcheck.
2016-09-25 17:38:15 +01:00
Arun Raghavan
7e22db6542 a2dpsink: Don't try to set device caps on avdtpsink
We can't actually configure the transport, so we should only be working
with whatever we get.
2016-09-24 23:24:28 +05:30
Arun Raghavan
b2ed98d0a3 avdtpsink: Chain event handling up to basesink 2016-09-24 23:24:28 +05:30
Arun Raghavan
5a70912a50 bluez: Clean up and make a2dpsink functional again
Was crashing, and had a lot of cruft (like a capsfilter and a fakesink)
that was no longer required.
2016-09-24 23:24:28 +05:30
Arun Raghavan
967046d3a5 avdtpsrc: Add support for AVRCP metadata
Metadata from AVRCP is emitted as tags, and the duration from AVRCP is
used in queries by avdtpsrc.
2016-09-24 23:24:28 +05:30
Florian Zwoch
1489e73df4 dx9screencapsrc: throw error for invalid screen index
Currently dx9screencapsrc prints a verbose warning in case the screen
index is out of range for the current number of detected monitors. This
value is then dropped.

However there is no initial indication (beside the console print) if it
worked or not. This may result in capturing an unwanted screen as it
would capture the last set index that was not rejected.

This patch sets the index regardless. Instead, the element throws an
error when it tries to run or getting caps for an invalid index.

https://bugzilla.gnome.org/show_bug.cgi?id=771817
2016-09-22 09:52:37 -04:00
Sebastian Dröge
f9a8b843df decklink: Print the Decklink API error return values in debug output in all places 2016-09-21 09:31:41 -04:00
Sebastian Dröge
95eb492c32 Revert "decklinkvideosink: Scale down scheduled frame times to milliseconds"
This reverts commit 3b7e0d7de3.

It was a bug in the driver and is supposed to be fixed with 10.8 and newer.
2016-09-12 12:20:01 +02:00
Nicolas Dufresne
753c423784 kmssink: Scale up to the screen dimension
In most display sink, the logic is to use as much as possible
of the given window. In this case, the window is the screen,
hence it's logical to scale up.

https://bugzilla.gnome.org/show_bug.cgi?id=767422
2016-09-08 13:23:35 -04:00
Nicolas Dufresne
37c670e235 kmssink: Fix selection of source region
The source region was scaled for display before being passed
to drmModeSetPlane, which resulted in a portion of the video
being cropped. While when crop meta was present, the rectangle
was not centered since we where using unscaled width/height.

https://bugzilla.gnome.org/show_bug.cgi?id=767422
2016-09-08 13:23:35 -04:00
Víctor Manuel Jáquez Leal
c117165f7b kmssink: override stride if defined in driver
Some kms drivers demands specific pitches over the ones calculated by
GstVideoInfo. For example, intel driver demands strides round up 64.

This patch queries the driver for the prefered pitch and overwrites it
in the pool's GstVideoInfo structure.

https://bugzilla.gnome.org/show_bug.cgi?id=768446
2016-09-07 16:18:48 +02:00
Sebastian Dröge
fcea134ec4 decklink: Fix-up last commit that was not meant to be pushed yet 2016-09-01 14:25:58 +03:00
Sebastian Dröge
8be08ee7fd decklink: Fix indentation 2016-09-01 14:18:33 +03:00
Sebastian Dröge
d8327b397d decklink: Require a clock when going from PAUSED_TO_PLAYING and don't crash if there is none
Also when going from PLAYING_TO_PAUSED, the clock might've been unset in the
meantime, e.g. because the element was removed from its surrounding bin.
2016-09-01 14:17:48 +03:00
Sebastian Dröge
807b0322c5 applemedia: Conditionally compile qtkitvideosrc
The API was deprecated in 10.9 and apparently does not exist in the SDK for
macOS Sierra anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=770587
2016-08-31 10:03:15 +03:00
Thibault Saunier
2fb716409c Use the new API to post flow ERROR messages on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:31 -03:00
Sebastian Dröge
1da1a3afc9 decklinkaudiosink: Fix compiler warning on OS X
While gint64 and int64_t are always the same, clang does not agree with that.

/Applications/Xcode.app/Contents/Developer/usr/bin/make -C decklink
  CXX      libgstdecklink_la-gstdecklinkaudiosink.lo
gstdecklinkaudiosink.cpp:675:79: error: cannot initialize a parameter of type 'int64_t *' (aka 'long long *') with an rvalue of type 'gint64 *' (aka 'long *')
      ret = buf->output->attributes->GetInt (BMDDeckLinkMaximumAudioChannels, &max_channels);
                                                                              ^~~~~~~~~~~~~
./linux/DeckLinkAPI.h:692:87: note: passing argument to parameter 'value' here
    virtual HRESULT GetInt (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ int64_t *value) = 0;
                                                                                      ^
2016-08-26 16:05:11 +03:00
Alessandro Decina
8a05102747 applemedia: fix compiler warning 2016-08-26 22:52:41 +10:00
Sebastian Dröge
3b7e0d7de3 decklinkvideosink: Scale down scheduled frame times to milliseconds
Scale down to milliseconds, otherwise at least some hardware has problems
scheduling the frames (or schedules them too slow) and we run out of available
frames.

https://bugzilla.gnome.org/show_bug.cgi?id=770282
2016-08-26 15:49:40 +03:00
Sebastian Dröge
6fdd4d8288 decklinkaudiosink: Add support for 8 and 16 channels 2016-08-26 15:49:40 +03:00
Alessandro Decina
7898bc5810 applemedia: changes to make GL memory mappable on CPU on iOS
This commit introduces IOSGLMemory which is a GLMemory that falls back to
GstAppleCoreVideoMemory for CPU access. This is a temporary solution until
IOSurface gets exposed as a public framework on iOS and so we can use
IOSurfaceMemory on both MacOS and iOS.

https://bugzilla.gnome.org/show_bug.cgi?id=769210
2016-08-26 17:44:48 +10:00
Fredrik Fornwall
c611c6c6c0 opensles: Add opensles.h to noinst_HEADERS
https://bugzilla.gnome.org/show_bug.cgi?id=770326
2016-08-24 13:35:45 +03:00
Matej Knopp
26c7ca4c24 vtdec: fix MPEG-2 video caps
Add systemstream=false to caps, otherwise the decoder
may be picked for MPEG-PS files. Also parsed=true,
as video toolbox expects entire frame in
VTDecompressionSessionDecodeFrame.

https://bugzilla.gnome.org/show_bug.cgi?id=770049
2016-08-22 20:25:03 +01:00
Nirbheek Chauhan
42af2d66d8 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:35:54 +01:00
Nirbheek Chauhan
7e2b68fe2f plugins: Use stdint.h instead of _stdint.h
_stdint.h is generated by Autotools and we don't really need it. All
supported platforms now ship with stdint.h. The only stickler was MSVC,
and since Visual Studio 2015 it also ships stdint.h now.
2016-08-19 14:42:52 +01:00
Tim-Philipp Müller
c8321a3173 applemedia-nonpublic: remove bitrotten plugin that's no longer needed 2016-08-19 11:02:46 +01:00
Florian Zwoch
6de83e0515 avfvideosrc: account for retina displays when capturing screens
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=770030
2016-08-19 19:46:41 +10:00
Reynaldo H. Verdejo Pinochet
d31a6f8756 dvb/parsechannels: warn on ignored key/value pairs
Otherwise at runtine, users get the misleading
parsing-OK message with no info on, for example,
properties that failed to map because of a typo.
2016-08-18 11:27:57 -07:00
Reynaldo H. Verdejo Pinochet
c40e49c9b1 dvb/parsechannels: handle problems parsing dvbv5 config keys 2016-08-18 11:17:14 -07:00
Sergei Saveliev
fc6b17b6d2 avfassetsrc: Don't escape the URI another time in another location too
One location was forgotten in a913a0b967

https://bugzilla.gnome.org/show_bug.cgi?id=767492
2016-08-16 18:47:58 +03:00
Jan Schmidt
08311c51be winks: Fix RGB frame flipping and postprocessing
Uncompressed RGB frames can be (usually are) bottom-up
layout in DirectShow, and the code to flip them wasn't
properly ported from 0.10. Fix it.

Fix post-processing of RGB buffers. We need a writable
buffer, but the requests pool is holding an extra ref.
This could use more fixing to use a buffer pool
2016-08-16 00:43:39 +10:00
Jan Schmidt
b4a51e7835 winks: Give the ksvideosrc PRIMARY rank
It's the primary video source on Windows, so give it a
rank for autoplugging by camerabin and friends
2016-08-16 00:43:39 +10:00
Jan Schmidt
16fb11cf33 winks: Fix swapped RGBx/RGB caps mapping, and endianness.
The RGBx and RGB format mappings were reversed.

What Windows calls RGB are laid out as BGR in our parlance, so
switch that too
2016-08-16 00:43:39 +10:00
Sebastian Dröge
3db0fa37b7 amc: Fix call to realloc() to allocate the correct size of items 2016-08-08 11:29:04 +02:00
Vivia Nikolaidou
de1f42a284 decklinkvideosink: Add support for GstVideoTimeCode
The timecode will be fetched from the video buffer and outputted on the
decklink video sink.

https://bugzilla.gnome.org/show_bug.cgi?id=766419
2016-08-04 19:08:27 +03:00
Vivia Nikolaidou
8faa36e105 decklinkvideosrc: Add support for GstVideoTimeCode
The timecode will be fetched from the decklink source and attached to the
video buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=766419
2016-08-04 19:08:27 +03:00
Sebastian Dröge
2ff2ad9353 androidmedia: Run gst-indent over everything once again 2016-08-01 19:57:06 +03:00
Sebastian Dröge
8748ce94f4 amc: If we find multiple codecs with the same name, just merge them
On the ODroid C1+ the H265 and H264 have the same name but are listed as two
different codecs. We have to handle them as the same one that supports both,
as otherwise we will register the same GType name twice which fails and we
then only have H265 support and not H264 support.
2016-08-01 19:57:03 +03:00
Sebastian Dröge
cce42ea5a6 amc: Use a GQueue for O(1) append instead of a GList 2016-08-01 10:15:04 +03:00
Sebastian Dröge
74158bbf37 amc: Print generated raw/encoded caps in debug logs 2016-07-29 08:54:00 +03:00
Martin Kelly
a04e6b0cb2 new plugin: Android hardware sensor source
ahssrc is a new plugin that enables Gstreamer to read from the
android.hardware.Sensor Android sensors. These sensors are treated as
buffers and can be passed through and manipulated by the pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=768110
2016-07-14 17:13:30 -04:00
Nicolas Dufresne
f03fc663ef kmssink: Fix offsets handling
The calculation of the offset table was done base on a plane size
estimation. This does not always work. Instead, use memory offset the
same we as it's implement in GstVideoMeta map functions.
2016-07-11 12:07:04 -04:00
Marcin Lewandowski
b2880cdd03 shmsrc: Do not call gst_poll_remove_fd upon stop if reading was never started
https://bugzilla.gnome.org/show_bug.cgi?id=768365
2016-07-04 12:52:29 +02:00
Reynaldo H. Verdejo Pinochet
e666b3f759 dvb/parsechannels: improve parsing-success message
* Fix typo
* Give information on what was actually parsed
2016-07-01 14:57:40 -07:00
Reynaldo H. Verdejo Pinochet
5f869d8fbd dvb/parsechannels: don't use default conf filename for messages
The file name can be user-defined.
2016-07-01 14:56:13 -07:00
Javier Martinez Canillas
34c88dca2d kmssink: fallback to universal planes if no overlay plane is found
Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
overlay planes are made available for compatibility with legacy clients.

But if a CRTC doesn't have an overlay plane associated, then kmssink is
not able to find a plane for the CRTC and the pipeline will fail, i.e:

ERROR                kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc

If no overlay planes were found for a given CRTC, fallback to universal
planes so DRM will also return primary planes that can be used instead.

https://bugzilla.gnome.org/show_bug.cgi?id=768183

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
2016-06-30 11:54:37 +02:00
Javier Martinez Canillas
c2cd60db0f kmssink: add a plane-id property
Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
overlay planes are made available for compatibility with legacy clients.

But if a CRTC doesn't have an overlay plane associated, then kmssink is
not able to find a plane for the CRTC and the pipeline will fail, i.e:

ERROR                kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc

This patch adds a plane-id property to the kmssink element so a specific
plane can be used in case that a CRTC has only a primary plane associated.

https://bugzilla.gnome.org/show_bug.cgi?id=768183
2016-06-30 11:54:36 +02:00
Sebastian Dröge
11a7362993 dvbbasebin: Use a non-timer GstPoll
set_flushing() causes inconsistent states on timer polls and also signals a
g_critical() nowadays because of that.
2016-06-30 08:32:04 +02:00
Matthew Waters
19a00b17ab vtdec: use L/LA textures on GLES2 as well 2016-06-29 20:39:26 +10:00
Matthew Waters
9a325f4a09 vtdec: add support for zerocopy decoding with GLES 3.x
It seems that Red/RG textures aren't supported anymore for zerocopy decoding
with GLES 3.x.  Instead use Luminance/Luminance Alpha textures which are.
2016-06-29 18:04:28 +10:00
Matthew Waters
989200820d glmemory: add the texture type to allocate to parameters
Rather than assuming something.  e.g. zerocopy on iOS with GLES3 requires
the use of Luminance/Luminance Alpha formats and does not work with
Red/RG textures.
2016-06-29 18:04:28 +10:00
Sebastian Dröge
dea792292e d3dvideosink: Replace some more gst_caps_to_string() with GST_PTR_FORMAT
https://bugzilla.gnome.org/show_bug.cgi?id=768146
2016-06-28 19:27:09 +03:00
Jonathan Roy
93191c92f1 d3dvideosink: leak on caps string
https://bugzilla.gnome.org/show_bug.cgi?id=768146
2016-06-28 19:27:09 +03:00
Reynaldo H. Verdejo Pinochet
756e785f39 dvbbasebin: make sure we have an error in case of parsing failure
Drop a redundant comment and rellocate another one while at it.
2016-06-24 18:23:28 -07:00
Reynaldo H. Verdejo Pinochet
219d4c132c dvb/parsechannels: implement channels.conf format autodetection
Simple autodetection avoids having to call the parsers
one after the other.
2016-06-24 18:23:17 -07:00
Reynaldo H. Verdejo Pinochet
d9e0e43ca7 dvb/parsechannels: rename v5/zap parsers for congruency
Add function prototypes while at it.
2016-06-24 18:20:56 -07:00
Reynaldo H. Verdejo Pinochet
cf86ec5874 dvb/parsechannels: fix modulation names
Some names were incorrect. Authoritative source for
the dvbv5 format taken from v4l-utils' lib/libdvbv5/dvb-v5.c

Aditionally, add the missing setter mapping for the
modulation param.

This change makes ATSC work.

https://bugzilla.gnome.org/show_bug.cgi?id=764957
2016-06-24 18:20:56 -07:00
Thiago Santos
dc93c448ca dvbbasebin: also accept DVBv5 channels.conf format
Confirmed working with ISDB-T & ATSC conf files.

https://bugzilla.gnome.org/show_bug.cgi?id=764957
2016-06-24 18:20:56 -07:00
Reynaldo H. Verdejo Pinochet
f6eeb314d3 dvbsrc: fix ISDB-T property descriptions
Drop some stale trailing whitespace while at it.
2016-06-24 18:20:56 -07:00
Reynaldo H. Verdejo Pinochet
fe193feb42 dvbsrc: fix misplaced space on doc block 2016-06-24 18:20:56 -07:00
Alessandro Decina
9a026799f0 vtdec: minimize renegotiation to make hw decoding more reliable
The hardware decoder can become (temporarily) unavailable across
VTDecompressionSessionCreate/Destroy calls. During negotiation if the currently
configured caps are still accepted by downstream we keep using them so we don't
have to destroy and recreate the decoding session.

This indirectly fixes https://bugzilla.gnome.org/show_bug.cgi?id=767429, by
making vtdec stick to GLMemory.
2016-06-23 11:45:27 +10:00
Nirbheek Chauhan
28f0df681c winks: Port to MSVC and pretend to be Windows XP
strcasecmp is not defined on MSVC, so just use the glib wrapper. Also pretend to
be Windows XP explicitly since the API we use was deprecated and removed
(ifdef-ed) from the SDK after this version of Windows. This will be especially
relevant once we stop supporting Windows XP soon:

https://bugzilla.gnome.org/show_bug.cgi?id=756866
2016-06-21 11:32:29 +01:00
Reynaldo H. Verdejo Pinochet
eb0a785841 dvbsrc: do not rely on temp var for fail detection
Use errno instead as local var might be overwritten
before the check.
2016-06-17 15:58:09 -07:00
Reynaldo H. Verdejo Pinochet
1824703c81 dvbsrc: rework set_pids()
- Reflow to avoid unneeded nesting
- Free aux pids array earlier
- Adjust debug output to deliver more meaningful information
2016-06-17 15:58:09 -07:00
Reynaldo H. Verdejo Pinochet
13efbf35d9 dvbsrc: drop pointless debug msg 2016-06-17 15:58:09 -07:00
Sebastian Dröge
a913a0b967 avfassetsrc: Don't escape the URI before passing it to NSURL
The URI must already be escaped by the caller, we don't support passing around
invalid (unescaped) URIs via the GstURIHandler interface.

Also it will escape too much of the URI in this case, e.g.
  ipod-library://item/item.m4a?id=3143338395173862951
becomes
  ipod-library://item/item.m4a%3Fid%3D3143338395173862951

https://bugzilla.gnome.org/show_bug.cgi?id=767492
2016-06-13 09:21:50 +03:00
Sebastian Dröge
0275007107 iosassetsrc: Print the correct URI if it was rejected
We were printing the previously set URI instead of the new one.
2016-06-13 09:21:50 +03:00
Reynaldo H. Verdejo Pinochet
ea7c0981ec dvbsrc: unify exit paths on _start() 2016-06-09 14:45:59 -07:00
Reynaldo H. Verdejo Pinochet
33893c5242 dvbsrc: use proper acronym for PID (Packet Identifier)
Drop formatting tab from message while at it.
2016-06-09 14:45:59 -07:00
Reynaldo H. Verdejo Pinochet
c66f5080aa dvbsrc: set common PES filter params once and reuse
Avoid setting the same harcoded values over and over again.
2016-06-09 14:45:59 -07:00
Alessandro Decina
a037f13271 vtdec: always drain in ::negotiate
Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so
that we always drain even when renegotiation is triggered by downstream.
2016-06-07 17:22:01 +10:00
Alessandro Decina
7fea17a476 vtdec: try to preserve downstream caps order
vtdec specifies sysmem; GLMemory as template caps. When negotiating, we used to
call gst_pad_peer_query_caps (..., filter) with our template caps as filter. The
query does gst_caps_intersect (filter, peercaps) internally which gives
precedence to the order of the filter caps. While we want to output sysmem by
default, when negotiating with glimagesink which returns GLMemory; sysmem; we
do want to do GL, so we now query using a NULL filter and intersect the result
with our template caps giving precedence to downstream's caps.

tl;dr: make sure we end up negotiating GLMemory with glimagesink
2016-06-07 17:13:12 +10:00
Xavier Claessens
26b66a1db5 ahcsrc: Avoid a div by 0 warning
https://bugzilla.gnome.org/show_bug.cgi?id=767302
2016-06-06 21:19:33 +03:00
Xavier Claessens
1ee15d1385 amcvideoenc: Do not call gst_object_unref on GstCaps
https://bugzilla.gnome.org/show_bug.cgi?id=767298
2016-06-06 17:53:01 +01:00
Reynaldo H. Verdejo Pinochet
bac5c4c5d2 dvbsrc: improve description of PIDs property 2016-06-03 16:28:47 -07:00
Edward Hervey
09e3bd0fb3 applemedia: Only use the OpenGL framework on OSX
It's not available on ios (uses OpenGLES already)

https://bugzilla.gnome.org/show_bug.cgi?id=766973
2016-06-03 07:11:55 +02:00
Guillaume Desmottes
007c7f9b78 a2dpsink: unref avdtpsink if state transition failed
If for some reason the avdtpsink element can't go READY then the
gsta2dpsink can't either and so should release the ressources it
allocates when trying to do so.

Fix a leak with the generic/states test.

https://bugzilla.gnome.org/show_bug.cgi?id=767161
2016-06-03 00:51:32 +01:00
Havard Graff
f615a84646 applemedia: CGLTexImageIOSurface2D needs the OpenGL framework on OSX
https://bugzilla.gnome.org/show_bug.cgi?id=766973
2016-06-02 22:42:22 +01:00
Havard Graff
ba06fc96b7 avsamplevideosink: check we are compiling for 10.1 up to 10.4
This API was deprecated in 10.4, so don't use it for 10.5 and onwards.

https://bugzilla.gnome.org/show_bug.cgi?id=766973
2016-06-02 22:41:54 +01:00
Heinrich Fink
ab70d79c43 applemedia: vtenc: Register a hardware-only vtenc_h264_hw element on OSX
Similar to vtdec_hw, this commit adds a vtenc_h264_hw element that fails
caps negotiation unless a hardware encoder could actually be acquired.
This is useful in situations where a fallback to a software encoder
other than the vtenc_h264 software encoder is desired (e.g. to x264enc).

https://bugzilla.gnome.org/show_bug.cgi?id=767104
2016-06-02 11:22:09 +03:00
Alessandro Decina
3d8d60baa8 vtdec: make vtdec_hw fallback to software on renegotiation
When renegotiating mid stream - for example with variable bitrate
streams - and therefore destroying and recreating VTSessions, the
hw decoder might become temporarily unavailable.

To deal with this and avoid erroring out on bitrate changes,
vtdec_hw now falls back to using the software decoder if the hw
one was available at some point but isn't anymore. At
renegotiation/bitrate change time, it will still retry to open
the hardware one.
2016-06-02 16:30:02 +10:00
Alessandro Decina
4a83686a57 vtdec: fix switching from GLMemory to Sysmem
When renegotiating from GLMemory to Sysmem do teardown the texture_cache.

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
2016-06-02 13:15:05 +10:00
Alessandro Decina
bf444301f9 vtdec: optimize renegotiation
::negotiate can be called several times before the CAPS event is sent downstream
so use the currently configured output state caps instead of the pad current
caps when deciding whether to recreate the VTSession or not.

This leads to creating/destroying less VTSessions which makes renegotiation more
reliable especially when using hw decoding.
2016-06-02 13:15:05 +10:00
Reynaldo H. Verdejo Pinochet
9e442d5cc0 dvbsrc: remove comment on self-explanatory code 2016-06-01 13:52:48 -07:00
Reynaldo H. Verdejo Pinochet
46de31d0f8 dvbsrc: avoid out-bound write on PID filter array
There's no need for an end-of-list marker in the filter
PIDs array if full, as the absolute maximum number of
elements (MAX_FILTERS) is known.

CID #1362441
2016-06-01 13:23:53 -07:00
Tim-Philipp Müller
889a1a9b90 androidmedia: fix error debug message when camera doesn't exist
Makes no sense to include the system error here since errno
will likely not be set and then it says 'system error: success'
which is confusing.

https://bugzilla.gnome.org/show_bug.cgi?id=767087
2016-05-31 20:41:14 +01:00
Justin Kim
fe62233b83 ahcsrc: release resources in 'finalize' function
In general, 'dispose' function is used for dropping all references
and 'finalize' is called for releasing instances.

https://bugzilla.gnome.org/show_bug.cgi?id=763309
2016-05-31 12:58:06 +01:00
Reynaldo H. Verdejo Pinochet
1d8673af62 dvbsrc: add sample ATSC launch line 2016-05-29 23:31:05 -07:00
Reynaldo H. Verdejo Pinochet
e35bc2c2b4 dvbsrc: use single marker at end of filtering PID list
Avoids at least ~100 unneeded assignment operations at runtime
2016-05-26 16:18:56 -07:00
Reynaldo H. Verdejo Pinochet
faadd0f12a dvbsrc: simplify reporting of set polarity 2016-05-26 16:18:56 -07:00
Reynaldo H. Verdejo Pinochet
6a4fa2de75 dvbsrc: fix bandwidth-hz property description
Bandwidth Hz is no longer a DVBT-only property
2016-05-26 16:18:56 -07:00
Reynaldo H. Verdejo Pinochet
31a52b6c7c dvbsrc: fix usage of PES & DVR acronyms everywhere
Additionally, improve message on gst_poll_new() failure
2016-05-26 16:18:14 -07:00
Víctor Manuel Jáquez Leal
f778a3f19a kmsbufferpool: error only if no allocator
Do not expect an allocator from the configuration, but expect to have already
one set.
2016-05-23 22:06:29 +02:00
Víctor Manuel Jáquez Leal
3b872650aa kmssink: frame copy log in performance category
Log the message when the frame is going to be copy (worse case) under the
performance log category.

https://bugzilla.gnome.org/show_bug.cgi?id=766466
2016-05-23 22:06:29 +02:00
Víctor Manuel Jáquez Leal
e87772dd4c kmssink: use trace level for buffer render log
Instead of using debug level for logging each buffer rendered, use trace
level.

https://bugzilla.gnome.org/show_bug.cgi?id=766466
2016-05-23 22:06:29 +02:00
Reynaldo H. Verdejo Pinochet
5a47f4a8bc dvbsrc: group DVB-T2 substream-id check with its corresponding set_prop() 2016-05-20 14:08:03 -07:00
Reynaldo H. Verdejo Pinochet
25543d70a7 dvbsrc: add DVB-S2 sub-stream ID check
Disable if invalid (> 255) instead of blindy setting this
property regardless of its actual value.
2016-05-20 13:57:45 -07:00
Reynaldo H. Verdejo Pinochet
e41b1c510a dvbsrc: clarify consequence of passing a wrong ID to the substream filter 2016-05-20 13:47:06 -07:00
Martin Kelly
8c236a9f2e ahc: fix potential NULL deref
This bug was found via cppcheck static analysis.

If android.hardware.Camera.getParameters returns NULL, then object will
be NULL, and we won't allocate params. This means that the GST_DEBUG
statement referencing params->object will be invalid. Fix this by
exiting early if android.hardware.Camera.getParameters returns NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=766638
2016-05-20 09:16:28 +03:00
Martin Kelly
537ba5d109 ahc: fix typo in doc blurb
https://bugzilla.gnome.org/show_bug.cgi?id=766679
2016-05-19 20:47:58 +01:00
Guillaume Desmottes
7ffe5da49f kmssink: chain up finalize method
https://bugzilla.gnome.org/show_bug.cgi?id=766597
2016-05-19 15:29:15 -04:00
Reynaldo H. Verdejo Pinochet
1d9adb14dc dvbsrc: move ISDB-T bandwidth check to _is_valid_bandwidth()
Allows test to be used for delivery system auto-detection.

Additionally, add 0 (auto) as valid value.
2016-05-17 15:06:49 -07:00
Reynaldo H. Verdejo Pinochet
ae060943a8 dvbsrc: add '0' as a valid value for bandwidth
Underlying API considers this the BANDWIDTH_HZ equivalent
to the old BANDWIDTH_AUTO for BANDWIDTH.
2016-05-17 14:40:11 -07:00
Reynaldo H. Verdejo Pinochet
dde02e2d63 dvbsrc: factor out and reuse DVB-T/T2 bandwidth checks
Use new utility function as an additional check for delivery
system auto-detection.
2016-05-17 14:40:01 -07:00
Reynaldo H. Verdejo Pinochet
8e9e3f58c9 dvb/parsechannels: recognize additional bandwidths at zap parsing
Previously ignored 1.712, 5 and 10 MHz values are also valid
2016-05-17 13:08:19 -07:00
Reynaldo H. Verdejo Pinochet
10b020095b dvbsrc: special case detection when DVB-T and T2 seem valid
There is no way to tell one over the other when parameters
seem valid for DVB-T and DVB-T2 and the adapter supports
both. Reason to go with the former here is that, from
experience, most DVB-T2 channels out there seem to use
parameters that are not valid for DVB-T, like QAM_256

https://bugzilla.gnome.org/show_bug.cgi?id=765731
2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
378fdad176 dvbsrc: add transmission mode check for DTMB 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
b84b682275 dvb/parsechannels: use proper fe_spectral_inversion enum identifiers 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
39c50e7b85 dvbsrc: explicitly disable stream filter for invalid ids 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
e32a058fcf dvb/parsechannels: do not assume DVB-T from zap file alone
DVB-T/T2 have the same number of fields so we were
wrongly assuming DVB-T for DVB-T2 broadcasts. Not
setting the delivery system here allows for dvbsrc
to make an informed guess based on the channel
parameters.
2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
8fcdf14846 dvbsrc: consider transmission mode for delsys autodetection 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
f0d7a8cb89 dvbsrc: factor out transmission mode check against delsys 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
15e21fee71 dvbsrc: improve delivery system autodetection 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
793c1a2423 dvbsrc: add modulation checks for DVB-T and T2 2016-05-15 17:12:28 -07:00
Reynaldo H. Verdejo Pinochet
4f0e42b8e4 dvbsrc: improve debug output from _open_frontend()
* Clarify message on delsys info gathering
* Combine redundant INFO/DEBUG pair
2016-05-11 16:10:27 -07:00
Reynaldo H. Verdejo Pinochet
16643e2db7 dvbsrc: fix invalid dereference of delsys data
Use GPOINTER_TO_INT to read GINT_TO_POINTER stored
data.
2016-05-11 16:10:16 -07:00
Sebastian Dröge
00d961a839 amcaudiodec: Set layout=interleaved in raw audio caps
Otherwise the GAP event fallback negotiation will fail to produce complete
srcpad caps, and thus fail.

https://bugzilla.gnome.org/show_bug.cgi?id=766289
2016-05-11 23:49:36 +03:00
Edward Hervey
41283361fa decklinkvideosrc: Fix previous commit
The frames queue might return nothing (be empty) if we're flushing.

Move the assertion to after the flushing check
2016-05-11 16:52:44 +02:00
Philippe Normand
c78819b26a applemedia: fix core_video_meta init registration 2016-05-10 19:22:33 +03:00
Tim-Philipp Müller
ddcc1c6442 decklinkvideosrc: fix use-after-free in error code path 2016-05-10 09:40:38 +01:00
Tim-Philipp Müller
8d128f8bf5 decklinkvideosrc: remove unnecessary checks for non-NULL frame
We can't get a NULL frame here.

CID 1359923
2016-05-10 09:38:28 +01:00
Reynaldo H. Verdejo Pinochet
d0e553a6d3 dvbsrc: abort at open frontend failure 2016-05-09 15:23:32 -07:00
Sebastian Dröge
43487482e5 applemedia: Ship all headers in tarballs
Some were missing from noinst_HEADERS.

https://bugzilla.gnome.org/show_bug.cgi?id=766163
2016-05-09 12:50:47 +03:00
Reynaldo H. Verdejo Pinochet
5b1191cb4c dvbsrc: smarten-up delsys autodetection logic
When there's no explicit delivery system information
for a channel in the channel configuration file and
the user hasn't selected one via setting the delsys
property, we *guessed* it by selecting the last
supported delsys reported by the driver. This change
provides the basis for smarter delsys auto detection
and implements a rule for DVB-T2. Rules for other
delivery systems can be added in _guess_delsys() in
a similar way.

Additionally: Store list of adapter-supported
delivery systems instead of querying the driver each
time this information is needed.

Related to:

https://bugzilla.gnome.org/show_bug.cgi?id=765731
2016-05-06 16:15:36 -07:00
Reynaldo H. Verdejo Pinochet
571568a09c dvbsrc: remove remaining polling logic from _tune_fe()
No need to do any polling here.
2016-05-06 16:15:36 -07:00
Justin Kim
c8e34e93b2 androidmeida: replace with new surfacetexture for ahcsrc
GstAmcSurfaceTexture is more clear and simple than GstAGSurfaceTexture.

https://bugzilla.gnome.org/show_bug.cgi?id=763099
2016-05-06 09:18:00 +03:00
Alessandro Decina
5228238715 applemedia: vtdec: output sysmem by default 2016-05-04 11:33:16 +10:00
Sebastian Dröge
65398a1596 directsoundsrc: Convert Windows strings to UTF8 before comparing against UTF8 strings
The device name and descriptions returned are in the locale encoding, not
UTF8. Our device name property is in UTF8 though, so we need to convert.

https://bugzilla.gnome.org/show_bug.cgi?id=756948
2016-05-03 16:59:33 +03:00
Vivia Nikolaidou
a4ae449434 decklink: Fix swapped name and nick in GEnumValues
https://bugzilla.gnome.org/show_bug.cgi?id=742878
2016-05-03 15:57:23 +03:00
Vivia Nikolaidou
832764d2fd decklink: Add initial 10bit support for YUV modes
https://bugzilla.gnome.org/show_bug.cgi?id=742878
2016-05-03 15:57:23 +03:00
Sebastian Dröge
87503ac174 decklink: Fix indentation 2016-05-03 15:57:23 +03:00
Reynaldo H. Verdejo Pinochet
8c03f448c3 dvbsrc: avoid possible race on _output_frontend_stats()
Make sure we send out our info message before we give up ownership
of the structure.
2016-04-29 23:39:06 -07:00
Reynaldo H. Verdejo Pinochet
05ebd33887 dvbsrc: var rename in _output_frontend_params()
Now it matches the rest of its status peers. Underscore
was a leftover from previous times.
2016-04-29 16:01:23 -07:00
Reynaldo H. Verdejo Pinochet
530d56fac3 dvbsrc: always output known frontend status params
The only mandatory frontend information for our use case
is its status. Make sure we output what we know instead
of choking at the first error getting SNR, BER or any of
the other informational parameters.
2016-04-29 16:01:23 -07:00
Reynaldo H. Verdejo Pinochet
098934d3ae dvbsrc: refactor signal locking loop
Get rid of preliminar frontend status check.
2016-04-29 16:01:23 -07:00
Reynaldo H. Verdejo Pinochet
b5663e4f53 dvbsrc: drop unneeded polling step on _tune_fe()
Additional waiting was not needed. Specially considering
it came after a successful READ_STATUS ioctl and was
followed by an EINTR-resilent retry.
2016-04-29 16:01:23 -07:00
Song Bing
c9cd32bcea pvrbufferpool: fix gst_meta_register() parameters
https://bugzilla.gnome.org/show_bug.cgi?id=765581
2016-04-26 13:45:07 +01:00
Jerome Laheurte
c7e0e8d6ab dshowsrcwrapper: fix DirectShow caps negotiation and set capture pin caps
Some cameras (IDS) have broken DirectShow drivers which incorrectly fill some
fields in the VIDEOINFOHEADER structure; comparison between suggested and
supported media types in CBaseRenderer should ignore deprecated and/or not
essential fields; additionaly explicitely setting the mediatype for the capture
pin before trying to connect it works around another IDS driver bug, and
should have been already done anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=765428
2016-04-23 15:21:44 +01:00
Jerome Laheurte
26dfb7db83 dshowsrcwrapper: add support for RGB32, RGB555, RGB565 and RGB8 color spaces
Some cameras (IDS) only support those.

https://bugzilla.gnome.org//show_bug.cgi?id=765427
2016-04-23 15:17:34 +01:00
Jerome Laheurte
97529971fc dshowsrcwrapper: fix include path and link error
Add include path so that the cmake-generated project
is able to find gstconfig.h

Add /SAFESEH:NO to MSVC linker options so it can link with
gstreamer libraries on Windows.

https://bugzilla.gnome.org//show_bug.cgi?id=765426
2016-04-23 15:13:05 +01:00
Hyunjun Ko
45b258127c applemedia: vtenc: fix build break on iOS
Fix 'conflicting types' error
https://bugzilla.gnome.org/show_bug.cgi?id=765292
2016-04-21 09:28:01 +03:00
Reynaldo H. Verdejo Pinochet
40b2f41ca6 dvbsrc: add test for invalid DVB-T2 bandwidth 2016-04-20 15:42:25 -07:00
Reynaldo H. Verdejo Pinochet
549785a432 dvbsrc: warn on wrong DVB-T2 stream ID value
Stream ID, used for DVB-T2/S2 and ISDB-S can
not exceed 255 for the former. Change makes this
explicit.
2016-04-20 15:42:17 -07:00
Hyunjun Ko
5023a7c85d applemedia: vtenc: Fix a warning by weak-link symbol
Fix this warning
address of function 'VTCompressionSessionPrepareToEncodeFrames' will always evaluate to 'true' [-Wpointer-bool-conversion]

https://bugzilla.gnome.org/show_bug.cgi?id=765292
2016-04-20 17:16:02 +03:00
Nirbheek Chauhan
6472482680 d3dvideosink: Don't include deprecated and unavailable d3dx9tex.h
It's not needed, not on native Windows nor with mingw, and
we don't use anything from it anyway

https://bugzilla.gnome.org/show_bug.cgi?id=765250
2016-04-19 13:51:03 +01:00
Philipp Zabel
b2c58d3bc5 kmssink: add sync support for secondary pipes
The vblank event request must specify the crtc for which to request
the event. This fixes kmssink synchronisation for crtcs other than
the first.

https://bugzilla.gnome.org/show_bug.cgi?id=765064
2016-04-19 11:10:49 +02:00
Reynaldo H. Verdejo Pinochet
7597f4dd7a dvbsrc: show invalid delsys/mod combination if found 2016-04-15 13:38:36 -07:00
Reynaldo H. Verdejo Pinochet
31041c3ae9 dvbsrc: add modulation check for ATSC 2016-04-15 11:29:48 -07:00
Reynaldo H. Verdejo Pinochet
34d888220c dvbsrc: do not autodetect delsys twice
The process is dealt with the first time the adapter is
opened, there is no need to do this again.
2016-04-15 10:16:47 -07:00
Sebastian Dröge
4ad32506c6 applemedia: GstCoreVideoMeta in the plugin using only public API has no ctx member 2016-04-13 13:10:12 +03:00
Sebastian Dröge
d00c458592 applemedia: GstCoreMediaMeta in the plugin using only public API has no ctx member 2016-04-13 13:09:05 +03:00
Sebastian Dröge
6c020b7f3c meta: Initialize all remaining metas in their init function
https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:25:32 +03:00
Sebastian Dröge
ccc068576a meta: Initialize all GstMeta fields
During allocation they are not initialized to all zeroes.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:17:24 +03:00
Reynaldo H. Verdejo Pinochet
768b0c2696 dvbsrc: avoid redundant delsys querying
There is no need to query the frontend for the list
of supported delivery systems if we are selecting
one from the list of autodetected ones.
2016-04-12 15:08:29 -07:00
Reynaldo H. Verdejo Pinochet
0826e78266 dvb/parsechannels: add information to file not found error
Adds useful failure info (like filename) comming from
g_file_get_contents() as done for every other error in
this block.
2016-04-12 15:06:26 -07:00
Philipp Zabel
2f51985191 kmssink: enable UYVY, YUY2, and YVYU (interleaved YUV 4:2:2) formats
https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Philipp Zabel
360e9343f9 kmssink: enable NV16 (chroma-interleaved YUV 4:2:2) format
https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Philipp Zabel
bdb62b2658 kmssink: enable Y42B (planar YUV 4:2:2) format
https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Víctor Manuel Jáquez Leal
7d06cf3297 kmssink: keep last rendered buffer in memory
https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Víctor Manuel Jáquez Leal
b29f7d048c kmssink: wait for page flip or vblank
This patch requests for drmModePageFlip() for the used CRTC, if the kernel
module suppports async page flip. If it does not, the element requests for a
vblank event. A GstPoll waits for the event to happen.

https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Víctor Manuel Jáquez Leal
c419d17dbf kmssink: add dmabuf support
This patch will enable the import of dmabufs into a KMS buffer using
the PRIME kernel interface.

If the driver does not support prime import, the method is skipped.

It has been tested with a Freescale I.MX6 board.

https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Víctor Manuel Jáquez Leal
1aee6cdc25 kmssink: calculate display ratio
Get the aspect ratio given the information provided by libdrm, and with it
calculate the display ratio.

https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Víctor Manuel Jáquez Leal
620e1d2fcd kmssink: add plugin and sink element
This is simple video sink that use libdrm/libkms API to render frames.

The element uses planes to render through drmModeSetPlane().

It has been tested in an Exynos4412 board and in a Freescale I.MX6 board.

https://bugzilla.gnome.org/show_bug.cgi?id=761059
2016-04-11 19:57:48 +02:00
Sebastian Dröge
da999d7af8 decklink: Initialize capture_time to NONE so it can be used if no video frame is provided but audio is
CID 1358390
2016-04-08 14:08:31 +03:00
Matthew Waters
dc1a326090 nvenc: add some rate control modes/properties
Supported modes are constant quantizer, cbr, vbr and vbr with a minimum quantizer.
2016-04-08 15:24:20 +10:00
Matthew Waters
065f4dceb1 nvenc: move codec config initialization from the implementation to the base class
Supports a better separation of configuration parameters
2016-04-08 15:08:18 +10:00
Matthew Waters
c45fc2ef53 nvenc: add preset selection
Some presets are not always supported on all devices and will cause an error if
used.  Specifically, the LOSSLESS presets are known to not work everywhere.
2016-04-08 15:08:18 +10:00
Sebastian Dröge
f06647fd0c decklinkaudiosrc: Don't accept packets without timestamps after a discont
We have no idea which timestamps they are supposed to have so the only thing
we can do at this point is to drop them. Packets without timestamps happen if
audio was captured but no corresponding video, which shouldn't happen under
normal circumstances.

https://bugzilla.gnome.org/show_bug.cgi?id=747633
2016-04-05 14:49:51 +03:00
Sebastian Dröge
0004920c83 decklinkaudiosrc: Don't crash when receiving video frames but no audio
And mark these events as disconts to reset time tracking in the audio source.

https://bugzilla.gnome.org/show_bug.cgi?id=747633
2016-04-05 14:47:00 +03:00
Tim-Philipp Müller
8abff20185 decklinkvideosrc: don't crash if we get NULL video frames in the callback
For some reason we seem to sometimes get NULL video_frames in the
::VideoInputFrameArrived() callback, observed on Intensity Pro cards.

https://bugzilla.gnome.org/show_bug.cgi?id=747633
2016-04-05 14:46:22 +03:00
Kouhei Sutou
d27662fdcd directsoundsrc: add missing -lole32
CLSIDFromString() requires ole32.dll.
See https://msdn.microsoft.com/en-us/library/windows/desktop/ms680589%28v=vs.85%29.aspx

CLSIDFromString() is introduced at
f9464ce354 .

https://bugzilla.gnome.org/show_bug.cgi?id=764523
2016-04-03 13:37:16 +03:00
Matthew Waters
d6f7ea88bb nvenc: add support for building against version 6 of the SDK
While mostly API compatible, the ABI has changed so binaries will not work
across header versions (and ultimately nvidia driver releases).

https://bugzilla.gnome.org/show_bug.cgi?id=763324
2016-03-31 17:26:47 +11:00
Sebastian Dröge
5d9df5d5d0 ahcsrc: There's no point in read-only CONSTRUCT properties
And creating one is causing assertions. Also get rid of the other CONSTRUCT
property as it's a) unneeded for default initialization and b) you're not
supposed to use constructor properties when creating element instances and the
GStreamer API doesn't provide direct ways for doing so.

https://bugzilla.gnome.org/show_bug.cgi?id=764339
2016-03-30 10:35:53 +03:00
Thiago Santos
c77e9c8cda dvbbasebin: unref pat table after usage
Remember to unref the GPtrArray of the PAT table after
use
2016-03-24 11:29:35 -03:00
Thiago Santos
1f3852c667 dvbbasebin: plug some leaks
Plug various leaks in dvbbasebin.
2016-03-24 11:29:35 -03:00
Thiago Santos
46473ac287 dvbsrc: print time in same format
Makes it easier to compare
2016-03-24 11:06:47 -03:00
Martin Kelly
d6a17cd3cc ahc: use g_slice_new instead of g_slice_new0
In many cases, we use g_slice_new0 and then immediately overwrite the
allocated memory. This is inefficient. Since we're going to immediately
overwrite it, we might as well use plain g_slice_new.

https://bugzilla.gnome.org/show_bug.cgi?id=763998
2016-03-24 14:59:42 +02:00
Vineeth TM
66bac3eb86 d3dvideosink: post message to application for unhandled keyboard/mouse events
https://bugzilla.gnome.org/show_bug.cgi?id=763403
2016-03-24 14:58:24 +02:00
Justin Kim
b9ecc42b76 ahcsrc: remove probe_properties
It's a residue of 0.10.

https://bugzilla.gnome.org/show_bug.cgi?id=763100
2016-03-24 14:57:39 +02:00
Vineeth TM
8cdfb13658 bad: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Martin Kelly
c257829213 ahc: eliminate AHC*_CALL macros
Currently, we use AHC*_CALL macros to call many of the Camera functions.
However, we already have helper classes to call the Camera functions, so
eliminate the macros.

As a nice side-benefit, we also get improved error handling and
reporting when something goes wrong calling these functions, because a
GError gets populated, and we log a GST_ERROR when something fails. This
was harder to do using macros, as all error handling was hidden from the
caller.

https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-24 14:55:14 +02:00
Martin Kelly
a2f270b316 ahc: use gst unref functions
https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-24 14:55:14 +02:00
Martin Kelly
1bfd6526d4 ahc: use gst new object functions
https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-24 14:55:14 +02:00
Sebastian Dröge
0acdcc1b37 openslesringbuffer: Warn if the position reported by OpenSL is higher than what we queued up so far
This would hint at wrong position reporting, and apparently sometimes happens
after a seek.
2016-03-16 12:03:53 +02:00
Sebastian Dröge
610705cbb4 amc: Correctly handle NULL input buffers
https://bugzilla.gnome.org/show_bug.cgi?id=763401
2016-03-11 10:46:10 +02:00
Sebastian Dröge
9132b72c32 amcvideodec: getOutputBuffers() returns a NULL array when a surface was configured
So don't error out if it does.

https://bugzilla.gnome.org/show_bug.cgi?id=763401
2016-03-11 10:46:10 +02:00
Justin Kim
10c6d1b558 androidmedia: Remove unused file
ahcsrc is registered by gstamc.c

https://bugzilla.gnome.org/show_bug.cgi?id=763098
2016-03-05 10:04:39 +02:00
Martin Kelly
a7d6c07b86 amc: properly deinit when ahcsrc register fails
In the androidmedia plugin_init, we initialize various resources on the
Android device. If anything fails during this series of initializations,
we need to deinitialize any initializations that already occurred.
However, we don't do so if we fail to register the ahcsrc element. Fix
this.

https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-04 09:42:14 +02:00
Martin Kelly
ddebf1ff66 ahc: correct error message
The error message is specific to only one of the failure cases and is
misleading in the others. Correct it to be more generic and cover all
the failure cases.

https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-04 09:42:14 +02:00
Martin Kelly
e337918a06 ahc: remove unneeded #include <stdio.h>
https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-04 09:42:14 +02:00
Martin Kelly
21d1eaa6c8 ahc: typo fix
https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-04 09:42:14 +02:00
Sebastian Dröge
476d5b6940 amcvideodec: When outputting on a surface, accept all color formats
We don't have to understand them, we handle them as a GL texture.

https://bugzilla.gnome.org/show_bug.cgi?id=762792
2016-02-28 11:10:39 +02:00
Sebastian Dröge
924795c85c vtdec: Negotiate the decoder in set_format() already
Don't wait until later, we want to know here if the codec can be opened or not
for the requested format. This was removed (accidentially?) by
  119e09eac3

Without this decodebin has no way to switch to a different decoder if this one
does not work.

https://bugzilla.gnome.org/show_bug.cgi?id=762613
2016-02-25 11:38:07 +02:00
Joe Gorse
2b63a88f26 avfvideosrc: Frame durations as CTime to the API, not double
Newer iOS seems to automatically convert, older iOS/OSX just crashes.

https://bugzilla.gnome.org/show_bug.cgi?id=762575
2016-02-25 11:34:40 +02:00
Matthew Waters
b48049a171 nvenc: release the frames and list when searching for an output buffer
Fixes a massive leak in:

videotestsrc ! nvh264enc ! fakesink
2016-02-25 00:07:14 +11:00
Peter Seiderer
df4ef4be39 fbdevsink: fix bytes per pixel calculation
Simple pipeline

	$ gst-launch-1.0 videotestsrc ! fbdevsink

crashes with SIGSEGV in case the frambuffer xres is smaller
than the virtual xres resolution, e.g.:

	$ fbset

  mode "800x480-0"
          # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz
          geometry 800 480 1920 1200 16
          timings 0 0 0 0 0 0 0
          accel true
          rgba 5/11,6/5,5/0,0/0
  endmode

Debug:
	$ gdb gst-launch-1.0
  (gdb) run videotestsrc ! fbdevsink
  (gdb) where
  #0  0xb6bd2d24 in __memcpy_neon ()
      at ../sysdeps/arm/armv7/multiarch/memcpy_impl.S:591
  #1  0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378,
      buf=0xb5c08838) at gstfbdevsink.c:269
  #2  0xb69e88c4 in gst_base_sink_do_preroll (sink=sink@entry=0x10a3378,
      obj=0xb5c08838, obj@entry=0xa0) at gstbasesink.c:2281
  #3  0xb69e92bc in gst_base_sink_do_sync (basesink=basesink@entry=0x10a3378,
      obj=0xa0, obj@entry=0xb5c08838, late=0x0, late@entry=0xb6548ba0,
      step_end=0x140, step_end@entry=0xb6548ba4) at gstbasesink.c:2500
  #4  0xb69ea67c in gst_base_sink_chain_unlocked (
      basesink=basesink@entry=0x10a3378, obj=0x0, obj@entry=0xb5c08838,
      is_list=is_list@entry=0, pad=<optimized out>) at gstbasesink.c:3486
  #5  0xb69ec1c0 in gst_base_sink_chain_main (basesink=0x10a3378,
      pad=<optimized out>, obj=0xb5c08838, is_list=0) at gstbasesink.c:3647
  #6  0xb6eb5b10 in gst_pad_chain_data_unchecked (pad=0x10a6170,
      type=<optimized out>, data=0xb5c08838) at gstpad.c:4086
  #7  0xb6eb7a34 in gst_pad_push_data (pad=pad@entry=0x10a6020,
      type=type@entry=4112, data=0xb5c08838) at gstpad.c:4338
  #8  0xb6ebf344 in gst_pad_push (pad=pad@entry=0x10a6020,
      buffer=<optimized out>) at gstpad.c:4454
  #9  0xb69f22f0 in gst_base_src_loop (pad=0x10a6020) at gstbasesrc.c:2845
  #10 0xb6eeddfc in gst_task_func (task=0x10a8828) at gsttask.c:331
  #11 0xb6d485a0 in g_thread_pool_thread_proxy (data=<optimized out>)
   at gthreadpoQuit
  (gdb) frame 1
  #1  0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378,
      buf=0xb5c08838) at gstfbdevsink.c:269
  269     gstfbdevsink.c: No such file or directory.
  (gdb) p fbdevsink
  $1 = (GstFBDEVSink *) 0x10a3378
  (gdb) p *fbdevsink
  $2 = {videosink = {element = {element = {object = {object = {
              g_type_instance = {g_class = 0x10a2d60}, ref_count = 3,
              qdata = 0x0}, lock = {p = 0x0, i = {0, 0}},
            name = 0x10a2f30 "fbdevsink0", parent = 0x10a70a0, flags = 32,
            control_bindings = 0x0, control_rate = 100000000,
            last_sync = 18446744073709551615, _gst_reserved = 0x0},
          state_lock = {p = 0x109f9a8, i = {0, 0}}, state_cond = {p = 0x0, i = {
              3, 0}}, state_cookie = 2, target_state = GST_STATE_PAUSED,
          current_state = GST_STATE_READY, next_state = GST_STATE_PAUSED,
          pending_state = GST_STATE_PAUSED,
          last_return = GST_STATE_CHANGE_ASYNC, bus = 0x108bcb8, clock = 0x0,
          base_time = 0, start_time = 0, numpads = 1, pads = 0x109cc20,
          numsrcpads = 0, srcpads = 0x0, numsinkpads = 1, sinkpads = 0x109cc30,
          pads_cookie = 1, _gst_reserved = {0x0, 0x0, 0x0, 0x0}},
        sinkpad = 0x10a6170, pad_mode = GST_PAD_MODE_PUSH, offset = 0,
        can_activate_pull = 0, can_activate_push = 1, preroll_lock = {p = 0x1,
          i = {1, 0}}, preroll_cond = {p = 0x0, i = {0, 0}}, eos = 0,
        need_preroll = 1, have_preroll = 0, playing_async = 1,
        have_newsegment = 1, segment = {flags = GST_SEGMENT_FLAG_NONE, rate = 1,
          applied_rate = 1, format = GST_FORMAT_TIME, base = 0, offset = 0,
          start = 0, stop = 18446744073709551615, time = 0, position = 33333333,
          duration = 18446744073709551615, _gst_reserved = {0x0, 0x0, 0x0,
            0x0}}, clock_id = 0x0, sync = 1, flushing = 0, running = 0,
        max_lateness = 20000000, priv = 0x10a3188, _gst_reserved = {
          0x0 <repeats 20 times>}}, width = 0, height = 0, priv = 0x10a3180,
      _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, fixinfo = {
      id = '\000' <repeats 15 times>, smem_start = 1078984704,
      smem_len = 4608000, type = 0, type_aux = 0, visual = 2, xpanstep = 1,
      ypanstep = 1, ywrapstep = 0, line_length = 3840, mmio_start = 0,
      mmio_len = 0, accel = 0, capabilities = 0, reserved = {0, 0}}, varinfo = {
    xres = 800, yres = 480, xres_virtual = 1920, yres_virtual = 1200,
    xoffset = 0, yoffset = 0, bits_per_pixel = 16, grayscale = 0, red = {
      offset = 11, length = 5, msb_right = 0}, green = {offset = 5,
      length = 6, msb_right = 0}, blue = {offset = 0, length = 5,
      msb_right = 0}, transp = {offset = 0, length = 0, msb_right = 0},
      nonstd = 0, activate = 0, height = 4294967295, width = 4294967295,
      accel_flags = 1, pixclock = 0, left_margin = 0, right_margin = 0,
      upper_margin = 0, lower_margin = 0, hsync_len = 0, vsync_len = 0,
      sync = 0, vmode = 0, rotate = 0, colorspace = 0, reserved = {0, 0, 0, 0}},
    fd = 5,
    framebuffer = 0xb654a000 <error: Cannot access memory at address 0xb654a000>, device = 0x10a38d8 "/dev/fb0", width = 320, height = 240, cx = 240, cy = 120,
    linelen = 1280, lines = 240, bytespp = 4, fps_n = 30, fps_d = 1}
  (gdb) p map
  $3 = {memory = 0xb5d24008, flags = GST_MAP_READ,
    data = 0xb5d24058 '\377' <repeats 90 times>, "\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a"...,
    size = 153600, maxsize = 153603, user_data = {0x0,
      0xb69e3ba4 <gst_base_sink_set_last_buffer_unlocked+92>, 0x10a3378, 0x0},
    _gst_reserved = {0x1, 0x10a3378, 0xb6f50dd8 <_gst_debug_min>, 0xb5c08838}}
  (gdb) p i
  $4 = 121

Fix this by changing the fbdevsink->bytespp calculation using
the frame buffer xres_virtual size instead of xres.

https://bugzilla.gnome.org/show_bug.cgi?id=762482
2016-02-23 11:36:57 +02:00
Vineeth TM
9900b08512 uvch264_src: Fix caps memory leak
v4l_caps and new_caps are being allocated new memory before freeing the
old allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=761108
2016-02-17 08:57:30 +00:00
Vineeth TM
8b80137f4b acmenc/acmmp3dec: remove unnecessary break after return
https://bugzilla.gnome.org/show_bug.cgi?id=761109
2016-02-16 18:03:51 +02:00
Alessandro Decina
4aaaf23868 applemedia: videotesturecache: let CVOpenGLESTextureCache flush every 1s
Leave kCVOpenGLESTextureCacheMaximumTextureAgeKey to the default (1s). We used
to set it to 0 and flush manually, but apparently (looking at the GLES profiler)
0 means "disable the cache entirely".
2016-02-10 15:40:02 +11:00
Alessandro Decina
99f29ec56e applemedia: vtdec: implement GstElement::set_context 2016-02-09 14:13:26 +11:00
Alessandro Decina
915124b363 applemedia: vtdec: update copyright 2016-02-09 14:13:26 +11:00
Alessandro Decina
e34fe9fe70 applemedia: avfvideosrc: implement GstElement::set_context
Needed to properly handle gst.gl.app_context(s).
2016-02-09 14:13:26 +11:00
Alessandro Decina
022e060563 applemedia: avfvideosrc: add myself to the copyright holders 2016-02-09 14:13:26 +11:00
Matthew Waters
cd4a93da3b glsyncmeta: separate out gpu/cpu waits.
CPU waits are more expensive and are only required if the CPU is ever going to
access the data. GPU waits perform inter-context synchronisation and are cheaper
as they don't require CPU intervention.
2016-02-09 12:30:25 +11:00
Arun Raghavan
94f1748b6b tinyalsasink: Use glib CLAMP() instead of our own macro 2016-02-05 21:35:15 +05:30
Arun Raghavan
5f9065c114 tinyalsasink: Limit period size and count to what the h/w permits 2016-02-05 15:56:05 +05:30
Matthew Waters
9efdfb1a29 amcvideodec: pass the correct time value to wait_for_sync
When we are not waiting, we need to pass -1 to signal that we just want to check
that the frame was/n't rendered.  Avoids waiting for frames that will never be
rendered.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 15:46:22 +11:00
Matthew Waters
3c29dcaddb amcvideodec: advance the ready counter ourselves when render=FALSE
When not rendering the video frame, e.g. when freeing an unreleased sync frame,
we will not receive a frame listener callback.

Reduces the amount of 'on_frame_available miss detected' messages when dropping
frames.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 15:46:22 +11:00
Jan Schmidt
0d3cd82749 decklinkaudiosrc: Fix discont tracking
Don't reset the marker that's tracking disconts until
either the discont disappears or we resync.
2016-02-04 14:33:09 +11:00
Tim-Philipp Müller
501930dc0d Remove ancient and dead cdrom control plugin
This was never even ported to 0.10, and I don't think
it's particularly useful, since it's just a control
interface really. Let's remove it.
2016-02-03 21:22:28 +00:00
Reynaldo H. Verdejo Pinochet
2da52e79b3 tinyalsasink: fix tinalsa typo 2016-02-02 13:30:29 -08:00
Reynaldo H. Verdejo Pinochet
4c5abcb997 tinyalsasink: fix sample launch line 2016-02-02 11:06:52 -08:00
Arun Raghavan
bb240714fb tinyalsasink: Use int type if we support a single rate/channel count
Avoids using an int range if the field we're setting is not actually a
range.
2016-02-02 16:38:31 +05:30
Arun Raghavan
c8bd74fa9a tinyalsa: Add a new sink plugin using tinyalsa
This uses the tinyalsa library to playback to an ALSA device. Future
work can include using the mmap interface.

https://bugzilla.gnome.org/show_bug.cgi?id=761230
2016-02-02 08:30:59 +05:30
Tim-Philipp Müller
0770fa4ed5 dvbsrc: drop unnecessary use of _stdint.h 2016-01-30 17:35:33 +00:00
Matthew Waters
b276de7827 amcvideodec: guard against not finding a valid frame in loop
Fixes sporadic crashes on finishing decoding a video.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-01-29 23:52:15 +11:00
Matthew Waters
1fceac8122 amcvideodec: set our data pointer in java to NULL on close
The frame available callback can be called after deconfiguring the amc codec.
Guard against this by setting the back pointer to NULL on close() and ignoring
any NULL data pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-01-29 23:52:15 +11:00
Alessandro Decina
045a935871 applemedia: refactor GL context code
Rework the GL context code. Now both avfvideosrc and vtdec can create an
internal GL context for pushing textures. Both elements will still try to
use/switch to a local context where available (including after RECONFIGURE
events).
2016-01-29 15:10:32 +11:00
Alessandro Decina
6f80d5c59a applemedia: avfvideosrc: actually set the configured framerate
Actually set the configured framerate. Before we only used to set the first
matching framerate range. On iOS where the camera reports ranges [2, 60], we
used to configure the camera to output anything between 2 and 60fps.
2016-01-27 14:38:36 +11:00
Sebastian Dröge
c9d9042aff ahc: Fail gracefully if our callback class can't be found
Instead of just ignoring that error and then calling JNI functions with NULL,
which will kill the virtual machine.

The error handling here needs some further improvements though, errors in more
places are just ignored.
2016-01-22 17:25:28 +02:00
Sebastian Dröge
551b0a5f28 ahc: Initialize GError pointer with NULL
Otherwise there will be assertions.
2016-01-22 17:22:47 +02:00
Sebastian Dröge
f585a66bd1 amcvideodec: Only free GstAmcBuffer if it's not NULL
And also free it on GL errors.
2016-01-22 17:19:29 +02:00
Julien Moutte
3ea431c5b5 decklinkvideosrc: implement RGB capture support
Combine mode and format to generate caps and support the flags from VideoChanged callback to support RGB capture.

https://bugzilla.gnome.org/show_bug.cgi?id=760594
2016-01-22 16:11:08 +01:00
Sebastian Dröge
8c57341241 amc: Add an assertion for NULL GErrors
Should never happen! But an assertion is better than a NULL pointer
dereference.
2016-01-22 16:22:25 +02:00
Sebastian Dröge
31e1b7ceeb ahc: Fix indentation 2016-01-22 16:14:46 +02:00
Sebastian Dröge
5a3744e86c amc: MediaCodec::getOutputBuffer() can return NULL without exception
Happens when doing zerocopy rendering, or when passing a wrong index to it.
Handle this properly for zerocopy rendering, fail properly for the other
cases.

https://bugzilla.gnome.org/show_bug.cgi?id=760961
2016-01-22 16:13:45 +02:00
Alessandro Decina
c2a57f3555 applemedia: texture cache: copy the input metas
Copy the input metas so avfvideosrc and vtenc can fast path to using
CVPixelBuffer(s) even when using GLMemory.
2016-01-22 13:53:32 +11:00
Nicolas Dufresne
09dbc5b298 ahcsrc: Fix latency reporting
Currently it was wrongly reporting min/max as being the shortest and
longest possible frame duration. This is not how latency works in
GStreamer.

Fix by reporting min latency as being the longest possible duration of
one frame. As we don't know how many buffers the stack can accumulate, we
simply assume that max latency is the same (the usual default behaviour).
2016-01-21 13:49:18 -05:00
George Kiagiadakis
9a53d79876 ahcsrc: fix deadlock when flushing
_data_queue_item_free() calls gst_buffer_unref(), which
calls gst_ahc_src_buffer_free_func(), which calls
g_mutex_lock() on self->mutex and there you go... deadlock!
2016-01-21 13:49:18 -05:00
Justin Kim
f1809c4d93 ahcsrc: porting from 0.10 to 1.0 2016-01-21 13:49:17 -05:00
Justin Kim
becaf2852d move androidcamera into androidmedia
This commit is a part of portng android hardware camera from 0.10 implementation.
To preserve history and get diff clearly, the interesting files are moved to
deployment directory and the remaining files are removed.
2016-01-21 13:49:17 -05:00
Youness Alaoui
fe288a847b androidcamera: Separate release and free APIs 2016-01-21 13:49:17 -05:00
Youness Alaoui
c84878ad4b androidmedia: Fix get_level and get_profile exception checking by not using return 2016-01-21 13:49:17 -05:00
Youness Alaoui
86f2535c41 androidmedia: Add extern gint declarations 2016-01-21 13:49:16 -05:00
Youness Alaoui
11b28224b5 androidcamera: Small refactor in case open doesn't throw an exception but returns null 2016-01-21 13:49:16 -05:00
Sebastian Dröge
acfb1c44a7 androidcamera: Fix some compiler warnings 2016-01-21 13:49:16 -05:00
Sebastian Dröge
64b869ea40 dvm: Rename gst-dvm.[ch] to gstdvm.[ch] for consistency with other GStreamer code 2016-01-21 13:49:15 -05:00
Sebastian Dröge
e3801c041f androidmedia: Make everything compile with the new wrappers 2016-01-21 13:49:15 -05:00
Sebastian Dröge
ade8590778 androidmedia: Add remaining bits of the Java wrappers using libgstdvm 2016-01-21 13:49:15 -05:00
Sebastian Dröge
ea43e42ca5 androidmedia: Remove g_return_if_fails()
This is not public API so it has no advantage to have them here.
2016-01-21 13:49:14 -05:00
Youness Alaoui
3ac90867ac androidmedia: Use gst-dvm and refactor java wrappers (WIP)
Moved the java wrapper API into its own files and made use of the
gst-dvm macros. Also renamed the API to have the proper naming
convention and coding style in order to match the one in androidcamera.
This is a work in progress! "android/media/MediaCodecList" is still missing
and the actual elements have not been ported to use the new function names.
2016-01-21 13:49:14 -05:00
Youness Alaoui
eb949625b9 androidcamera: Add G_BEGIN/END_DECLS to the .h 2016-01-21 13:49:14 -05:00
Youness Alaoui
4a2a73b13f gst-dvm: Create a gst-dvm library using part of androidcamera 2016-01-21 13:49:10 -05:00
Youness Alaoui
5d90cc85cb androidcamera: Adding a device-name property 2016-01-21 13:48:45 -05:00
Youness Alaoui
ebbf475437 androidcamera: Add element documentation 2016-01-21 13:48:44 -05:00
Youness Alaoui
178ef6e9b7 androidcamera: Prettify the gstahccallback.c generation line in the makefile 2016-01-21 13:48:44 -05:00
Youness Alaoui
0cc2e86492 androicamera: Make sure the TMP env var exists and check for DEX var too 2016-01-21 13:48:44 -05:00
Youness Alaoui
42ea071c6c androidcamera: Do not use gst_list_free_full since it requires glib 2.28 2016-01-21 13:48:43 -05:00
Youness Alaoui
832c7adc76 androidcamera: Add smooth-zoom property for smooth zooming feature 2016-01-21 13:48:43 -05:00
Youness Alaoui
9232685782 androidcamera: Add focal-length, view-angle and video-stabilization properties 2016-01-21 13:48:43 -05:00
Youness Alaoui
eea2904e9d androidcamera: Add video stabilization API 2016-01-21 13:48:43 -05:00
Youness Alaoui
a79beef1c3 androidcamera: Add property probe for the photography properties 2016-01-21 13:48:42 -05:00
Youness Alaoui
f69448ef13 androidcamera: Small refactor 2016-01-21 13:48:42 -05:00
Youness Alaoui
0a8804110f androidcamera: Fix small memleak 2016-01-21 13:48:42 -05:00
Youness Alaoui
0a2530ef79 androidcamera: Store GParamSpec for properties and use that for the PropertyProbe comparison 2016-01-21 13:48:42 -05:00
Youness Alaoui
dd78e052ae androidcamera: Handle zoom comparison better, and avoid float precision issue 2016-01-21 13:48:41 -05:00
Youness Alaoui
5975d396e0 androidcamera: Fix EV compensation support 2016-01-21 13:48:41 -05:00
Youness Alaoui
08298ef7f5 androidcamera: Implement new GstPhotography enums 2016-01-21 13:48:41 -05:00
Youness Alaoui
01d6df438d androidcamera: Do not advertise zoom capabilities if camera doesn't support zoom 2016-01-21 13:48:41 -05:00
Youness Alaoui
39d7729476 androidcamera: Be NULL-safe when a JNI list is returned 2016-01-21 13:48:41 -05:00
Youness Alaoui
dae0337d91 androidcamera: Use strcmp on the GParamSpec property name
Use strcmp instead of using the property_id because it's overriden
2016-01-21 13:48:12 -05:00
Youness Alaoui
49a40edae9 androidmedia: Implement property probe for zoom and ev_compensation 2016-01-21 13:48:03 -05:00
Youness Alaoui
1ef65636d1 androidcamera: Add autofocus support 2016-01-21 13:47:53 -05:00
Youness Alaoui
24b29d4266 androidcamera: Override properties 2016-01-21 13:47:52 -05:00
Youness Alaoui
2d45a878b4 anroidcamera: Add support for the GstPhotography interface 2016-01-21 13:47:52 -05:00
Youness Alaoui
77ba73ca7e androidcamera: Add more wrappers for the Camera.Parameters class 2016-01-21 13:47:52 -05:00
Youness Alaoui
2e745fa1b1 androidcamera: Send proper error when unable to open camera 2016-01-21 13:47:52 -05:00
Youness Alaoui
02f36d92bc androidcamera: Adding device-orientation and device-facing properties 2016-01-21 13:47:49 -05:00
Youness Alaoui
a08c895303 androidcamera: Add device property and property probe it 2016-01-21 13:47:27 -05:00
Youness Alaoui
0552bb1b2a androidcamera: Fix memleak and lose of buffer if the data queue is flushing 2016-01-21 13:47:03 -05:00
Youness Alaoui
122083eadb androidcamera: Calling set_preview_callback with NULL frees all the buffers in the queue.
We must not do it at the stop otherwise we lose all our buffers. It's best to do
it during the close, so we free up the resources.
2016-01-21 13:47:03 -05:00
Youness Alaoui
acb15e4178 androidcamera: Drop frames if we don't have a clock and var rename 2016-01-21 13:47:02 -05:00
Youness Alaoui
691ab727b0 androicamera: if buffer size increases, then readd new buffers to the queue and drop old ones
The on_preview callback gets called with NULL if the buffer in the queue is
too small, so we need to handle the case where the array is NULL. Also
there is a bug in the android source which makes it drop one of the buffers
so if we had 5 buffers, and we renegotiate to a higher resolution, then we'd
only get 4 calls to on_preview_frame with NULL, with one being dropped.
This means we can't reallocate the buffers in the if (data == NULL) case
because we might end up with 0 buffers in the end.
2016-01-21 13:47:02 -05:00
Youness Alaoui
c85df6807d androidcamera: If callback is NULL then set it to NULL in jni 2016-01-21 13:47:02 -05:00
Nicolas Dufresne
e3ba219494 androidcamera: Fix debug output 2016-01-21 13:46:52 -05:00
Sebastian Dröge
19e5238379 androidcamera: Chose the smallest range that contains the target framerate 2016-01-21 12:44:43 -05:00
Sebastian Dröge
c633ecc3be androidcamera: Improve negotiation
And make sure we set an FPS range from the supported ones
now instead of a potentially unsupported range.
2016-01-21 12:44:42 -05:00
Sebastian Dröge
08db4f267d androidcamera: Implement LATENCY query 2016-01-21 12:44:42 -05:00
Sebastian Dröge
6cdd4745fe androidcamera: Make sure we always have a valid camera source instance in the buffer free function 2016-01-21 12:44:42 -05:00
Sebastian Dröge
f43897e839 androidcamera: Make sure to not call any callbacks after stopping the camera
Fixes segfaults when rotating the device for example.
2016-01-21 12:44:41 -05:00
Youness Alaoui
1a2bcc769c androidcamera: Fix timestamping issue 2016-01-21 12:44:41 -05:00
Youness Alaoui
25896c5ab7 androidcamera: Add caps negotiation support 2016-01-21 12:44:41 -05:00
Youness Alaoui
bb83c54a87 Add support for getcaps that probes the camera for capabilities 2016-01-21 12:44:41 -05:00
Youness Alaoui
4856d22b9f androidmedia: Drop the first buffer to have proper timestamping 2016-01-21 12:44:40 -05:00
Youness Alaoui
0083adbbed androidmedia: Flush the queue when the source is stopped 2016-01-21 12:44:40 -05:00
Youness Alaoui
dd27b89e95 androidmedia: Allocate/free texture when camera is open/closed 2016-01-21 12:44:40 -05:00
Youness Alaoui
d4717a9639 androidmedia: add a gst_ahc_src_close function 2016-01-21 12:44:39 -05:00
Youness Alaoui
54f3337bd1 androidmedia: Fix small indentation issues 2016-01-21 12:44:39 -05:00
Youness Alaoui
aa390e1be4 androidmedia: Disable plugin if android-sdk isn't found and dynamically search for platform version 2016-01-21 12:44:39 -05:00
Youness Alaoui
e78143f839 androidcamera: Add support for using DexLoader with Embeded GstAhcCallback.jar 2016-01-21 12:44:39 -05:00
Youness Alaoui
d56f094ce6 androidcamera: Fix compilation issues 2016-01-21 12:44:38 -05:00
Youness Alaoui
e42e7317f9 Remove previous cruft and create androidcamera plugin 2016-01-21 12:44:38 -05:00
Youness Alaoui
91219adaf2 Free the buffers and readd the arrays when the queue is cleared 2016-01-21 12:44:38 -05:00
Youness Alaoui
65a6014f26 Add a GST_DVM_CALL macro to ease function calling with exception check 2016-01-21 12:44:37 -05:00
Youness Alaoui
7b8dbd32db Calculate timestamp at reception of the buffer, not when pushing it out 2016-01-21 12:44:37 -05:00
Youness Alaoui
fff14b255c Make the number of callback buffers configurable, and delete their local ref 2016-01-21 12:44:37 -05:00
Youness Alaoui
3c78395e31 Use GstDataQueue instead of GAsyncQueue for storing buffers 2016-01-21 12:44:37 -05:00
Youness Alaoui
4cbfe6fa13 Use the buffer's free_func to map byteArray data without making a copy 2016-01-21 12:11:16 -05:00
Youness Alaoui
af47c1ebdc Remove open failure test code and debug log 2016-01-21 12:11:16 -05:00
Youness Alaoui
666eda11d6 Use YV12 as the default format 2016-01-21 12:11:16 -05:00
Youness Alaoui
7562cc2e26 Add a deinit function and remove jclass references in case of error 2016-01-21 12:11:15 -05:00
Youness Alaoui
37685f09e0 SurfaceTexture constructure needs texture_id 2016-01-21 12:11:15 -05:00
Youness Alaoui
484b0ae658 Add ahcsrc Camera source element prototype 2016-01-21 12:11:15 -05:00
Youness Alaoui
4b975b204c Add android.hardware.Camera (and deps) JNI wrappers 2016-01-21 12:11:14 -05:00
Youness Alaoui
21f60289db Adding Dalvik Virtual Machine routines and macros 2016-01-21 12:11:14 -05:00
Youness Alaoui
347dbf123d androidmedia: Add androidmedia plugin 2016-01-21 12:11:14 -05:00
Alessandro Decina
5c7fb644cd applemedia: vtenc: fix build on iOS 2016-01-19 19:18:43 +11:00
Alessandro Decina
f6154b4cc0 applemedia: always fill GstBuffers with GstMemory
Always fill buffers with our custom memory. The custom memory will avoid
mapping CV/CM buffers unless necessary.
2016-01-19 16:13:04 +11:00
Ilya Konstantinov
8577224c74 applemedia: implement copying of meta
Before this, buffers would lose their Core Video / Core Media meta
over intervideo* boundary.

https://bugzilla.gnome.org/show_bug.cgi?id=747216
2016-01-19 13:06:31 +11:00
Ilya Konstantinov
936b2fdfbc applemedia: implement GstAppleCoreVideoMemory
Implement a new memory type wrapping CVPixelBuffer.

There are two immediate advantages:
 a) Make the GstMemory itself retain the CVPixelBuffer. Previously,
    the containing GstBuffer was solely responsible for the lifetime of
    the backing CVPixelBuffer.

    With this change, we remove the GST_MEMORY_FLAG_NO_SHARE so that
    GstMemory objects be referenced by multiple GstBuffers (doing away
    with the need to copy.)

  b) Delay locking CVPixelBuffer into CPU memory until it's actually
     mapped -- possibly never.

The CVPixelBuffer object is shared among references, shares and
(in planar formats) planes, so a wrapper GstAppleCoreVideoPixelBuffer
structure was introduced to manage locking.

https://bugzilla.gnome.org/show_bug.cgi?id=747216
2016-01-19 12:58:43 +11:00
Alessandro Decina
ed7df2da3c applemedia: iosurfacememory: alloc with g_new0
...since the base class doesn't use g_slice anymore
2016-01-19 12:56:40 +11:00
Matt Crane
eba01f84e5 shmsink: fix possible deadlock in _render()/ _allocator_free()
Drop object lock before unrefing memory, otherwise the object
lock might be taken again from the allocator and then things
deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=760551
2016-01-16 21:46:28 +00:00
Matthew Waters
ffba31b7b2 nvenc: update for recent GL api changes
Specifically the GstGLMemoryPBO addition (which was the unadorned GstGLMemory).
2016-01-12 23:36:54 +11:00
Alessandro Decina
05ccc2f6ea applemedia: avfvideosrc: optionally get the GL context from gst_element_set_context
Allow setting the GL context with gst_element_set_context. When available, the
local context obtained via the context query still has the precedence.
2016-01-12 14:36:02 +11:00
Alessandro Decina
45b40b8467 applemedia: iosurfacememory: remove NO_SHARE flag
The full memory can be safely shared. Sharing a sub region can't be done and
will fail in the base allocator, triggering a copy.
2016-01-12 14:05:01 +11:00
Alessandro Decina
b0f5d4f1d5 applemedia: avfvideosrc: enable renegotiation
We can actually renegotiate now, so remove old check which disabled it.
2016-01-06 16:51:12 +11:00
Alessandro Decina
85df5648bb applemedia: avfvideosrc: small negotiation fix
Fix negotiation when GLMemory is requested but a context is not available
2016-01-06 13:20:17 +11:00
Alessandro Decina
e0d65937bc applemedia: vtenc: accept UYVY on Mac
When doing GLMemory avfvideosrc negotiates UYVY. This change allows avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...
to do GLMemory and 0-copy with the encoder (with the CV meta).
2016-01-06 11:43:37 +11:00
Alessandro Decina
a15d8acff0 applemedia: avfvideosrc: change texture format from BGRA to NV12 on iOS
Change texture format from BGRA to NV12. This allows a pipeline like avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...  to
negotiate GLMemory. This makes the glimagesink branch much faster (obviously)
and triggers the 0-copy path between avfvideosrc and vtenc (using the CV meta).
Combined this results in a huge perf improvement on iOS (25-30% of CPU time in a
pipeline like the one above).

Note that this doesn't introduce a new shader conversion in the sink, since BGRA
textures had to be copied/converted from format=BGRA,texture-target=RECTANGLE to
format=RGBA,texture-target=2D anyway.
2016-01-06 11:43:37 +11:00
Alessandro Decina
bf86d7fef1 applemedia: avfvideosrc: output at highest fps/resolution by default
Fixate to the highest possible resolution and fps. Otherwise by default we end
up fixating at 2fps and the lowest supported resolution, which is hardly what
someone who bought an overpriced smartphone wants.
2015-12-29 10:57:36 +11:00
Matthew Marsh
0e34c02dd6 nvenc: fix high CPU use on initialization of multiple encoders at the same time
We need a static lock to protect various NVENC methods in _set_format(). Without
this the CPU use increases dramatically on initialisation of the element when
there are multiple elements being initialised at the same time.

https://bugzilla.gnome.org/show_bug.cgi?id=759742
2015-12-22 13:27:51 +00:00
Vivia Nikolaidou
fafc8e564c decklinkvideosink: Made "auto" mode work according to caps
When the mode of decklinkvideosink is set to "auto", the sink claims to
support the full set of caps that it can support for all modes. Then, every
time new caps are set, the sink will automatically find the correct mode for
these caps and set it.

Caveat: We have no way to know whether a specific mode will actually work for
your hardware. Therefore, if you try sending 4K video to a 1080 screen, it
will silently fail, we have no way to know that in advance. Manually setting
that mode at least gave the user a way to double-check what they are doing.

https://bugzilla.gnome.org/show_bug.cgi?id=759600
2015-12-18 16:08:02 +01:00
Thomas Roos
f9464ce354 directsoundsrc: add device property as it is done in directsoundsink
This allows selection of the device by GUID instead of the name. The name is
user-given and multiple devices can have the same name.

https://bugzilla.gnome.org/show_bug.cgi?id=759484
2015-12-18 12:39:03 +01:00
Sebastian Dröge
d4920948aa directsoundsrc: Convert header from (some) DOS line endings to UNIX
A mix between different line endings in the same file is not a good idea,
and the .c files are both with UNIX line endings so let's use that.
2015-12-18 12:39:03 +01:00
Julien Isorce
89229bcfed applemedia: set -mmacosx-version-min to 10.8
Otherwise qtkitvideosrc fails to build on OSX 10.10.4
because QTKit has been deprecated since OS X 10.9.

Also set -mmacosx-version-min=10.8 in front to allow
the user or cerbero to override the version.

https://bugzilla.gnome.org/show_bug.cgi?id=745564
2015-12-18 10:30:25 +00:00
Alessandro Decina
6961945110 glmemory: add gst_gl_memory_allocator_get_default
Add gst_gl_memory_allocator_get_default to get the default allocator based on
the opengl version. Allows us to stop hardcoding the PBO allocator which isn't
supported on gles2.

Fixes GL upload on iOS9 among other things.
2015-12-18 14:25:32 +11:00
Matthew Waters
5dcd500257 gl*memory*: reverse the parameter order of user_data and destroy notify
The convention is to have the destroy notify last after any user data
2015-12-17 15:44:22 +11:00
Alessandro Decina
491e2eefcb applemedia: fix build on iOS
Fix build after 779dc3132c
2015-12-17 15:07:33 +11:00
Alessandro Decina
4f550ff50f applemedia: avfvideosrc: do fixate 2015-12-17 14:49:13 +11:00
Matthew Waters
779dc3132c glmemorypbo: remove our own alloc()/wrapped()/etc functions
replaced by equivalent functionality within gst_gl_base_memory_alloc()
2015-12-17 13:49:56 +11:00
Matthew Waters
650e5c4fe5 glmemory: implement GstGLBaseMemory::alloc
- Create GstGLVideoAllocationParams which is a GstGLAllocationParams subclass.
- Make it possible to allocate glmemory objects directly if no frills are
  needed.
2015-12-17 13:49:55 +11:00
Sebastian Dröge
4b04d4a02d applemedia: Link to IOSurface.framework for the IOSurface API 2015-12-16 10:21:59 +01:00
Sebastian Dröge
34586e0ffd applemedia: Link to IOKit.framework for IOSurface related functions 2015-12-16 09:39:03 +01:00
Alessandro Decina
fe42e302dd applemedia: vtdec: fix texture-target on iOS 2015-12-16 17:03:04 +11:00
Alessandro Decina
89b6c296ad applemedia: vtdec: remove obsolete FIXME 2015-12-16 17:03:04 +11:00
Alessandro Decina
bbdb22efba applemedia: avfvideosrc: rework GLMemory negotiation
Only do GLMemory when a GstGLContext is available AND GLMemory is actually
negotiated with downstream.
2015-12-16 17:03:04 +11:00
Alessandro Decina
0a73abd448 applemedia: avfvideosrc: update after IOSurface changes
Prefer GLMemory over sysmem. Also now when pushing GLMemory we push the
original formats (UYVY in OSX, BGRA in iOS) and leave it to downstream to
convert.
2015-12-16 17:03:04 +11:00
Alessandro Decina
9981cd8327 applemedia: vtdec: remove the internal GstGLColorConvert
It was added back in the day to make texture sharing work by default with
glimagesink inside playbin. These days glimagesink accepts (and converts) YUV
internally so it's no longer needed.
2015-12-16 17:03:03 +11:00
Alessandro Decina
07bf3796aa applemedia: vtdec: decouple outputting textures from outputting RGBA
We're going to be able to output NV12 textures soon.
2015-12-16 17:03:03 +11:00
Alessandro Decina
8ae0033261 applemedia: vtdec: switch to IOSurface on Mac
Switch to using IOSurface instead of CVOpenGLTextureCache on OSX. The latter can't be
used anymore to do YUV => RGB with opengl3 on El Capitan as GL_YCBCR_422_APPLE
has been removed from the opengl3 driver. Also switch to NV12 from UYVY, which
was the only YUV format supported by CVOpenGLTextureCache.
2015-12-16 17:03:03 +11:00
Alessandro Decina
e730b0a8ab applemedia: rename GstCoreVideoTextureCache to GstVideoTextureCache
First of a few commits to stop using CVOpenGLTextureCache on OSX and use
IOSurfaces directly instead. CVOpenGLTextureCache hasn't been updated for OpenGL
3 which is why texture sharing is currently disabled on OSX.
2015-12-16 17:03:03 +11:00
Alessandro Decina
a8b01eb6d1 Revert "vtdec: disable the texture cache on OSX"
This reverts commit f02425c4af.
2015-12-16 17:03:03 +11:00
Vineeth TM
7c42ba97d7 plugins-bad: Fix example pipelines
rename gst-launch --> gst-launch-1.0
replace old elements with new elements(ffmpegcolorspace -> videoconvert, ffenc_** -> avenc_**)
fix caps in examples

https://bugzilla.gnome.org/show_bug.cgi?id=759432
2015-12-15 10:30:49 +00:00
Matthew Waters
3088063ebd applemedia: update for GLMemory API changes 2015-12-14 19:18:14 +11:00
Matthew Waters
fd3203cfeb amcvideodec: update for GLMemory API changes 2015-12-14 19:15:14 +11:00
Thomas Roos
d794908dfd directsoundsrc: Check return values of DirectSound functions in read loop
Otherwise we might end up in an infinite loop because of errors.

Also take the element's mutex in unprepare().

https://bugzilla.gnome.org/show_bug.cgi?id=738292
2015-12-11 12:46:41 +02:00
Frédéric Wang
47d2a13d48 acm: Port ACM MP3 decoder and encoders to GStreamer 1.x
https://bugzilla.gnome.org/show_bug.cgi?id=744047
2015-12-07 13:25:28 +02:00
Sebastian Dröge
d8b1efe13a d3dvideosink: Don't try to recreate swapchain while the window is minimized
It will fail and cause the sink to crash. Instead wait until the window is
visible again before checking if the swapchain really has to be recreated.

https://bugzilla.gnome.org/show_bug.cgi?id=741608
2015-11-30 19:53:28 +02:00
Mathias Hasselmann
d387bfd188 androidmedia: Don't add metadata to locked buffer
The video decoders tried calling gst_buffer_add_*meta() on non-writable
buffer resulting in warnings of this kind:

  gstamcvideodec.c:921 (_gl_sync_render_unlocked): WARNING: amcvideodec
  Failed to create the transformation meta for the gl_sync 0xabc03848
  buffer 0xabb01b40 (0)

https://bugzilla.gnome.org/show_bug.cgi?id=758694
2015-11-26 22:24:26 +11:00
Matthew Waters
ab3fd36d64 amcvideodec: move release_output_buffer into the sync meta
Some devices only ever keep one buffer available in the GL queue resulting in
multiple calls to release_output_buffer only causing one frame to be rendered.
If there is a queue after amcvideodec (even playsink's small one), then
multiple buffers are pushed but only a small fraction of them are actually
rendered on time.  The rest will either render some number of frames ahead of
where they are meant to be or timeout waiting for a frame that's already been
rendered.

Solved by moving the release_output_buffer into the sync_meta the is pushed
downstream.  When downstream renders, the custom sync implementation attempts
to release the current buffer (if not already released) and render. Once the
frame has been rendered to the screen, the next frame is released and is
hopefully available by the time the next frame is to be rendered.

This fixes a perceived frame jitter in the output.
2015-11-19 19:25:48 +11:00
Reynaldo H. Verdejo Pinochet
86ec812429 Remove unnecessary NULL checks before g_free()
g_free() is NULL-safe
2015-11-18 16:05:42 -08:00
Sebastian Dröge
96eb5ef33c amcvideodec: Don't require a non-zero buffer size when doing decoding to a surface
At least on some devices/Android versions the buffer size will always be zero
in these cases.

https://bugzilla.gnome.org/show_bug.cgi?id=758228
2015-11-18 09:23:49 +02:00
Sebastian Dröge
be7f4d6cd6 amcvideodec: Fix indentation 2015-11-17 16:21:10 +02:00
Alessandro Decina
3d5a1ccbf4 applemedia: vtdec: fix negotiation more
Year 12: I still don't understand how negotiation works.

Apparently gst_pad_query_caps doesn't do what I thought it did. To get the
actual caps that can flow through vtdec:src we must call gst_pad_peer_query_caps
with the template caps as filter.

Fixes negotiation with stuff that doesn't understand GLMemory (hello videoscale).
2015-11-17 16:15:53 +11:00
Alessandro Decina
94cd5316f3 applemedia: vtdec: minor texture cache fixes
Small fix on how the texture cache is cleaned up / setup in case of renegotiation
2015-11-17 16:15:53 +11:00
Alessandro Decina
3c681045bf applemedia: corevideotexturecache: stop configuring cache->convert over and over 2015-11-17 16:15:53 +11:00
Matthew Waters
3bf7430411 glimagesink: wait on the correct sync meta when rendering 2015-11-17 15:27:26 +11:00
Matthew Waters
f2ca0eaf27 amcviddec: output external-oes textures
This provides a performance and power usage improvement by removing
the texture copy from an OES texture to 2D texture.

The flow is as follows
1. Generate the output buffer with the required sync meta with the incrementing
   push counter and OES GL memory
1.1 release_output_buffer (buf, render=true) and push downstream
2. Downstream waits for on the sync meta (timed wait) or drops the frame (no wait)
2.1 Timed wait for the frame number to reach the number of frame callbacks fired
2.2 Unconditionally update the image when the wait completes (success or fail).
    Sets the affine transformation matrix meta on the buffer.
3. Downstream renders as usual.

At *some* point through this the on_frame_callback may or may not fire.  If it
does fire, we can finish waiting early and render. Otherwise we have to
wait for a timeout to occur which may cause more buffers to be pused into the
internal GL queue which siginificantly decreases the chances of the
on_frame_callback to fire again.  This is because the frame callback only occurs
when the internal GL queue changes state from empty to non-empty.

Because there is no way to reliably correlate between the number of buffers
pushed and the number of frame callbacks received, there are a number of
workarounds in place.
1. We self-increment the ready counter when it falls behind the push counter
2. Time based waits as the frame callback may not be fired for a certain frame.
3. It is assumed that the device can render at speed or performs some QoS of
   the interal GL queue (which may not match the GStreamer QoS).

It holds that we call SurfaceTexture::updateTexImage for each buffer pushed
downstream however there's no guarentee that updateTexImage will result in
the exact next frame (it could skip or duplicate) so synchronization is not
guaranteed to be accurate although it seems to be close enough to be unable
to discern visually.  This has not changed from before this patch.  The current
requirement for synchronization is that updateTexImage is called at the point in
time when the buffers is to be rendered.

https://bugzilla.gnome.org/show_bug.cgi?id=757285
2015-11-17 15:27:26 +11:00
Alessandro Decina
35052fdfd0 applemedia: vtdec: fix setting internal SKIP / DROP flags 2015-11-17 15:19:01 +11:00
Alessandro Decina
119e09eac3 applemedia: vtdec: improve negotiation
Rework negotiation implementing GstVideoDecoder::negotiate. Make it possible to
switch texture sharing on and off at runtime. Useful to (eventually) turn
texture sharing on in pipelines where glimagesink is linked only after
decoding has already started (for example OWR).
2015-11-17 12:59:58 +11:00
Alessandro Decina
8f14882b44 applemedia: vtdec: improve handing of decode errors/frame drops
Improve decode error handling by avoiding calling into GstVideoDecoder from the
VT decode callback. This removes contention on the GST_VIDEO_DECODER_STREAM_LOCK
which used to make the decode callback slow enough for VT to start dropping lots
of frames once the first frame was dropped.
2015-11-17 12:59:58 +11:00
Alessandro Decina
8a171754e5 applemedia: vtdec: fix uninitialized variable warning 2015-11-17 12:59:58 +11:00
Heinrich Fink
788ff2f98e vtenc: Set profile_level to NULL after release
Otherwise, gst_vtenc_negotiate_profile_and_level will double-release as
it checks for profile_level != NULL. This caused crashes when the
vtenc instance is stopped and then restarted.

https://bugzilla.gnome.org/show_bug.cgi?id=757935
2015-11-11 14:49:58 +01:00
Alessandro Decina
75ad1246a2 applemedia: fix vtdec texture sharing on ios 9.1
Use gst_gl_sized_gl_format_from_gl_format_type to get the format passed to
CVOpenGLESTextureCacheCreateTextureFromImage. Before this change extracting the
second texture from the pixel buffer was failing on ios 9.1.
2015-11-10 14:24:42 +11:00
Tim-Philipp Müller
8a78e788b0 dshow: fix GList leak
_remove_link() would not free the actual list nodes.
2015-11-06 13:00:55 +00:00
Luis de Bethencourt
508451005d dvbsrc: use GST_STIME_ARGS for GstClockTimeDiff
No need to use G_GINT64_FORMAT for potentially negative values of
GstClockTimeDiff. Since 1.6 these can be handled with GST_STIME_ARGS.
Plus it creates more readable values in the logs.

https://bugzilla.gnome.org/show_bug.cgi?id=757480
2015-11-03 15:05:43 +00:00
Luis de Bethencourt
1ba4d63d6a amcvideodec: use GST_STIME_ARGS for GstClockTimeDiff
No need to manually handle negative value of deadline, GST_STIME_ARGS does
exactly this.
2015-11-03 15:00:28 +00:00
Alessandro Decina
5336cc9ff6 Revert "vtenc: free input buffer ASAP"
This reverts commit 6101fc57b8.

GstVideoEncoder assumes that the input buffer is available until _finish_frame.

https://bugzilla.gnome.org/show_bug.cgi?id=756951
2015-11-02 20:16:15 +11:00
Philippe Renon
c4657f4276 ksvideosrc: don't try to align current timestamp on previous timestamp
this causes frames to be dropped.

Based on a patch by Sebastian Dröge

https://bugzilla.gnome.org/show_bug.cgi?id=748337
2015-11-01 11:16:36 +02:00
Matthew Waters
34c523c3b9 vtdec: fix compilation error
Undefined symbols for architecture x86_64:
  "__gl_target_to_gst", referenced from:
      __do_get_gl_buffer in libgstapplemedia_la-corevideotexturecache.o
2015-10-30 16:38:17 +11:00
Matthew Waters
ccce217502 glcolorconvert: add support for converting texture targets
Solved with a simple shader templating mechanism and string replacements
of the necessary sampler types/texture accesses and texture coordinate
mangling for rectangular and external-oes textures.
2015-10-30 14:24:53 +11:00
Matthew Waters
e61d504556 glmemory: add support for rectangle textures
Add the various tokens/strings for the differnet texture types (2D, rect, oes)

Changes the GLmemory api to include the GstGLTextureTarget in all relevant
functions.

Update the relevant caps/templates for 2D only textures.
2015-10-30 14:24:53 +11:00
Matthew Waters
c6f2426a7a androidmedia: fix build errors
printf %lld instead of G_GINT64_FORMAT.
Double ret variable declaration.
2015-10-21 05:33:13 +11:00
Matthew Waters
c322806227 amcviddec: use gstcontext to retreive the OpenGL context 2015-10-21 04:27:43 +11:00
Matthieu Bouron
7dbb6681a3 androidmedia: Only allow GL output if the decoder has unknown color formats
If GST_AMC_IGNORE_UNKNOWN_COLOR_FORMATS is set to yes, non-GL output
is still allowed.

https://bugzilla.gnome.org/show_bug.cgi?id=731204
2015-10-21 04:27:43 +11:00
Matthieu Bouron
43b63f304d androidmedia: Add support for GL output in amcvideodec
https://bugzilla.gnome.org/show_bug.cgi?id=731204
2015-10-21 04:27:43 +11:00
Matthieu Bouron
45e287840d androidmedia: Do not flush codec if it is not started 2015-10-21 04:27:43 +11:00
Matthieu Bouron
6ca0be038a androidmedia: Allow object to be NULL in gst_amc_jni_*unref functions 2015-10-21 04:27:43 +11:00
Edward Hervey
88cd44fbd8 androidmedia: Fix debug statement (%d for a gsize argument) 2015-10-21 04:27:43 +11:00
Matthieu Bouron
4ab1e66b2e androidmedia: Improve color format debug messages 2015-10-21 04:27:43 +11:00
Matthieu Bouron
8c46a7704a androidmedia: Improve debug messages 2015-10-21 04:27:43 +11:00
Matthieu Bouron
a038478f1b androidmedia: Do not warn we do not support COLOR_FormatSurface 2015-10-21 04:27:43 +11:00
plamot
e0ffcd30e8 dshowvideosink: Fix 64bit compatibility issue
SetWindowLong works only for 32 bit systems, thus windows events (move/resize)
where not interpreted on 64 bit systems

https://bugzilla.gnome.org/show_bug.cgi?id=756617
2015-10-19 15:23:38 +03:00
Sebastian Dröge
f441b9d5d2 amcvideodec: Properly forward the return value of gst_video_decoder_negotiate()
https://bugzilla.gnome.org/show_bug.cgi?id=756578
2015-10-16 09:12:35 +03:00
Sebastian Dröge
b48524c357 amcvideodec: Implement support for COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView for decoding
https://bugzilla.gnome.org/show_bug.cgi?id=756578
2015-10-16 09:12:35 +03:00
Reynaldo H. Verdejo Pinochet
0ac769194f dvb: simplify ZAP file format parser
Simplify state handing, drop unneeded local vars, etc.
2015-10-09 17:53:52 -07:00
Aleix Conchillo Flaqué
12a2acd7e8 applemedia: dist missing header files
https://bugzilla.gnome.org/show_bug.cgi?id=755852
2015-09-30 09:05:08 +01:00
Matthew Waters
63a7cbf8f1 nvenc: call the parent class on GstElement::set_context 2015-09-29 16:17:22 +10:00
Matthew Waters
b1d13e10af Add Nvidia based hardware encoder element
Currently only h264 is supported

https://bugzilla.gnome.org/show_bug.cgi?id=753405
2015-09-29 15:32:17 +10:00
Sebastian Dröge
9764e22a5c decklink: Add a clock epoch that is used as offset whenever restarting the clock
Otherwise we're going to return times starting at 0 again after shutting down
an element for a specific input/output and then using it again later.

https://bugzilla.gnome.org/show_bug.cgi?id=755426
2015-09-24 09:32:36 +02:00
Sebastian Dröge
e0fd5317df decklink: Disable inputs/outputs in PAUSED->READY to allow going to PAUSED again from there
https://bugzilla.gnome.org/show_bug.cgi?id=755426
2015-09-24 09:32:27 +02:00
Matthew Waters
f02425c4af vtdec: disable the texture cache on OSX
This a workaround until the incompatibility with CVOpenGLTextureCache
and opengl3 contexts is fixed.

https://bugzilla.gnome.org/show_bug.cgi?id=754786
2015-09-18 21:31:15 +10:00
Matthew Waters
578b8432b6 vtdec: gst-indent file 2015-09-18 16:58:21 +10:00
Matthew Waters
3772c8ece6 applemedia/vtdec: fix negotiation errors when resizing glimagesink
GstVideoDecoder has its own logic for detecting when to reconfigure
which ultimately calls decide_allocation and results in a new
texture cache that has not been configured from our reconfigure check.

https://bugzilla.gnome.org/show_bug.cgi?id=755156
2015-09-17 21:14:24 +10:00
Vineeth T M
e98addcc31 avdtputil: fix GError memory leak during failures
https://bugzilla.gnome.org/show_bug.cgi?id=755142
2015-09-17 11:55:49 +02:00
Jan Schmidt
9f890c5935 vtdec: Use R/RG textures for NV12 when the context provides them
Fixes playback to GL memory on iOS, where the colours are messed
up by passing Luminance/LuminanceAlpha textures where
color convert expects R/RG textures.

https://bugzilla.gnome.org/show_bug.cgi?id=754504
2015-09-12 04:33:34 +10:00
Jan Schmidt
0d7d7f6c92 vtdec: Prefer GL output caps.
Prefer GL caps by putting them first in the pad template and
intersecting using GST_CAPS_INTERSECT_FIRST.
2015-09-12 04:33:34 +10:00
Sebastian Dröge
b2149e7bb4 decklinkvideosink: less-than-zero comparison of an unsigned value is never true
Use the correct type, GstClockTimeDiff, instead.

CID 1323742
2015-09-10 14:11:58 +03:00
Sebastian Dröge
b6498c32f3 decklinkvideosink: Handle pipelines where the running time does not start around 0 properly
We were converting all times to our internal running times, that is the time
the sink itself spent in PLAYING already. But forgot to do that for the
running time calculated from the buffer timestamps. As such, all buffers were
scheduled much later if the pipeline's running time did not start at 0.

This happens for example if a base time is explicitly set on the pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=754528
2015-09-09 16:59:02 +03:00
Sebastian Dröge
a6744a915b decklinkvideosink: Consider pipeline latency, render delay and ts offset when scheduling frames
Without this, we will schedule all frames too late in live pipelines.

https://bugzilla.gnome.org/show_bug.cgi?id=754666
2015-09-09 16:58:45 +03:00
Kouhei Sutou
21bfa428d1 directsoundsrc: fix build error for 64bit Windows build by MinGW
Casting to UINT from HMIXER generates the following warning with
64bit Windows target MinGW:

    gstdirectsoundsrc.c: In function 'gst_directsound_src_mixer_find':
    gstdirectsoundsrc.c:733:30: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
         mmres = mixerGetDevCaps ((UINT) dsoundsrc->mixer,
                                  ^
    cc1: all warnings being treated as errors

We can use portable GPOINTER_TO_UINT() macro for this propose.

https://bugzilla.gnome.org/show_bug.cgi?id=754756
2015-09-09 16:57:08 +03:00
Tim-Philipp Müller
536e3742aa Fix file permissions of some files 2015-08-28 19:55:59 +01:00
Arnaud Vrac
697f117ddd configure.ac: fix build when the uvch264 plugin is not selected
Instead of checking for the gstreamer-video-1.0 package is installed,
just assume it is since we already check for the -base dependency.

With this replace the GST_VIDEO_* variables in makefiles and directly
link with libgstvideo.

https://bugzilla.gnome.org/show_bug.cgi?id=753820
2015-08-19 16:52:03 +03:00
Sebastian Dröge
d3dbb69c8e winscreencap: Properly timestamp buffers with the current clock running time instead of doing magic
Also implement framerate handling correctly by borrowing the code from
ximagesrc. GstBaseSrc::get_times() can't be used for that, we have to
implement proper waiting ourselves.
2015-08-03 19:42:56 +03:00
Heinrich Fink
0cc6d16c94 applemedia/avsample: Fix racy cleanup of CA layer
The block that is dispatched async to the main thread assumed the
wrapping GstAvSampleVideoSink to be alive. However, at the time of
the block execution the GstObject instance that is deferenced to access
the CA layer might already be freed, which caused occasional crashes.
Instead, we now only pass the CoreAnimation layer that needs to be
released to the block. We use __block to make sure the block is not
increasing the refcount of the CA layer again on its own.

https://bugzilla.gnome.org/show_bug.cgi?id=753081
2015-07-31 12:59:00 +10:00
Sebastian Dröge
431c4b5e84 amcvideoenc: Always set i-frame-interval setting
Most encoders fail to initialize if we don't set it at all.
2015-07-29 10:13:17 +01:00
Nicolas Dufresne
01816b861f bluez: Add built sources to CLEANFILES 2015-07-25 09:03:27 -04:00
Ilya Konstantinov
bfa054a733 vtdec: handle non-consecutive GstBuffer input without copying
CMBlockBuffer offers a model similar to GstBuffer, as it can
consist of multiple non-consecutive memory blocks.

Prior to this change, what we were doing was:

 1) Incorrect:

   CMBlockBufferCreateWithMemoryBlock does not copy the data,
   but we gst_buffer_unmap'd right away.

 2) Inefficient:

   If the GstBuffer consisted of non-contiguous memory blocks,
   gst_buffer_map resulted in malloc / memcpy.

With this change, we construct a CMBlockBuffer out of individual mapped
GstMemory objects. CMBlockBuffer is made to retain the GstMemory
objects (through the use of CMBlockBufferCustomBlockSource), so the
original GstBuffer can be unref'd.

https://bugzilla.gnome.org/show_bug.cgi?id=751241
2015-07-13 11:11:04 -04:00
Matthew Waters
c1906f1cfe applemedia/avsample: fix unconditional use of OSX 10.10 API
We can just not use the error/status properties

https://bugzilla.gnome.org/show_bug.cgi?id=746631
2015-07-13 23:26:14 +10:00
Rico Tzschichholz
d533bfddb5 bluez: Fix make dist while bluez >= 5 is not available 2015-07-10 09:52:07 +05:30
Edward Hervey
e8523446d8 bluez: Include new file in dist'ed files
Fixes make distcheck and tarball generation
2015-07-09 11:06:00 +02:00
Luis de Bethencourt
7d08d56527 bluez: remove unnecessary goto
All goto fail happen before ret is set. ret must be NULL, and the only
thing the fail statement block does is return NULL. Replacing the jumps to
do this return directly.

CID #1311329
2015-07-08 12:23:51 +01:00
Sebastian Dröge
42a1a95f3e androidmedia: Add support for H265/HEVC 2015-07-08 11:42:48 +03:00
Ilya Konstantinov
cc3d79f7cc vtdec: fix refcount error in error handling
https://bugzilla.gnome.org/show_bug.cgi?id=751641
2015-07-07 20:18:50 +03:00
Nick Stoughton
2aa0eba673 bluez: refactor to use glib and add connection state tracking 2015-07-03 15:41:52 +05:30
Vineeth TM
96d691694a amc: fix check whether we managed to acquire a buffer
https://bugzilla.gnome.org/show_bug.cgi?id=751821
2015-07-02 09:14:45 +01:00
Sebastian Dröge
d5a676aec8 androidmedia: Call initialize_classes() also when we got the Java VM from the app
https://bugzilla.gnome.org/show_bug.cgi?id=751664
2015-06-29 18:51:04 +02:00
Luis de Bethencourt
bf2f4f5c8c docs: decodebin2 -> decodebin 2015-06-25 11:02:45 +01:00
Ilya Konstantinov
ad8bf99f04 applemedia: enable sharing of CMBlockBuffer data
Instead of wrapping with GST_MEMORY_FLAG_NO_SHARE, we make the GstMemory
object retain the underlying CMBlockBuffer.

https://bugzilla.gnome.org/show_bug.cgi?id=751072
2015-06-25 10:49:05 +02:00
Ilya Konstantinov
8cd65c3250 applemedia: CMBlockBuffer can be non-contiguous
CMBlockBufferGetDataLength would return the entire data length, while
size of individual blocks can be smaller. Iterate over the block buffer
and add the individual (possibly non-contiguous) memory blocks.

https://bugzilla.gnome.org/show_bug.cgi?id=751071
2015-06-25 10:33:54 +02:00
Ilya Konstantinov
58ce6d50a0 avfvideosrc: add frame rate range to caps
When AVFoundation indicates a supported frame rate range, add it to
the caps. This is important for devices such as the iPhone 6, which
indicate a single AVFrameRateRange of 2fps - 60fps.

https://bugzilla.gnome.org/show_bug.cgi?id=751048
2015-06-22 18:22:57 +02:00
Tim-Philipp Müller
1a182e7a41 uvch264src: fix small leak in caps query handler
gst_query_set_caps_result() does not take ownership of the caps.
2015-06-22 09:23:12 +01:00
Vineeth TM
dd3f3142bc uvch264_src: add missing break in caps query handler
There is a missing break statement in switch,
which will result in executing default case as well
resulting in wrong behavior

https://bugzilla.gnome.org/show_bug.cgi?id=751305
2015-06-22 09:20:18 +01:00
Sebastian Dröge
6b2800e324 androidmedia: Allow the application to provide the Java VM
In JNI_OnLoad() we will already get the Java VM passed and could
just directly use that. gstreamer_android-1.0.c will now provide
this to us.

Reason for this is that apparently not all Android system are
providing the JNI functions to get the currently running Java VMs, so
we would fail to get. With this we will always be able to get the Java
VM on such systems.
2015-06-18 14:38:04 +02:00
Sebastian Dröge
c51b012991 androidmedia: Prefer software codecs over hardware codecs for audio
Hardware codecs don't make sense for audio and are generally less reliable on
Android than the software codecs.
2015-06-18 14:31:39 +02:00
Sebastian Dröge
26396bfac2 androidmedia: Failing to detach a thread is not that much of a problem
Someone else might have detached it before us, so make this just normal debug
output instead of a GST_ERROR()
2015-06-18 14:29:33 +02:00
Sebastian Dröge
ade625111e androidmedia: Don't fail if JNI_CreateJavaVM can't be found
We only need that if no Java VM is running yet, and all usual cases,
i.e. when calling GStreamer from an actual Android app, there will already
be a Java VM we can just use.

It seems like some phones come without that symbol, let's hope they come
with the other symbol but for now don't make a missing JNI_CreateJavaVM fatal.
2015-06-18 10:45:24 +02:00
Sebastian Dröge
6be20ffb79 androidmedia: Move variables into the scope where they are needed 2015-06-15 14:22:00 +02:00
Sebastian Dröge
90c4a6ecd0 androidmedia: Don't query supported color formats for non-video codecs 2015-06-15 12:20:24 +02:00
Arun Raghavan
c7eb883e22 opensles: Fix build with Android API level < 14
Headers were broken on older Android versions, apparently.

https://bugzilla.gnome.org/show_bug.cgi?id=744459
2015-06-13 16:03:58 +05:30
Arun Raghavan
e3ed00e4eb openslessink: Allow setting the stream type via a property 2015-06-13 16:03:00 +05:30
Arun Raghavan
6b728f184f openslessrc: Implement recording presets
This allows us to signal what kind of audio we are expecting to record,
which should tell the system to apply filters (such as echo
cancellation, noise suppression, etc.) if required.
2015-06-13 16:03:00 +05:30
Sebastian Dröge
e3aaff400a decklinkvideosink: Remove late frame-dropping workaround for basesink bug
This was fixed by https://bugzilla.gnome.org/show_bug.cgi?id=749258
in basesink, and is not necessary to duplicate here anymore.
2015-06-13 11:41:33 +02:00
Sebastian Dröge
62f25894a5 decklinkvideosink: Don't require the same framerate in the input as the mode's framerate
We only really care about the timestamps for the sink.
2015-06-12 22:35:03 +02:00
Ilya Konstantinov
29c79d7595 vtenc: always enqueue frames, even on error
Even when we fail to encode frame, we should still enqueue it so
it could be passed into handle_frame (with output_buffer == NULL).
Otherwise, we risk GstVideoEncoder's queue of frames growing unbounded.

Note: We're slightly changing the renegotiation code to accommodate for
frames without output buffers, but this commit takes no ownership over
the way negotiation is being done.

https://bugzilla.gnome.org/show_bug.cgi?id=750669
2015-06-10 22:23:06 +02:00
Fabio Cetrini
79f57e62dc d3dvideosink: Avoid frame rendering while the window is completely hidden
https://bugzilla.gnome.org/show_bug.cgi?id=749856
2015-06-10 15:03:31 +02:00
Ilya Konstantinov
6101fc57b8 vtenc: free input buffer ASAP
VTCompressionSessionEncodeFrame retains the CVPixelBuffer during
encoding, and will release it as soon as it can (e.g. before it even
calls our callback). This means we can safely release input buffer
at this point, possibly allowing the system to reuse it sooner.

https://bugzilla.gnome.org/show_bug.cgi?id=750671
2015-06-10 10:30:23 +02:00
Ilya Konstantinov
f5c29c7379 vtenc: Add missing gst_vtenc_frame_free() in error path
https://bugzilla.gnome.org/show_bug.cgi?id=750668
2015-06-10 10:26:28 +02:00
Ilya Konstantinov
5db08a8b89 vtenc: add alignment=au to sink caps
VT compression callback gets a CMSampleBuffer per frame, so vtenc_h264
should set 'alignment=au' in sink caps to indicate this.

https://bugzilla.gnome.org/show_bug.cgi?id=750635
2015-06-10 10:20:44 +02:00
Chris Clayton
376d831178 uvch264src: fix compiler warnings
https://bugzilla.gnome.org/show_bug.cgi?id=750601
2015-06-09 18:30:55 +01:00
Ilya Konstantinov
05cc418ca2 avfassetsrc: fix huge memory leak
CMSampleBuffers were retained -> huge memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=750638
2015-06-09 16:36:41 +02:00
Ilya Konstantinov
faf903720a vtenc: no need for queue_length with try_pop 2015-06-09 16:20:06 +02:00
Ilya Konstantinov
1f7681dd0a vtdec: don't copy meta from input to output
Copying arbitrary metas is going to cause problems and this should really be
handled by the base class. It overrides most other things already anyway,
including timestamp and duration. Those are just set here now so we can
insert the frame sorted into the queue.

https://bugzilla.gnome.org/show_bug.cgi?id=748922
2015-06-09 16:20:06 +02:00
Thiago Santos
045bfa10fe Fix a common typo: retreive -> retrieve
Seems to have been copy pasted around a few places
2015-06-05 09:43:35 -03:00
Tim-Philipp Müller
96d1331679 ksvideosrc: fix logic and timestamp non-muxed streams again
https://bugzilla.gnome.org/show_bug.cgi?id=750381
2015-06-04 13:31:56 +01:00
Sebastian Dröge
d221108857 amc: Only lower ranks of OMX.Exynos. audio codecs, the video codecs are actually working 2015-06-01 20:03:22 +02:00
Sebastian Dröge
bf07b52477 amc: Give marginal rank to codecs that start with OMX.Exynos.
OMX.Exynos. codecs are existing on some devices like the
Galaxy S5 mini, and cause random crashes (of the device,
not the app!) and generally misbehave. That specific device
has other codecs that work with a different name, but let's
just give them marginal rank in case there are devices that
have no other codecs and these are actually the only working
ones
2015-06-01 19:41:21 +02:00
Sebastian Dröge
2e0395aa59 androidmedia: Give lower ranks to codecs not starting with OMX.
On some devices there are codecs that don't start with OMX., while
there are also some that do. And on some of these devices the ones
that don't start with OMX. just crash during initialization while
the others work. To make things even more complicated other devices
have codecs with the same name that work and no alternatives.
So just give a lower rank to these non-OMX codecs and hope that
there's an alternative with a higher rank.

Also stagefright gives codecs starting with OMX. a higher rank too and
considers other codecs that don't start with OMX. as software codecs.
2015-06-01 19:41:21 +02:00
Nicolas Dufresne
4cca6efda8 vtdec: Require width and height field for H264
This decoder does not work if width and height field are not set
in the sinkpad caps. Let's make this explicit by adding them to
the template caps.

https://bugzilla.gnome.org/show_bug.cgi?id=749655
2015-06-01 11:23:41 -04:00
Ilya Konstantinov
94e7ed1323 vtenc: fix keyframe request race condition
It is incorrect to modify the frame properties after passing them, since
VTCompressionSessionEncodeFrame takes reference and we have no control
over when it's being used.

In fact, the code can be simplified. We just preallocate the frame
properties for keyframe requests, and pass NULL otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=748467
2015-06-01 13:32:03 +02:00
Sebastian Dröge
a6fb482247 androidmedia: Conditionally use get_{input,output}_buffer() Android 21 APIs
Also properly set limit/position on byte buffer, some codecs prefer to have
correct values there.
2015-05-31 21:27:27 +02:00
Jan Schmidt
e7381ed17a wasapi: Fix flags order for uninstalled build 2015-05-21 13:42:29 +10:00
Sebastian Dröge
8bacecfb08 amcaudiodec: Add an output adapter for chunking the output into codec frames
Otherwise the base class will be confused.
See https://bugzilla.gnome.org/show_bug.cgi?id=685730
2015-05-19 19:12:41 +03:00
Ilya Konstantinov
c948484c7f avfvideosrc: fix unconditional buffer queue unlock
Unless stopRequest is set, we should unlock conditionally -- otherwise,
the 'create:' method can wake up to an empty buffer queue
and pull a nil buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=748054
2015-05-11 21:11:30 +10:00
Heinrich Fink
6007829e77 decklink: Rename mode 2048p to 1556p
https://bugzilla.gnome.org/show_bug.cgi?id=749218
2015-05-11 13:20:11 +03:00
Heinrich Fink
1dabd7c5b8 decklink: Use correct frame rate for mode 2160p50
https://bugzilla.gnome.org/show_bug.cgi?id=749218
2015-05-11 13:14:39 +03:00
Heinrich Fink
e6d82dec32 decklink: Rename mode 3184p to 2160p
https://bugzilla.gnome.org/show_bug.cgi?id=749218
2015-05-11 13:14:15 +03:00
Sebastian Dröge
7020154f1c vtdec: We shouldn't manually check reconfigure flag on pads but instead implement ::negotiate()
Add FIXME comment related to that.
2015-05-08 15:08:18 +02:00
Matthieu Bouron
3c77fbda87 androidmedia: Add suport for COLOR_FormatYV12
Reference: http://developer.android.com/reference/android/graphics/ImageFormat.html#YV12

https://bugzilla.gnome.org/show_bug.cgi?id=747126
2015-05-04 12:45:12 +02:00
Matthieu Bouron
bd21df1056 androidmedia: Declare QOMX_COLOR_FORMATYVU420PackedSemiPlanar32mMultiView constant
This color format is the same as QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m
but stores two images one after the other in a top-bottom layout.

https://bugzilla.gnome.org/show_bug.cgi?id=747126
2015-05-04 12:44:56 +02:00
Matthieu Bouron
21ff3ae0b0 androidmedia: Fix slice-height for Tegra 3 devices
https://bugzilla.gnome.org/show_bug.cgi?id=748867
2015-05-04 10:39:38 +02:00
Edward Hervey
8d41c3e393 androidmedia: Add support for COLOR_FormatYUV420Flexible
https://bugzilla.gnome.org/show_bug.cgi?id=747126
2015-05-04 09:34:29 +02:00
Edward Hervey
0654442c8f androidmedia: Add suport for Intel color formats
https://bugzilla.gnome.org/show_bug.cgi?id=747126
2015-05-04 09:34:15 +02:00
Andoni Morales Alastruey
1991b5bb6f ksvideosrc: don't timestamp buffers for muxed streams 2015-04-29 21:41:55 +02:00
Andoni Morales Alastruey
20e5a4a498 ksvideosrc: fix header size for muxed streams 2015-04-29 21:41:48 +02:00
Руслан Ижбулатов
a31855d618 GstDeviceProvider implementation for WIN Kernel Streaming plugin
gst_ks_device_provider_probe() is a no-braier, just runs ks_enumerate_devices()
and reports the results.

Monitoring is a bit more tricky. We have to create a dummy message-processing
window and register device change notifications for it.

As kernel streaming can (and should) be used for audio capture and audio
playback, this change also has certain placeholders for such.

https://bugzilla.gnome.org/show_bug.cgi?id=747757
2015-04-28 20:24:26 -04:00
Ilya Konstantinov
528871f571 avfvideosrc: drop frames we get before we have a clock
https://bugzilla.gnome.org/show_bug.cgi?id=748054
2015-04-26 20:37:11 +02:00
Tim-Philipp Müller
699452ef31 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:59:32 +01:00
Yujin Lee
a8ea7a9cfb vtdec: fix build error with clang
This commit fixes a simple build error by clang with
by clang with [-Werror,-Wtautological-pointer-compare] options.

https://bugzilla.gnome.org/show_bug.cgi?id=748110
2015-04-26 19:23:06 +02:00
Josep Torra
cf66541850 decklinkvideosrc: fix mode autodetection
The autodetection mode was broken because a race condition in the input mode
setting. The mode could be reverted back when it was replaced in
the streaming thread by the old mode in the middle of mode changed callback.
2015-04-22 17:20:22 +02:00
Josep Torra
6b70b848ee decklink: do not repeat first video format in caps template
The first entry in the modes array is used as default mode for autodetection.
There's no need to copy it into the caps template.
2015-04-22 17:20:21 +02:00
Edward Hervey
af49c109e4 shmpipe: Ensure string received from recv() is NULL-terminated
We will be doing string operations on it later.

CID #1292830
2015-04-20 14:21:09 +02:00
Alessandro Decina
edf9035d02 applemedia: avoid implicit color conversions
Rework the GL texture code a little to avoid implicit color conversion inside
AVF/VT on both iOS and OSX.
2015-04-20 17:09:58 +10:00
Ilya Konstantinov
c98eb6f2f5 corevideotexturecache: free texture cache on iOS
https://bugzilla.gnome.org/show_bug.cgi?id=748122
2015-04-19 14:48:43 +02:00
Ilya Konstantinov
472d1959a2 avfvideosrc: check for failure to create buffer
gst_core_media_buffer_new and gst_core_video_texture_cache_get_gl_buffer
can fail for various platform reasons.

https://bugzilla.gnome.org/show_bug.cgi?id=748122
2015-04-19 14:48:11 +02:00
Yujin Lee
4a88951c52 avfvideosrc: fix build failure with clang
Use fabs for floating point input.

https://bugzilla.gnome.org/show_bug.cgi?id=748128
2015-04-19 12:54:32 +01:00
Sebastian Dröge
774866ad62 androidmedia: Handle queue/release errors non-fatal
They can happen sometimes as a transient problem, e.g. if there
is a problem in the stream. Only handle them as fatal if many of
them happen in a row.
2015-04-17 20:11:46 +02:00
Ilya Konstantinov
a02a948a5d avfvideosrc: get connection and input clock early 2015-04-18 00:33:42 +10:00
Ilya Konstantinov
d1120c591c avfvideosrc: remove unused variables
Complement commit 5496fd3e75 by removing
the involved variables.
2015-04-15 10:16:17 +10:00
Alessandro Decina
a10232f7da applemedia: vtdec: fix GL negotiation 2015-04-14 20:33:25 +10:00
Alessandro Decina
3e0391a1f1 avfvideosrc: log timestamps 2015-04-14 18:05:58 +10:00
Ilya Konstantinov
5bc17dac29 avfvideosrc: subtract time spent in AVF queues
The time spent in AVF queues was being incorrectly added to running time
rather than subtracted.
2015-04-14 18:05:58 +10:00
Ilya Konstantinov
1b27538648 avfvideosrc: fix GL texture negotiation
GST_VIDEO_GL_TEXTURE_UPLOAD_META_API_TYPE should no longer be used.
Instead, just get the GL context.

https://bugzilla.gnome.org/show_bug.cgi?id=747352
2015-04-14 18:05:57 +10:00
Sebastian Dröge
91853015b7 winks: Reset DTS to GST_CLOCK_TIME_NONE
Otherwise we might get a previous DTS set from a recycled buffer that we get
back from a buffer pool, which then confuses synchronization.

https://bugzilla.gnome.org/show_bug.cgi?id=747722
2015-04-12 13:01:56 +02:00
Sebastian Dröge
265538ac6e amc: Use new JNI utils almost everywhere 2015-04-11 19:44:34 +02:00
Sebastian Dröge
7fb0fafed2 amc: Allow creating global and local references of objects 2015-04-11 19:37:34 +02:00
Sebastian Dröge
6c7b64f90c amc: Make GError argument order more consistent 2015-04-11 19:37:34 +02:00
Sebastian Dröge
448867f0aa amc: Add helper function for getting a direct buffer array 2015-04-11 19:37:20 +02:00
Sebastian Dröge
0dbf5d322f amc: Java longs are gint64s 2015-04-11 19:37:20 +02:00
Sebastian Dröge
0914ee4a07 amc: Improve JNI utilities and add some missing ones
We now fill GErrors for everything that could throw an exception, and method
calls now always return a gboolean and their value in an out-parameter to
distinguish failures from other values.
2015-04-11 19:37:20 +02:00
Tim-Philipp Müller
ea58a2138d winks: fix debug message parameter format
The first part of the GUID structure is a DWORD
which is defined as an unsigned long, so we need
to either cast or use %08lx.
2015-04-11 12:12:57 +01:00
Andoni Morales Alastruey
83a54e07fd ksvideosrc: fix support for DV devices 2015-04-08 18:54:52 +02:00
Andoni Morales Alastruey
7bc0fa5d70 ksvideosrc: only list capture devices 2015-04-08 18:45:08 +02:00
Arun Raghavan
b40adec9c1 opensles: Explicitly specify layout=interleaved in caps
This is fine to hard-code. Section 9.1.8 of the OpenSL ES 1.1
specification, it is expected that multi-channel audio is always
interleaved.
2015-04-08 15:38:17 +05:30
Ilya Konstantinov
4fd0f7277a avfvideosrc: fix setting of buffer offset end
Don't set offset end to random values off the stack.

https://bugzilla.gnome.org/show_bug.cgi?id=747352
2015-04-07 12:57:44 +01:00
Guillaume Emont
48880ea6c7 shmsink: add an shm-area-name property
The shm-area-property tells the name of the shm area used by the element. This
is useful for cases where shmsink is not able to clean up (calling
shm_unlink()), e.g. if it is in a sandbox.

https://bugzilla.gnome.org/show_bug.cgi?id=675134
2015-04-02 18:11:37 -04:00
Victor Toso
1b564bfb8b directsoundsrc: Implement volume and mute
Using the MixerAPI as IDirectSoundCaptureBuffer doesn't implement volume
control.

https://bugzilla.gnome.org/show_bug.cgi?id=744383
2015-03-31 10:53:55 +01:00
Sebastian Dröge
35ef602b7d androidmedia: Add helpers for calling static methods 2015-03-15 16:59:25 +00:00
Sebastian Dröge
1580336152 androidmedia: Fix indention 2015-03-15 16:41:12 +00:00
Matthieu Bouron
66f315d6a6 androidmedia: Add more JNI helper functions 2015-03-15 16:28:03 +00:00
Matthieu Bouron
be2378a071 androidmedia: Split jni code to gstjniutils.c 2015-03-15 16:28:03 +00:00
Tim-Philipp Müller
bcde1a015c Remove unported and useless osxvideosrc element
There are other elements for this now.
2015-03-14 14:47:25 +00:00
ijsf
f62dda74cc Restricted activeVideoMaxFrameDuration to fix frame rate 2015-03-13 14:43:14 +00:00
Jan Schmidt
f150cf2d2e Remove a bunch of silly ';;' typos at the end of lines 2015-03-12 01:33:03 +11:00
Edward Hervey
4b5d3a97ba androidmedia: Remove unused label/variable 2015-03-11 10:17:53 +01:00
Sebastian Dröge
160df421ea vtdec: Register a hardware-only vtdec_hw on OSX and give it a higher rank
while having the default vtdec at secondary rank. This allows decodebin/playbin
to prefer the hardware based decoders, and if that fails to initialize because
hardware resources are busy to fall back to e.g. the libav based h264 decoder
instead of the software based vtdec (which is slower), and only fall back to
the software based vtdec if there is no higher ranked decoder available.
2015-03-07 10:31:26 +01:00
Florian Zwoch
a8ae57480c avfvideosrc: allow "capture-screen" mode to select which screen to capture via the "device-index" option
https://bugzilla.gnome.org/show_bug.cgi?id=745161
2015-03-06 10:37:37 +01:00
Sebastian Dröge
254337365a decklinkaudiosrc: Calculate the duration more accurately from the capture time and numbers of samples
This should prevent any accumulating rounding errors with the duration.
2015-03-04 16:13:30 +01:00
Sebastian Dröge
912e58c64c decklinkaudiosrc: Fix the timestamp and offset calculations even more 2015-03-04 16:07:10 +01:00
Sebastian Dröge
1f9d37c924 decklinkaudiosrc: Don't subtract the duration from the capture time
We already have the real capture time, not the time when we received
the end of the packet.
2015-03-04 16:04:18 +01:00
Matthew Waters
0593480381 applemedia/avsamplesink: utilise a pull based approach of displaying video frames
Using requestMediaDataWhenReadyOnQueue the layer will execute a block
when it would like more frames. Using this we can provide the current
frame and avoid needlessly filling the layer's buffer queue causing
older frames to be displayed when under resource pressure.
2015-03-04 14:48:03 +11:00
Sebastian Dröge
4521524de3 decklink: Reset the clock calibration when unsetting the master clock
Otherwise the old calibration will stick around for the next time we use it,
potentially giving us completely wrong times.
2015-03-02 16:45:45 +01:00
Sebastian Dröge
8e362aab14 decklink{audio,video}src: Add some more debug output 2015-03-02 13:57:24 +01:00
DanielD10
034ed48023 decklink: Incorrect frame rate for interlaced modes
https://bugzilla.gnome.org/show_bug.cgi?id=744386
2015-03-02 11:59:31 +01:00
Sebastian Dröge
72b440cc89 decklinkvideosrc: Fix scaling with rate of internal/external clock 2015-02-27 11:08:14 +02:00
Roman Nowicki
29098129be d3dvideosink: release existing D3D swap chain on init
https://bugzilla.gnome.org/show_bug.cgi?id=745159
2015-02-25 16:19:57 +02:00
Matthew Waters
c873c57430 vtdec: only attempt use of the texture cache with GLMemory caps features
Otherwise we send rectangle textures to glimagesink
2015-02-25 00:03:34 +11:00
Sebastian Dröge
e36c27cd46 d3dvideosink: Don't initialize the render window swap chain while the device is lost and we're waiting for reset
https://bugzilla.gnome.org/show_bug.cgi?id=744615
2015-02-24 11:19:48 +02:00
Sebastian Dröge
f53bc227a8 d3dvideosink: Deactivate the fallback buffer pool when replacing it during caps changes
https://bugzilla.gnome.org/show_bug.cgi?id=744615
2015-02-24 11:19:48 +02:00
Matthew Waters
e505f6257c applemedia: new AVSampleBufferLayerSink
Renders buffers using the CALayer subclass AVSampleBufferDisplayLayer
which can be placed inside a Core Animation render tree.
2015-02-24 19:12:10 +11:00
Sebastian Dröge
84ab11afdb avfvideosrc: Only set latency if we already know our caps
Otherwise we might set bogus values or GST_CLOCK_TIME_NONE.

Also make sure to reset the caps field to NULL after unreffing
the caps to prevent accidential use afterwards, and unref any
old caps before we remember new caps.
2015-02-19 01:03:35 +02:00
Sebastian Dröge
d1d31dae6d d3dvideosink: Deactivate the fallback pool and unref the fallback buffer when resetting
Otherwise we will still have a reference to the surface left, which would
prevent activating the sink again later. E.g. after we lost the device.

Hopefully fixes https://bugzilla.gnome.org/show_bug.cgi?id=744615
2015-02-18 12:45:22 +02:00
Sebastian Dröge
0c9f35653f vtenc: Check if VTSessionCopyProperty() succeeds before using the result
https://bugzilla.gnome.org/show_bug.cgi?id=744585
2015-02-16 12:35:09 +02:00
Arun Raghavan
df43022899 opensles: Make debug category naming a bit more consistent 2015-02-13 15:05:07 +05:30
Alessandro Decina
6e325be516 applemedia: avfvideosrc: fix crash when non-GL memory is used 2015-02-13 19:12:54 +11:00
Sebastian Dröge
31f59cb344 avfvideosrc: Only use the duration of the sample if it is valid 2015-02-12 11:12:09 +02:00
Sebastian Dröge
4ccd425772 openslesringbuffer: Only allocate at most half the number of internal buffers as external audioringbuffer ones
Otherwise we might end up reading too much from the audioringbuffer, which
would result in reading silence.
2015-02-10 16:18:34 +01:00
Sebastian Dröge
9ed4054a94 decklinkvideosrc: Apply the diff between element and pipeline "base" time in all cases
Even if both clocks have the same rate, we need to apply this diff. Only when
it's the same clock we don't, as it's our clock then.
2015-02-10 16:01:19 +01:00
Sebastian Dröge
f83ac624e3 decklinkvideosrc: Add the diff between the pipeline base time and when we start to play
Add the diff between the external time when we went to playing and
the external time when the pipeline went to playing. Otherwise we
will always start outputting from 0 instead of the current running
time.
2015-02-10 15:30:44 +01:00
Sebastian Dröge
d4575e759b decklinkvideosink: Actually include the change mentioned in the last commit 2015-02-10 14:53:55 +01:00
Sebastian Dröge
e8167dd118 decklinkvideo{src,sink}: Sample the internal clock immediately after starting the device
Otherwise we might stay at 0.0s for too long because we will take the first
timestamp we ever see as 0.0... which will be after we started the device.
2015-02-10 14:48:09 +01:00
Sebastian Dröge
b739cf8b7f decklink: Fix compiler warning with gcc
gstdecklink.cpp: In member function 'virtual HRESULT GStreamerDecklinkInputCallback::VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*)':
gstdecklink.cpp:498:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     if (capture_time > m_input->clock_start_time)
                      ^
gstdecklink.cpp:503:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     if (capture_time > m_input->clock_offset)
                      ^
2015-02-09 21:04:17 +01:00
Sebastian Dröge
f0e85023c2 decklink{audio,video}src: Implement clock slaving if the pipeline clock is not the decklink clock 2015-02-09 17:17:37 +01:00
Sebastian Dröge
408f0870a6 decklinkaudio{src,sink}: Only start streams / scheduled playback if there is a videosrc at this point 2015-02-09 17:15:21 +01:00
Sebastian Dröge
349113d15a decklinkaudiosrc: Don't provide a clock
The audio source only works together with the video source, and the video
source is already providing a clock.
2015-02-09 17:04:27 +01:00
Sebastian Dröge
4de7fdfa3a decklinkaudiosink: Throttle reading from the ringbuffer
The driver has an internal buffer of unspecified and unconfigurable size, and
it will pull data from our ring buffer as fast as it can until that is full.
Unfortunately that means that we pull silence from the ringbuffer unless its
size is by conincidence larger than the driver's internal ringbuffer.

The good news is that it's not required to completely fill the buffer for
proper playback. So we now throttle reading from the ringbuffer whenever
the driver has buffered more than half of our ringbuffer size by waiting
on the clock for the amount of time until it has buffered less than that
again.
2015-02-09 16:22:39 +01:00
Sebastian Dröge
a6bcd09b6c decklinkaudiosink: Start scheduled playback when going to PLAYING
The ringbuffer's acquire() is too early, and ringbuffer's start() will only be
called after the clock has advanced a bit... which it won't unless we start
scheduled playback.
2015-02-09 16:22:39 +01:00
Alessandro Decina
052e4804eb vtdec: fix texture sharing on iOS
Move GLES calls to the context thread. Fix
CVOpenGLESTextureCacheCreateTextureFromImage usage on iOS.
2015-02-09 21:18:24 +11:00
Sebastian Dröge
22b0a4dad5 decklink{audio,video}src: Take the capture times from the pipeline clock
Not from the decklink clock. Both will return exactly the same time once the
decklink clock got slaved to the pipeline clock and received the first
observation, but until then it will return bogus values. But as both return
exactly the same values, we can as well use the pipeline clock directly.
2015-02-08 21:56:04 +01:00
Sebastian Dröge
83e5fe2f70 openslesringbuffer: Only pre-roll a single buffer
There is no reason to pre-roll more buffers here as we have our own ringbuffer
with more segments around it, and we can immediately provide more buffers to
OpenSL ES when it requests that from the callback.

Pre-rolling a single buffer before starting is necessary though, as otherwise
we will only output silence.

Lowers latency a bit, depending on latency-time and buffer-time settings.
2015-02-05 12:28:22 +01:00
Sebastian Dröge
141fb455e8 openslesringbuffer: Allocate at most 4 internal buffers
4 is the "typical" number of buffers defined by Android's OpenSL ES
implementation, and its code is optimized for this. Also because we
have our own ringbuffer around this, we will always have enough
buffering on our side already.

Allows for more efficient processing.
2015-02-05 12:28:13 +01:00
Sebastian Dröge
616cb1bdc6 openslessink/src: Lower default buffer time to 200ms like alsasink 2015-02-05 12:21:55 +01:00
Nicolas Dufresne
5aa292b588 ksvideosrc: Fix missing brace warning
There is more but it's from ks.h GUID initializer, which is shipped
this way with mingw.
2015-02-03 18:16:51 -05:00
Nicolas Dufresne
bd5e9a5442 ksvideosrc: Fix buffer handling
The pseudo buffer pool code was using gst_buffer_is_writable()
alone to try and figure-out if cached buffer could be reused.
It needs to check for memory writability too. Also check map
result and fix map flags.

https://bugzilla.gnome.org/show_bug.cgi?id=734264
2015-02-03 18:16:50 -05:00
Sebastian Dröge
d4d02c6f9d corevideotexturecache: Add some assertions instead of just dereferencing NULL 2015-02-03 17:32:24 +01:00
Sebastian Dröge
b51254395a corevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS
We might instead have a CoreVideo meta.
2015-02-03 17:32:24 +01:00
Sebastian Dröge
dac3e4ca06 vtdec: Don't dereference NULL frames when draining/flushing 2015-02-03 15:38:40 +01:00
Alessandro Decina
f577b52e5d applemedia: rework GL texture sharing
Use YUV instead of RGB textures, then convert using the new apple specific
shader in GstGLColorConvert. Also use GLMemory directly instead of using the
GL upload meta, avoiding an extra texture copy we used to have before.
2015-01-30 00:34:08 +11:00
Alessandro Decina
77d48abfab applemedia: vtdec: fix CMBlockBufferRef leak
Fix huge leak that went unnoticed for too long. Oops.
2015-01-30 00:34:08 +11:00
Alessandro Decina
8734abb1ce applemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing
When doing texture sharing we don't need to call CVPixelBufferLockBaseAddress to
map the buffer in CPU. This cuts about 10% relative cpu time from a vtdec !
glimagesink pipeline.
2015-01-30 00:34:08 +11:00
Alessandro Decina
e91989136a applemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional
Mapping is not necessary and impacts performance when doing texture sharing with
downstream
2015-01-30 00:34:08 +11:00
Sebastian Dröge
e9b49018ed decklinkvideosink: Always lock the mutex before starting the streams 2015-01-28 17:02:59 +01:00
Sebastian Dröge
837eee7085 decklinkvideosink: Fix deadlock 2015-01-28 16:59:30 +01:00
Sebastian Dröge
4eb5cd9156 decklink{audio,video}sink: Only start scheduled playback once both sources are ready and we are in PLAYING
Otherwise we might start the scheduled playback before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.
2015-01-28 16:13:16 +01:00
Sebastian Dröge
e2ff5587fe decklink{audio,video}src: Only start the streams once both sources are ready and we are in PLAYING
Otherwise we might start the streams before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.
2015-01-28 16:13:16 +01:00
Sebastian Dröge
00176a1ddf decklink: Make sure our clock never returns NONE, always advances and does not jump when going from PAUSED to PLAYING
It basically behaves the same as the audio clocks.
2015-01-28 16:13:16 +01:00
Sebastian Dröge
b3a4772834 decklinkvideosink: Handle the clock returning GST_CLOCK_TIME_NONE properly 2015-01-28 16:13:16 +01:00
Sebastian Dröge
8a5d2c561c decklinkvideo{sink,src}: Make elements more similar to the audio elements by enabling the video input/output only when getting the actual caps
This will also make it easier later to support caps changes and support
selecting the mode based on the caps if that should ever be implemented.
2015-01-28 16:13:16 +01:00
Sebastian Dröge
f3ae93e504 decklinkvideosrc: Properly report caps if mode!=auto and handle caps changes properly for mode=auto 2015-01-28 16:13:16 +01:00
Sebastian Dröge
7fb57938c1 decklinkaudiosrc: Don't release input device twice on errors in set_caps() 2015-01-28 16:13:16 +01:00
Sebastian Dröge
c6d5c4c2e1 decklinkaudiosrc: Release the audio input on errors, not the video input 2015-01-26 15:33:45 +01:00
Tim-Philipp Müller
199ce92474 Remove unported directdraw plugin
This API has been deprecated for eternities and microsoft
stopped shipping the headers in 2010 accoding to wikipedia,
so let's just remove it and focus on bringing the plugins
based on the newer APIs up to snuff.
2015-01-24 20:28:16 +00:00
Matthew Waters
c6056b0dd5 applemedia: update for gstgl cocoa -> cgl change 2015-01-23 16:12:24 +11:00
Sebastian Dröge
80e02cbdf9 Constify some static arrays everywhere 2015-01-21 10:18:50 +01:00
Sebastian Dröge
e734c3cf13 decklinkvideosink: Also consider max-lateness property value before dropping late frames 2015-01-15 12:49:46 +01:00
Alessandro Decina
d95a12e185 vtdec: implement the GL texture upload meta 2015-01-15 14:10:43 +11:00
Alessandro Decina
cdfe90aaba avfvideosrc: implement the GL texture upload meta 2015-01-15 14:10:43 +11:00
Sebastian Dröge
5a12b2670e decklinkvideosink: Stop scheduled playback shortly in PAUSED->PLAYING if it was running already
This fixes handling of flushing seeks, where we will get a PAUSED->PLAYING
state transition after the previous one without actually going to PAUSED
first.
2015-01-14 16:33:53 +01:00
Sebastian Dröge
92fa187d11 decklinkvideosink: Don't schedule too late frames in prepare()
Otherwise we will overflow the internal buffer of the hardware
with useless frames and run into an error. This is necessary until
this bug in basesink is fixed:
https://bugzilla.gnome.org/show_bug.cgi?id=742916
2015-01-14 16:02:57 +01:00
Sebastian Dröge
7b979703f8 decklinkvideosink: Keep track of the time when we went to PLAYING for the external clock too
Otherwise we're adding an offset of the time the pipeline was in PLAYING
already to the running time when converting it to our internal clock.
2015-01-14 16:00:54 +01:00
Sebastian Dröge
aed66838f3 decklinkvideosink: Enable QoS and set max-lateness to 20ms 2015-01-14 13:33:15 +01:00
Sebastian Dröge
ab9ee34aba decklink: Use BT2020 colorspace for UltraHD resolutions 2015-01-13 19:56:45 +01:00
Sebastian Dröge
65119ae8b4 decklink: Fix indention once again 2015-01-13 19:56:45 +01:00
Sebastian Dröge
d2e309d341 decklinkvideosink: Get our own "start time" instead of the one of the pipeline
decklinkvideosink might be added later to the pipeline, or its state might
be handled separately from the pipeline. In which case the running time when
we (last) went into PLAYING state will be different from the pipeline's.

However we need our own start time to tell the Decklink API, which running
time should be displayed at the moment we go to PLAYING and start scheduled
rendering.
2015-01-13 17:44:17 +01:00
Sebastian Dröge
b79ece392c decklink: Initialize refcount of our C++ classes in the constructor
CID 1262288
CID 1262287
CID 1262289
2015-01-12 15:58:38 +01:00
Sebastian Dröge
4531a341a8 decklinkvideosrc: Post LATENCY message when the mode changes
Different modes have different framerates, and thus different latencies. We
might need to reconfigure the latency of the pipeline.
2015-01-08 18:16:12 +01:00
Sebastian Dröge
beede3f27d decklinkvideosrc: Fix compiler warning 2015-01-08 18:16:12 +01:00
Florian Langlois
9480d91ad4 decklinkvideosrc: Add automatic mode detection
https://bugzilla.gnome.org/show_bug.cgi?id=739284
2015-01-08 18:16:12 +01:00
Florian Zwoch
7d318a572c vtenc: Unlock the stream lock while waiting for pending frames to be completed in finish()
We might otherwise deadlock because gst_vtenc_enqueue_buffer() can be
called again and will take the stream lock again from another thread.

https://bugzilla.gnome.org/show_bug.cgi?id=742174
2015-01-08 14:48:20 +01:00
Sebastian Dröge
7e7cabb422 decklink: Add a dummy value to the video connection mapping table for auto 2015-01-08 12:55:51 +01:00
Sebastian Dröge
ed0d4cc653 decklinkaudiosrc: Add property to select the audio input connection 2015-01-08 12:48:22 +01:00
Sebastian Dröge
34de6ad73b decklink: Add XLR and RCA audio connection enums 2015-01-08 12:23:53 +01:00
Sebastian Dröge
a35d5ae9b9 decklinkvideosrc: Add auto value for the connection property
This will use the default/auto connection for video capturing, and can
be set via the Decklink configuration tools.
2015-01-08 12:23:09 +01:00
Sebastian Dröge
478deb4805 decklink: Fix indention once again 2015-01-08 12:13:03 +01:00
Florian Langlois
81c1ef190d decklink: Add property for configuring the input connection of the video sources 2015-01-08 12:12:50 +01:00
Florian Langlois
e7c6eb6326 decklink: Fix latency values for sources 2015-01-07 16:42:57 +01:00
Sebastian Dröge
196d9c4829 decklink: Add support for 4K / UHD modes 2014-12-29 17:58:37 +01:00
Sebastian Dröge
0122a9d1b6 decklink: Fix indention 2014-12-29 17:58:37 +01:00
Alessandro Decina
5496fd3e75 avfvideosrc: improve timestamp code
Use a combination of the running time and CMClockGetTime from AVF to compute
timestamps.
2014-12-27 12:43:45 +11:00
Sebastian Dröge
568da160cb vtenc: Instead of crashing if no corresponding frame is found, ignore this
... and hope that everything will be fine. This shouldn't really happen but
previously happened during shutdown. It should be fixed in videoencoder now,
but better be on the safe side here.
2014-12-22 11:49:08 +01:00
Sebastian Dröge
d632a48d6c decklink: Fix various compiler warnings with gcc 2014-12-19 15:05:58 +01:00
Sebastian Dröge
5e7782ca39 decklink: Re-add the COM initialization code for Windows
Untested, and we will never deinitialize COM again.
2014-12-19 14:50:25 +01:00
Sebastian Dröge
f9d16c5913 decklink: Remove in-same-pipeline detection code for audio/video elements of the same device
This causes deadlocks sometimes for some reason.
2014-12-19 14:40:40 +01:00
Sebastian Dröge
9c2e09cf39 decklinkvideosink: Implement clock slaving 2014-12-19 14:40:40 +01:00
Sebastian Dröge
b9e17c5605 decklinkvideosink: Add some more debug output for when frames are scheduled 2014-12-19 14:40:40 +01:00
Sebastian Dröge
ec90bbb6f3 decklink: Add property for configuring the buffer size of the sources 2014-12-19 14:40:40 +01:00
Sebastian Dröge
112fdd266a decklinkaudiosrc: Implement timestamp jitter and discont handling 2014-12-19 14:40:40 +01:00
Sebastian Dröge
7c0fb92f1b decklink: Our capture time is the end timestamp of the buffer, subtract the duration 2014-12-19 14:40:40 +01:00
Sebastian Dröge
4ef676f109 decklink: Allow for a maximum of 5 packets to be queued up
In case downstream is a bit slow with consuming packets at times.
2014-12-19 14:40:40 +01:00
Sebastian Dröge
aac0027ed2 decklink: Implement latency query in sources and remember selected mode 2014-12-19 14:40:40 +01:00
Sebastian Dröge
23d6eaaa10 decklink: Remove obsolete files 2014-12-19 14:40:39 +01:00
Sebastian Dröge
6d931a0c0e decklink: Add initial version of audio and video sources 2014-12-19 14:40:39 +01:00
Sebastian Dröge
57d46fe9e1 decklink: Initial version of the audio/video sink rewrite 2014-12-19 14:40:39 +01:00
Alessandro Decina
0156725480 avfvideosrc: improve timestamping and latency reporting
Use AVF provided timings to timestamp output buffers. Use the running time at
the time the first buffer is produced to base timestamps on. Report 1-frame
latency based on the negotiated framerate instead of hardcoding 4ms latency.
2014-12-17 12:24:05 +11:00
Raimo Järvi
96ea75d75a dshowdecwrapper: Remove dependency on ATL
This fixes compiling with Visual C++ Express
that doesn't include ATL.

https://bugzilla.gnome.org/show_bug.cgi?id=677223
2014-12-16 23:17:35 +00:00
Matthew Bader
0fc55436b3 dshowsrcwrapper: Added support for image/jpeg and h264
https://bugzilla.gnome.org/show_bug.cgi?id=741188
2014-12-16 23:17:25 +00:00