Changeset 1590:07fa8c4493e4 in roaraudio


Ignore:
Timestamp:
04/16/09 16:33:51 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added first try of support for hwmixer flag

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • include/libroar/vio.h

    r1529 r1590  
    8585#define ROAR_VIO_CTL_GET_DBLKSIZE  (ROAR_VIO_CTL_DRIVER|0x0003) /* get Driver Blocks size (in byte) */ 
    8686#define ROAR_VIO_CTL_SET_DBLKSIZE  (ROAR_VIO_CTL_DRIVER|0x0004) /* set Driver Blocks size (in byte) */ 
     87#define ROAR_VIO_CTL_GET_VOLUME    (ROAR_VIO_CTL_DRIVER|ROAR_VIO_CTL_GET|0x10) 
     88#define ROAR_VIO_CTL_SET_VOLUME    (ROAR_VIO_CTL_DRIVER|ROAR_VIO_CTL_SET|0x10) 
    8789 
    8890// sys io: 
  • roard/driver.c

    r1543 r1590  
    219219} 
    220220 
     221int driver_set_volume(int stream, struct roar_mixer_settings * mixer) { 
     222 struct roar_stream_server * ss; 
     223 
     224 if ( (ss = g_streams[stream]) == NULL ) 
     225  return -1; 
     226 
     227 if ( !streams_get_flag(stream, ROAR_FLAG_HWMIXER) ) 
     228  return 0; 
     229 
     230 if ( ss->driver_id == -1 ) 
     231  return -1; 
     232 
     233 return roar_vio_ctl(&(ss->vio), ROAR_VIO_CTL_SET_VOLUME, (void*)mixer); 
     234} 
     235 
    221236//ll 
  • roard/include/driver.h

    r1543 r1590  
    111111int driver_read (DRIVER_USERDATA_T   inst, int driver, char * buf, int len); 
    112112int driver_flush(DRIVER_USERDATA_T   inst, int driver); 
     113int driver_set_volume(int stream, struct roar_mixer_settings * mixer); 
    113114 
    114115#endif 
  • roard/include/streams.h

    r1493 r1590  
    9898 
    9999int streams_calc_delay   (int id); 
     100int streams_set_mixer    (int id); 
    100101 
    101102int streams_ctl          (int id, int_least32_t cmd, void * data); 
  • roard/req.c

    r1493 r1590  
    666666 } 
    667667 
     668 if ( streams_set_mixer(stream) == -1 ) 
     669  return -1; 
     670 
    668671 mes->cmd     = ROAR_CMD_OK; 
    669672 mes->datalen = 0; 
  • roard/streams.c

    r1585 r1590  
    328328 
    329329 if ( flag & ROAR_FLAG_HWMIXER ) { // currently not supported -> ignored 
    330   flag -= ROAR_FLAG_HWMIXER; 
     330  g_streams[id]->flags |= flag; 
     331  if ( streams_set_mixer(id) == -1 ) { 
     332   g_streams[id]->flags -= flag; 
     333   return -1; 
     334  } 
    331335 } 
    332336 
     
    399403 
    400404 return 0; 
     405} 
     406 
     407int streams_set_mixer    (int id) { 
     408 struct roar_stream_server * ss; 
     409 
     410 if ( (ss = g_streams[id]) == NULL ) 
     411  return -1; 
     412 
     413 if ( !streams_get_flag(id, ROAR_FLAG_HWMIXER) ) 
     414  return 0; 
     415 
     416 if ( ss->driver_id == -1 ) 
     417  return 0; 
     418 
     419 return driver_set_volume(id, &(ss->mixer)); 
    401420} 
    402421 
     
    619638  } 
    620639 
    621   if ( change_vol(rest, info->bits, rest, 8*outlen / info->bits, info->channels, &(stream->mixer)) == -1 ) 
    622    return -1; 
     640  if ( !streams_get_flag(id, ROAR_FLAG_HWMIXER) ) { 
     641   if ( change_vol(rest, info->bits, rest, 8*outlen / info->bits, info->channels, &(stream->mixer)) == -1 ) 
     642    return -1; 
     643  } 
    623644 
    624645  // we habe outlen bytes more... 
Note: See TracChangeset for help on using the changeset viewer.