Commit graph

4930 commits

Author SHA1 Message Date
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
Benjamin Otte
6569e9587c [cleanup] Various style and cleanups
Various fixes for gtk-doc warnings and making functions without
arguments take void as parameter.
2011-04-12 20:32:15 +01:00
Thiago Santos
33bf180eaa 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
2011-04-12 20:32:15 +01:00
Thiago Santos
a5f22f03aa 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
2011-04-12 20:32:15 +01:00
Mark Nauwelaerts
6beda8aae0 qtmux: provide request pads under wider conditions
Fixes #606859.
2011-04-12 20:32:15 +01:00
Thiago Santos
45458c44a4 qtmux: Only accept avc-sample h264
qtmux and mp4mux should only accept h264 in avc-sample
format
2011-04-12 20:32:15 +01:00
Thiago Santos
87450c1b6e Rename aac's stream-format 'none' to 'raw'
Renames aac's stream-format from previous commits from none to
raw
2011-04-12 20:32:15 +01:00
Thiago Santos
cbc0b053ee qtmux: Only accept stream-format='none' aac
Only accept raw aac streams (stream-format=none) to avoid
generating invalid files.

Fixes #604925
2011-04-12 20:32:15 +01:00
Stefan Kost
02d1035571 qtmux: also add .h file changes to unbreak the build 2011-04-12 20:32:14 +01:00
Stefan Kost
05257feb87 qtmux: use correct names from template for request pads
The pads where names pad0, pad1, ...
2011-04-12 20:32:14 +01:00
Stefan Kost
7d9ed16bbe qtmux: move errors _new_pad to the end 2011-04-12 20:32:14 +01:00
Thiago Santos
592171b9b5 qtmux: Accept non-paired uint tags
Adds support for unpaired unsigned interger tags
2011-04-12 20:32:14 +01:00
Thiago Santos
9a6514e4a7 qtmux: Adds new tags
Maps more tags that are already posted by qtdemux

Fixes #599759
2011-04-12 20:32:14 +01:00
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
6b15001dc5 gst/quicktime/gstqtmux.c: Add some more safety/sanity checks in tag manipulation.
Original commit message from CVS:
* gst/quicktime/gstqtmux.c: (gst_qt_mux_add_metadata_tags):
Add some more safety/sanity checks in tag manipulation.
2011-04-12 20:32:09 +01:00
Thiago Sousa Santos
c991a04a93 Copy qtmux from revision 148 of the gst-qtmux repository.
Original commit message from CVS:
patch by: Thiago Sousa Santos <thiagossantos@gmail.com>
* configure.ac:
* gst/quicktime/Makefile.am:
* 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:
Copy qtmux from revision 148 of the gst-qtmux repository.
Fixes #550280.
2011-04-12 20:32:09 +01:00
Tim-Philipp Müller
ed96310d57 qtdemux: rename directory to quicktime to match plugin name
In preparation for qtmux moving to -good.
2011-04-12 19:29:56 +01:00
Mark Nauwelaerts
c539fc40dd flvdemux: simplify framerate fraction calculation 2011-04-12 11:50:08 +02:00
Leonardo Sandoval
071b90059f flvdemux: add width, height and framerate to caps when present on onMetaData
Fixes #640483.
2011-04-12 10:48:21 +02:00
Pascal Buhler
0d2d52856f rtpssrcdemux: Unknown SSRC is not fatal
https://bugzilla.gnome.org/show_bug.cgi?id=646966
2011-04-11 17:37:58 -04:00
Pascal Buhler
58ef84846e rtpsession: Number of active sources should be updated whenever the status of the source changes to active
Forward-ported by Olivier Crête

https://bugzilla.gnome.org/show_bug.cgi?id=646965
2011-04-11 17:37:36 -04:00
Havard Graff
53c88ae33e rtpmanager: ignore a BYE if it is sent with our internal SSRC
https://bugzilla.gnome.org/show_bug.cgi?id=646964
2011-04-11 17:34:12 -04:00
Thiago Santos
3d96f40f6a qtdemux: Adds more h264 fields to its caps
Adds alignment=au and stream-format=avc to h264 caps

