Sebastian Dröge
dd741e6412
opusdec: Update sink pad templates
...
We always require the channel-mapping-field. If it's 0 we require nothing
else, otherwise we need channels, stream-count and coupled count to be
available.
2015-11-05 12:11:19 +01:00
Sebastian Dröge
85984fa946
opusenc: Create an empty taglist if there is none
...
There always have to be 2 buffers in the streamheaders, even if
the comment buffer is basically empty.
2015-11-04 00:14:13 +02:00
Sebastian Dröge
4ca84a9b1a
opus: Add proper support for multichannel audio
...
https://bugzilla.gnome.org/show_bug.cgi?id=757152
2015-11-03 20:35:41 +02:00
Sebastian Dröge
fc475ce01a
opusdec: Handle GstAudioClippingMeta instead of the pre-skip field in the OpusHead
...
oggdemux is outputting the meta now, and only outputs if it should really
apply to the current buffer. Previously we would skip N samples also if we
started the decoder in the middle of the stream.
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
328f9088f3
opusenc: Add GstAudioClippingMeta to buffers that need to be clipped
...
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
6b751360ae
opusenc: Disable granule position calculations by the base class
...
It is doing the wrong thing because of the Opus pre-skip: while the timestamps
are shifted by the pre-skip, the granule positions are not shifted.
oggmux is doing the right thing here already.
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
7773e1eb58
opusenc: Add some FIXME comments about calculating padding with LPC
...
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
4df2ffaad6
opusenc: Encode exactly the amount of samples we got as input and put correct timestamps on it
...
The first frame has lookahead less samples, the last frame might have some
padding or we might have to encode another frame of silence to get all our
input into the encoded data.
This is because of a) the lookahead at the beginning of the encoding, which
shifts all data by that amount of samples and b) the padding needed to fill
the very last frame completely.
Ideally we would use LPC to calculate something better than silence for the
padding to make the encoding as smooth as possible.
With this we get exactly the same amount of samples again in an
opusenc ! opusdec pipeline.
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
6ffb90e037
opusenc: Put lookahead/pre-skip into the OpusHead header
...
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
9c195e37da
opusdec: Assume 48kHz if no sample rate is given in the header
2015-11-02 09:36:46 +02:00
Sebastian Dröge
7cadfcb0b0
opusenc: Place 48kHz first in the caps
...
For all the other sample rates the encoder will have to resample internally.
2015-11-02 09:36:43 +02:00
Thiago Santos
54a5859960
opusdec: remove check for number of channels
...
opus decoder can convert from different number of channels, no
need to check, just let it negotiate and create a new decoder if
needed.
https://bugzilla.gnome.org/show_bug.cgi?id=755059
2015-09-15 16:00:43 -03:00
Miguel París Díaz
a4ffb14c55
opusenc: improve deprecated properties docs
...
https://bugzilla.gnome.org/show_bug.cgi?id=754819
2015-09-11 23:33:19 +02:00
Miguel París Díaz
16e93d206f
opusenc: do not throw g_warning when getting deprecated properties
...
https://bugzilla.gnome.org/show_bug.cgi?id=754819
2015-09-11 23:33:19 +02:00
Thiago Santos
f1cbca9480
audioencoders: use template subset check for accept-caps
...
It is faster than doing a query that propagates downstream and
should be enough
Elements: faac, gsmenc, opusenc, sbcenc, voamrwbenc, adpcmenc, sirenenc
2015-08-17 10:07:54 -03:00
Thiago Santos
eada1366bc
audiodecoders: use default pad accept-caps handling
...
Avoids useless check of downstream caps when handling an
accept-caps query
Elements: dtsdec, faad, gsmdec, mpg123audiodec, opusdec,
sbcdec, adpcmdec, sirendec
2015-08-15 13:51:16 -03:00
Nirbheek Chauhan
f04d4dd7c8
opuscommon: Use GString instead of snprintf for concating
...
Safer, easier to understand, and more portable. Also, skip
all this if the log level is too low.
2015-07-27 15:24:19 +01:00
Carlos Rafael Giani
e5409361b8
opusdec: Fix PLC frame size calculations
...
Previously, PLC frames always had a length of 120ms, which caused audio
quality degradation and synchronization errors. Fix this by calculating an
appropriate length for the PLC frame.
The length must be a multiple of 2.5ms. Calculate a multiple of 2.5ms that
is nearest to the current PLC length. Any leftover PLC length that didn't
make it into this frame is accumulated for the next PLC frame.
https://bugzilla.gnome.org/show_bug.cgi?id=725167
2015-07-20 13:25:43 -04:00
Mersad Jelacic
de5500b6a9
opusenc: Add bitrate to the tags
...
https://bugzilla.gnome.org/show_bug.cgi?id=750992
2015-06-22 13:49:34 +02:00
Sebastian Dröge
0ea7a89c14
opusdec: If channel/rate negotiation fails, fall back to stereo and 48kHz
2015-06-04 11:54:24 +02:00
Sebastian Dröge
cecb83e590
opusdec: gst_structure_fixate_field_nearest_int() only works if the structure has this field
...
Just set the rate/channels directly if the caps don't have this field.
2015-06-04 11:45:05 +02:00
Jose Antonio Santos Cadenas
8dde6b170b
opusheader: Do not include rate in caps if it is 0
...
As expressed in gst_opus_header_create_caps, value 0 means unset.
Setting rate value to 0 make negotiation with decoder fail.
https://bugzilla.gnome.org/show_bug.cgi?id=748875
2015-05-04 10:50:42 +02:00
Tim-Philipp Müller
97c3e548d6
opus: fix includes and compilation against opus in non-standard prefix
...
https://bugzilla.gnome.org/show_bug.cgi?id=748594
2015-04-28 17:24:04 +01:00
Mersad Jelacic
443cc3baab
opus: don't use deprecated gst_buffer_new_and_alloc
...
Use the helper function available in the base class instead.
https://bugzilla.gnome.org/show_bug.cgi?id=748585
2015-04-28 16:36:02 +01:00
Arun Raghavan
20af81edb5
opus: Fix incorrect fall-through condition in property getter
2015-04-03 11:47:09 +05:30
Luis de Bethencourt
56485e3b14
opusenc: fall through switch statement
...
Adding a comment makes coverity happy and quells the issue.
CID 1291629
2015-03-24 15:14:05 +00:00
Sebastian Dröge
6f33c20b00
opusenc: Set output format immediately after creating the encoder instance
...
We know the caps by then, there's no need to wait until we actually receive
the first buffer.
2015-03-23 13:15:30 +01:00
Sebastian Dröge
78634dc2c3
opusenc: Remove another unused variable
2015-03-23 13:13:35 +01:00
Sebastian Dröge
37d87bf352
opusenc: Remove useless headers and header_sent variables from the instance struct
...
They are only used inside a single function.
2015-03-23 13:12:25 +01:00
Sebastian Dröge
dd674942ba
opusdec: Take channels and sample rate from the caps if we have no stream header
2015-03-23 12:09:25 +01:00
Sebastian Dröge
65662c8997
opusdec: Reset the decoder if the caps change
2015-03-23 12:09:09 +01:00
Sebastian Dröge
ef29b92990
opusdec: Take output sample rate from the stream headers too
...
This way we let opusdec do the resampling if needed and don't carry
around buffers with a too high sample rate if not required.
While Opus always uses 48kHz internally, this information from the
header specifies which frequencies are safe to drop.
2015-03-23 11:57:09 +01:00
Sebastian Dröge
e252b13dd0
opusheader: Put number of channels and sample rate into the caps
...
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2015-03-23 11:56:09 +01:00
Vincent Penquerc'h
fcce2fe059
opusenc: replace cbr and constrained-vbr properties with an enum
...
It was deemed confusing before.
https://bugzilla.gnome.org/show_bug.cgi?id=744909
2015-03-12 14:04:20 +00:00
Vincent Penquerc'h
b8565d3ab6
opusdec: fix latency query in FEC case
...
The max latency parameter is "the maximum time an element
synchronizing to the clock is allowed to wait for receiving all
data for the current running time" (docs/design/part-latency.txt).
https://bugzilla.gnome.org/show_bug.cgi?id=744338
2015-03-04 11:04:29 +00:00
Sebastian Dröge
db20b21a51
opusenc: Remove g_warnings() for the deprecated audio property
...
Otherwise there are g_warnings() already when just using gst-inspect or
dumping a pipeline graph.
2015-02-18 17:47:50 +02:00
Sebastian Dröge
111c831c08
Improve and fix LATENCY query handling
...
This now follows the design docs everywhere, especially the maximum latency
handling.
https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 14:16:21 +01:00
Vincent Penquerc'h
da4f7e5387
opusenc: change audio property to audio-type
...
This is now an enum with values generic (default) and voice.
https://bugzilla.gnome.org/show_bug.cgi?id=740891
2015-01-29 13:23:57 +00:00
Thiago Santos
fb29483259
opusenc: plug ref leak of template caps
...
the pad template caps is already a new ref. No need to copy.
2014-12-17 22:13:17 -03:00
Vincent Penquerc'h
fe6a1d5b88
opusenc: update output segment stop time to match clipped samples
...
This will let oggmux generate a granpos on the last page that properly
represents the clipped samples at the end of the stream.
2014-10-30 14:41:44 +00:00
Tim-Philipp Müller
ebe01db234
Fix up one-element lists in template caps
2014-09-10 17:24:39 +01:00
Sebastian Rasmussen
d8b6375e01
opusenc: Unref pad template caps after usage
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734517
2014-08-11 15:31:45 +03:00
Sebastian Rasmussen
6e48675dfc
opus: Improve annotation of internal function
...
https://bugzilla.gnome.org/show_bug.cgi?id=734543
2014-08-10 11:26:17 +01:00
Philip Withnall
01d2956c4e
opus: Fix a double-unref in the Opus header code
...
The headers were never getting reffed when being added to the headers
list, which is later unreffed-and-freed by the caller (e.g.
gst_opus_parse_parse_frame()).
https://bugzilla.gnome.org/show_bug.cgi?id=733013
2014-07-11 09:05:32 +02:00
Miguel París Díaz
fd77bb1eff
opusenc: Use aux vars to minimize critical region
...
This avoid dead lock between gst_audio_encoder_finish_frame() and
gst_opus_enc_get_property().
Also, now bytes var is set into protected section.
https://bugzilla.gnome.org/show_bug.cgi?id=729882
2014-05-26 09:23:42 +02:00
Vincent Penquerc'h
16042fac2b
opus: add missing va_end in variadic function
...
Coverity 1139944
2014-04-09 11:03:17 +01:00
Vincent Penquerc'h
80df2cb063
opusenc: increase max payload size to 4000 bytes
...
1275 is the maximum size of a frame, but the encoder may return
up to 3 frames, and we need a few extra bytes for TOC, etc. We
use 4000, which is a bit more, and suggested in the libopus docs.
2013-12-27 14:29:46 +00:00
Sebastian Dröge
0c301bfee7
opusdec: Require caps to be set before any data processing
2013-12-05 12:04:59 +01:00
Sebastian Dröge
49d8a1e769
gst: Add better support for static plugins
2013-04-15 15:59:22 +02:00
Wim Taymans
70ac2717a9
opusdec: clear the state of the decoder
...
Set the channels and rate back to their default values in _stop because they
are used to renegotiate when needed.
See https://bugzilla.gnome.org/show_bug.cgi?id=692950
2013-02-11 11:12:35 +01:00