Commit graph

8470 commits

Author SHA1 Message Date
Mark Nauwelaerts
1e7a3473fd rtpjitterbuffer: remove dead struct member 2015-09-13 15:41:03 +02:00
Vineeth TM
2a7ba2955c multiudpsink: fix GError memory leak when hostname resolution fails
https://bugzilla.gnome.org/show_bug.cgi?id=754869
2015-09-11 10:18:14 +01:00
Thiago Santos
f9c7dc2797 matroskamux: drop HEADER flag from output buffers
Drop HEADER flag from output buffers if they are not indeed
headers.

Fixes resending of headers in tcp connection handling

https://bugzilla.gnome.org/show_bug.cgi?id=754768
2015-09-10 16:28:48 -03:00
Tim-Philipp Müller
99a6f8207f matroskamux: fix matroskamux ! matroskademux
Don't carry over DISCONT flags from the input buffers to the
output buffer, or the demuxer might reset its state when it
receives the first data buffer just after parsing the simple
block header, and then expect sane data to follow.
Fixes matroskamux ! demux erroring out.

https://bugzilla.gnome.org/show_bug.cgi?id=754768
https://bugzilla.gnome.org/show_bug.cgi?id=657805
2015-09-10 16:05:53 +01:00
Martin Kelly
00a938f134 rtsp: fix small README typo
https://bugzilla.gnome.org/show_bug.cgi?id=754807
2015-09-10 08:43:20 +01:00
Tim-Philipp Müller
fcdb79ef7b wavpackparse: set both pts and dts so baseparse doesn't make up wrong dts after seeks
https://bugzilla.gnome.org/show_bug.cgi?id=752106
2015-09-06 16:36:47 +01:00
Tim-Philipp Müller
0d88f27108 flacparse: set both pts and dts so baseparse doesn't make up wrong dts after a seek
flac contains the sample offset in the frame header, so after a seek
without index flacparse will know the exact position we landed on and
timestamp buffers accordingly. It only set the pts though, which means
the baseparse-set dts which was set to the seek position prevails, and
since the seek was based on an estimate, there's likely a discrepancy
between where we wanted to land and where we did land, so from here on
that dts/pts difference will be maintained, with dts possibly multiple
seconds ahead of pts, which is just wrong. The easiest way to fix this
is to just set both pts and dts based on the sample offset, but perhaps
parsed audio should just not have dts set at all.

https://bugzilla.gnome.org/show_bug.cgi?id=752106
2015-09-06 16:36:44 +01:00
George Chriss
1afb988256 flvmux: Make the element count in arrays not include end
One-line removal of tags_written++

This should fix rtmp output to crtmpserver, and hopefully
noone is expecting that the element count includes the end
element, as different bits of documentation say different
things about whether it should or not.

https://bugzilla.gnome.org/show_bug.cgi?id=661624
2015-09-05 23:45:37 +10:00
Jan Schmidt
db2967125b flvmux: Store incoming bitrate tags and send in the metadata
Apparently the Microsoft Azure RTMP server requires that the
videodatarate and audiodatarate metadata be provided, so
set those, even if it's to 0. Use the actual input bitrate
tags if available.
2015-09-05 23:45:37 +10:00
Jan Schmidt
b38e24995b rtspsrc: Don't parse key data more than needed.
When an auxilliary streams are present in the SDP media,
there's no need to re-parse the SDP attributes multiple
times.
2015-09-05 23:44:51 +10:00
Jan Schmidt
fe4ed1d1df rtspsrc: Fix SRTP + RTX, auth access, a leak, and an invalid memory access.
In parse_keymgmt(), don't mutate the input string that's been passed
as const, especially since we might need the original value again if
the same key info applies to multiple streams (RTX, for example).

When a resource is 404, and we have auth info - retry with the auth
info the same as if we had receive unauthorised, in case the resource
isn't even visible until credentials are supplied.

Fix a memory leak handling Mikey data.

When generating a random keystring, don't overrun the 30 byte
buffer by generating 32 bytes into it.
2015-09-05 23:44:51 +10:00
Sebastian Dröge
50e9cc7f04 udpsrc: Fix build with GLib < 2.44
G_IO_ERROR_CONNECTION_CLOSED was added in 2.44.
2015-09-04 15:18:05 +03:00
Sebastian Dröge
89137fc136 udpsrc: Ignore G_IO_ERROR_CONNECTION_CLOSED when receiving data
This happens on Windows if we use the same socket for sending packets,
and the remote sends ICMP port/host unreachable messages.

https://bugzilla.gnome.org/show_bug.cgi?id=754534
2015-09-04 12:01:52 +03: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
Olivier Crête
dad751644e dtmfsrc: Reply to latency query 2015-09-01 15:49:07 -04:00
Jan Alexander Steffens (heftig)
3f8efd8af8 matroskademux: Align raw video frames to 32 bytes
Outputting unaligned video frames causes videoscale et al to
crash when attempting SIMD-accelerated conversion.

