Commit graph

4805 commits

Author SHA1 Message Date
Sebastian Dröge
1032f5c1b3 appsrc: If do-timestamp=TRUE, capture the time when the buffer was pushed to the source
... instead of the time when it was pushed further downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=763630
2016-07-01 14:32:26 +02:00
Zaheer Abbas Merali
0f609bc6c6 basertpdepayload: create valid segment when given non-time segment
This will become an error in 1.10.

https://bugzilla.gnome.org/show_bug.cgi?id=765796
2016-07-01 14:16:46 +02:00
Tim-Philipp Müller
a2c050a4be tagdemux: fix handling of very short files in push mode
By default we'll wait for a certain amount of data before
attempting typefinding. However, if the stream is fairly
short, we might get EOS before we ever attempted any
typefinding, so at this point we should force typefinding
and output any pending data if we manage to detect the
type.

https://bugzilla.gnome.org//show_bug.cgi?id=768178
2016-06-30 18:53:07 +01:00
Tim-Philipp Müller
130e78dbd8 tagdemux: fix erroring out if we reach EOS without detecting type
In 0.10 the source pad was a dynamic pad that was only added once
the type had been detected, but in 1.x it's an always source pad,
so checking whether it's still NULL won't work to detect if the
type has been detected.

Makes tagdemux error out when we get EOS but haven't managed to
identify the format of the data after the tag.

https://bugzilla.gnome.org//show_bug.cgi?id=768178
2016-06-30 18:53:02 +01:00
Sebastian Dröge
5de9d5809b audioconvert: Handle fallback channel mask for mono correctly
It's 0 and no mask should be set for mono at all.

https://bugzilla.gnome.org/show_bug.cgi?id=757472
2016-06-29 18:14:51 +02:00
Wim Taymans
5e752f4eda video-converter: fix interlaced scaling some more
Fix problem with the line cache where it would forget the first line in
the cache in some cases.
Keep as much backlog as we have taps. This generally works better and we
could do even better by calculating the overlap in all taps.
Allocated enough lines for the line cache.
Use only half the number of taps for the interlaced lines because we
only have half the number of lines.
The pixel shift should be relative to the new output pixel size so scale
it.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=767921
2016-06-22 16:21:13 +02:00
Michael Olbrich
72879c3639 tagdemux: preserve duration when skipping a tag at the beginning of a buffer
gst_buffer_copy_region() does not copy the duration if it doesn't start
with the first byte. We just skip the tag here, so the duration is still
valid.

https://bugzilla.gnome.org/show_bug.cgi?id=767791
2016-06-21 10:43:50 +03:00
Sebastian Dröge
26f63db498 discoverer: Only allow serializing OK discoverer infos to GVariants
They will be incomplete otherwise and we can't generate the full serialized
information, and instead will crash somewhere on the way.

https://bugzilla.gnome.org/show_bug.cgi?id=767859
2016-06-21 10:24:15 +03:00
Mikhail Fludkov
8d4f79b640 audiodecoder: fix invalid timestamps when PLC and delay
Elements inherited from GstAudioDecoder, supporting PLC and introducing
delay produce invalid timestamps. Good example is opusdec with in-band FEC
enabled. After receiving GAP event it delays the audio concealment until
the next buffer arrives. The next buffer will have DISCONT flag set which
will make GstAudioDecoder to reset it's internal state, thus forgetting
the timestamp of GAP event. As a result the concealed audio will have the
timestamp of the next buffer (with DISCONT flag) but not the timestamp
from the event.
2016-06-16 11:01:04 +01:00
Paulo Neves
5dd720e064 exiftag: Increase serialized geo precision
The serialization of double typed geographical
coordinates to DMS system supported by the exif
standards was previously truncated without need.

The previous code truncated the seconds part of
the coordinate to a fraction with denominator
equal to 1 causing a bug on the deserialization
when the test for the coordinate to be serialized
was more precise.

This patch applies a 10E6 multiplier to the numerator
equal to the denominator of the rational number.

Eg. Latitude = 89.5688643 Serialization

