Commit graph

7468 commits

Author SHA1 Message Date
Tim-Philipp Müller
1b0e150d88 mpegvideoparse: extract CEA-708 closed captions 2018-12-11 13:56:06 +00:00
Sebastian Dröge
bb135ba764 mpegtsmux: Handle zero-sized buffers correctly without going into an infinite loop
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/844
2018-12-10 14:20:14 +00:00
Guillaume Desmottes
5efe9944e0 h265parse: process SEI recovery point
Similar change as the on I did in h264parse. We want to process SEI
recovery point as keyframe so muxers will mark them as seek points and
decoders will be able to start decoding from them rather than waiting
for an IDR.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00
Guillaume Desmottes
99bd3f716c h265parse: parse SEI messages
Don't do anything with them yet. I just copied the parsing and
processing logic from h264parse.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00
Guillaume Desmottes
5ac4a6e003 h264parse: mark SEI Recovery Point as keyframes
The spec states that "recovery point SEI message assists a decoder in
determining when the decoding process will produce acceptable
pictures for display after the decoder initiates random access or after the
encoder indicates a broken link in the coded video sequence."

Mark those as keyframes so muxers will mark them as seek points and
decoders will be able to start decoding from them rather than waiting
for an IDR.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00
Seungha Yang
68a5697c1a h265parse: Don't duplicate VPS/SPS/PPS per config-interval if exists
Don't need to manually insert VPS/SPS/PPS since inband data could be useable.

Also fixes #824
2018-11-30 02:19:17 +00:00
Seungha Yang
4f7fe897b9 h264parse: Don't duplicate SPS/PPS per config-interval if exists
Don't need to manually insert SPS/PPS since inband data could be useable.

Fixes #824
2018-11-30 02:19:17 +00:00
Lars Petter Endresen
e6c56ec014 siren: Fix floating point invalid operation
Mix of single and double precision leads to zero-by-zero divide
for upper 64-bit of the xmm register, even though they are not
used.
2018-11-15 08:44:12 +00:00
Matthew Waters
aa3d7de98b tsdemux: implement preliminary support for the bitrate query
Return the size / total duration as a ballpark estimate.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:09:21 +00:00
Tim-Philipp Müller
2b2fc0f855 compositor: update disted orc backup files 2018-11-02 20:31:54 +00:00
Víctor Manuel Jáquez Leal
2e6e4cce0b compositor: Fix enum type mismatch
The variable blend_mode is GstCompositorBlendMode but it is
assigned to a GstCompositorOperator enum value.
2018-10-31 19:22:35 +01:00
Johan Bjäreholt
9cae8f6030 compositor: fix undeclared functions 2018-10-30 13:32:33 +01:00
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
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
Nicolas Dufresne
9865904d88 Revert "h265parse: early set src caps when input not byte-stream"
This reverts commit 93d29e8030.
2018-03-02 10:37:53 -05:00
Nicolas Dufresne
7e45b9f03f Revert "h264parse: early set src caps when input is avc"
This reverts commit 5ac886d85a.
2018-03-02 10:37:45 -05:00
Mathieu Duponchelle
39d408f3d6 Port to latest GstAggregator segment API
The aggregator segment is now exposed on the src pad

https://bugzilla.gnome.org/show_bug.cgi?id=793946
2018-03-01 15:37:06 +01:00
Mathieu Duponchelle
7771488edb mxfmux: instantiate adapter at the correct place 2018-02-28 23:46:44 +01:00
Nirbheek Chauhan
5089ab3428 audiolatency: Fix string format specifier and use microseconds everywhere
Should fix warnings or build errors on 32-bit platforms and on Windows.

Also clarify in logging that all timestamps are in microseconds.
2018-02-28 00:59:42 +05:30
Nirbheek Chauhan
307865ec7a audiolatency: Fix cerbero build failure
Average latency is a 64-bit integer.