https://bugzilla.gnome.org/show_bug.cgi?id=736965
2015-08-31 14:35:59 +03:00
Stefan Sauer
6a8194e121 level: fix level calculations for mutliple channels
This was broken with 7b90bf3215.
2015-08-27 10:16:38 +02:00
Ravi Kiran K N
cac239ab89 smpte: Fix memory leak
In gst_smpte_collected(), check upfront if input formats are same
or not. This avoids allocation of in1 and in2 buffers and
subsequent memory leak when input formats do not match.

https://bugzilla.gnome.org/show_bug.cgi?id=754153
2015-08-27 11:13:43 +03:00
Vineeth TM
ba8cda54f4 rtspsrc: Trivial fix to check correct condition
When checking for describe method, because of missing parentheses, wrong
condition is being checked, which will result in wrong behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=753912
2015-08-21 11:06:57 +03:00
Vineeth TM
77c9e2cd4d matroska: read: fix tag list memory leak
gst_toc_entry_merge_tags makes a new ref of the taglist, so it should
be unref'ed as soon as the tags are merged to the tocentry

https://bugzilla.gnome.org/show_bug.cgi?id=753904
2015-08-21 10:22:54 +03:00
Tim-Philipp Müller
29afa75858 multifilesrc: fix regression with starting from index set via index property
When we haven't started yet, set the start_index when we set the index property,
so that we start at the right index position after the initial seek. The index
property was never really meant to be for writing, but it used to work, so let's
support it for backwards compatibility.

https://bugzilla.gnome.org/show_bug.cgi?id=739472
2015-08-18 13:17:34 +01:00
Alex Ashley
5d99d0dfa0 qtdemux: fix offset calculation when parsing CENC aux info
Commit 7d7e54ce68 added support for
DASH common encryption, however commit
bb336840c0 that went onto master
shortly before the CENC commit caused the calculation of the CENC
aux info offset to be incorrect.

The base_offset was being added if present, but if the base_offset
is relative to the start of the moof, the offset was being added twice.
The correct approach is to calculate the offset from the start of the
moof and use that offset when parsing the CENC aux info.
2015-08-18 11:48:03 +01: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
Thiago Santos
5838940681 y4mencode: fix gst-launch version in documentation 2015-08-16 14:30:57 -03:00
Thiago Santos
a1aa942acf audioencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: speexenc, wavpackenc, mulawenc, alawenc
2015-08-16 14:30:57 -03:00
Thiago Santos
1b27badcfd videoencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: jpegenc, pngenc, vp8enc, vp9enc, y4menc
2015-08-16 14:30:57 -03:00
Tim-Philipp Müller
a39bebb5fe mpegaudioparse: use new baseparse API to fix tag handling
https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 17:21:24 +01:00
Olivier Crête
b1dfe209c2 audioparsers: use new base parse API to fix tag handling
https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 17:02:19 +01:00
Tim-Philipp Müller
a042a98159 flacparse: use new baseparse API and fix tag handling
https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 16:33:55 +01:00
Sebastian Dröge
e9aa4c7467 qtdemux: Use signed integer type to be able to check for negative subtraction results
CID 1315829
2015-08-16 13:04:02 +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
Thiago Santos
1328289474 alawenc: port to AudioEncoder base class 2015-08-15 22:46:46 -03:00
Thiago Santos
65676c22ee audiodecoders: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query

Elements: flacdec, speexdec, wavpackdec, mulawdec, alawdec
2015-08-15 11:46:34 -03:00
Thiago Santos
65d2af6462 alawdec: make error handling a bit nicer
Print the element along with the debug to make it easier to trace
the failures
2015-08-15 11:31:04 -03:00
Thiago Santos
7ab3178cc4 alawdec: port to audiodecoder base class
mulawdec was already ported, alawdec was left behind.
2015-08-15 11:06:02 -03:00
Thiago Santos
41a4b68390 qtdemux: only look for more samples in moofs in pull-mode
For playback of some fragmented formats with qtdemux it will
try to look for the next moof after finishing one but it is only
possible for pull-mode. For playback of streaming fragmented formats
such as DASH it should just not try to look for another moof but
instead wait for more data.

https://bugzilla.gnome.org/show_bug.cgi?id=752602

https://bugzilla.gnome.org/show_bug.cgi?id=752603
2015-08-15 11:06:02 -03:00
Sebastian Dröge
64b06d1829 dcaparse: Don't look for a second syncword
There are streams out there that consistently contain garbage between
every frame so we never ever find a second consecutive syncword.

See https://bugzilla.gnome.org/show_bug.cgi?id=738237
2015-08-15 13:00:06 +02:00
Thiago Santos
9523fb23ed audioparsers: enable accept-template flag
Do a quick check with the pad template caps as it is enough. Users
should have figured the appropriate full caps on a previous caps query

