[vlc-devel] [PATCH] qtsound: fix broken qtsound module

Michael Feurstein michael.feurstein at gmail.com
Fri Jun 15 18:30:14 CEST 2012


---
 modules/access/qtsound.m |   34 +++++++---------------------------
 1 files changed, 7 insertions(+), 27 deletions(-)

diff --git a/modules/access/qtsound.m b/modules/access/qtsound.m
index 44fb1e0..6f7fd19 100644
--- a/modules/access/qtsound.m
+++ b/modules/access/qtsound.m
@@ -165,12 +165,8 @@ vlc_module_end ()
                  b2Ptr = (const float *) tempAudioBufferList->mBuffers[1].mData;
                  i < numberOfSamples; i++)
             {
-                *uPtr = *b1Ptr;
-                uPtr ++;
-                b1Ptr ++;
-                *uPtr = *b2Ptr;
-                uPtr ++;
-                b2Ptr ++;
+                *uPtr++ = *b1Ptr++;
+                *uPtr++ = *b2Ptr++;
             }
 
             if (currentAudioBuffer == nil)
@@ -450,15 +446,6 @@ static int Open( vlc_object_t *p_this )
      */
     audiofmt.audio.i_original_channels = AOUT_CHAN_RIGHT | AOUT_CHAN_LEFT;
     /*
-     * i_bytes_per_frame Optional - for A/52, SPDIF and DTS types:
-     * Bytes used by one compressed frame, depends on bitrate.
-     */
-    audiofmt.audio.i_bytes_per_frame = 4;
-    /*
-     * Number of sampleframes contained in one compressed frame.
-     */
-    audiofmt.audio.i_frame_length = 1;
-    /*
      * Please note that it may be completely arbitrary - buffers are not
      * obliged to contain a integral number of so-called "frames". It's
      * just here for the division:
@@ -466,9 +453,9 @@ static int Open( vlc_object_t *p_this )
      */
     audiofmt.audio.i_bitspersample = 32;
     audiofmt.audio.i_channels = 2;
-    audiofmt.audio.i_blockalign = audiofmt.audio.i_channels * audiofmt.audio.i_bitspersample / 16;
+    audiofmt.audio.i_blockalign = audiofmt.audio.i_channels * (audiofmt.audio.i_bitspersample / 8);
     audiofmt.i_bitrate = audiofmt.audio.i_channels * audiofmt.audio.i_rate * audiofmt.audio.i_bitspersample;
-    p_sys->i_audio_max_buffer_size = 4096;
+    p_sys->i_audio_max_buffer_size = audiofmt.i_bitrate;
 
     p_sys->session = [[QTCaptureSession alloc] init];
 
@@ -554,10 +541,10 @@ static int Demux( demux_t *p_demux )
     {
         if ( [p_sys->audiooutput checkCurrentAudioBuffer] )
         {
-            p_blocka->i_pts = [p_sys->audiooutput getCurrentPts];
-            p_blocka->p_buffer = [p_sys->audiooutput getCurrentAudioBufferData];
+            p_blocka->i_buffer = p_blocka->i_size = [p_sys->audiooutput getCurrentTotalDataSize];
+            p_blocka->p_buffer = p_blocka->p_start = [p_sys->audiooutput getCurrentAudioBufferData];
             p_blocka->i_nb_samples = [p_sys->audiooutput getNumberOfSamples];
-            p_blocka->i_buffer = [p_sys->audiooutput getCurrentTotalDataSize];
+            p_blocka->i_pts = [p_sys->audiooutput getCurrentPts];
         }
     }
 
@@ -577,13 +564,6 @@ static int Demux( demux_t *p_demux )
 
     @synchronized (p_sys->audiooutput)
     {
-        /*
-         * Free Memory
-         *
-         * Wait before freeing memory, so we don't get no crackling sound
-         * crackling sound artefacts start at 100 ms and below
-         */
-        msleep( 200 );
         [p_sys->audiooutput freeAudioMem];
     }
 
-- 
1.7.4.4




More information about the vlc-devel mailing list