Commit graph

95 commits

Author SHA1 Message Date
Arun Raghavan
c28613d8db 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
2010-07-07 23:21:51 -03:00
Arun Raghavan
827e401e3a 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
2010-07-07 23:21:51 -03:00
Edward Hervey
e5ce188b1d qtmux: Don't use bogus codec/format tags
https://bugzilla.gnome.org/show_bug.cgi?id=623365
2010-07-02 12:46:08 +02:00
Thiago Santos
be3a4b7978 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
2010-06-25 20:19:20 -03:00
Edward Hervey
02cc3313b4 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
2010-06-21 19:42:50 +02:00
David Schleef
d1cfc50507 qtmux: Add VP8 2010-05-19 19:24:04 +02:00
Tim-Philipp Müller
4162f0d58e qtmux: use GStreamer package name and origin in the plugin info 2010-03-30 00:46:51 +01:00
Tim-Philipp Müller
0c97f9a9be qtmux: init debug category before using it 2010-03-25 00:20:54 +00:00
Benjamin Otte
240f494aa7 Add -Wold-style-definition
and fix the warnings
2010-03-22 16:56:03 +01:00
Benjamin Otte
33c2f5fb01 Add -Wwrite-strings
and fix its warnings
2010-03-22 13:16:33 +01:00
Benjamin Otte
f96e4f1581 Add -Wmissing-declarations -Wmissing-prototypes to configure flags
And fix all warnings
2010-03-21 21:39:18 +01:00
Benjamin Otte
775c7584fd gst_element_class_set_details => gst_element_class_set_details_simple 2010-03-18 22:46:41 +01:00
Thiago Santos
ca30c1d915 qtmux: Use xmp on mp4mux and gppmux too
Do not restrict xmp to qtmux, but use it too
on mp4mux and gppmux
2010-03-12 11:50:48 -03:00
Thiago Santos
5e88363430 qtmux: add xmp support
Adds xmp metatags adding to qtmux.

Fixes #609539
2010-03-11 16:42:31 -03:00
Tim-Philipp Müller
af5565a62b qtmux: fix GST_ELEMENT_ERROR usage
We need to pass (NULL) rather than NULL for empty arguments.
2010-03-11 17:21:52 +00:00
Rob Clark
71d0e513fa qtmux: fix compile error
gst/qtmux/gstqtmoovrecover.c:268: warning: format not a string literal and no format arguments

https://bugzilla.gnome.org/show_bug.cgi?id=612454
2010-03-11 17:52:00 +01:00
Thiago Santos
4a629eea25 qtmux: Rename 'avc-sample' to 'avc' in caps
Fixes #606662
2010-03-01 17:59:13 -03:00
Michael Smith
bcdb7d4851 qtmux: Take lock around use of (non-threadsafe) tagsetter interface. 2010-02-26 11:50:25 -08:00
Thiago Santos
0922dbc22e qtmux: write all udta children atoms
UDTA might have META and other children atoms
together, write them all.
2010-02-22 16:51:00 -03:00
Thiago Santos
ca136fe76b 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
2010-02-22 10:50:49 -03:00
Mark Nauwelaerts
1da893ba68 qtmux: prevent leaking hdlr name 2010-02-16 17:13:09 +01:00
Mark Nauwelaerts
eed915a6fb qtmux: support for ALAC
Fixes #580731.
2010-02-16 16:26:48 +01:00
Mark Nauwelaerts
fdfdda8f09 qtmux: refactor building stsd entry 'wave' extension 2010-02-16 16:26:45 +01:00
Thiago Santos
bcbdd12fb3 qtmux: atomsrecovery: Fix compilation problem
Fixes a compilation error due to unused function result.
2010-02-08 11:51:52 -03:00
Thiago Santos
e1c1405396 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
2010-02-02 14:03:38 -03:00
Michael Smith
80b3d80a58 qtmux: for fixed-sample size streams (PCM audio, etc) don't allocate an enormous
buffer that we then won't use at all.
2010-02-01 16:24:39 -08:00
Michael Smith
4b28a46bc7 qtmux: handle muxing adpcm correctly. 2010-02-01 16:23:48 -08:00
Michael Smith
e1fe7f357f 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.
2010-02-01 16:23:47 -08:00
Michael Smith
5753f8a3aa qtmux: endianness in gstreamer is an int, not boolean. 2010-02-01 16:23:47 -08:00
Mark Nauwelaerts
a42e890470 qtmux: streamline moov data memory storage
In particular, use arrays rather than (double) linked lists.
2010-01-27 12:56:18 +01:00
Thiago Santos
f815c46f5b qtmux: g_free is NULL safe 2010-01-26 13:44:04 -03:00
Benjamin Otte
89d9aaee48 [cleanup] Various style and cleanups
Various fixes for gtk-doc warnings and making functions without
arguments take void as parameter.
2010-01-20 13:30:48 +01:00
Thiago Santos
774b7b33cc 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
2010-01-14 19:09:44 -03:00
Thiago Santos
0b4c0890a5 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
2010-01-14 19:09:44 -03:00
Mark Nauwelaerts
dbc1f9f2d6 qtmux: provide request pads under wider conditions
Fixes #606859.
2010-01-13 19:30:45 +01:00
Thiago Santos
5a605b883b qtmux: Only accept avc-sample h264
qtmux and mp4mux should only accept h264 in avc-sample
format
2010-01-13 10:35:57 -03:00
Thiago Santos
a428ad82c7 Rename aac's stream-format 'none' to 'raw'
Renames aac's stream-format from previous commits from none to
raw
2010-01-11 13:42:48 -03:00
Thiago Santos
5b8b363310 qtmux: Only accept stream-format='none' aac
Only accept raw aac streams (stream-format=none) to avoid
generating invalid files.

Fixes #604925
2010-01-11 11:01:10 -03:00
Stefan Kost
80aa8e70ec qtmux: also add .h file changes to unbreak the build 2009-12-28 11:34:35 +02:00
Stefan Kost
48111e3f18 qtmux: use correct names from template for request pads
The pads where names pad0, pad1, ...
2009-12-27 23:51:50 +02:00
Stefan Kost
be0d7470cf qtmux: move errors _new_pad to the end 2009-12-27 23:32:58 +02:00
Thiago Santos
f822f65f34 qtmux: Accept non-paired uint tags
Adds support for unpaired unsigned interger tags
2009-12-21 13:58:30 -03:00
Thiago Santos
80a192b825 qtmux: Adds new tags
Maps more tags that are already posted by qtdemux

Fixes #599759
2009-12-21 12:05:37 -03:00
Thiago Santos
1b2e0eae67 qtmux: support more of j2k
Reads the new caps added to qtdemux by commit
c917d65e6d
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
2009-12-14 20:20:11 -03:00
Thiago Santos
c996ac4c53 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>
2009-12-14 08:41:48 -03:00
Michael Smith
830187fc0d qtmux: remove c++ comments and add some more comments. 2009-12-08 17:59:04 -08:00
Michael Smith
dd8d704bb9 qtmux: add ima adpcm support 2009-12-08 17:56:24 -08:00
Thiago Santos
b343536de0 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
2009-11-25 21:41:27 -03:00
Thiago Santos
379931cc6e 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.
2009-11-25 21:37:17 -03:00
Thiago Santos
c883c2511c qtmux: fix missing debug argument
Adds a missing debug argument
2009-11-19 18:29:41 -03:00