Commit graph

2349 commits

Author SHA1 Message Date
Guillaume Desmottes
75680e5d34 videometa: add alignment field
By adding this field, buffer producers can now explicitly set the exact
geometry of planes, allowing users to easily know the padded size and
height of each plane.

GstVideoMeta is always heap allocated by GStreamer itself so we can
safely extend it.
2019-11-02 13:05:43 +01:00
Guillaume Desmottes
36ce08826e video-info: add gst_video_info_align_full()
When using gst_video_info_align() user had no easy way to retrieve the
padded size and height of each plane.
This can easily be implemented in fill_planes() as it's already called
in align() with the padded height.

Ideally we'd add a plane_size field to GstVideoInfo but the remaining
padding is too small so that would be an ABI break.

Fix #618
2019-11-02 13:05:43 +01:00
Seungha Yang
8b92d144a1 tests: audio: Add test for gst_audio_info_from_caps() method
Test gst_audio_info_from_caps() with raw and encoded formats.
2019-10-25 20:53:47 +09:00
Tim-Philipp Müller
289d8e53e2 Remove autotools build system 2019-10-13 14:15:43 +01:00
Edward Hervey
2409f4f360 base: Avoid usage of deprecated API
GTimeval and related functions are now deprecated in glib.
Replacement APIs have been present since 2.26
2019-10-11 06:17:39 +00:00
Edward Hervey
7eb98ba4f3 check: Don't use real audio devices for tests
When checking the behaviour of live seeking on audiomixer or
adder we don't *really* need real audio devices. audiotestsrc
in live mode is enough to test the behaviour of those elements.

Also avoids people repeatedly wasting hours trying to figure out
whether that failing behaviour is due to their code or not.
2019-10-10 16:58:26 +02:00
Mathieu Duponchelle
dd556ccf3d examples: add device provider example 2019-10-08 00:34:13 +02:00
Thibault Saunier
8d32de0905 glupload: Add VideoMetas and GLSyncMeta to the raw uploaded buffers
This is done by reusing `gst_gl_memory_setup_buffer` avoiding to
duplicate code.

Without a VideoMeta, mapping those buffers lead to GstBuffer mapping the
buffer in system memory even when specifying the GL flags (through the
buffer merging mechanism) making the result totally broken.
2019-10-02 19:27:39 +00:00
Matthew Waters
9939149933 examples/gl/sdlshare: port to OpenGL 3.0 core profile 2019-10-03 00:18:36 +10:00
Sebastian Dröge
e8edb0eb71 examples/sdlshare: Map video frames as early as possible and wait via GL sync meta before using texture ids 2019-09-30 13:29:58 +03:00
Sebastian Dröge
e750ea40b6 examples/sdlshare: Initialize GL as part of the event loop
And unref additional buffers we never use for rendering directly instead
of going via the output queue.
2019-09-30 13:29:58 +03:00
Sebastian Dröge
0bcba6a3ec examples/sdlshare: Activate and initialize our wrapped GL context
This allows us to e.g. use the GL functions vtable on it later.
2019-09-30 13:29:58 +03:00
Sebastian Dröge
9000bc86df examples/sdlshare: Call gst_init() a bit earlier in main()
Let's not accidentally call other GStreamer API before that.
2019-09-30 13:29:58 +03:00
Sebastian Dröge
abc243fee4 examples/sdlshare: Create an OpenGL context for OpenGL 2.0 2019-09-30 13:29:58 +03:00
Sebastian Dröge
eb3699a74b examples/sdlshare: Switch from a GLib main loop to a normal SDL event loop 2019-09-30 13:29:58 +03:00
Sebastian Dröge
6a5ab50103 examples/sdlshare: Port to SDL2 2019-09-30 13:29:58 +03:00
Sebastian Dröge
b0bd448d37 examples/sdlshare: Move from a fakesink to an appsink 2019-09-30 13:29:35 +03:00
Sebastian Dröge
6f14785c3e examples/sdlshare: Store buffer queues and loop in a global variable
There's no point storing them in GObject data, we already have other
global variables anyway.
2019-09-30 13:29:35 +03:00
Sebastian Dröge
8b891c218f examples/sdlshare: Bus sync handlers return no value 2019-09-30 13:29:35 +03:00
Sebastian Dröge
9daa7fa663 examples/sdlshare: Fix various memory leaks 2019-09-30 13:29:35 +03:00
Tim-Philipp Müller
c8d0edfea9 tests: fix up valgrind suppressions for glibc getaddrinfo leaks
Make more flexible. There is an extra
  gethostbyname2_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
