Commit graph

320 commits

Author SHA1 Message Date
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
Tim-Philipp Müller
6ee2665b7c flvdemux: fix indentation 2014-08-13 11:59:39 +01:00
Tim-Philipp Müller
9afeb9652b flvdemux: un-break duration querying
Commit 2b9493b5 broke this in two ways: a) we should only
pass duration queries in TIME format upstream (or at least
not those in DEFAULT or BYTE format), and b) we mustn't
overwrite the default value of 'res' from TRUE to FALSE
and not set it again later. This led to bogus durations
being reported for FLV playback from file, because TIME
queries would fail (as 'res' had been set to FALSE) and
parsers then do a BYTE query as fallback and try to
guesstimate something in return, which of course goes
horribly wrong since the BYTE size returned is for the
muxed file.
2014-08-13 11:59:39 +01:00
Tim-Philipp Müller
e9f2d63011 flvdemux: fix speex caps
Decoder complains about "notification: Invalid mode encountered.
The stream is corrupted" though, even if it works, so there's
probably something wrong with the generated codec headers.
2014-06-26 13:50:19 +01:00
Tim-Philipp Müller
d98b996523 flvmux: fix speex in FLV
Speex in FLV is always mono @ 16kHz, see
http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf
section E.4.2.1: "If the SoundFormat indicates Speex, the audio is
compressed mono sampled at 16 kHz, the SoundRate shall be 0, the
SoundSize shall be 1, and the SoundType shall be 0"

Also see https://bugzilla.gnome.org/show_bug.cgi?id=683622
2014-06-26 13:43:33 +01:00
Edward Hervey
f7fc8d74c9 flvdemux: Attempt upstream seek first
If we have an upstream element that can handle the seek (such as
rtmpsrc), try to do that first before attempting it ourself.
2014-06-09 10:04:38 +02:00
Edward Hervey
2b9493b5f0 flvdemux: Query duration upstream first
Upstream elements (like rtmpsrc) might be able to provide the duration
more accurately than flvdemux. Especially with index-less vod files
2014-06-05 09:38:29 +02:00
Jan Alexander Steffens (heftig)
303883752e flvdemux: set RESYNC buffer flag when bridging large PTS gaps
So downstream gets notified when this happens.

https://bugzilla.gnome.org/show_bug.cgi?id=725903
2014-06-04 10:28:47 -04:00
Thiago Santos
3b887887be flvdemux: Use GstFlowCombiner
Use the flow combiner to have the standard combination results and avoid
repeating the same code

https://bugzilla.gnome.org/show_bug.cgi?id=709224
2014-05-26 19:51:07 -03:00
Edward Hervey
6c4882996f flvdemux: Don't use WARNING for not-linked flow return
Pollutes debug logs for no reason. It's only an error if all pads
return not-linked
2014-05-12 13:46:01 +02:00
Edward Hervey
c09b14c931 flvdemux: Skip unknown tags in push-mode
We add a new mode (SKIP) in push-mode to skip tags that we don't known about

Partially fixes https://bugzilla.gnome.org/show_bug.cgi?id=670712
2014-05-12 13:45:06 +02:00
Tim-Philipp Müller
d506409af5 docs: get rid of 'Since: 0.10.x' markers
And some gtk-doc markup fixes.
2013-11-18 14:47:35 +00:00
Tim-Philipp Müller
771ffe5609 flvmux: fix broken sample pipeline
which was muxing raw audio and video into flvmux, which won't work,
even if there were converters.
2013-10-12 20:44:31 +01:00
Tim-Philipp Müller
29effb522a flvmux: require stream-format=raw for mpeg-2 too, but don't require framed field
raw implies that it's framed already. Fixes .. ! faac ! flvmux
2013-10-12 20:37:41 +01:00
Tim-Philipp Müller
a5532b4510 flvdemux: don't leak stream_id string
https://bugzilla.gnome.org/show_bug.cgi?id=705142
2013-07-30 14:28:19 +01:00
Sebastian Dröge
2e35b36aab gst: Don't swap start/stop for negative rates in the SEGMENT query 2013-07-29 12:12:41 +02:00
Sebastian Dröge
d135373beb flvdemux: Implement SEGMENT query 2013-07-29 10:53:47 +02:00
Sebastian Dröge
1122698491 flvdemux: Add support for group-id in the stream-start event 2013-07-22 15:30:12 +02:00
Alban Browaeys
97015d3c93 flvdemux: Add flvversion 1 to the flash-video caps
This allows using avdec_flv which requires this field to be
present in the caps. FLV only supports flash-video version 1
right now.