DMS Old code = 89/1 deg, 34/1 min, 7/1 sec
DMS New code = 89/1 deg, 34/1 min, 79114800UL/10000000UL

Deserialization

DMS Old code = 89.5686111111
DMS New code = 89.5688643

The new test tries to serialize a higher precision
coordinate.

The types of the coordinates are also guint32 instead
of gint like previously. guint32 is the type of the
fraction components in the exif.

https://bugzilla.gnome.org/show_bug.cgi?id=767537
2016-06-13 09:29:52 +03:00
Thomas Jones
d423406e0a audiovisualizer: Fix calculations for bytes<->samples conversions
Use bpf instead of channels * sizeof(gint16).

https://bugzilla.gnome.org/show_bug.cgi?id=767505
2016-06-11 11:45:51 +03:00
Thomas Jones
247ce9f39f audiovisualizer: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
https://bugzilla.gnome.org/show_bug.cgi?id=767506
2016-06-11 11:42:54 +03:00
Thomas Jones
721e415fd2 audiovisualizer: fix timestamp calculation for audio channels > 1
We have to use bps*channels instead of just bps, which is exactly what bpf is for.

https://bugzilla.gnome.org/show_bug.cgi?id=767507
2016-06-11 11:42:20 +03:00
Víctor Manuel Jáquez Leal
8b8708f946 videodecoder: handle buffer's flags at offset
For reverse playback it is important to handle correctly the frame sync
points, which is set when the input buffer doesn't have the DELTA_UNIT flag.

This is handled correctly when decoder is packetized, but when it is not the
frame's sync point is not copied, and the reverse playback never decodes frame
batches.

The current patch adds the buffer's flags to the Timestamp list, where the
timestamp and duration of the input buffers are hold.
2016-06-09 19:13:46 +03:00
Víctor Manuel Jáquez Leal
75906f53d1 videodecoder: squash two message logs into one
There were two consecutive log messages in gst_video_decoder_decode_frame().
Given the information they provide, it is more efficient to squash them into a
single one.
2016-06-09 19:08:08 +03:00
Víctor Manuel Jáquez Leal
779e739142 videodecoder: playback rate is in input_segment
The playback rate is hold in the input_segment member variable, not in the
output_segment, and the parse_gather list was never filled because of that.

This patch changes the comparison with input_segment.
2016-06-09 19:05:41 +03:00
Sebastian Dröge
0bd3f2352c videodecoder: Use input segment rate instead of output segment rate to decide whether the drain on keyframes
The output segment is only set up after data is output, which might be far in
the future for reverse playback. Also we are here interested in the state at
the current *input* frame (which is the keyframe), not any possible output.
2016-06-09 19:02:49 +03:00
Sebastian Dröge
0c7022d681 videodecoder: Only drain in KEY_UNITS trick mode after a keyframe in forwards playback mode
For reverse playback the same behaviour was already implemented in
flush_parse().

For reverse playback, chain_forward() is only used to gather frames and not
for decoding, and it is actually called by the draining logic, causing an
infinite recursion.
2016-06-09 18:57:49 +03:00
Edward Hervey
8bee96c4a2 videodecoder: Don't push late frames
While it's a bit tricky to discard frames *before* decoding (because
we might not be sure which data is needed or not by the decoder), we
can discard them after decoding if they are too late anyway.

Any following basetransform based element or similar would drop the frame too.
2016-06-09 17:21:45 +03:00
Edward Hervey
5bef865f9f videodecoder: Avoid recursive drain/flush calls
_chain_forward() can also be called with reverse playback. Blindly
calling drain_out() on DISCONT buffers would end up in a recursive
call.
2016-06-07 10:31:59 +02:00
Edward Hervey
183e94b2d3 videodecoder: Drain out keyframes in TRICK_MODE_KEY_UNITS
When asked to just decode keyframe, if we got a keyframe drain out
the decoder straight away.
This avoids having to wait for the next frame and reduces delay even
more.

