Age | Commit message (Collapse) | Author | Files | Lines |
|
We reset the demuxer into the MOVIE state so that seek requests after
EOS get processed.
|
|
1) Try to look for MFRO/MFRA and fill it up
FIXME : Streamline more with existing (pull-based) code
2) Find what is the optimal fragment for a given seek
Remember the fragment start time and offset and seek to that
3) When we get the corresponding SEGMENT, put ourself in the INITIAL state
set the offset to the fragment offset and clean up our streams.
We need to do that in the event handler to guarantee the chain function
isn't currently handling data
|
|
Seeking back will work for example.
Also fix mdatleft value to a very big value so that data that arrives
after a succesfull push-seek doesn't abort early (it will get set
to a proper value the next time we see a mdat)
|
|
|
|
When working in push-based with broken files, error out if the interleaving
is greater than 10s (which is already awful).
|
|
If we receive an initial TIME SEGMENT with a non-zero start value,
we need to adjust it to take into account the fact that the buffers
we will be pushing out will start from 0 (and not from the segment
start value).
This is just a workaround for now until the relationship of TIME
SEGMENT values and container formats has been clarified upstream.
|
|
This is similar to how asfdemux supports "chained" files. We detect that
by new STREAM_START events.
We put aside all old streams, and when we created all our new streams, we
push EOS on those old streams and finally remove them
|
|
The previous PTS might actually be from quite far away, from way before
the moof header. We don't want to use that blindly.
Use a safety distance of 4kbytes instead
Avoids using completely bogus base timestamp for fragments
|
|
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.
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=690719
|
|
We need different symbol names, because these symbols are also present
in the fragmented plugin ... which will cause conflicts when doing
static linking
|
|
|
|
Every instance of goto beach has buf_info equal NULL. Don't check
for a condition that never happens.
CID #1268399
|
|
The test had a function to print the error, but was not parsing it.
This was causing warning about dbg_info being used uninitialized. If
the test was testing any errors, this would have crashed.
|
|
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
|
|
When memory (that has been shared using gst_memory_share()) are freed,
the memory (or the DMABUF FD) should not bee freed. These memories have
a parent. This also removes the extra _v4l2mem_free function and avoid
calling close twice on the DMABUF FD.
https://bugzilla.gnome.org/show_bug.cgi?id=744573
|
|
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
|
|
In pulsesink_query function, we use a switch for the query
type. In the CAPS case, there is no 'break', instead we
return right away. Use a break and return at the end of
the function instead for better code readability.
https://bugzilla.gnome.org/show_bug.cgi?id=744461
|
|
|
|
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
|
|
Use gst_video_guess_framerate() from libgstvideo to guess
sensible common framerates where possible from the
floating point fps in the stream.
|
|
This now follows the design docs everywhere, especially the maximum latency
handling.
https://bugzilla.gnome.org/show_bug.cgi?id=744106
|
|
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.
|
|
|
|
x264enc might not have a max-key-int property, but it
has a key-int-max property...
|
|
|
|
Element x264enc doesn't have a max-key-int property
|
|
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
|
|
|
|
Add a unit test for file splitting, and fix the leaks in the
splitmuxsink it found
|
|
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
|
|
|
|
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.
|
|
Avoid test failure by changing the stored video resolution
from 80x60 to 80x64, which needs bug 741030 to be fixed.
|
|
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.
|
|
Our ones were expired. The new ones were copied from libsoup's
tests files.
Also sets the property to use our own cert to validate the
server, otherwise the default system certs would be used
and it would fail.
|
|
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
|
|
When the trickmode key-units flag is set on the segment, simply skip
any sample on a video stream that isn't a keyframe
|
|
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
|
|
Separate global from stream tags storage and write them to the
appropriate tags entry in the output
|
|
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
|
|
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
|
|
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
|
|
It refers to the application name and version used to create the
file
https://bugzilla.gnome.org/show_bug.cgi?id=692473
|
|
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
|
|
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.
|
|
|
|
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.
|
|
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
|
|
|