Changeset 5e9d8674edbd838ba3aa94080546e43028adc2bd

Show
Ignore:
Timestamp:
10/13/02 17:39:16 (6 years ago)
Author:
Eric Petit <titer@videolan.org>
git-committer:
Eric Petit <titer@videolan.org> 1034523556 +0000
git-parent:

[af3a25f572ce434d1c3eb849d06342048244dc35]

git-author:
Eric Petit <titer@videolan.org> 1034523556 +0000
Message:

Now BeOS sound is (almost) clean.
It is kludgy, but it works ;)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/gui/beos/AudioOutput.cpp

    r02e29e1 r5e9d867  
    33 ***************************************************************************** 
    44 * Copyright (C) 1999, 2000, 2001 VideoLAN 
    5  * $Id: AudioOutput.cpp,v 1.10 2002/10/12 12:24:52 titer Exp $ 
     5 * $Id: AudioOutput.cpp,v 1.11 2002/10/13 15:39:16 titer Exp $ 
    66 * 
    77 * Authors: Jean-Marc Dressler <polux@via.ecp.fr> 
     
    3838#include "aout_internal.h" 
    3939 
     40#define FRAME_SIZE 2048 
     41 
    4042/***************************************************************************** 
    4143 * aout_sys_t: BeOS audio output method descriptor 
     
    4648    BSoundPlayer *p_player; 
    4749    float *p_buffer; 
    48     size_t i_buffer_size
     50    int i_got_data
    4951} aout_sys_t; 
    50  
    51 #define FRAME_SIZE 2048 
    5252 
    5353/***************************************************************************** 
     
    6767     
    6868    aout_sys_t *p_sys = p_aout->output.p_sys; 
    69     p_sys->i_buffer_size = 0; 
    70     p_sys->p_buffer = NULL; 
     69   p_sys->i_got_data = 0; 
     70    p_sys->p_buffer = (float*) malloc( 16384 ); /*FIXME*/ 
    7171 
    7272    aout_VolumeSoftInit( p_aout ); 
     
    110110 
    111111    float *p_buffer = (float*) buffer; 
    112      
    113     if( format.format != media_raw_audio_format::B_AUDIO_FLOAT ) 
     112 
     113    /* <kludge> */ 
     114    /* Usually BSoundPlay asks for 8192 bytes buffers, while vlc gives 
     115    a 16384 one. So we keep the second half of it in p_sys->p_buffer */ 
     116 
     117    if( p_sys->i_got_data ) 
    114118    { 
    115         msg_Err( p_aout, "Bad audio format" ); 
    116         return
     119        memcpy( p_buffer, p_sys->p_buffer, 8192 ); 
     120        p_sys->i_got_data = 0
    117121    } 
    118  
    119     if( p_sys->i_buffer_size < size ) 
     122    else 
    120123    { 
    121124        p_aout_buffer = aout_FifoPop( p_aout, &p_aout->output.fifo ); 
     125 
    122126        if( p_aout_buffer != NULL ) 
    123127        { 
    124             if( p_sys->p_buffer == NULL ) 
    125             { 
    126                 p_sys->p_buffer = (float*)malloc( p_aout_buffer->i_nb_bytes ); 
    127                 p_sys->i_buffer_size = p_aout_buffer->i_nb_bytes; 
    128             } 
    129             else 
    130             { 
    131                 realloc( p_sys->p_buffer, 
    132                          p_sys->i_buffer_size + p_aout_buffer->i_nb_bytes ); 
    133                 memcpy( p_sys->p_buffer + p_sys->i_buffer_size, 
    134                         p_aout_buffer->p_buffer, 
    135                         p_aout_buffer->i_nb_bytes ); 
    136                 p_sys->i_buffer_size += p_aout_buffer->i_nb_bytes; 
    137             } 
     128            memcpy( p_buffer, 
     129                    p_aout_buffer->p_buffer, 
     130                    8192 ); 
     131            memcpy( p_sys->p_buffer, 
     132                    p_aout_buffer->p_buffer + 8192, 
     133                    8192 ); 
     134            p_sys->i_got_data = 1; 
    138135        } 
    139136    } 
    140  
    141     if( p_sys->i_buffer_size >= size ) 
    142     { 
    143         memcpy( p_buffer, p_sys->p_buffer, 
    144                 MIN( size, p_sys->i_buffer_size ) ); 
    145         p_sys->i_buffer_size -=  MIN( size, p_sys->i_buffer_size ); 
    146     } 
     137     
     138    /* </kludge> */ 
    147139} 
    148140