Commit graph

5197 commits

Author SHA1 Message Date
Thiago Santos
aba8000188 qtmux: Adding GstTagXmpWriter interface
Adds GstTagXmpWriter interface support to qtmux
2011-04-12 20:32:21 +01:00
Mark Nauwelaerts
d178329eb0 qtmux: use running time for synchronization
See also #432612.
2011-04-12 20:32:21 +01:00
Mark Nauwelaerts
a4fad64141 qtmux: provide for PTS metadata when so configured
... and not only when sort-of feeling like it.
In any case, if it turns out all really is in order,
and presumably DTS == PTS, then no ctts will be produced anyway.
2011-04-12 20:32:21 +01:00
Mark Nauwelaerts
31c26a4551 qtmux: also track original PTS buffer timestamp in reorder dts-method 2011-04-12 20:32:21 +01:00
Edward Hervey
0a884e5620 Revert "Check that collectpads exists before removing pad"
This reverts commit 6d8740476c.

Depends on a core commit that was reverted
2011-04-12 20:32:21 +01:00
David Schleef
fe3a5c3f08 Check that collectpads exists before removing pad
The core now calls release pad from finalize, at which point
the collectpads might have already been freed.
2011-04-12 20:32:21 +01:00
Mark Nauwelaerts
20e4bdee32 qtmux: set src pads when starting file
... rather than at _init time, so they are also available following a
pad (de)activation cycle.

https://bugzilla.gnome.org/show_bug.cgi?id=639338
2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
ae644937fc qtmux: adjust nasty case timestamp tracking
That is, all sorts of problems arise with re-ordered input timestamps that
tend to defy automagic handling for every case, so allow for a few variations
that can be tried depending on circumstances.

Also try to document accordingly.

Also fixes #638288.
2011-04-12 20:32:20 +01:00
Felipe Contreras
62c728464e qtmux: get rid of timestamp overprotectiveness
Signed-off-by: Felipe Contreras <felipe.contreras@nokia.com>
2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
b6945d4afe qtmux: simplify and fix pts_offset storing
In particular, only write a ctts atom if and only if ever a non-zero offset.
2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
b852dde2db qtmux: add some more documentation 2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
60c8ed21d5 qtmux: remove large-file property
Rather, auto-determine if 64-bits fields are needed for a valid result, and
stick to plain 32-bits if not needed.

API: GstQTMux:large-file (removed)
2011-04-12 20:32:20 +01:00
Sebastian Dröge
d8a690e64c qtmux: Free AtomInfo structs 2011-04-12 20:32:20 +01:00
Sebastian Dröge
6e350ec961 qtmux: Free tag string after use 2011-04-12 20:32:20 +01:00
Lasse Laukkanen
02bdefd9ba qtmux: allow zero duration tracks 2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
07be810e0e qtmux: add documentation 2011-04-12 20:32:20 +01:00
David Hoyt
62484ac805 qtmux: handle msvc ftruncate incompatibility
Fixes #636185.
2011-04-12 20:32:20 +01:00
Alejandro Gonzalez
04b0a37f87 qtmux: gst_qtmux_check_difference verify before subtract
Avoid negative overflow by checking the order of operands
on subtraction of unsigned integers.

https://bugzilla.gnome.org/show_bug.cgi?id=635878
2011-04-12 20:32:20 +01:00
Mark Nauwelaerts
9c198ffeed qtmux: remove remnant of obsolete property 2011-04-12 20:32:20 +01:00
Marc-André Lureau
bee00aa70f qtmux: allow specifying trak timescale
This is mainly because Smoothstreaming client are broken and don't
take the TimeScale property into account.
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
92b8a00ac8 qtmux: include sdtp atoms for ismv fragmented files
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
f490e3a868 qtmux: enable default fragmented file for ismlmux 2011-04-12 20:32:19 +01:00
Marc-André Lureau
7a447b4372 qtmux: add ismlmux, for fragmented isml major brand 2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
50464d5f93 qtmux: finalize sinkpads list 2011-04-12 20:32:19 +01:00
Marc-André Lureau
bd0d320d6c qtmux: add moov in streamheader 2011-04-12 20:32:19 +01:00
Marc-André Lureau
61964eb109 qtmux: add streamable property to avoid building fragmented mfra index 2011-04-12 20:32:19 +01:00
Mark Nauwelaerts
26a281bdab qtmux: add mfra to fragmented file
Based on patch by Marc-André Lureau <mlureau@flumotion.com>
2011-04-12 20:32:19 +01:00
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
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
Arun Raghavan
7f4a61b56c mpegaudioparse: Post CBR bitrate as nominal bitrate
Even if VBR headers are missing, we can't guarantee that a stream is in
fact a CBR stream, so it's safer to let baseparse calculate the average
bitrate rather than assume a CBR stream. However, in order to make
/some/ metadata available before the requisite number of frames have
been parsed, this posts the bitrate from the non-VBR headers as the
nominal bitrate.

