Changeset 1609:3c2a3f0fb127 in roaraudio


Ignore:
Timestamp:
04/20/09 19:45:27 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

started support for server config including default flags and mixer for individuel stream types/dirs

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • include/roaraudio/stream.h

    r978 r1609  
    4343#define ROAR_DIR_META     8 
    4444#define ROAR_DIR_BIDIR    9 
     45#define ROAR_DIR_DIRIDS  10 
    4546 
    4647 
  • roarclients/roartypes.c

    r1324 r1609  
    3333  { "roar_sample",         sizeof(struct roar_sample)         }, 
    3434  { "roar_client",         sizeof(struct roar_client)         }, 
     35  { "roard_config",        sizeof(struct roard_config)        }, 
    3536  { "roar_connection",     sizeof(struct roar_connection)     }, 
    3637  { "roar_audio_info",     sizeof(struct roar_audio_info)     }, 
     
    4445 
    4546 while ((++c)->name != NULL) 
    46   printf("%-20s = %4i Bytes = %4i Bits\n", c->name, c->len, c->len * 8); 
     47  printf("%-20s = %5i Bytes = %6i Bits\n", c->name, c->len, c->len * 8); 
    4748 
    4849 return 0; 
  • roard/include/roard.h

    r1537 r1609  
    103103int g_terminate; 
    104104 
    105 struct roar_audio_info * g_sa; 
     105struct roar_audio_info * g_sa, * g_max_sa; 
     106 
     107struct roard_config { 
     108 uint32_t flags; 
     109 struct { 
     110  uint32_t flags; 
     111  struct roar_mixer_settings mixer; 
     112  int                        mixer_channels; 
     113 } streams[ROAR_DIR_DIRIDS]; 
     114} * g_config; 
    106115 
    107116#endif 
  • roard/include/streams.h

    r1590 r1609  
    8383int streams_get_client (int id); 
    8484 
     85int streams_set_dir    (int id, int dir, int defaults); 
     86 
    8587int streams_set_fh     (int id, int fh); 
    8688int streams_get_fh     (int id); 
  • roard/roard.c

    r1581 r1609  
    129129#define R_SETGID 2 
    130130 
     131int init_config (void) { 
     132 int i; 
     133 
     134 memset(g_config, 0, sizeof(struct roard_config)); 
     135 
     136 for (i = 0; i < ROAR_DIR_DIRIDS; i++) { 
     137  g_config->streams[i].mixer_channels = 1; 
     138  g_config->streams[i].mixer.rpg_mul  = 1; 
     139  g_config->streams[i].mixer.rpg_div  = 1; 
     140  g_config->streams[i].mixer.scale    = 65535; 
     141  g_config->streams[i].mixer.mixer[0] = g_config->streams[i].mixer.scale; 
     142 } 
     143 
     144 return 0; 
     145} 
     146 
    131147int add_output (char * drv, char * dev, char * opts, int prim, int count) { 
    132148 int stream; 
     
    171187 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    172188 
    173  s->dir        = ROAR_DIR_OUTPUT; 
     189 if ( streams_set_dir(stream, ROAR_DIR_OUTPUT, 1) == -1 ) { 
     190  streams_delete(stream); 
     191  return -1; 
     192 } 
    174193 s->pos_rel_id = -1; 
    175194// s->info.codec = codec; 
     
    293312 char user_sock[80]  = {0}; 
    294313#endif 
    295  struct roar_audio_info sa; 
     314 struct roar_audio_info sa, max_sa; 
     315 struct roard_config config; 
    296316#ifdef ROAR_HAVE_FORK 
    297317 int    daemon       = 0; 
     
    363383 sa.codec    = ROAR_CODEC_DEFAULT; 
    364384 
    365  g_sa = &sa; 
     385 g_sa        = &sa; 
     386 g_max_sa    = &max_sa; 
     387 
     388 memcpy(g_max_sa, g_sa, sizeof(max_sa)); 
     389 
     390 g_config = &config; 
     391 
     392 if ( init_config() == -1 ) { 
     393  ROAR_ERR("Can not init default config!"); 
     394  return 1; 
     395 } 
    366396 
    367397 
  • roard/sources.c

    r1504 r1609  
    8181 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    8282 
    83  s->dir        = ROAR_DIR_PLAY; 
     83 if ( streams_set_dir(stream, ROAR_DIR_PLAY, 1) == -1 ) { 
     84  streams_delete(stream); 
     85  close(fh); 
     86  return -1; 
     87 } 
     88 
    8489 s->pos_rel_id = -1; 
    8590 
     
    124129 memcpy(&(s->info.bits    ), buf+34, 2); 
    125130 
    126  s->dir        = ROAR_DIR_PLAY; 
     131 if ( streams_set_dir(stream, ROAR_DIR_PLAY, 1) == -1 ) { 
     132  streams_delete(stream); 
     133  close(fh); 
     134  return -1; 
     135 } 
    127136 s->pos_rel_id = -1; 
    128137 
     
    154163 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    155164 
    156  s->dir        = ROAR_DIR_PLAY; 
     165 if ( streams_set_dir(stream, ROAR_DIR_PLAY, 1) == -1 ) { 
     166  streams_delete(stream); 
     167  return -1; 
     168 } 
     169 
    157170 s->pos_rel_id = -1; 
    158171 
     
    238251 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    239252 
    240  s->dir        = ROAR_DIR_PLAY; 
     253 if ( streams_set_dir(stream, ROAR_DIR_PLAY, 1) == -1 ) { 
     254  streams_delete(stream); 
     255  close(fh); 
     256  return -1; 
     257 } 
     258 
    241259 s->pos_rel_id = -1; 
    242260 s->info.codec = codec; 
  • roard/streams.c

    r1590 r1609  
    207207} 
    208208 
     209int streams_set_dir    (int id, int dir, int defaults) { 
     210 struct roar_stream_server * ss; 
     211 
     212 if ( (ss = g_streams[id]) == NULL ) 
     213  return -1; 
     214 
     215 ROAR_STREAM(ss)->dir = dir; 
     216 
     217 if ( defaults ) { 
     218  if ( dir <= 0 || dir >= ROAR_DIR_DIRIDS ) 
     219   return -1; 
     220 
     221  if ( streams_set_flag(id, g_config->streams[dir].flags) == -1 ) 
     222   return -1; 
     223 
     224   ss->mixer.scale   = g_config->streams[dir].mixer.scale; 
     225   ss->mixer.rpg_mul = g_config->streams[dir].mixer.rpg_mul; 
     226   ss->mixer.rpg_div = g_config->streams[dir].mixer.rpg_div; 
     227 } 
     228 
     229 return 0; 
     230} 
    209231 
    210232int streams_set_fh     (int id, int fh) { 
Note: See TracChangeset for help on using the changeset viewer.