Commit graph

133 commits

Author SHA1 Message Date
Tim-Philipp Müller
d51576b14c Revert "avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time"
This reverts commit 6a9983cd20.

Rely on locking done in GstTagSetter in core git.
2010-06-01 09:39:38 +01:00
Tim-Philipp Müller
6a9983cd20 avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time
This is a temporary fix for the release only.

Fixes #619533.
2010-05-26 00:05:54 +01:00
Jan Urbański
cf57f1b220 flvmux: only store the last buffer timestamp if it's valid
Fixes bug #618305
2010-05-11 06:35:48 +02:00
Tim-Philipp Müller
f48bc702af flvmux: hide is-live property for release
At the very least it needs a better/less wrong name.

See #613066.
2010-04-26 00:01:19 +01:00
Jan Urbański
7d32f46b7a flvmux: put more information in the metadata
Additional tags are: audiocodecid, videocodecid framerate and (in the
non-live case) filesize.

While at it, fix index rewriting to update duration and filesize
values even if the index is empty.

Fixes #613094.
2010-03-18 10:00:58 +01:00
Jan Urbański
dcb5afd351 flvmux: Put width and height in the metadata
Some players use that info to scale their display.

See #613094.
2010-03-17 09:28:03 +01:00
Jan Urbański
96de71d74b flvmux: don't put timestamps larger than G_MAXINT32 in the FLV tags
For non-live input respond by pushing EOS, for live wrap the
timestamps every G_MAXINT32 miliseconds.

Fixes #613003.
2010-03-17 09:24:49 +01:00
Jan Urbański
a99ee96172 flvmux: Always put a duration tag in the metadata
Some Flash players (for instance JW Player) always expect a duration
tag, otherwise they don't start playback.