https://bugzilla.gnome.org/show_bug.cgi?id=767232
2016-06-07 09:50:08 +02:00
Edward Hervey
eb1ebf226f videodecoder: Drain decoder on DISCONT buffers
This ensures the decoder is properly drained out when receiving a
DISCONT buffer. The optimal way of doing this would have been to
receive a GAP event before hand but it is not always possible.

Fixes big delays with some decoders (ex gst-libav) that will not
drain out data when only decoding keyframes.

https://bugzilla.gnome.org/show_bug.cgi?id=767232
2016-06-07 09:49:56 +02:00
Michael Olbrich
ac56c1c3a7 tagdemux: preserve timestamp when skipping a tag at the beginning of a buffer
gst_buffer_copy_region() does not copy the timestamp if it doesn't start
with the first byte. We just skip the tag here, so the timestamp is still
valid.

https://bugzilla.gnome.org/show_bug.cgi?id=767173
2016-06-04 12:40:24 +01:00
Stian Selnes
1335ccd228 video-color: Fix colorimetry IS_UNKNOWN
Fix issue with colorimetry default indicies not being in sync with the
actual table causing IS_UNKNOWN() to sometimes fail.

https://bugzilla.gnome.org/show_bug.cgi?id=767163
2016-06-02 17:14:50 +01:00
Edward Hervey
fb21fc3af1 videodecoder: Make sure the DISCONT flag is set on the outgoing buffer
The base class was setting the DISCONT flag before checking whether the buffer
would be in segment or not.

Fix issues with DISCONT flags not being properly propagated downstream when
decoders buffers were out of segment.

https://bugzilla.gnome.org/show_bug.cgi?id=766800
2016-06-02 10:50:58 +03:00
Joan Pau Beltran
abb88801e7 video: add IYU2 format
This existed in 0.10 and is needed by dc1394src.

IYU2 format is a YUV fully-sampled packed format similar to v308
but with different component order (U-Y-V instead of Y-U-V).

http://www.fourcc.org/yuv.php#IYU2

https://bugzilla.gnome.org/show_bug.cgi?id=763026#c5
2016-06-01 12:07:05 +01:00
Tim-Philipp Müller
d52a74f32e g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.
2016-05-24 00:44:21 +01:00
Guillaume Desmottes
8fc42f12f0 videosink: ensure the debug category is always initialized
gst_video_sink_center_rect() can be called without a GstVideoSink
having been instantiated so we can't relly on the video sink
class_init function to init the category.

Fix a warning when running:
GST_CHECKS=test_video_center_rect GST_DEBUG=6 G_DEBUG=fatal_warnings make libs/video.check-norepeat

https://bugzilla.gnome.org/show_bug.cgi?id=766510
2016-05-18 19:44:52 +01:00
Tim-Philipp Müller
7c5ee9d3ef app: remove marshaller files from git 2016-05-16 09:20:36 +01:00
Tim-Philipp Müller
75f3c7cb85 app: use generic marshallers 2016-05-15 15:26:13 +01:00
Matthew Waters
1e3f5e0ecf video/affinetransformationmeta: define the coordinate space used
Based on the expected output from the already existing usage by androidmedia
and the opengl plugins.

https://bugzilla.gnome.org/show_bug.cgi?id=764667
2016-05-15 10:53:55 +03:00
Tim-Philipp Müller
fb2c75de68 pbutils: add description for WebVTT 2016-05-14 16:08:09 +01:00
Hyunjun Ko
825c150e9d sdp: parse sdp attributes in case that sdp message doesn't contain mikey message
https://bugzilla.gnome.org/show_bug.cgi?id=766204
2016-05-10 19:43:32 +03:00
Sebastian Dröge
dc8120f298 appsrc: Add duration property for providing a duration in TIME format
https://bugzilla.gnome.org/show_bug.cgi?id=766229
2016-05-10 16:50:32 +03:00
Sebastian Dröge
5be3c5f6b2 videodecoder/encoder: Correct GST_IS_*CODER_CLASS macros
They are currently not used, but would result in a compiler error due to wrong
variable name usage.

