Mathieu Duponchelle
104f459258
qtdemux: fix key unit seek corner case
...
If a key unit seek is performed with a time position that matches
the offset of a keyframe, but not its actual PTS, we need to
adjust the segment nevertheless.
For example consider the following case:
* stream starts with a keyframe at 0 nanosecond, lasting 40 milliseconds
* user does a key unit seek at 20 milliseconds
* we don't adjust the segment as the time position is "over" a keyframe
* we push a segment that starts at 20 milliseconds
* we push a buffer with PTS == 0
* an element downstream (eg rtponviftimestamp) tries to calculate the
stream time of the buffer, fails to do so and drops it
2019-07-26 01:50:47 +00:00
Sebastian Dröge
4911ac38ac
jpegdec: Don't dereference NULL input state if we have no caps in TIME segments
...
Simply assume that the JPEG frame is not going to be interlaced instead
of crashing.
2019-07-25 15:08:54 +03:00
Knut Andre Tidemann
dbd7234191
rtp: opuspay: fix memory leak in gst_rtp_opus_pay_setcaps.
...
The src caps were never dereferenced, causing a memory leak.
2019-07-22 10:33:41 +02:00
Mathieu Duponchelle
5fde140e6e
qtdemux: implement support for trickmode interval
...
When the seek event contains a (newly-added) trickmode interval,
and TRICKMODE_KEY_UNITS was requested, only let through keyframes
separated with the required interval
2019-07-18 17:54:43 +02:00
Nirbheek Chauhan
9336326b3d
meson: Don't generate doc cache when no plugins are enabled
...
Fixes gst-build with -Dauto-features=disabled
2019-07-17 19:14:13 +05:30
Seungha Yang
aa0544ab8f
matroska: Port to color_{primaries,transfer,matrix}_to_iso
...
... and remove duplicated code.
2019-07-15 23:25:53 +09:00
Jan Schmidt
436d33b288
splitmuxsink: add the ability to mux auxilliary video streams
...
The primary video stream is used to select fragment cut points
at keyframe boundaries. Auxilliary video streams may be
broken up at any packet - so fragments may not start with a keyframe
for those streams.
2019-07-15 11:46:36 +00:00
Jan Schmidt
b5d8484b0b
splitmuxsrc: Add video_%d pad template.
...
splitmuxsrc actually supports multiple video pads. Make that clear,
especially since it was already creating pads named "video_0" etc.
2019-07-15 11:46:36 +00:00
Mathieu Duponchelle
9deb3c27ac
qtdemux: fix conditions for end of segment in reverse playback
...
The time_position field of the stream is offset by the media_start
of its QtDemuxSegment compared to the start of the GstSegment of
the demuxer, take it into account when making comparisons.
2019-07-09 21:21:20 +00:00
Seungha Yang
67b8ce3167
matroskademux: Fix mismatched transfer characteristic
...
TransferCharacteristics(18) should be ARIB STD-B67 (HLG)
See https://www.webmproject.org/docs/container/#TransferCharacteristics
Also map more color primaries indexes which have been handled by matroska-mux.
2019-07-09 23:11:45 +09:00
Seungha Yang
dbb4849a32
v4l2: Remove misleading comments
...
gst_pad_template_new() does not take ownership of the caps
2019-07-09 19:51:20 +09:00
Olivier Crête
efed059b9a
rtp session: Add test for collision loopback detection
...
Ignore further collisions if the remote SSRC change with ours, it's
probably because someone is sending us back the packets we send out.
2019-07-06 14:23:20 +00:00
Olivier Crête
b5faed910e
rtpsession tests: Add test for third-party collision detection
...
Add tests to validate the code that ignores the same packets coming
from 2 different sources (an third-party collision).
2019-07-06 14:23:20 +00:00
Olivier Crête
3574e6c176
rtpsession: Add test for collision on incoming packets
...
Make sure that the collision is properly detected on incoming packets.
2019-07-06 14:23:20 +00:00
Olivier Crête
4e18567863
rtpsession test: Verify that on-ssrc-collision message is emitted
2019-07-06 14:23:20 +00:00
Olivier Crête
9d9d543d5c
rtpsession: Also send conflict event when sending packet
...
If the conflict is detected when sending a packet, then also send an
upstream event to tell the source to reconfigure itself.
Also ignore the collision if we see more than one collision from the same
remote source to avoid problems on loops.
2019-07-06 14:23:20 +00:00
Song Bing
c74a5d870d
v4l2transform: set right buffer count.
...
Set right buffer count to avoid one buffer.
2019-07-04 17:37:30 +00:00
Olivier Crête
061afa33ee
rtph265pay: Also immediately send packet if it is a suffix NAL
...
Immediately send packet if it contains any suffix NAL, this is required
in case they come after the VCL nal to not have to wait until the next frame.
2019-07-03 19:05:29 +00:00
Olivier Crête
43e83695fd
rtph265pay: Don't drop second byte of NAL header
...
At least keep 2 bytes per NAL even if the second one is 0, the
second byte of the NAL header could very well be 0.
2019-07-03 19:05:29 +00:00
Olivier Crête
6fed30c48e
rtph26xpay: Avoid print when there is no bundle at end of packet
2019-07-03 19:05:29 +00:00
Olivier Crête
97f2fb4cc8
rtph26xpay: Wait until there is a VCL or suffix NAL to send
...
With unit tests.
2019-07-03 19:05:29 +00:00
Olivier Crête
4810c93222
rtph265pay test: Add unit tests for aggregation
2019-07-03 19:05:29 +00:00
Olivier Crête
1b32cb1eae
rtph265pay: Implement Aggregation packets
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
42d775dfbe
rtph264pay test: Add unit tests for aggregation
2019-07-03 19:05:29 +00:00
Olivier Crête
5a9b602c9e
rtph264pay: Report latency when in maximal aggregation mode
2019-07-03 19:05:29 +00:00
Olivier Crête
cede4f993d
rtph264pay: Default to not adding latency when aggregating
...
Send the bundle as soon as there is one VCL unit in the packet at
the end of an incoming buffer.
The DELTA_UNIT flag is not reliable, so ignore it.
2019-07-03 19:05:29 +00:00
Olivier Crête
0c094612be
rtp-payloading test: Fix working to 1.0 buffers instead of groups
2019-07-03 19:05:29 +00:00
Olivier Crête
13d25583db
rtph265pay: Replace fragmentation while-loop with for-loop
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
9be70dc360
rtph265pay: Rename payload_len to max_fragment_size
...
Align to rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
34c23bdc5d
rtph265pay: Clean up _payload_nal
...
Move determining whether we need to fragment at all into the
fragmenter.
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
f5765ccf05
rtph265pay: Extract sending fragments into _payload_nal_fragment
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
378c422e0c
rtph265pay: Extract sending a single packet into _payload_nal_single
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
b841fd4c8a
rtph265pay: Define and use FU_A_TYPE_ID
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
a6d50889af
rtph265pay: Use snake_case variables
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Olivier Crête
d4268ab2bf
rtph265pay: Clean up whitespace and syntax
...
Align with rtph264pay
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
b46dab13d2
rtph264pay: Support STAP-A bundling
...
Add a new property "do-aggregate"* to the H.264 RTP payloader which
enables STAP-A aggregation as per [RFC-6184][1]. With aggregation enabled,
packets are bundled instead of sent immediately, up until the MTU size.
Bundles also end at access unit boundaries or when packets have to be
fragmented.
*: The property-name is kept generic since it might apply more widely,
e.g. STAP-B or MTAP.
[1]: https://tools.ietf.org/html/rfc6184#section-5.7
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/434
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
66a3db2083
rtph264pay: Fix delta-unit/discont handling when injecting SPS/PPS
...
Apply the wanted delta-unit and discont to the first packet; following
packets for this frame are always delta units and not discont.
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
2a16160b57
rtph264pay: Replace fragmentation while-loop with for-loop
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
00936a8362
rtph264pay: Calculate the right max_fragments
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
fe99982dec
rtph264pay: Rename payload_len to max_fragment_size
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
5051569713
rtph264pay: Clean up _payload_nal_fragment
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
d97c3f045c
rtph264pay: Clean up _payload_nal
...
Move determining whether we need to fragment at all into the fragmenter.
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
166c49b800
rtph264pay: Clean up _payload_nal_single
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
b3291620ca
rtph264pay: Extract sending fragments into _payload_nal_fragment
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
e493f0ba09
rtph264pay: Extract sending a single packet into _payload_nal_single
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
40c23c06b1
rtph264pay: Define and use FU_A_TYPE_ID
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
bc0018370b
rtph264pay: Use snake_case variables
2019-07-03 19:05:29 +00:00
Jan Alexander Steffens (heftig)
28d6dfa51f
rtph264pay: Clean up whitespace and syntax
2019-07-03 19:05:29 +00:00
Olivier Crête
37d22186ff
rtpjitterbuffer: Unlock output if the queue is full
2019-07-03 18:03:42 +00:00
Thomas Bluemel
080eba64de
rtpjitterbuffer: Ignore unsolicited rtx packets.
...
If an rtx packet arrives that hasn't been requested (it might
have been requested from prior to a reset), ignore it so that
it doesn't inadvertently trigger a clock skew.
2019-07-03 06:23:07 -06:00