https://ci.gstreamer.net/job/GStreamer-master/9962/
2018-02-28 00:41:20 +05:30
Nirbheek Chauhan
3fb81536ce audiolatency: New plugin for measuring audio latency
Measures the audio latency between the source pad and the sink pad by
outputting period ticks on the source pad and measuring how long they
take to arrive on the sink pad.

Very useful for quantifying latency improvements in audio pipelines.
This plugin was particularly useful during development of the
low-latency features of the wasapi plugin.

https://bugzilla.gnome.org/show_bug.cgi?id=793839
2018-02-27 23:54:28 +05:30
Sreerenj Balachandran
751e85fa45 checksumsink: remove src pad template from sink element
https://bugzilla.gnome.org/show_bug.cgi?id=793774
2018-02-23 23:32:44 +00:00
Nicolas Dufresne
a73e5eba55 doc: Add section for fakevideosink
https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 12:27:39 -05:00
Nicolas Dufresne
f0c676c0f9 Add fakevideosink element
This is a wrapper around fakesink that will advertise GstVideoMeta
and other meta API in order to achieve zero-copy whenever possible.
his new element is useful when doing performance testing with
video stream and don't want the sink capability to change the
upstream behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 11:30:33 -05:00
Nicolas Dufresne
ccb0837903 meson: Remove unused header list
https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 11:30:33 -05:00
Edward Hervey
235feecf46 Update ORC fallback disted code 2018-02-14 14:36:00 +01:00
Dimitrios Katsaros
3cf4a70dbc pnm: Fixed segfault in pnmenc
The pnmenc was not mapping the input buffers as video buffers. Because
of this, the video frame stride was not being set based on frame but
based on the caps, which make the assumption that the strides are a
power of 4. For input that is not a power of 4, this would lead to a
SIGSEGV.

https://bugzilla.gnome.org/show_bug.cgi?id=793419
2018-02-14 10:19:22 +02:00
Tim-Philipp Müller
c180f8ffed audiomixer: remove, moved to -base
https://bugzilla.gnome.org/show_bug.cgi?id=791218
2018-02-13 00:37:35 +00:00
Tim-Philipp Müller
843f118523 proxy: remove unneeded object private structs
Plugin headers are not installed.

Also mark internal funcs as internal.
2018-02-12 19:35:19 +00:00
Carlos Rafael Giani
ec963e688f interaudio: Make sure both PTS and DTS values are defined
The inter plugin originated in 0.10, which had only one timestamp. As a
result, during the port to 1.0, the DTS were left undefined. This can cause
subtle bugs with basesrc, which can end up incorrectly picking DTS over PTS
and producing output buffers with incorrect timestamps.

https://bugzilla.gnome.org/show_bug.cgi?id=791347
2018-02-11 20:41:14 +00:00
Víctor Manuel Jáquez Leal
8749c61e95 Revert "gdpdepay: don't use allocator if it has custom alloc"
This reverts commit f6cb16ab8c.
2018-02-08 11:15:46 +01:00
Nirbheek Chauhan
20a6dacf71 proxy: Fix plugin definition
I'm not sure how this was missed in review...
2018-02-08 15:19:12 +05:30
Nirbheek Chauhan
f6104ca38b proxy: Remove dead code from Makefile.am
There is no gstproxytest.c
2018-02-08 14:45:28 +05:30
Nirbheek Chauhan
3f7e29d5b3 Add new 'proxy' element to stream data between pipelines
This keep-it-simple plugin is useful when you want to pipe arbitrary
data to a different pipeline within the same process. Some advantages
over appsink/appsrc, the inter elements, etc:

* Ease of use. Buffers, events, and caps are transmitted as-is without
  copying or serialization.
* Enables zerocopy (especially DMABUF) transparently without any
  special-casing.
* Enables usage with sinks or elements that are unreliable and may
  throw errors and need re-initialization, such as a network sink, a
  USB device sink (v4l2), etc.
* Transmits arbitrary data, not just audio/video/subs
* Can easily implement 1 producer pipeline -> N dynamic consumer
  pipelines within a single process when combined with the `tee`
  element.

