Jan Schmidt
a3933ea53d
flvmux: Fix invalid padlist accesses.
...
Request pads can released at any time, so make sure to hold
the object lock when iterating the element sinkpads list where
that's safe, or to use other safe pad iteration patterns in
other places.
When choosing a best pad, return a reference to the pad to make sure it
stays alive for output in the aggregator srcpad task.
Should fix a spurious valgrind error in the CI flvmux tests and some
other potential problems if the request sink pads are released while
the element is running..
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/714
2020-04-05 11:50:43 +00:00
Yeongjin Jeong
e836640bd5
flvmux: Support rollover in timestamp
...
For live streams, if we keep the stream for a long time, the timestamp
will be larger than max_uint32. In that case, timestamp should be handled
as a rollover timestamp rather than a backward timestamp.
2020-02-18 18:39:31 +09:00
Jan Alexander Steffens (heftig)
9e0eb77810
flvmux: Use the last DTS for the metadata timestamp
...
This avoids creating a timestamp regression during a stream.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/429
2019-12-12 11:09:31 +01:00
Seungha Yang
5009cad220
flvmux: Use thread-safe gmtime_r if available
...
gmtime on *nix is not thread-safe.
2019-12-10 23:48:35 +09:00
Jan Alexander Steffens (heftig)
06600b2cd9
flvmux: Correct metadata handling in file and stream mode
...
In file mode, only push one onMetaData at the start of the stream.
In stream mode, always push complete onMetaData. They get replaced, not
merged.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/418
2019-12-03 14:01:19 +01:00
Jan Alexander Steffens (heftig)
6fdb6ece6e
flvmux: Don't calculate duration in streamable mode
...
There's no header to rewrite, so the duration is left unused.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/418
2019-12-03 14:01:14 +01:00
Edward Hervey
8e1c224fbc
good: Avoid usage of deprecated API
...
GTimeval and related functions are now deprecated in glib.
Replacement APIs have been present since 2.26
2019-10-16 07:46:58 +00:00
Jan Alexander Steffens (heftig)
152b002658
flvmux: Clear new_tags if sending metadata in header
...
This avoids sending an additional metadata object right after the
headers.
2019-06-24 17:37:51 +02:00
Jan Alexander Steffens (heftig)
9528bfd78f
flvmux: Simplify an if-else chain
...
Merge the identical branches and turn the condition around to make it
easier to read.
2019-06-19 14:36:21 +02:00
Jan Alexander Steffens (heftig)
9a70ce87db
flvmux: Avoid crash when changing caps without both streams
...
mux->video_pad and mux->audio_pad can be NULL if the corresponding pad
has not been requested.
2019-06-19 14:36:21 +02:00
Thibault Saunier
0a6a62aa76
docs: Port all docstring to gtk-doc markdown
2019-05-13 10:24:40 -04:00
Andreas Frisch
3160713abf
flvmux: Fix scale of time values in warning message
2019-03-15 09:55:32 +00:00
Ilya Smelykh
6db7bb1539
flvmux: Use 8kHz sample rate for alaw/mulaw audio
2019-02-08 20:33:55 +00:00
Sebastian Dröge
c28a9d5d9c
flvmux: Add encoder metadata to the header
...
And also add a property for setting this. By default it has the same
value as the metadatacreator metadata.
Various software is using encoder instead of metadatacreator, others are
using them both for different purposes. As such it's useful to have
support for setting both here.
2019-01-13 13:22:41 +00:00
Olivier Crête
fea0d0b1a4
flvmux: Force timestamps to always be increasing
...
https://bugzilla.gnome.org/show_bug.cgi?id=796382
2018-11-05 18:17:01 -05:00
Yeongjin Jeong
8cae95a22d
flvmux: Don't refuse caps changes after starting to write headers in streamable mode.
...
Flv does support changing the stream type and stream properties
after the headers were started to be written, and for example H264
codec_data changes can be supported.
https://bugzilla.gnome.org/show_bug.cgi?id=797256
2018-10-11 15:35:24 -04:00
Seungha Yang
916ad09009
flvmux: Don't leak codec_data buffer
...
Use gst_buffer_replace() to prevent buffer leak
https://bugzilla.gnome.org/show_bug.cgi?id=797179
2018-09-20 11:35:31 +03:00
Seungha Yang
1cd5a5241f
flvmux: Don't omit streamheader from caps on downstream reconfigure
...
The reconfigured downstream elements (e.g., dynamically added sink element)
most likely require the flv streamheader
https://bugzilla.gnome.org/show_bug.cgi?id=797089
2018-09-06 15:52:09 -04:00
Olivier Crête
87b2b35fac
flvmux: Remove custom get_next_time implementation
...
GstAggregator now does the same thing in the simple implementation.
https://bugzilla.gnome.org/show_bug.cgi?id=795486
2018-05-16 22:23:36 +02:00
Olivier Crête
c2c7d110e5
flvmux: Don't wake up the muxer unless there is data
...
https://bugzilla.gnome.org/show_bug.cgi?id=795332
2018-04-26 15:41:54 -04:00
Olivier Crête
11297c3337
flvmux: Save the current position in the output segment
...
https://bugzilla.gnome.org/show_bug.cgi?id=795332
2018-04-26 15:41:54 -04:00
Olivier Crête
168fae813b
flvmux: Wait for caps from both srcs before writing header
...
Wait for caps on all pads to start writing data even when source is live.
Includes unit test by Havard Graff that simulates it.
https://bugzilla.gnome.org/show_bug.cgi?id=794722
2018-04-26 15:41:54 -04:00
Mathieu Duponchelle
fc9db36a1f
flvmux: unref return of aggregator_pad_peek_buffer
...
We ended up leaking every single buffer going through the
muxer, which is far from ideal
2018-04-13 23:01:20 +02:00
Mathieu Duponchelle
acb6090e47
flvmux: aggregate should not push EOS itself
...
Instead it is expected to return GST_FLOW_EOS, and let the
base class handle that.
2018-04-13 22:44:14 +02:00
Olivier Crête
96261ce220
flvmux: Duration & unit tests
...
The muxed buffers will not carry the duration of the
incoming buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=793457
2018-03-01 18:25:02 -05:00
Olivier Crête
c0bf793c05
flvmux: Set PTS based on running time
...
https://bugzilla.gnome.org/show_bug.cgi?id=793457
2018-03-01 17:15:02 -05:00
Mathieu Duponchelle
273d2c23d9
Port to latest GstAggregator segment API
...
The aggregator segment is now exposed on the src pad
https://bugzilla.gnome.org/show_bug.cgi?id=793945
2018-03-01 15:35:24 +01:00
Tim-Philipp Müller
f459438278
Update for renamed aggregator pad API
...
https://bugzilla.gnome.org/show_bug.cgi?id=791204
2018-01-23 09:46:32 +00:00
Vincent Penquerc'h
8b814f6351
flv: flvmux ported to the GstAggregator
...
This makes it possible to create a flv file from a live source and not stop
when there are packet drops.
https://bugzilla.gnome.org/show_bug.cgi?id=782920
2017-12-20 15:34:11 -05:00
Sean DuBois
2f707370d4
flvmux: Add metadatacreator property
...
Allow users to set metadatacreator value in the meta packet
https://bugzilla.gnome.org/show_bug.cgi?id=774131
2016-11-10 13:11:05 +02:00
Nicolas Dufresne
ad9e9bedfb
flvmux: Assume PTS is DTS when PTS is missing
...
This fixes issue for encoders that only sets the DTS. We assume that
there was no re-ordering when that happens.
https://bugzilla.gnome.org/show_bug.cgi?id=762207
2016-10-24 11:54:30 -04:00
Thibault Saunier
dd9bfd03ec
flv: Handle the case where we do not get any CollectData in handle_buffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=765320
2016-04-22 08:39:02 -03:00
Vineeth TM
1071309870
good: use new gst_element_class_add_static_pad_template()
...
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Dave Craig
211c8492b3
gst: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
...
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
2016-02-23 18:11:42 +02:00
Tim-Philipp Müller
df341f41dc
flvmux, rtpvp9depay: fix indentation
2016-02-19 15:04:15 +00:00
Havard Graff
7787f439fc
flvmux: plug leak(s) in error-scenario
...
https://bugzilla.gnome.org/show_bug.cgi?id=762210
2016-02-19 14:59:09 +00:00
Tim-Philipp Müller
5413fd5f20
flvmux: fix writing of creation time
...
Don't write time as e.g. 11:9:42
2015-10-21 11:16:01 +01:00
Havard Graff
b6f133ba17
flvmux: GST_BUFFER_OFFSETs should be GST_BUFFER_OFFSET_NONE
...
Or else flvdemux don't understand it
https://bugzilla.gnome.org/show_bug.cgi?id=754435
2015-10-11 11:10:20 +01:00
Havard Graff
cf3a2294da
flvmux: use time segment and copy timestamps when streamable
...
Add a basic test using speex data to verify timestamping.
https://bugzilla.gnome.org/show_bug.cgi?id=754435
2015-10-11 11:09:08 +01:00
George Chriss
1afb988256
flvmux: Make the element count in arrays not include end
...
One-line removal of tags_written++
This should fix rtmp output to crtmpserver, and hopefully
noone is expecting that the element count includes the end
element, as different bits of documentation say different
things about whether it should or not.
https://bugzilla.gnome.org/show_bug.cgi?id=661624
2015-09-05 23:45:37 +10:00
Jan Schmidt
db2967125b
flvmux: Store incoming bitrate tags and send in the metadata
...
Apparently the Microsoft Azure RTMP server requires that the
videodatarate and audiodatarate metadata be provided, so
set those, even if it's to 0. Use the actual input bitrate
tags if available.
2015-09-05 23:45:37 +10:00
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
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
717265ebfb
flmux: Make sure best_time is initialized
2015-06-12 17:45:23 -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
Nicolas Dufresne
356defdfea
flvmux: Fallback to PTS if DTS is missing
...
Fixing a regression introduce when fixing:
https://bugzilla.gnome.org/show_bug.cgi?id=731352
2014-08-28 15:05:56 -04:00
Nicolas Dufresne
a7a3cb343a
flvmux: Correctly offset timestamp
...
The previous method would break AV sync in the case audio or video
didn't start at the same point in running time.
https://bugzilla.gnome.org/show_bug.cgi?id=731352
2014-08-27 21:09:57 -04:00
Nicolas Dufresne
aa5bd99127
flvmux: Save dts from buffer
...
We no longer set dts in muxed buffer. This would lead to encoding tags
with timestamp 0 instead of the timestamp of previous buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=731352
2014-08-27 21:08:21 -04:00
Nicolas Dufresne
c1e7bec616
flvmux: Ensure Timestamp starts at 0
...
FLV documentation stipulates that timestamp must start at zero.
In order to respect this rule, keep the first timestamp around
and offset the timestamp from this value. This allow for longer
recording time in presence of timestamp that does not start
at 0 already.
https://bugzilla.gnome.org/show_bug.cgi?id=731352
2014-08-26 16:46:03 -04:00
Nicolas Dufresne
ff2bce7b26
flv: Tag timestamp are DTS not PTS
...
The tags in FLV are DTS. In audio cases, and for many video format this makes
no difference, but for AVC with B-Frames, PTS need to be computed from
composition timestamp CTS, with PTS = DTS + CTS.
https://bugzilla.gnome.org/show_bug.cgi?id=731352
2014-08-26 16:45:59 -04:00