https://bugzilla.gnome.org/show_bug.cgi?id=766203
2016-05-10 10:01:12 +03:00
Sebastian Dröge
9e60877108 encoding-profile: Fix caps memory leak 2016-04-29 11:06:49 +03:00
Sebastian Dröge
e2bde252a6 encoding-profile: Recurse into nested container profiles and only add the final audio/video streams
If we e.g. have AVI with DV container with video/audio inside the DV
container, we can't handle this at this point with an encoding profile.
Instead of erroring out, flatten the container hierarchy.

https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Sebastian Dröge
4c2e7ae051 encoding-profile: Fail to create encoding profile from discoverer info if no streams could be added
https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Sebastian Dröge
436adc68e0 encoding-profile: Move adding of each stream to a helper function
https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Aurélien Zanelli
928bb3b6f4 exiftag: handle GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM tag
This tag match the EXIF_TAG_FOCAL_LENGTH_IN_35_MM_FILM exif tag and is
stored on a short. Hence there is a precision loss compared to the
GstTag which is a double value.

https://bugzilla.gnome.org/show_bug.cgi?id=753930
2016-04-28 12:13:15 -03:00
Aurélien Zanelli
c5a4a83828 tag: add GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM tag
It is the 35 mm equivalent focal length of the lens, mainly used in
photography. Tag value is stored in a double value to be consistent with
GST_TAG_CAPTURING_FOCAL_LENGTH.

https://bugzilla.gnome.org/show_bug.cgi?id=753930
2016-04-28 12:13:15 -03:00
Kipp Cannon
f7a31a79f4 audio: Add const to segment parameter of gst_audio_buffer_clip()
e.g., allows this to be used with the reference retrieved by
gst_event_parse_segment().

https://bugzilla.gnome.org/show_bug.cgi?id=765663
2016-04-27 12:26:07 +03:00
Sebastian Dröge
155222017a codec-utils: H265 level idc 0 is not valid
Don't put level=0 into the caps, it confuses other elements.

https://bugzilla.gnome.org/show_bug.cgi?id=765538
2016-04-25 16:49:20 +03:00
Sebastian Dröge
7741e56db4 codec-utils: H264 level idc 0 is not valid
Don't put level=0 into the caps, it confuses other elements.

https://bugzilla.gnome.org/show_bug.cgi?id=765538
2016-04-25 16:49:20 +03:00
Sebastian Dröge
fc99a61774 encoding-profile: Remove codec_data and streamheader fields from constraint caps
When converting discoverer output to an encoding profile, it makes sense to
omit these. It's very very unlikely that our encoder is going to produce bit
by bit the same codec_data or streamheader.

https://bugzilla.gnome.org/show_bug.cgi?id=765534
2016-04-25 16:07:50 +03:00
Sebastian Dröge
fd32d5812a encoding-profile: Don't put G_BEGIN_DECLS around #include statements
It should only be around our own declarations.
2016-04-25 15:06:23 +03:00
Wim Taymans
a12f51c3de video-converter: add more fastpaths for I420 -> RGB
Use the I420->BGRA and a new I420->ARGB to speed up any I420 to RGB
operation.
2016-04-22 15:30:19 +02:00
Josep Torra
1439b61694 sdp: update since markers to 1.8.1 for some new APIs
As we decided to backport some fixes we update the since markers.
2016-04-19 17:36:20 +02:00
Jan Schmidt
802eae296a Revert "audioringbuffer: start ringbuffer if needed upon commit"
This reverts commit 13ee94ef10.

Causes audio glitches at startup by starting to output segments
from the ringbuffer before it has been filled / fully prerolled.

