[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