Commit graph

8749 commits

Author SHA1 Message Date
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
Thiago Santos
121fcbf7da splitmuxsrc: sticky events are sent automatically from the pad
No need to send them explicitly from the element

https://bugzilla.gnome.org/show_bug.cgi?id=751240
2015-06-25 17:13:43 -03:00
Thiago Santos
af6a09ae4c splitmuxsrc: make sure to push sticky events before adding pad
It allows the caps to be set on the pad before being added for
dynamic autoplugging to work.

https://bugzilla.gnome.org/show_bug.cgi?id=751240
2015-06-25 17:13:43 -03:00
Hyunjun Ko
f560a3d223 rtspsrc: Add new ntp-time-source property and deprecate use-pipeline-clock property
Enable to use new ntp-time-source property of rtpbin

https://bugzilla.gnome.org/show_bug.cgi?id=751496
2015-06-25 17:16:49 +02:00
Hyunjun Ko
a1bff413a1 rtpbin/session: fix description
https://bugzilla.gnome.org/show_bug.cgi?id=751496
2015-06-25 16:31:51 +02:00
Luis de Bethencourt
063f553275 docs: decodebin2 -> decodebin 2015-06-25 10:57:29 +01:00
Luis de Bethencourt
34caf9d7c5 deinterlace: update example pipeline
Update reference to decodebin2 to decodebin
2015-06-25 10:47:40 +01:00
Luis de Bethencourt
72f63c58ad deinterlace: remove dead assignments
Values in fields_required and same_buffer are overwritten before used. Removing
assignment
2015-06-25 10:46:43 +01:00
Gilbok Lee
0dcd76447a qtdemux: does not detect orientation
Most files don't contain the values for transposing the coordinates
back to the positive quadrant so qtdemux was ignoring the rotation
tag. To be able to properly handle those files qtdemux will also ignore
the transposing values to only detect the rotation using the values
abde from the transformation matrix:

[a b c]
[d e f]
[g h i]

https://bugzilla.gnome.org/show_bug.cgi?id=738681
2015-06-25 00:24:21 -03:00
Nicolas Dufresne
2359ee29e8 qtmux: Correctly calculate the elst media start
The media start has nothing to do with the shift we have applied
but with the value of the first PTS. This is defined as:

  Dt(0) = 0
  Ct(0) = Dt(0) + CTTS(0)

So the media start is always the first CTTS.

https://bugzilla.gnome.org/show_bug.cgi?id=751361
2015-06-23 22:34:36 -04:00
Thiago Santos
eceb2ccc73 qtdemux: accumulate previous edts entries into segment.base
Allows playing edts editted files with proper synchronization of
streams. This patch fixes the regression introduced by
bf95f93c01 that was added to fix
segment seeks handling.

Having the accumulated_base separated from the main segment.base
allows handling both segment seeks and edts editted files.

https://bugzilla.gnome.org/show_bug.cgi?id=751361
2015-06-23 22:34:36 -04:00
Thiago Santos
aef61c2251 qtdemux: improve some debug messages
Those messages are about the stream, use the pad as the
debug object to make it clear from the logs

https://bugzilla.gnome.org/show_bug.cgi?id=751361
2015-06-23 22:34:35 -04:00
Thiago Santos
1ec9a86e72 qtmux: store last_dts of the first buffer
Buffers need not to start at running-time 0 so the last_dts needs
to be the value of the first buffer's dts as it is used to compute
the duration of the buffers. If it was left at 0 the first buffer
would have a larger duration when it shouldn't

https://bugzilla.gnome.org/show_bug.cgi?id=751361
2015-06-23 22:34:35 -04:00
Vineeth TM
e44ce40455 flacparse: fix possible memory leak
when buffer is stored to seektable, and stop gets called due to
corrupt flac file, then the seektable is not being released

https://bugzilla.gnome.org/show_bug.cgi?id=751364
2015-06-23 10:17:53 +02:00
Jan Schmidt
b26bbae695 Revert "splitmuxsink: Mask async-start/done while switching files."
This reverts commit d61e5393f1.

Causes failures muxing larger GOP sizes for some reason. Reverting
while I figure it out
2015-06-23 17:33:03 +10:00
Jan Schmidt
600bab0056 splitmuxsrc: Fix startup and shutdown races.
Fix 2 startup races when things happen too quickly, and 1
at shutdown by holding a ref to the pads in use until the
loop functions exit.

Handle errors activating file parts and publish them on
the bus.

https://bugzilla.gnome.org/show_bug.cgi?id=750747
2015-06-23 12:03:14 +10:00
Jan Schmidt
d61e5393f1 splitmuxsink: Mask async-start/done while switching files.
Sometimes, extra async-start/done from the internal sink
while the element is still starting up can cause splitmuxsink
to stall in PAUSED state when it has been set to PLAYING
by the app. Drop the child's async-start/done messages while
switching, so they don't cause state changes at the
splitmuxsink level.

https://bugzilla.gnome.org/show_bug.cgi?id=750747
2015-06-23 12:03:14 +10:00
Jan Schmidt
e5db2673bd matroska-demux: Use gst_video_multiview_guess_half_aspect()
Use the gst_video_multiview_guess_half_aspect() utility function
to set the half-aspect flag (or not) on stereoscopic frame-packed
videos.
2015-06-23 11:58:41 +10:00
Jan Schmidt
b7cbfe1fa1 qtdemux: Move multiview caps calculations, add half-aspect heuristics
Move the multiview caps calculations to the configure_stream()
function, so the rest of the video info is available, and
use the gst_video_multiview_guess_half_aspect() function to
determine if the half-aspect flag should be set on frame-packed
video.
2015-06-23 11:58:41 +10:00
Nicolas Dufresne
dd72267a8d qtdemux: Add cslg support
The cslg atom provide information about the DTS shift. This is
needed in recent version of ctts atom where the offset can be
negative. When cslg is missing, we parse the CTTS table as proposed
in the spec to calculate these values.

In this implementation, we only need to know the shift. As GStreamer
cannot transport negative timestamps, we shift the timestamps forward
using that value and adapt the segment to compensate. This patch also
removes bogus offset of ctts_soffset, this offset shall be included
in the edit list.

https://bugzilla.gnome.org/show_bug.cgi?id=751103
2015-06-22 17:51:49 -04:00
Nicolas Dufresne
7b8615d4fc qtmux: Use PTS to figure-out presence of gaps
We need to look at the presentation timestamp in order to conclude if
there is a gap at the start of a stream.

https://bugzilla.gnome.org/show_bug.cgi?id=751242
2015-06-22 17:45:30 -04:00
Nicolas Dufresne
feda525591 qtmux: Set edit list to compensate DTS shift
We shift DTS forward to avoid negative timestamps which cannot be
represented with version 0 of the CTTS table. To stick with that
version (backward compatibility), the spec recommend using an
edit list entry to move back the presentation time to where it
should be.

