Commit graph

7330 commits

Author SHA1 Message Date
Vivia Nikolaidou
ff952374b5 avwait: Start video and audio together if audio starts late
Also add test to meson

https://bugzilla.gnome.org/show_bug.cgi?id=796977
2018-08-17 14:57:36 +03:00
Sebastian Dröge
2846ebfc2a compositor: Define crossfade-ratio to have range [0.0,1.0]
Previously negative values had the same effect as 0.0, which was
confusing.

https://bugzilla.gnome.org/show_bug.cgi?id=796845
2018-08-16 17:08:06 +03:00
Wim Taymans
e098ad4918 rfbdecoder: don't free decoder data
The decoder data is freed when we read more data.
2018-08-16 11:44:27 +02:00
Vivia Nikolaidou
8ede252a8a avwait: Don't wait if audio_running_time_to_wait_for is NONE
The case is properly handled a few lines below by dropping the buffer.
We shouldn't perpetually block the audio chain function until the
target-timecode is reached.

https://bugzilla.gnome.org/show_bug.cgi?id=796906
2018-08-01 20:18:19 +03:00
Nicolas Dufresne
5c52f866ad jpegparse: Generate timestamp if framerate is known
This change allow setting timestamp on streams that would otherwise have
no timestamp. This is useful to make a video from bunch of JPEG files. An
example of such pipeline would be:

gst-launch-1.0 multifilesrc location=%05d.jpeg caps=image/jpeg,framerate=30/1 \
               ! jpegparse ! fakesink silent=0 -v
2018-07-27 23:00:53 -04:00
Nirbheek Chauhan
b55dfb5313 Add feature options for almost all plugins
The only plugins remaining are those that haven't been ported to Meson
yet, and msdk. Also, the tests are still automagic.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 19:04:38 +05:30
Nirbheek Chauhan
7ef303fa28 meson: Add feature options for many plugins
The rest will be converted later, these are necessary for gst-build to
set options correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:43:52 +05:30
Sebastian Dröge
84a956768d compositor: Don't leak all buffers while crossfading and not all pads are crossfading 2018-07-26 00:20:02 +03:00
Vivia Nikolaidou
854baf4fdb avwait: Add recording property
It works like a valve in front of the actual avwait. When recording ==
TRUE, other rules are then examined. When recording == FALSE, nothing is
passing through.

https://bugzilla.gnome.org/show_bug.cgi?id=796836
2018-07-24 13:20:59 +03:00
Sebastian Dröge
b0ae6a5221 compositor: Use 255 as maximum alpha instead of 256
255 will easily become 0 in the blending function as they expect
the maximum value to be 255.

Can be reproduce with

gst-launch-1.0 videotestsrc pattern=ball ! c.sink_0 \
               videotestsrc pattern=snow ! c.sink_1 \
               compositor name=c \
                 sink_0::zorder=0 sink_1::zorder=1 sink_0::crossfade-ratio=0.5 \
                 background=black ! \
               videoconvert ! xvimagesink

crossfade-ratio +/- 0.001 makes it work correctly and the same happens
at e.g. 0.25, 0.75, N*0.0625

https://bugzilla.gnome.org/show_bug.cgi?id=796846
2018-07-23 18:59:33 +03:00
Seungha Yang
d95d944a34 compositor: Update conversion info in property setter
... not in getter. Otherwise, video-converter will not be updated
with new width/height

https://bugzilla.gnome.org/show_bug.cgi?id=796828
2018-07-18 14:41:31 +03:00
Georg Ottinger
71c5eae508 ivfparse: Add the AV01 FOURCC for parsing AV1 IVFs
Adds AV01 FOURCC to the list of allowed media files, in order to allow
parsing the IVF Container holding AV1 content.
At a later point dynamic resolution change can be supported - therefore
the sequence header OBU and frame header OBU of AV1 file must be parsed,
which can be done in future with the help of gst-lib gstav1parse.

https://bugzilla.gnome.org/show_bug.cgi?id=796677
2018-06-29 07:31:16 +02:00
Tim-Philipp Müller
2fac53fa51 jpegformat: get rid of unnecessary private structs 2018-06-23 23:51:37 +02:00
Nicolas Dufresne
c052ae511a tsdemux: Don't set invalid seqnum on segment event
https://bugzilla.gnome.org/show_bug.cgi?id=796623
2018-06-19 06:56:48 +02:00
Edward Hervey
4ae9a9dc91 tsdemux: Don't query duration if program isn't active 2018-06-12 11:14:51 +02:00
Edward Hervey
e1133bbbfe mpegtsdemux: Fix SEGMENT seqnum propagation
* If the seek was handled upstream, use that SEGMENT seqnum
* Use the proper invalid default value
2018-06-06 07:51:19 +02:00
Kyrylo Polezhaiev
7d4b037527 gdp: ignore timestamp of event
This field is not used and will be removed in 2.0 API.

