Changeset 858:5ef1c551785f in roaraudio
- Timestamp:
- 09/30/08 03:24:22 (16 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroardsp/convert.h
r857 r858 79 79 int roar_conv_codec_u2s32 (void * out, void * in, int samples); 80 80 81 int roar_conv_endian_16 (void * out, void * in, int samples); 81 // implemnted? 82 int roar_conv_endian_16 (void * out, void * in, int samples); // yes 83 int roar_conv_endian_24 (void * out, void * in, int samples); 84 int roar_conv_endian_32 (void * out, void * in, int samples); 82 85 83 86 int roar_conv (void * out, void * in, int samples, struct roar_audio_info * from, struct roar_audio_info * to); -
libroardsp/convert.c
r857 r858 334 334 int inbo = ROAR_CODEC_BYTE_ORDER(from), outbo = ROAR_CODEC_BYTE_ORDER(to); 335 335 int ins = ROAR_CODEC_IS_SIGNED(from), outs = ROAR_CODEC_IS_SIGNED(to); 336 337 if ( inbo != outbo ) 338 return -1; 336 void * nin = in; 337 338 if ( bits == 8 || bits == 16 ) { 339 if ( inbo == ROAR_CODEC_PDP ) 340 inbo = ROAR_CODEC_LE; 341 if ( outbo == ROAR_CODEC_PDP ) 342 outbo = ROAR_CODEC_LE; 343 } 344 345 if ( inbo != outbo ) { 346 if ( bits != 8 ) { // there is no need to talk about eddines on 8 bit data streams 347 if ( bits == 16 ) { 348 // in this case we can only have LE vs. BE, so, only need to swap: 349 roar_conv_endian_16(out, nin, samples); 350 nin = out; 351 } else { 352 return -1; 353 } 354 } 355 } 339 356 340 357 if ( ins != outs ) { 341 358 if ( ins && !outs ) { 342 359 switch (bits) { 343 case 8: roar_conv_codec_s2u8( out, in, samples); break;344 case 16: roar_conv_codec_s2u16(out, in, samples); break;345 case 32: roar_conv_codec_s2u32(out, in, samples); break;360 case 8: roar_conv_codec_s2u8( out, nin, samples); break; 361 case 16: roar_conv_codec_s2u16(out, nin, samples); break; 362 case 32: roar_conv_codec_s2u32(out, nin, samples); break; 346 363 default: 347 364 errno = ENOSYS; … … 350 367 } else if ( !ins && outs ) { 351 368 switch (bits) { 352 case 8: roar_conv_codec_u2s8( out, in, samples); break;353 case 16: roar_conv_codec_u2s16(out, in, samples); break;354 case 32: roar_conv_codec_u2s32(out, in, samples); break;369 case 8: roar_conv_codec_u2s8( out, nin, samples); break; 370 case 16: roar_conv_codec_u2s16(out, nin, samples); break; 371 case 32: roar_conv_codec_u2s32(out, nin, samples); break; 355 372 default: 356 373 errno = ENOSYS; … … 440 457 441 458 if ( out != in ) { 459 // printf("out != in\n"); 442 460 for(i = 0; i < samples; i += 2) { 461 // printf("op[%i] = ip[%i]\nop[%i] = ip[%i]\n", i, i+1, i+1, i); 443 462 op[i ] = ip[i+1]; 444 463 op[i+1] = ip[i ]; 445 464 } 446 465 } else { 466 // printf("out == in\n"); 447 467 for(i = 0; i < samples; i += 2) { 448 468 c = ip[i+1];
Note: See TracChangeset
for help on using the changeset viewer.