If duration can be queried from the sink pads or is provided as a tag,
use it. Otherwise try to determine it from the last seen timestamp of
the sink pads after EOS and rewrite it in the header before writing
the index.
2010-03-16 15:12:46 +01:00
Jan Urbański
ef8f7614ff flvmux: Remove the send_codec_data field from GstFlvPad
That field is not used anymore after the changes in
9fdecbc1c1.
2010-03-16 15:12:46 +01:00
Jan Urbański
c69c5cb0d7 flvmux: Correctly mark buffers as delta units
Mark video interframes, video codec data buffers and audio buffers (if
it's not an audio-only stream) as delta units.
2010-03-15 13:54:39 +01:00
Jan Urbański
9fdecbc1c1 flvmux: Support streamheaders
Put the FLV header, the metadata tag and (if present) codec
information in the streamheader to allow the muxer to be used for
streaming.
2010-03-15 13:53:53 +01:00
Jan Urbański
7deee29d2c flvmux: Preallocate index space and fill it after finishing output
Make the index appear at the beginning of the file, which is what most
players are expecting.

Fixes #601236.
2010-03-15 13:52:03 +01:00
Sebastian Dröge
7c74f7d525 flvmux: Minor coding style fixes and cleanup 2010-03-15 13:47:13 +01:00
Jan Urbański
54a8237d62 flvmux: Add a is-live property
If it is set, the muxer will not write the index. Defaults to false.
2010-03-15 13:46:09 +01:00
Jan Urbański
c9bb3edd6f flvmux: Only put valid seek points in the index
For files containing video only video keyframes are valid points to
which a player can seek. For audio-only files any tag start is a valid
seek point.

See #601236.
2010-03-15 13:45:21 +01:00
Jan Urbański
b21c5c9015 flvmux: Fix index building to make entries point to tag's start offset
Previous coding was wrongly incrementing the total byte count before
adding an index entry.
2010-03-15 13:44:14 +01:00
Robert Swain
f9bf5970a3 flvmux: index timestamps should be in seconds, not milliseconds 2010-01-27 20:24:41 +01:00
Jan Urbański
dd82612340 flvmux: properly finish the ECMA array
The ECMA array with the file index was missing a mandatory end marker.
Fixes bug #601242.
2009-11-18 08:03:43 +01:00
Stefan Kost
272683ff36 flvmux: fully use tagsetter to manage the tags. Fixes #563221
There is no need to manage a separate taglist.
2009-09-03 14:48:14 +03:00
Sebastian Dröge
8b9d547c14 flvmux: Fix writing of the index for < 128 buffers
Partially fixes bug #590447.
2009-08-03 20:08:00 +02:00
Sebastian Dröge
cb4eb5714c flvmux: Fix resetting of the element
Reset the have_video/have_audio flags and make sure to
properly release the request pads.

Partially fixes bug #590447.
2009-08-03 20:07:00 +02:00
Tim-Philipp Müller
93690bfdd6 flvmux: fix invalid write caused by using sizeof("string") as length
sizeof("foo") includes the string's NUL-terminator in the size returned,
but we're writing strings here with an explicit size at the beginning
and no NUL-terminator. In most cases using sizeof("foo") as length in
memcpy is not harmful, but it is where the string goes right at the
end of our buffer to write, since we don't allocate space for that
NUL terminator.
2009-07-31 23:54:47 +01:00
Sebastian Dröge
cf60de4875 flvmux: Get the max duration from upstream if there's no duration tag 2009-05-22 19:41:58 +02:00
Sebastian Dröge
22d95bfc09 flvmux: Write an index table to the end of the file 2009-05-22 19:41:58 +02:00
James Andrewartha
2410cd7a00 Fix compiler warnings
Fixes bug #582715.
2009-05-15 15:14:52 +02:00
Tristan Matthews
95f52ab0d1 [MOVED FROM BAD 56/57] flvmux: init variable to NULL to fix compiler warning
Fixes #580786.
2009-05-12 21:21:02 +02:00
Sebastian Dröge
189838532b [MOVED FROM BAD 55/57] flv: Set/require the framed/parsed fields of the audio/mpeg caps to TRUE 2009-05-12 21:21:02 +02:00
Sebastian Dröge
609239d574 [MOVED FROM BAD 54/57] flv: Always write at least the minimal tags and write the PAR as tags 2009-05-12 21:21:02 +02:00
Sebastian Dröge
7ce9a89050 [MOVED FROM BAD 53/57] flv: Add support for muxing some tags 2009-05-12 21:21:02 +02:00
Sebastian Dröge
046311d3ea [MOVED FROM BAD 50/57] flv: Add documentation to flvmux and flvdemux
Partially fixes bug #573737.
2009-05-12 21:21:01 +02:00
Sebastian Dröge
d1e3e827f3 [MOVED FROM BAD 39/57] gst/flv/: Add support for Speex audio and allow buffers without valid timestamp in the muxer.
Original commit message from CVS:
* gst/flv/gstflvmux.c: (gst_flv_mux_audio_pad_setcaps),
(gst_flv_mux_request_new_pad), (gst_flv_mux_write_buffer),
(gst_flv_mux_collected):
* gst/flv/gstflvmux.h:
* gst/flv/gstflvparse.c: (gst_flv_parse_audio_negotiate):
Add support for Speex audio and allow buffers without valid
timestamp in the muxer.
2009-05-12 21:20:58 +02:00
Sebastian Dröge
6c61c0b78d [MOVED FROM BAD 31/57] gst/flv/gstflvmux.c: Don't set video_codec to the value that actually should go into audio codec, otherwise we create...
Original commit message from CVS:
* gst/flv/gstflvmux.c: (gst_flv_mux_audio_pad_setcaps),
(gst_flv_mux_write_buffer):
Don't set video_codec to the value that actually should go
into audio codec, otherwise we create invalid files.
Fixes bug #556564.
2009-05-12 21:20:56 +02:00
Sebastian Dröge
fc2adbb9a8 [MOVED FROM BAD 22/57] gst/flv/: Add first version of a FLV muxer. The only missing feature is writing of stream metadata.
Original commit message from CVS:
* gst/flv/Makefile.am:
* gst/flv/gstflvdemux.c: (plugin_init):
* gst/flv/gstflvmux.c: (gst_flv_mux_base_init),
(gst_flv_mux_class_init), (gst_flv_mux_init),
(gst_flv_mux_finalize), (gst_flv_mux_reset),
(gst_flv_mux_handle_src_event), (gst_flv_mux_handle_sink_event),
(gst_flv_mux_video_pad_setcaps), (gst_flv_mux_audio_pad_setcaps),
(gst_flv_mux_request_new_pad), (gst_flv_mux_release_pad),
(gst_flv_mux_write_header), (gst_flv_mux_write_buffer),
(gst_flv_mux_collected), (gst_flv_mux_change_state):
* gst/flv/gstflvmux.h:
Add first version of a FLV muxer. The only missing feature is writing
of stream metadata.
2009-05-12 21:20:54 +02:00