https://bugzilla.gnome.org/show_bug.cgi?id=751242
2015-06-22 17:45:30 -04:00
Nicolas Dufresne
bbea34bb6e flvmux: Insert AVC end of sequence
This FLV specific mark is needed to prevent Flow Player (most likely
all Flash base player) from going into buffering state when near EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=751320
2015-06-22 17:24:16 -04:00
Vineeth TM
9a1ed36b7a matroska: remove useless check
No need to check for context availability while freeing. We are inside
inside a code block with a condition that dereferences context.
if (context->type == 0 ...

https://bugzilla.gnome.org/show_bug.cgi?id=751306
2015-06-22 12:26:23 +01:00
Vineeth T M
e97df1e097 lzo: fix memory leak
the opened file is not being closed during test, which will result
in memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=751306
2015-06-22 12:22:06 +01:00
Sangkyu Park
2663388000 rtpjitterbuffer: Minor clean-up
1. Fix the code which is wrong coding style.
2. Fix a typing error of comment.

https://bugzilla.gnome.org/show_bug.cgi?id=751316
2015-06-22 13:08:12 +02:00
Jose Antonio Santos Cadenas
11f298a338 rtpsource: Do not try to push NULL buffers
If update_receiver_stats() fails, we can't really do anything with this buffer
anymore and have to drop it. This happens if there's a big seqnum
discontinuity for example.

https://bugzilla.gnome.org/show_bug.cgi?id=751311
2015-06-22 12:26:59 +02:00
Vineeth TM
636d47d2d6 flvdemux: trivial cleanup
trivial patch to add proper ( while checking for if(G_UNLIKELY())

https://bugzilla.gnome.org/show_bug.cgi?id=751306
2015-06-22 11:13:32 +01:00
Vineeth TM
78fcd03ca3 dcaparse: initialize size variable
size can be used in cleanup without being initialized. Hence
setting it to 0 when declaring

https://bugzilla.gnome.org/show_bug.cgi?id=751306
2015-06-22 10:58:35 +01:00
Vineeth TM
331fca4dfb mpegaudioparse: initialze bpf variable
bpf variable might be used in cleanup without being intialized.

https://bugzilla.gnome.org/show_bug.cgi?id=751306
2015-06-22 10:57:35 +01:00
Miguel París Díaz
40957a9212 rtprtxqueue: reverse pending list before pushing buffers
With this we send the RTX buffers in the same order
that they were requested.

https://bugzilla.gnome.org/show_bug.cgi?id=751297
2015-06-22 11:36:22 +02:00
Nicolas Dufresne
212f39ee1d flvmux: Fix DTS validity check
This check was up-side-down, causing a bad timestamp at start
and then all timestamp being delayed.

https://bugzilla.gnome.org/show_bug.cgi?id=751298
2015-06-21 19:23:22 -04:00
Nicolas Dufresne
d6e1e744a7 cslg: Add Composition Shift Least Greatest Atom
This simply add fourcc and dump function for the cslg Atom.

https://bugzilla.gnome.org/show_bug.cgi?id=751103
2015-06-17 15:21:16 -04:00
Nicolas Dufresne
8a406c9c38 ctts_dump: Fix signess issues
It didn't bug, but use correct signess in traces. The number of
entries is unsigned while the offset can be signed according to
recent spec.

https://bugzilla.gnome.org/show_bug.cgi?id=751103
2015-06-17 15:21:16 -04:00
Sebastian Dröge
e9902430da rtpjitterbuffer: gst_rtp_buffer_ext_timestamp() modifies its first argument, keep a copy around 2015-06-16 11:43:39 +02:00
Sebastian Dröge
62a7bcb395 rtpjitterbuffer: Compare ext RTP times, not plain RTP time and ext RTP time when calculating elapsed time
Otherwise all RTP times after a wraparound would be considered as going
backwards, they will always be smaller than the ext RTP time.
2015-06-16 10:31:47 +02:00
Sebastian Dröge
f4e01b13ee rtpbin: The default rtp-profile should be AVP, not AVPF 2015-06-15 19:25:12 +02:00
Sangkyu Park
6696bd62ef rtpjitterbuffer: Minor cleanup
1. Add Null check in 'free_item' function.
2. Fix a typing error of comment.

https://bugzilla.gnome.org/show_bug.cgi?id=750965
2015-06-15 11:55:57 +02:00
Nicolas Dufresne
717265ebfb flmux: Make sure best_time is initialized 2015-06-12 17:45:23 -04:00
Sebastian Dröge
dc513eb949 rtpbin/session: Add new ntp-time-source property and deprecate use-pipeline-clock property
The new property allows to select the time source that should be used for the
NTP time in RTCP packets. By default it will continue to calculate the NTP
timestamp (1900 epoch) based on the realtime clock. Alternatively it can use
the UNIX timestamp (1970 epoch), the pipeline's running time or the pipeline's
clock time. The latter is especially useful for synchronizing multiple
receivers if all of them share the same clock.

If use-pipeline-clock is set to TRUE, it will override the ntp-time-source
setting and continue to use the running time plus 70 years. This is only kept
for backwards compatibility.
2015-06-12 23:35:42 +02:00
Nicolas Dufresne
135e516730 qtdemux: Adjust segment according to ctts offset
In presence of a CTTS, the segment start/stop must be offset so
the segment start/stop include the PTS. This is needed since the
PTS cannot be negative in this format. This fixes issues where the
running time of the first buffer isn't at the start.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:18:24 -04:00
Nicolas Dufresne
12181efddc qtmux: Handle DTS with negative running time
As QT works with duration, simply bring back first DTS to 0 and shift
forward the PTS of the same amount.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:18:24 -04:00
Nicolas Dufresne
2274ca7d07 flvmux: Add negative runtime DTS support
This is done by using new feature of the CollectPad clip function
which sets the DTS as a gint64 in the collected data. It also simplify
the code a bit.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:18:24 -04:00
Sebastian Dröge
37e3ca1447 rtpbin: Rename some variables and debug output to make more sense
Local and remote were mixed up in a few places, and the time we store here is
not UNIX time (1970 epoch), but NTP time (1900 epoch) in nanoseconds.
2015-06-12 23:07:27 +02:00
Jan Schmidt
0c46c5c3e2 matroska-demux: Actually set detected 3D info into output caps.
Use the information read from the StereoMode info
to configure multiview-mode and multiview-flags in the
video caps.
2015-06-12 01:57:36 +10:00
Jan Schmidt
3f39d06338 splitmuxsink: Take released-but-not-yet-output bytes into account
When deciding whether it's time to switch to a new file, take into
account data that's been released for pushing, but hasn't yet
been pushed - because downstream is slow or the threads haven't been
scheduled.

Fixes a race in the unit test and probably in practice - sometimes
failing to switch when it should for an extra GOP or two.

Also fix a problem in splitmuxsrc where playback sometimes
stalls at startup if types are found too quickly.

https://bugzilla.gnome.org/show_bug.cgi?id=750747
2015-06-12 01:57:36 +10:00
Thiago Santos
03f1a2ea67 atoms: remove custom gst_buffer_new function in favor of core version
Remove a custom specialized version of gst_buffer_new_wrapped by
using gst_buffer_new_wrapped_full inside a macro to simplify
parameters and give it a more meaningful name.
It is only used to create temporary buffers to have its data copied.
2015-06-11 01:11:31 -03:00
Thiago Santos
1596972674 atoms: simplify free form data atoms creation
Avoid creating an intermediary buffer or memory area just
to copy into an atom's data area.
2015-06-11 01:11:31 -03:00
Thiago Santos
ab18f5035c qtmux: add AC-3 muxing support
Adds AC-3 muxing support. It is defined for mp4 and 3gp formats.

One extra feature that was added was the ability to add extension
atoms after set_caps as the AC-3 extension atom needs some data
that has to be extracted from the stream itself and is not
present on caps.
2015-06-11 01:11:31 -03:00
Thiago Santos
674e0cc2df qtmux: remove unused type MP4S 2015-06-11 01:11:31 -03:00
Thiago Santos
f83fd7a88f qtmux: remove duplicate attribute value set
It is also set a few lines below
2015-06-11 01:11:18 -03:00
Jan Schmidt
ec5bc9dccb matroska: Implement basic stereoscopic video support
Implement support for the packed video formats WebM
uses, not all the values that Matroska might use.

In practice, it's really hard to find any samples in the
wild of any.

Supported in both the muxer and demuxer.
2015-06-11 12:11:42 +10:00
Jan Schmidt
fff76157d8 qtdemux: Add basic support for MPEG-A stereoscopic video
The MPEG-A format provides an extension to the ISO base media
file format to store stereoscopic content encoded with different
codecs like H.264 and MPEG-4:2. The stereo video media information(svmi)
atom declares the presence and storage method for the video.

Stereo video information for MPEG-A can also be supplied through
the 'stvi' atom (ref: ISO/IEC_14496-12, ISO/IEC_23000-11), which
is not implemented in this patch.

Also missing is support for stereo video encoded as separate video tracks
for now.

Based on a patch by Sreerenj Balachandran <sreerenj.balachandran@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-11 12:11:42 +10:00
Sebastian Dröge
dc059efa60 rtp: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
The mix between all these in the RTP code is confusing, let's try to be
consistent.
2015-06-10 14:34:47 +02:00
Ilya Konstantinov
c7e168ec70 rtpmanager: clarify negative lost packets in stats
Also:
- Move notes on units before field documentation.
- Unify documentation style.

https://bugzilla.gnome.org/show_bug.cgi?id=750653
2015-06-10 14:10:52 +02:00
Vineeth TM
720ff75c72 qtdemux: fix reverse playback
When performing seek, segment->start is being updated with desired_offset,
but in case of reverse playback segment->start should be 0 and
segment->stop should be updated with desired offset.

https://bugzilla.gnome.org/show_bug.cgi?id=750675
2015-06-10 10:41:13 +02:00
Xavier Claessens
b0b3e8e2cc rtspsrc: Add a GTlsInteraction property
It can be used for TLS client authentication.

https://bugzilla.gnome.org/show_bug.cgi?id=750471
2015-06-09 20:03:18 -04:00
Ilya Konstantinov
0a578c235a rtpmanager: document units of stats and arguments
Also, minor spelling and style corrections.

https://bugzilla.gnome.org/show_bug.cgi?id=750653
2015-06-09 18:21:59 +02:00
Luis de Bethencourt
e56ef6bcf0 goom: possible uninitialized variables warning
Build fails with the latest snapshot of gcc-4.9 because param1 and param2 might
possibly be used uninitialized. They are set depending on the cases of a switch
statement and the compiler sees this as not a complete guarantee.
Set them to 0 if the switch statement falls down to the default case.

https://bugzilla.gnome.org/show_bug.cgi?id=750566#c6
2015-06-08 23:06:39 +01:00
Chris Clayton
e29f231e5d rtpvp8depay: potential access beyond end of array
Compiling (with gcc-4.9-20150603) produces an error because of an access beyond
the end of an array. This patch fixes the error by initializing the loop
control/array index variable (i) to 1 and returning i - 1 when a match is found.
Also, because the values stored in the array increase in value as the index
increases, the >= test unnecessary, so it is removed.
2015-06-08 20:16:20 +01:00
Jan Schmidt
d78502deb1 splitmuxsink: Don't accumulate more than 2 GOPs
Don't allow large amounts of data to queue up - we only need
the GOP we're writing, and the GOP we're accumulating.
2015-06-08 18:58:43 +10:00
Jan Schmidt
23d610140d isomp4: fsync after sending updates in robust mode
Use the new GstBuffer SYNC_AFTER flag to trigger an fsync
after updating the moov or mdat atom, and after updating the free
atom to make it visible.
2015-06-08 14:49:11 +10:00
Jan Schmidt
3e17cd8acb isomp4: Only set moov header into streamheader at EOS
Only update the moov header into the caps if it's the finalised
moov at EOS time. Avoids posting a bogus moov at startup and
repeated updates in robust-recording mode
2015-06-08 14:49:11 +10:00
Jan Schmidt
1d058c7d8a isomp4: Implement robust muxing using ping-pong strategy
Implement a robust recording mode, where the output
file is always in a playable state, seeking and rewriting
the moov header at a configurable interval. Rewriting
moov is done using reserved space at the start of
the file, and a ping-pong strategy where the moov
is replaced atomically so it's never invalid.

Track when tags have actually changed, and don't write them into
the moov unless they've changed. Clear any existing tags when
re-writing them, so we can do progressive moov updating in robust
recording mode.

Write placeholder mdat as a free atom plus a 32-bit mdat
with '0' size, which means "rest of the file" in the spec.

Re-write it later to a full 64-bit extended size atom if needed.
2015-06-08 14:49:11 +10:00
Jan Schmidt
3d7b343525 isomp4: Update edit list when re-writing moov
Correctly update any edit lists each time the moov is recalculated,
updating existing table entries if they already exist instead of just
adding new ones.
2015-06-08 14:16:36 +10:00
Jan Schmidt
0c1bcc629d isomp4: Remove an extra bracket in a comment. 2015-06-08 14:16:36 +10:00
Jan Schmidt
94e113c6c6 splitmuxsrc: Protect total_duration state variable with the object lock.
Prevent deadlocks from downstream querying duration from the streaming thread.
2015-06-08 14:16:36 +10:00
Luis de Bethencourt
0b8c7ab797 goom: clean dereferences of private structure
https://bugzilla.gnome.org/show_bug.cgi?id=742875
2015-06-07 19:24:20 +01:00
Luis de Bethencourt
fce8e5fb26 goom2k1: clean dereferences of private structure
https://bugzilla.gnome.org/show_bug.cgi?id=742875
2015-06-07 19:20:49 +01:00
Sebastian Dröge
a7faa3e0a2 Release 1.5.1 2015-06-07 10:46:34 +02:00
Sebastian Dröge
b549ebd066 rtpsession: Override the SSRC from the packets' SSRC if none was given via caps or property 2015-06-07 10:33:27 +02:00
Sebastian Dröge
d650a310da rtpsession: Only suggest our internal ssrc if it's not a random one and was selected as internal ssrc
https://bugzilla.gnome.org/show_bug.cgi?id=749581
2015-06-05 16:45:54 +02:00
Vineeth TM
0e5631c5c0 interleave: error when channel-positions-from-input=False
self->channels is being incremented only when
channel-positions-from-input is set as TRUE. So in case of FALSE
self->func is not set and hence creating assertion error.
Hence removing the condition to increment self->channels.

https://bugzilla.gnome.org/show_bug.cgi?id=744211
2015-06-05 08:48:25 -03:00
Sebastian Dröge
8f5bdf9690 rtpjitterbuffer: Add support for receiving reduced size RTCP
It worked before but gave warnings, now we just ignore RTCP
packets that don't start with a SR. As all we're interested
in here are SRs.
2015-06-05 10:33:11 +02:00
Jose Antonio Santos Cadenas
f563176349 rtpssrcdemux: Add support for reduce size rtcp
According to RFC 5506, reduce size packages can be sent, this
packages may not be compound, so we need to add support for
getting ssrc from other types of packages.

https://bugzilla.gnome.org/show_bug.cgi?id=750327
2015-06-05 10:30:15 +02:00
Jose Antonio Santos Cadenas
f8f23bbf5d rtpsession: Add support for receiving reduced size rtcp
See RFC 5506

https://bugzilla.gnome.org/show_bug.cgi?id=750332
2015-06-05 10:24:17 +02:00
Sebastian Dröge
ec82eba96b aacparse: Add support for channel configurations 11, 12 and 14 and 7 actually has 8 channels
ISO/IEC 14496-3:2009/PDAM 4 added 11, 12 and 14.
2015-06-04 16:09:41 +02:00
Nicolas Dufresne
3ab70e4677 asteriskh263: Un-rank clashing depayloader
This depayloader clash with the standard one for H263p. It produces an
H263p stream with a modified header. It uses encoding-name that is the
same as H263p (H263-1998) though the resulting ES is not decodable or
parsable in GStreamer, making it unsuable in dynamic pipeline. This
patch unrank this specialized depayloader since it can only be used in
custom pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=739935
2015-06-03 08:57:57 -04:00
Luis de Bethencourt
ffe7507512 goom2k1: remove variables not needed anymore
https://bugzilla.gnome.org/show_bug.cgi?id=742875
2015-06-02 18:09:48 +01:00
Luis de Bethencourt
8756b6a9d4 goom2k1: rebase to use the audiovisualizer class
Rebase to have goom2k1 using the common GstAudioVisualizer class

https://bugzilla.gnome.org/show_bug.cgi?id=742875
2015-06-02 18:02:08 +01:00
Luis de Bethencourt
89903bf66a goom: rebase to use the audiovisualizer class 2015-06-02 17:47:57 +01:00
Sebastian Dröge
647eefea67 rtpsession: Only schedule a timer when we actually have to send RTCP
Otherwise we will have 10s-100s of thread wakeups in feedback profiles, create
RTCP packets, etc. just to suppress them in 99% of the cases (i.e. if no
feedback is actually pending and no regular RTCP has to be sent).

This improves CPU usage and battery life quite a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
8ada98964d rtpsession: Remove useless goto
https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
0a7823b30f rtspsrc: Set RTP profile on the rtpsession objects
https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
506a8a8857 rtpbin: Add rtp-profile property for setting the default profile of newly created sessions
https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
0f7e80ed59 rtpsession: Only put RRs and full SDES into regular RTCP packets
If we may suppress the packet due to the rules of RFC4585 (i.e. when
below the t-rr-int), we can send a smaller RTCP packet without RRs
and full SDES. In theory we could even send a minimal RTCP packet
according to RFC5506, but we don't support that yet.

https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
6f830e5bd5 rtpsession: Keep track of tp/tn and t_rr_last separately
Otherwise we can't properly schedule RTCP in feedback profiles as we need to
distinguish the time when we last checked for sending RTCP (tp) but might have
suppressed it, and the time when we last actually sent a non-early RTCP
packet.

This together with the other changes should now properly implement RTCP
scheduling according to RFC4585, and especially allow us to send feedback
packets a lot if needed but only send regular RTCP packets every once in a
while.

https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
3122ef4ae3 rtpsession: Add property for selecting RTP profile (AVP/AVPF/etc)
And modify our RTCP scheduling algorithm accordingly. We now can send more
RTCP packets if needed for feedback, but will throttle full RTCP packets by
rtcp-min-interval (t-rr-int from RFC4585).

In non-feedback mode, rtcp-min-interval is Tmin from RFC3550, which is
statically set to 1s or 0s by RFC4585. Tmin defines how often we should
send RTCP packets at most.

https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Olivier Crête
8fd3e0e125 mulawdec: Let baseclass estimate bitrate
This makes playback directly from a file work with the right caps.
2015-05-30 17:41:44 -04:00
Tim-Philipp Müller
2e5df10ed9 dynudpsink: keep GCancellable fd around instead of re-creating it constantly
And create it only when starting the element.
2015-05-27 17:08:47 +01:00
Tim-Philipp Müller
b33d30621c udpsink, multiudpsink: keep GCancellable fd around instead of re-creating it constantly
Otherwise we constantly create/close event file descriptors,
every time we call g_socket_condition_timed_wait() or
g_socket_send_message(s)(), i.e. a lot. Which is not
particularly good for performance.

Can't create GCancellable in ::start() here because it's used
in client_new() which may be called via the add-client action
signal which may be called before the element is up and running.
2015-05-27 17:08:47 +01:00
Tim-Philipp Müller
11bb21f3c2 udpsrc: keep GCancellable fd around instead of re-creating it constantly
Otherwise we constantly create/close event file descriptors,
every single time we call g_socket_condition_timed_wait() or
g_socket_receive_message(), i.e. twice per packet received!
This was not particularly good for performance.

Also only create GCancellable on start-up.
2015-05-27 17:08:47 +01:00
Luis de Bethencourt
6d06a74f7f matroska: overwritten value assignment
curpos is set and immediately after, set again. Remove the redundant
assignment.

https://bugzilla.gnome.org/show_bug.cgi?id=749909
2015-05-27 16:56:15 +01:00
Tim-Philipp Müller
80998dadba rtpvrawdepay: don't shadow existing outbuf variable
And fix unref of the wrong one which will contain NULL
in an error code path.
2015-05-25 16:16:47 +01:00
Tim-Philipp Müller
2aafb3951d rtpvrawdepay: map/unmap output frame only once, not for every input packet
Map output buffer after creating it and keep it mapped
until we're done with it instead of mapping/unmapping
it for every single input buffer.
2015-05-25 16:16:42 +01:00
Thiago Santos
d03b9513f1 qtdemux: remove fixme from 2006
It has been verified by use over time.
2015-05-25 08:47:47 -03:00
Thiago Santos
fc0a184592 qtdemux: fix reverse playback of fragmented media
qtdemux creates a samples array and gets the timestamps for buffers by
accumulating their durations. When doing reverse playback of fragments,
accumulating samples will lead to wrong timestamps as the timestamps
should go decreasing from fragment to fragment and the accumulation
will produce wrong results.

In this case, when receiving a discont for fragmented reverse playback,
the previous samples information should be flushed before new data
is processed.
2015-05-25 08:46:18 -03:00
Jimmy Ohn
d3997773fc splitfilesrc: Implement binary search in find_part_for_offset
Implement binary search using gst_util_array_binary_search

https://bugzilla.gnome.org/show_bug.cgi?id=749690
2015-05-25 14:23:32 +10:00
Sebastian Dröge
565cd49643 rtpsession: Don't crash if we receive FIR/PLI from a source we don't know 2015-05-21 13:26:53 +03:00
Santiago Carot-Nemesio
2fb1fe2ee3 rtpsession: Fix collection of statistics
Stats should be collected on the media rtp source not in the
sender one.

https://bugzilla.gnome.org/show_bug.cgi?id=749669
2015-05-21 12:56:12 +03:00
Edward Hervey
27c91bc881 multifilesink: Add a new max-duration file switching mode
This new mode ensures that files will never exceed a certain duration
based on incoming buffer PTS (and duration if present)

Note:
* You need timestamped buffers (duh). If some of the incoming buffers don't
  have PTS, then it will just accept them in the current file
2015-05-20 15:50:07 +02:00
Edward Hervey
f1ceaab02f multifilesink: streamline the file-switch code a bit
Use the same functions regardless of the mode we are using
2015-05-20 15:50:07 +02:00
Edward Hervey
db0abbd531 multifilesink: add "aggregate-gops" property to process GOPs as a whole
This property can be used in combination with next-file=max-size
(and perhaps a future next-file=max-duration) to make sure that
each file part starts cleanly with a key frame and the appropriate headers.

In order for this property to work correctly, upstream elements should make
sure than any headers that need to be written in a standalone file are:
1) in the streamheader caps field
2) and/or in the stream as one or more buffers marked with GST_BUFFER_FLAG_HEADER
   that are just before the keyframe buffer