https://bugzilla.gnome.org/show_bug.cgi?id=703076
2013-07-01 11:43:46 +02:00
Sebastian Dröge
ab275b62a8 flvdemux: Don't forward CAPS events from upstream
Just use the default pad event handler.

https://bugzilla.gnome.org/show_bug.cgi?id=701976
2013-06-11 12:27:19 +02:00
Sebastian Dröge
9ac456bd43 flvmux: Push sticky events in the right order 2013-05-13 15:06:03 +02:00
Sebastian Dröge
b0b0557c48 gst: Add better support for static plugins 2013-04-15 15:54:11 +02:00
Tim-Philipp Müller
230cf41cc9 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Tim-Philipp Müller
c203ce2dbe flvdemux: minor clean-up
Use GstByteWriter, because we can, and g_value_take_boxed.
2012-09-26 00:44:59 +01:00
Dmitriy Samonenko
7d4b6f655e flvdemux: fix speex audio decoding by creating fake stream header
https://bugzilla.gnome.org/show_bug.cgi?id=683622
2012-09-26 00:16:06 +01:00
Tim-Philipp Müller
1c3c8c64e6 flvmux: send stream-start event 2012-09-23 16:33:34 +01:00
Stefan Sauer
f874922e1c collectpads: remove gst_collect_pads_add_pad_full
Rename gst_collect_pads_add_pad_full() to gst_collect_pads_add_pad() and fix all
invocations.
2012-09-12 21:05:44 +02:00
Mark Nauwelaerts
f12ef67f56 ext, gst: only activate in pull mode if upstream is seekable 2012-09-11 17:44:51 +02:00
Mark Nauwelaerts
8d93246b93 gst: adjust comment style 2012-09-10 14:31:02 +02:00
Tim-Philipp Müller
4bb52bbadf docs: gst-launch -> gst-launch-1.0 and ffmpegcolorspace -> videoconvert 2012-08-27 21:20:30 +01:00
Sebastian Dröge
7b5925b5a4 gst: Add stream-id to stream-start events 2012-08-06 13:43:57 +02:00
Tim-Philipp Müller
c074bfd0b9 gst_tag_list_free -> gst_tag_list_unref 2012-08-04 16:10:16 +01:00
Sebastian Dröge
0827f54b93 tag: Update for taglist/tag event API changes 2012-07-28 00:19:51 +02:00
Mark Nauwelaerts
33091e2bf5 flvdemux: clear old segment event when requesting new one
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680283
2012-07-23 12:50:21 +02:00
Edward Hervey
f063e40af7 demux: Push STREAM_START event when needed 2012-07-13 13:51:48 +02:00
Sebastian Dröge
aeafc3a093 gst: Implement segment-done event 2012-07-05 13:13:09 +02:00
Wim Taymans
30d3dfee36 update for task api change 2012-06-20 10:33:42 +02:00
Wim Taymans
b5df4f0e62 update for tag event change 2012-06-06 13:02:12 +02:00
Edward Hervey
5294edded2 flvdemux: Post error message if EOS before pads were created
Happens with some files with only headers
2012-05-29 16:59:06 +02:00
Tim-Philipp Müller
3986174aa9 flv, matroska: don't use GstStructure API on tag lists 2012-05-27 00:02:08 +01:00
Mark Nauwelaerts
67e168aef4 collectpads2: rename to collectpads 2012-04-17 15:14:27 +02:00
Mark Nauwelaerts
04b4d30f2c misc: chain up to collectpads event handler 2012-04-16 16:37:49 +02:00
Edward Hervey
eb0cdfe20f flvdemux: Use unchecked variant of GstByteReader
We know there's at least 7 bytes (checked above)
2012-04-12 15:48:00 +02:00
Mark Nauwelaerts
ea397f60e4 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	gst/flv/gstflvdemux.c
	gst/matroska/matroska-demux.c