All queries, events, buffers, and buffer lists are proxied. State
changes, clocks, and base times for the two pipelines are independent
since the upstream and downstreams continue to be different pipelines.

https://bugzilla.gnome.org/show_bug.cgi?id=788200
2018-02-07 22:49:36 +05:30
Omar Akkila
c365ab7e66 netsim: fix format errors for different platforms
https://bugzilla.gnome.org/show_bug.cgi?id=793073
2018-02-01 11:10:50 +00:00
Víctor Manuel Jáquez Leal
f6cb16ab8c gdpdepay: don't use allocator if it has custom alloc
gdpdepay element uses the decide_allocation to fetch the downstream
allocator. Nonetheless it is possible that allocate uses a custom
alloc function, which is not usable by gdpdepay, crashing later the
application when the allocater buffer is NULL.

This patch checks for the allocator flags and reset it if the
allocator has a custom alloc function.

https://bugzilla.gnome.org/show_bug.cgi?id=789476
2018-01-31 14:03:36 +01:00
Víctor Manuel Jáquez Leal
f04b20e59e gdpdepay: don't allocation query if caps aren't fixed
When querying downstream for allocation, and the source caps hasn't
set its caps, using ANY by default, it raises a critical message in
console:

CRITICAL **: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)' failed

This patch bails out decide_allocation() if the caps aren't fixed.

https://bugzilla.gnome.org/show_bug.cgi?id=789476
2018-01-31 14:03:36 +01:00
Guillaume Desmottes
a1b271d2ec h26{4,5}parse: expose chroma format and bit depth in caps
This information could be used for example to pick a decoder supporting
a specific chroma and/or bit depth, like 4:2:2 10 bits.
It can also be used to inform earlier decoder about the format it is
about to decode.

https://bugzilla.gnome.org/show_bug.cgi?id=792039
2018-01-24 11:50:54 -05:00
Jun Xie
3f87a9dd7f netsim: fix misleading packet delay log
packet delay time shall be calculated by ready_time minus current time

https://bugzilla.gnome.org/show_bug.cgi?id=791838
2018-01-24 00:22:06 +00:00
Tim-Philipp Müller
c7e34a0b2f Update for renamed aggregator pad API
https://bugzilla.gnome.org/show_bug.cgi?id=791204
2018-01-23 09:01:00 +00:00
Edward Hervey
6c2fc31012 mxfdemux: Remove useless check
Any modification of ret in that "while (ret == GST_FLOW_OK)" loop will
break (and cause it to stop the iteration).

CID #1427095
2018-01-11 11:41:33 +01:00
Vivia Nikolaidou
c7a60ed909 Revert "WIP: Revert "Revert "debugutils: Added new jitterer element"""
This reverts commit a401cb9a61.
2018-01-04 15:41:50 +02:00
Vivia Nikolaidou
f042e57d4e Revert "WIP: Revert "Revert "timecodestamper: LTC from audio"""
This reverts commit e0be05dc70.
2018-01-04 15:41:49 +02:00
Vivia Nikolaidou
7ecf3347d1 Revert "WIP: Revert "Revert "timecodestamper: Modify ltc-add to tc-add"""
This reverts commit 2f9da0ab59.
2018-01-04 15:41:48 +02:00
Vivia Nikolaidou
2f9da0ab59 WIP: Revert "Revert "timecodestamper: Modify ltc-add to tc-add""
This reverts commit 05426d9298.
2018-01-04 13:54:37 +02:00
Vivia Nikolaidou
e0be05dc70 WIP: Revert "Revert "timecodestamper: LTC from audio""
This reverts commit 1998ccf1fb.
2018-01-04 13:54:37 +02:00
Vivia Nikolaidou
a401cb9a61 WIP: Revert "Revert "debugutils: Added new jitterer element""
This reverts commit ccc1624d09.
2018-01-04 13:54:37 +02:00
Nicolas Dufresne
191c8742d3 festival: Don't forward all queries
This fixes issues where wavparse would query the file size upstream
and assert because the file size is way smaller then what the WAVE
header says. This patch disable or cane a handful of queries that
make no sense to forward.