This is useful for MPEG-TS/MPEG-PS file segmenting in
combination with mpegtsmux or mpegpsmux.

Original patch by: Tim-Philipp Müller <tim@centricular.com>
2015-05-20 15:49:57 +02:00
Sebastian Dröge
9b14170355 rtspsrc: Use single-include header for the RTSP library 2015-05-20 16:37:55 +03:00
Tim-Philipp Müller
f54110fd3e udp: don't use soon-to-be-deprecated g_cancellable_reset()
From the API documentation: "Note that it is generally not
a good idea to reuse an existing cancellable for more
operations after it has been cancelled once, as this
function might tempt you to do. The recommended practice
is to drop the reference to a cancellable after cancelling
it, and let it die with the outstanding async operations.
You should create a fresh cancellable for further async
operations."

https://bugzilla.gnome.org/show_bug.cgi?id=739132
2015-05-19 19:00:20 +01:00
Stefan Sauer
168881a186 Revert "doc: Workaround gtkdoc issue"
This reverts commit 1797c8f8b1.

This is fixed by the gtk-doc 1.23 release.
<para> cannot contain <refsect2>:
http://www.docbook.org/tdg/en/html/para.html
http://www.docbook.org/tdg/en/html/refsect2.html
2015-05-18 20:13:01 +02:00
Nicola Murino
5e226d63f9 rtpg726pay: fix caps leak
https://bugzilla.gnome.org/show_bug.cgi?id=749544
2015-05-18 17:40:55 +01:00
Nicola Murino
335afc982b rtpg726depay: don't leak input buffer
https://bugzilla.gnome.org/show_bug.cgi?id=749543
2015-05-18 17:40:39 +01:00
Sebastian Dröge
c60038f188 rtpsource: Queue bad packets instead of dropping them
So we can send them out once we found the next, consecutive sequence number in
case one is following.
2015-05-18 18:43:16 +03:00
Sebastian Dröge
9f18a271f3 rtpsource: Use g_queue_foreach() to unref all buffers in queues 2015-05-18 18:43:16 +03:00
Sebastian Dröge
54e924332e rtpsource: Refactor seqnum comparison code a bit 2015-05-18 18:43:16 +03:00
Sebastian Dröge
1974b24ef4 rtpsource: Allow sequence number wraparound during probation 2015-05-18 18:43:16 +03:00
Sebastian Dröge
3386de7a8a rtpsource: Make sequence number comparison code more readable
... by using gst_rtp_buffer_compare_seqnum() and signed integers
instead of implictly using effects of integer over/underflows.
2015-05-18 18:43:16 +03:00
Sebastian Dröge
ca110fb0b8 rtpjitterbuffer: When detecting a huge seqnum gap, wait for 5 consecutive packets before resetting everything
It might just be a late retransmission or spurious packet from elsewhere, but
resetting everything would mean that we will cause a noticeable hickup. Let's
get some confidence first that the sequence numbers changed for whatever
reason.

https://bugzilla.gnome.org/show_bug.cgi?id=747922
2015-05-18 18:43:15 +03:00
Nicolas Dufresne
1797c8f8b1 doc: Workaround gtkdoc issue
With gtkdoc 1.22, the XML generator fails when a itemizedlist is
followed by a refsect2. Workaround the issue by wrapping the
refsect2 into para.
2015-05-16 23:37:06 -04:00
Stefan Sauer
426eb3e300 qtdemux: avoid wrong warnings on unknown node types
Add 'name' and 'mean' fourccs, as we handle them. Right now each use would
trigger a warning.
2015-05-15 14:56:07 +02:00
Nicola Murino
fefeda5e6c rtpg726depay: add block_align to output caps
It is needed to correctly negotiate caps with matroskamux
and most other muxers.

https://bugzilla.gnome.org/show_bug.cgi?id=749129
2015-05-13 12:39:07 +01:00
Sebastian Dröge
e11a537b65 audiofxbasefirfilter: Fix time-domain convolution with >1 channels
input_samples is the number of frames, but we used it as the number of
samples.

https://bugzilla.gnome.org/show_bug.cgi?id=747204
2015-05-12 13:41:58 +03:00
Tim-Philipp Müller
2e412a447a docs: update example pipelines in element docs
Mostly gst-launch -> gst-launch-1.0
Use autovideosink/autoaudiosink more often.
Sprinkle some converters here and there.
2015-05-10 11:05:00 +01:00
Tim-Philipp Müller
3755409409 splitmuxsrc: minor error message clean-up
Don't put filename in error message shown to user.
2015-05-10 10:53:13 +01:00
Guillaume Desmottes
2bd3685d04 flacparse: fix buffer leak when stored to seektable
Fix a leak with the
validate.file.playback.change_state_intensive.samples_multimedia_cx_flac_Yesterday_flac
scenario.

https://bugzilla.gnome.org/show_bug.cgi?id=749072
2015-05-08 11:11:40 +01:00
Paul Hyunil
3792e9ca9b qtdemux: fix example pipeline in docs
The gst-launch script for example launch line to test qtdemux is
missing a queue before the decodebins, otherwise the gst-launch-1.0
command won't work.

https://bugzilla.gnome.org/show_bug.cgi?id=749054
2015-05-08 11:06:31 +01:00
Sebastian Dröge
27729a2960 Revert "rtpsession: Also report internal sources in on-new-ssrc and on-ssrc-active"
This reverts commit d22ec49632.

Application code might expect that it only gets external sources on those
signals, and get confused by this. If anything we would need to add new
signals.
2015-05-07 14:51:45 +02:00
Sebastian Dröge
d22ec49632 rtpsession: Also report internal sources in on-new-ssrc and on-ssrc-active
Without this it seems impossible for an application to easily get notified
about the internal ssrcs that are created, e.g. sender sources, and also
to know when they are active and produce RTCP packets.

https://bugzilla.gnome.org/show_bug.cgi?id=746747
2015-05-06 11:21:22 +02:00
Sebastian Dröge
9865730cfa rtspsrc: Fix up last commit 2015-05-04 16:50:38 +02:00
Sebastian Dröge
d08f488598 rtspsrc: Only do RTX when using a feedback profile 2015-05-04 16:47:30 +02:00
Sebastian Dröge
9d22ad421b rtpsession: The stats min_interval is in seconds, not nanoseconds
We have to scale it to compare it against our clock times.
2015-05-04 14:12:07 +02:00
Sebastian Dröge
afe1d5a89f rtpsession: Only return TRUE if early feedback was requested already and it's early enough 2015-05-04 14:11:00 +02:00
Luis de Bethencourt
06d1ae313d matroska: remove unused property enum items 2015-04-30 15:43:09 +01:00
Tim-Philipp Müller
377c8405aa qtdemux: fix buffer leak on eos in push mode
Based on patch by Guillaume Desmottes.

scenario: validate.http.playback.seek_with_stop.raw_h264_1_mp4

https://bugzilla.gnome.org/show_bug.cgi?id=748617
2015-04-30 13:35:16 +01:00
Sebastian Dröge
178f0a4522 qtdemux: Check for sizes of the rdrf (redirect) atom before accessing the data and use g_strndup() instead of g_strdup()
Thanks to Ralph Giles for reporting this.
2015-04-29 19:41:29 +02:00
Sebastian Dröge
33693525b9 rtspsrc: Only enable retransmissions if there is retransmission info in the SDP
Otherwise we're going to send early RTCP and NACKs in non-feedback sessions
too, which will confuse servers.

https://bugzilla.gnome.org/show_bug.cgi?id=748627
2015-04-29 15:53:09 +02:00
Guillaume Desmottes
7f4f4131df matroskademux: fix seek event leak
gst_matroska_demux_handle_seek_event() doesn't consume the
event so we have to unref it.

https://bugzilla.gnome.org/show_bug.cgi?id=748584
2015-04-28 19:24:40 +01:00
Sebastian Dröge
9119fbd774 matroska-demux: Send pending tags when adding a new pad
We might've parsed those tags before already and tried to push them to
non-existing pads before. Now let's do it for real.
2015-04-28 15:42:49 +02:00
Sebastian Dröge
73c0c2920f rtpstats: Average RTCP packet size is in bytes, bandwidths in bits
We need to convert the size to bits for our calculations.

https://bugzilla.gnome.org/show_bug.cgi?id=747863
2015-04-27 16:45:40 +02:00
Sebastian Dröge
475b1e607e rtpstats: Use the same lower limit for RTCP bandwidth to stop sending RTCP everywhere
https://bugzilla.gnome.org/show_bug.cgi?id=747863
2015-04-27 16:45:33 +02:00
Sebastian Dröge
7596ed91b8 rtpsession: Use bandwidth calculation by default instead of some arbitrary hardcoded value
https://bugzilla.gnome.org/show_bug.cgi?id=747863
2015-04-27 16:45:25 +02:00
Sebastian Dröge
928cd110bc rtpsession: Bandwidth is supposed to be in bits/s, not bytes/s
https://bugzilla.gnome.org/show_bug.cgi?id=747863
2015-04-27 16:45:14 +02:00
Luis de Bethencourt
9391622579 Rename property enums from ARG_ to PROP_
Property enum items should be named PROP_ for consistency and readability.
2015-04-27 11:22:11 +01:00
Ilya Konstantinov
fd391a5404 rtpjitterbuffer: Fix "stats" property docs
https://bugzilla.gnome.org/show_bug.cgi?id=748436
2015-04-26 21:15:44 +02:00
Tim-Philipp Müller
d753a3eeb1 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:55:07 +01:00
Thiago Santos
0ade8b813f videocrop: print the property values when set
Instead of printing the currently used values. The log is meant
to show what the properties changed to, not what is being currently
used.
2015-04-24 13:55:51 -03:00
Luis de Bethencourt
671b4d25cd remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
unused. Removing them.
2015-04-24 17:01:12 +01:00
Tim-Philipp Müller
03d3d36053 level: fix infinite loop for very low interval values
https://bugzilla.gnome.org/show_bug.cgi?id=745515
2015-04-24 00:51:29 +01:00
Jesper Larsen
3528046773 rtspsrc: Fix RTCP caps leak
https://bugzilla.gnome.org//show_bug.cgi?id=748353
2015-04-23 14:56:27 +01:00
Sebastian Dröge
edcc5be297 rtpjitterbuffer: When request retransmissions for future packets, consider the packet spacing in the extra delay
We now take the maximum of 2*jitter and 0.5*packet_spacing for the extra
delay. If jitter is very low, this should prevent unnecessary retransmission
requests to some degree.

https://bugzilla.gnome.org/show_bug.cgi?id=748041
2015-04-22 20:27:18 +02:00
Sebastian Dröge
3fe8ceff14 rtpjitterbuffer: Take a running average of the packet spacings instead of just the latest
https://bugzilla.gnome.org/show_bug.cgi?id=748041
2015-04-22 20:25:43 +02:00
Miguel París Díaz
f81c9a9568 rtpjitterbuffer: Add "rtx-next-seqnum" property
If this is set to FALSE, rtpjitterbuffer will not request retransmissions for
future packets based on when they are estimated to arrive.

See also https://bugzilla.gnome.org/show_bug.cgi?id=748041

https://bugzilla.gnome.org/show_bug.cgi?id=739868
2015-04-22 19:51:18 +02:00
Sebastian Dröge
68dfe93463 rtxreceive: Put debug output for retransmission requests at the right place
Before it was only ever printed once for every time a ssrc was associated with
a specific stream.
2015-04-22 19:51:18 +02:00
Luis de Bethencourt
c884a3b3a5 equalizer: fix dynamic changes on bands
When we are in passthrough, the transform function doesn't run and if the
passthrough check is in this function it will never be deactivated. Fix this by
checking directly whenever a gain is changed.

Also set the passthrough to TRUE at init because the gains default to 0, so we
can passthrough until any gain property is changed.

https://bugzilla.gnome.org/show_bug.cgi?id=748068
2015-04-22 10:38:39 +01:00
Vincent Penquerc'h
6e3835594c ac3parse: fix memory leak 2015-04-17 13:33:09 +01:00
Alex O'Konski
fc038f1f4e icydemux: Fix segfault if metadata-interval is 0
Prevents an extra unref of GstBuffer when passing a non-icy stream through
icydemux with metadata-interval set to 0.

