Changeset 1060:ddaf199fe8d6 in roaraudio
- Timestamp:
- 12/24/08 12:40:31 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/convert.c
r1059 r1060 574 574 int roar_conv (void * out, void * in, int samples, struct roar_audio_info * from, struct roar_audio_info * to) { 575 575 void * ip = in; 576 void * real_out ;576 void * real_out = NULL; 577 577 size_t from_size, to_size; 578 578 … … 581 581 // for the moment: guess out >= in 582 582 583 from_size = from->channels * from->bits * samples/ 8;584 to_size = to->channels * to->bits * samples/ 8;583 from_size = (from->bits * samples) / 8; 584 to_size = ( to->bits * samples) / 8; 585 585 586 586 if ( to_size < from_size ) { … … 589 589 if ( (out = malloc(from_size)) == NULL ) 590 590 return -1; 591 592 ROAR_DBG("roar_conv(*): malloc(%i)=%p", (int)from_size, out); 591 593 } 592 594 … … 635 637 if ( from->rate != to->rate ) { 636 638 if ( roar_conv_rate(out, ip, samples, from->rate, to->rate, to->bits, from->channels) == -1 ) { 637 if ( to_size < from_size ) 638 free(out); 639 ROAR_DBG("roar_conv(*): failed to convert rate %i->%i (%ich%ibits)", from->rate, to->rate, to->bits, from->channels); 639 640 return -1; 640 641 } else { … … 664 665 665 666 if ( to_size < from_size ) { 667 ROAR_DBG("roar_conv(*): memcpy(%p, %p, %i) = ?", real_out, out, (int)to_size); 666 668 memcpy(real_out, out, to_size); 667 669 free(out);
Note: See TracChangeset
for help on using the changeset viewer.