]> git.sesse.net Git - vlc/blobdiff - modules/audio_filter/resampler/bandlimited.c
Make aout_buffer_t an alias for block_t
[vlc] / modules / audio_filter / resampler / bandlimited.c
index 9ec0714af3e6f2fc64c4dc07b260b24b216210de..8167271fa1801ae2e4540794f8767afd9aa7fb23 100644 (file)
@@ -83,7 +83,7 @@ struct filter_sys_t
 
     unsigned int i_remainder;                /* remainder of previous sample */
 
-    audio_date_t end_date;
+    date_t end_date;
 
     bool b_first;
     bool b_filter2;
@@ -121,7 +121,7 @@ static int Create( vlc_object_t *p_this )
               != p_filter->output.i_physical_channels
           || p_filter->input.i_original_channels
               != p_filter->output.i_original_channels
-          || p_filter->input.i_format != VLC_FOURCC('f','l','3','2') )
+          || p_filter->input.i_format != VLC_CODEC_FL32 )
     {
         return VLC_EGENERIC;
     }
@@ -196,21 +196,21 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
     if( p_sys->b_filter2 )
         i_out_rate = p_filter->output.i_rate;
     else
-        i_out_rate = p_aout->mixer.mixer.i_rate;
+        i_out_rate = p_aout->mixer_format.i_rate;
 
     /* Check if we really need to run the resampler */
     if( i_out_rate == p_filter->input.i_rate )
     {
+#if 0   /* FIXME: needs audio filter2 to use block_Realloc */
         if( /*p_filter->b_continuity && /--* What difference does it make ? :) */
-            p_sys->i_old_wing &&
-            p_in_buf->i_size >=
-              p_in_buf->i_nb_bytes + p_sys->i_old_wing *
-              p_filter->input.i_bytes_per_frame )
+            p_sys->i_old_wing )
         {
             /* output the whole thing with the samples from last time */
-            memmove( ((float *)(p_in_buf->p_buffer)) +
-                     i_nb_channels * p_sys->i_old_wing,
-                     p_in_buf->p_buffer, p_in_buf->i_nb_bytes );
+            p_in_buf = block_Realloc( p_in_buf,
+                p_sys->i_old_wing * p_filter->input.i_bytes_per_frame,
+                p_in_buf->i_buffer );
+            if( !p_in_buf )
+                abort();
             memcpy( p_in_buf->p_buffer, p_sys->p_buf +
                     i_nb_channels * p_sys->i_old_wing,
                     p_sys->i_old_wing *
@@ -219,14 +219,15 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
             p_out_buf->i_nb_samples = p_in_buf->i_nb_samples +
                 p_sys->i_old_wing;
 
-            p_out_buf->start_date = aout_DateGet( &p_sys->end_date );
-            p_out_buf->end_date =
-                aout_DateIncrement( &p_sys->end_date,
-                                    p_out_buf->i_nb_samples );
+            p_out_buf->i_pts = date_Get( &p_sys->end_date );
+            p_out_buf->i_length =
+                date_Increment( &p_sys->end_date,
+                                p_out_buf->i_nb_samples ) - p_out_buf->i_pts;
 
-            p_out_buf->i_nb_bytes = p_out_buf->i_nb_samples *
+            p_out_buf->i_buffer = p_out_buf->i_nb_samples *
                 p_filter->input.i_bytes_per_frame;
         }
+#endif
         p_filter->b_continuity = false;
         p_sys->i_old_wing = 0;
         return;
@@ -238,8 +239,8 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
          * everything. */
         p_filter->b_continuity = true;
         p_sys->i_remainder = 0;
-        aout_DateInit( &p_sys->end_date, i_out_rate );
-        aout_DateSet( &p_sys->end_date, p_in_buf->start_date );
+        date_Init( &p_sys->end_date, i_out_rate, 1 );
+        date_Set( &p_sys->end_date, p_in_buf->i_pts );
         p_sys->i_old_rate   = p_filter->input.i_rate;
         p_sys->d_old_factor = 1;
         p_sys->i_old_wing   = 0;
@@ -269,7 +270,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
                 p_in_buf->i_nb_samples * p_filter->input.i_bytes_per_frame );
 
     /* Make sure the output buffer is reset */
-    memset( p_out, 0, p_out_buf->i_size );
+    memset( p_out, 0, p_out_buf->i_buffer );
 
     /* Calculate the new length of the filter wing */
     d_factor = (double)i_out_rate / p_filter->input.i_rate;
@@ -327,7 +328,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
 #endif
 
                 /* Sanity check */