Reproducible with:
gst-launch-1.0 filesrc location=~/testsong.mp3 ! \
'application/x-icy,metadata-interval=(int)0' ! icydemux ! decodebin ! wavenc ! \
filesink location=~/testsong.wav

https://bugzilla.gnome.org/show_bug.cgi?id=748024
2015-04-17 10:01:02 +01:00
Ravi Kiran K N
fd6a5a5d90 audiofx: fix typo in example pipelines
Fix typo in example pipelines

https://bugzilla.gnome.org/show_bug.cgi?id=748022
2015-04-17 09:53:46 +01:00
Sebastian Dröge
80268e7d37 rtpsource/rtprtxsend: Also pass correct seqnum-offset and payload to the RTX rtpsource
https://bugzilla.gnome.org/show_bug.cgi?id=747394
2015-04-16 17:33:37 +02:00
Arun Raghavan
26bec72e52 rtpsession: Track RTX ssrc caps
This is needed so that we can generate SR for RTX stream correctly (the
clock rate is required).

https://bugzilla.gnome.org/show_bug.cgi?id=747394
2015-04-16 17:33:37 +02:00
Sebastian Dröge
17c6532b75 rtprtxsend: Copy over timestamps from the orignal buffers to the RTX buffers
https://bugzilla.gnome.org/show_bug.cgi?id=747394
2015-04-16 17:33:37 +02:00
Vincent Penquerc'h
f02ad47998 qtdemux: fix tag list leaks on error paths 2015-04-16 13:10:22 +01:00
Vincent Penquerc'h
765faa306a qtdemux: fix tag list leak on unknown stream type 2015-04-16 13:10:21 +01:00
George Kiagiadakis
97c03449a4 splitmuxsink: do not access property variable without the object lock, use the local stack copy instead 2015-04-15 13:30:19 +02:00
George Kiagiadakis
1954726328 splitmuxsink: add probe on the multiqueue's sink pad instead of the ghost pad
because _release_pad tries to release it from ctx->sinkpad, which is
multiqueue's sink pad, and currently fails because the probe is not
installed there
2015-04-15 13:30:19 +02:00
Sebastian Dröge
caa255d2ed rtprtx*: Fix typos 2015-04-14 19:08:38 +02:00
Sebastian Dröge
bd19b08d6d rtpsession: Not sending early RTCP now because of dithering means we send it with the next compound packet 2015-04-14 18:42:44 +02:00
Sebastian Dröge
4223d0c114 rtpsession: Improve debug output a bit if we can't allow early feedback 2015-04-14 18:42:44 +02:00
Olivier Crête
1394a66e62 rtpvp8depay: When dropping intra packet, request keyframe
https://bugzilla.gnome.org/show_bug.cgi?id=747208
2015-04-13 18:13:35 -06:00
Sebastian Dröge
6c27293ffe rtpjitterbuffer: Change resyncing GST_WARNING to GST_INFO
This also happens in the very beginning when we receive the first packet, a
warning would be very confusing here. In all places where we should warn about
this, we would've printed a warning already before.
2015-04-13 20:25:48 +02:00
Tim-Philipp Müller
b745cb8a47 multifilesink: minor docs improvement 2015-04-13 14:31:17 +01:00
Miguel París Díaz
c4bb6a098b rtpjitterbuffer: Add "rtx-max-retries" property
This property allows to limit the maximum number of retransmission
for a specific packet.

https://bugzilla.gnome.org/show_bug.cgi?id=739868
2015-04-13 09:09:03 +02:00
Miguel París Díaz
05bd708fc5 rtpjitterbuffer: Fix expected_dts calc in calculate_expected
Right above we consider lost_packet packets, each of them having duration,
as lost and triggered their timers immediately. Below we use expected_dts
to schedule retransmission or schedule lost timers for the packets that
come after expected_dts.

As we just triggered lost_packets packets as lost, there's no point in
scheduling new timers for them and we can just skip over all lost packets.

https://bugzilla.gnome.org/show_bug.cgi?id=739868
2015-04-13 09:06:33 +02:00
Sebastian Dröge
1a2f253c3a rtpjitterbuffer: Make the next output buffer discont after resetting the jitterbuffer
Resetting the jitterbuffer drops all packets and other things, and will cause
a discontinuity in the packets received by the depayloaders. They should now
also flush anything they had pending as the new data will start at a different
position.

https://bugzilla.gnome.org/show_bug.cgi?id=739868
2015-04-13 09:05:34 +02:00
Hyunjun Ko
7fbd1b472f qtdemux: Update segment.start after key-unit seek
When doing key uint seek, qtdemux calls gst_qtdemux_adjust_seek
to get proper offset. And then this offset is set to
segment.position and segment.time in gst_qtdemux_perform_seek but
segment.start is not updated.

After that, application sends segment query,
qtdemux sets start and stop to query using gst_segment_to_stream_time. Due
to the wrong value in segment.start, the stop position is smaller than
it should.

https://bugzilla.gnome.org/show_bug.cgi?id=746822
2015-04-10 10:12:50 -03:00
Thiago Santos
39c09284e2 qtmux: remove useless variable do_pts
We always write the CTTS in qtmux. Ideally we only want to do that
for streams that need DTS, it should be present on the track information
rather than be decided based on each buffer
2015-04-10 10:05:24 -03:00
Thiago Santos
5780afe131 qtmux: remove subtraction that makes PTS/DTS start from 0
As qt uses durations, it doesn't matter, only the difference
between consecutive buffers is important. Also, collectpads
already replaces PTS/DTS with the running times for them.
2015-04-10 10:05:24 -03:00
Ravi Kiran K N
d8ebddfaf3 smpte: remove unused fields
Remove the fields - format and fps from smpte
as they are unused.

https://bugzilla.gnome.org/show_bug.cgi?id=747597
2015-04-10 10:23:55 +01:00
Vincent Penquerc'h
a862db33b6 splitmuxsink: fix mutex leak 2015-04-09 13:01:23 +01:00
Jan Schmidt
fe739b7f88 isomp4: Refactor various state variables into a mux_mode var
Instead of checking various state variables around the muxer,
track the current muxing mode in a single 'mux_mode' enum.

Add some implementation notes about the different mux modes
2015-04-09 10:20:06 +10:00
Edward Hervey
5e0329235e rtph263depay: Fix framesize parsing
The string passed to the parsing function only contains a framesize, and
not <pt> + <framesize>

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726416
2015-04-08 11:17:31 +02:00
Vincent Penquerc'h
8cfebfec8c wavparse: clip chunk size above the valid maximum (0x7fffffff)
https://bugzilla.gnome.org/show_bug.cgi?id=722567
2015-04-07 12:12:44 +01:00
Vincent Penquerc'h
3ac119bbe2 wavparse: clip chunk length to available data (when known)
This prevents silly chunk lengths from possibly overflowing
(at least when we know the actual data length).

https://bugzilla.gnome.org/show_bug.cgi?id=722567
2015-04-07 12:12:44 +01:00
Sebastian Dröge
bf95f93c01 qtdemux: Don't accumulate segment bases manually
gst_segment_do_seek() does that for us already, and doing it twice
will break non-flushing seeks in interesting ways. Leftover from 1.0
porting.

Also copy over segment offset and applied_rate, just in case.
2015-04-06 20:17:52 -07:00
Thiago Santos
aeb4d32363 qtdemux: stbl_index is valid from 0 onwards
It indicates the last sample parsed, not the next one to parse.
As it starts in -1, any value from 0 onwards means that it has
some valid data.
2015-04-06 19:29:03 -03:00
Tim-Philipp Müller
2fde2011b2 docs: make GstRTCPSync enum show up in rtpbin docs
https://bugzilla.gnome.org/show_bug.cgi?id=747358
2015-04-05 20:07:19 +01:00
Thiago Santos
cf7d9f676d multifilesink: close files before posting message
Makes sure the files were properly flushed and closed before
the message reaches the application
2015-04-04 11:55:00 -03:00
Thiago Santos
e00f0de4f3 multifilesink: post file message on EOS
When multifilesink is operating in any mode other than one file
per buffer, the last file created won't have a file message posted
as multifilesink doesn't handle the EOS event.

This patch fixes it by using the last position to post a file
message when EOS is received. This should ensure at least the
time related data and the filename are posted to the application
or other elements

https://bugzilla.gnome.org/show_bug.cgi?id=747000
2015-04-04 07:58:44 -03:00
Jan Schmidt
ffa5fce094 qtdemux: Guard against 64-bit overflow
For large-file atoms, guard against overflow in the size field,
which could make us jump backward in the file and cause
infinite loops.
2015-04-03 23:07:07 +11:00
Jan Schmidt
3d59b5f814 isomp4: Make non-seekable downstream an error in normal mode
When not in fast-start or fragmented mode, we need to be able
to rewrite the size of the mdat atom, or else the output just
won't be playable - the mdat placeholder with size == 0 will
cover the rest of the file, including any moov atom we write out.

https://bugzilla.gnome.org/show_bug.cgi?id=708808
2015-04-03 23:07:04 +11:00
Sebastian Rasmussen
cf54d4cc67 rtph263pay/-depay: add framesize SDP attribute
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726416
2015-04-02 19:38:21 -04:00
Sebastian Rasmussen
896fc20806 rtpjpegpay/-depay: Remove incorrectly introduced framesize SDP attribute
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726415
2015-04-02 17:52:41 -04:00
Olivier Crête
d410acf649 rtpvp8depay: Parse width/height/profile from keyframes
This makes it possible to mux the result into a container
such as matroska.

https://bugzilla.gnome.org/show_bug.cgi?id=747208
2015-04-01 19:31:18 -04:00
Jan Schmidt
c0d4986c8d flv: When passing seek event upstream, hold a ref.
In case upstream can't handle the seek, make sure we
keep a ref on the event to attempt to handle it ourselves.
2015-03-31 00:20:48 +11:00
Guillaume Desmottes
592cab1512 matroska: fix GValue leaks when parsing tags
gst_tag_list_add_value() doesn't consume the GValue we pass to it so there is
no point copying it.

https://bugzilla.gnome.org/show_bug.cgi?id=746810
2015-03-30 08:59:36 -03:00
Mark Nauwelaerts
71b0b8d943 qtdemux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-29 13:58:56 +02:00
Mark Nauwelaerts
33cc1b4854 flvdemux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-29 13:58:56 +02:00
Mark Nauwelaerts
593cfa086c matroskademux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-29 13:58:56 +02:00
Thiago Santos
d56b11af56 matroska: store stream tags and push as updated
New tags can be found on different parts of the file, so this patch
keeps the stream taglists around for the life cycle of the pad
and adds those new tags as found. Then a new tag is found, the
pad's is marked with a tags changed flag, making the element push
a new tag event on the next check. Before this, we were sending
only the newly found tags, as the element was losing its taglist
when pushing the event.
2015-03-28 11:20:39 -03:00
Ramiro Polla
7b2b619a8f matroskademux: send global tags incrementally
Instead of sending only new tags once they are found, merge the taglist
and send them incrementally.
2015-03-28 10:24:57 -03:00
Ramiro Polla
af45021036 matroskaparse: send global tags
Global tags are already being read in matroskaparse, but they are not
currently being sent.

This patch makes global tags get sent incrementally whenever new ones
are found.

https://bugzilla.gnome.org/show_bug.cgi?id=746242
2015-03-28 10:24:57 -03:00
Vineeth T M
fb5394dbf0 quarktv: fix "planes" property range, a value of 0 is not allowed
When planes property is set to 0, the pipeline executes in
an infinite loop and never exits. Since planes must never
be 0, set the minimum value in the property description
to 1.

https://bugzilla.gnome.org/show_bug.cgi?id=743906
2015-03-28 11:31:42 +00:00
David Schleef
59756c1898 wavparse: Fix up comments regarding DTS 2015-03-26 16:24:52 -07:00
Nicolas Dufresne
84725d62b5 rtspsrc: Fix segment in TCP mode
It is expected that buffers are time-stamped with running time. Set
a segment accordingly. In this case we pick 0,-1 as this is what udpsrc
would do. Depayloaders will update the segment to reflect the playback
position.

https://bugzilla.gnome.org/show_bug.cgi?id=635701
2015-03-26 17:54:08 -04:00
David Schleef
c3bb399fd3 wavparse: be more strict about typefinding DTS
Code now matches comments.
2015-03-26 12:22:43 -07:00
Nicolas Dufresne
32aed67144 rtspsrc: Remove useless function
This function didn't do anything special, let's not use a function for
that.
2015-03-25 15:28:24 -04:00
Nicolas Dufresne
12762ad1a5 rtpjitter: Account for rtx_retry in overflow check
As rtx_retry is part of the substraction, we need to take it into
account, otherwise we may endup with a big value.
2015-03-25 15:25:56 -04:00
Nicolas Dufresne
8afc8c8f3b rtspsrc: Fix seeking query
The segment start/stop in the query is meant to represent the seekable
portion of the stream. It does not match the segment start/stop. Instead
export 0 to duration.
2015-03-24 16:51:12 -04:00
Sebastian Dröge
ac0141b6a0 flvdemux: Only set caps once if they don't change
Previously we were setting new caps with the same content for every H264 or
AAC codec_data we found in the stream, spamming everything and causing
renegotiations.
2015-03-24 16:18:53 +01:00
Sebastian Dröge
c9b42951fe flvdemux: Don't create AAC/H264 caps without codec_data
Instead delay creating the caps until we read the codec_data from the stream,
or fail if we get normal data before the codec_data.

AAC raw caps and H264 avc caps always need codec_data, setting caps on the pad
without them is going to make negotiation fail most of the time. Even if we
later set new caps with the codec_data, that's usually going to be too late.

https://bugzilla.gnome.org/show_bug.cgi?id=746682
2015-03-24 16:15:04 +01:00
Sebastian Dröge
5e88b53212 flvdemux: Fix indention 2015-03-24 15:39:40 +01:00
Sebastian Dröge
0e3609a6e1 rtpsession: Fix another instance of sticky event misordering warnings
Make sure that the sync_src pad has caps before the segment event.
Otherwise we might get a segment event before caps from the receive
RTCP pad, and then later when receiving RTCP packets will set caps.
This will results in a sticky event misordering warning

