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
Mark Nauwelaerts
6f3106b603
baseparse: implement leftover draining in pull mode
2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
0d53b6ad62
flacparse: set _OFFSET and _OFFSET_END on outgoing buffers
2011-04-08 18:07:03 +01:00
Mark Nauwelaerts
4db789a18c
audioparsers: move 'flacparse' into it
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
14763a68be
baseparse: provide default conversion using bps if no fps available
...
Also store estimated duration as such, rather than pretending otherwise
(e.g. set by subclass).
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
a7f46ed82a
baseparse: check for remaining data when draining in push mode
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
23e55f4d6b
baseparse: fix pull mode cache size comparison
2011-04-08 18:07:02 +01:00
Edward Hervey
be9c6045d0
ac3parse: Fix unitialized variable.
2011-04-08 18:07:02 +01:00
Christian Schaller
d461f7529b
Update spec file and fix ac3parser header listing in Makefile.am
2011-04-08 18:07:02 +01:00
Michael Smith
3be2f72344
audioparse: fix a format string as reported on irc.
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
432abf42c3
ac3parse: ensure sufficient data available for parsing
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
d90c80e017
ac3parse: extract and use some more details for Enhanced Ac-3 streams
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
0777806170
baseparse: custom bufferflag indicates not to count frame in stats
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
b320b08149
ac3parse: perform additional frame checks when resyncing
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
41e3099d66
ac3parse: inform base parser of frame duration
2011-04-08 18:07:02 +01:00
Mark Nauwelaerts
138c4d7f9c
ac3parse: improve src caps settings
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
37a58ebe3a
ac3parse: initial version
...
MARGINAL rank for now; might take some time for some (useful)
framed=true/false to appear here and there.
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
781b61b166
amrparse: use (default) time handling of baseparser class
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
3279f55a77
audioparsers: move 'amrparse' into it
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
db4181119d
audioparsers: reference GstBaseParse now lives here
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
bd56e3ad79
audioparsers: rename 'aacparse' plugin to generic 'audioparsers' plugin
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
d41ed9693d
aacparse: separate plugin registration and rename plugin
2011-04-08 18:07:01 +01:00
Mark Nauwelaerts
7cd3f0a2db
aacparse: ensure sufficient data available before accessing
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
f3d2429f92
aacparse: use (default) time handling of baseparser class
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
4ed9e61615
aacparse: fixup comments to C-style
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
4a2a3a60f4
baseparse: reset passthrough mode to default (disabled) on activation
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
4d637e7549
baseparse: ensure buffer metadata is writable
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
3b88bb6cd6
baseparse: fix/enhance DISCONT marking
...
In particular, consider DISCONT == !sync, and allow subclass to query
sync state, as it may want to perform additional checks depending
on whether sync was achieved earlier on.
Also arrange for subclass to query whether leftover data is being drained.
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
b766e405b3
baseparse: add timestamp handling, and default conversion
...
In particular, (optionally) provide baseparse with a notion of frames per second
(and therefore also frame duration) and have it track frame and byte counts.
This way, subclass can provide baseparse with fps and have it provide default
buffer time metadata and conversions, though subclass can still install
callbacks to handle such itself.
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
cc203d7219
baseparse: documentation fixes
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
4f2790c9a1
baseparse: use_fixed_caps for src pad
...
After all, stream is as-is, and there is little molding to downstream's
taste that can be done. If subclass can and wants to do so, it can
still override as such.
2011-04-08 18:06:59 +01:00
Julien Moutte
bd45e64d31
aacparse: Fix compilation warnings
2011-04-08 18:06:59 +01:00
Josep Torra
906c4faa24
aacparse: fix warnings in macosx snow leopard
2011-04-08 18:06:59 +01:00
Mark Nauwelaerts
fb84ca3d93
aacparse: forego (bogus) parsing of already parsed (raw) input
2011-04-08 18:06:58 +01:00
Mark Nauwelaerts
19c47f9673
baseparse: prevent infinite loop when draining
2011-04-08 18:06:58 +01:00
Mark Nauwelaerts
d610cfbbc0
baseparse: fix minor memory leak
2011-04-08 18:06:58 +01:00
Sebastian Dröge
bfe54aff4b
aacparse: Add function for the baseparse subclass to push buffers downstream
...
Also handle the case gracefully where the subclass decides to drop
the first buffers and has no caps set yet. It's still required to
have valid caps set when the first buffer should be passed downstream.
2011-04-08 18:06:58 +01:00
Sebastian Dröge
c83364ee81
baseparse: Fix seek event leaking
2011-04-08 18:06:58 +01:00
Mark Nauwelaerts
442ab41a05
aacparse: ADIF: do not send bogus timestamps, leave to downstream (decoder)
2011-04-08 18:06:58 +01:00
Tim-Philipp Müller
92c80bc879
aacparse: fix sample rate extraction from codec data
...
In one case we extracted the sample rate index from the codec data
and saved it as sample rate rather than getting the real sample
rate from the table. Fix that, and also make sure we don't access
non-existant table entries by adding a small helper function that
guards against out-of-bounds access in case of invalid input data.
2011-04-08 18:06:58 +01:00
Tim-Philipp Müller
c252137b82
aacparse, amrparse: remove bogus gst_pad_fixate_caps() calls
2011-04-08 18:06:58 +01:00
Tim-Philipp Müller
e74776b3cb
baseparse: propagate return value of GstBaseParse::set_sink_caps()
...
gst_base_parse_sink_setcaps() presumably should fail if the subclass
returns FALSE from its ::set_sink_caps() function.
2011-04-08 18:06:58 +01:00
Tim-Philipp Müller
c59ee281ba
baseparse: don't try to GST_LOG an already-freed caps string
...
The proper way to log caps is via GST_PTR_FORMAT anyway.
2011-04-08 18:06:58 +01:00
Tim-Philipp Müller
fc09fe78af
aacparse: set channels and rate on output caps, and keep codec_data
...
Create output caps from input caps, so we maintain any fields we
might get on the input caps, such as codec_data or rate and channels.
Set channels and rate on the output caps if we don't have input caps
or they don't contain such fields. We do this partly because we can,
but also because some muxers need this information. Tagreadbin will
also be happy about this.
2011-04-08 18:06:57 +01:00