https://bugzilla.gnome.org/show_bug.cgi?id=641858
2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
cc1b5ded6d amrparse: a valid amr-wb frame should not have reserved frame type index
See #639715.
2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
d1bea6361b ac3parse: improve handling of dependent substream frames
In particular, timestamps of these should track main-stream timestamps.
2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
3f2ffc9e53 baseparse: tune default duration estimate update interval
Rather than a fixed default frame count, estimate frame count to aim for
an interval duration depending on fps if available, otherwise use old
fixed default.
2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
fa16a9a0ef baseparse: reverse playback; mind keyframes for fragment boundary 2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
39da316386 amrparse: properly check for sufficient available data prior to access 2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
fd064765a7 baseparse: ensure non-empty candidate frames 2011-04-08 18:07:16 +01:00
Mark Nauwelaerts
2e76193c56 baseparse: clarify some debug statements 2011-04-08 18:07:15 +01:00
Mark Nauwelaerts
054621a58c baseparse: properly track upstream timestamps
... rather than with a delay.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
6df2a01762 baseparse: need proper frame duration to obtain sensible frame bitrate 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
1749b527c1 baseparse: proper initial values for index tracking variables 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
6616883390 baseparse: arrange for consistent event handling 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
de1d89dba6 baseparse: header style cleaning 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
9f5840572e baseparse: provide some more initial frame metadata in parse_frame
... and document accordingly.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
551eefb757 baseparse: refactor passthrough into format flags
Also add a format flag to signal baseparse that subclass/format can provide
(parsed) timestamp rather than an estimated one.  In particular, such "strong"
timestamp then allows to e.g. determine duration.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
4163969a24 baseparse: introduce a baseparse frame to serve as context
... and adjust subclass parsers accordingly
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
b45821c83f baseparse: restrict duration scanning to pull mode and avoid extra set_caps call 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
9a76c1d8cd baseparse: update some documentation
Also add some more debug.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
32f57133ac baseparse: allow increasing min_size for current frame parsing only
Also check that subclass actually either directs to skip bytes or
increases expected frame size to avoid going nowhere in bogus
indefinite looping.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
d9def3d05d baesparse: fix refactor regression in loop based parsing 2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
9d9d9beb04 baseparse: pass all available data to subclass rather than minimum
Also reduce some adapter calls and add a few debug statements.
2011-04-08 18:07:14 +01:00
Mark Nauwelaerts
feaf23f8bd baseparse: fix reverse playback handling 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
95c2251390 baseparse: minor typo and debug statement cleanup 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
d1bb142b68 baseparse: reduce locking
... which is either already mute and/or implicitly handled by STREAM_LOCK.
2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
ce23c62f58 baseparse: avoid loop in frame locating interpolation 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
eafcdf67b9 flacparse: mind gst_buffer_unref not liking NULL
Fixes #639950.
2011-04-08 18:07:13 +01:00
Thiago Santos
244f747df2 audioparsers: baseparse: Be careful to not lose the event ref
Don't unref the event if it hasn't been handled, because the caller
assumes it is still valid and might reuse it.

I ran into this problem when transcoding an AVI (with mp3 inside)
to gpp.