in the trace on the build bots (F30).

Fixes the -base and -good valgrind jobs on the 1.16 branch CI.
2019-09-08 01:52:36 +01:00
Thibault Saunier
909baa2360 Pass the code through codespell 2019-08-30 13:05:36 +00:00
Aaron Boxer
355736fc93 playback-test: plug some memory leaks 2019-08-05 14:54:40 -04:00
Mathieu Duponchelle
f72e71903a aggregator tests: fix seek event seqnums
In
https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/207,
aggregator starts ignoring seek events with duplicate seqnums. We thus
need to update the seqnum of events when reusing them multiple times.
2019-07-19 18:53:43 +02:00
Guillaume Desmottes
509d4c31f0 video-format: add gst_video_format_info_component()
New API to find out which components are packed in a given plane.
Will prevent us from assuming a 1-1 mapping between planes and
components.
2019-07-19 15:47:02 +05:30
Seungha Yang
7327214bce tests: video: Add test conversion between colorimetry and ISO/IEC 23001-8 values
Test forward/backword conversion of color{matrix,transfer,primaries}.
2019-07-15 20:55:34 +09:00
Sebastian Dröge
1381e3e2be sdp: Add support for parsing the extmap attribute from caps and storing inside caps
The extmap attribute allows mapping RTP extension header IDs to
well-known RTP extension header specifications. See RFC8285 for details.

We store the extmap attribute either as string in the caps
  extmap-X=extensionname
where X is the integer extension header ID, or as 3-tuple of strings
  extmap-X=<direction,extensionname,extensionattributes>
where direction or extensionattributes are allowed to be the empty
string.

Both formats are allowed because usually only the extension name is
given and it's much simpler to handle in caps.
2019-07-13 12:18:15 +00:00
Seungha Yang
8f125fb4d9 examples: win32-videooverlay: Fix C2440 build error
Follow WNDPROC define to avoid implicit type conversion.
2019-07-10 01:34:13 +09:00
Sumaid Syed
18351dcd24 tag: Add tags for acoustid id & acoustid fingerprint
Mapping followed: https://picard.musicbrainz.org/docs/mappings/

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/612
2019-07-08 17:06:37 +05:30
Sumaid
8718458dc7 tag: Repair support for MusicBrainz IDs
Add missing release group ID and track ID
Mapping Followed:
https://picard.musicbrainz.org/docs/mappings/

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/612
2019-07-08 16:31:34 +05:30
Seungha Yang
3a53ec066b examples: Add a video overlay example for WIN32 videosink elements
User can set the target WIN32 video element via "videosink" command line
option. Default is glimagesink.
2019-07-08 17:32:37 +09:00
Seungha Yang
3dc9f772ec tests: pbutils: Add test parsing H265 profiles 2019-06-15 17:17:36 -04:00
Stian Selnes
eaade96409 rtpbasedepayload: Add max-reorder property
Add max-reorder property to make the old hard coded reordering limit of
100 configurable. It's particularly useful in some scenarios to set
max-reorder=0 to disable the behavior that the depayloader will drop
packets.