https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 13:42:27 -03:00
George Kiagiadakis
e2f2f087ec rtspsrc: send the User-Agent header
Sometimes it is useful to know this information on the
server side. Other popular implementations (vlc, ffmpeg, ...)
also send this header on every message.

This includes a new "user-agent" property that the user
can set to use a custom User-Agent string. The default
is "GStreamer/<version>"

https://bugzilla.gnome.org/show_bug.cgi?id=750101
2015-08-14 15:59:06 +02:00
George Kiagiadakis
af03341e26 rtspsrc: wrap gst_rtsp_message_init_request in a local function
This will allow adding common request initialization, like the
user agent string, in just one place.
2015-08-14 15:59:06 +02:00
Prashant Gotarne
0671ea85af audioecho: make sure buffer gets reallocated if max_delay changes
https://bugzilla.gnome.org/show_bug.cgi?id=753490
2015-08-14 11:50:22 +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
3ede3105d6 goom: Rename get_type() function of base class to prevent symbol conflicts
This is a problem when statically linking.
2015-08-14 09:21:25 +02:00
Sebastian Dröge
68a9209408 rtpjitterbuffer: Keep the DTS estimate if we got no DTS after a jitterbuffer reset
Otherwise we will just output buffers without timestamps after a reset if no
timestamps are provided by upstream, e.g. when using RTSP over TCP.

https://bugzilla.gnome.org/show_bug.cgi?id=749536
2015-08-13 16:45:16 +02:00
Ravi Kiran K N
6eee26b24b matroska: Remove unused variable
https://bugzilla.gnome.org/show_bug.cgi?id=753556
2015-08-13 14:11:12 +01: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
Thiago Santos
288b0bbb38 qtdemux: fix small typo in comment 2015-08-10 19:11:17 -03:00
Nicolas Dufresne
109995707e goom2k1/doc: Fixup previous commit 2015-08-10 16:19:18 -04:00
Nicolas Dufresne
18c43aa845 goom2k1/doc: Use GstGoom2k1 namespace
The doc generator isn't happy when we have class name clash. Simply
use it's own namespace.
2015-08-10 15:55:19 -04:00
Prashant Gotarne
cde1f12ad3 audioecho: removed unused variable in set_property
unused local variable 'delay' is removed.

https://bugzilla.gnome.org/show_bug.cgi?id=753450
2015-08-10 13:34:11 +01:00
Tim-Philipp Müller
604cc2a548 qtdemux: fix suboptimal queue iteration code 2015-08-10 12:45:50 +01:00
Tim-Philipp Müller
0fbf5f3d9e qtdemux: don't use glib 2.44-only API 2015-08-10 12:32:23 +01:00
Alex Ashley
7d7e54ce68 qtdemux: add support for ISOBMFF Common Encryption
This commit adds support for ISOBMFF Common Encryption (cenc), as
defined in ISO/IEC 23001-7. It uses a GstProtection event to
pass the contents of PSSH boxes to downstream decryptor elements
and attached GstProtectionMeta to each sample.

https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-08-10 12:32:17 +01: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
Tim-Philipp Müller
a95c761fde matroskamux: fix outdated comment
The default behaviour was changed in the 0.10 -> 1.x
transition, but the comment was not updated.
2015-08-08 16:44:49 +01: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
Hyunjun Ko
b0d6020862 rtprtxsend: print valid type where guint32 is expected
https://bugzilla.gnome.org/show_bug.cgi?id=746445
2015-08-06 01:39:43 -03:00
Hyunjun Ko
5a17572119 rtppayload: set standard payload type as default
Initialize the PT to the default value of the codec and check if
it is still the default before declaring the pt to be dynamic or
not when setting the caps.

Also use the PT constants from the rtp lib when possible

https://bugzilla.gnome.org/show_bug.cgi?id=747965
2015-08-06 01:38:43 -03:00
Thiago Santos
e0878d6325 qtdemux: store the moof-offset also for push mode
It will be used in some cases for getting the correct offsets
from trun atoms.

https://bugzilla.gnome.org/show_bug.cgi?id=752603
2015-08-05 18:12:45 -03:00
Thiago Santos
bb336840c0 qtdemux: handle default-base-is-moof flag
Handle the flag from the tfhd that signals the base offset to
start from the moof atom

https://bugzilla.gnome.org/show_bug.cgi?id=752603
2015-08-05 18:12:45 -03:00
Glen Diener
cd57697a2c matroskademux: Preserve forward referenced track tags
https://bugzilla.gnome.org/show_bug.cgi?id=752850
2015-08-05 16:46:33 -04:00
Sebastian Dröge
c9ea95481c rtpstreamdepay: Only allow activation in push mode
We need a proper caps event from upstream with the full RTP caps as we can't
create caps ourselves from thin air. Fixes usage of rtpstreamdepay after e.g.
a filesrc or any other element that supports pull mode.

