Commit graph

7356 commits

Author SHA1 Message Date
Sebastian Dröge
aae25e0032 compositor: Implement different operators via per-pad property
This removes the crossfade-ratio property and replaces it with an
operator property. Currently this implements the following operators:

- SOURCE: Copy over the source and don't look at the destination
- OVER: Default blending of the source over the destination
- ADD: Like OVER but simply adding the alpha instead

See the example for how to implement crossfading with this.

https://bugzilla.gnome.org/show_bug.cgi?id=797169
2018-10-28 17:13:26 +00:00
Sebastian Dröge
690a18ee09 compositor: Remove extra header for the pad declaration
There's no reason for having this separate apart from making things less
discoverable.
2018-10-27 13:59:57 +01:00
Seungha Yang
53b6c94d63 meson: Replace empty configuration_data() with copy keyword
Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0

https://bugzilla.gnome.org/show_bug.cgi?id=797298
2018-10-17 14:08:47 +01:00
Vivia Nikolaidou
d89104c57f avwait: Fix sending of dropping=true messages
If the first audio buffer to be dropped started right between two video
buffers (after the end of the first but before the start of the second,
as is often the case with N/1001 video frame rates), we would miss
sending the dropping=true message.

https://bugzilla.gnome.org/show_bug.cgi?id=797248
2018-10-04 12:40:45 +03:00
Mathieu Duponchelle
14b9a34f54 mpegtsmux: add custom AC-3 descriptor
tsdemux expects a custom descriptor (GST_MTS_DESC_AC3_AUDIO_STREAM)
to detect a stream as AC3 and not EAC3.

Note that tsdemux expects this descriptor because mpegtsmux writes
a stream with a HDMV registration descriptor.

Fixes:

gst-launch-1.0 -v audiotestsrc ! avenc_ac3 ! ac3parse ! mpegtsmux ! \
tsdemux ! ac3parse ! avdec_ac3 ! audioconvert ! autoaudiosink

https://bugzilla.gnome.org/show_bug.cgi?id=797220
2018-09-27 17:34:10 +02:00
Vivia Nikolaidou
b1b4a04338 avwait: Send dropping=true message after all streams stopped
Previously it was dispatched before the last video buffer, and audio
buffers would follow afterwards. It's misleading to send the
dropping=true message before both streams have really stopped, it can
lead to races when someone is e.g. waiting for that message to send EOS.

Also added some debug output.

https://bugzilla.gnome.org/show_bug.cgi?id=797145
2018-09-21 17:31:25 +03:00
Seungha Yang
da7143078f h265parse: Fix periodic SPS/PPS sending work after a seek
Apply the commit ef71b61
See also https://bugzilla.gnome.org/show_bug.cgi?id=742212

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
fd79d8d7a3 h265parse: Add support insert parameter set per IDR
Apply commits 0c04e00, bf0d952 and a0876aa to h265parse.
See also https://bugzilla.gnome.org/show_bug.cgi?id=766803

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
8b57392b92 h265parse: Don't discard first AU delimiter
Apply the commit 48a1f27

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
60d8b7184f h265parse: Consider SEI NALU as "HEADER" packets
Apply the commit 69c09c3

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
3ad30ef76e h265parse: Don't unref buffer that was unreffed just a few lines before already
Apply the commit 9b50a12

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
27432ab067 h265parse: Reset the parser information when caps changes
Apply the commit 14f6fcd

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
80cab68889 h265parse: Fix collection of access units to preserve config headers
Apply the commit 7d44a51
See also https://bugzilla.gnome.org/show_bug.cgi?id=732203

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
ababccbcb2 h265parse: Improve conditions for skipping NAL units
See also https://bugzilla.gnome.org/show_bug.cgi?id=732203

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
c0756d0909 h265parse: Introduce new state tracking variables
Direct applying the commit 7bb6443. This could fix also unexpected
nal dropping when nonzero "config-interval" is set.
(e.g., gst-launch-1.0 videotestsrc ! x265enc key-int-max=30 !
 h265parse config-interval=30 ! avdec_h265 ! videoconvert ! autovideosink)

Similar to the h264parse, have_{vps,sps,pps} variables will be used
for deciding on when to submit updated caps or not, and rather mean
"have new SPS/PPS to be submitted?"
See also https://bugzilla.gnome.org/show_bug.cgi?id=732203

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
ad7cf957fb h265parse: Fix and optimize NAL collection function
Adopt h264parse's _collect_nal() behavior.
See also commit 5601c87 and  https://bugzilla.gnome.org/show_bug.cgi?id=732154

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
2bd883621f h265parse: Unref/replace force_key_unit_event in gst_h265_parse_reset
Apply the commit 36a2aca

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Seungha Yang
7032b6a454 h265parse: Copy over DISCONT flag from input buffers
Apply the commit 10ffa08

https://bugzilla.gnome.org/show_bug.cgi?id=754124
2018-09-10 22:36:59 -04:00
Nicolas Dufresne
b7bc4b4cb5 watchdog: Add missing static keyword
get/set_property method should have been static.
2018-09-10 16:51:13 -04:00
Vivia Nikolaidou
ae7ecfceed timecodestamper: Fix typo in set_drop_frame
Was checking if fps_d == 60000 (instead of fps_n), causing 60000/1001 to
be always falsely interpreted as non-drop-frame
2018-09-03 15:15:45 +03:00
Johan Bjäreholt
962ca01596 audiobuffersplit: Fix format string warning
We have a GST_DEBUG_OBJECT, which prints a guint64 with %lu which gave a
compiler warning. Used G_GUINT64_FORMAT instead.

https://bugzilla.gnome.org/show_bug.cgi?id=797036
2018-08-28 11:12:45 +03:00
Tim-Philipp Müller
90625953f2 freeverb: update for g_type_class_add_private() deprecation
Not that the private struct is really needed here.
2018-08-19 14:42:23 +01:00
Sebastian Dröge
f19edc8c83 audiobuffersplit: Add a gapless mode which inserts silence/drops samples on disconts
The output is always a continguous stream without any gaps.
2018-08-17 16:40:16 +03:00
Sebastian Dröge
2f761b89df audiobuffersplit: Always set DISCONT flag after resyncs 2018-08-17 16:40:16 +03:00
Sebastian Dröge
b2602a459b audiobuffersplit: Keep track of resync time separately
If we drain after a discont, the discont time given by the stream
synchronizer is already the time after the discontinuity. But we need to
drain all pending data based on the previous discont time instead.
2018-08-17 16:40:16 +03:00
Sebastian Dröge
186870d10a audiobuffersplit: Update output buffer size after each buffer to compensate for accumulated errors
https://bugzilla.gnome.org/show_bug.cgi?id=796981
2018-08-17 16:40:16 +03:00
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