https://bugzilla.gnome.org/show_bug.cgi?id=657076
2016-04-16 02:13:15 +10:00
Aleix Conchillo Flaqué
28cf2f02e7 sdpmessage: new gst_sdp_media_parse_keymgmt/gst_sdp_media_parse_keymgmt
We add a couple of new functions gst_sdp_media_parse_keymgmt and
gst_sdp_media_parse_keymgmt. We also implement
gst_sdp_message_attributes_to_caps and gst_sdp_media_attributes_to_caps
in terms of these new functions and also gst_mikey_message_to_caps.
2016-04-15 15:28:47 +02:00
Aleix Conchillo Flaqué
7a864c177f mikey: add new function gst_mikey_message_to_caps 2016-04-15 15:21:23 +02:00
Aleix Conchillo Flaqué
62e0e74759 mikey: allow passing srtp or srtcp to create mikey message
Current implementation requires all srtp and srtcp parameters to be
given in the caps. MIKEY uses only one algorithm for encryption and one
for authentication so we now allow passing srtp or srtcp parameters. If
both are given srtp parametres will be preferred.

https://bugzilla.gnome.org/show_bug.cgi?id=765027
2016-04-15 12:33:43 +02:00
Sebastian Dröge
a82ef8983e videometa: Initialize all fields of all metas with default values
The metas are not allocated with all fields initialized to zeroes.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:10:51 +03:00
Arjen Veenhuizen
c5ed98a35b videometa: Explicitly initialize GstVideoCropMeta on init
It is not allocated with all fields initialized to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:10:46 +03:00
Guillaume Desmottes
7c5dfd713c audioringbuffer: don't attempt to reorder position-less channels
As said in its doc GST_AUDIO_CHANNEL_POSITION_NONE is meant to be used
for "position-less channels, e.g. from a sound card that records 1024
channels; mutually exclusive with any other channel position".

But at the moment using such positions would raise a
'g_return_if_reached' warning as gst_audio_get_channel_reorder_map()
would reject it.

Fix this by preventing any attempt to reorder in such case as that's not
what we want anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=763799
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
1c56cfa144 audio: add debug output if channels mapping does not match
https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
3cb08304da gst-audio: add gst_audio_channel_positions_to_string()
We currently don't log much about channel positions making debugging
harder as it should be. This is the first step in my attempt to improve
this.

https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:48:30 -04:00
Vivia Nikolaidou
a0cf3b4262 fdmemory, rtpbasedepayload: Ran gst-indent
https://bugzilla.gnome.org/show_bug.cgi?id=764948
2016-04-12 17:34:18 +03:00
Fabrice Bellet
bfcd0737b7 audio: Fix a race with the audioringbuffer thread
There is a small window of time where the audio ringbuffer thread
can access the parent thread variable, before it's initialized
by the parent thread. The patch replaces this variable use by
g_thread_self().

https://bugzilla.gnome.org/show_bug.cgi?id=764865
2016-04-11 21:43:13 +10:00
Víctor Manuel Jáquez Leal
37c4915109 libs: audio: split allocation query caps and pad caps
Since the allocation query caps contains memory size and the pad's caps
contains the display size, an audio encoder or decoder might need to allocate
a different buffer size than the size negotiated in the caps.

This patch splits this logic distinction for audiodecoder and audioencoder.

Thus the user, if needs a different allocation caps, should set it through
gst_audio_{encoder,decoder}_set_allocation_cap() before calling the negotiate()
vmethod. Otherwise the allocation_caps will be the same as the caps in the
src pad.

https://bugzilla.gnome.org/show_bug.cgi?id=764421
2016-04-05 11:37:15 +02:00
Víctor Manuel Jáquez Leal
b4a695cd11 libs: video: split allocation query caos and pad caps
Since the allocation query caps contains memory size and the pad's caps
contains the display size, a video encoder or decoder might need to allocate
a different frame size than the size negotiated in the caps.

This patch splits this logic distinction for videodecoder and videoencoder.

The user if needs a different allocation caps, should set the allocation_caps
in the GstVideoCodecState before calling negotiate() vmethod. Otherwise the
allocation_caps will be the same as the caps set in the src pad.

https://bugzilla.gnome.org/show_bug.cgi?id=764421
2016-04-05 11:32:50 +02:00
Víctor Manuel Jáquez Leal
052fe11949 audioencoder: fix gtk-doc comment format 2016-04-04 17:12:16 +02:00
Mikhail Fludkov
7a206336dd rtpbasedepayload: look at ssrc before sequence numbers
Doing so prevents us dropping buffers in the rare, but possible, situations,
when the stream changes SSRC and new sequence numbers does not differ
much from the last sequence number from previous SSRC. For example:
ssrc - 0xaaaa 101,102,103,104 ssrc - 0xbbbb 102, 103, 104, 105...
In the scenario above we don't want to drop the first 3 packets of
0xbbbb stream.