https://bugzilla.gnome.org/show_bug.cgi?id=753066
2015-08-04 21:00:31 +03:00
Sebastian Dröge
9ae316974d rtph264depay: Put the profile and level into the caps 2015-08-04 12:45:06 +03:00
Sebastian Dröge
8dda570e47 rtph264depay: Only update the srcpad caps if something else than the codec_data changed
h264parse does the same, let's keep the behaviour consistent. As we now
include the codec_data inside the stream too here, this causes less caps
renegotiation.
2015-08-04 12:45:06 +03:00
Sebastian Dröge
e0c124f76d rtph264depay: PPS replaces and old PPS if it has the same id, independent of SPS id
The spec says:

When a picture parameter set NAL unit with a particular value of
pic_parameter_set_id is received, its content replaces the content of the
previous picture parameter set NAL unit, in decoding order, with the same
value of pic_parameter_set_id (when a previous picture parameter set NAL unit
with the same value of pic_parameter_set_id was present in the bitstream).
2015-08-04 12:45:06 +03:00
Thiago Santos
72212198c7 splitmuxsink: remove extra \n at debug message 2015-08-03 13:46:16 -03:00
Thiago Santos
a930a1364a splitmuxsink: prevent deadlock when states change too fast
If the GOP is completed, pads have to start gathering for the
next one but it is possible that the the state might go to
COLLECTING_GOP_START and back to WAITING_GOP_COMPLETE before the
thread has a chance to wake up and proceed, leaving it trapped in
the check_completed_gop loop and deadlocking the other threads
waiting for it to advance.

To solve it, this patch also checks that tha input running time
hasn't changed to prevent this scenario.
2015-08-03 13:46:16 -03:00
Sebastian Dröge
ef7863355c rtph264depay: Insert SPS/PPS NALs into the stream
h264parse 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 spec about the codec_data.
2015-08-03 18:24:18 +03:00
Vineeth TM
cf19525d5c rtspsrc: assertion error due to wrong condition check
In media to caps function, reserved_keys array is being used for variable i,
leading to GLib-CRITICAL **: g_ascii_strcasecmp: assertion 's1 != NULL' failed
changed it to variable j

https://bugzilla.gnome.org/show_bug.cgi?id=753009
2015-07-30 15:51:25 +03:00
Vineeth TM
969bcf25a1 rtpmp4vdepay: rtpbuffer is being unref'ed twice
process_rtp_packet doesn't transfer the rtp buffer to mp4v_process_depay
the refernce should not be removed here

https://bugzilla.gnome.org/show_bug.cgi?id=753042
2015-07-30 12:20:19 +01:00
Sebastian Dröge
39a90710b7 rtspsrc: Strip keys from the fmtp that we use internally in our caps
Skip keys from the fmtp, which we already use ourselves for the
caps. Some software is adding random things like clock-rate into
the fmtp, and we would otherwise here set a string-typed clock-rate
in the caps... and thus fail to create valid RTP caps

https://bugzilla.gnome.org/show_bug.cgi?id=753009
2015-07-29 14:31:49 +01:00
Jan Schmidt
a0182dd943 splitmuxsink: Support mpegtsmux as a muxer.
As a fallback, look for a pad template sink_%d on
the muxer when requesting pads, to support mpegtsmux

https://bugzilla.gnome.org/show_bug.cgi?id=752999
2015-07-29 23:03:30 +10:00
Jan Schmidt
e7ec32801a splitmuxsrc: Use a separate lock to delay typefind.
Don't hold the main splitmux part lock over
the parent state change function, as it prevents
posting error messages that happen. Since the purpose
is to prevent typefinding from proceeding, use a
separate mutex just for that.
2015-07-29 23:03:18 +10:00
Vineeth TM
72b86ae868 matroska: fix memory leak
After adding to tag list, key_val is not being free'd
resulting in memory leak

https://bugzilla.gnome.org/show_bug.cgi?id=752992
2015-07-29 09:14:31 +01:00
Manasa Athreya
e6381ef285 qtdemux: fix 16-bit PCM audio advertised with 'raw ' fourcc
'NONE' and 'raw ' fourcc don't always contain U8 audio, it can
be more bits as well, in which case it's just like 'twos'.

https://bugzilla.gnome.org/show_bug.cgi?id=752613
2015-07-27 19:06:43 +01:00
Olivier Crête
7917bea855 avidemux: Stop without posting error on flushing
This could just be a normal pipeline shutdown.
2015-07-25 03:25:28 -04:00
Dimitrios Christidis
744167056c matroskademux: fix for subtitle buffers with NUL terminators
Commit 45892ec8 created a regression where g_utf8_validate() would fail
if the subtitle buffer had a NUL terminator as part of the data.

https://bugzilla.gnome.org/show_bug.cgi?id=752421
2015-07-21 14:25:12 +01:00
Stian Selnes
45e05706e2 rtpvp8depay: Check available bytes before copy
Need to check that the number of bytes we want to copy from the adapter
actually is available and handle the error case gracefully. This error
may happen if malformed packets are received and we don't have a
complete frame.

