Changeset 3658:d506b1a30a24 in roaraudio for plugins/alsa


Ignore:
Timestamp:
04/03/10 15:07:08 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

got it to work, at least in the cases you really, really know what you are doing

Location:
plugins/alsa
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • plugins/alsa/pcm.c

    r3517 r3658  
    8383 
    8484static int roar_pcm_dummy (snd_pcm_ioplug_t * io) { 
    85  ROAR_DBG("roar_pcm_dummy(*) = ?"); 
     85 ROAR_DBG("roar_pcm_dummy(*) = 0"); 
    8686 return 0; 
    8787} 
    8888 
    8989static snd_pcm_sframes_t roar_pcm_pointer(snd_pcm_ioplug_t *io) { 
     90 struct roar_alsa_pcm * self = io->private_data; 
     91 
    9092 ROAR_DBG("roar_pcm_pointer(*) = ?"); 
    91  return 0; 
     93 
     94 return snd_pcm_bytes_to_frames(io->pcm, self->writec); 
    9295} 
    9396 
     
    99102 struct roar_alsa_pcm * self = io->private_data; 
    100103 char * buf; 
     104 size_t len = size * self->info.channels * self->info.bits / 8; 
     105 ssize_t ret; 
    101106 
    102107 ROAR_DBG("roar_pcm_transfer(*) = ?"); 
     108 ROAR_DBG("roar_pcm_transfer(*): len=%lu", (long unsigned int) len); 
    103109 
    104110 buf = (char *)areas->addr + (areas->first + areas->step * offset) / 8; 
    105111 
    106  roar_vio_write(&(self->stream_vio), buf, size * self->info.channels * self->info.bits / 8); 
    107  
     112 ret = roar_vio_write(&(self->stream_vio), buf, len); 
     113 
     114 if ( ret != -1 ) 
     115  self->writec += ret; 
     116 
     117 ROAR_DBG("roar_pcm_transfer(*) = %lli", (long long int)size); 
    108118 return size; 
    109119} 
     
    124134 } 
    125135 
     136#if 0 
    126137 if ( roar_stream_new(&(self->stream), self->info.rate, self->info.channels, self->info.bits, self->info.codec) == -1 ) { 
    127138  return -EINVAL; 
     
    131142  return -EINVAL; 
    132143 } 
     144#endif 
     145 if ( roar_vio_simple_new_stream_obj(&(self->stream_vio), &(self->roar.con), &(self->stream), 
     146                                     self->info.rate, self->info.channels, self->info.bits, self->info.codec, 
     147                                     io->stream == SND_PCM_STREAM_PLAYBACK ? ROAR_DIR_PLAY : ROAR_DIR_MONITOR 
     148                                    ) == -1 ) { 
     149  return -EINVAL; 
     150 } 
    133151 
    134152 self->stream_opened = 1; 
    135153 
    136  return -ENOSYS; 
     154 ROAR_DBG("roar_pcm_prepare(*) = 0"); 
     155 return 0; 
    137156} 
    138157 
     
    170189 } 
    171190 
     191 ROAR_DBG("roar_pcm_hw_params(*) = 0"); 
    172192 return 0; 
    173193} 
     
    197217    .prepare                = roar_pcm_prepare, 
    198218    .hw_params              = roar_pcm_hw_params, 
     219    .hw_free                = NULL, 
     220    .sw_params              = NULL, 
     221    .pause                  = NULL, 
     222    .resume                 = NULL, 
     223    .dump                   = NULL, 
    199224    .close                  = roar_pcm_close, 
    200225}; 
     
    261286 } 
    262287 
     288 *pcmp = self->io.pcm; 
     289 
    263290 ROAR_DBG("SND_PCM_PLUGIN_DEFINE_FUNC(roar) = 0"); 
    264291 
     
    269296 
    270297int __snd_pcm_roar_open_dlsym_pcm_001 (void) { 
     298 ROAR_DBG("__snd_pcm_roar_open_dlsym_pcm_001(void) = 0"); 
    271299 return 0; 
    272300} 
  • plugins/alsa/roar.h

    r3517 r3658  
    5757 struct roar_vio_calls  stream_vio; 
    5858 int                    stream_opened; 
     59 size_t                 writec; 
    5960}; 
    6061 
Note: See TracChangeset for help on using the changeset viewer.