Luis de Bethencourt [Mon, 29 Feb 2016 10:10:24 +0000 (10:10 +0000)]
matroska-demux: remove impossible condition
It is impossible for a guint to have a negative value, no need to check for
this. Introduced in commit
6861d11c49ea0f30d2432cf4ebf6108bc89897f1
CID 1354509
Petr Viktorin [Sun, 28 Feb 2016 09:12:36 +0000 (10:12 +0100)]
alpha: Fix sample pipeline
Use the zorder pad property to make sure the semitransparent
video is on top of the background.
https://bugzilla.gnome.org/show_bug.cgi?id=762809
Tim-Philipp Müller [Sun, 28 Feb 2016 13:42:28 +0000 (13:42 +0000)]
rgvolume: make tag list writable before modifying it
Making the event itself writable is not enough, it won't make
the actual taglist in the event writable as well. Instead, just
make a copy of the taglist and then create a new tag event from
that if required, replacing the old one. Before we would
inadvertently modify taglists upstream elements might still
be holding on to. Add unit test for this as well.
https://bugzilla.gnome.org/show_bug.cgi?id=762793
Sebastian Dröge [Sun, 28 Feb 2016 11:01:34 +0000 (13:01 +0200)]
rtspsrc: Properly error out if binding the UDP sockets fails
udpsrc is not returning us a socket in that case.
Sebastian Dröge [Sat, 27 Feb 2016 18:33:32 +0000 (20:33 +0200)]
goom: Use goom_set_resolution() instead of recreating the goom instance when the resolution changes
https://bugzilla.gnome.org/show_bug.cgi?id=762765
Sebastian Dröge [Sat, 27 Feb 2016 18:32:45 +0000 (20:32 +0200)]
Revert "goom: Initialize the goom struct only once we know width/height and recreate it if those change"
This reverts commit
cc6e102643c1bae928316dca9f34db028fb9a67e.
Sebastian Dröge [Sat, 27 Feb 2016 18:31:15 +0000 (20:31 +0200)]
goom: Initialize the goom struct only once we know width/height and recreate it if those change
Fixes crash when the width and/or height is changing.
https://bugzilla.gnome.org/show_bug.cgi?id=762765
Sebastian Dröge [Fri, 26 Feb 2016 10:41:07 +0000 (12:41 +0200)]
Automatic update of common submodule
From b64f03f to 6f2d209
Tim-Philipp Müller [Thu, 25 Feb 2016 22:54:18 +0000 (22:54 +0000)]
docs: add rtpopusdepay and rtpopuspay to documentation
Tim-Philipp Müller [Wed, 17 Feb 2016 15:15:11 +0000 (15:15 +0000)]
rtp: opus: move Opus RTP payloader/depayloader from -bad to -good
https://bugzilla.gnome.org/show_bug.cgi?id=756282
Tim-Philipp Müller [Wed, 17 Feb 2016 15:10:00 +0000 (15:10 +0000)]
Merge branch 'plugin-move-rtp-opus'
Move Opus RTP depayloader/payloader from -bad to -good.
https://bugzilla.gnome.org/show_bug.cgi?id=756282
Philippe Normand [Thu, 25 Feb 2016 10:33:13 +0000 (11:33 +0100)]
qtdemux: cenc aux info parsing from mdat support in PULL mode
This is already supported for PUSH mode but was failing in PULL mode.
The aux info is sometimes stored in the mdat before the first sample,
so the loop task needs to pull data stored at that location and
perform the aux info cenc parsing.
https://bugzilla.gnome.org/show_bug.cgi?id=761700
https://bugzilla.gnome.org/show_bug.cgi?id=762516
Philippe Normand [Wed, 24 Feb 2016 10:28:09 +0000 (11:28 +0100)]
qtdemux: prevent buffer flow if any stream failed to be exposed
In some cases the stream configuration can fail, for instance if the
stream is protected and no decryptor was found. For those situations
the demuxer shouldn't emit any data on the corresponding source pad of
the stream and bail out.
https://bugzilla.gnome.org/show_bug.cgi?id=762516
Philippe Normand [Wed, 24 Feb 2016 08:12:03 +0000 (09:12 +0100)]
qtdemux: don't push encrypted buffer without cenc metadata
When the cenc metadata is stored outside of the moof box and the
stream is exposed it is possible that the cenc metadata hasn't been
processed yet while the first buffer is being pushed. When this
happens the buffer can't possibly be decrypted downstream so don't
push it.
https://bugzilla.gnome.org/show_bug.cgi?id=762516
Philippe Normand [Wed, 21 Oct 2015 14:21:45 +0000 (16:21 +0200)]
qtdemux: read saio aux_info_type as a FOURCC
https://bugzilla.gnome.org/show_bug.cgi?id=756897
Sebastian Dröge [Tue, 23 Feb 2016 16:27:47 +0000 (18:27 +0200)]
gst: Handle gst_pad_get_current_caps() returning NULL gracefully
Dave Craig [Tue, 23 Feb 2016 16:12:54 +0000 (18:12 +0200)]
rtph265depay: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
Dave Craig [Wed, 16 Dec 2015 12:40:39 +0000 (12:40 +0000)]
gst: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
Dave Craig [Wed, 16 Dec 2015 10:54:17 +0000 (10:54 +0000)]
aacparse: Handle gst_pad_get_current_caps() returning NULL gracefully
This can happen when the pipeline is currently shutting down.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
Linus Svensson [Tue, 23 Feb 2016 14:57:18 +0000 (15:57 +0100)]
matroska-demux: Don't handle seek until ready
https://bugzilla.gnome.org/show_bug.cgi?id=762542
Linus Svensson [Tue, 23 Feb 2016 14:55:13 +0000 (15:55 +0100)]
matroska-demux: Unref seek event
https://bugzilla.gnome.org/show_bug.cgi?id=762542
Aurélien Zanelli [Mon, 22 Feb 2016 10:01:40 +0000 (11:01 +0100)]
multifilesink: close file on write error with next-file mode is set to buffer
If we have an error during fwrite call, file stays open and thus next
incoming buffer will trigger an assert when trying to opening a new
file.
This happens if we do not restart element, file is closed at stop, and
if application handles the returned GST_FLOW_ERROR to keep bin alive.
https://bugzilla.gnome.org/show_bug.cgi?id=762434
Matej Knopp [Fri, 19 Feb 2016 22:44:42 +0000 (23:44 +0100)]
matroskamux: don't output empty tags/tag elements
Such files will not play on Android, because of bug in libwebm matroska parsing, which is still present in 6.0.1
https://bugzilla.gnome.org/show_bug.cgi?id=762349
Vincent Penquerc'h [Thu, 4 Feb 2016 15:59:04 +0000 (15:59 +0000)]
matroska-demux: make up an OpusHead block if possible when missing
https://bugzilla.gnome.org/show_bug.cgi?id=761489
Vincent Penquerc'h [Thu, 4 Feb 2016 10:43:15 +0000 (10:43 +0000)]
matroska-mux: make up an OpusHead block if possible when missing
This block is needed in the Matroska file, but data coming from
RTP may not have one.
https://bugzilla.gnome.org/show_bug.cgi?id=761489
Mark Nauwelaerts [Mon, 22 Feb 2016 12:53:21 +0000 (13:53 +0100)]
matroskademux: make stream-id more readable and order-friendly
... as streams are so ordered by id by e.g. decodebin
(and as typically already honoured by other demuxers).
Mark Nauwelaerts [Mon, 22 Feb 2016 12:25:51 +0000 (13:25 +0100)]
matroska: remove confusing duplicate track uid field
Luis de Bethencourt [Mon, 22 Feb 2016 14:03:02 +0000 (14:03 +0000)]
rtpvp9pay: add missing break
VP9_PAY_PICTURE_ID_7BITS and VP9_PAY_PICTURE_ID_15BITS are mutually
exclusive options of the picture-id-mode. We can break after the
first case.
1 or 2 bytes need to be added to the header length depending on the
PictureID size.
https://tools.ietf.org/html/draft-uberti-payload-vp9-00#section-4.2
CID 1353479
Vineeth TM [Mon, 22 Feb 2016 00:09:01 +0000 (09:09 +0900)]
avidemux: Fix buffer memory leak
buffer being mapped is not being unmapped in some cases
https://bugzilla.gnome.org/show_bug.cgi?id=762420
Stian Selnes [Wed, 4 Nov 2015 09:19:03 +0000 (10:19 +0100)]
rtpmanager: Don't warn for duplicate/reordered packets
This is a normal scenario and should not be a warning.
https://bugzilla.gnome.org/show_bug.cgi?id=762208
Tim-Philipp Müller [Sun, 21 Feb 2016 09:47:43 +0000 (09:47 +0000)]
win32: remove outdated build cruft
This hasn't been touched for generations, doesn't work,
and is just causing confusion. We also don't want to
maintain these files manually.
Tim-Philipp Müller [Sat, 20 Feb 2016 11:51:56 +0000 (11:51 +0000)]
v4l2: don't use undeclared core debug category symbols
Matej Knopp [Sat, 6 Feb 2016 13:39:05 +0000 (14:39 +0100)]
qtdemux: workaround for files with wrong color_table_id value
Instead of erroring out, just use the default color table.
https://bugzilla.gnome.org/show_bug.cgi?id=761637
Tim-Philipp Müller [Fri, 19 Feb 2016 15:02:04 +0000 (15:02 +0000)]
flvmux, rtpvp9depay: fix indentation
Tim-Philipp Müller [Fri, 19 Feb 2016 15:03:04 +0000 (15:03 +0000)]
v4l2src: fix indentation
Havard Graff [Thu, 3 Dec 2015 13:46:34 +0000 (00:46 +1100)]
flvmux: plug leak(s) in error-scenario
https://bugzilla.gnome.org/show_bug.cgi?id=762210
Havard Graff [Thu, 3 Dec 2015 13:46:12 +0000 (00:46 +1100)]
flvdemux: fix eos event leak
https://bugzilla.gnome.org/show_bug.cgi?id=762209
Tim-Philipp Müller [Fri, 19 Feb 2016 14:41:07 +0000 (14:41 +0000)]
tests: fix indentation
Havard Graff [Thu, 18 Feb 2016 15:09:29 +0000 (16:09 +0100)]
tests: rtpjitterbuffer: port testharness to GstHarness and cleanup/improve
Probably found a bug as well, in that there are some timestamps in
there that are looking very wrong. (marked with FIXME)
https://bugzilla.gnome.org/show_bug.cgi?id=762267
Havard Graff [Thu, 18 Feb 2016 09:27:19 +0000 (10:27 +0100)]
tests: rtpjitterbuffer: test cleanups/improvements
Use fail_unless and friends instead of g_assert
Factor seq-num checking out to separate function
Check more return-values from push and crank and others
https://bugzilla.gnome.org/show_bug.cgi?id=762254
Stian Selnes [Thu, 3 Dec 2015 10:07:05 +0000 (11:07 +0100)]
tests: rtpjitterbuffer: fix leaks in unit test
https://bugzilla.gnome.org/show_bug.cgi?id=762214
Sebastian Dröge [Fri, 19 Feb 2016 10:38:28 +0000 (12:38 +0200)]
Back to development
Sebastian Dröge [Fri, 19 Feb 2016 09:49:55 +0000 (11:49 +0200)]
Release 1.7.2
Sebastian Dröge [Fri, 19 Feb 2016 08:31:48 +0000 (10:31 +0200)]
po: Update translations
Philippe Normand [Thu, 18 Feb 2016 17:33:13 +0000 (18:33 +0100)]
qtdemux: plug leaks in cenc aux info parsing
Tim-Philipp Müller [Thu, 18 Feb 2016 13:43:07 +0000 (13:43 +0000)]
tests: fix spurious souphttpsrc test timouts
Set GSETTINGS_BACKEND=memory, apparently there's something
about fork() and the dconf backend (or whatever else that
drags in or activates) that messes up locking and causes
timeouts due to deadlocks in g_mutex_lock(), since
everything works fine with CK_FORK=no as well.
Sebastian Dröge [Thu, 18 Feb 2016 09:10:14 +0000 (11:10 +0200)]
matroskademux: Unmap wavpack header buffer after creating it
Otherwise it will be mapped writable all the time and we can't read from it
anywhere.
https://bugzilla.gnome.org/show_bug.cgi?id=762239
Stian Selnes [Tue, 8 Dec 2015 17:49:40 +0000 (18:49 +0100)]
rtpjitterbuffer: Add test for big seqnum gap handling
Make sure that the packets queued when detecting a big gap are pushed
after reset (5 consective seqnums) and not dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=762211
Tim-Philipp Müller [Wed, 17 Feb 2016 15:03:13 +0000 (15:03 +0000)]
rtp: sprinkle some G_GNUC_INTERNAL for internal utils functions
Alex Ashley [Tue, 9 Feb 2016 13:17:00 +0000 (13:17 +0000)]
qtdemux: only transform protected caps once
Commit
7873bede3134b15e5066e8d14e54d1f5054d2063
(https://bugzilla.gnome.org/show_bug.cgi?id=760774) changed the
behaviour of qtdemux to call gst_qtdemux_configure_stream() for
every new moof.
When playing a protected stream, gst_qtdemux_configure_stream()
calls gst_qtdemux_configure_protected_caps(). The
gst_qtdemux_configure_protected_caps() function takes the original
media format, puts this in a field called "original-media-type"
and then changes the caps to "application/x-cenc".
The gst_qtdemux_configure_protected_caps() did not handle the case
of being called multiple times, causing it to incorrectly set the
caps. The second call was causing the caps to be set to:
application/x-cenc, original-media-type"application/x-cenc"
This commit makes gst_qtdemux_configure_protected_caps() check that
the caps have already been transformed, so that it only gets
changed once.
https://bugzilla.gnome.org/show_bug.cgi?id=761769
Sebastian Dröge [Tue, 3 Nov 2015 12:50:53 +0000 (14:50 +0200)]
opus: Add proper support for multichannel audio
https://bugzilla.gnome.org/show_bug.cgi?id=757152
Sebastian Dröge [Tue, 30 Jun 2015 11:51:33 +0000 (13:51 +0200)]
opus: Copy metadata in the (de)payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without tags or
with only the audio tag.
https://bugzilla.gnome.org/show_bug.cgi?id=751774
Sebastian Dröge [Mon, 4 May 2015 09:23:16 +0000 (11:23 +0200)]
opusdepay: Set multistream=FALSE on the Opus caps
The RTP Opus mapping only allows mono/stereo, and not multistream Opus
streams.
Olivier Crête [Tue, 24 Mar 2015 17:57:54 +0000 (13:57 -0400)]
rtpopuspay: Forward stereo preferences from caps upstream
https://bugzilla.gnome.org/show_bug.cgi?id=746617
Olivier Crête [Tue, 24 Mar 2015 17:56:21 +0000 (13:56 -0400)]
rtpopuspay: Set the number of channels to 2 as per RFC draft
https://bugzilla.gnome.org/show_bug.cgi?id=746617
Sebastian Dröge [Mon, 23 Mar 2015 11:24:55 +0000 (12:24 +0100)]
opus: Handle sprop-stereo and sprop-maxcapturerate RTP caps fields
https://bugzilla.gnome.org/show_bug.cgi?id=746617
Vincent Penquerc'h [Thu, 19 Feb 2015 14:30:10 +0000 (14:30 +0000)]
rtpopuspay: default encoding name to OPUS
https://bugzilla.gnome.org/show_bug.cgi?id=737810
Vincent Penquerc'h [Thu, 19 Feb 2015 14:05:06 +0000 (14:05 +0000)]
rtpopuspay: make caps writable before truncating them
https://bugzilla.gnome.org/show_bug.cgi?id=737810
Vincent Penquerc'h [Thu, 5 Feb 2015 10:27:51 +0000 (10:27 +0000)]
rtpopuspay: negotiate the encoding name
Chrome uses a different encoding name that gstreamer.
https://bugzilla.gnome.org/show_bug.cgi?id=737810
Nicolas Dufresne [Sat, 1 Nov 2014 14:10:27 +0000 (10:10 -0400)]
rtpopus: Use OPUS encoding name
Both Firefox and Chrome uses OPUS as the encoding in their SDP.
Adding this now defacto standard name remove the need for special
case in SDP parsing code.
https://bugzilla.gnome.org/show_bug.cgi?id=737810
Wim Taymans [Thu, 31 Jan 2013 11:30:49 +0000 (12:30 +0100)]
opuspay: fix timestamps
Copy timestamps to payloaded buffer.
Avoid input buffer memory leak.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692929
Tim-Philipp Müller [Sat, 3 Nov 2012 20:38:00 +0000 (20:38 +0000)]
Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
Wim Taymans [Mon, 22 Oct 2012 10:08:41 +0000 (12:08 +0200)]
opuspay: remove pointless caps serialization
Remove the caps serialization in the rtp caps. the spec nor the receiver
does anything with it.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686547
Tim-Philipp Müller [Wed, 17 Oct 2012 16:34:26 +0000 (17:34 +0100)]
Use gst_element_class_set_static_metadata()
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
Olivier Crête [Thu, 20 Sep 2012 22:41:24 +0000 (18:41 -0400)]
rtpopuspay: Allocate the rtp buffer correctly
Use the right functions to allocate the rtp buffer
Mark Nauwelaerts [Fri, 14 Sep 2012 15:08:49 +0000 (17:08 +0200)]
replace gst_element_class_set_details_simple with gst_element_class_set_metadata
Mark Nauwelaerts [Wed, 7 Mar 2012 16:14:29 +0000 (17:14 +0100)]
opus: port to updated 0.11
Edward Hervey [Fri, 30 Dec 2011 10:41:17 +0000 (11:41 +0100)]
Merge remote-tracking branch 'origin/master' into 0.11-premerge
Conflicts:
docs/libs/Makefile.am
ext/kate/gstkatetiger.c
ext/opus/gstopusdec.c
ext/xvid/gstxvidenc.c
gst-libs/gst/basecamerabinsrc/Makefile.am
gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.h
gst-libs/gst/video/gstbasevideocodec.c
gst-libs/gst/video/gstbasevideocodec.h
gst-libs/gst/video/gstbasevideodecoder.c
gst-libs/gst/video/gstbasevideoencoder.c
gst/asfmux/gstasfmux.c
gst/audiovisualizers/gstwavescope.c
gst/camerabin2/gstcamerabin2.c
gst/debugutils/gstcompare.c
gst/frei0r/gstfrei0rmixer.c
gst/mpegpsmux/mpegpsmux.c
gst/mpegtsmux/mpegtsmux.c
gst/mxf/mxfmux.c
gst/videomeasure/gstvideomeasure_ssim.c
gst/videoparsers/gsth264parse.c
gst/videoparsers/gstmpeg4videoparse.c
Vincent Penquerc'h [Fri, 9 Dec 2011 17:25:41 +0000 (17:25 +0000)]
opusenc: add upstream negotiation for multistream ability
This will help elements that cannot deal with multistream,
such as the RTP payloader.
The caps now do not include a "streams" field anymore, but
a "multistream" boolean, since we have no real use for knowing
the exact amount of streams.
https://bugzilla.gnome.org/show_bug.cgi?id=665078
Danilo Cesar Lemes de Paula [Wed, 7 Dec 2011 17:13:11 +0000 (15:13 -0200)]
Adding opus RTP payloader/depayloader element
Adding OPUS RTP module based on the current draft:
http://tools.ietf.org/id/draft-spittka-payload-rtp-opus-00.txt
https://bugzilla.gnome.org/show_bug.cgi?id=664817
Luis de Bethencourt [Wed, 17 Feb 2016 13:26:02 +0000 (13:26 +0000)]
rtp: h264/h265: avoid duplication of read_golomb()
There is no need to have two identical implementations of the read_golomb
function.
https://bugzilla.gnome.org/show_bug.cgi?id=761606
Ognyan Tonchev [Wed, 17 Feb 2016 13:37:44 +0000 (14:37 +0100)]
matroskademux: Simple implementation of TRICKMODE_KEY_UNITS
When the trickmode key-units flag is set on the segment, simply skip
any sample on a video stream that isn't a keyframe
https://bugzilla.gnome.org/show_bug.cgi?id=762185
Tim-Philipp Müller [Fri, 21 Aug 2015 13:15:18 +0000 (14:15 +0100)]
matroska-demux: send GAP events for lagging audio and video streams too
Send GAP events for non-subtitle streams too if they lag too much
behind, but use a higher threshold than for subtitles.
This helps with fixing prerolling with a file where one of the
audio streams only has data starting from 19s onwards. It's not
a complete fix yet, it also requires changes elsewhere, such as
in baseparse, to make sure caps are propagated.
https://bugzilla.gnome.org/show_bug.cgi?id=614460
https://bugzilla.gnome.org/show_bug.cgi?id=753899
Stian Selnes [Wed, 23 Dec 2015 18:54:13 +0000 (19:54 +0100)]
rtpvp9pay: rtpvp9depay: Initial implementation of draft 01
Quick and dirty implementation of an RTP payloader and depayloader
for VP9. In particalur it assumes no spatial or temporal layering,
non-flexible mode, and some other bits and pieces.
https://bugzilla.gnome.org/show_bug.cgi?id=754773
Vineeth TM [Tue, 16 Feb 2016 00:02:30 +0000 (09:02 +0900)]
avidemux: Fix string memory leak
codec_name is not being freed in all conditions leading to memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=762117
Miguel París Díaz [Thu, 10 Dec 2015 11:15:52 +0000 (12:15 +0100)]
rtpbin: add "get-session" signal
This gets the GstRTPSession element, as compared to the RTPSession object
that is returned by get-internal-session.
https://bugzilla.gnome.org/show_bug.cgi?id=759293
Tim-Philipp Müller [Tue, 16 Feb 2016 00:19:00 +0000 (00:19 +0000)]
rtp: h265: hook up move RTP H.265 payloader/depayloader to build
https://bugzilla.gnome.org/show_bug.cgi?id=761606
Tim-Philipp Müller [Tue, 16 Feb 2016 00:14:27 +0000 (00:14 +0000)]
rtp: h265: use common meta utility functions
https://bugzilla.gnome.org/show_bug.cgi?id=761606
Tim-Philipp Müller [Fri, 5 Feb 2016 18:18:31 +0000 (18:18 +0000)]
rtp: h265: remove codecparser dependency from h265 payloader/depayloader
Looks like it just uses the NAL enums and nothing else from
the codecparsers, and that's the only reason it had to be
moved from -good to -bad when it was originally added. We
can probably keep those NAL enums up to date enough, so let's
remove the codecparser dependency so it can be moved back into
-good.
https://bugzilla.gnome.org/show_bug.cgi?id=761606
Tim-Philipp Müller [Tue, 16 Feb 2016 00:24:58 +0000 (00:24 +0000)]
Merge branch 'plugin-move-rtp-h265'
Move RTP H.265 payloader/depayloader from -bad to -good.
https://bugzilla.gnome.org/show_bug.cgi?id=761606
Luis de Bethencourt [Fri, 5 Feb 2016 15:34:51 +0000 (15:34 +0000)]
gstrtph265depay: keep consistency with rtph264depay
Use gst_rtp_drop_meta() and the same function prototype for
gst_rtp_copy_meta() to keep consistency with the RTP elements in
gst-plugins-good
Luis de Bethencourt [Fri, 5 Feb 2016 13:56:34 +0000 (13:56 +0000)]
rtph265depay: fix termination of access unit
Only consider the access unit complete when the next-occurring VCL NAL unit
has the first bit after its NAL unit header equal to 1.
Luis de Bethencourt [Fri, 15 Jan 2016 16:10:02 +0000 (16:10 +0000)]
rtph265depay: fix unneeded sub-buffer creation
We create a sub-buffer just to copy over its metas and then throw it
away immediately, just use the original input buffer directly.
Luis de Bethencourt [Fri, 15 Jan 2016 15:56:59 +0000 (15:56 +0000)]
rtph265pay: add "send VPS/SPS/PPS with every key frame" mode
It's not enough to have timeout or event based VPS/SPS/PPS information
sent in RTP packets. There are some scenarios when key frames may appear
more frequently than once a second, in which case the minimum timeout
for "config-interval" of 1 second for sending VPS/SPS/PPS isn't enough.
It might also be desirable in general to make sure the VPS/SPS/PPS is
available with every keyframe (packet loss aside), so receivers can
actually pick up decoding immediately from the first keyframe if
VPS/SPS/PPS is not signaled out of band.
This commit adds the possibility to send VPS/SPS/PPS with every key frame.
This mode can be enabled by setting "config-interval" property to -1. In
this case the payloader will add VPS, SPS and PPS before every key (IDR)
frame.
https://bugzilla.gnome.org/show_bug.cgi?id=757892
Luis de Bethencourt [Fri, 15 Jan 2016 15:19:41 +0000 (15:19 +0000)]
rtph265pay: change config-interval property type from uint to int
This way we can use -1 as special value, which is nicer than MAXUINT.
https://bugzilla.gnome.org/show_bug.cgi?id=757892
Luis de Bethencourt [Sat, 15 Aug 2015 15:22:20 +0000 (16:22 +0100)]
rtph265depay: make sure we call handle_nal for each NAL
Call handle_nal for each NAL in the STAP-A RTP packet. This makes sure
we correctly extract the SPS and PPS.
https://bugzilla.gnome.org/show_bug.cgi?id=730999
Luis de Bethencourt [Sat, 15 Aug 2015 13:45:34 +0000 (14:45 +0100)]
rtph265pay: Copy metadata in the payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.
https://bugzilla.gnome.org/show_bug.cgi?id=751774
Luis de Bethencourt [Sat, 15 Aug 2015 10:41:40 +0000 (11:41 +0100)]
rtph265pay: Use GST_WARNING_OBJECT() instead of GST_WARNING()
https://bugzilla.gnome.org/show_bug.cgi?id=753228
Luis de Bethencourt [Sat, 15 Aug 2015 10:30:36 +0000 (11:30 +0100)]
rtph265pay: fix potential crash when shutting down
A race condition in the state change function may cause buffers to be
unreffed while they are still used by the streaming thread in
gst_rtp_h265_pay_send_vps_sps_pps() resulting in a crash. Chain up to the
parent class first in the state change function to make sure streaming
has stopped and only then free those buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=741381
Luis de Bethencourt [Fri, 14 Aug 2015 14:08:08 +0000 (15:08 +0100)]
rtph265pay: fix buffer leak when using SPS/PPS
Fixes a buffer leak that would occur if the pipeline was shutdown while a
SPS/PPS header was being created.
https://bugzilla.gnome.org/show_bug.cgi?id=741271
Luis de Bethencourt [Fri, 14 Aug 2015 10:49:51 +0000 (11:49 +0100)]
rtph265depay: copy metadata in the depayloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.
https://bugzilla.gnome.org/show_bug.cgi?id=751774
Luis de Bethencourt [Wed, 12 Aug 2015 16:54:52 +0000 (17:54 +0100)]
rtph265depay: checking if depay has sps/pps nals before insertion
Related to: https://bugzilla.gnome.org/show_bug.cgi?id=753430
https://bugzilla.gnome.org/show_bug.cgi?id=753228
Luis de Bethencourt [Wed, 12 Aug 2015 16:22:42 +0000 (17:22 +0100)]
rtph265depay: only update the srcpad caps if something else than the codec_data changed
h264parse and gstrtph264depay do the same, let's keep the behaviour
consistent. As we now include the codec_data inside the stream, this causes
less caps renegotiation.
https://bugzilla.gnome.org/show_bug.cgi?id=753228
Luis de Bethencourt [Wed, 12 Aug 2015 15:43:48 +0000 (16:43 +0100)]
rtph265depay: PPS replaces old PPS if it has the same id
https://bugzilla.gnome.org/show_bug.cgi?id=753228
Luis de Bethencourt [Wed, 12 Aug 2015 15:11:00 +0000 (16:11 +0100)]
rtph265depay: Insert SPS/PPS NALs into the stream
rtph264depay does the same and this fixes decoding of some streams with 32
SPS (or 256 PPS). It is allowed to have SPS ID 0 to 31 (or PPS ID 0 to 255),
but the field in the codec_data for the number of SPS or PPS is only 5
(or 8) bit. As such, 32 SPS (or 256 PPS) are interpreted as 0 everywhere.
This looks like a mistake in the part of the spect about the codec_data.
Luis de Bethencourt [Wed, 12 Aug 2015 14:49:50 +0000 (15:49 +0100)]
rtph265depay: implement process_rtp_packet() vfunc
For more optimised RTP packet handling: means we don't need to map the
input buffer again but can just re-use the mapping the base class has
already done.
Based on: https://bugzilla.gnome.org/show_bug.cgi?id=750235
https://bugzilla.gnome.org/show_bug.cgi?id=753228
Luis de Bethencourt [Wed, 12 Aug 2015 14:14:50 +0000 (15:14 +0100)]
rtph265depay: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
Switching to GST_BUFFER_TIMESTAMP() to be consistent with other rtp code.
Luis de Bethencourt [Wed, 12 Aug 2015 13:59:53 +0000 (14:59 +0100)]
rtph265depay: prevent trying to get 0 bytes from adapter
This causes an assertion and would lead to getting a NULL instead
of a buffer. Without proper checking this would easily lead to a
segfault.
Related to rpth264depay: https://bugzilla.gnome.org/show_bug.cgi?id=737199
Luis de Bethencourt [Wed, 29 Jul 2015 16:29:28 +0000 (17:29 +0100)]
rtp: remove dead assignment
Value set to ret will be overwritten at least once at the end of the while
loop, removing assignment.
Luis de Bethencourt [Fri, 24 Apr 2015 15:48:23 +0000 (16:48 +0100)]
remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
unused.