Note that although the default value is 100, the default limit has
increased with one because of the changed if-test. This was done to
allow the max-reorder value to be more intuitive. See tests.
2019-06-13 19:41:11 +03:00
Matthew Waters
7ff2cfa977 tests/gl-launch-lines: gltestsrc works on gles2/opengl3 now
There's no need to feature gate the gltestsrc pipelines anymore
2019-06-13 09:37:37 +00:00
Matthew Waters
b596bf7cb7 glmosaic: port to opengl3/gles2
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/543
2019-06-13 09:37:37 +00:00
Havard Graff
5d51c45b17 meson: add rtpmeta-tests 2019-06-12 15:33:41 +00:00
Havard Graff
2e342a16ce rtpbasedepayload: don't consider existing GstRTPSourceMeta
The meta should always be generated based on what is present in the
rtp-header.
2019-06-12 12:38:26 +00:00
Matthew Waters
bdb43689a9 gl/tests: fix shader creation tests part 2
Continuation of 4fd7a2c783

We check the availability of the high precision floats in GLSL shaders
which involves an OpenGL call and thus is required to be executed on the
OpenGL thread.

The tests were not respecting that and could fail on more strict
drivers.

Tests update for 675415bf2e
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/590
2019-06-08 02:59:13 +10:00
Matthew Waters
4fd7a2c783 gl/tests: fix shader creation tests
We check the availability of the high precision floats in GLSL shaders
which involves an OpenGL call and thus is required to be executed on the
OpenGL thread.

The tests were not respecting that and could fail on more strict
drivers.

Tests update for 675415bf2e
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/590
2019-06-07 11:14:39 +00:00
Mathieu Duponchelle
944396af33 valgrind: suppress incorrect conditional error in orc backup code 2019-06-05 20:51:47 +00:00
Mathieu Duponchelle
81ae045e3d valgrind: free buffer list in audiorate test 2019-06-05 20:51:47 +00:00
Mathieu Duponchelle
5934dc6ba3 valgrind: suppress conditional jump or move error
valgrind gets confused with the following piece of code:

var37.i = ORC_CLAMP_SL((orc_int64)var33.i + (orc_int64)var34.i);

Where all variables are orc_int32
2019-06-05 20:51:47 +00:00
Mathieu Duponchelle
59dd2af6d6 compositor: remove invalid test
With https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/159,
a single flush start on an aggregator sinkpad will start the flushing
process if the aggregator isn't already flushing.

The behaviour that this test was checking for is thus no longer correct
2019-06-03 14:05:14 +00:00
Seungha Yang
b9bb240c6b tests: video: Enable PQ and HLG transfer en/decode tests 2019-05-24 09:30:40 +00:00
Antonio Ospite
f8bed33d4b test: add subparse test for SRT subtitles with no newline at the end
Add a test to verify that SRT subtitles work even if the last chunk does
not have an empty line after it.
2019-05-06 13:28:02 +02:00
Antonio Ospite
1c454fdafc subparse: fix pushing WebVTT cue when last is not an empty line
If the last WebVTT cue does not have an empty line after it, or if it
does not end with a newline at all, it does not get pushed out and it
won't be displayed.

gst_sub_parse_sink_event() already handles the issue for other subtitle
formats, enable handling it for GST_SUB_PARSE_FORMAT_VTT too.

While at it also add a test for this case.
2019-05-06 13:28:02 +02:00
A. Wilcox
57e2bc3c1c video test: Keep BE test inline with LE test 2019-05-03 06:26:27 +00:00
Seungha Yang
630d3c3d12 tests: video: Add test for video-hdr 2019-04-30 15:45:44 +00:00
Sebastian Dröge
cbccda6f3b video-anc: Handle SD formats correctly
VANC is stored linearly in SD formats instead of separating the Y and YV
components from each other and having first all Y and then all UV
values.
2019-04-23 11:25:05 +00:00
Kristofer Bjorkstrom
1dea6d52ce rtspconnection: add Content-Length limit
Add the possible to limit the Content-Length
Define an appropriate request size limit and reject requests exceeding
the limit (413 Request Entity Too Large)
2019-04-22 09:01:32 +00:00
Matthew Waters
0863452a79 examples/gl/sdl: only build on glx/wgl systems
The code will not work anywhere else.