-                if( p_out_buf->i_size/p_filter->input.i_bytes_per_frame
+                if( p_out_buf->i_buffer/p_filter->input.i_bytes_per_frame
                     <= (unsigned int)i_out+1 )
                 {
                     p_out += i_nb_channels;
@@ -402,7 +403,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
                 }
 #endif
                 /* Sanity check */
-                if( p_out_buf->i_size/p_filter->input.i_bytes_per_frame
+                if( p_out_buf->i_buffer/p_filter->input.i_bytes_per_frame
                     <= (unsigned int)i_out+1 )
                 {
                     p_out += i_nb_channels;
@@ -448,17 +449,17 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
     }
 
 #if 0
-    msg_Err( p_filter, "p_out size: %i, nb bytes out: %i", p_out_buf->i_size,
+    msg_Err( p_filter, "p_out size: %i, nb bytes out: %i", p_out_buf->i_buffer,
              i_out * p_filter->input.i_bytes_per_frame );
 #endif
 
     /* Finalize aout buffer */
     p_out_buf->i_nb_samples = i_out;
-    p_out_buf->start_date = aout_DateGet( &p_sys->end_date );
-    p_out_buf->end_date = aout_DateIncrement( &p_sys->end_date,
-                                              p_out_buf->i_nb_samples );
+    p_out_buf->i_pts = date_Get( &p_sys->end_date );
+    p_out_buf->i_length = date_Increment( &p_sys->end_date,
+                                  p_out_buf->i_nb_samples ) - p_out_buf->i_pts;
 
-    p_out_buf->i_nb_bytes = p_out_buf->i_nb_samples *
+    p_out_buf->i_buffer = p_out_buf->i_nb_samples *
         i_nb_channels * sizeof(int32_t);
 
 }
@@ -475,7 +476,7 @@ static int OpenFilter( vlc_object_t *p_this )
     int i_filter_wing;
 
     if( p_filter->fmt_in.audio.i_rate == p_filter->fmt_out.audio.i_rate ||
-        p_filter->fmt_in.i_codec != VLC_FOURCC('f','l','3','2') )
+        p_filter->fmt_in.i_codec != VLC_CODEC_FL32 )
     {
         return VLC_EGENERIC;
     }
@@ -547,7 +548,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block )
     int i_out_size;
     int i_bytes_per_frame;
 
-    if( !p_block || !p_block->i_samples )
+    if( !p_block || !p_block->i_nb_samples )
     {
         if( p_block )
             block_Release( p_block );
@@ -557,7 +558,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block )
     i_bytes_per_frame = p_filter->fmt_out.audio.i_channels *
                   p_filter->fmt_out.audio.i_bitspersample / 8;
 
-    i_out_size = i_bytes_per_frame * ( 1 + ( p_block->i_samples *
+    i_out_size = i_bytes_per_frame * ( 1 + ( p_block->i_nb_samples *
                                              p_filter->fmt_out.audio.i_rate /
                                              p_filter->fmt_in.audio.i_rate) ) +
                  p_filter->p_sys->i_buf_size;
@@ -570,7 +571,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block )
         return NULL;
     }
 
-    p_out->i_samples = i_out_size / i_bytes_per_frame;
+    p_out->i_nb_samples = i_out_size / i_bytes_per_frame;
     p_out->i_dts = p_block->i_dts;
     p_out->i_pts = p_block->i_pts;
     p_out->i_length = p_block->i_length;
@@ -586,18 +587,18 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block )
     p_filter->p_sys->b_first = false;
 
     in_buf.p_buffer = p_block->p_buffer;
-    in_buf.i_nb_bytes = in_buf.i_size = p_block->i_buffer;
-    in_buf.i_nb_samples = p_block->i_samples;
+    in_buf.i_buffer = p_block->i_buffer;
+    in_buf.i_nb_samples = p_block->i_nb_samples;
     out_buf.p_buffer = p_out->p_buffer;
-    out_buf.i_nb_bytes = out_buf.i_size = p_out->i_buffer;
-    out_buf.i_nb_samples = p_out->i_samples;
+    out_buf.i_buffer = p_out->i_buffer;
+    out_buf.i_nb_samples = p_out->i_nb_samples;
 
     DoWork( (aout_instance_t *)p_filter, &aout_filter, &in_buf, &out_buf );
 
     block_Release( p_block );
 
-    p_out->i_buffer = out_buf.i_nb_bytes;
-    p_out->i_samples = out_buf.i_nb_samples;
+    p_out->i_buffer = out_buf.i_buffer;
+    p_out->i_nb_samples = out_buf.i_nb_samples;
 
     return p_out;
 }