[vlc-commits] aout: use float rate for filters
Rémi Denis-Courmont
git at videolan.org
Fri May 4 17:28:21 CEST 2018
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri May 4 18:12:39 2018 +0300| [f80f542a97e5c4c660c0c7c3c6d16e2ff7148991] | committer: Rémi Denis-Courmont
aout: use float rate for filters
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f80f542a97e5c4c660c0c7c3c6d16e2ff7148991
---
include/vlc_aout.h | 2 +-
modules/stream_out/transcode/audio.c | 3 +--
src/audio_output/dec.c | 8 +-------
src/audio_output/filters.c | 9 ++++-----
4 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/include/vlc_aout.h b/include/vlc_aout.h
index 97e6468da2..e3153b8e25 100644
--- a/include/vlc_aout.h
+++ b/include/vlc_aout.h
@@ -399,7 +399,7 @@ VLC_API void aout_FiltersDelete(vlc_object_t *, aout_filters_t *);
#define aout_FiltersDelete(o,f) \
aout_FiltersDelete(VLC_OBJECT(o),f)
VLC_API bool aout_FiltersAdjustResampling(aout_filters_t *, int);
-VLC_API block_t *aout_FiltersPlay(aout_filters_t *, block_t *, int rate);
+VLC_API block_t *aout_FiltersPlay(aout_filters_t *, block_t *, float rate);
VLC_API block_t *aout_FiltersDrain(aout_filters_t *);
VLC_API void aout_FiltersFlush(aout_filters_t *);
VLC_API void aout_FiltersChangeViewpoint(aout_filters_t *, const vlc_viewpoint_t *vp);
diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c
index 055473198b..1b2414f28f 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -365,8 +365,7 @@ int transcode_audio_process( sout_stream_t *p_stream,
p_audio_buf->i_dts = p_audio_buf->i_pts;
/* Run filter chain */
- p_audio_buf = aout_FiltersPlay( id->p_af_chain, p_audio_buf,
- INPUT_RATE_DEFAULT );
+ p_audio_buf = aout_FiltersPlay( id->p_af_chain, p_audio_buf, 1.f );
if( !p_audio_buf )
goto error;
diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c
index f1a8fc3b86..2d330c3348 100644
--- a/src/audio_output/dec.c
+++ b/src/audio_output/dec.c
@@ -34,7 +34,6 @@
#include <vlc_common.h>
#include <vlc_aout.h>
-#include <vlc_input.h>
#include "aout_internal.h"
#include "libvlc.h"
@@ -349,7 +348,6 @@ static void aout_DecSynchronize(audio_output_t *aout, mtime_t dec_pts)
int aout_DecPlay(audio_output_t *aout, block_t *block)
{
aout_owner_t *owner = aout_owner (aout);
- int input_rate;
assert (block->i_pts != VLC_TS_INVALID);
@@ -385,11 +383,7 @@ int aout_DecPlay(audio_output_t *aout, block_t *block)
vlc_mutex_unlock (&owner->vp.lock);
}
- input_rate = lroundf(owner->sync.rate * 1000.f);
- assert(input_rate >= INPUT_RATE_DEFAULT / AOUT_MAX_INPUT_RATE);
- assert(input_rate <= INPUT_RATE_DEFAULT * AOUT_MAX_INPUT_RATE);
-
- block = aout_FiltersPlay (owner->filters, block, input_rate);
+ block = aout_FiltersPlay(owner->filters, block, owner->sync.rate);
if (block == NULL)
goto lost;
diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c
index af06bec043..99b3a7648d 100644
--- a/src/audio_output/filters.c
+++ b/src/audio_output/filters.c
@@ -28,6 +28,7 @@
# include "config.h"
#endif
+#include <math.h>
#include <string.h>
#include <assert.h>
@@ -37,7 +38,6 @@
#include <vlc_aout.h>
#include <vlc_filter.h>
#include <vlc_vout.h> /* for vout_Request */
-#include <vlc_input.h>
#include <libvlc.h>
#include "aout_internal.h"
@@ -699,11 +699,11 @@ bool aout_FiltersAdjustResampling (aout_filters_t *filters, int adjust)
return filters->resampling != 0;
}
-block_t *aout_FiltersPlay (aout_filters_t *filters, block_t *block, int rate)
+block_t *aout_FiltersPlay(aout_filters_t *filters, block_t *block, float rate)
{
int nominal_rate = 0;
- if (rate != INPUT_RATE_DEFAULT)
+ if (rate != 1.f)
{
filter_t *rate_filter = filters->rate_filter;
@@ -712,8 +712,7 @@ block_t *aout_FiltersPlay (aout_filters_t *filters, block_t *block, int rate)
/* Override input rate */
nominal_rate = rate_filter->fmt_in.audio.i_rate;
- rate_filter->fmt_in.audio.i_rate =
- (nominal_rate * INPUT_RATE_DEFAULT) / rate;
+ rate_filter->fmt_in.audio.i_rate = lroundf(nominal_rate / rate);
}
block = aout_FiltersPipelinePlay (filters->tab, filters->count, block);
More information about the vlc-commits
mailing list