FIxes https://gitlab.freedesktop.org/gstreamer/gst-build/issues/22
2019-04-04 14:06:48 +00:00
Aaron Boxer
b27b31e099 discoverer: set 30 second for long-running tests 2019-04-01 18:35:06 +00:00
Aaron Boxer
6146d8c622 discoverer: fix a race bug in disco test 2019-04-01 18:35:06 +00:00
Jimmy Ohn
ee077a1cb3 tests: rtpmeta: Avoid C99 declaration in 'for' loop
Avoid C99 declaration in for loop
2019-04-01 22:34:28 +09:00
Guillaume Desmottes
10ce73b6eb video-info: check if alternate caps has the feature as well
It's invalid to have a 'interlace-mode=alternate' without the Interlaced caps
feature as well.
Modify gst_video_info_from_caps() to reject such case so we can easily
spot them in bugged elements.
2019-03-25 15:36:57 +01:00
Guillaume Desmottes
6ba860021c video-info: handle 'field-order' in alternate mode
The alternate interlace mode may also use the 'field-order' field in caps.
2019-03-25 15:35:46 +01:00
Tim-Philipp Müller
3288093c75 tests: video: speed up test_video_color_convert
This test takes a long time. It tests ca. 8900 conversion
combinations, and then it also runs each conversion for
at least 100ms in order to come up with some kind of benchmark.

Remove the benchmarking from the unit test, we have a separate
benchmarking tool for that now.

Also split the conversions into groups and run those as
separate checks, which allows better parallelisation at
the runner level (normal runs and when using valgrind).
2019-03-24 16:39:30 +00:00
Tim-Philipp Müller
b05e70ea94 tests: video: reduce debug log spam
This shouldn't be logged at info level.
2019-03-24 16:39:30 +00:00
Tim-Philipp Müller
ba183af479 tests: icles: add video conversion benchmark
Split out the benchmarking code from the unit test
and make it a bit more useful.
2019-03-24 16:39:30 +00:00
Nicolas Dufresne
3ee89d6e3c Remove some left over 0.10 references 2019-03-21 17:22:24 +00:00
Stian Selnes
eadeec791a rtpbasedepayload: Drop gap events before first buffer
Before a gap event is pushed downstream a segment event must be pushed
since the gap event can cause packet concealment downstream and hence
data flow. Since concealment before receiving any data packets usually
doesn't make any sense, the gap event is not sent downstream.

Alternatively one could generate a default caps and segment event, but
no need to complicate things until it's proven necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=773104
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/301
2019-03-20 15:30:50 +00:00
Tim-Philipp Müller
eed2e9d52b tests: audiodecoder: speed up audiodecoder_buffer_after_segment test
We're creating buffers with one sample here for some reason. The
actual value of the segment stop is irrelevant for what we're testing
here, so lower it to 10ms so that we create fewer buffers which speeds
things up on slow machines and in valgrind.
2019-03-09 17:17:11 +00:00
Matthew Waters
d5b18ae58f tests/glbin: setting a full reference means we need to unref
Fixes the element leaks in the full variants of the glbin test.
2019-03-06 23:32:18 +11:00
Tim-Philipp Müller
273da3ed2f tests: vorbisec: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
9f664f62ee tests: glmatrix: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
afe5ed8ad7 tests: glmemory: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
82dc6a4858 tests: videoencoder: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
3221167750 tests: audio: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
6f6c73b223 tests: audiomixer: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Tim-Philipp Müller
9854d5151a tests: audioconvert: fix leaks in unit test 2019-03-06 10:51:40 +00:00
Seungha Yang
541d598fad tests: audiorate: Don't compare string with enum
../subprojects/gst-plugins-base/tests/check/elements/audiorate.c(192): warning C4047

