Commit graph

1102 commits

Author SHA1 Message Date
Sebastian Dröge
bb1ae083c6 rtp: Ship gstrtpj2kcommon.h file to fix distcheck 2016-05-13 16:43:21 +03:00
Aaron Boxer
f89c4f9f4b rtpj2kpay: manage T tile invalidation bit correctly, update tile id in header correctly.
1. according to RFC, T bit is only set when either the RTP packet only contains the J2K main header, or the packet contains tile parts from multiple tiles. This is now being managed correctly in the code. The second scenario cannot happen with our payloader, since tile headers are always placed in their own RTP packet, and so a packet cannot contain tile parts from multiple tiles.
However, I have added code to track if multiple tile parts are included in a single RTP packet, in case in the future we want to put header and data in same packet.

2. Old code would set the tile id to zero for all J2K packets. This is now set correctly to the appropriate tile id.

https://bugzilla.gnome.org/show_bug.cgi?id=745187
2016-05-13 11:01:25 +03:00
Aaron Boxer
84ff5511de rtpj2kpay: manage fragmented headers correctly
J2K main header framentation across multiple RTP packets is now handled correctly

https://bugzilla.gnome.org/show_bug.cgi?id=745187
2016-05-13 11:01:19 +03:00
Aaron Boxer
d2765be120 rtpj2k: move common code to shared header, code clean up
https://bugzilla.gnome.org/show_bug.cgi?id=745187
2016-05-13 11:01:15 +03:00
Aaron Boxer
82c2a5cbf8 rtpj2k: update documentation
https://bugzilla.gnome.org/show_bug.cgi?id=745187
2016-05-13 11:01:09 +03:00
Nirbheek Chauhan
e20a687737 rtpjpegdepay: Don't send invalid frames downstream after packet loss or a DISCONT
After clearing the adapter due to a DISCONT, as might happen when some packet(s)
have been lost, the depayloader was pushing data into the adapter (which had no
header due to the clear), creating a headerless frame out of it, and sending it
downstream. The downstream decoder would then usually ignore it; unless there
were lots of DISCONTs from the jitterbuffer in which case the decoder would reach
its max_errors limit and throw an element error. Now we just discard that data.

It is probaby not worth trying to salvage this data because non-progressive
jpeg does not degrade gracefully and makes the video unwatchable even with
low packet loss such as 3-5%.
2016-04-04 17:40:11 +01:00
Luis de Bethencourt
4b7e377d25 rtpvorbisdepay: remove dead code
payload_buffer hasn't been assigned a value before the jumps to
switch_failed or packet_short. So the value must be NULL. No need
to unmap and unref.

