Commit graph

9853 commits

Author SHA1 Message Date
Thiago Santos
c5f6e74db9 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
2011-04-12 20:32:14 +01:00
Thiago Santos
083f825c43 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>
2011-04-12 20:32:14 +01:00
Michael Smith
a597bd7273 qtmux: remove c++ comments and add some more comments. 2011-04-12 20:32:14 +01:00
Michael Smith
d74567ca94 qtmux: add ima adpcm support 2011-04-12 20:32:14 +01:00
Thiago Santos
79a9031c16 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
2011-04-12 20:32:14 +01:00
Thiago Santos
259c204f42 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.
2011-04-12 20:32:14 +01:00
Thiago Santos
e62be695a1 qtmux: fix missing debug argument
Adds a missing debug argument
2011-04-12 20:32:14 +01:00
Mark Nauwelaerts
7bf67a6e3d qtmux: fix misinforming debug statement 2011-04-12 20:32:13 +01:00
Mark Nauwelaerts
a64873e15a qtmux: ensure writable buffer metadata before setting caps 2011-04-12 20:32:13 +01:00
Thiago Santos
496bd01a0f 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
2011-04-12 20:32:13 +01:00
Thiago Sousa Santos
d24d1e40ea qtmux: do not leak a string
Frees a string after use. Also does some code organization
2011-04-12 20:32:13 +01:00
Thiago Sousa Santos
2f90d33509 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
2011-04-12 20:32:13 +01:00
Thiago Santos
8d80e93512 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
2011-04-12 20:32:13 +01:00
Thiago Santos
22e4fb92a9 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.
2011-04-12 20:32:13 +01:00
Thiago Santos
009d104a34 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
2011-04-12 20:32:13 +01:00
Thiago Santos
4ff2fad6a0 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
2011-04-12 20:32:13 +01:00
Thiago Santos
e8c21f14cc 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.
2011-04-12 20:32:13 +01:00
Thiago Santos
99f47c4b17 qtmux: Improve error message
Improve error message when we can't get or estimate the
timestamp/duration of a buffer
2011-04-12 20:32:13 +01:00
Marc-André Lureau
0dec6cbbba qtmux: fix flags_as_uint to flags[] 2011-04-12 20:32:13 +01:00
Jan Urbanski
d43db1bc8d qtmux: Don't require endianness field for 8 bit raw audio
Fixes bug #590360.
2011-04-12 20:32:12 +01:00
Edward Hervey
ac88adca6e qtmux: Remove unused variable. 2011-04-12 20:32:12 +01:00
Edward Hervey
430953e8d2 qtmux: Fix debug statement. 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
c3f462d9b2 qtmux: only use (64-bit) extended (mdat) atom size if needed. Fixes #585319. 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
55afb65f8c qtmux: set default movie timescale to microsecond units 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
579a7edb3a qtmux: compress/optimize stsc writing 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
7c9a6093d8 qtmux: add 3GP style tagging (and refactor appropriately) 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
65b69ddc99 qtmux (and variants): handle pixel-aspect-ratio. Fixes #584358. 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
7ab5ff91ad gppmux: enhance ftyp brand heuristic. Fixes #584360. 2011-04-12 20:32:12 +01:00
Mark Nauwelaerts
4dbeaeefe3 qtmux: use different stsd atom type for H263 for ISO and QT variants
Fixes #584114.
2011-04-12 20:32:12 +01:00
Thiago Santos
8e95c502f7 [qtmux] Fixes segfault when adding a blob as first tag.
Moves tags data initialization to the function that actually appends
the tags to the list. Fixes #582702

Also fixes some style caught by the pre-commit hook.
2011-04-12 20:32:11 +01:00
Mark Nauwelaerts
0643bf85bc gppmux: Add MPEG-4 part 2 to supported formats. Fixes #581593. 2011-04-12 20:32:11 +01:00
Christian Schaller
f77f7c3979 Add ranks to various muxers and encoders in -bad 2011-04-12 20:32:11 +01:00
Thiago Santos
cea5e53465 qtmux: changes caps of src pads to video/quicktime, variant=something
Take a look at bug #580005 for further info.
2011-04-12 20:32:11 +01:00
Thiago Santos
6f763db3b8 mp4mux: Changes src caps to application/x-iso-mp4
Fixes #580005
2011-04-12 20:32:11 +01:00
Mark Nauwelaerts
4da6cd7c36 qtmux: fix reusing element
State change to READY and then back to PAUSED should still provide
the proper structures as are otherwise freshly available following
a request_new_pad.