https://bugzilla.gnome.org/show_bug.cgi?id=752663
2015-07-21 13:14:01 +01:00
Paul Hyunil
3740e69957 qtdemux: Support subtitle when track subtype is fourcc_subt
https://bugzilla.gnome.org/show_bug.cgi?id=752655
2015-07-21 12:24:15 +01:00
Havard Graff
764bbf99a8 rtpmux: handle different ssrc's on sinkpads
Do this by not putting the ssrc from the src pads in the caps used to
probe other sinkpads, and then  intersecting with it later.

https://bugzilla.gnome.org/show_bug.cgi?id=752491
2015-07-16 16:46:11 -04:00
Tim-Philipp Müller
2e3a5ba227 Update mailing list address from sourceforge to freedesktop 2015-07-16 17:19:03 +01:00
Dimitrios Christidis
45892ec8be matroskademux: fix trailing '*' displayed with some text subtitles
The subtitle buffer we push out should not include a NUL terminator
as part of the data, we just add such a terminator for safety, but
it should not be included in the buffer size.

A NUL terminator is not valid UTF-8, so checks will fail if it's
included in the size, and the NUL will be replaced by the fallback
character specified when converting, i.e. '*'.

https://bugzilla.gnome.org/show_bug.cgi?id=752421
2015-07-16 13:18:06 +01:00
Ravi Kiran K N
1c00801585 audiofx: Fix typo in example pipelines
Fix typo in example pipelines of audiowsincband and audioinvert.

https://bugzilla.gnome.org/show_bug.cgi?id=752416
2015-07-15 13:51:13 +01:00
George Kiagiadakis
bbfa46363c splitmuxsink: add a "format-location" signal that allows better control over filenames
In certain applications, splitting into files named after a base
location template and an incremental sequence number is not enough.

This signal gives more fine-grained control to the application to
decide how to name the files.

https://bugzilla.gnome.org/show_bug.cgi?id=750106
2015-07-14 18:45:49 +02:00
Tim-Philipp Müller
6717c86061 rtp: depayloaders: 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.

https://bugzilla.gnome.org/show_bug.cgi?id=750235
2015-07-12 14:28:29 +01:00
Tim-Philipp Müller
fe787425bc rtpvrawdepay: 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 map the base class has already done.

https://bugzilla.gnome.org/show_bug.cgi?id=750235
2015-07-12 14:28:25 +01:00
Sebastian Dröge
582ade2c42 rtpjitterbuffer: Fix indention 2015-07-10 00:13:32 +03:00
Sebastian Dröge
ae8acc0973 rtpjitterbuffer: Always estimate DTS from the current clock time
Estimating it from the RTP time will give us the PTS, so in cases of PTS!=DTS
we would produce wrong DTS. As now the estimated DTS is based on the clock,
don't store it in the jitterbuffer items as it would otherwise be used in the
skew calculations and would influence the results. We only really need the DTS
for timer calculations.

https://bugzilla.gnome.org/show_bug.cgi?id=749536
2015-07-10 00:13:22 +03:00
Thiago Santos
30b3aa3030 qtdemux: rework segment event handling for adaptive streaming
When a new time segment is received upstream is going to restart
with a new atom. Make the neededbytes and todrop variables
reflect that to avoid waiting too much or dropping the
initial bytes that contain the header.
2015-07-08 23:23:53 -03:00
Thiago Santos
38520a1e12 qtdemux: push data from adapter before starting new segment
The adapter might have data remaining from the previous segment,
push it all before clearing the adapter and starting a new segment.

It can accumulate data if it had pushed and got not-linked, returning
immediately without processing all the data. Before starting a new
segment this data should be handled.
2015-07-08 23:23:53 -03:00
Sebastian Dröge
6e7c724afa rtpjitterbuffer: Calculate DTS from the clock if we had none for the first packet after a reset
https://bugzilla.gnome.org/show_bug.cgi?id=749536
2015-07-08 23:19:52 +03:00
Havard Graff
ddd032f56b rtpjitterbuffer: fix gap-time calculation and remove "late"
The amount of time that is completely expired and not worth waiting for,
is the duration of the packets in the gap (gap * duration) - the
latency (size) of the jitterbuffer (priv->latency_ns). This is the duration
that we make a "multi-lost" packet for.

The "late" concept made some sense in 0.10 as it reflected that a buffer
coming in had not been waited for at all, but had a timestamp that was
outside the jitterbuffer to wait for. With the rewrite of the waiting
(timeout) mechanism in 1.0, this no longer makes any sense, and the
variable no longer reflects anything meaningful (num > 0 is useless,
the duration is what matters)

Fixed up the tests that had been slightly modified in 1.0 to allow faulty
behavior to sneak in, and port some of them to use GstHarness.