CID #1316476
2016-04-01 12:15:58 +01:00
Luis de Bethencourt
6a16be75bf rtph263pay: fix leak
Free memory of current macroblock once it isn't needed so it isn't leaked
by the call of the gst_rtp_h263_pay_B_mbfinder function.
if (!(mac = gst_rtp_h263_pay_B_mbfinder (context, gob, mac, mb))) {

CID 1212156
2016-03-31 15:25:17 +01:00
Sebastian Dröge
3549aa7924 rtpjpegpay: Allow different quantization tables for components 2 and 3
RFC 2435 mentions in section 4.1 that U/V use table number 1, but this seems
just like an example. Some encoders are not following that and there seems to
be no reason to reject their streams.

https://bugzilla.gnome.org/show_bug.cgi?id=761345
2016-03-25 12:52:56 +02:00
Vineeth TM
1071309870 good: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Nirbheek Chauhan
bbde949e8e win32: Don't use __attribute__ on MSVC
Use MSVC-equivalents for alignment and packing compiler directives when building
on MSVC
2016-03-10 10:01:19 +00:00
Tim-Philipp Müller
fb0bc126c9 rtp: opus: move Opus RTP payloader/depayloader from -bad to -good
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-25 22:45:16 +00:00
Tim-Philipp Müller
3b970e9b5e Merge branch 'plugin-move-rtp-opus'
Move Opus RTP depayloader/payloader from -bad to -good.

https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-25 22:45:15 +00:00
Dave Craig
9b2e1f9f36 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
2016-02-23 18:12:54 +02:00
Dave Craig
211c8492b3 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
2016-02-23 18:11:42 +02:00
Luis de Bethencourt
93cd4be8d5 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
2016-02-22 14:06:02 +00:00
Tim-Philipp Müller
13a9a7543d 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.
2016-02-21 09:47:43 +00:00
Tim-Philipp Müller
df341f41dc flvmux, rtpvp9depay: fix indentation 2016-02-19 15:04:15 +00:00
Tim-Philipp Müller
d6685b247a rtp: sprinkle some G_GNUC_INTERNAL for internal utils functions 2016-02-17 15:07:37 +00:00
Sebastian Dröge
01342378b5 opus: Add proper support for multichannel audio
https://bugzilla.gnome.org/show_bug.cgi?id=757152
2016-02-17 14:58:01 +00:00
Sebastian Dröge
0472d9f8b2 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
2016-02-17 14:58:01 +00:00
Sebastian Dröge
ff51629c9a opusdepay: Set multistream=FALSE on the Opus caps
The RTP Opus mapping only allows mono/stereo, and not multistream Opus
streams.
2016-02-17 14:58:01 +00:00
Olivier Crête
89b172b3ed rtpopuspay: Forward stereo preferences from caps upstream
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2016-02-17 14:58:01 +00:00
Olivier Crête
4df223f325 rtpopuspay: Set the number of channels to 2 as per RFC draft
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2016-02-17 14:58:01 +00:00
Sebastian Dröge
bbb1143ca3 opus: Handle sprop-stereo and sprop-maxcapturerate RTP caps fields
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2016-02-17 14:58:01 +00:00
Vincent Penquerc'h
4b5ad70924 rtpopuspay: default encoding name to OPUS
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2016-02-17 14:58:01 +00:00
Vincent Penquerc'h
755289ed0c rtpopuspay: make caps writable before truncating them
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2016-02-17 14:58:01 +00:00
Vincent Penquerc'h
e427369840 rtpopuspay: negotiate the encoding name
Chrome uses a different encoding name that gstreamer.

https://bugzilla.gnome.org/show_bug.cgi?id=737810
2016-02-17 14:58:01 +00:00
Nicolas Dufresne
9e4511edf4 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
2016-02-17 14:58:01 +00:00
Wim Taymans
b310393916 opuspay: fix timestamps
Copy timestamps to payloaded buffer.
Avoid input buffer memory leak.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692929
2016-02-17 14:58:00 +00:00
Tim-Philipp Müller
117e30c47e Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2016-02-17 14:58:00 +00:00
Wim Taymans
5d893c7ea2 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
2016-02-17 14:58:00 +00:00
Tim-Philipp Müller
17742d2347 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.
2016-02-17 14:58:00 +00:00
Olivier Crête
18638c9c4e rtpopuspay: Allocate the rtp buffer correctly
Use the right functions to allocate the rtp buffer
2016-02-17 14:58:00 +00:00
Mark Nauwelaerts
ad261f64c3 replace gst_element_class_set_details_simple with gst_element_class_set_metadata 2016-02-17 14:58:00 +00:00
Mark Nauwelaerts
d196562755 opus: port to updated 0.11 2016-02-17 14:58:00 +00:00
Edward Hervey
77ea437507 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
2016-02-17 14:58:00 +00:00
Vincent Penquerc'h
8df374108a 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
2016-02-17 14:58:00 +00:00
Danilo Cesar Lemes de Paula
c207bdf1e7 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
2016-02-17 14:58:00 +00:00
Luis de Bethencourt
f2f31ec50f 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
2016-02-17 14:18:16 +00:00
Stian Selnes
5faa9c11a6 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
2016-02-16 15:54:06 +02:00
Tim-Philipp Müller
9d0f127703 rtp: h265: hook up move RTP H.265 payloader/depayloader to build
https://bugzilla.gnome.org/show_bug.cgi?id=761606
2016-02-16 00:25:50 +00:00
Tim-Philipp Müller
7f9f3d38b2 rtp: h265: use common meta utility functions
https://bugzilla.gnome.org/show_bug.cgi?id=761606
2016-02-16 00:25:46 +00:00
Tim-Philipp Müller
714d31ce30 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
2016-02-16 00:25:41 +00:00
Tim-Philipp Müller
a70c75782b 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
2016-02-16 00:24:58 +00:00
Luis de Bethencourt
139108c83a 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
403ac009fa 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.
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
983e30f658 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.
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
4ee6c17edb 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
64ca3b26d9 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
698e5bbfb5 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
1e55d0d725 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
8611645af6 rtph265pay: Use GST_WARNING_OBJECT() instead of GST_WARNING()
https://bugzilla.gnome.org/show_bug.cgi?id=753228
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
df724c410b 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
f2bae3ab59 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
2016-02-16 00:24:41 +00:00
Luis de Bethencourt
f1e2849438 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
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
3bede1c95b 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
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
18b628824b 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
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
3979ffa6a3 rtph265depay: PPS replaces old PPS if it has the same id
https://bugzilla.gnome.org/show_bug.cgi?id=753228
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
d10b6f1e3a 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.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
0bfa97b047 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
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
a526d014db rtph265depay: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
Switching to GST_BUFFER_TIMESTAMP() to be consistent with other rtp code.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
470c8b3720 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
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
7ae49b46ff rtp: remove dead assignment
Value set to ret will be overwritten at least once at the end of the while
loop, removing assignment.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
693a924461 remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
unused.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
51791d8fe2 rtp: donl_present variable unused
donl_present is not implemented, yet the value is set and checked a few times.
Cleaning this.

CID #1249687
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
e3d8d8cedb rtp: value truncated too short creates dead code
type is truncated to 0-31 with "& 0x1f", but right after that it is checks if
the value is equivalent to GST_H265_NAL_VPS, GST_H265_NAL_SPS, and
GST_H265_NAL_PPS (which are 32, 33, and 34 respectively). Obviously, this will
never be True if the value is maximum 31 after the truncation.
The intention of the code was to truncate to 0-63.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
59fea44503 rtp: fix nal unit type check
After further investigation the previous commit is wrong. The code intended to
check if the type is 39 or the ranges 41-44 and 48-55. Just like gsth265parse.c
does. Type 40 would not be complete.
2016-02-16 00:24:40 +00:00
Luis de Bethencourt
d215b18a20 rtp: fix dead code and check for impossible values
nal_type is the index for a GstH265NalUnitType enum. There are two types of dead
code here:
First, after checking if nal_type is >= 39 there are two OR conditionals that
check if the value is in ranges higher than that number, so if nal_type >= 39
falls in the True branch those other conditions aren't checked and if it falls
in the False branch and they are checked, they will always also be False. They
are redundant.
Second, the enum has a range of 0 to 40. So the checks for ranges higher than 41
should never be True.
Removing this redundant checks.

CID 1249684
2016-02-16 00:24:40 +00:00
Thijs Vermeir
544c0d75ce rtp: add h265 RTP payloader + depayloader 2016-02-16 00:24:40 +00:00
Sebastian Dröge
e244b9be87 rtpjpegpay: Skip APP and JPG markers and print warnings for unknown markers
For APP/JPG markers the size is following and we have to skip that. This is
not really a problem unless the marker contains e.g. a preview JPEG or
something else that we might interprete as another marker.
2016-01-31 11:05:05 +11:00
Víctor Manuel Jáquez Leal
e1834d1512 gst: Fix unintialized variable warnings
While cross-compiling with Linaro GCC 5.1-2015.08, it complained
about a couple unitialized variables.

This patch initializes them to zero.

https://bugzilla.gnome.org/show_bug.cgi?id=761094
2016-01-27 13:46:07 +01:00
Tim-Philipp Müller
aeed2e550c rtp: fix compiler warnings with gcc-6
In file included from gstrtpL16depay.h:27:0,
                 from gstrtp.c:73:
gstrtpchannels.h:154:33: error: 'channel_orders' defined but not used [-Werror=unused-const-variable]
 static const GstRTPChannelOrder channel_orders[] =
2016-01-19 13:04:39 +00:00
Tim-Philipp Müller
3aa0dd8629 rtph264depay: fix unnecessary 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.
2016-01-08 16:40:32 +00:00
Tim-Philipp Müller
6171b0a675 rtpdvdepay: fix unnecessary 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.
2016-01-08 16:40:32 +00:00
Tim-Philipp Müller
c75f94c8f5 rtpamrdepay: fix unnecessary 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.
2016-01-08 16:40:32 +00:00
Tim-Philipp Müller
a8b8643977 rtpvrawdepay: fix major memory leak and performance issue
We call gst_rtp_buffer_get_payload() which creates a sub-buffer
of each input buffer, just to copy over metas, and then leak it.

https://bugzilla.gnome.org/show_bug.cgi?id=760289
2016-01-08 16:40:28 +00:00
Vincent Dehors
c1b66a63ac rtpj2kdepay: Push one JPEG2000 frame per buffer, not a buffer list with multiple buffers
https://bugzilla.gnome.org/show_bug.cgi?id=758943
2015-12-17 16:04:07 +01:00
Anton Bondarenko
453a618a9d rtph264pay: add "send SPS/PPS with every key frame" mode
It's not enough to have timeout or event based 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 SPS/PPS is not sufficient.
It might also be desirable in general to make sure the SPS/PPS is
available with every keyframe (packet loss aside), so receivers can
actually pick up decoding immediately from the first keyframe if
SPS/PPS is not signaled out of band.

This patch adds the possibility to send 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 SPS and PPS before every key (IDR) frame.

https://bugzilla.gnome.org/show_bug.cgi?id=757892
2015-11-27 13:30:07 +00:00
Tim-Philipp Müller
3026d1094b rtph264pay: change config-interval property type from uint to int
This way we can use -1 as special value, which is nicer than MAXUINT.
This is backwards compatible even with the GValue API, as shown by
a unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=757892
2015-11-27 12:48:09 +00:00
Josep Torra
84b6743cf8 rtpgstdepay: Properly handle backward compat for event deserialization
Actual code is checking for a NULL terminator and a ';' terminator,
for backward compat, in a chained way that cause all events being rejected.
The proper condition is to reject the events when terminator isn't
in ['\0', ';'] set.

https://bugzilla.gnome.org/show_bug.cgi?id=758151
2015-11-17 17:24:28 -08:00
Reynaldo H. Verdejo Pinochet
5367b26653 rtp/theorapay: remove unnecessary NULL checks before g_free() 2015-11-15 01:43:08 -08:00
Reynaldo H. Verdejo Pinochet
5d23dfdabf rtp/vorbispay: remove unnecessary NULL checks before g_free() 2015-11-15 01:43:08 -08:00
Reynaldo H. Verdejo Pinochet
3c8b7e079c rtp/jpegpay: remove unnecessary NULL checks before g_free() 2015-11-15 01:43:08 -08:00
Reynaldo H. Verdejo Pinochet
a34cee5aad rtpgstpay: remove unnecessary NULL checks before g_free() 2015-11-15 01:43:08 -08:00
Mischa Spiegelmock
cdd7091c1c docs: Minor fixes in various places
https://bugzilla.gnome.org/show_bug.cgi?id=756996
2015-10-23 10:42:19 +03:00
Thiago Santos
539ebd0f42 rtpj2kpay: update fragment offset
It was always being set to 0, making the resulting stream broken
for the receiver

https://bugzilla.gnome.org/show_bug.cgi?id=756422
2015-10-19 16:53:59 -03:00
Sebastian Rasmussen
905295ea34 rtptheoradepay: Fix memory leaks
The same memory leaks were fixed in identical fashion for
vorbisdepay in 06efeff5d9 in 2009.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755277
2015-09-20 10:13:38 +02:00
Sebastian Rasmussen
2d7bfc1314 rtp{vorbis,theora}{pay,depay}: Cosmetic cleanup
* use g_list_free_full(), don't iterate elements maually when freeing
* call gst_rtp_*_pay_clear_packet(), don't duplicate its code
* use gst_buffer_unref() to clarify that it is buffers being released,
  instead of refering directly to gst_mini_object_unref()

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755277
2015-09-20 10:13:38 +02:00
Sebastian Dröge
869e21bd82 rtp{vorbis,theora}pay: Store headers in the packet buffers lists, not a NULL buffer
https://bugzilla.gnome.org/show_bug.cgi?id=755265
2015-09-20 10:13:38 +02:00
Sebastian Dröge
f0ca2f2ecb rtpvorbis/theoradepay: Fix handling of fragmented packets
This was broken in b1089fb520 by not considering the full packet length of a
fragmented packet but only the length of the first one.

https://bugzilla.gnome.org/show_bug.cgi?id=754417
2015-09-02 21:13:46 +03:00
Hyunjun Ko
38d269f80d rtp: copy metadata in the (de)payloaders which is missed before
https://bugzilla.gnome.org/show_bug.cgi?id=753706
2015-08-17 14:12:50 +02:00
Luis de Bethencourt
1aee15050c rtpvorbisdepay: remove dead code
payload_buffer must be NULL in ignore_reserved. Check will always be false.

Introduced by b1089fb520

CID #1316476
2015-08-16 11:52:44 +01:00
Ramiro Polla
23b5a34675 rtpmp4gdepay: fix timestamps for RTP packets with multiple AUs
Use constantDuration to calculate the timestamp of non-first AU in the
RTP packet.

If constantDuration is not present in the MIME parameters, its value
must be calculated based on the timing information from two consecutive
RTP packets with AU-Index equal to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=747881
2015-08-14 12:38:32 +02:00
Sebastian Dröge
b1089fb520 rtp: 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 video tag.

https://bugzilla.gnome.org/show_bug.cgi?id=751774
2015-08-11 12:47:23 +02:00
Hyunjun Ko
9c5c16eb57 rtph264depay: checking if depay has sps/pps nals before insertion
https://bugzilla.gnome.org/show_bug.cgi?id=753430
2015-08-10 10:49:02 +02:00
Sebastian Dröge
c8551b6285 rtptheorapay: If flushing a packet failed, go out of the loop immediately 2015-08-08 17:43:03 +02:00
Sebastian Dröge
4957cc7459 rtpvorbispay: If flushing a packet failed, go out of the loop immediately 2015-08-08 17:43:03 +02:00
Sebastian Dröge
983f57dc7d rtptheorapay: Extract pixel format from the ident header to put it into the sampling field of the caps
We always put 4:2:0 into the caps before, which obviously is wrong for 4:2:2
and 4:4:4 formats.
2015-08-08 17:43:03 +02:00
George Kiagiadakis
2e590a32eb rtpklv(de)pay: add "RTP" in the klass string
GstRTSPMedia uses this classification to detect the real payloader
inside a dynpay bin and asserts if it doesn't find it, therefore
it is required

https://bugzilla.gnome.org/show_bug.cgi?id=753325
2015-08-07 10:15:05 +02:00