https://bugzilla.gnome.org/show_bug.cgi?id=764459
2016-04-03 11:49:16 +03:00
Tim-Philipp Müller
9e311960cd video: fix example code in gst_video_frame_map() docs
GST_VIDEO_FRAME_PLANE_PSTRIDE() does not exist.

https://bugzilla.gnome.org/show_bug.cgi?id=764414
2016-04-02 15:19:44 +01:00
Tim-Philipp Müller
2102fdc983 discoverer: copy over result and seekable fields when copying a discoverer info
The function gst_discoverer_info_copy doesn't copy the data members seekable
and result of the source GstDiscovererInfo.

In the case of copying a GstDiscovererInfo for later use, the seekbale will be
undefined, which in practice usually will be false, even though the seekable of
the original GstDiscovererInfo is true.

https://bugzilla.gnome.org/show_bug.cgi?id=762710
2016-04-02 10:09:46 +01:00
Nicolas Dufresne
a7809ecc8f video-format: Fix macro documentation
The parameter type was wrongly documenting that a GstVideoInfo structure
pointer was needed, while it needs a GstVideoFormatInfo structure
pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=764414
2016-03-31 13:32:32 -04:00
Tim-Philipp Müller
3ab183c758 rtp: rtcpbuffer: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=761944
2016-03-30 22:41:54 +01:00
Tim-Philipp Müller
5377088f1e rtp: rtpcbuffer: fix Since markers
https://bugzilla.gnome.org/show_bug.cgi?id=761944
2016-03-30 22:41:54 +01:00
Alessandro Decina
74efde50ad audio-resampler: disable neon on arm64
Fix the build on arm64 by using HAVE_ARM_NEON instead of __ARM_NEON__.
2016-03-30 11:16:49 +11:00
Sebastian Dröge
0582d5a1bc audio-resampler: Use _mm_set_epi64x(0, x) instead of _mm_cvtsi64_si128(x) in more places 2016-03-29 12:11:48 +03:00
Scott D Phillips
079ceb894c video: add P010 format support
P010 is a YUV420 format with an interleaved U-V plane and 2-bytes per
component with the the color value stored in the 10 most significant
bits.

