Changeset 3147:f287dc06c28a in roaraudio
- Timestamp:
- 01/15/10 14:04:03 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroaross/libroaross.c
r3146 r3147 324 324 325 325 // ------------------------------------- 326 // function to parse format: 327 // ------------------------------------- 328 329 static int _ioctl_stream_format (struct handle * handle, int format) { 330 struct roar_audio_info * info = &(handle->stream.info); 331 332 switch (format) { 333 case AFMT_S8: 334 info->bits = 8; 335 info->codec = ROAR_CODEC_PCM_S_LE; 336 break; 337 case AFMT_U8: 338 info->bits = 8; 339 info->codec = ROAR_CODEC_PCM_U_LE; 340 break; 341 case AFMT_S16_BE: 342 info->bits = 16; 343 info->codec = ROAR_CODEC_PCM_S_BE; 344 break; 345 case AFMT_S16_LE: 346 info->bits = 16; 347 info->codec = ROAR_CODEC_PCM_S_LE; 348 break; 349 case AFMT_U16_BE: 350 info->bits = 16; 351 info->codec = ROAR_CODEC_PCM_U_BE; 352 break; 353 case AFMT_U16_LE: 354 info->bits = 16; 355 info->codec = ROAR_CODEC_PCM_U_LE; 356 break; 357 #ifdef AFMT_S32_BE 358 case AFMT_S32_BE: 359 info->bits = 32; 360 info->codec = ROAR_CODEC_PCM_S_BE; 361 break; 362 #endif 363 #ifdef AFMT_S32_LE 364 case AFMT_S32_LE: 365 info->bits = 32; 366 info->codec = ROAR_CODEC_PCM_S_LE; 367 break; 368 #endif 369 case AFMT_A_LAW: 370 info->bits = 8; 371 info->codec = ROAR_CODEC_ALAW; 372 break; 373 case AFMT_MU_LAW: 374 info->bits = 8; 375 info->codec = ROAR_CODEC_MULAW; 376 break; 377 #ifdef AFMT_VORBIS 378 case AFMT_VORBIS: 379 info->codec = ROAR_CODEC_OGG_VORBIS; 380 break; 381 #endif 382 } 383 384 errno = ENOSYS; 385 return -1; 386 } 387 388 // ------------------------------------- 326 389 // emulated functions follow: 327 390 // ------------------------------------- … … 415 478 416 479 extern int ioctl (int __fd, unsigned long int __request, ...) { 480 struct pointer * pointer; 481 struct handle * handle; 417 482 va_list args; 418 483 void *argp; 484 int * ip = NULL; 419 485 420 486 _init(); … … 424 490 va_end (args); 425 491 492 if ( (pointer = _get_pointer_by_fh(__fd)) != NULL ) { 493 switch ((handle = pointer->handle)->type) { 494 ip = argp; 495 case HT_STREAM: 496 switch (__request) { 497 case SNDCTL_DSP_RESET: 498 case SNDCTL_DSP_POST: 499 break; 500 case SNDCTL_DSP_SPEED: 501 handle->stream.info.rate = *ip; 502 return 0; 503 break; 504 case SNDCTL_DSP_CHANNELS: 505 handle->stream.info.channels = *ip; 506 return 0; 507 break; 508 case SNDCTL_DSP_SETFMT: 509 return _ioctl_stream_format(handle, *ip); 510 break; 511 default: 512 errno = ENOSYS; 513 return -1; 514 } 515 break; 516 case HT_MIXER: 517 errno = ENOSYS; 518 return -1; 519 break; 520 default: 521 errno = EINVAL; 522 return -1; 523 break; 524 } 525 } 526 426 527 return _os.ioctl(__fd, __request, argp); 427 528 }
Note: See TracChangeset
for help on using the changeset viewer.