https://bugzilla.gnome.org/show_bug.cgi?id=738363
2015-07-08 23:18:48 +03:00
Stian Selnes
40524e5a49 Revert "rtpjitterbuffer: Fix expected_dts calc in calculate_expected"
This reverts commit 05bd708fc5.

The reverted patch is wrong and introduces a regression because there
may still be time to receive some of the packets included in the gap
if they are reordered.
2015-07-08 23:18:48 +03:00
Thiago Santos
ee7ddf6c67 qtdemux: flush samples before adding more from moof
Avoids accumulating all samples from a fragmented stream that could
lead to a 'index-too-big' error once it goes over 50MB of data. It
could reach that before 2h of playback so it doesn't take that long.

As upstream elements are providing data in time format they should
be the ones that have more information about the full media index
and should be able to seek if possible.
2015-07-08 11:53:44 -03:00
Thiago Santos
6ee4b31c0e qtdemux: rename upstream_newsegment to upstream_format_is_time
upstream_newsegment isn't really clear on what it means, it is set
to TRUE when the upstream element sends a segment in TIME format, so
rename it to be more clear about it.

It is important to know this because it means that upstream has
a notion of time and qtdemux is likely being driven by an upstream
element that is reading from a higher level abstraction than a file,
such as a DASH, MSS or DLNA element.
2015-07-08 11:53:44 -03:00
Thiago Santos
5994b30257 qtdemux: fix leak by flushing previous sample info from trak
In fragmented streaming, multiple moov/moof will be parsed and their
previously stored samples array might leak when new values are parsed.
The parse_trak and callees won't free the previously stored values
before parsing the new ones.

In step-by-step, this is what happens:

1) initial moov is parsed, traks as well, streams are created. The
   trak doesn't contain samples because they are in the moof's trun
   boxes. n_samples is set to 0 while parsing the trak and the samples
   array is still NULL.
2) moofs are parsed, and their trun boxes will increase n_samples and
   create/extend the samples array
3) At some point a new moov might be sent (bitrate switching, for example)
   and parsing the trak will overwrite n_samples with the values from
   this trak. If the n_samples is set to 0 qtdemux will assume that
   the samples array is NULL and will leak it when a new one is
   created for the subsequent moofs.

This patch makes qtdemux properly free previous sample data before
creating new ones and adds an assert to catch future occurrences of
this issue when the code changes.
2015-07-08 11:53:44 -03:00
Thiago Santos
63f35eeb12 qtdemux: fix index size check and debug message
It is allocating samples_count + n_samples, not only n_samples
2015-07-08 11:53:44 -03:00
Sebastian Dröge
4e23481d9f rtpjitterbuffer: Calculate receive time if we don't have any
This is required to properly schedule packet loss timers and make
sure all our calculations work properly.

https://bugzilla.gnome.org/show_bug.cgi?id=749536
2015-07-08 17:02:05 +03:00
Sebastian Dröge
243730ced4 rtpjitterbuffer: Handle seqnum gaps in TCP streams without erroring out or overflowing calculations
That is, handle DTS==GST_CLOCK_TIME_NONE correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=749536
2015-07-08 15:15:00 +03:00
Vineeth T M
5439fc9a0c avidemux: fix event leak
when seek fails in avidemux, event is not being freed.

https://bugzilla.gnome.org/show_bug.cgi?id=752117
2015-07-08 12:57:43 +01:00
Stian Selnes
8a0dbff3f4 rtph263depay: Make sure payload is large enough
Plus new unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=752112
2015-07-08 11:36:55 +01:00
Vineeth TM
ffe9cbc1f6 rtpklvdepay: fix printf format compiler warning
v_len is of type guint64, but while print the value(16 + len_size + v_len)
G_GSIZE_FORMAT is being used instead of G_GUINT64_FORMAT

https://bugzilla.gnome.org/show_bug.cgi?id=752100
2015-07-08 08:49:37 +01:00
Tim-Philipp Müller
b105e1e3d1 rtpklvdepay: improve start detection and handle fragmented KLV units 2015-07-07 20:11:27 +01:00
Tim-Philipp Müller
740f10bae9 rtp: add SMPTE 336M KLV metadata depayloader
http://tools.ietf.org/html/rfc6597
2015-07-07 20:11:27 +01:00
Tim-Philipp Müller
7db7da1acb rtp: add SMPTE 336M KLV metadata payloader
http://tools.ietf.org/html/rfc6597
2015-07-07 20:11:23 +01:00
Stefan Sauer
12930c2f8c docs: fix "Symbol name not found at the start of the comment block"
Add symbols or change comment into a regular comment.
2015-07-07 17:12:02 +02:00
Stefan Sauer
093e8f8a75 docs: remove outdated doc strings 2015-07-07 17:12:02 +02:00
Luis de Bethencourt
55175561f6 Revert "imagefreeze: Remove impossible error condition"
This reverts commit d46631c5c7.

