Changeset 5380:0504bc7766aa in roaraudio


Ignore:
Timestamp:
01/04/12 21:36:22 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Added support for stream direction RECPLAY.

Files:
10 edited

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r5377 r5380  
    88        * Improved plugin loader a lot (Closes: #190) 
    99        * Added VIO/DSTR for SOCKS proxy (See: #187) 
     10        * Added support for stream direction RECPLAY. 
    1011 
    1112v. 0.4 - Fri Nov 11 2011 20:12 CET 
  • include/roaraudio/stream.h

    r4823 r5380  
    7070 
    7171// RECORD+PLAY: 
    72 //#define ROAR_DIR_???  22 
     72#define ROAR_DIR_RECPLAY     22 
    7373 
    7474// Max DIR +1: 
    75 #define ROAR_DIR_DIRIDS      22 
     75#define ROAR_DIR_DIRIDS      23 
    7676 
    7777// Stream flags: 
  • libroar/stream.c

    r5270 r5380  
    807807 
    808808// stream direction funcs: 
    809 /* 
    810 #define roar_dir2str(x)   ((x) == ROAR_DIR_PLAY   ? "play"   : (x) == ROAR_DIR_MONITOR ? "monitor" : \ 
    811                            (x) == ROAR_DIR_FILTER ? "filter" : (x) == ROAR_DIR_RECORD  ? "record"  : \ 
    812                            (x) == ROAR_DIR_OUTPUT ? "output" : (x) == ROAR_DIR_BIDIR   ? "bidir"   : \ 
    813                            (x) == ROAR_DIR_MIXING ? "mixing" : \ 
    814                            "unknown") 
    815 */ 
    816  
    817809static const struct { 
    818  int    dir; 
     810 const int    dir; 
    819811 const char * name; 
    820812} _libroar_dir[] = { 
     
    839831 {ROAR_DIR_RDTCS_IN,    "rdtcs_in"   }, 
    840832 {ROAR_DIR_RDTCS_OUT,   "rdtcs_out"  }, 
     833 {ROAR_DIR_RECPLAY,     "recplay"    }, 
    841834 {-1,                   "unknown"    } 
    842835}; 
  • libroareio/driver_oss.c

    r5270 r5380  
    8888   break; 
    8989  case ROAR_DIR_BIDIR: 
     90  case ROAR_DIR_RECPLAY: 
    9091    tmp = O_RDWR; 
    9192   break; 
  • roarclients/roarinterconnect.c

    r5289 r5380  
    6767#define ST_TRANSMIT 0x03 
    6868#define ST_RECEIVE  0x04 
     69#define ST_RECPLAY  0x05 
     70#define ST_RECORD   0x06 
    6971// no default here as the default depend on the server type 
    7072 
     
    102104        "  transmit           - Transmit data from local server to remote server\n" 
    103105        "  receive            - Receive data from remote server\n" 
     106        "  recplay            - Record from and play data to remote server\n" 
     107        "  record             - Record data from remote server\n" 
    104108       ); 
    105109 
     
    144148    ret -= ret & ST_MASK; 
    145149    ret += ST_RECEIVE; 
     150   } else if ( !strcmp(type, "recplay") ) { 
     151    ret -= ret & ST_MASK; 
     152    ret += ST_RECPLAY; 
     153   } else if ( !strcmp(type, "record") ) { 
     154    ret -= ret & ST_MASK; 
     155    ret += ST_RECORD; 
    146156   } else { 
    147157    return MT_NONE|ST_NONE; 
     
    174184#ifdef _HAVE_RSOUND 
    175185// RSound format helper function: 
    176 enum rsd_format para2rsdfmt (int bits, int codec) { 
     186enum rsd_format para2rsdfmt (uint32_t bits, uint32_t codec) { 
    177187 switch (codec) { 
    178188  case ROAR_CODEC_PCM_S_LE: 
     
    318328       localdir = ROAR_DIR_PLAY; 
    319329      break; 
     330     case ST_RECPLAY: 
     331       tmp      = ROAR_DIR_RECPLAY; 
     332      break; 
     333     case ST_RECORD: 
     334       tmp      = ROAR_DIR_RECORD; 
     335       localdir = ROAR_DIR_PLAY; 
     336      break; 
    320337     default: 
    321338       fprintf(stderr, "Error: unknown stream type\n"); 
     
    343360      break; 
    344361     case ST_RECEIVE: 
     362       tmp      = ROAR_DIR_MONITOR; 
     363       localdir = ROAR_DIR_PLAY; 
     364      break; 
     365     case ST_RECPLAY: 
     366       tmp      = ROAR_DIR_RECPLAY; 
     367      break; 
     368     case ST_RECORD: 
    345369       tmp      = ROAR_DIR_RECORD; 
    346370       localdir = ROAR_DIR_PLAY; 
     
    400424     case ST_TRANSMIT: 
    401425       rfh = esd_play_stream(tmp, rate, remote, CLIENT_NAME); 
     426       localdir = ROAR_DIR_MONITOR; 
    402427      break; 
    403428     case ST_RECEIVE: 
    404429       rfh = esd_monitor_stream(tmp, rate, remote, CLIENT_NAME); 
     430       localdir = ROAR_DIR_PLAY; 
    405431      break; 
    406432     default: 
  • roarclients/roarphone.c

    r5294 r5380  
    546546 } 
    547547 
    548  if ( roar_cdriver_open(&dvio, driver, device, &dinfo, ROAR_DIR_BIDIR) == -1 ) { 
     548 if ( roar_cdriver_open(&dvio, driver, device, &dinfo, ROAR_DIR_RECPLAY) == -1 ) { 
    549549  ROAR_ERR("Can not open sound card."); 
    550550  return 1; 
  • roard/codecfilter_celt.c

    r5270 r5380  
    111111   self->encoder = celt_encoder_create(self->mode); 
    112112#endif 
    113  } else if ( s->dir == ROAR_DIR_BIDIR ) { 
     113 } else if ( s->dir == ROAR_DIR_BIDIR || s->dir == ROAR_DIR_RECPLAY ) { 
    114114#ifdef ROAR_HAVE_CELT_VERSION_0_7_1 
    115115   self->decoder = celt_decoder_create(self->mode, s->info.channels, NULL); 
  • roard/meta.c

    r5295 r5380  
    184184 dir = ROAR_STREAM(g_streams[id])->dir; 
    185185 
    186  if ( dir != ROAR_DIR_PLAY   && dir != ROAR_DIR_META &&  // ignore on non input streams 
    187       dir != ROAR_DIR_FILTER && dir != ROAR_DIR_BIDIR ) 
     186 if ( dir != ROAR_DIR_PLAY   && dir != ROAR_DIR_META  &&  // ignore on non input streams 
     187      dir != ROAR_DIR_FILTER && dir != ROAR_DIR_BIDIR && 
     188      dir != ROAR_DIR_RECPLAY ) 
    188189  return 0; 
    189190 
  • roard/roard.c

    r5375 r5380  
    933933  case ROAR_DIR_FILTER: 
    934934  case ROAR_DIR_BIDIR: 
     935  case ROAR_DIR_RECPLAY: 
    935936    if ( !g_listen[sockid].inst.stpl.info.rate ) 
    936937     g_listen[sockid].inst.stpl.info.rate = g_sa->rate; 
  • roard/streams.c

    r5377 r5380  
    427427 _CHECK_SID(id); 
    428428 
    429  if ( (ss = g_streams[id]) == NULL ) 
    430   return -1; 
     429 if ( (ss = g_streams[id]) == NULL ) { 
     430  ROAR_ERR("streams_set_dir(id=%i, dir=%i, defaults=%i) = -1 // error=NOENT", id, dir, defaults); 
     431  roar_err_set(ROAR_ERROR_NOENT); 
     432  return -1; 
     433 } 
    431434 
    432435 ROAR_STREAM(ss)->dir = dir; 
     
    436439 
    437440 if ( defaults ) { 
    438   if ( dir <= 0 || dir >= ROAR_DIR_DIRIDS ) 
     441  if ( dir <= 0 || dir >= ROAR_DIR_DIRIDS ) { 
     442   ROAR_ERR("streams_set_dir(id=%i, dir=%i, defaults=%i) = -1 // error=INVAL", id, dir, defaults); 
     443   roar_err_set(ROAR_ERROR_INVAL); 
    439444   return -1; 
     445  } 
    440446 
    441447  ROAR_DBG("streams_set_dir(*): g_config->streams[dir=%i].flags = 0x%.4x", dir, g_config->streams[dir].flags); 
    442448 
    443449  if ( streams_set_flag(id, g_config->streams[dir].flags) == -1 ) { 
    444    ROAR_DBG("streams_set_dir(*) = -1 // can not set stream flags"); 
     450   ROAR_WARN("streams_set_dir(*) = -1 // can not set stream flags"); 
    445451   return -1; 
    446452  } 
     
    649655  case ROAR_DIR_OUTPUT: 
    650656  case ROAR_DIR_BIDIR: 
     657  case ROAR_DIR_RECPLAY: 
    651658    return ROAR_SUBSYS_WAVEFORM; 
    652659   break; 
     
    705712  case ROAR_DIR_FILTER: 
    706713  case ROAR_DIR_BIDIR: 
     714  case ROAR_DIR_RECPLAY: 
    707715    return STREAM_DIR_BIDIR; 
    708716   break; 
     
    19011909    case ROAR_DIR_PLAY: 
    19021910    case ROAR_DIR_BIDIR: 
     1911    case ROAR_DIR_RECPLAY: 
    19031912     break; 
    19041913    case ROAR_DIR_BRIDGE: 
     
    21892198  case ROAR_DIR_PLAY: 
    21902199  case ROAR_DIR_BIDIR: 
     2200  case ROAR_DIR_RECPLAY: 
    21912201   break; 
    21922202  case ROAR_DIR_OUTPUT: 
     
    23662376 
    23672377  case ROAR_DIR_RECORD: 
     2378  case ROAR_DIR_RECPLAY: 
    23682379    ip = g_input_buffer; 
    23692380   break; 
Note: See TracChangeset for help on using the changeset viewer.