https://bugzilla.gnome.org/show_bug.cgi?id=791811
2017-12-20 14:01:56 -05:00
Mathieu Duponchelle
536cb12577 audioaggregator: implement input conversion
https://bugzilla.gnome.org/show_bug.cgi?id=786344
2017-12-19 23:39:37 +01:00
Nirbheek Chauhan
11af685d64 Revert "New element 'proxy' to send data to in-process pipelines"
This reverts commit 8a056af05e.

Accidentally pushed this element, oops! Progress on this element is
being tracked at: https://bugzilla.gnome.org/show_bug.cgi?id=788200
2017-12-19 01:16:35 +05:30
Nirbheek Chauhan
8a056af05e New element 'proxy' to send data to in-process pipelines
This plugin is useful when you want to pipe arbitrary data to
a different pipeline within the same process. Buffers, events, and caps
are transmitted as-is without copying or manipulation.
2017-12-19 01:09:50 +05:30
Vivia Nikolaidou
cbeebfea49 avwait: Added "avwait-status" element message
"avwait-status" is posted when avwait starts or stops passing through
data (e.g. because target-timecode and end-timecode respectively have
been reached). The attached structure includes a "dropping" boolean (set
to TRUE if we are currently dropping data, FALSE otherwise), and a
"running-time" GST_CLOCK_TIME which contains the running time of the
change.

https://bugzilla.gnome.org/show_bug.cgi?id=790170
2017-12-08 21:56:32 +02:00
Tim-Philipp Müller
c0226e08e3 h264parse: make caps writable before modifying them
https://bugzilla.gnome.org/show_bug.cgi?id=790628
2017-12-07 19:17:07 +00:00
Tim-Philipp Müller
d01297e115 Remove GstAggregator from -bad, moved to core
https://bugzilla.gnome.org/show_bug.cgi?id=739010
2017-12-02 16:14:36 +00:00
Stian Selnes
04393f4377 h263parse: Add debug log for more annexes when plustype 2017-11-25 12:12:20 +00:00
Tim-Philipp Müller
c27bb822a8 netsim: simplify getting buffer size in bits 2017-11-25 11:27:57 +00:00
Havard Graff
b8b4124c8b netsim: add "allow-reordering" property
Reordering of packets is not very common in networks, and the delay
functions will always introduce reordering if delay > packet-spacing,
so by setting allow-reordering to FALSE you guarantee that the packets
are in order, while at the same time introducing delay/jitter to them.
2017-11-25 11:10:27 +00:00
Stian Selnes
c9002e3dd5 netsim: Add gamma distribution for delay
This simulates the delay on wifi networks better.
2017-11-25 11:10:27 +00:00
Stian Selnes
531b1e326f netsim: Change max-delay to be inclusive
It is more intuitive for the user that in order to acheive a constant
delay min-delay and max-delay are equal.
2017-11-25 11:10:27 +00:00
Stian Selnes
9416d36463 netsim: Add "delay-distribution" property plus normal distribution
By using the property "delay-distribution" the user can control how the
delay applied to delayed packets is distributed. This is either the
uniform distribution (as before) or the normal distribution.

"min-delay" and "max-delay" control both distributions. For the normal
distribution it defines the bounds of the 95% confidence interval.
2017-11-25 11:10:27 +00:00
Havard Graff
3eb733d95f netsim: add token bucket algorithm for simulating network congestion 2017-11-25 11:10:27 +00:00
Havard Graff
3cdd53621e netsim: change property enums to PROP_* and fix indentation 2017-11-25 11:10:27 +00:00
Tim-Philipp Müller
5187fdfb07 netsim: remove private struct and padding
There's no need for these things, since the plugin headers
are not public, and all the extra ->priv-> just clutter the
code.
2017-11-25 11:10:27 +00:00
Guillaume Desmottes
93d29e8030 h265parse: early set src caps when input not byte-stream
When input is not in byte-stream format there is no need to wait for the first
buffer before setting src caps. We already have all the information from the
input codec_data.

