Mark Nauwelaerts
4b64dc2f3e
qtmux: optionally create fragmented file
...
In this mode, an initial empty moov (containing only stream metadata) is written,
followed by fragments containing actual data (along with required metadata).
New fragments are started either at keyframe (if such are sparse) or when
property configured duration exceeded.
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
Fixes #632911 .
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
c61dc2ec4a
qtmux: use helper to set atom flags from given uint
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
69d07466e0
qtmux: refactor configuring and sending of moov
...
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
35e028f33b
qtmux: refactor extra top-level atom handling
...
Also check a bit more for possible errors, and free proper items in such case.
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
79f565f962
qtmux: refactor slightly using buffer helper
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
1e3da91bd1
qtmux: fix misinforming comment
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
ce865cc374
qtmux: delegate mvex handling to atoms
...
... which keeps qtmux simpler.
2011-04-12 20:32:19 +01:00
Marc-André Lureau
2618cb03af
qtmux: add mvex/trex in header if fragmented
...
One "trex" is added per "trak". We don't support default values,
but the "trex" box is mandatory.
2011-04-12 20:32:18 +01:00
Marc-André Lureau
9100168eae
qtmux: add a couple of fourcc for fragmented mp4
2011-04-12 20:32:18 +01:00
Mark Nauwelaerts
c35074499a
qtmux: avoid removing temp file when error occurred
2011-04-12 20:32:18 +01:00
Marc-André Lureau
c2718fdd5f
qtmux: truncate buffer file after each send
2011-04-12 20:32:18 +01:00
Marc-André Lureau
3e6a415e52
qtmux: remove temp file when reset/finalize
2011-04-12 20:32:18 +01:00
Stefan Kost
1d1ffe234f
various (gst): add missing G_PARAM_STATIC_STRINGS flags
...
Canonicalize property names as needed.
2011-04-12 20:32:18 +01:00
Mark Nauwelaerts
a5edbe38a0
qtmux: prevent infinite loop when adjusting framerate
...
Fixes #632070 .
2011-04-12 20:32:18 +01:00
Thiago Santos
5ccc066c98
qtmux: Add G_PARAM_STATIC_STRINGS
...
Add G_PARAM_STATIC_STRINGS to qtmux properties
2011-04-12 20:32:18 +01:00
Thiago Santos
7065a65ec8
qtmux: Follow xmp serialization guidelines closer
...
qt and isom variants have different ways of serializing
xmp, follow these guidelines.
Those can be found in Adobe's xmp docs.
2011-04-12 20:32:18 +01:00
Mark Nauwelaerts
365b419216
qtmux: autodetect out-of-order input timestamps and determine DTS accordingly
...
Favour using input buffer timestamps for DTS, but fallback to using buffer
duration (accumulation) if input ts detected out-of-order.
Fixes #624212 .
2011-04-12 20:32:18 +01:00
Marc-André Lureau
9e79307431
qtmux: use caps bitrate at last chance
...
If we didn't get the stream's bitrate from one of the atoms,
try getting it from the caps as a last resort.
https://bugzilla.gnome.org/show_bug.cgi?id=625496
2011-04-12 20:32:18 +01:00
Marc-André Lureau
da6bfa460d
qtmux: btrt - max bitrate before average
...
According to iso base media file format, the max bitrate
is before the avg
https://bugzilla.gnome.org/show_bug.cgi?id=625496
2011-04-12 20:32:18 +01:00
Arun Raghavan
9e5c575b49
qtmux: Write 'btrt' atom for H.264 media if possible
...
This writes out the optional 'btrt' atom (MPEG4BitrateBox) for H.264
media if either or both of average and maximum bitrate are available for
the stream.
https://bugzilla.gnome.org/show_bug.cgi?id=623678
2011-04-12 20:32:18 +01:00
Arun Raghavan
4b4398c9dd
qtmux: Write avg/max bitrate to ESDS if available
...
This collects the 'bitrate' and 'maximum-bitrate' tags on the
corresponding pad and uses these to populate these fields in the ESDS
where applicable.
https://bugzilla.gnome.org/show_bug.cgi?id=623678
2011-04-12 20:32:18 +01:00
Edward Hervey
099ad6380f
qtmux: Don't use bogus codec/format tags
...
https://bugzilla.gnome.org/show_bug.cgi?id=623365
2011-04-12 20:32:17 +01:00
Thiago Santos
ac7f4cba67
qtmux: Write uint tags that don't have a complement
...
Write uint tags that have complements (e.g. track-number/
track-count) even when we only have one of them available
and set the other one to 0.
Fixes #622484
2011-04-12 20:32:17 +01:00
Edward Hervey
0fa380b199
qtmux: Remove the pad from our internal list before calling collectpads
...
Previously we would end up with the collectpaddata structure already freed.
This would result in a bogus iteration of mux->sinkpads (all the
GstQTPad being freed) and it wouldn't be removed from that list.
Finally, due to it not being removed from that list, we would end up
calling a bogus gst_qt_mux_pad_reset on those structures => SEGFAULT
2011-04-12 20:32:17 +01:00
David Schleef
4bb9ffa8fb
qtmux: Add VP8
2011-04-12 20:32:17 +01:00
Tim-Philipp Müller
48880abb5b
qtmux: use GStreamer package name and origin in the plugin info
2011-04-12 20:32:17 +01:00
Tim-Philipp Müller
1663c51243
qtmux: init debug category before using it
2011-04-12 20:32:17 +01:00
Benjamin Otte
6f27e4e488
Add -Wold-style-definition
...
and fix the warnings
2011-04-12 20:32:17 +01:00
Benjamin Otte
c4161b3c33
Add -Wwrite-strings
...
and fix its warnings
2011-04-12 20:32:17 +01:00
Benjamin Otte
62be91708f
Add -Wmissing-declarations -Wmissing-prototypes to configure flags
...
And fix all warnings
2011-04-12 20:32:17 +01:00
Benjamin Otte
af347a9545
gst_element_class_set_details => gst_element_class_set_details_simple
2011-04-12 20:32:17 +01:00
Thiago Santos
281ef57d2b
qtmux: Use xmp on mp4mux and gppmux too
...
Do not restrict xmp to qtmux, but use it too
on mp4mux and gppmux
2011-04-12 20:32:17 +01:00
Thiago Santos
a740adc137
qtmux: add xmp support
...
Adds xmp metatags adding to qtmux.
Fixes #609539
2011-04-12 20:32:16 +01:00
Tim-Philipp Müller
f9bba010fa
qtmux: fix GST_ELEMENT_ERROR usage
...
We need to pass (NULL) rather than NULL for empty arguments.
2011-04-12 20:32:16 +01:00
Rob Clark
ae0d32843e
qtmux: fix compile error
...
gst/quicktime/gstqtmoovrecover.c:268: warning: format not a string literal and no format arguments
https://bugzilla.gnome.org/show_bug.cgi?id=612454
2011-04-12 20:32:16 +01:00
Thiago Santos
8d86f34871
qtmux: Rename 'avc-sample' to 'avc' in caps
...
Fixes #606662
2011-04-12 20:32:16 +01:00
Michael Smith
8b3aca9070
qtmux: Take lock around use of (non-threadsafe) tagsetter interface.
2011-04-12 20:32:16 +01:00
Thiago Santos
953aa983bb
qtmux: write all udta children atoms
...
UDTA might have META and other children atoms
together, write them all.
2011-04-12 20:32:16 +01:00
Thiago Santos
c92785e1c2
qtmux: Use internal sink pads list
...
Due to GstCollectPads sink pads list being not reliably
iteratable (when not inside the collected function) this
patch adds a sink pads list to qtmux to be used when iterating
sink pads on reset function.
Fixes #609055
2011-04-12 20:32:16 +01:00
Mark Nauwelaerts
589f70955c
qtmux: prevent leaking hdlr name
2011-04-12 20:32:16 +01:00
Mark Nauwelaerts
bcc9fe0463
qtmux: support for ALAC
...
Fixes #580731 .
2011-04-12 20:32:16 +01:00
Mark Nauwelaerts
76b6997b55
qtmux: refactor building stsd entry 'wave' extension
2011-04-12 20:32:16 +01:00
Thiago Santos
528846c5a1
qtmux: atomsrecovery: Fix compilation problem
...
Fixes a compilation error due to unused function result.
2011-04-12 20:32:16 +01:00
Thiago Santos
b692f9ffb0
qtmux: Adds moov recovery feature
...
Adds a new property to qtmux that sets a path to a file to write
and update data about the moov atom (that is not writen till the
end of the file). If the pipeline/app crashes during execution it
might be possible to recover the movie using the qtmoovrecover element.
qtmoovrecover is an element that is also a pipeline. It is not
meant to be used with other elements (it has no pads). It is merely
a tool/utilitary to recover unfinished qtmux files.
Fixes #601576
2011-04-12 20:32:16 +01:00
Michael Smith
3c0e4d8267
qtmux: for fixed-sample size streams (PCM audio, etc) don't allocate an enormous
...
buffer that we then won't use at all.
2011-04-12 20:32:15 +01:00
Michael Smith
d784a8da6a
qtmux: handle muxing adpcm correctly.
2011-04-12 20:32:15 +01:00
Michael Smith
5f1941a000
qtmux: Set the mdia hdlr name field to what quicktime uses. Fix writing it
...
since it's not null-terminated. Improves compatibility with some hardware
players.
2011-04-12 20:32:15 +01:00
Michael Smith
2d3dc1653b
qtmux: endianness in gstreamer is an int, not boolean.
2011-04-12 20:32:15 +01:00
Mark Nauwelaerts
150f9ad64d
qtmux: streamline moov data memory storage
...
In particular, use arrays rather than (double) linked lists.
2011-04-12 20:32:15 +01:00
Thiago Santos
6dc515bfa7
qtmux: g_free is NULL safe
2011-04-12 20:32:15 +01:00