https://bugzilla.gnome.org/show_bug.cgi?id=761462
2018-05-07 01:34:08 +10:00
Sebastian Dröge
ea5de0d757 videoaggregator: Switch to a GstVideoAggregatorConvertPad subclass
This moves all the conversion related code to a single place, allows
less code-duplication inside compositor and makes the glmixer code less
awkward. It's also the same pattern as used by GstAudioAggregator.
2018-05-06 15:22:51 +02:00
Sebastian Dröge
0680c3e47d videoaggregator: Move needs_alpha pad field to the private struct
And also trigger renegotiation if the value has changed.

https://bugzilla.gnome.org/show_bug.cgi?id=795836
2018-05-05 16:32:19 +02:00
Sebastian Dröge
83192bce84 videoaggregator: Move aggregated_frame and the pad buffer into the private struct
The aggregated_frame is now called prepared_frame and passed to the
prepare_frame and cleanup_frame virtual methods directly. For the
currently queued buffer there is a method on the video aggregator pad
now.
2018-05-05 16:32:19 +02:00
Sebastian Dröge
e34d4e9bf4 videoaggregator: Move GstChildProxy implementations into leaf classes
Not every subclass will want to expose the pads via the interface.

https://bugzilla.gnome.org/show_bug.cgi?id=739011
2018-05-04 16:13:16 +02:00
Aurélien Zanelli
89a85732d4 tsdemux: ignore sparse stream when checking for initial timestamp
Unless we only have sparse streams. In this case we will consider them.
It fixes a bug happening when first observed timestamp comes from a
sparse stream and other streams don't have a valid timestamp, yet. Thus
leading the timestamp from sparse stream to be the start of the
following segment. In this case, if the timestamp is really bigger than
non-sparse stream (audio/video), it will lead the pipeline to clip
samples from the non-parse stream.

https://bugzilla.gnome.org/show_bug.cgi?id=744469
2018-05-04 22:59:26 +10:00
Vineeth T M
0869c06f9d scenechange: improve detection algorithm
Scene detection determines, how many scenes have changed in a video.

It compared the previous frame with present frame to find out the score and a
threshold is calculated for the same.

I have added an intermediate condition which helps in improving the positive
detections.

https://bugzilla.gnome.org/show_bug.cgi?id=735094
2018-05-04 11:50:06 +02:00
Nicolas Dufresne
ede8b1c8ce rfbsrc: Fix decide_allocation to support NULL pool
We were assuming that NULL pool meant that downstream didn't reply.
Update the pool index 0 instead of adding at the end. Otherwise we ended
up letting basesrc decide, which would pick the blocksize as a size
(4096) instead of the image size.

https://bugzilla.gnome.org/show_bug.cgi?id=795327
2018-04-25 15:07:23 -04:00
Nicolas Dufresne
5d1efe7f55 rfbsrc: Fix support for applevncserver
This server uses an unknown 003.889 protocol version. This patch fixes
the version validation in order to simply fallback to 3.3 as suggested
by the spec.
2018-04-25 13:37:12 -04:00
Xavier Claessens
83d0623293 Meson: Generate pc file for all plugins in bad
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:08:09 +01:00
Guillaume Desmottes
5a5bf4b3e3 h264parse: add constrained and progressive profiles
Those profiles have been added in the version 2012-01
and 2011-06 of the AVC spec.

https://bugzilla.gnome.org/show_bug.cgi?id=794127
2018-04-25 09:12:45 +02:00
Tim-Philipp Müller
79c13988e4 Fix code indentation 2018-04-22 18:27:37 +01:00
Tim-Philipp Müller
26cb04dd45 testsrcbin: typo fixes 2018-04-21 11:03:54 +01:00
Tim-Philipp Müller
a9ac937be5 testsrcbin: fix bug setting stream flags
We would mark all streams with FLAG_UNSELECT as we would check
the pointer for non-NULLness not the dereferenced stream number
(and the pointer is always non-NULL). The intention here was
presumably to mark the first stream of each type as SELECT and
the others as UNSELECT by default.

CID 1434970.
2018-04-21 11:00:58 +01:00
Tim-Philipp Müller
9b597200f4 testsrcbin: fix memory leak
CID 1434971
2018-04-21 10:51:03 +01:00
Thibault Saunier
5bc368124a testsrcbin: Do not use G_DECLARE_ as it requires GLib 2.44
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=795382
2018-04-19 21:09:14 -03:00
Thibault Saunier
4984af5917 debugutils: Add a testsrcbin element
This is a simple Bin that will expose audiotestsrc or videotestsrc
based on what is asked by the user either through the GstURIHandler
API or through the "stream-types" property.

This element also provides GstStream and GstStreamCollection
so it is nicely usable from playbin3.

https://bugzilla.gnome.org/show_bug.cgi?id=795366
2018-04-19 11:10:54 -03:00
Sreerenj Balachandran
9a090538be jpegparse: Fix APP1 marker segment parsing
Reposition the bytereader for proper skipping of
APP1 marker segment if it is not Exif.