This allow us to already configure downstream elements allowing them,
for example, to already allocate their internal buffers as they know
the format of the input they are about to receive.

Same change as the one I just did in h264parse.

https://bugzilla.gnome.org/show_bug.cgi?id=790709
2017-11-24 11:13:05 +02:00
Guillaume Desmottes
5ac886d85a h264parse: early set src caps when input is avc
When input is in AVC format there is no need to wait for the first buffer
before setting src caps. We already have all the information from the
input codec_data.

This allow us to already configure downstream elements allowing them,
for example, to already allocate their internal buffers as they know
the format of the input they are about to receive.

https://bugzilla.gnome.org/show_bug.cgi?id=790709
2017-11-24 11:13:05 +02:00
Mathieu Duponchelle
56fc5bef18 aggregator: Remove klass->sinkpads_type
This posed problems for the python bindings (and possibly others).

Instead, subclasses now use add_pad_template_with_gtype.

https://bugzilla.gnome.org/show_bug.cgi?id=789986
2017-11-22 16:52:29 +01:00
Guillaume Desmottes
00874850e7 h265parse: put downstream caps first if possible on sink caps
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.

Exact same change as the one I just did in h264parse.

https://bugzilla.gnome.org/show_bug.cgi?id=790628
2017-11-22 17:38:04 +02:00
Guillaume Desmottes
d5067b42de h264parse: put downstream caps first if possible on sink caps
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
2017-11-22 17:38:04 +02:00
Edward Hervey
4260f8a120 all: Fix left-shift undefined behaviour
Cast to the target type before shifting (or use macro if available)
2017-11-20 17:06:07 +01:00
Vivia Nikolaidou
f3b539e0ff avwait: Deserialised timecodes set after caps event now get correct framerate
A deserialised timecode has a framerate of 0/1 by default. That breaks
it when comparing the frames field with another timecode (incoming from
the frame). We were setting the framerate when receiving the caps event,
but not when setting the timecode in set_property, so it was broken for
timecodes set after the caps event.

Also checking if the fps_n we got from the caps event is != 0 before
setting it - also at the caps event.

https://bugzilla.gnome.org/show_bug.cgi?id=790334
2017-11-14 18:29:49 +02:00
Vivia Nikolaidou
d364c7b443 timecode: Fix incorrect wording in error message 2017-11-10 17:28:07 +02:00
Vivia Nikolaidou
38120376c6 avwait: Better handling of deserialised timecode framerates
Now that timecodes support proper serialisation / deserialisation, a
timecode might have an invalid fps_n / fps_d even without using the
target-time-code-string property. Detect those cases and set fps_n/fps_d
properly.
2017-11-10 17:28:05 +02:00
Vivia Nikolaidou
ccc1624d09 Revert "debugutils: Added new jitterer element"
This reverts commit 595254f21b.

Was not ready to be pushed yet.
2017-11-07 21:12:36 +02:00
Vivia Nikolaidou
1998ccf1fb Revert "timecodestamper: LTC from audio"
This reverts commit c01afab9f7.

Was not ready to be pushed yet
2017-11-07 21:12:32 +02:00
Vivia Nikolaidou
05426d9298 Revert "timecodestamper: Modify ltc-add to tc-add"
This reverts commit 6552981b79.

Was not ready to be pushed yet
2017-11-07 21:12:25 +02:00
Vivia Nikolaidou
503403ff0a avwait: Fix crash when explicitly setting end_tc to NULL
If end_tc is NULL, it means that we don't want avwait to stop at any
timecode. When explicitly setting end_tc to NULL, there is no point in
comparing end_tc with start_tc (to see if we'll reject end_tc for being
before start_tc), so the check in question is completely disabled
instead of letting it crash.
2017-11-07 21:03:22 +02:00