This fixes warnings in the rtpaux unit test but also in the
rtpaux and rtx examples in tests/examples/rtp

https://bugzilla.gnome.org/show_bug.cgi?id=746445
2015-03-21 19:30:32 +01:00
Sebastian Dröge
17d90b453f rtpsession: Also start the RTCP send thread when receiving RTP or RTCP
Before we only started it when either:
- there is no send RTP stream
or
- we received an RTP packet for sending

This could mean that if the send RTP pads are connected but never receive any
RTP data, and the same session is also used for receiving RTP/RTCP, we would
never start the RTCP thread and would never send RTCP for the receiving part
of the session.

This can be reproduced with a pipeline like:

gst-launch-1.0 rtpbin name=rtpbin \
udpsrc port=5000 ! "application/x-rtp, media=video, clock-rate=90000, encoding-name=H264" ! rtpbin.recv_rtp_sink_0 \
udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \
rtpbin.send_rtcp_src_0 ! fakesink name=rtcp_fakesink silent=false async=false sync=false \
rtpbin.recv_rtp_src_0_2553225531_96 ! decodebin ! xvimagesink \
fakesrc ! valve drop=true ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! fakesink name=rtp_fakesink silent=false async=false sync=false -v

Before this change the rtcp_fakesink would never send RTCP for the receiving
part of the session (i.e. no receiver reports!), after the change it does.

And before and after this change it would send RTCP for the receiving part of
the session if the sender part was omitted (the last two lines).
2015-03-21 17:38:07 +01:00
Sebastian Dröge
1018aacb35 rtprtxsend: Add support for buffer lists 2015-03-19 11:54:37 +01:00
Sebastian Dröge
57ff27f8c8 rtprtxqueue: Implement support for buffer lists 2015-03-19 11:54:37 +01:00
Nicolas Dufresne
1c27002ebd rtspsrc: Improve trace readability
Change the command number into strings.
2015-03-18 17:32:36 -04:00
Jan Alexander Steffens (heftig)
be8e3196a3 flvdemux: Don't repeatedly warn after no_more_pads (v2)
This can get rather spammy for such a high log level.
Only warn once per stream.

https://bugzilla.gnome.org/show_bug.cgi?id=746274
2015-03-16 12:01:43 +00:00
Jan Alexander Steffens (heftig)
ac8a272381 flvdemux: Introduce constant for no-more-pads threshold
https://bugzilla.gnome.org/show_bug.cgi?id=746274
2015-03-16 12:01:43 +00:00
Jan Alexander Steffens (heftig)
f2a1f74cec flvdemux: Fix warning to contain 'video'
https://bugzilla.gnome.org/show_bug.cgi?id=746274
2015-03-16 12:01:43 +00:00
Nicola Murino
bb3d82ef04 matroskademux: for dts only stream set pts=dts for intra only formats
https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-03-15 14:28:36 +00:00
Ramiro Polla
0fad053497 matroskademux: fix sending of tags
* Fix critical when new tags are found after segment event has already
  been sent.
* Send global tags before stream tags.
* Split sending of tags out of gst_matroska_demux_send_event() into its
  own function.

https://bugzilla.gnome.org/show_bug.cgi?id=745973
2015-03-14 18:17:48 +00:00
Ramiro Polla
90be7b4e1e rtspsrc: properly escape percent sign in documentation 2015-03-14 14:22:39 +00:00
Ramiro Polla
63944753b0 rtpdtmfmux: properly escape percent sign in documentation 2015-03-14 14:22:26 +00:00
Tim-Philipp Müller
3c595f308a multiudpsink: fix crash with GST_DEBUG enabled
g_inet_socket_address_get_address() does not give
us a ref to the address, so don't unref it.
2015-03-13 18:38:42 +00:00
Sebastian Dröge
7b90bf3215 level: Don't read over the end of the input memory
Previously we advanced the in_data pointer by bps for every channel, and then
later again for block_size*bps. This caused us to be one sample further than
expected if an input buffer covered two analysis frames. And in the end lead
to completely bogus values reported by level.

https://bugzilla.gnome.org/show_bug.cgi?id=746065
2015-03-12 13:51:56 +00:00
Tim-Philipp Müller
c4fa54da17 Fix double semicolons 2015-03-10 09:31:20 +00:00
Jan Schmidt
d441140cd6 splitmux: Shut down element before downward state change
Make sure the state change won't hang trying to shut down pads
by making sure the streaming has stopped before chaining up.
2015-03-10 15:49:33 +11:00
Luis de Bethencourt
823194284c rtph264depay: remove unused value
CID #1226474
2015-03-09 16:22:33 +00:00
Luis de Bethencourt
5cd293fe76 rtph263pay: fix leak
CID 1212156
2015-03-09 16:17:45 +00:00
Luis de Bethencourt
e87113781a rtph263pay: remove uneeded variable
We just need to save the ebit information in case there is an error decoding.
2015-03-09 16:17:45 +00:00
Luis de Bethencourt
db3ade5bfb matroska: error mode if can't push buffer
If gst_pad_push() fails, inform and return flow error.
2015-03-09 12:51:21 +00:00
Luis de Bethencourt
f494da89b4 matroska: unused value
Value set in ret will be overwritten just before exiting the function.

CID #1226469
2015-03-09 12:13:40 +00:00
Sebastian Dröge
9e934d076b rtpjitterbuffer: Drop packets with sequence numbers before the seqnum-base
These are outside the expected range of sequence numbers and should be
clipped, especially for RTSP they might belong to packets from before a seek
or a previous stream in general.
2015-03-09 11:10:35 +01:00
Linus Svensson
398296d978 rtspsrc: Don't include payload type in the caps for framesize
When the sdp media attribute framesize are converted to caps
the <payload> should not be included.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725335
2015-03-09 10:18:35 +01:00
Sebastian Dröge
38bf3d3808 rtpjitterbuffer: Don't forget to unlock the mutex when receiving GAPs in TCP streams 2015-03-09 10:05:14 +01:00
Mark Nauwelaerts
d0587467fc avidemux: resurrect some flow return handling 2015-03-07 20:22:33 +01:00
Nicolas Huet
5ead23a14a aacparse: fix LOAS parsing issue
Fix missing index in syncword searching

https://bugzilla.gnome.org/show_bug.cgi?id=745585
2015-03-06 14:34:08 -03:00
Jan Schmidt
b0ce43cde3 splitmuxsink: Protect property variables with the object lock.
Use the object lock instead of the splitmux lock to protect
internal property variables, so they're not locked when
switching to a new file.

https://bugzilla.gnome.org/show_bug.cgi?id=744420
2015-03-07 00:55:47 +11:00
Sebastian Dröge
c34a7cb90d rtspsrc: Fix handling of interleaved (TCP) streams
We need to set up the transport in any case, not just if we have a container
stream or a non-interleaved stream. Only if we have an interleaved stream and
are retrying, we should not set up the stream again.

https://bugzilla.gnome.org/show_bug.cgi?id=745599
2015-03-05 12:15:04 +01:00
Sebastian Dröge
b4aaa11f97 rtspsrc: Don't unref caps we don't own 2015-03-05 09:56:37 +01:00
Sebastian Dröge
297d808acc rtspsrc: Push RTCP caps on the RTCP pads
Otherwise we will get not-negotiated later from rtpbin, and will never be able
to send RTCP packets back to the server. Note that error flow returns from the
RTCP pads are ignored, that's why it didn't fail more visible before.
2015-03-05 09:47:29 +01:00
Sebastian Dröge
788074733c rtspsrc: Make sure to send SEGMENT events on all pads 2015-03-05 09:47:29 +01:00
Santiago Carot-Nemesio
e05378ec16 rtp: Add Full Intra Request (FIR) packets to statistics
https://bugzilla.gnome.org/show_bug.cgi?id=745587
2015-03-04 12:04:40 +01:00
Santiago Carot-Nemesio
22791413f9 rtp: Add Packet Loss Indication (PLI) to statistics
This is helpful to provide statistics in the format defined in
http://w3c.github.io/webrtc-stats/#dictionary-rtcrtpstreamstats-members.

https://bugzilla.gnome.org/show_bug.cgi?id=745587
2015-03-04 12:04:07 +01:00
Nicola Murino
c4e542de69 matroskamux: Remove duration accumulation logic
Duration accumulation can cause rounding errors and generate wrong
duration with different buffers that share the same timestamp.

https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-03-04 11:37:48 +01:00
Nicola Murino
f727762c1f matroska: Add an helper method to get buffer timestamps
... and replace GST_BUFFER_TIMESTAMP that always return PTS with this method
that return PTS or DTS based on stream type.

https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-03-04 11:36:24 +01:00
Sebastian Dröge
8984e18ef7 rtpsession: Add explanation why we have space for 32 hash tables
And also create only one, there's no need yet to create all 32 until
we implement RFC2762.
2015-03-04 11:30:43 +01:00
Sebastian Dröge
af2bdd6e15 Revert "rtpsession: Do not use an array of maps if they are not being used"
This reverts commit 1591adf4cd.

https://bugzilla.gnome.org/show_bug.cgi?id=745586#c1:
It's the beginning of an implementation of RFC 2762, which is needed for
large multicast groups. The implementation is not yet complete but why
not leave what is there and implement RFC 2762 instead?
2015-03-04 11:26:57 +01:00
Santiago Carot-Nemesio
1591adf4cd rtpsession: Do not use an array of maps if they are not being used
rtpsession declares an array of maps to store srrcs but only the
the key 0 is being used. This patch replaces the array of maps
for just one map and remove useless parameters in rtpsession

https://bugzilla.gnome.org/show_bug.cgi?id=745586
2015-03-04 11:25:30 +01:00
Jimmy Ohn
42599eab76 avidemux: remove not needed code
In gst_avi_demux_handle_src_query, there is not needed code.
We already check about stream is vbr or not at the upper line.
o, we don't need to check this condition becase stream is not
vbr 100% in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=745276
2015-03-04 10:08:21 +01:00
Matej Knopp
f75e443a7a qtdemux: fix key unit seek
Unlike many other seek flags, the KEY_UNIT seek
flag is not copied over into the GstSegment,
since it's only relevant for the seek itself,
so we need to pass it explicitly to the seek
handler here.

https://bugzilla.gnome.org/show_bug.cgi?id=745339
2015-03-01 13:06:55 +00:00
Nicola Murino
e676b8ba9c matroskamux/demux: initialize dts_only
https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-02-27 09:56:06 +02:00
Nicola Murino
09b8f0efc3 matroskamux: store DTS for V_MS/VFW/FOURCC streams
https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-02-27 09:56:06 +02:00
Tim-Philipp Müller
f5b511b42b multifile: attempt to fix docs build issue on build bot 2015-02-26 19:48:33 +00:00
Arun Raghavan
0c06553fb2 interleave: Drop custom latency query handling
This is implemented by the default query handler now.
2015-02-27 00:59:43 +05:30
Arun Raghavan
dbc142afec videomixer: Drop custom latency querying logic
This is now implemented in the default latency query handler.
2015-02-27 00:59:43 +05:30
Sebastian Rasmussen
d331d931db rtpvorbispay: fix payloader description and author e-mail
https://bugzilla.gnome.org/show_bug.cgi?id=745226
2015-02-26 15:57:08 +00:00
Matej Knopp
fa283f407f matroskademux: V_MS/VFW/FOURCC streams have DTS instead of PTS
When such stream is present demuxer should set DTS on buffers instead
of PTS. This is consistent with how VLC and libav/ffmpeg handle VFW
streams.

Sample file
https://s3.amazonaws.com/MatejK/Samples/Matroska-VFW-DTS-Only.mkv

https://bugzilla.gnome.org/show_bug.cgi?id=745192
2015-02-26 11:12:34 +02:00
Krzysztof Kotlenga
e3ca4d1c86 rtspsrc: improve error message when unauthorized
Make use of NOT_AUTHORIZED error code instead of falling back to generic
READ error.

https://bugzilla.gnome.org/show_bug.cgi?id=601733
2015-02-24 11:08:27 +02:00
Thibault Saunier
fa0870658d qtdemux: All segment resulting from a seek should have the same seqnum
https://bugzilla.gnome.org/show_bug.cgi?id=744983
2015-02-23 20:05:20 +01:00
Vincent Penquerc'h
dc73d153cb rtpvp8pay: default encoding name to VP8
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 14:29:02 +00:00
Vincent Penquerc'h
b88ea286d2 rtpvp8pay: make caps writable before truncating them
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 14:06:51 +00:00
Vincent Penquerc'h
b866c989f5 rtpvp8pay: negotiate encoding name
Chrome uses a different one than gstreamer.

https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 13:52:29 +00:00
Sebastian Dröge
939a95d44b rtpsession: Send initial events on sync_rtcp pad when using RTP/RTCP muxing
Otherwise we will just send buffers on the pad without any events beforehand
and will get g_warnings() about that.
2015-02-19 13:34:47 +02:00
Thiago Santos
84b7cf6795 qtmux: remove not needed condition
gst_buffer_replace can handle NULL inputs by itself
2015-02-18 10:36:06 -03:00
Thiago Santos
a12e41c106 qtdemux: prefer the tfdt timestamp over the buffer's that is less accurate
The tfdt should be more accurate as the buffer timestamp is provided
by the fragmented format manifest and it might just be an approximation.
2015-02-18 09:57:48 -03:00
Sebastian Dröge
735c6c40f8 rtpjitterbuffer: When resetting the jitterbuffer because of packet discont, don't flush sticky events
We will otherwise flush away STREAM_START, CAPS or SEGMENT events and will
confuse downstream with buffers that come before such events.
2015-02-17 16:57:55 +02:00
Edward Hervey
6798dc7912 isomp4: Redefine gst_isoff_ symbols to gst_isoff_qt_
We need different symbol names, because these symbols are also present
in the fragmented plugin ... which will cause conflicts when doing
static linking
2015-02-17 12:31:06 +01:00
Luis de Bethencourt
ea1d67abe3 goom2k1: use fractional part of float division 2015-02-16 14:31:05 +00:00
Luis de Bethencourt
4af5a2b760 splitmuxsin: remove dead code
Every instance of goto beach has buf_info equal NULL. Don't check
for a condition that never happens.

