The client-draw callback is running on the GL Thread, which will
be required to map the buffer. Map early, and pass the mapped
frame instead. On top of that, make sure to signal any pending
draw before trying to push EOS, as some pad locks might be taken.
This is the cost of using the same thread to control GStreamer and
to render GL.
Try prioritizing downstream's caps over upstream's if possible so the
parser can configured in "passthrough" if possible and save it from
doing useless conversions.
https://bugzilla.gnome.org/show_bug.cgi?id=790628
Unfortunately we need to use an extra set of parenthesis for each data level.
For details see:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
Affected versions are e.g.
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
which is the default on ubuntu-trusty. I looks like the fix was never
backported.
Remove gst_init() from a few tests. Use _OBJECT variants in logging. Remove
arbitrary extra blank lines. Make push_event() more like push_buffer() - set
the event to NULL and add cleanup to _chain_data_clear().
Using two (or more) probes on the same pad where one of the probe
returns HANDLED or DROP is tricky since the other probes might
not be called.
Instead use regular probes and a proper pad (the sinkpad already existed,
it only required to be activated and have a dummy chain function for
the events/buffers to be received/handled properly)
In most cases we want to stop the pipeline just once, but we have
to do this from code that runs in the streaming threads and in case
we have multiple streams, we need to make sure that we do this only
once. The previous checks were broken, this should fix it.
https://bugzilla.gnome.org/show_bug.cgi?id=786006
Except for gst/gl/gstglfuncs.h
It is up to the client app to include these headers.
It is coherent with the fact that gstreamer-gl.pc does not
require any egl.pc/gles.pc. I.e. it is the responsability
of the app to search these headers within its build setup.
For example gstreamer-vaapi includes explicitly EGL/egl.h
and search for it in its configure.ac.
For example with this patch, if an app includes the headers
gst/gl/egl/gstglcontext_egl.h
gst/gl/egl/gstgldisplay_egl.h
gst/gl/egl/gstglmemoryegl.h
it will *no longer* automatically include EGL/egl.h and GLES2/gl2.h.
Which is good because the app might want to use the gstgl api only
without the need to bother about gl headers.
Also added a test: cd tests/check && make libs/gstglheaders.check
https://bugzilla.gnome.org/show_bug.cgi?id=784779
ipcpipeline1 is a very simple test that shows a short videotestsrc fragment.
ipc-play is a clone of gst-play that splits the pipeline in two
processes, running the source & demuxer on the master process
and the decoders & sinks on the slave.
Sending an event can accepted event if the caps were rejected
because the event could be queued and processed later.
Also send a drain query in the caps test to make sure that the
event has been processed.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
Since insertion of aud landed, we need to change some testcases
accroding to the change.
Note that counting frames are changed in parser.c,
due to generated frames, AUD.
https://bugzilla.gnome.org/show_bug.cgi?id=736213
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
For duration queries on live streams, adaptivedemux ignores the query.
The problem then is that the query is answered by the downstream
qtdemux element, with the duration of the currently passing fragment.
This commit changes the behaviour of adaptivedemux to answer the duration
queries for live streams, returning GST_CLOCK_TIME_NONE.
https://bugzilla.gnome.org/show_bug.cgi?id=753879
This element transforms a given number of input channels into a given number of
output channels according to a given transformation matrix. The matrix
coefficients must be between -1 and 1. In the auto mode, input/output channels
are automatically negotiated and the transformation matrix is a truncated or
zero-padded identity matrix.
https://bugzilla.gnome.org/show_bug.cgi?id=777376
See https://bugzilla.gnome.org/show_bug.cgi?id=773666
This would ideally be solved in baseparse but that requires further
thought at this point, and in the meantime it would be good to have
rawbaseparse not assert on this but handle it gracefully instead.
Make the unit tests handle the fact that pads don't appear
immediately. Before, the test assumed pads are exposed before the
internal source element is created, which is no longer true.
To satisfy follwing restriction of HLS spec 6.3.3,
select startup fragment sequence to 4th from end of playlist.
Also, seek range should exclude last three fragment in playlist.
"the client SHOULD NOT choose a segment which starts less than
three target durations from the end of the Playlist file."
https://bugzilla.gnome.org/show_bug.cgi?id=777682
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
This was used by MSN messenger in prehistoric times, it's safe
to say no one needs or wants this any more these days. For
decoding old recordings there's still a decoder in ffmpeg.
https://bugzilla.gnome.org/show_bug.cgi?id=597616
Section 5.3.3 in ISO/IEC 23009-1:2014 defines that invalid references
(e.g., invalide URI or cannot be resolved) specified by "@xlink:href" attribute
shall be removed. That means, we should play it without error,
and just ignore the corresponding element.
It's similar to "urn:mpeg:dash:resolve-to-zero:2013".
https://bugzilla.gnome.org/show_bug.cgi?id=774463
pnm: add misssing continuation slash at end of line
vp8parser: no need to link codecparsers twice
dash_demux, mssdemux, hlsdemux: fix lib/flags ordering - local
libs and flags must come first, then base before core before rest
Create our own instead as the default framebuffer may require special
fiddling (like having a visible window) to correctly display/be renderable.
Fixes the remaining GL library tests on OS X
External xml could have empty, one or multiple top-level "Period" elements.
Because xml parser cannot parse the multiple top-level elements
(i.e., no root element), we need to wrap a xml in order to make root element.
See also ISO/IEC 23009-1:2014 5.3.2.2
https://bugzilla.gnome.org/show_bug.cgi?id=774357
PlayReady being the one of the few DRM formats encoding its data with
base64 it was not consistent to have a special case for this. So the
base64 decoding operation now needs to be done by the protection event
consumer, if needed.
https://bugzilla.gnome.org/show_bug.cgi?id=774112
gstgl doesn't undo/overwrite what GL state the examples are changing
anymore. As such, the examples need to reset the GL state themselves
to be able to play nice with libgstgl
The spec allows the core/compatibility profiles to be used
with #version 150.
Also tighten up the tests to check for default profiles being chosen
correctly.
The linker flags for several plugins (dashdemux, mssdemux, hlsdemux) are missing
$(GST_PLUGINS_BASE_LIBS), so add them so they can find -lgsttag and -lgstapp.
https://bugzilla.gnome.org/show_bug.cgi?id=771780
The tests were broken since 91fea30, which changed glupload to return
GST_GL_UPLOAD_RECONFIGURE if the texture target in the input buffers doesn't
match the texture-target configured in the output caps.
This commit fixes that and adds more checks for the new behaviour.
It uses random data streams but dashdemux nowadays actually looks into the
streams and doesn't like randomness very much. The tests should probably just
become validate tests on real streams.
https://bugzilla.gnome.org/show_bug.cgi?id=769553
Add a test of the gst_mpd_client_get_maximum_segment_duration() function
to check that it first checks the MPD@maxSegmentDuration and then falls
back to checking all of the segment durations.
https://bugzilla.gnome.org/show_bug.cgi?id=753751
Facilities are given to create fbo's and attach GL memory (renderbuffers
or textures). It also keeps track of the renderable size for use with
effective use with glViewport().
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.
When the test involves doing a seek, only check for data size after
the seek. The final segment range after seek might be different/smaller
than the threshold for doing the seek and doing the check before
seeking would fail.
Following the Don't Repeat Yourself principle, define macros
for the structures that contain the request and response headers,
so that the name is not repeated in multiple places in multiple files.
https://bugzilla.gnome.org/show_bug.cgi?id=762144
Test content protection
Configure 3 content protection sources:
- a uuid scheme/value pair
- a non uuid scheme/value pair (dash recognises only uuid schemes)
- a complex uuid scheme, with trailing spaces and capital letters in scheme uri
Only the uuid scheme should be recognised. We expect to receive 2 content protection events
https://bugzilla.gnome.org/show_bug.cgi?id=758064
Test header download error.
Let the adaptive demux download a few bytes, then instruct the
GstTestHTTPSrc element to generate an error while the fragment header
is still being downloaded.
https://bugzilla.gnome.org/show_bug.cgi?id=762144
Moved testQuery after testFragmentDownloadError so that testDownloadError
and testFragmentDownloadError are grouped together.
The commit just moved the testQueryCheckDataReceived and
GST_START_TEST (testQuery) functions but git gets confused in matching the
lines and reports a lot of changes in the patch.
https://bugzilla.gnome.org/show_bug.cgi?id=762144
To allow the adaptivedemux live stream tests to run in non-realtime, use a
GstTestClock as the system clock. This allows the unit tests to complete
more quickly than if they had to complete in real time.
https://bugzilla.gnome.org/show_bug.cgi?id=762147
Deallocate GObject* with g_object_unref instead of gst_object_unref.
Even if it works now, it is confusing and in the future it might
not work if any GstObject specifics are added.
https://bugzilla.gnome.org/show_bug.cgi?id=762142
As is done everywhere else.
From what I can gather from make -C tests/check V=1 $(GST_PLUGINS_BAD_CFLAGS) is
required in order to find in-tree headers as well as srcdir != builddir
configurations.
fxtest.c: In function ‘main’:
fxtest.c:190:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
GtkWidget *window;
^~~~~~~~~
With e38af23044 returning the correct contexts,
gst_gl_display_add_context() was susceptible to causing infinte loops when
adding the same GstGLContext more than once. Fix and add a test for
gst_gl_display_add_context().
Fixes glvideomixer gst-validate tests.
When the start_type is GST_SEEK_TYPE_NONE for a forward seek
(or stop_type for a reverse) is not set on a snap seeking operation,
the element should use the current position and then snap as requested.
Also fixes uninitialized variable complaint by clang about
'ts' variable.