https://bugzilla.gnome.org/show_bug.cgi?id=639555
2011-04-08 18:07:13 +01:00
Tim-Philipp Müller
bb8f0d3b4c dcaparse: fix sync word for 14-bit little endian coding
Fix copy'n'paste bug that made us look for the raw little endian
sync word twice instead of looking for the 14-bit LE sync word
as well. Fixes parsing of such streams (see #636234 for sample file).
2011-04-08 18:07:13 +01:00
Tim-Philipp Müller
a8c854374b docs: minor baseparse docs/comment fixes
Remove copy'n'paste leftovers.
2011-04-08 18:07:13 +01:00
Edward Hervey
6fbdfa07a8 flacparse: Fix unitialized variable on macosx 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
cf5b01a55f ac3parse: relax bsid checking
... to the widest possible spec interpretation.

Fixes #637062.
2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
d2a9daec36 audioparsers: update some documentation 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
cfbc40aca7 mpegaudioparse: add to documentation 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
d1d1239fe4 dcaparse: add to documentation 2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
0bb654ed66 baseparse: increase keyframe awareness
... which is not particular relevant for audio parsing, but more so
in video cases.  In particular, auto-determine if dealing with video (caps).
2011-04-08 18:07:13 +01:00
Mark Nauwelaerts
f7de334d61 ac3parse: use proper EAC-3 caps 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
b8af812987 baseparse: avoid unexpected stray metadata 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
24cf864c91 baseparse: use proper _NONE output value when applicable 2011-04-08 18:07:12 +01:00
Edward Hervey
1e71d31e67 audioparsers: Remove dead assignments 2011-04-08 18:07:12 +01:00
Andoni Morales Alastruey
5bfc92714e audioparse: fix possible division-by-zero
https://bugzilla.gnome.org/show_bug.cgi?id=635786
2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
a45019fdd6 baseparse: use correct offset when adding index entry
... bearing in mind that BUFFER_OFFSET is media specific and may not
reflect the basic offset after having been parsed.
2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
76b322a429 baseparse: enhancements for timestamp marked framed formats
That is, as such formats allow subclass to extract position from frame,
it is possible to extract duration (if not otherwise provided)
from (near) last frame, and a seek can fairly accurately target the required
position.

Fixes #631389.
2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
634d4de627 baseparse: refactor frame scanning peformed by _loop 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
563f1a136b baseparse: slightly optimize sending of pending newsegment events 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
5eeb1f2e1f baseparse: minor fixes and enhancements
Arrange for upstream as well as downstream flushing when seeking.
Also determine upstream size as well as seekability.  Adjust some comments
to reality and employ debug statement in proper order.
2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
3e50f0a3c9 aacparse: minor cleanups 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
31d387f7b5 aacparse: fix regression in ADIF src caps setting 2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
55da8e46eb flacparse: parse seektable
Fixes #631389 (partially).
2011-04-08 18:07:12 +01:00
Mark Nauwelaerts
b1f8380e4c flacparse: minor refactor and enable default baseparse segment clipping 2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
b25d139538 mpegaudioparse: fix silly leak in _reset 2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
ba56999212 baseparse: use only upstream duration if it provides one 2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
3d72afd924 baseparse: reflow update_bitrate code
... which makes local variables represent real state better, and avoids
triggering unneeded updates/actions.
2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
5aafc17dec baseparse: add some debug statements 2011-04-08 18:07:11 +01:00
Tim-Philipp Müller
3018bdf8de dcaparse: init variable to make osx build bot happy
gstdcaparse.c: In function 'gst_dca_parse_check_valid_frame':
gstdcaparse.c:246: warning: 'best_sync' may be used uninitialized in this function
2011-04-08 18:07:11 +01:00
Tim-Philipp Müller
75735c4573 audioparsers: add very basic dts/dca parser
Still some issues, e.g. with seekable queries in totem, but also
processing already-chunked input (created with matroskademux ! gdppay).
2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
5d52d3f6c2 ac3parse: properly parse e-ac3 frame header
Also add a few debug statements.
2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
98c7f4b2f6 flacparse: tweak setting buffer metadata; avoid timestamp jitter
Fixes #631993.
2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
5369b97246 aacparse: streamline src caps setting
In particular, also set src caps whenever changes in stream warrant doing so.
2011-04-08 18:07:11 +01:00
Sebastian Dröge
274414e3d6 flacparse: Don't drop the last frame if it is followed by garbage
See bug #631814.
2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
2c7c4fa9e4 baseparse: perform bitrate handling and posting after newsegment sending 2011-04-08 18:07:11 +01:00
Mark Nauwelaerts
0edaf8470e baseparse: immediately post subclass provided bitrate 2011-04-08 18:07:10 +01:00
Mark Nauwelaerts
4a7f899f6e flacparse: fix parsing with unknown framesizes
Fixes #631814 (mostly).
2011-04-08 18:07:10 +01:00
Sebastian Dröge
c3678a5384 flacparse: Simplify frame header parsing by using lookup tables
Based on a patch by Felipe Contreras.

See bug #631200.
2011-04-08 18:07:10 +01:00
Sebastian Dröge
572366e179 flacparse: Don't parse the complete FLAC frames but only look for valid frame headers
Thanks to Felipe Contreras for the suggestion. This is partially
based on his patches and makes flacparse more than 3.5 times faster.

Looking for valid frame headers is unlikely to give false positives
because every frame header is at least 9 bytes long, contains a
14 bit sync code and a 8 bit checksum over the first 8 bytes.

Fixes bug #631200.
2011-04-08 18:07:10 +01:00
Sebastian Dröge
bfdc132ad0 flacparse: Really post tags only after the initial newsegment event
The first newsegment event will be send by the first call to
gst_base_parse_push_buffer() if necessary, posting the tags
before that is not a good idea. Instead do it from the
GstBaseParse::pre_push_buffer vfunc.
2011-04-08 18:07:09 +01:00
Tim-Philipp Müller
6b71b65289 Revert "baseparse: add skip property"
This reverts commit b5a3d60363.

Reverting this for now, since no one really seems to remember why this
property exists or what it could possibly be good for. It seems to have
been in the original mp3parse since the beginning of time and was back-
ported from there.
2011-04-08 18:07:09 +01:00
Sebastian Dröge
872b49efa7 flacparse: Fix uninitialized variable compiler warnings
These warnings are wrong, the variables are only used if they were
initialized by the bit reader.
2011-04-08 18:07:09 +01:00
Felipe Contreras
70d5346ee8 flacparse: fix picture parsing
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2011-04-08 18:07:09 +01:00
Sebastian Dröge
36f48450b1 flacparse: Push tags before the header buffers are pushed 2011-04-08 18:07:09 +01:00
Felipe Contreras
eaa6f789b2 flacparse: trivial caps fix
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2011-04-08 18:07:09 +01:00
Sebastian Dröge
4cc901ed96 audioparser: Let the format string agree with the parameters to fix compiler warning 2011-04-08 18:07:09 +01:00
Sebastian Dröge
6f04047f0c ac3parse: Use unchecked versions of the bitreader get functions
We didn't check the return values anyway...
2011-04-08 18:07:09 +01:00
Arun Raghavan
8ef15e6247 baseparse: Fix debug output
We lose the reference to the buffer after gst_pad_push(), so the debug
print should happen before.

https://bugzilla.gnome.org/show_bug.cgi?id=622276
2011-04-08 18:07:09 +01:00
Mark Nauwelaerts
0f5f06d5fa baseparse: support reverse playback
... in pull mode or upstream driven.
2011-04-08 18:07:09 +01:00
Mark Nauwelaerts
304b3c78dd baseparse: remove done TODOs and update documentation 2011-04-08 18:07:09 +01:00
Mark Nauwelaerts
1a54736255 baseparse: use determined seekability in answering SEEKING query 2011-04-08 18:07:09 +01:00
Mark Nauwelaerts
3f02dbd3ab baseparse: add skip property 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
dd140c7b4d mpegaudioparse: initial version
... adequately equivalent to mp3parse, so lets boldly set it
to higher rank.
2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
2d482deabe aacparse: set minimum frame size at _start
... rather than one time at _init.
2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
589c455ccb baseparse: use _set_frame_props to configure frame lead_in and lead_out
... provided a corresponding decoder with sufficient leading and following
frames to carry out full decoding for a particular segment.
2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
f218b984cc baseparse: use _set_duration to configure duration update interval
... as it logically belongs there as one or the other; either subclass
can provide a duration, or an estimate must be made (reguarly updated).
2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
1f7359d388 baseparse: localize use of provided fps information 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
5dd8a489d5 baseparse: seek table and accurate seek support 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
5a69aa4903 baseparse: proper and more extended segment and seek handling
That is, loop pause handling, segment seek support, newsegment for gaps, etc
2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
f16146df62 baseparse: add index support 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
261b7ec15f baseparse: refactor state reset 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
2c81b3bf77 baseparse: prevent indefinite resyncing 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
de189e327f baseparse: specific EOS handling if no output so far 2011-04-08 18:07:08 +01:00
Mark Nauwelaerts
0707c189db baseparse: adjust _set_frame_prop documentation and set default as claimed 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
723059c688 baseparse: fix bitrate copy-and-paste and update heuristic 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
fea135b3de baseparse: post duration message if average bitrates is updated 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
0198d6320b baseparse: remove is_seekable vmethod and use a set_seek instead
Seekability, like duration, etc is unlikely to change (frequently), and
the default assumption covers most cases, so let subclass set when needed.
At the same time, allow subclass to indicate if it has seek-metadata (table)
available, and possibly have it provide an average bitrate.
2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
10611c2826 ac3parse: remove redundant default is_seekable 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
30be03004e baseparse: add another hook for subclass prior to pushing buffer
... and allow subclass to perform custom segment clipping, or to
emit tags or messages at this time.
2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
dc6bd085ed baseparse: 0 converts to 0 by default 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
0e60101a28 basepase: refactor conversion using helper function and export default convert 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
a84eee533f baseparse: streamline query handling 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
1c65b8287d baseparse: cleanup struct and remove unused member 2011-04-08 18:07:07 +01:00
Mark Nauwelaerts
952b27a140 audioparsers: increase ranks to enable auto-plugging
Because we can, and should, have some shakedown testing before having
these make it into -good later on ...
2011-04-08 18:07:07 +01:00
Arun Raghavan
3448e83c73 baseparse: Allow chaining of subclass event handlers
This allows the child class to chain its event handler with
GstBaseParse, so that subclasses don't have to duplicate all the default
event handling logic.

https://bugzilla.gnome.org/show_bug.cgi?id=622276
2011-04-08 18:07:07 +01:00
Sebastian Dröge
8df3c8477a baseparse: Don't use GST_FLOW_IS_FATAL()
Also don't post an error message for UNEXPECTED and do it
for NOT_LINKED.
2011-04-08 18:07:06 +01:00
Mark Nauwelaerts
7831661c40 baseparse: non-TIME seek event is simply not handled 2011-04-08 18:07:06 +01:00
Mark Nauwelaerts
835473b792 baseparse: fix seek event ref handling 2011-04-08 18:07:06 +01:00
Mark Nauwelaerts
baefba9748 baseparse: prevent arithmetic overflows in pull mode buffer cache handling 2011-04-08 18:07:06 +01:00
Mark Nauwelaerts
a459494097 baseparse: fix seek handling
Allow a few more seek event type combinations, and really use the result
of gst_segment_set_seek to perform the seek.  Also add some debug.
2011-04-08 18:07:06 +01:00
Arun Raghavan
f7e228edb0 baseparse: Don't emit bitrate tags too early
We wait to parse a minimum number of frames (10, arbitrarily) before
emiting bitrate tags so that our early estimates are not wildly
inaccurate for streams that start with a silence. If the stream ends
before that, we just emit the tags anyway.

While it _would_ be nicer to be specify the threshold to start pushing
the tags in terms of duration, this would introduce more complexity than
this merits.

https://bugzilla.gnome.org/show_bug.cgi?id=614991
2011-04-08 18:07:06 +01:00
Sebastian Dröge
00b0444618 flacparse: Optionally check the overall frame checksums too before accepting a frame as valid
This is optional because it's a quite expensive operation and it's very
unlikely that a non-frame is detected as frame after the header CRC check
and checking all bits for valid values. The overall frame checksums are
mainly useful to detect inconsistencies in the encoded payload.
2011-04-08 18:07:06 +01:00
Sebastian Dröge
7b10c2afce flacparse: Check the CRC-8 of the headers before accepting a frame as valid
This makes false-positives during seeking much less likely and detection of
them much faster.
2011-04-08 18:07:06 +01:00
Sebastian Dröge
0cf1285980 baseparse: Set the last stop to the buffer starttime if the duration is invalid
...instead of not setting it at all.
2011-04-08 18:07:06 +01:00
Joshua M. Doe
017bb65d06 baseparse: Send NEWSEGMENT event with correct start and position
Instead of taking the last stop (which could be buffer endtime instead
of starttime) always take the buffer starttime.

Fixes bug #614016.
2011-04-08 18:07:06 +01:00
Arun Raghavan
7184fe911d flacparse: Fix buffer refcount issue
When called from the GST_FLAC_PARSE_STATE_HEADERS case,
gst_flac_parse_hand_headers() does a gst_buffer_set_caps() on a buffer
with refcount > 1. This change handles this case by making the buffer
metadata_Writable.

https://bugzilla.gnome.org/show_bug.cgi?id=614037
2011-04-08 18:07:06 +01:00
Tim-Philipp Müller
bb7f3ffe41 audioparsers: remove unused GstBaseParseClassPrivate structure 2011-04-08 18:07:05 +01:00
Arun Raghavan
fb4673cde9 flacparse: Make bitrate estimation more accurate
This implements the get_frame_overhead() vfunc so that baseparse can
make more accurate bitrate estimates.
2011-04-08 18:07:05 +01:00
Arun Raghavan
44878511b2 aacparse: Fix bitrate calculation
This patch adds the get_frame_overhead() vfunc so that baseparse can
accurately calculate the min/avg/max bitrates for aacparse.

Note: The bitrate was being incorrectly calculated for ADTS streams
(it's not in the header as the code suggests).
2011-04-08 18:07:05 +01:00
Arun Raghavan
733669e076 audioparsers: Add bitrate calculation to baseparse
This makes baseparse keep a running average of the stream bitrate, as
well as the minimum and maximum bitrates. Subclasses can override a
vfunc to make sure that per-frame overhead from the container is not
accounted for in the bitrate calculation.

We take care not to override the bitrate, minimum-bitrate, and
maximum-bitrate tags if they have been posted upstream. We also
rate-limit the emission of bitrate so that it is only triggered by a
change of >10 kbps.
2011-04-08 18:07:04 +01:00
Benjamin Otte
1b5d7be2c9 gst_element_class_set_details => gst_element_class_set_details_simple 2011-04-08 18:07:04 +01:00
Mark Nauwelaerts
e75e19e7f0 audioparsers: rename baseparse GType name to avoid possible conflicts 2011-04-08 18:07:04 +01:00
Edward Hervey
85ceeaefe5 flacparse: Initialize variables.
Fixes build on $#@*( macosx
2011-04-08 18:07:04 +01:00
fc94c56c55 win32: Include config.h before anything else. Fix mpegdemux LIBADD
Because config.h defines __MSVCRT_VERSION__, which should be defined
before inclusion of any system header.

Also fixes mpegdemux Makefile.am LIBADD typo.

Fixes #606665
2011-04-08 18:07:04 +01:00
Thiago Santos
d02ef41d32 aacparse: Also add stream-format to template caps
Do not forget to add stream-format to template caps
off aacparse
2011-04-08 18:07:04 +01:00
Thiago Santos
13c76e3bc3 Rename aac's stream-format 'none' to 'raw'
Renames aac's stream-format from previous commits from none to
raw
2011-04-08 18:07:04 +01:00
Thiago Santos
000754cf63 aacparse: Add stream-format to output caps
Adds stream-format field to output caps
2011-04-08 18:07:04 +01:00
Mark Nauwelaerts
b314dabb98 audioparsers: documentation fixes 2011-04-08 18:07:04 +01:00
Mark Nauwelaerts
d3660bbee7 ac3parse: add documentation 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
4ee63d49dd flacparse: add documentation 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
9bcd66cb98 flacparse: perform additional frame checks when resyncing 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
84e0aae90c flacparse: fix (multiple channel) frame parsing 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
a18863c8ec flacparse: declare unparsed input and parsed output 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
d283a44302 ac3parse: fix scanning for next syncword 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
fd848904f9 baseparse: adjust seek handling and newsegment sending
Perform sanity check on type of seek, and only perform one that is
appropriately supported.  Adjust downstream newsegment event
to first buffer timestamp that is sent downstream.
2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
748b96ddef baseparse: minor refactor cleanup
Also add some debug logging.
2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
83f02e8bc8 flacparse: locate next sync code more efficiently 2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
534e2d7f49 flacparse: baseparse takes care of handling leftover pieces 2011-04-08 18:07:03 +01:00