2012-04-10 11:57:53 +02:00
Tim-Philipp Müller
e09ae5736d Use new gst_element_class_set_static_metadata() 2012-04-10 00:51:41 +01:00
Nicolas Dufresne
628816784f flvdemux: Fix threading issue in index handling 2012-04-06 09:15:13 +02:00
Sebastian Dröge
acca0e77f1 flvdemux: Don't use static variables to hold index associations
This not really threadsafe in any way.
2012-04-06 09:14:28 +02:00
Sebastian Dröge
aa2cd462da gst: Update for GST_PLUGIN_DEFINE() API changes 2012-04-05 17:36:38 +02:00
Sebastian Dröge
5cdd49bf25 gst: Update versioning 2012-04-04 14:37:47 +02:00
Wim Taymans
3d61d12e03 update for buffer api change 2012-03-30 18:15:34 +02:00
Wim Taymans
69002aa24f update for buffer changes 2012-03-28 12:53:05 +02:00
Wim Taymans
c44cd8f55b Merge branch 'master' into 0.11
unport gdkpixbuf
not merged: https://bugzilla.gnome.org/show_bug.cgi?id=654850

Conflicts:
	docs/plugins/Makefile.am
	docs/plugins/gst-plugins-good-plugins-docs.sgml
	docs/plugins/gst-plugins-good-plugins-sections.txt
	docs/plugins/gst-plugins-good-plugins.hierarchy
	docs/plugins/inspect/plugin-avi.xml
	docs/plugins/inspect/plugin-png.xml
	ext/flac/gstflacdec.c
	ext/flac/gstflacdec.h
	ext/libpng/gstpngdec.c
	ext/libpng/gstpngenc.c
	ext/speex/gstspeexdec.c
	gst/audioparsers/gstflacparse.c
	gst/flv/gstflvmux.c
	gst/rtp/gstrtpdvdepay.c
	gst/rtp/gstrtph264depay.c
2012-03-22 11:53:24 +01:00
Wim Taymans
513d480fbf don't pass random pointers to pull_range 2012-03-16 21:47:21 +01:00
Nicola Murino
3f4e4edaa2 gst: Fix some query leaks 2012-03-12 09:10:20 +01:00
Sebastian Dröge
78bb66902b gst: Update for the gstmarshal.[ch] removal 2012-03-02 11:17:33 +01:00
Tim-Philipp Müller
cc0511f5d8 flvmux, matroskamux, qtmux: if in doubt about downstream seekability default to streaming=true
If downstream didn't answer our SEEKING query and told us
it's seekable, default to streaming=true. We couldn't do
this in 0.10 for backwards compatibility reasons, but we
can in 0.11. Play it safe.
2012-02-27 01:12:09 +00:00
Tim-Philipp Müller
f49410d698 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/audioparsers/gstmpegaudioparse.c
2012-02-27 01:00:03 +00:00
Tim-Philipp Müller
6b0dd47586 flvmux: create streamable output if downstream is not seekable
Ignore the "streamable" property setting and create streamable
output if downstream is known not to be seekable (as queried
via a SEEKABLE query).