Meaningful validation at that point seems to checking output GstAudioFormat
of gst_audio_format_from_string()
2019-03-04 22:49:23 +09:00
Tim-Philipp Müller
a62f757647 meson: don't build icles when tests are disabled
They are manual tests, so let them be controlled
via the tests option.
2019-02-28 15:46:02 +00:00
Vivia Nikolaidou
8ecc3b9730 videorate: Add max-duplication-time property
This will only duplicate buffers if the gap between two consecutive
buffers is up to fill-until nsec. If it's larger, it will only output
the new buffer and mark it as discont.
2019-02-21 15:50:55 +00:00
Tim-Philipp Müller
a1d757b1ee tests: video: add basic sanity check of pstrides for formats
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/117
2019-02-20 09:49:26 +00:00
Victor Toso
1012e3d89c tests: use GPOINTER_TO_INT to avoid warnings with mingw
New casts to avoid the the warnings mentioned below. While at it, move
some existing casts (introduced at 61bc909189) to use
GPOINTER_TO_INT too.

[458/673] Compiling C object 'tests/check/7d01337@@libs_video@exe/libs_video.c.obj'.
../tests/check/libs/video.c: In function 'fourcc_get_size':
../tests/check/libs/video.c:160:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   return (unsigned long) p->endptr;
          ^

In file included from ../tests/check/libs/video.c:32:
../tests/check/libs/video.c: In function 'test_video_formats':
../tests/check/libs/video.c:563:39: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   fail_unless_equals_int (size, (unsigned long) paintinfo.endptr);
   ^

And more.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/94
2019-02-19 18:23:25 +00:00
Victor Toso
c7fe0ed637 tests: fix compiler warnings on Windows with mingw
With commit 3f184c3abc, the gst_dir variable becomes unusable in
windows build. Moving it to linux scope to avoid warning:

    [433/673] Compiling C object 'tests/check/7d01337@@libs_profile@exe/libs_profile.c.obj'.
    ../tests/check/libs/profile.c: In function 'profile_suite':
    ../tests/check/libs/profile.c:688:10: warning: unused variable 'gst_dir' [-Wunused-variable]
       gchar *gst_dir;
             ^~~~~~~

Also fix a typo in the comment.
2019-02-19 09:54:52 +00:00
Nicolas Dufresne
fcaf938e8c tests: video: Test video format enum stability
It is really easy to break the API and insert a new video format in the
middle of the enum instead of at the end. This minimal test should catch
the most obvious errors. Ideally, this test should be updated after new
format have been added, so that it won't allow further modification to
the enumeration API.
2019-02-18 13:25:23 +00:00
Nirbheek Chauhan
91863b071f misc: Fix compiler warnings on Cerbero's MinGW
rtpbasedepayload.c:126:5: error: unknown conversion type character 'z' in format [-Werror=format]
profile.c:688:10: error: unused variable 'gst_dir' [-Werror=unused-variable]
2019-02-05 23:48:13 +05:30
Nirbheek Chauhan
2b8e09b49f meson: orc-test is not required
This is especially never available on iOS.
2019-01-31 15:22:21 +05:30
Seungha Yang
57aba8952d meson: Add support orc fallback
Allow fallback to orc subproject if any.
Additionally 'dependencies' keyword is removed from find_library,
because it's invalid keyword for find_library.
2019-01-30 19:41:32 +09:00
Seungha Yang
34813b94bd tests: discoverer: Add async API test cases
Add more test cases for async APIs such as gst_discoverer_{start,stop},
and gst_discoverer_discover_uri_async()
2019-01-28 18:53:39 +09:00
Sebastian Dröge
acc098a736 gl: Only unbind buffers/vertex attrib arrays if we can't directly bind the vertex array to 0
Binding the vertex array to 0 will unbind everything else already.

In the previous order older versions of the Intel GL driver caused
errors to be printed for every single call when disabling the vertex
attrib arrays after binding the vertex array to 0.
2019-01-16 14:09:18 +02:00
Tim-Philipp Müller
30b5d7892a meson: enable tests for orc code 2019-01-16 00:37:48 +00:00
Jordan Petridis
5396ef6e45 subparse: do not assert when failing to parse subrip timestamp
If a badly formatted was passed into `parse_subrip_time` it would
assert instead of exiting gracefully. This is problematic since
the input is provided by the user, and will trigger a crash.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/532
2019-01-14 11:43:57 +00:00
Jan Alexander Steffens (heftig)
4d24f78c05 videoscale: Add a test to verify stepped dimensions work 2019-01-14 10:18:21 +00:00
Alex Ashley
5767d65321 codec-utils: support extension audio object type and sample rate
ISO 14496-3 defines that audioObjectType 5 is a special case that
indicates SBR is present and that an additional field has to be
parsed to find the true audioObjectType.