Pointed out by Thiago Santos.
2011-04-12 20:32:11 +01:00
Wim Taymans
1fbca3b89d qtmux: fix includes for lseek
--
2011-04-12 20:32:11 +01:00
LRN
61d88bd7da win32: fix seeking in large files
Use _lseeki64() on Windows to seek in large files.
Fixes #576021.
2011-04-12 20:32:11 +01:00
Edward Hervey
f383b6a5b4 qtmux: Be a bit more verbose in our debug message when failing to renegotiate 2011-04-12 20:32:11 +01:00
Mark Nauwelaerts
ffd2ff3ee6 Additional media type support in qtmux (and friends).
Support AMR and H263 for both qtmux and gppmux,
and add extensions in sample table description.
2011-04-12 20:32:11 +01:00
David Schleef
975c375b09 gst/quicktime/gstqtmuxmap.c: Add video/x-qt-part and video/x-m4-part to caps so schroenc/schroparse can use it. Fixes #5...
Original commit message from CVS:
* gst/quicktime/gstqtmuxmap.c: Add video/x-qt-part and video/x-m4-part
to caps so schroenc/schroparse can use it.  Fixes #566958
2011-04-12 20:32:11 +01:00
Mark Nauwelaerts
c201ab463b gst/quicktime/gstqtmux.c: Do not tempt or suggest to violate gst_collect_pads API specification.
Original commit message from CVS:
* gst/quicktime/gstqtmux.c: (gst_qt_mux_change_state):
Do not tempt or suggest to violate gst_collect_pads API specification.
2011-04-12 20:32:11 +01:00
Mark Nauwelaerts
9b0cbfebd6 gst/quicktime/: Dual license qtmux LGPL/MIT. Fixes #564232.
Original commit message from CVS:
* gst/quicktime/atoms.c:
* gst/quicktime/atoms.h:
* gst/quicktime/descriptors.c:
* gst/quicktime/descriptors.h:
* gst/quicktime/fourcc.h:
* gst/quicktime/ftypcc.h:
* gst/quicktime/gstqtmux.c:
* gst/quicktime/gstqtmux.h:
* gst/quicktime/gstqtmuxmap.c:
* gst/quicktime/gstqtmuxmap.h:
* gst/quicktime/properties.c:
* gst/quicktime/properties.h:
Dual license qtmux LGPL/MIT.  Fixes #564232.
2011-04-12 20:32:10 +01:00
Stefan Kost
6a47f1f4b5 Totally remove the internal taglists and fully use tagsetter. Fixes various tag muxing issues.
Original commit message from CVS:
* ext/celt/gstceltenc.c:
* ext/celt/gstceltenc.h:
* ext/metadata/gstmetadatamux.c:
* gst/quicktime/gstqtmux.c:
* gst/quicktime/gstqtmux.h:
Totally remove the internal taglists and fully use tagsetter. Fixes
various tag muxing issues.
2011-04-12 20:32:10 +01:00
Mark Nauwelaerts
877f7fb3ab gst/quicktime/atoms.c: Fix mj2 sample description metadata construction.
Original commit message from CVS:
* gst/quicktime/atoms.c: (build_jp2h_extension):
Fix mj2 sample description metadata construction.
2011-04-12 20:32:10 +01:00
David Schleef
71eacf835e gst/quicktime/gstqtmux.c: Quiet a debugging message that I recently added.
Original commit message from CVS:
* gst/quicktime/gstqtmux.c: Quiet a debugging message that I recently
added.
2011-04-12 20:32:10 +01:00
David Schleef
b11186eba4 gst/quicktime/gstqtmux.*: Use dts from GST_BUFFER_OFFSET_END() for video/x-qt-part.
Original commit message from CVS:
* gst/quicktime/gstqtmux.c:
* gst/quicktime/gstqtmux.h:
Use dts from GST_BUFFER_OFFSET_END() for video/x-qt-part.
2011-04-12 20:32:10 +01:00
Mark Nauwelaerts
4f64f6c0e1 gst/quicktime/: Revert previous commit.
Original commit message from CVS:
* gst/quicktime/atoms.c:
* gst/quicktime/atoms.h:
* gst/quicktime/descriptors.c:
* gst/quicktime/descriptors.h:
* gst/quicktime/fourcc.h:
* gst/quicktime/ftypcc.h:
* gst/quicktime/gstqtmux.c:
* gst/quicktime/gstqtmux.h:
* gst/quicktime/gstqtmuxmap.c:
* gst/quicktime/gstqtmuxmap.h:
* gst/quicktime/properties.c:
* gst/quicktime/properties.h:
Revert previous commit.
2011-04-12 20:32:10 +01:00
Mark Nauwelaerts
af97040b98 gst/quicktime/: Dual license LGPL/MIT, as apparently supposed to.
Original commit message from CVS:
* gst/quicktime/atoms.c:
* gst/quicktime/atoms.h:
* gst/quicktime/descriptors.c:
* gst/quicktime/descriptors.h:
* gst/quicktime/fourcc.h:
* gst/quicktime/ftypcc.h:
* gst/quicktime/gstqtmux.c:
* gst/quicktime/gstqtmux.h:
* gst/quicktime/gstqtmuxmap.c:
* gst/quicktime/gstqtmuxmap.h:
* gst/quicktime/properties.c:
* gst/quicktime/properties.h:
Dual license LGPL/MIT, as apparently supposed to.
2011-04-12 20:32:10 +01:00
Mark Nauwelaerts
3f72fadc76 gst/quicktime/: Cut detour in sample description extension construction.
Original commit message from CVS:
* gst/quicktime/atoms.c: (build_esds_extension),
(build_mov_aac_extension), (build_jp2h_extension),
(build_codec_data_extension):
* gst/quicktime/atoms.h:
* gst/quicktime/fourcc.h:
* gst/quicktime/gstqtmux.c: (gst_qt_mux_audio_sink_set_caps),
(gst_qt_mux_video_sink_set_caps):
* gst/quicktime/gstqtmuxmap.c: (gst_qt_mux_map_format_to_header):
Cut detour in sample description extension construction.
Also actually implement ISO JPEG2000 mj2 format.
2011-04-12 20:32:10 +01:00
Mark Nauwelaerts
2196cf6b49 tests/check/: Add unit test for qtmux.
Original commit message from CVS:
* tests/check/Makefile.am:
* tests/check/elements/qtmux.c: (setup_src_pad),
(teardown_src_pad), (setup_qtmux), (cleanup_qtmux),
(check_qtmux_pad), (GST_START_TEST), (qtmux_suite), (main):
Add unit test for qtmux.
2011-04-12 20:32:09 +01:00