CID #1268399
2015-02-16 13:59:17 +00:00
Nicolas Dufresne
b8142bde07 spectrum: Fix min and max for bands property
The number of FFTs is calculated with the following formula:

  guint nfft = 2 * bands - 2;

nfft is passed to gst_fft_f32_new() as the len argument and is of type
unsigned integer. This method required that len is at leas 1, then
maximum G_MAXINT, as other values would be negative. If we extrapolate
from the formula above it means we need "bands" to be between 2 and
((guint)G_MAXINT + 2) / 2).

https://bugzilla.gnome.org/show_bug.cgi?id=744213
2015-02-15 21:34:28 -05:00
Thiago Santos
afa5481c50 qtdemux: do not use sparse streams in push-based seeking
Using the sparse streams can make the push-based seeking return
too far in the stream. It also can lead to issues as the
sparse streams will be ignored when restarting playback and,
 if the sparse stream is the one that has the earliest sample,
it will confuse qtdemux's offsets as one stream will have
an earlier offset than the demuxer's one which might lead to
early EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=742661
2015-02-14 11:36:11 -03:00
Tim-Philipp Müller
3f5b690e78 splitmuxsink: flag as sink from the start 2015-02-13 20:40:48 +00:00
Philippe Normand
3a9b0188cd qtdemux: Initial 'sidx' atom parsing support
Parse the 'sidx' atom and update the total duration according to the
parser result. The isoff parser code is imported from
gst-plugins-bad's dashdemux and a gst_isoff_sidx_parser_add_data()
function was factored out of the gst_isoff_sidx_parser_add_buffer()
function.

https://bugzilla.gnome.org/show_bug.cgi?id=743578
2015-02-12 14:23:21 -03:00
Jan Schmidt
2e00311fe1 flvdemux: Use gst_video_guess_framerate()
Use gst_video_guess_framerate() from libgstvideo to guess
sensible common framerates where possible from the
floating point fps in the stream.
2015-02-12 23:38:47 +11:00
Sebastian Dröge
f4b5107796 Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 13:53:02 +01:00
Sebastian Dröge
b79eff7f9b rtpsession: Handle first RTCP packet and early feedback correctly
According to RFC 4585 section 3.5.3 step 1 we are not allowed to send
an early RTCP packet for the very first one. It must be a regular one.

Also make sure to not use last_rtcp_send_time in any calculations until
we actually sent an RTCP packet already. In specific this means that we
must not use it for forward reconsideration of the current RTCP send time.
Instead we don't do any forward reconsideration for the first RTCP packet.
2015-02-11 10:32:46 +01:00
Wim Taymans
009a62fddb rtph263depay: fix compilation with gcc 5.0 2015-02-10 18:54:24 +01:00
Tim-Philipp Müller
90badeebad splitmuxsink: fix example pipeline properly
x264enc might not have a max-key-int property, but it
has a key-int-max property...
2015-02-10 16:00:07 +00:00
Luis de Bethencourt
102ae8511a splitmux: fix typo 2015-02-10 14:57:55 +00:00
Luis de Bethencourt
12aa2428e0 splitmux: update example pipeline
Element x264enc doesn't have a max-key-int property
2015-02-10 14:56:23 +00:00
Luis de Bethencourt
0373fd8f65 splitmux: fix memory leak
If execution goes to the beach in line 981, buf_info goes out of scope without
the memory being free'd. Handle this case.

CID #1268403
2015-02-10 13:33:09 +00:00
Tim-Philipp Müller
603c1d71a1 rtspsrc: fix awkward if clause 2015-02-08 12:03:10 +00:00
Jan Schmidt
8ceb58122e splitmux: Add unit test for file splitting
Add a unit test for file splitting, and fix the leaks in the
splitmuxsink it found
2015-02-07 03:58:30 +11:00
Luis de Bethencourt
eb975ce880 wavparse: fix which stop variable is used in assignment
Assignment is done to variable segment.stop when the intention was to assign to
local variable stop. Instead of overwriting it, the value is now clamped and
segment.stop is set to it soon after.

CID #1265773
2015-02-06 14:46:14 +00:00
Jan Schmidt
aa4c29c5d6 splitmux: Fix memory leaks until the test valgrinds clean 2015-02-07 00:19:36 +11:00
Jan Schmidt
ace6be8abb splitmux: Handle early EOS during part preparation
Handle the case where a short file reaches EOS while we're still
waiting for no-more-pads, and make sure we continue to the internal
READY state for real playback to work properly later.
2015-02-06 06:42:17 +11:00
Jan Schmidt
5e2214d309 splitmux: Implement new elements for splitting files at mux level.
Implement 2 new elements - splitmuxsink and splitmuxsrc.

splitmuxsink is a bin which wraps a muxer and takes 1 video stream,
plus audio/subtitle streams, and starts a new file
whenever necessary to avoid overrunning a threshold of either bytes
or time. New files are started at a keyframe, and corresponding audio
and subtitle streams are split at packet boundaries to match
video GOP timestamps.

splitmuxsrc is a corresponding source element which handles
the splitmux:// URL and plays back all component files,
reconstructing the original elementary streams as it goes.
2015-02-06 04:26:59 +11:00
Thiago Santos
a6d73797d0 rtph264depay: 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

https://bugzilla.gnome.org/show_bug.cgi?id=737199
2015-02-04 21:37:50 -03:00
Jan Schmidt
a3059bec1f qtdemux: Simple implementation of GST_SEGMENT_FLAG_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
2015-02-04 21:58:31 +11:00
Wim Taymans
852c040c89 rtspsrc: fix container handling
We detect a container correctly now so we need to revert the weird
check there was before.
Use gst_rtspsrc_stream_push_event() to push the caps event on the
right pad.

See https://bugzilla.gnome.org/show_bug.cgi?id=739391
2015-02-03 17:39:10 +01:00
Thiago Santos
7772a25fdc matroskamux: store and write stream tags
Separate global from stream tags storage and write them to the
appropriate tags entry in the output
2015-02-02 20:07:13 -03:00
Thiago Santos
75dee31b0d qtdemux: parse stream tags
Keep global and stream tags separately and parse the udta node
that can be found under the trak atom. The udta will contain
stream specific tags and will be pushed as such

https://bugzilla.gnome.org/show_bug.cgi?id=692473
2015-02-02 14:05:51 -03:00
Thiago Santos
e52b2cb2cf qtmux: store stream and container tags separately
Tags received via events, when marked as stream tags, will
be stored on that stream's trak atom instead of being stored
in the main tags atom. This allows the resulting file to have
global and stream tags stored.

https://bugzilla.gnome.org/show_bug.cgi?id=692473
2015-01-31 17:23:01 -03:00
Thiago Santos
6321cdedb3 qtmux: refactor tags functions to accomodata UDTA at trak level
Refactor the functions that were bound to the 'moov' atom to
directly pass the desired 'udta' that should receive the tags.
This allows the tags to be written to 'udta' at the 'moov' or
the 'trak' level, creating tags that are for the container or
for a stream only.

https://bugzilla.gnome.org/show_bug.cgi?id=692473
2015-01-31 17:22:57 -03:00
Thiago Santos
f0fde8be88 qtmux: map application name to _swr tag
It refers to the application name and version used to create the
file

https://bugzilla.gnome.org/show_bug.cgi?id=692473
2015-01-31 17:22:44 -03:00
Jan Schmidt
4a77c8a84f matroska: Fix seeking past the end of the file in reverse mode.
Snap to the end of the file when seeking past the end in reverse mode,
and also fix GST_SEEK_TYPE_END and GST_SEEK_TYPE_NONE handling
for the stop position by always seeking on a segment in stream time
2015-01-31 06:15:44 +11:00
Sebastian Dröge
075eb10e65 rtpsession: Fix signal name
This wasn't meant to be pushed at all yet, but now that it's there
already it won't hurt to make it correct at least.
2015-01-30 18:22:31 +01:00
Sebastian Dröge
ec99bbb5e1 rtpstats: Fix typo in documentation 2015-01-30 16:56:35 +01:00
Sebastian Dröge
77511b156e rtpsession: Add new on-receiving-rtcp signal
This will be emitted whenever an RTCP packet is received. Different to
on-feedback-rtcp, this signal gets every complete RTCP packet and not
just the individual feedback packets.
2015-01-30 16:50:36 +01:00
Thiago Santos
9a9d4eccea qtdemux: simplify segment.base math
Remove a fix for heavily edited files added for fixing
https://bugzilla.gnome.org/show_bug.cgi?id=345830 to work
with seeks and proper gaps playback. The fix was replaced
for a more general solution that bases on using previous
segment's duration, just like it works for media segments
playback.

https://bugzilla.gnome.org/show_bug.cgi?id=743518
2015-01-28 15:20:58 -03:00
Luis de Bethencourt
5ff1229754 videomixer: update orc files 2015-01-27 14:00:35 +00:00
Thiago Santos
2586a219f6 qtdemux: Fix data dropping for fragmented streams
For fragmented streams with extra data at the end of the mdat
qtdemux was not dropping those bytes and would try to use
that extra data as the beginning of a new atom, causing the
stream to fail.

https://bugzilla.gnome.org/show_bug.cgi?id=743407
2015-01-27 08:54:19 -03:00
Sebastian Dröge
e4ed852041 rtpsession: Deprecate rtcp-immediate-feedback-threshold property
It had no effect since quite some time and also is not needed in general,
especially not to switch between immediate feedback mode and early feedback
mode. The latest understanding of the RFC is that from the endpoint point of
view, both modes are exactly the same. RTCP is only allowed to use the
bandwidth as given by the RFC constraints, as such it is only ever possible
to schedule a RTCP packet early but it's against the RFC to schedule more RTCP
packets.

The difference between immediate feedback mode and early feedback mode is that
the former guarantees that an RTCP packet can be sent for every event
"immediately", which means that the bandwidth calculations from the RFC have
resulted in an RTCP scheduling interval that is small enough. Early feedback
mode on the other hand means that we can schedule some packets early to make
that happen, but it's not guaranteed at all that it's possible to schedule
an RTCP packet per event (i.e. they need to be accumulated or dropped).
2015-01-26 18:49:31 +01:00
Sebastian Dröge
b07b7736b3 rtpsession: Delay the next regular RTCP packet after early RTCP
This is required to not exceed the short term average RTCP bitrate when
using early feedback as compared to without early feedback.
2015-01-26 18:49:31 +01:00
Sebastian Dröge
bc9111a03d rtpsession: Add new send-rtcp-full signal
This indicates with a boolean return value if scheduling a new RTCP packet
within the requested delay was possible. Otherwise it behaves exactly like
send-rtcp. The only reason for adding a new signal is ABI compatibility.
2015-01-26 18:49:31 +01:00
Luis de Bethencourt
1e15808563 matroskademux: remove unnecessary check
No matter if gst_matroska_read_common_parse_index_cuetrack () returns that the
flow is OK or not, the check there will be a break from the switch. Removing the
check since the outcome is the same.

CID #1265762
2015-01-23 17:35:51 +00:00
Edward Hervey
932b32bb6e matroskamux: Avoid using freed variable
the name variable might have been attributed to pad_name, make sure we
free it only *after* pad_name has been used.

Coverity CID : 1265774
2015-01-23 15:16:25 +01:00
Edward Hervey
8abfd9d720 avimux: Avoid using freed variable
the name variable might have been attributed to pad_name, make sure we
free it only *after* pad_name has been used.

Coverity CID : 1265775
2015-01-23 15:15:07 +01:00
Sebastian Dröge
60e2d0c84f rtpsession: Fix indention 2015-01-22 11:03:25 +01:00
Edward Hervey
7203c4751c qtdemux_dump: Bypass even more code if debugging is disabled
And avoid using variables that won't exist when debugging is disabled
2015-01-21 17:36:26 +01:00
Edward Hervey
906f4c4360 qtdemux: Only traverse/dump nodes if guaranteed to be used
__gst_debug_min is the "global" lowest debug level set. There's no
guarantee the qtdemux debug category is actually set at that level.
2015-01-21 15:32:01 +01:00
Edward Hervey
9fa85f72e1 matroska: Avoid debugging below category threshold
This part alone was what made the matroska thread take a full core
on an android phone ...
2015-01-21 15:26:41 +01:00
Sebastian Dröge
d5aab81a77 Constify some static arrays everywhere 2015-01-21 09:55:53 +01:00
Vincent Penquerc'h
d854cfff9d qtdemux: fix deadlock seeking in files without seek entries
A mutex unlock was missing.

https://bugzilla.gnome.org/show_bug.cgi?id=739975
2015-01-19 17:49:54 +00:00
Vincent Penquerc'h
84c44fceac videomixer: fix illegal memory access in blend function with negative ypos
https://bugzilla.gnome.org/show_bug.cgi?id=741115
2015-01-19 12:34:25 +00:00
Sebastian Dröge
dc2251a664 qtmux: Add support for v210 2015-01-13 19:05:40 +01:00
Sebastian Dröge
b7134435ee qtdemux: v210 is v210, not UYVY and yuv2 is YUY2, not I420
Also add a few other raw video formats we support: v308, v216
and add comments for a few others we don't support yet.

https://developer.apple.com/library/mac/technotes/tn2162/
2015-01-13 19:05:40 +01:00
Thiago Santos
3e0be85840 qtdemux: fix stream time conversion
Use the right macro to convert to the correct scale or the
segment information will be wrong