pad only handle EOS events but not EOS flow, and will push the buffer again
resulting in an assertion error. So we should not handle the buffer
and return EOS flow.
2015-07-07 15:57:19 +01:00
Tim-Philipp Müller
f0c6b728f8 rtpg729depay: unmap rtp buffer in error path 2015-07-07 15:50:50 +01:00
Tim-Philipp Müller
f07d61a9ef rtpg729pay: fix buffer leak
The handle_buffer vfunc takes ownership of the input buffer.
Fixes elements/rtp-payloading under valgrind.
2015-07-07 15:50:37 +01:00
Tobias Mueller
6faeb75170 goom: Initialised variables to remove compiler warnings
goom_core.c: In function 'goom_update':
goom_core.c:685:5: error: 'param2' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     goom_lines_switch_to (goomInfo->gmline2, mode, param2, amplitude, couleur);
     ^
goom_core.c:684:5: error: 'param1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     goom_lines_switch_to (goomInfo->gmline1, mode, param1, amplitude, couleur);
     ^

https://bugzilla.gnome.org/show_bug.cgi?id=752053
2015-07-07 13:18:49 +03:00
Tim-Philipp Müller
19e7f188fa rtph261pay: fix indentation 2015-07-07 09:18:39 +01:00
Jimmy Ohn
2f016f3f9d rtph261pay: Fix uninitialized variable compiler error
endpos variable does not correctly understand in the
4.6.3 GCC version. So compile error appears when we do
compile rtph261pay using jhbuild.
This patch is fixed the compile error in 4.6.3 GCC version.

https://bugzilla.gnome.org/show_bug.cgi?id=751985
2015-07-07 09:18:06 +01:00
Jan Alexander Steffens (heftig)
439f98ed9a flvdemux: Handle seek flags properly
Allows for non-keyframe seeks.

https://bugzilla.gnome.org/show_bug.cgi?id=738570
2015-07-06 10:30:42 -04:00
Thiago Santos
f40c1f8b09 qtdemux: avoid looping reading the 'moof' atom forever
It gets stuck if it only finds a moof and no mfra/mfro or moov
atoms. Skip the moof to continue the parsing to have it either
play or error out.

https://bugzilla.gnome.org/show_bug.cgi?id=745089
2015-07-06 11:00:20 -03:00
Stian Selnes
a675e18935 rtph263pdepay: init debug category
https://bugzilla.gnome.org/show_bug.cgi?id=752012
2015-07-06 13:35:04 +03:00
Stian Selnes
d91ef9dcbf rtpv8depay: ignore reserved bit in payload descriptor
Draft 16 of "RTP Payload Format for VP8" states in section 4.2 that:

R: Bit reserved for future use.  MUST be set to zero and MUST be
   ignored by the receiver.

https://bugzilla.gnome.org/show_bug.cgi?id=751929
2015-07-06 12:03:51 +03:00
Stian Selnes
f682772898 rtph261pay: rtph261depay: Add documentation
https://bugzilla.gnome.org/show_bug.cgi?id=751982
2015-07-05 16:09:02 +01:00
Sebastian Dröge
ab77906a37 rtph261pay: Fix compiler warning
gstrtph261pay.c: In function 'gst_rtp_h261_pay_class_init':
gstrtph261pay.c:1003:17: error: variable 'gobject_class' set but not used [-Werror=unused-but-set-variable]
   GObjectClass *gobject_class;
2015-07-03 14:29:16 +02:00
Sebastian Dröge
e0204938a8 rtph261depay: Let the base class push the buffer so it can deal with the flow return 2015-07-03 14:15:31 +02:00
Sebastian Dröge
b653fae8c9 rtph261pay: Remove unused adapter 2015-07-03 14:15:29 +02:00
Sebastian Dröge
90d47bff9e speexpay: Directly attach payload to the output buffer instead of copying it 2015-07-03 14:00:04 +02:00
Sebastian Dröge
6675e33109 sbcpay: Attach payload directly to the output instead of copying 2015-07-03 14:00:04 +02:00
Stian Selnes
ef8d630a59 rtp: add H.261 RTP payloader and depayloader
Implementation according to RFC 4587.

Payloader create fragments on MB boundaries in order to match MTU size
the best it can. Some decoders/depayloaders in the wild are very strict
about receiving a continuous bit-stream (e.g. no no-op bits between
frames), so the payloader will shift the compressed bit-stream of a
frame to align with the last significant bit of the previous frame.

Depayloader does not try to be fancy in case of packet loss. It simply
drops all packets for a frame if there is a loss, keeping it simple.

