]> git.sesse.net Git - vlc/commitdiff
Move FL32->FI32 conversion to fixed plugin
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 30 Jan 2010 11:58:08 +0000 (13:58 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 30 Jan 2010 11:58:08 +0000 (13:58 +0200)
modules/audio_filter/converter/fixed.c
modules/audio_filter/converter/float.c

index e982c6d693e3dc84428835b25f5fb38b1443c415..f994fda6acfe22586e2e3fd8681b7fc8e3bf6e68 100644 (file)
@@ -138,6 +138,7 @@ static block_t *Do_F32ToS16( filter_t * p_filter, block_t * p_in_buf )
 }
 
 /*** Conversions from decoders to FI32 */
+static block_t *Do_FL32ToF32( filter_t *, block_t * );
 static block_t *Do_S16ToF32( filter_t *, block_t * );
 static block_t *Do_U8ToF32( filter_t *, block_t * );
 
@@ -152,6 +153,10 @@ static int CreateTo( vlc_object_t *p_this )
 
     switch( p_filter->fmt_in.audio.i_format )
     {
+        case VLC_CODEC_FL32:
+            p_filter->pf_audio_filter = Do_FL32ToF32;
+            break;
+
         case VLC_CODEC_S16N:
             p_filter->pf_audio_filter = Do_S16ToF32;
             break;
@@ -223,3 +228,16 @@ out:
     block_Release( p_in_buf );
     return p_out_buf;
 }
+
+static block_t *Do_FL32ToF32( filter_t * p_filter, block_t * p_in_buf )
+{
+    const float * p_in = (float *)p_in_buf->p_buffer;
+    vlc_fixed_t * p_out = (vlc_fixed_t *)p_in_buf->p_buffer;
+
+    for ( unsigned i = p_in_buf->i_nb_samples
+               * aout_FormatNbChannels( &p_filter->fmt_in.audio ) ; i-- ; )
+    {
+        *p_out++ = (vlc_fixed_t)( *p_in++ * (float)FIXED32_ONE );
+    }
+    return p_in_buf;
+}
index 54d90ab408a8fa0ea9e390c9483b76efa7109655..e362cf6f7f86b4344a76c2bbae2515a4253da847 100644 (file)
  *****************************************************************************/
 static int  Create_F32ToFL32 ( vlc_object_t * );
 static block_t *Do_F32ToFL32( filter_t *, block_t * );
-static block_t *Do_FL32ToF32 ( filter_t *, block_t * );
 
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin ()
     set_description( N_("Floating-point audio format conversions") )
-    add_submodule ()
-        set_capability( "audio filter", 10 )
-        set_callbacks( Create_F32ToFL32, NULL )
+    set_capability( "audio filter", 10 )
+    set_callbacks( Create_F32ToFL32, NULL )
 vlc_module_end ()
 
 /*****************************************************************************
@@ -62,26 +60,19 @@ static int Create_F32ToFL32( vlc_object_t *p_this )
 {
     filter_t * p_filter = (filter_t *)p_this;
 
-    if( ( p_filter->fmt_in.audio.i_format != VLC_CODEC_FI32
-           || p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 )
-      && ( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32
-            || p_filter->fmt_out.audio.i_format != VLC_CODEC_FI32 ) )
-    {
+    if( p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32
+     || !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio,
+                            &p_filter->fmt_out.audio ) )
         return VLC_EGENERIC;
-    }
 
-    if ( !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio, &p_filter->fmt_out.audio ) )
+    switch( p_filter->fmt_in.audio.i_format )
     {
-        return VLC_EGENERIC;
-    }
+        case VLC_CODEC_FI32:
+            p_filter->pf_audio_filter = Do_F32ToFL32;
+            break;
 
-    if( p_filter->fmt_in.audio.i_format == VLC_CODEC_FI32 )
-    {
-        p_filter->pf_audio_filter = Do_F32ToFL32;
-    }
-    else
-    {
-        p_filter->pf_audio_filter = Do_FL32ToF32;
+        default:
+            return VLC_EGENERIC;
     }
 
     return VLC_SUCCESS;
@@ -101,16 +92,4 @@ static block_t *Do_F32ToFL32( filter_t * p_filter, block_t * p_in_buf )
     return p_in_buf;
 }
 
-static block_t *Do_FL32ToF32( filter_t * p_filter, block_t * p_in_buf )
-{
-    int i;
-    float * p_in = (float *)p_in_buf->p_buffer;
-    vlc_fixed_t * p_out = (vlc_fixed_t *)p_in_buf->p_buffer;
 
-    for ( i = p_in_buf->i_nb_samples
-               * aout_FormatNbChannels( &p_filter->fmt_in.audio ) ; i-- ; )
-    {
-        *p_out++ = (vlc_fixed_t)( *p_in++ * (float)FIXED32_ONE );
-    }
-    return p_in_buf;
-}