https://bugzilla.gnome.org/show_bug.cgi?id=742572
2015-01-09 11:40:40 -03:00
Matej Knopp
ff5b235c32 ac3parse: request at least 8 bytes to properly parse header
https://bugzilla.gnome.org/show_bug.cgi?id=742325
2015-01-08 14:45:23 +01:00
Michael Smith
e8f3d596bc wavparse: skip an additional uninteresting chunk type before the fmt chunk. 2015-01-07 16:20:03 -08:00
Luis de Bethencourt
42535107ca audiodynamic: assert func_index is inside bounds
Bringing back the check removed in the previous commit but have that check be a
g_assert. Changing the function to static void since return can never be False,
because audio format will never be unkown.
2015-01-07 18:16:12 +00:00
Luis de Bethencourt
1db92a91de audiodynamic: remove always-true conditional
func_index is set by the sum of three ternary operators which add, 0:4, 0:2,
and 1:0. Minimum value would be 0+0+0=0, and maximum would be 4+2+1=7.
The conditional checking if func_index is >= 0 and < 8 will always be true.
Removing it.

CID 1226442
2015-01-07 17:31:39 +00:00
Sebastian Dröge
87c8c163a8 rtpjitterbuffer: If we get a gap with a buffer without DTS, error out
We (currently?) can't really handle gaps between RTP packets if they're not
properly timestamped. The current code would go into calculations with
GST_CLOCK_TIME_NONE and then cause assertions everywhere. It's probably
better to error out cleanly instead.
2015-01-07 18:05:18 +01:00
Aleix Conchillo Flaqué
07c5d1820a rtspsrc: set PLAYING state after configuring caps
We set to PLAYING after we have configured the caps, otherwise we
might end up calling request_key (with SRTP) while caps are still
being configured, ending in a crash.

https://bugzilla.gnome.org/show_bug.cgi?id=740505
2014-12-31 12:49:11 +00:00
Sebastian Dröge
67d4b85d6a matroskademux: Improve detection of being stuck at the same offset
Only error out if we read from the same position again and got the
same length. Just the same position is not necessarily enough.
2014-12-29 15:35:19 +01:00
Sebastian Dröge
e596a3b6a7 matroskademux: Don't get stuck at the same offset when searching for clusters
This could happen if there is an invalid cluster with size 0, and in that
case just error out instead of looping forever.
2014-12-29 15:02:52 +01:00
Tim-Philipp Müller
aa94fc6beb qtmux: fix ALAC muxing
Actually copy the codec data instead of copying nothing
and then bombing out because there's no data.

Fixes: gst-launch-1.0 audiotestsrc ! avenc_alac ! qtmux ! fakesink

https://bugzilla.gnome.org/show_bug.cgi?id=741783
2014-12-25 21:37:49 +00:00
Tim-Philipp Müller
c62209d050 rtpptdemux: just drop invalid rtp packets instead of erroring out
Apparently linphone sends an invalid RTP packet as very
first packet. We want to ignore that instead of erroring
out (same for any other invalid packets really).

https://bugzilla.gnome.org/show_bug.cgi?id=741398
2014-12-25 15:48:04 +00:00
Tim-Philipp Müller
bcad30510b rtpptdemux: fix 0.10-ism in docs 2014-12-25 15:44:15 +00:00
Edward Hervey
cbe56d2331 matroska-demux: Cache upstream length
Instead of constantly querying upstream, just cache the last duration,
and in the unlikelyness we might have gone over query again before
deciding we are EOS.

Cut 15% cpu off matroskademux streaming thread (srsly...)
2014-12-19 10:59:18 +01:00
Vincent Penquerc'h
b7413279d9 matroska: mux/demux the OpusHead header
This is meant to be so (https://wiki.xiph.org/MatroskaOpus - while
it is marked as a draft, this part was confirmed to be correct on
IRC), and allows one to determine whether a demuxed stream is
multistream or not, and thus set the multistream caps field
accordingly. In turn, this means downstream does not have to guess.

https://bugzilla.gnome.org/show_bug.cgi?id=740744
2014-12-18 11:38:49 +00:00
Sebastian Dröge
d18b893d28 rtspsrc: Don't dereference NULL if a suitable stream for the AUX element can't be found
CID 1258717
2014-12-18 11:51:12 +01:00
Tim-Philipp Müller
4dd7d79b52 udpsink: allocate scratch space for render functions on the heap
and not the stack. Our allocations could get a bit too large
to be sure it's not going to cause trouble using the stack.
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
97a2eb7afb multiudpsink: re-use send_buffers() code path for render() function
It's like rendering a buffer list, just with one buffer.
Has the added advantage that if there are multiple clients
we can send the buffer to all the clients in one go.
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
54a9a436ba multiudpsink: keep client list consistent during removals
We unlock and re-lock the client lock while emitting the
removed signal, which causes inconsistencies in the client
list vs. the client counts. Instead, remove the client from
the list already before emitting the signal and put it into
a temporary list of clients to be removed. That way things
look consistent to the streaming thread, but signal callbacks
can still do things like get stats from removed clients.
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
fa3ef2e54c multiudpsink: fix client count after removal 2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
7bdf7500a1 multiudpsink: keep client list sorted by socket family
We make use of in the send_buffers() function if we
need to use different sockets to send to IPv4 and
IPv6 destinations.
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
e1a7deb27f multiudpsink: add sendmmsg-ready render_list function prototype
Add prototype for a render_list() function that can use a
sendmmsg-style g_socket_send_messages() function once it lands
in GLib. We can use this infrastructure to send multiple buffers
made up by multiple memories to multiple clients in one go, which
drastically reduces the number of syscalls made when sending
high-bitrate video streams.

https://bugzilla.gnome.org/show_bug.cgi?id=732152
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
dead5c2476 multiudpsink: make udp client structure refcounted
Use the refcount for memory management and keep track
of the number of duplicate clients in a separate
variable. This will be useful later, and means we
don't have to hold the OBJECT_LOCK all the time.

https://bugzilla.gnome.org/show_bug.cgi?id=732866
2014-12-16 20:26:36 +00:00
Tim-Philipp Müller
675384a8cb multiudpsink: keep count of number of unique and non-unique IPv4 and IPv6 clients
This will come in handy later.
2014-12-16 20:26:36 +00:00
Sebastian Dröge
6b2fc2de8d rtspsrc: Add something to the debug logs if an RTX AUX element can't be added
... because the application already has a signal handler set up here.
2014-12-16 16:40:08 +01:00
Matthew Waters
bf0a19bf02 rtspsrc: add retransmission support according to RFC4588
Based on the client-rtpaux example
2014-12-16 16:40:08 +01:00
Nicolas Dufresne
9c468ef2da videocrop: Remove todo about caps filter
The filter is already interected.
2014-12-15 18:30:01 -05:00
Nicolas Dufresne
36f1a9bce1 videocrop: Make sure new crop is applied
Since "basetransform: Fix caps equality check" commit a7f357,
set_info() will not be called anymore if crop didn't change
the caps. This is fixed by setting "need_update" boolean when
cropping properties has been changed, and then applying these
if they where not applied before rendering the next frame. This
patch also fixed the locking, dropping un-needed custom lock,
and no holding needless lock while doing the operation as we
already hold the streaming lock.

https://bugzilla.gnome.org/show_bug.cgi?id=740787
2014-12-15 18:27:09 -05:00
Thibault Saunier
76944350c0 Deinterlace: in query_caps return only supported formats if filter is interlaced
In some cases the currently set GstVideoInfo is not interlaced, but
upstream caps are interlaced and the info is passed in the filter,
we should take that info into account and make sure that we do not
consider that case as a "pass through" case.

https://bugzilla.gnome.org/show_bug.cgi?id=741407
2014-12-14 12:41:16 +01:00
Edward Hervey
6b69ef24a1 qtdemux: Fix debug statement
It was using the non-increasing offset variable, which made that statement
not so useful :)
2014-12-12 11:06:17 +01:00
Edward Hervey
d1ae39d6d6 qtdemux: Add macros for the various timescale conversions
This helps make the code more readable and avoid future bad usage of
scaling function argument order.
2014-12-12 11:03:15 +01:00
Patrick Radizi
0a359cdbdc rtph264pay: 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_h264_pay_send_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
2014-12-11 14:00:19 +00:00
Jan Schmidt
de8d00348e qtdemux: Copy flags of the overall segment to output segments
Preserve the segment flags of the overall demux segment on the output
segments for each pad.
2014-12-12 00:56:49 +11:00
Matej Knopp
2505e343b1 qtmux: use 64bit chunk_offset
https://bugzilla.gnome.org/show_bug.cgi?id=741279
2014-12-10 18:42:30 -03:00
Edward Hervey
9a903c994f qtdemux: Fix rounding errors in duration update
Make sure we store updated segment stop/duration with the same
granularity as the duration timescale.

And add more debug
2014-12-10 17:39:17 +01:00
Edward Hervey
b40cfcfffb qtdemux: Update duration when we get more information
When dealing with fragmented files, we will get more accurate duration
information via the mfra and moof atoms.

In order for playback to not stop at the initial duration (from the
moov atom), we need to check and update the various duration variables
when we find more information.

Fixes playback of fragmented files in pull mode
2014-12-10 16:55:44 +01:00
Edward Hervey
799609583e qtdemux: Remove variable assignments never read
As detected by clang/scan-build
2014-12-10 15:09:25 +01:00
Edward Hervey
7828f73516 qtdemux: Use GstClockTime for nanosecond-based time variables/fields
Avoids confusion with timescaled-based variables and bytes (offset)
variables.
And use GST_CLOCK_TIME_NONE where applicable
2014-12-10 15:09:25 +01:00
Edward Hervey
0a381b9edd pushfilesrc: Add TIME SEGMENT capability
Adds a new set of properties to make pushfilesrc output a TIME SEGMENT
(instead of the filesrc BYTE SEGMENT).

When time-segment is set to True the following will happen:
* Seeks are refused (data starts from the beginning of the file)
* The BYTE segment will be replaced by a TIME segment with the values
  specified in the various properties
* The first outgoing buffer will have a timestamp set on it (by default
  it has a value of GST_CLOCK_TIME_NONE)
2014-12-10 15:09:25 +01:00
Sebastian Dröge
f5d26af3c9 aacparse: Also only unref caps if they're not NULL 2014-12-10 11:35:29 +01:00
Sebastian Dröge
6d6c6aac13 aacparse: gst_pad_get_allowed_caps() will return NULL if there is no peer 2014-12-10 11:35:02 +01:00
Thibault Saunier
52a1773b40 rtpsession: Use an empty iterator in iterate_internal_link when no links
And not a NULL Iterator, so it is consistent with the way it usually
works and avoid user to need a different code paths to handle that.
2014-12-09 20:38:22 +01:00
Patrick Radizi
fef1a8d88a rtph264pay: Fixes buffer leak when using SPS/PPS
Fixes a buffer leak that would occurr if the pipeline was shutdown
while a SPS/PPS header was being created.

https://bugzilla.gnome.org/show_bug.cgi?id=741271
2014-12-09 09:47:23 +01:00
Mathieu Duponchelle
a5694b213a agingtv: fix memcpy when no color aging requested.
video_size is the size in pixels, actual size of the memcpy
has to be stride * height.
2014-12-09 04:44:40 +01:00
Nicola Murino
c466ff4748 matroskademux: set framerate 0/1 when duration is not known
https://bugzilla.gnome.org/show_bug.cgi?id=740130
2014-12-04 18:20:37 +01:00
Jan Schmidt
f4ca3c255a qtdemux: More fixes for reverse playback
When seeking or finding the previous keyframe, do
comparisons against targets and segments using composition time
to correctly decide which sample times match.
2014-12-04 22:53:07 +11:00
Thibault Saunier
aa89278ade rtpjitterbuffer: Use an empty iterator in iterate_internal_link when no links
We used to setup an iterator with 1 GValue set with a NULL object
pointer which is not the normal way to do that. Instead we should make
sure that the first call to gst_iterator_next returns GST_ITERATOR_DONE.
2014-12-03 11:17:11 +01:00
Jan Schmidt
b3d1ab5267 qtdemux: Handle seeks past EOS as a seek to the end
Fix reverse playback of every frame by making seeks past/to EOS
find the last segment and start there.
2014-12-03 13:23:35 +11:00
Olivier Crête
e3b0fb2a5d rtpmpadepay: Relax caps to allow any clock-rate
Some Wowza setups seem to send an invalid non-90000 clock-rate.
2014-12-02 15:33:25 -05:00
Thiago Santos
148da6210a qtdemux: don't use GST_CLOCK_TIME_NONE in non GstClockTime variables
Use -1 instead as those are gint64/guint64 variables and not GstClockTime
2014-12-02 00:46:35 -03:00
Tim-Philipp Müller
d65c3bbe7e qtdemux: implement seeking in fragmented mp4 files in pull mode based on the mfra table 2014-11-30 15:33:13 +00:00
Tim-Philipp Müller
77f37a6b22 qtdemux: use track fragment decoding time (tfdt) in parse_trun() for interpolation
As fallback if we don't have any existing samples
as reference point yet.

Based on patch by David Corvoysier <david.corvoysier@orange.com>
2014-11-30 15:33:13 +00:00
Tim-Philipp Müller
e24f903b13 qtdemux: parse mfra random access box for fragmented mp4 files
If it's present, and we operate in pull mode.
2014-11-30 15:33:13 +00:00
Tim-Philipp Müller
8a0f4e74e4 qtdemux: stop parsing headers for fragmented mp4s at the first moof
Currently during header parsing, we scan through the entire file
and skip every moof+mdat chunk for fragmented mp4s, which makes
start-up incredibly slow. Instead, just stop at the first moof
chunk when have a moov, and start exposing the streams, so we
can go and start handling the moofs for real.
2014-11-30 15:30:04 +00:00
Olivier Crête
ccac1f8c0b rtprtxreceive: Use offset when copying header
The header is not always at the start of the packet, so we need to compute
the offset first.
2014-11-29 18:38:12 -05:00
Andrei Sarakeev
6348de195d aspectratiocrop: Handle resolution changes properly
When an caps-event is received, we must immediately change the crop
to videocrop correctly changed caps-event dimension, otherwise the
videocrop will first use the previous value of the crop that when
resizing video to a smaller resolution may cause an error.