https://bugzilla.gnome.org/show_bug.cgi?id=751886
2015-07-03 11:48:41 +01:00
Sebastian Dröge
9dfae82566 rtpmpvdepay: Don't forget to unmap the input buffer 2015-07-03 12:19:05 +02:00
Sebastian Dröge
7e1d28d27f rtpmpvpay: Create buffer lists instead of pushing each buffer individually 2015-07-03 12:15:10 +02:00
Sebastian Dröge
f67bafb90d rtpmpapay: Use buffer lists instead of pushing each fragment individually 2015-07-03 12:04:18 +02:00
Sebastian Dröge
002bba37f7 rtpmp4apay: Create buffer lists and don't copy payload memory 2015-07-03 12:00:26 +02:00
Miguel París Díaz
5ae672fd22 rtpjitterbuffer: Consider timers len to compare with RTP_MAX_DROPOUT
When there are a lot of small gaps, we can consider that there is
a big gap (too losses) to reset the buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=751636
2015-07-02 18:38:46 +02:00
Sebastian Dröge
3df0cce65d rtpjitterbuffer: If possible, always update the current time before looping over all timers
If we have a clock, update "now" now with the very latest running time we have.
If timers are unscheduled below we otherwise wouldn't update now (it's only updated
when timers expire), and also for the very first loop iteration now would otherwise
always be 0.

Also the time is used for the timeout functions, e.g. to calculate any times
for the next timeouts and we would otherwise pass too old times there.

https://bugzilla.gnome.org/show_bug.cgi?id=751636
2015-07-02 16:45:59 +02:00
Sebastian Dröge
6a59cc4b76 rtph263ppay: Generate buffer lists and attach the payload directly instead of copying it 2015-07-02 12:26:03 +02:00
Sebastian Dröge
9ceb15bcf8 rtph263pdepay: Simplify code a bit and do less direct memcpy and let GstBuffer do that for us 2015-07-02 09:49:44 +02:00
Sebastian Dröge
8b0d11a0ee rtph263pay: Stop using an adapter and directly use the buffer
We always pushed one buffer into the adapter, then handled exactly that one
buffer and flushed it from the adapter. Now also don't memcpy() the actual
payload but just attach the input buffer's data to the output buffer.

This code still needs some serious refactoring/rewriting.
2015-07-02 09:26:27 +02:00
Sebastian Dröge
51cd22c912 rtpgsmpay: Remove non-existing includes for now
git add -p mistake.
2015-07-01 21:57:28 +02:00
Sebastian Dröge
ef5e14989b rtpgstpay: Use the return value of gst_buffer_append() 2015-07-01 21:39:25 +02:00
Sebastian Dröge
137672ff18 rtpgsmpay: Attach payload to the output buffer instead of copying it 2015-07-01 21:39:25 +02:00
Sebastian Dröge
cb0232ba4e rtpg729pay: Attach payload directly to output buffers instead of copying 2015-07-01 21:39:25 +02:00
Sebastian Dröge
0a71dbc80c rtpg723pay: Attach payload buffer to the output instead of copying 2015-07-01 21:39:25 +02:00
Sebastian Dröge
8aca30799a rtpdvdepay: Map the output buffer once instead of once every 80 bytes 2015-07-01 21:39:25 +02:00
Jimmy Ohn
4f4605f481 avidemux: fix return type of index_entry_offset_search()
It's a compare function and may return a negative value,
so should for correctness and consistency return a signed
integer.

https://bugzilla.gnome.org/show_bug.cgi?id=751780
2015-07-01 19:18:11 +01:00
Miguel París Díaz
2176f31174 rtpjitterbuffer: refactor handle_next_buffer
The goal of this patch is making handle_next_buffer function
more readable avoiding unnecesary gotos and adding other
cosmetic changes.
2015-07-01 16:06:40 +02:00
Sebastian Dröge
3af36ed8fe rtpac3pay: Attach the payload to the output buffer instead of copying it
Might also want to produce buffer lists here if needed.
2015-07-01 15:46:07 +02:00
Sebastian Dröge
adf2d8459f rtp: Fix indention 2015-07-01 15:46:06 +02:00
Sebastian Dröge
978903cd87 rtph264pay: Use GST_WARNING_OBJECT() instead of GST_WARNING() 2015-07-01 11:58:26 +02:00
Sebastian Dröge
ceaf90f027 vp8depay: Don't lock/map every non-keyframe buffer twice
Just copy the complete header instead of first looking at the first byte
and then at the remaining 10 bytes.
2015-06-30 14:07:28 +02:00
Sebastian Dröge
de5cd0995b Revert "rtpjitterbuffer: If we have an immediate timeout, don't try to find an earlier timeout"
This reverts commit 0c21cd7177.

If we have multiple immediate timers, we want to first handle the one with the
lowest sequence number... which would be broken now.

Instead of this we should just use a GSequence for the timers, and have them
sorted first by timestamp, and for equal timestamps by sequence number. Then
we would always only have to take the very first timer from the list and never
have to look at any others.
2015-06-29 10:36:58 +02:00
Sebastian Dröge
0c21cd7177 rtpjitterbuffer: If we have an immediate timeout, don't try to find an earlier timeout
If we have lots of such immediate timeouts, we would otherwise have quadratic
runtime in the number of timeouts.
2015-06-29 10:14:05 +02:00