Changeset 5e9d8674edbd838ba3aa94080546e43028adc2bd
- 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
| r02e29e1 |
r5e9d867 |
|
| 3 | 3 | ***************************************************************************** |
|---|
| 4 | 4 | * 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 $ |
|---|
| 6 | 6 | * |
|---|
| 7 | 7 | * Authors: Jean-Marc Dressler <polux@via.ecp.fr> |
|---|
| … | … | |
| 38 | 38 | #include "aout_internal.h" |
|---|
| 39 | 39 | |
|---|
| | 40 | #define FRAME_SIZE 2048 |
|---|
| | 41 | |
|---|
| 40 | 42 | /***************************************************************************** |
|---|
| 41 | 43 | * aout_sys_t: BeOS audio output method descriptor |
|---|
| … | … | |
| 46 | 48 | BSoundPlayer *p_player; |
|---|
| 47 | 49 | float *p_buffer; |
|---|
| 48 | | size_t i_buffer_size; |
|---|
| | 50 | int i_got_data; |
|---|
| 49 | 51 | } aout_sys_t; |
|---|
| 50 | | |
|---|
| 51 | | #define FRAME_SIZE 2048 |
|---|
| 52 | 52 | |
|---|
| 53 | 53 | /***************************************************************************** |
|---|
| … | … | |
| 67 | 67 | |
|---|
| 68 | 68 | 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*/ |
|---|
| 71 | 71 | |
|---|
| 72 | 72 | aout_VolumeSoftInit( p_aout ); |
|---|
| … | … | |
| 110 | 110 | |
|---|
| 111 | 111 | 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 ) |
|---|
| 114 | 118 | { |
|---|
| 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; |
|---|
| 117 | 121 | } |
|---|
| 118 | | |
|---|
| 119 | | if( p_sys->i_buffer_size < size ) |
|---|
| | 122 | else |
|---|
| 120 | 123 | { |
|---|
| 121 | 124 | p_aout_buffer = aout_FifoPop( p_aout, &p_aout->output.fifo ); |
|---|
| | 125 | |
|---|
| 122 | 126 | if( p_aout_buffer != NULL ) |
|---|
| 123 | 127 | { |
|---|
| 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; |
|---|
| 138 | 135 | } |
|---|
| 139 | 136 | } |
|---|
| 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> */ |
|---|
| 147 | 139 | } |
|---|
| 148 | 140 | |
|---|