Fixes pipelines like flvmux ! appsink possibly creating seemingly
corrupted output if streamable has not been set to true.
2012-02-25 15:56:51 +00:00
Wim Taymans
ca9532ccc5 update for new memory api 2012-02-22 02:10:33 +01:00
Wim Taymans
225e98d623 Merge branch 'master' into 0.11
Conflicts:
	ext/flac/gstflacenc.c
	ext/jack/gstjackaudioclient.c
	ext/jack/gstjackaudiosink.c
	ext/jack/gstjackaudiosrc.c
	ext/pulse/plugin.c
	ext/shout2/gstshout2.c
	gst/matroska/matroska-mux.c
	gst/rtp/gstrtph264pay.c
2012-02-10 16:23:14 +01:00
Wim Taymans
8eca20ead0 flv: use default pad query
We need to chain up unknown queries to the default query handler instead of
blindly forwarding them. In this case it caused the caps query to be forwarded
to the upstream typefind and return the wrong type for the audio/video pad.
2012-02-10 10:07:34 +01:00
Wim Taymans
9365f12d6e GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 16:43:30 +01:00
Wim Taymans
6674b029e4 flv: fix caps 2012-02-06 15:52:36 +01:00
Vincent Penquerc'h
5e93d1ce4c flvmux: specify we only accept raw AAC in template caps
No header seems to be added, and the codec ID is the same as used
for raw by flvdemux, so raw seems the only supported case.

https://bugzilla.gnome.org/show_bug.cgi?id=665394
2012-02-02 12:36:30 +00:00
Vincent Penquerc'h
57a0eacc7b flvdemux: specify we only output raw AAC in template caps
https://bugzilla.gnome.org/show_bug.cgi?id=665394
2012-02-02 12:36:30 +00:00
Wim Taymans
bb2bd604e0 update for HEADER flag 2012-01-30 17:16:51 +01:00
Sebastian Dröge
76a22a6ebb flvmux: Update for new collectpads2 event handling API 2012-01-26 10:34:34 +01:00
Edward Hervey
03b9966bc0 flv: Fix unitialized variables
(or rather circumvent issues with naive compilers ...)
2012-01-25 16:58:12 +01:00
Wim Taymans
583d39dd8d update for new memory API 2012-01-25 12:30:28 +01:00
Wim Taymans
1584806634 port to new gthread API 2012-01-19 11:33:53 +01:00
Mark Nauwelaerts
e8c254f34d flvdemux: remove obsolete FIXME comments 2012-01-12 13:18:43 +01:00
Mark Nauwelaerts
559c800c4f flvdemux: add prefix to local GstIndex related copies
... to avoid duplicate type names with other such local copies in the wild.
2012-01-12 11:09:07 +01:00
Mark Nauwelaerts
68e0d2b60c flvdemux: activate pad before setting caps
... rather than the usual 0.10 other way around.

Fixes #667558.
2012-01-12 11:09:07 +01:00
Sebastian Dröge
93e3ed5a86 Merge branch 'master' into 0.11
Conflicts:
	ext/cairo/gsttextoverlay.c
	ext/pulse/pulseaudiosink.c
	gst/audioparsers/gstaacparse.c
	gst/avi/gstavimux.c
	gst/flv/gstflvmux.c
	gst/interleave/interleave.c
	gst/isomp4/gstqtmux.c
	gst/matroska/matroska-demux.c
	gst/matroska/matroska-mux.c
	gst/matroska/matroska-mux.h
	gst/matroska/matroska-read-common.c
	gst/multifile/gstmultifilesink.c
	gst/multipart/multipartmux.c
	gst/shapewipe/gstshapewipe.c
	gst/smpte/gstsmpte.c
	gst/udp/gstmultiudpsink.c
	gst/videobox/gstvideobox.c
	gst/videocrop/gstaspectratiocrop.c
	gst/videomixer/videomixer.c
	gst/videomixer/videomixer2.c
	gst/wavparse/gstwavparse.c
	po/ja.po
	po/lv.po
	po/sr.po
	tests/check/Makefile.am
	tests/check/elements/qtmux.c
	tests/check/elements/rgvolume.c