There are two ways of signaling SBR within an AAC stream - implicit
and explicit (see [1] section 4.2). When explicit signaling is used,
the presence of SBR data is signaled by means of the SBR
audioObjectType in the AudioSpecificConfig data.

Normally the sample rate is specified by an index into a
table of common sample rates. However index 0x0f is a special case
that indicates that the next 24 bits contain the real sample rate.

[1] https://www.telosalliance.com/support/A-closer-look-into-MPEG-4-High-Efficiency-AAC

Fixes #39
2019-01-11 17:41:15 +05:30
Seungha Yang
a95ab79d34 tests: Enable more tests on Windows
Enable libs_rtp, libs_video and elements_compositor
2018-12-30 23:25:14 +00:00
Seungha Yang
f5c4826ea4 tests: compositor: Drop needless unistd.h 2018-12-30 23:25:14 +00:00
Tim-Philipp Müller
2972b673c0 compositor: add to build after move from -bad
This replaces videomixer.

Fixes #138
2018-12-28 12:16:18 +01:00
Tim-Philipp Müller
f11571f398 Move GstVideoAggregator, compositor and OpenGL mixers from -bad
Merge branch 'videoaggregator-compositor-glmixers-move'

Fixes #137 and #138.
2018-12-28 12:15:39 +01:00
Philippe Normand
6c1dc1b129 examples/gl/gtk: Fix build on macOS
The gdkquartz.h include pulls into Apple Obj-C frameworks so the compiler needs
to handle the gstgtkhelper library as such.

Fixes #518
2018-12-27 14:55:28 +01:00
Philippe Normand
e1e958fcd7 examples/gl: Cocoa example Meson build definitions 2018-12-26 10:56:08 +00:00
Sebastian Dröge
acd7010576 videotimecode: Set the DROP_FRAME flag when parsing timecodes with a ,/; from a string
And also add a test for parsing a few valid and invalid timecodes
2018-12-19 23:11:24 +00:00
Sebastian Dröge
c02d3b03c2 videotimecode: Add API for initializing from a GDateTime with validation
The old API would only assert or return an invalid timecode, the new API
returns a boolean or NULL. We can't change the existing API
unfortunately but can at least deprecate it.
2018-12-19 23:11:24 +00:00
Seungha Yang
362f771fe8 tests: Disable some tests for Windows
Disable some tests which are unstable on windows or need fix
2018-12-18 10:34:01 +00:00
Seungha Yang
548b72d693 tests: Use OS-specific seperator for whitelist
... instead of hardcoded ':', since G_SEARCHPATH_SEPARATOR_S
varies depending on OS (e.g., ':' for *nix and ';' for Windows).
Note that, when the seperator is not specified explicitly, Meson
will use ';' for Windows and ':' for *nix respectively.
2018-12-18 10:34:01 +00:00
Seungha Yang
076d023508 meson: Use join_paths() instead of '/'
Let Meson decide correct seperator such as '\' for Windows and
'/' for others
2018-12-18 10:34:01 +00:00
Seungha Yang
90e801e62d tests: Enable testing on Windows 2018-12-18 10:34:01 +00:00
Justin Kim
88524a6686 tests: examples: gl: gtk: Disabled on MacOS X
It fails to build on MacOS X. This example should be disabled
until fixed.

Issue: #518
2018-12-14 12:57:38 +09:00
Justin Kim
4f01958232 examples: gl: generic: recordgraphic: Use gst/gl/gstglfuncs.h
https://gitlab.freedesktop.org/gstreamer/gst-build/issues/11
2018-12-14 12:04:17 +09:00