Fixes #606662
2011-04-11 22:41:23 +02:00
Thibault Saunier
b541208b77 android: Make it ready for androgenizer
Remove the android/ top dir
Fixe the Makefile.am to be androgenized

To build gstreamer for android we are now using androgenizer which generates the needed Android.mk files.
Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 01:20:11 +02:00
Haakon Sporsheim
fd545e260d rtpgstpay: declare frag_offset to hold 32bits.
As specified in documenation above and below.

https://bugzilla.gnome.org/show_bug.cgi?id=646954
2011-04-09 23:14:18 +01:00
Havard Graff
93f022d6ab rtpsession: fix wrongly applied patch
Obviously recv_rtp_sink does not have much to do with send_rtcp_src...
See commit 046ff170.

https://bugzilla.gnome.org/show_bug.cgi?id=647263
2011-04-09 12:32:37 +01:00
Tim-Philipp Müller
ad0e4442e9 audioparsers: update for set_frame_props -> set_frame_rate API change 2011-04-08 18:07:18 +01:00
Mark Nauwelaerts
dbbf54720c mpegaudioparse: relax sync match a bit when draining
... to at least allow initial caps change (but no further caps jitter).
Fixes unit test again after previous change.
2011-04-08 18:07:18 +01:00
Tim-Philipp Müller
e067c554c2 aacparse, amrparse: gst_fooparse_xyz -> gst_foo_parse_xyz to match GstFooParse
See moving-plugins checklist.
2011-04-08 18:07:17 +01:00
Tim-Philipp Müller
e44456b481 audioparsers: hook up to build 2011-04-08 18:07:17 +01:00
Tim-Philipp Müller
7a2a088c53 audioparsers: port to new GstBaseParse in core 2011-04-08 18:07:17 +01:00
Mark Nauwelaerts
de54fa0699 mpegaudioparse: require tighter sync match when draining 2011-04-08 18:07:17 +01:00
Sebastian Dröge
f3a1dc9796 mpegaudioparse: Parse encoder delay and encoder padding from the LAME header if present 2011-04-08 18:07:17 +01:00
Arun Raghavan
a1ec326204 dcaparse: Bump rank to primary+1
Seems to work fine with a reasonably wide range of media, so bumping
rank.
2011-04-08 18:07:17 +01:00
Arun Raghavan
3050dbb8fe dcaparse: Expose frame size in caps
This exports the size of the frame (number of bytes from one sync point
to the next) as the "frame_size" field in caps.
2011-04-08 18:07:17 +01:00
Arun Raghavan
c0bc522f24 dcaparse: Expose block size in caps
This sets the "block_size" field on caps as the number of samples
encoded in one frame.
2011-04-08 18:07:17 +01:00
Tim-Philipp Müller
d92eba5563 mpegaudioparse: add FIXME for making the base class use xing seek tables better 2011-04-08 18:07:17 +01:00
Sebastian Dröge
bf9859ad61 dcaparse: Add depth and endianness to the caps
Some decoders can only handle specific endianness or a fixed
depth and this allows better negotiation.

Fixes bug #644208.
2011-04-08 18:07:17 +01:00
David Schleef
7d876727b3 Revert "aacparse: allow parsed frames on sink pad"
This reverts commit e49b89d5c5.
2011-04-08 18:07:17 +01:00
David Schleef
ef8edf91d9 aacparse: allow parsed frames on sink pad 2011-04-08 18:07:16 +01:00
David Schleef
9469aa92f3 baseparse: Create baseparse library 2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
f3f44f81c3 baseparse: tune QUERY_SEEKING response
Even if we currently do not have a duration yet, assume seekable if
it looks like we'll likely be able to determine it later on
(which coincides with needed information to perform seeking).

Fixes #641047.
2011-04-08 18:07:16 +01:00
Arun Raghavan
f0435d6fd6 baseparse: Update min/max bitrate before first posting them
This avoids posting an initial min-bitrate of G_UINTMAX and max-bitrate
of 0.

https://bugzilla.gnome.org/show_bug.cgi?id=641857
2011-04-08 18:07:16 +01:00