2012-01-10 14:32:32 +01:00
Wim Taymans
5fd2b7abe3 GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2012-01-03 15:26:21 +01:00
Tim-Philipp Müller
2884785d54 flvdemux: update for GstIndex removal
Add private GstMemIndex for now.
2011-12-30 17:20:57 +00:00
Tim-Philipp Müller
89521166b2 flvmux: don't try to push already-freed buffers
Fixes unit test.
2011-12-25 14:23:29 +00:00
Mark Nauwelaerts
b175d1cbc4 flvmux: properly determine final duration
... which can be authoratively obtained from our own written timestamps.
2011-12-19 17:45:07 +01:00
Mark Nauwelaerts
fa5c02b211 flvmux: only write full metadata at start
... rather than having (potentially) unnecessary duplicates written all over,
or even contradictory varying filesize info, or duration info that will not
be rewritten upon header rewrite.
2011-12-19 17:45:04 +01:00
Mark Nauwelaerts
8c32195d51 flvmux: use GstCollectPads2 buffer callback and running time clipper
... since the default collection heuristics suffice.
2011-12-19 17:45:01 +01:00
Mark Nauwelaerts
50be1d5dae flvmux: use GstCollectPads2 event callback
... in stead of local HACK.
2011-12-15 16:49:41 +01:00
Vincent Penquerc'h
44d001346a flxmux: port to GstCollectPads2 2011-12-14 18:52:37 +00:00
Tim-Philipp Müller
b8b8454bcb Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here
in 0.10 for most of these.
2011-12-12 09:46:27 +00:00
Tim-Philipp Müller
668e15598b Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	sys/v4l2/gstv4l2object.c
2011-12-08 01:28:26 +00:00
Vincent Penquerc'h
7a7db8cbaf flvdemux: fix discontinuity threshold check when timestamps go backwards
Since unsigned types are used, a negative value would show as very, very
positive.
Fixes A/V sync on some... less than well made files where timestamps go
backwards.
2011-12-03 17:30:10 +00:00
Wim Taymans
c36325f0aa Update for indexable change 2011-11-28 18:25:52 +01:00
Vincent Penquerc'h
c0e101e93f various: fix pad template leaks
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:30:27 +00:00
Tim-Philipp Müller
be0d6baac5 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/pulse/pulseaudiosink.c
	ext/pulse/pulsesrc.c
	gst/audioparsers/gstaacparse.c
	gst/audioparsers/gstamrparse.c
	gst/audioparsers/gstdcaparse.c
	gst/audioparsers/gstflacparse.c
	gst/effectv/gstradioac.c
	gst/effectv/gstradioac.h
	gst/effectv/gstripple.c

Some possible FIXMEs remaining in the audio parser getcaps functions.
2011-11-26 13:34:10 +00:00
Vincent Penquerc'h
21d3faa400 flvdemux: fix seeking
Which I accidentally broke when fixing flv videos breaking on
spurious timestamp discontinuities in broken files.

https://bugzilla.gnome.org/show_bug.cgi?id=631430
2011-11-25 16:03:59 +00:00
Matej Knopp
1e5dd9e315 Fix printf format compiler warnings on OS X / 64bit
https://bugzilla.gnome.org/show_bug.cgi?id=662615
2011-11-22 01:28:22 +00:00
Wim Taymans
f8e988a94c update for activation changes 2011-11-21 13:37:01 +01:00
Wim Taymans
6e4fb21331 update for new scheduling query 2011-11-18 17:59:16 +01:00
Wim Taymans
b7aa7bca52 add parent to activate functions 2011-11-18 13:57:20 +01:00
Wim Taymans
105650127e add parent to pad functions 2011-11-17 15:02:55 +01:00
Stefan Sauer
8643d1caaf collectpads: port API changes 2011-11-17 08:44:45 +01:00
Wim Taymans
6190312214 add parent to query function 2011-11-16 17:27:13 +01:00
Wim Taymans
e7918a5aba _query_peer_*() -> _peer_query_*() 2011-11-15 18:04:44 +01:00