Marc-André Lureau [Thu, 2 Sep 2010 11:58:05 +0000 (13:58 +0200)]
qtmux: add ismlmux, for fragmented isml major brand
Mark Nauwelaerts [Fri, 19 Nov 2010 13:44:45 +0000 (14:44 +0100)]
qtmux: finalize sinkpads list
Marc-André Lureau [Thu, 22 Jul 2010 17:40:07 +0000 (19:40 +0200)]
qtmux: add moov in streamheader
Marc-André Lureau [Fri, 6 Aug 2010 11:26:27 +0000 (13:26 +0200)]
qtmux: add streamable property to avoid building fragmented mfra index
Mark Nauwelaerts [Thu, 18 Nov 2010 15:48:06 +0000 (16:48 +0100)]
qtmux: add mfra to fragmented file
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
Mark Nauwelaerts [Mon, 15 Nov 2010 14:17:59 +0000 (15:17 +0100)]
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.
Mark Nauwelaerts [Mon, 15 Nov 2010 14:12:45 +0000 (15:12 +0100)]
qtmux: use helper to set atom flags from given uint
Mark Nauwelaerts [Tue, 9 Nov 2010 15:49:07 +0000 (16:49 +0100)]
qtmux: refactor configuring and sending of moov
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
Mark Nauwelaerts [Tue, 9 Nov 2010 14:54:44 +0000 (15:54 +0100)]
qtmux: refactor extra top-level atom handling
Also check a bit more for possible errors, and free proper items in such case.
Mark Nauwelaerts [Tue, 9 Nov 2010 14:01:15 +0000 (15:01 +0100)]
qtmux: refactor slightly using buffer helper
Mark Nauwelaerts [Fri, 5 Nov 2010 12:48:57 +0000 (13:48 +0100)]
qtmux: fix misinforming comment
Mark Nauwelaerts [Fri, 5 Nov 2010 11:08:15 +0000 (12:08 +0100)]
qtmux: delegate mvex handling to atoms
... which keeps qtmux simpler.
Marc-André Lureau [Mon, 28 Sep 2009 14:11:35 +0000 (16:11 +0200)]
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.
Marc-André Lureau [Mon, 28 Sep 2009 11:01:30 +0000 (13:01 +0200)]
qtmux: add a couple of fourcc for fragmented mp4
Mark Nauwelaerts [Fri, 5 Nov 2010 10:08:01 +0000 (11:08 +0100)]
qtmux: avoid removing temp file when error occurred
Marc-André Lureau [Wed, 30 Sep 2009 15:16:30 +0000 (17:16 +0200)]
qtmux: truncate buffer file after each send
Marc-André Lureau [Mon, 28 Sep 2009 14:53:51 +0000 (16:53 +0200)]
qtmux: remove temp file when reset/finalize
Stefan Kost [Tue, 19 Oct 2010 10:43:14 +0000 (13:43 +0300)]
various (gst): add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed.
Mark Nauwelaerts [Wed, 13 Oct 2010 15:47:29 +0000 (17:47 +0200)]
qtmux: prevent infinite loop when adjusting framerate
Fixes #632070.
Thiago Santos [Mon, 4 Oct 2010 02:45:46 +0000 (23:45 -0300)]
qtmux: Add G_PARAM_STATIC_STRINGS
Add G_PARAM_STATIC_STRINGS to qtmux properties
Thiago Santos [Wed, 15 Sep 2010 20:54:49 +0000 (17:54 -0300)]
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.
Mark Nauwelaerts [Mon, 16 Aug 2010 10:36:24 +0000 (12:36 +0200)]
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.
Marc-André Lureau [Wed, 28 Jul 2010 14:15:53 +0000 (16:15 +0200)]
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
Marc-André Lureau [Wed, 28 Jul 2010 14:12:11 +0000 (16:12 +0200)]
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
Arun Raghavan [Tue, 6 Jul 2010 09:18:08 +0000 (14:48 +0530)]
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
Arun Raghavan [Mon, 5 Jul 2010 08:39:50 +0000 (14:09 +0530)]
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
Edward Hervey [Fri, 2 Jul 2010 10:45:20 +0000 (12:45 +0200)]
qtmux: Don't use bogus codec/format tags
https://bugzilla.gnome.org/show_bug.cgi?id=623365
Thiago Santos [Fri, 25 Jun 2010 23:19:20 +0000 (20:19 -0300)]
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
Edward Hervey [Mon, 21 Jun 2010 17:39:54 +0000 (19:39 +0200)]
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
David Schleef [Thu, 13 May 2010 01:50:34 +0000 (18:50 -0700)]
qtmux: Add VP8
Tim-Philipp Müller [Tue, 11 May 2010 12:15:37 +0000 (13:15 +0100)]
tests: don't fail tagschecking test if qtdemux is not available or too old
Tim-Philipp Müller [Sat, 27 Mar 2010 09:46:30 +0000 (09:46 +0000)]
qtmux: use GStreamer package name and origin in the plugin info
Thiago Santos [Tue, 23 Mar 2010 20:34:30 +0000 (17:34 -0300)]
tests: tagschecking: New tags tests
Adds new tags checking tests.
Tim-Philipp Müller [Thu, 25 Mar 2010 00:20:54 +0000 (00:20 +0000)]
qtmux: init debug category before using it
Benjamin Otte [Mon, 22 Mar 2010 15:56:03 +0000 (16:56 +0100)]
Add -Wold-style-definition
and fix the warnings
Benjamin Otte [Mon, 22 Mar 2010 12:16:33 +0000 (13:16 +0100)]
Add -Wwrite-strings
and fix its warnings
Benjamin Otte [Sun, 21 Mar 2010 20:39:18 +0000 (21:39 +0100)]
Add -Wmissing-declarations -Wmissing-prototypes to configure flags
And fix all warnings
Benjamin Otte [Thu, 18 Mar 2010 16:30:26 +0000 (17:30 +0100)]
gst_element_class_set_details => gst_element_class_set_details_simple
Thiago Santos [Fri, 12 Mar 2010 14:28:51 +0000 (11:28 -0300)]
tests: tagschecking: Improvements and new geo-location tests
Makes some improvements to tagschecking.c, making it use
fakesrc instead of videotestsrc and allowing to set input
caps so that more muxers can be used. Previously we could
only use those that accepted raw video caps.
Also adds some tests for geo-location tags
Thiago Santos [Fri, 12 Mar 2010 13:53:36 +0000 (10:53 -0300)]
qtmux: Use xmp on mp4mux and gppmux too
Do not restrict xmp to qtmux, but use it too
on mp4mux and gppmux
Thiago Santos [Fri, 5 Mar 2010 16:33:37 +0000 (13:33 -0300)]
check: tagschecking: tests for tags serialization in muxers
Adds a check unit test that aims to test tags serialization
and deserialization consistency (in muxers). It provides a
basic function that allows one to easily specify tags, a
muxer and a demuxer and a test will be done to check if
the tags have been consistently muxed and demuxed
Thiago Santos [Mon, 22 Feb 2010 19:45:34 +0000 (16:45 -0300)]
qtmux: add xmp support
Adds xmp metatags adding to qtmux.
Fixes #609539
Tim-Philipp Müller [Thu, 11 Mar 2010 17:17:15 +0000 (17:17 +0000)]
qtmux: fix GST_ELEMENT_ERROR usage
We need to pass (NULL) rather than NULL for empty arguments.
Rob Clark [Wed, 10 Mar 2010 16:23:23 +0000 (10:23 -0600)]
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
Thiago Santos [Mon, 22 Feb 2010 22:38:15 +0000 (19:38 -0300)]
qtmux: Rename 'avc-sample' to 'avc' in caps
Fixes #606662
Michael Smith [Fri, 26 Feb 2010 19:50:25 +0000 (11:50 -0800)]
qtmux: Take lock around use of (non-threadsafe) tagsetter interface.
Thiago Santos [Mon, 22 Feb 2010 19:51:00 +0000 (16:51 -0300)]
qtmux: write all udta children atoms
UDTA might have META and other children atoms
together, write them all.
Thiago Santos [Mon, 22 Feb 2010 13:48:11 +0000 (10:48 -0300)]
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
Mark Nauwelaerts [Tue, 16 Feb 2010 16:13:09 +0000 (17:13 +0100)]
qtmux: prevent leaking hdlr name
Mark Nauwelaerts [Tue, 16 Feb 2010 15:24:12 +0000 (16:24 +0100)]
qtmux: support for ALAC
Fixes #580731.
Mark Nauwelaerts [Tue, 16 Feb 2010 13:19:04 +0000 (14:19 +0100)]
qtmux: refactor building stsd entry 'wave' extension
Thiago Santos [Mon, 8 Feb 2010 14:51:52 +0000 (11:51 -0300)]
qtmux: atomsrecovery: Fix compilation problem
Fixes a compilation error due to unused function result.
Thiago Santos [Sat, 12 Dec 2009 19:07:15 +0000 (16:07 -0300)]
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
Michael Smith [Thu, 28 Jan 2010 03:06:53 +0000 (19:06 -0800)]
qtmux: for fixed-sample size streams (PCM audio, etc) don't allocate an enormous
buffer that we then won't use at all.
Michael Smith [Wed, 27 Jan 2010 23:37:37 +0000 (15:37 -0800)]
qtmux: handle muxing adpcm correctly.
Michael Smith [Fri, 22 Jan 2010 21:36:04 +0000 (13:36 -0800)]
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.
Michael Smith [Fri, 22 Jan 2010 21:30:07 +0000 (13:30 -0800)]
qtmux: endianness in gstreamer is an int, not boolean.
Mark Nauwelaerts [Tue, 26 Jan 2010 16:54:28 +0000 (17:54 +0100)]
qtmux: streamline moov data memory storage
In particular, use arrays rather than (double) linked lists.
Thiago Santos [Tue, 26 Jan 2010 16:44:04 +0000 (13:44 -0300)]
qtmux: g_free is NULL safe
Benjamin Otte [Wed, 20 Jan 2010 12:30:48 +0000 (13:30 +0100)]
[cleanup] Various style and cleanups
Various fixes for gtk-doc warnings and making functions without
arguments take void as parameter.
Thiago Santos [Thu, 14 Jan 2010 11:09:03 +0000 (08:09 -0300)]
qtmux: Actually use new caps info on renegotiation
Following the previous qtmux commit, this patch tries
to use the new info added to the caps to fill the 'trak'
atom's fields and children atoms. This way qtmux will
use the late added 'codec_data' when h264parse adds
it in the following pipeline:
videotestsrc num-buffers=200 ! x264enc byte-stream=true ! \
h264parse output-format=0 ! qtmux ! \
filesink location=test.mov
Thiago Santos [Thu, 14 Jan 2010 02:33:51 +0000 (23:33 -0300)]
qtmux: Do caps renegotiation when it only adds fields
Qtmux can accept caps renegotiation if the new caps is a
superset of the old one, meaning upstream added new info to
the caps. This patch still doesn't make qtmux update any
atoms info from the new info, but at least it doesn't
reject the new caps anymore.
A pipeline that reproduces this use case is:
videotestsrc num-buffers=200 ! x264enc byte-stream=true ! \
h264parse output-format=0 ! qtmux ! \
filesink location=test.mov
Mark Nauwelaerts [Wed, 13 Jan 2010 18:30:45 +0000 (19:30 +0100)]
qtmux: provide request pads under wider conditions
Fixes #606859.
Thiago Santos [Wed, 13 Jan 2010 13:35:00 +0000 (10:35 -0300)]
qtmux: Only accept avc-sample h264
qtmux and mp4mux should only accept h264 in avc-sample
format
Thiago Santos [Mon, 11 Jan 2010 16:13:41 +0000 (13:13 -0300)]
Rename aac's stream-format 'none' to 'raw'
Renames aac's stream-format from previous commits from none to
raw
Thiago Santos [Mon, 11 Jan 2010 13:34:32 +0000 (10:34 -0300)]
qtmux: Only accept stream-format='none' aac
Only accept raw aac streams (stream-format=none) to avoid
generating invalid files.
Fixes #604925
Stefan Kost [Mon, 28 Dec 2009 09:34:35 +0000 (11:34 +0200)]
qtmux: also add .h file changes to unbreak the build
Stefan Kost [Sun, 27 Dec 2009 21:51:50 +0000 (23:51 +0200)]
qtmux: use correct names from template for request pads
The pads where names pad0, pad1, ...
Stefan Kost [Sun, 27 Dec 2009 21:32:58 +0000 (23:32 +0200)]
qtmux: move errors _new_pad to the end
Thiago Santos [Mon, 21 Dec 2009 16:58:30 +0000 (13:58 -0300)]
qtmux: Accept non-paired uint tags
Adds support for unpaired unsigned interger tags
Thiago Santos [Mon, 21 Dec 2009 15:05:37 +0000 (12:05 -0300)]
qtmux: Adds new tags
Maps more tags that are already posted by qtdemux
Fixes #599759
Thiago Santos [Fri, 11 Dec 2009 01:20:45 +0000 (22:20 -0300)]
qtmux: support more of j2k
Reads the new caps added to qtdemux by commit
c917d65e6df0b5d585f905c7ad78a8a0a44b2cb0
and adds its corresponding atoms.
Also adds support for image/x-jpc as it is the same
as image/x-jp2, except that the buffers need to be
boxed inside a jp2c isom box before muxing. To solve
this the QTPads now have a function that (if
not NULL) is called when a buffer is collected. This
function returns a replacement to the current collected
buffer.
Fixes #598916
Thiago Santos [Thu, 10 Dec 2009 19:53:19 +0000 (16:53 -0300)]
qtmux: Maps 'classification' tag for 3gpp files
Adds the mapping of 'classification' tags to writing of
'clsf' atoms for gppmux.
Based on a patch by: Lasse Laukkanen <ext-lasse.2.laukkanen@nokia.com>
Michael Smith [Wed, 9 Dec 2009 01:59:04 +0000 (17:59 -0800)]
qtmux: remove c++ comments and add some more comments.
Michael Smith [Wed, 9 Dec 2009 01:55:56 +0000 (17:55 -0800)]
qtmux: add ima adpcm support
Thiago Santos [Thu, 26 Nov 2009 00:41:27 +0000 (21:41 -0300)]
qtmux: replace _scale with _scale_round
Use the rounding version for improved sync between streams.
Small variations in the duration when muxing might lead to
cumullative wrong timestamping when demuxing.
Fixes #602936
Thiago Santos [Tue, 24 Nov 2009 19:16:56 +0000 (16:16 -0300)]
qtmux: use timestamps for muxing
Try to use timestamps even when the stream has out of order
timestamps, only fall back to durations when we detect an
out of order buffer. Improves sync between streams.
Thiago Santos [Thu, 19 Nov 2009 21:28:52 +0000 (18:28 -0300)]
qtmux: fix missing debug argument
Adds a missing debug argument
Mark Nauwelaerts [Thu, 19 Nov 2009 10:36:14 +0000 (11:36 +0100)]
qtmux: fix misinforming debug statement
Mark Nauwelaerts [Thu, 19 Nov 2009 10:14:57 +0000 (11:14 +0100)]
qtmux: ensure writable buffer metadata before setting caps
Thiago Santos [Thu, 29 Oct 2009 11:36:02 +0000 (08:36 -0300)]
qtmux: support for SVQ3
Adds support for muxing SVQ3 content. Usually this format
has decoder info that must be passed in the 'seqh' field
in the caps. It is also good to add the gama atom to make
quicktime not crash.
Fixes #587922
Thiago Sousa Santos [Tue, 17 Nov 2009 12:26:05 +0000 (09:26 -0300)]
qtmux: do not leak a string
Frees a string after use. Also does some code organization
Thiago Sousa Santos [Mon, 16 Nov 2009 17:57:53 +0000 (14:57 -0300)]
qtmux: do not add size to the pointer variable
Do not wrongly add the result of the function to the
pointer to the buffer size. Instead, check the result
to see if the serialization was ok.
Based on a patch by: "Carsten Kroll <car@ximidi.com>"
Fixes #602106
Thiago Santos [Fri, 6 Nov 2009 13:34:39 +0000 (10:34 -0300)]
qtmux: handle 'late' streams
When muxing streams, some can start later than others. qtmux
now handle this by adding an empty edts entry with the
duration of the 'lateness' to the stream's trak.
It tolerates a stream to be up to 0.1s late.
Fixes #586848
Thiago Santos [Fri, 6 Nov 2009 00:35:56 +0000 (21:35 -0300)]
qtmux: adds the EDTS and ELTS atoms to atoms.c
These atoms will be useful for signaling streams
that start later in the file. As well for adding
edit lists if needed sometime later.
Thiago Santos [Fri, 6 Nov 2009 03:46:12 +0000 (00:46 -0300)]
qtmux: Adding some ifs for protection
Adding somes ifs to protect against warning conditions
that might happen when upstream element is not sane
Fixes #600895
Thiago Santos [Fri, 16 Oct 2009 13:47:32 +0000 (10:47 -0300)]
gppmux: Add support for 3gr6
Keep track of the chunk durations to be able to add 3gr6
brand if it is a faststart file and the longest chunk is
smaller than a sec. Implemented according to 3gpp
TS 26.244 v6.4.0 (2005-09)
Fixes #584361
Thiago Santos [Fri, 16 Oct 2009 00:11:16 +0000 (21:11 -0300)]
qtmux: Only push ftyp later (in faststart mode)
In faststart mode, there is no need to send the ftyp
right at the beginning of the stream. Waiting and sending it
only later (when the moov atom is ready to be sent) provides
us with more information about the stream and we can better
select the compatible brands.
Thiago Santos [Thu, 15 Oct 2009 20:51:39 +0000 (17:51 -0300)]
qtmux: Improve error message
Improve error message when we can't get or estimate the
timestamp/duration of a buffer
Marc-André Lureau [Tue, 29 Sep 2009 13:47:13 +0000 (15:47 +0200)]
qtmux: fix flags_as_uint to flags[]
Jan Urbanski [Tue, 4 Aug 2009 10:58:35 +0000 (12:58 +0200)]
qtmux: Don't require endianness field for 8 bit raw audio
Fixes bug #590360.
Edward Hervey [Thu, 25 Jun 2009 06:38:21 +0000 (08:38 +0200)]
qtmux: Remove unused variable.
Edward Hervey [Thu, 25 Jun 2009 06:38:10 +0000 (08:38 +0200)]
qtmux: Fix debug statement.
Mark Nauwelaerts [Thu, 11 Jun 2009 13:54:42 +0000 (15:54 +0200)]
qtmux: only use (64-bit) extended (mdat) atom size if needed. Fixes #585319.
Mark Nauwelaerts [Wed, 10 Jun 2009 12:46:14 +0000 (14:46 +0200)]
qtmux: set default movie timescale to microsecond units
Mark Nauwelaerts [Wed, 10 Jun 2009 11:24:20 +0000 (13:24 +0200)]
qtmux: compress/optimize stsc writing
Mark Nauwelaerts [Wed, 10 Jun 2009 10:42:44 +0000 (12:42 +0200)]
qtmux: add 3GP style tagging (and refactor appropriately)
Mark Nauwelaerts [Mon, 1 Jun 2009 21:00:44 +0000 (23:00 +0200)]
qtmux (and variants): handle pixel-aspect-ratio. Fixes #584358.
Mark Nauwelaerts [Mon, 1 Jun 2009 20:42:08 +0000 (22:42 +0200)]
gppmux: enhance ftyp brand heuristic. Fixes #584360.
Mark Nauwelaerts [Thu, 28 May 2009 11:56:10 +0000 (13:56 +0200)]
qtmux: use different stsd atom type for H263 for ISO and QT variants
Fixes #584114.