https://bugzilla.gnome.org/show_bug.cgi?id=761607
---
Changes since v2:
- Set bits=16 in DPTH10_10_10_HI
Changes since v1:
- Fixed x-offset calculation in uv.
- Added 6-bit shifts to FormatInfo.
2016-03-29 11:16:42 +03:00
Sebastian Dröge
38a5a3614e resampler: Use _mm_set_epi64x(0, x) instead of _mm_cvtsi64_si128(x)
The latter is only available on x86-64 for some reason.
2016-03-29 10:15:07 +03:00
Edward Hervey
de2ded9557 audio: Fix distcheck
Don't forget to dist the needed files (which don't need to be installed)
2016-03-29 08:22:29 +02:00
Wim Taymans
19f7d9ca46 audio-resampler: estimate memory usage in auto mode
Estimate the memory usage and use this to decide between full or
interpolated filter.
2016-03-28 15:37:36 +02:00
Wim Taymans
984ee8a3f6 audio-resampler: small optimizations 2016-03-28 13:25:55 +02:00
Wim Taymans
cf9059f070 audio-resampler: improve non-interleaved flags
Make it possible to have different interleaving on input and output
because we can quite trivially do that.
2016-03-28 13:25:55 +02:00
Wim Taymans
33855f0fe1 audio-resampler: unroll some more loops
Unroll some loops.
2016-03-28 13:25:55 +02:00
Wim Taymans
90a41b81dc audio-resampler: keep precision
Transpose and add before applying the cubic interpolation to avoid
overflows when using full precision.
2016-03-28 13:25:55 +02:00
Wim Taymans
cc9d8594fe audio-resampler: small cleanups 2016-03-28 13:25:55 +02:00
Wim Taymans
e209c0d565 audio-resampler: optimize no resampling
Switch to the faster nearest resample method when are doing no rate
conversion.
2016-03-28 13:25:54 +02:00
Wim Taymans
f692d5e459 audio-resampler: add VARIABLE_RATE flag
Add a VARIABLE rate flag that selects an interpolating filter.
Move some function setup code in the _new function.
2016-03-28 13:25:54 +02:00
Wim Taymans
7bb149dcc1 audio-resampler: more neon optimizations 2016-03-28 13:25:54 +02:00
Wim Taymans
6dd5e5259f audio-resampler: avoid overflow in cubic interpolation
Shift out an extra bit to have some more headroom when doing cubic
interpolation.
2016-03-28 13:25:54 +02:00
Wim Taymans
61460fdfad audio-resampler: overread only 8 taps
We only need 8 taps of zeroes as headroom for the SIMD optimized
functions.
2016-03-28 13:25:54 +02:00
Wim Taymans
4772ebbddf audio-converter: use helper to check intermediate format 2016-03-28 13:25:54 +02:00
Wim Taymans
00e5a8bab8 audio-resampler: fix phase 2016-03-28 13:25:54 +02:00
Wim Taymans
9182ea17b5 audio-resampler: fix neon assembler 2016-03-28 13:25:53 +02:00
Wim Taymans
027165621b audio-resampler: avoid some format conversion
Store the filter in the desired sample format so that we can simply do a
linear or cubic interpolation to get the new filter instead of having to
go through gdouble and then convert.
2016-03-28 13:25:53 +02:00
Wim Taymans
2c33c2134c audio-resampler: fix neon linear float interpolation 2016-03-28 13:25:53 +02:00
Wim Taymans
d969a7a9d8 audio-resampler: reorder filter coefficients for more speed
Reorder the filter coefficients to make it easier to use SIMD for
interpolation.
Fix orc flags a little.
Add specialized nearest resampling function.
2016-03-28 13:25:53 +02:00
Wim Taymans
107f53ea0a audio-resampler: remove stereo optimizations
The stereo optimizations don't give enough benefit.
Rename none to full to make it clear that we use a full filter instead
of an interpolated one
2016-03-28 13:25:53 +02:00
Wim Taymans
b820074a49 audio-resample: remove neon double stubs
NEON does not have double types.
2016-03-28 13:25:53 +02:00
Wim Taymans
6f9237dfb5 audio-resampler: add more neon optimizations 2016-03-28 13:25:53 +02:00
Wim Taymans
307f360cca audio-resampler: add more neon optimizations 2016-03-28 13:25:53 +02:00
Wim Taymans
d5abdd83c9 audio-resampler: add neon optimizations
Unroll some more loops in the fallback code that seems to work fine
for ARM.
Add some simple ARM optimizations taken from speex.
2016-03-28 13:25:53 +02:00
Wim Taymans
25d81ffb55 audio-resampler: give better hints about the precision
Give better hints to the compiler about the precision we expect from
the multiplications.
2016-03-28 13:25:53 +02:00
Wim Taymans
ea497b509f audio-resample: small optimizations
Remove some inline functions that are called in the slow path.
Unroll C fallback functions a little.
2016-03-28 13:25:52 +02:00
Wim Taymans
167a415717 audio-resampler: Use n_phases when calculating taps offset
Tweak linear interpolation oversampling.
Clear filter cache on rate changes when using a full filter.
2016-03-28 13:25:52 +02:00
Wim Taymans
524ea147cc audio-resampler: improve filter construction
Remove some unused variables from the inner product functions.
Make filter coefficients by interpolating if required.
Rename some fields.
Try hard to not recalculate filters when just chaging the rate.
Add more proprties to audioresample.
2016-03-28 13:25:52 +02:00
Wim Taymans
0f3ff9177f audio-resampler: avoid overflow in fraction calculation 2016-03-28 13:25:52 +02:00