https://bugzilla.gnome.org/show_bug.cgi?id=740671
2014-11-28 11:19:23 +01:00
Edward Hervey
5b5e9f320f isomp4: Check presence of mfhd in moof
The 'mfhd' atom is mandatory in 'moof'. We can later on check whether
the fragment number properly increases
2014-11-26 16:36:39 +01:00
Edward Hervey
5e3e97353d isomp4: Fix mfro and tfra atom dumping
mfro was skipping the version/flags
tfra had wrong byte_reader return value checks
2014-11-26 16:36:39 +01:00
Edward Hervey
c45533bcd7 isomp4: Add mfhd atom dumping 2014-11-26 16:36:39 +01:00
Jan Schmidt
61bbd2d226 qtdemux: Handle empty segments when seeking in reverse play.
Empty segments in an edit list have a media_start time of -1,
as they don't actually play any media. Allow for that when
aligning to the reference stream in reverse play.
2014-11-27 00:17:03 +11:00
Tim-Philipp Müller
69ec922c16 icydemux: does not need to link against zlib 2014-11-23 16:24:06 +00:00
Miguel París Díaz
6daa57868f rtpjitterbuffer: ensure rtx_retry_period >= 0
https://bugzilla.gnome.org/show_bug.cgi?id=739344
2014-11-22 14:48:57 +00:00
Arun Raghavan
45e716e75d rtpbin: Fix up new_jitterbuffer signal prototype 2014-11-20 22:42:59 +05:30
Arun Raghavan
56436ccced rtpbin: Document how to control per-SSRC retransmission 2014-11-20 20:24:42 +05:30
Wim Taymans
3d7b0f30d7 rtpgstpay: put 0-byte at the end of events
Put a 0-byte at the end of the event string. Does not break ABI because
old depayloaders will skip the 0 byte (which is included in the length).
Expect a 0-byte at the end of the event string or a ; for old
payloaders.

See https://bugzilla.gnome.org/show_bug.cgi?id=737591
2014-11-20 13:14:14 +01:00
Wim Taymans
9d2902d978 rtpgstdepay: avoid buffer overread.
Check that a caps event string is 0 terminated and the event string is
terminated with a ; to avoid buffer overreads.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=737591
2014-11-20 12:44:26 +01:00
Tim-Philipp Müller
488d0b93cd qtmux: don't limit max video resolution to 4096x4096
MAX isn't entirely correct as upper limit either,
it should really be MAXUINT32, but it's unlikely
to be a problem in the near future.

https://bugzilla.gnome.org/show_bug.cgi?id=740407
2014-11-20 10:45:53 +00:00
Aleix Conchillo Flaqué
00ca83629b rtspsrc: fix leak for mikey base64 decoded key-mgmt
https://bugzilla.gnome.org/show_bug.cgi?id=740392
2014-11-20 09:15:56 +01:00
Wim Taymans
e95da8410f videobalance: fix unhandled format in passthrough
In passthrough we can handle all formats.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=740387
2014-11-20 09:02:36 +01:00
Jan Alexander Steffens (heftig)
bf73d834b2 flvdemux: Restrict resyncing to TS regressions
The behavior of resyncing video and audio indepen-
dently can cause A/V desyncs. Lets restrict resyncs
to jumps backward for now.

https://bugzilla.gnome.org/show_bug.cgi?id=736397
2014-11-19 11:58:19 -05:00
Matthew Waters
0053ad0847 videomixer: fix up QoS handling for live sources
Only attempt adaptive drop when we are not live

https://bugzilla.gnome.org/show_bug.cgi?id=739996
2014-11-17 23:16:03 +11:00
Arun Raghavan
1c3b233fef rtpmanager: Trivial typo fix 2014-11-10 13:16:50 +05:30
Sebastian Dröge
7a909917b5 matroska-mux: Use G_DEFINE_TYPE() to register the pad instead of manually registering it 2014-11-09 11:04:33 +01:00
Göran Jönsson
ec05d3b6d8 matroskamux: make GstMatroskamuxPad get_type() function thread-safe
https://bugzilla.gnome.org/show_bug.cgi?id=739722
2014-11-07 21:20:31 +00:00
Josep Torra
038cc7b004 rtsp: fix build in gst-uninstalled setup 2014-11-06 21:38:43 +01:00
Thibault Saunier
99bbc2bbe4 imagefreeze: Handle seqnums
https://bugzilla.gnome.org/show_bug.cgi?id=739366
2014-11-06 12:20:25 +01:00
Wim Taymans
26d682d23f videomixer2: reverse order of params for converter 2014-11-03 15:26:06 +01:00
Tim-Philipp Müller
c756fd6a55 goom2k1: post QoS messages when dropping frames due to QoS 2014-11-02 19:42:03 +00:00
Tim-Philipp Müller
b03056eede goom: post QoS messages when dropping frames due to QoS 2014-11-02 19:31:01 +00:00
Tim-Philipp Müller
85c3c36712 matroskamux: tweak writing app tag string a little 2014-11-02 19:02:35 +00:00
Tim-Philipp Müller
3956f5addc Sprinkle some G_PARAM_DEPRECATED and #ifndef GST_REMOVE_DEPRECATED 2014-11-02 16:58:30 +00:00
Tim-Philipp Müller
d940c21b78 rtpjitterbuffer: implement get/set for new rtx-min-retry-timeout property
Properties are so much more useful if you can actually set
and get their values.
2014-11-02 13:06:33 +00:00
Nicolas Dufresne
0f4f948f5f rtpvp8: Use VP8 encoding name
Both Firefox and Chrome uses VP8 as the encoding in their SDP.
Adding this now defacto standard name removes the need for special
case in SDP parsing code.

https://bugzilla.gnome.org/show_bug.cgi?id=737810
2014-11-01 11:26:26 -04:00
Tim-Philipp Müller
92c1d289b8 rtpmp2tpay: fix up template caps so we can output the default pt 33
Add fixed payload type for mp2t to template caps as well, so
our output caps match the advertised default pt. Fixes a
regression from 1.2.

There's still something wrong with caps negotiation though,
rtpmp2tpay payload=96 ! fakesink will not output caps with
payload=96.
2014-11-01 12:40:07 +00:00
Aleix Conchillo Flaqué
d15ebcbf62 rtspsrc: mikey related memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=739430
2014-10-31 10:03:47 +00:00
Sebastian Dröge
4aac09e708 aacparse: Always set profile/level on the caps
We have the information already, so why not use it?
2014-10-26 11:47:25 +01:00
Tim-Philipp Müller
b02d73a0ed rtpjitterbuffer: fix crash on some 32-bit systems
Make sure to pass right number of bits to gst_structure_new()
which is a vararg function.

Fixes elements/rtpaux unit test on ppc32.
2014-10-25 12:45:31 +01:00
Tim-Philipp Müller
401782c19d interleave: intersect result with filter caps in caps query
Fixes crash in audiotestsrc because of an unsupported format
getting negotiated on big-endian systems with
audiotestsrc ! interleave ! audioconvert ! wavenc
2014-10-25 11:08:48 +01:00
Wim Taymans
bd09dc96e9 rtpjitterbuffer: limit the retry frequency
When the RTT and jitter are very low (such as on a local network), the
calculated retransmission timeout is very small. Set some sensible lower
boundary to the timeout by adding a new property. We use the packet
spacing as a lower boundary by default.
2014-10-22 15:04:24 +02:00
Miguel París Díaz
4b5243c43d gstrtpjitterbuffer: add "rtx-min-delay" property
This property is useful to set a min time to wait before sending a
retransmission event.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=735378
2014-10-22 15:00:27 +02:00
Wim Taymans
0b81b316b5 jitterbuffer: Refactor code
Refactor some code dealing with calculating various timeouts.

See https://bugzilla.gnome.org/show_bug.cgi?id=735378
2014-10-22 14:59:57 +02:00
Miguel París Díaz
e6504e3a65 rtpsession: fix Early Feedback Transmission
In early retransmission we are allowed to schedule 1 regular RTCP packet
at an earlier time. When we do that, we need to set allow_early to FALSE
and ignore/drop (or merge) all future requests for early transmission.
We now first check if we can schedule an early RTCP and if we can,
actually prepare the data for the next RTCP interval.

After we send the next regular RTCP after the early RTCP, we set
allow_early to TRUE again to allow more early requests.

Remove the condition for the immediate feedback for now.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=738319
2014-10-22 13:13:47 +02:00
Wim Taymans
09f179139d rtpjitterbuffer: make debug line less confusing 2014-10-21 13:10:53 +02:00
Wim Taymans
2e7f5c08cf jitterbuffer: rework resync handling
Add a need-resync state, this is when we need to try to lock on to a
time/RTPtime pair.
Always check the RTP timestamps and if they go backwards, mark ourselves
as need-resync.
Only resync when need-resync is TRUE and we have a valid time. Otherwise
we keep the old values. This avoids locking on to an invalid time and
causing us to timestamp everything with -1.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=730417
2014-10-21 11:57:34 +02:00
Aleix Conchillo Flaqué
bd392d72ee rtspsrc: set full stream caps on internal src TCP pads
Set the complete stream caps on the TCP internal src pads. Otherwise,
ptdemux will not properly detect the caps change.

https://bugzilla.gnome.org/show_bug.cgi?id=737868
2014-10-21 11:33:01 +02:00
Sjoerd Simons
0ee384b251 rtpmux: Don't set PROXY_CAPS flag on the src pad
rtpmux behaves like a funnel in that it forwards whatever upstream is
sending buffers. So setting proxy caps doesn't make sense as the
upstream don't have to have compatible caps, thus resulting in an empty
caps set as a result of a caps query. Instead set fixed caps just
as funnel does.

https://bugzilla.gnome.org/show_bug.cgi?id=738722
2014-10-21 10:52:00 +02:00
Vineeth T M
1131db8c1f videobox: critical error when element properties set as max/min
left, right, top, bottom can be set from range of -2147483648 to 2147483647
when i launch the videobox element with that values, it gives a critical error

(gst-check-1.0:29869): GStreamer-CRITICAL **: gst_value_set_int_range_step: assertion 'start < end' failed
This happens because min cannot be equal to max.

https://bugzilla.gnome.org/show_bug.cgi?id=738838
2014-10-20 12:53:51 +02:00
Tim-Philipp Müller
f3fec86bc9 Revert "rtp: add h265 RTP payloader + depayloader"
This reverts commit d06ba9051f.

This breaks the build, as it depends on parser API in -bad.
2014-10-15 17:48:46 +01:00
Jurgen Slowack
d06ba9051f rtp: add h265 RTP payloader + depayloader 2014-10-15 17:34:50 +02:00
Peter G. Baum
b5e46c05d7 wavenc: Support RF64 format
https://bugzilla.gnome.org/show_bug.cgi?id=725145
2014-10-14 10:24:50 +02:00
David Sansome
8154c90c9b equalizer: Don't call iirequalizer's transform_ip in passthrough mode
It tries to map the read-only buffer with GST_MAP_READWRITE and crashes.

https://bugzilla.gnome.org/show_bug.cgi?id=737886
2014-10-13 08:30:03 +02:00
Olivier Crête
51a8bedced rtpsource: Rename seqnum-base to seqnum-offset in caps
This was modified back in 1.0 in GstRtpBasePayload
2014-10-10 18:33:34 -04:00
Olivier Crête
155ed569c3 rtpdtmfsrc: clock-base and seqnum-base -> timestamp-offset and seqnum-offset
These were renamed in GstRTPBasePayload in 1.0
2014-10-10 18:12:32 -04:00
Olivier Crête
b3069634bd rtpmux: clock-base and seqnum-base -> timestamp-offset and seqnum-offset
These were renamed in GstRTPBasePayload in 1.0
2014-10-10 18:12:23 -04:00
Luis de Bethencourt
cff880401d goom2k1: removing block of code that does nothing
The loop in zoomFilterSetResolution is meant to change the values in the
zf->firedec[] array. Each iteration writes the value of decc onto the arrya,
but no conditions that change the value of decc are ever met and the array is
filled with zero for each element. Which is the initial state of the
array before the loop begins.

The loop does nothing.

https://bugzilla.gnome.org/show_bug.cgi?id=728353
2014-10-08 14:07:56 +01:00
Stefan Sauer
98222a67ff rtpjitterbuffer: don't log all clock_rate changes as warnings.
We never initialize clock_rate explicitly, therefore it is 0 by default. The
parameter is a uint32 and the only caller ensure that it is >0, therefore it
won't become -1 ever.
2014-10-04 17:17:13 +02:00
Matej Knopp
e1d275cfec aacparse: fix memory leak when prepending ADTS headers
https://bugzilla.gnome.org/show_bug.cgi?id=737761
2014-10-02 10:41:28 +03:00
Antonio Ospite
7ae7f657fa interleave: interleave samples following the Default Channel Ordering
In order to have a full mapping between channel positions in the audio
stream and loudspeaker positions, the channel-mask alone is not enough:
the channels must be interleaved following some Default Channel Ordering
as mentioned in the WAVEFORMATEXTENSIBLE[1] specification.

As a Default Channel Ordering use the one implied by
GstAudioChannelPosition which follows the ordering defined in SMPTE
2036-2-2008[2].

NOTE that the relative order in the Top Layer is not exactly the same as
the one from the WAVEFORMATEXTENSIBLE[1] specification; let's hope users
using so may channels are already aware of such discrepancies.

[1] http://msdn.microsoft.com/en-us/library/windows/hardware/dn653308%28v=vs.85%29.aspx
[2] http://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BS.2159-2-2011-PDF-E.pdf

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=737127
2014-10-02 10:21:26 +03:00
Sebastian Dröge
7729f4ce81 wavenc: Send CAPS event after the pad was activated
Otherwise the CAPS event will be dropped and we never configure any caps at
all, leading to weird behaviour in many situations. Especially header
rewriting is not going to work if a capsfilter is after wavenc.

https://bugzilla.gnome.org/show_bug.cgi?id=737735
2014-10-02 10:10:11 +03:00
Sebastian Dröge
1a2adf5123 videomixer: Actually use the correct GstVideoInfo for conversion 2014-10-01 17:29:29 +03:00