int AudioESound::open_input() { esd_format_t format = ESD_STREAM | ESD_RECORD; device->in_channels = 2; device->in_bits = 16; format |= get_channels_flag(device->in_channels); format |= get_bit_flag(device->in_bits); if((esd_in = esd_open_sound(translate_device_string(device->in_config->esound_in_server, device->in_config->esound_in_port))) <= 0) { fprintf(stderr, "AudioESound::open_input: open failed\n"); return 1; } esd_in_fd = esd_record_stream_fallback(format, device->in_samplerate, translate_device_string(device->out_config->esound_out_server, device->out_config->esound_out_port), "Cinelerra"); return 0; }
/** * Connection initialization: check connectivity and open for recording. * * @param sfreq [in] required sampling frequency * @param dummy [in] a dummy data * * @return TRUE on success, FALSE on failure. */ boolean adin_esd_standby(int sfreq, void *dummy) { #ifndef HAS_ESD jlog("Error: esd not compiled in\n"); return FALSE; #else esd_format_t format = ESD_BITS16 | ESD_MONO | ESD_STREAM | ESD_RECORD; /* generate uniq ID */ snprintf(name_buf, ESD_NAME_MAX, "julius%d", getpid()); /* open stream */ jlog("adin_esd: opening socket, format = 0x%08x at %d Hz id=%s\n", format, sfreq, name_buf); sock = esd_record_stream_fallback(format, sfreq, NULL, name_buf); if (sock <= 0) { jlog("Error: adin_esd: failed to connect to esd\n"); return FALSE; } return TRUE; #endif }
int main(int argc, char **argv) { char buf[ESD_BUF_SIZE]; int sock = -1, rate = ESD_DEFAULT_RATE; int length = 0, arg = 0; int bits = ESD_BITS16, channels = ESD_STEREO; int mode = ESD_STREAM, func = ESD_RECORD ; esd_format_t format = 0; FILE *target = NULL; char *host = NULL; char *name = NULL; for ( arg = 1 ; arg < argc ; arg++) { if (!strcmp("-h",argv[arg])) { printf("usage:\n\t%s [-s server] [-b] [-m] [-r freq] < file\n",argv[0]); exit(0); } else if ( !strcmp( "-s", argv[ arg ] ) ) host = argv[ ++arg ]; else if ( !strcmp( "-b", argv[ arg ] ) ) bits = ESD_BITS8; else if ( !strcmp( "-m", argv[ arg ] ) ) channels = ESD_MONO; else if ( !strcmp( "-r", argv[ arg ] ) ) { arg++; rate = atoi( argv[ arg ] ); } else if (target) { printf("%s: ignoring extra file '%s'\n", argv[0], argv[arg]); } else { name = argv[ arg ]; target = fopen( name, "w" ); if (!target) { printf("%s: Couldn't write to '%s'\n", argv[0], argv[arg]); name = NULL; } } } if (!target) { target = stdout; } format = bits | channels | mode | func; printf( "opening socket, format = 0x%08x at %d Hz\n", format, rate ); /* sock = esd_record_stream( format, rate ); */ sock = esd_record_stream_fallback( format, rate, host, name ); if ( sock <= 0 ) return 1; while ( ( length = read( sock, buf, ESD_BUF_SIZE ) ) > 0 ) { /* fprintf( stderr, "read %d\n", length ); */ if( fwrite( buf, 1, length, target ) <= 0 ) return 1; } close( sock ); return 0; }