https://bugzilla.gnome.org/show_bug.cgi?id=795117
2018-04-16 14:00:39 -08:00
Antonio Ospite
53d7a1298c pcapparse: bail out in case of fragmented packets
pcapparse cannot parse fragmented IP packets correctly, in particular it
will get confused when trying to parsing fragments as standalone frames
in two ways:

  1. the first fragment will have the packet length greater than the
     frame size and will always be discarded;

  2. fragments with non-zero offsets will be interpreted as full packets
     and the first part of their raw payload data will be parsed as the
     transport protocol header, resulting in bogus values for addresses
     and ports, thus evading the properties filtering on those values.

This can make it difficult for users to see why the data does not get
downstream.

So be more explicit and just bail out when fragmented packets are
encountered.

https://bugzilla.gnome.org/show_bug.cgi?id=795284
2018-04-16 11:22:27 +03:00
Antonio Ospite
a4df5132bc pcapparse: add some comments about the pcap format headers
Since the code is full of magic add at least some guidance for newbies.

https://bugzilla.gnome.org/show_bug.cgi?id=795284
2018-04-16 11:22:27 +03:00
Seungha Yang
3caf16a199 h265parse: Make caps writable before modifying them
Fix following assertion failure
GStreamer-CRITICAL **: gst_structure_remove_field: assertion 'IS_MUTABLE (structure)' failed

https://bugzilla.gnome.org/show_bug.cgi?id=795032
2018-04-11 22:47:21 -04:00
Philippe Normand
b26cc16d1e fakevideosink: explicit type cast for max-lateness property setter
g_object_set() expects the parameters values to be the exact type of the
property being set.
2018-04-10 10:26:38 +01:00
Guillaume Desmottes
9cd77b1644 fakevideosink: request an extra buffer if enable-last-sample is enabled
If the 'enable-last-sample' property is enabled, fakevideosink will keep
a reference on last rendered buffer which may lead to buffer starvation
in the pipeline.
Request one extra buffer in this case so we always have a buffer flying
in the pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=795109
2018-04-09 18:09:44 +02:00
Nirbheek Chauhan
8649cef462 audiolatency: Fix wave detection in buffers
-1/1000 is 0, so we were *always* detecting a buffer.
2018-04-03 23:57:20 +05:30
Nirbheek Chauhan
2ee16a5810 audiolatency: Avoid bogus pts values while starting 2018-04-03 23:57:20 +05:30
Sebastian Dröge
7a2110a499 mpegtsmux: Resend initial segments and header sections after FLUSH_STOP
https://bugzilla.gnome.org/show_bug.cgi?id=794816
2018-04-03 14:38:15 +03:00
Tim-Philipp Müller
4d76070f4e rtponviftimestamp: fix state change function init/reset
When starting up we need to initialise things *before*
streaming starts, so before we chain up to the parent
class in the state change function. And when we shut
down the element, we need to reset things after streaming
has stopped, so after we chain up to the parent class
in the state change function.

Possibly related to memory leak in:
https://bugzilla.gnome.org/show_bug.cgi?id=794353
2018-03-27 16:51:30 +01:00
Sebastian Dröge
93e56ed473 mpegtsmux: Explicitly resend PAT/SI/PMT on force-keyunit events
And don't randomly change the PCR stream, which would cause a new PMT
version to be generated instead and could confuse players.
2018-03-21 13:42:30 +02:00
Sebastian Dröge
3f0463c43e mpegtsmux: Deterministically set the PCR stream to the first stream of the program
Otherwise it would be randomly set to the first stream of the program
that receives a buffer.
2018-03-21 13:34:17 +02:00
Sebastian Dröge
19acd7b215 mpegtsmux: Reset a few more fields in mpegtsmux_reset() to their original values 2018-03-21 11:05:23 +02:00
Sebastian Dröge
e3740b58d7 tsmux: Don't use GST_DEBUG_OBJECT() with non-GObject types 2018-03-21 10:59:29 +02:00
Brendan Shanks
8e3827b7be h264parse: reset internal 'state' variable properly
Reset the internal 'state' variable when the parser is started, fixes
errors when parser is being re-used.

https://bugzilla.gnome.org/show_bug.cgi?id=794537
2018-03-21 09:12:28 +02:00
Guillaume Desmottes
9f25fcdfc9 h265parse: add support for 'Format range extensions profiles'
Those profiles have been introduced in version 2 of the HEVC spec
(A.3.5).

https://bugzilla.gnome.org/show_bug.cgi?id=793876
2018-03-05 13:22:12 -05:00
Guillaume Desmottes
d252f503fc h265parser: decouple GstH265Profile and GstH265ProfileIDC
We used to have the same enum to represent H265 profiles and idc values.
Those are no longer the same with extension profiles defined from
version 2 of the spec.
Split those enums so the semantic of each is clearer and we'll be able
to add extension profiles to GstH265Profile.

Also add gst_h265_profile_tier_level_get_profile() to retrieve the
GstH265Profile from the GstH265ProfileTierLevel. It will be used to
implement the detection of extension profiles.

https://bugzilla.gnome.org/show_bug.cgi?id=793876
2018-03-05 13:19:42 -05:00