Changeset 3063:955233719a84 in roaraudio for libroardsp


Ignore:
Timestamp:
12/26/09 20:36:31 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

use memory functions from libroar, not libc, fixed a small memory leak

Location:
libroardsp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r2797 r3063  
    548548 double radio = (double) to / (double) from; 
    549549 int outsamples = radio * samples; 
    550  float * inf  = malloc(samples*sizeof(float)); 
    551  float * outf = malloc(outsamples*sizeof(float)); 
     550 float * inf  = roar_mm_malloc(samples*sizeof(float)); 
     551 float * outf = roar_mm_malloc(outsamples*sizeof(float)); 
    552552 int i; 
    553553 SRC_DATA srcdata; 
     
    557557 if ( inf == NULL ) { 
    558558  if ( outf != NULL ) 
    559    free(outf); 
     559   roar_mm_free(outf); 
    560560 
    561561  return -1; 
     
    564564 if ( outf == NULL ) { 
    565565  if ( inf != NULL ) 
    566    free(inf); 
     566   roar_mm_free(inf); 
    567567 
    568568  return -1; 
     
    583583   break; 
    584584  default: 
    585     free(outf); 
    586     free(inf); 
     585    roar_mm_free(outf); 
     586    roar_mm_free(inf); 
    587587    return -1; 
    588588 } 
     
    595595 
    596596 if ( src_simple(&srcdata, SRC_ZERO_ORDER_HOLD, channels) != 0 ) { 
    597   free(outf); 
    598   free(inf); 
     597  roar_mm_free(outf); 
     598  roar_mm_free(inf); 
    599599  return -1; 
    600600 } 
     
    616616 } 
    617617 
    618  free(outf); 
    619  free(inf); 
     618 roar_mm_free(outf); 
     619 roar_mm_free(inf); 
    620620 
    621621 return 0; 
     
    883883  real_out = out; 
    884884 
    885   if ( (out = malloc(from_size)) == NULL ) 
    886    return -1; 
    887  
    888   ROAR_DBG("roar_conv(*): malloc(%i)=%p", (int)from_size, out); 
     885  if ( (out = roar_mm_malloc(from_size)) == NULL ) 
     886   return -1; 
     887 
     888  ROAR_DBG("roar_conv(*): roar_mm_malloc(%i)=%p", (int)from_size, out); 
    889889 } 
    890890 
     
    895895  if ( roar_conv_endian(out, ip, samples, ROAR_CODEC_BYTE_ORDER(from->codec), ROAR_CODEC_NATIVE_ENDIAN, from->bits) == -1 ) { 
    896896   if ( to_size < from_size ) 
    897     free(out); 
     897    roar_mm_free(out); 
    898898   return -1; 
    899899  } else { 
     
    905905  if ( roar_conv_bits(out, ip, samples, from->bits, to->bits) == -1 ) { 
    906906   if ( to_size < from_size ) 
    907     free(out); 
     907    roar_mm_free(out); 
    908908   return -1; 
    909909  } else { 
     
    915915  if ( roar_conv_signedness(out, ip, samples, ROAR_CODEC_IS_SIGNED(from->codec), ROAR_CODEC_IS_SIGNED(to->codec), to->bits) == -1 ) { 
    916916   if ( to_size < from_size ) 
    917     free(out); 
     917    roar_mm_free(out); 
    918918   return -1; 
    919919  } else { 
     
    935935   ROAR_DBG("roar_conv(*): failed to convert rate %i->%i (%ich%ibits)", from->rate, to->rate, to->bits, from->channels); 
    936936   if ( to_size < from_size ) 
    937     free(out); 
     937    roar_mm_free(out); 
    938938   return -1; 
    939939  } else { 
     
    946946  if ( roar_conv_chans(out, ip, samples, from->channels, to->channels, to->bits) == -1 ) { 
    947947   if ( to_size < from_size ) 
    948     free(out); 
     948    roar_mm_free(out); 
    949949   return -1; 
    950950  } else { 
     
    956956  if ( roar_conv_endian(out, ip, samples, ROAR_CODEC_NATIVE_ENDIAN, ROAR_CODEC_BYTE_ORDER(to->codec), to->bits) == -1 ) { 
    957957   if ( to_size < from_size ) 
    958     free(out); 
     958    roar_mm_free(out); 
    959959   return -1; 
    960960  } else { 
     
    966966  ROAR_DBG("roar_conv(*): memcpy(%p, %p, %i) = ?", real_out, out, (int)to_size); 
    967967  memcpy(real_out, out, to_size); 
    968   free(out); 
     968  roar_mm_free(out); 
    969969  ROAR_DBG("roar_conv(*): free(%p): OK!", out); 
    970970 } 
  • libroardsp/transcode_celt.c

    r2204 r3063  
    3131 
    3232int roar_xcoder_celt_init       (struct roar_xcoder * state) { 
    33  struct roar_xcoder_celt * self = malloc(sizeof(struct roar_xcoder_celt)); 
     33 struct roar_xcoder_celt * self = roar_mm_malloc(sizeof(struct roar_xcoder_celt)); 
    3434 struct roar_audio_info  * info = &(state->info.pcm); 
    3535 
     
    3939 // curruntly only 16 bit mode is supported 
    4040 if ( info->bits != 16 ) { 
    41   free(self); 
     41  roar_mm_free(self); 
    4242  return -1; 
    4343 } 
     
    5050 
    5151 self->bufferlen            = info->channels * 32 + _SIZE_LEN; 
    52  self->iobuffer             = malloc(self->bufferlen); 
     52 self->iobuffer             = roar_mm_malloc(self->bufferlen); 
    5353 
    5454 if ( self->iobuffer == NULL ) { 
    55   free(self); 
     55  roar_mm_free(self); 
    5656  return -1; 
    5757 } 
     
    6060 
    6161 if ( self->mode == NULL ) { 
    62   free(self); 
     62  roar_mm_free(self->iobuffer); 
     63  roar_mm_free(self); 
    6364  return -1; 
    6465 } 
     
    8788 
    8889 if ( self->iobuffer ) 
    89   free(self->iobuffer); 
     90  roar_mm_free(self->iobuffer); 
    9091 
    9192 if ( self->encoder ) 
     
    9899  celt_mode_destroy(self->mode); 
    99100 
    100  free(self); 
     101 roar_mm_free(self); 
    101102 
    102103 ROAR_DBG("roar_xcoder_celt_uninit(*) = 0"); 
  • libroardsp/transcode_speex.c

    r2974 r3063  
    3333 
    3434int roar_xcoder_speex_init       (struct roar_xcoder * state) { 
    35  struct roar_xcoder_speex * self = malloc(sizeof(struct roar_xcoder_speex)); 
     35 struct roar_xcoder_speex * self = roar_mm_malloc(sizeof(struct roar_xcoder_speex)); 
    3636 struct roar_audio_info  * info = &(state->info.pcm); 
    3737 int tmp; 
     
    4444 // curruntly only 16 bit mode is supported 
    4545 if ( info->bits != 16 ) { 
    46   free(self); 
     46  roar_mm_free(self); 
    4747  return -1; 
    4848 } 
     
    5353  case 2: self->stereo = 1; break; 
    5454  default: 
    55     free(self); 
     55    roar_mm_free(self); 
    5656    return -1; 
    5757 } 
     
    140140 speex_bits_destroy(&(self->bits)); 
    141141 
    142  free(self); 
     142 roar_mm_free(self); 
    143143 
    144144 return 0; 
  • libroardsp/vio_transcode.c

    r2644 r3063  
    2727int     roar_vio_open_xcode    (struct roar_vio_calls * calls, int encoder, struct roar_audio_info * info, 
    2828                                struct roar_vio_calls * dst) { 
    29  struct roar_xcoder * xcoder = malloc(sizeof(struct roar_xcoder)); 
     29 struct roar_xcoder * xcoder = roar_mm_malloc(sizeof(struct roar_xcoder)); 
    3030 
    3131 if ( xcoder == NULL ) 
     
    3333 
    3434 if ( calls == NULL || info == NULL || dst == NULL ) { 
    35   free(xcoder); 
     35  roar_mm_free(xcoder); 
    3636  return -1; 
    3737 } 
    3838 
    3939 if ( roar_xcoder_init(xcoder, encoder, info, dst) == -1 ) { 
    40   free(xcoder); 
     40  roar_mm_free(xcoder); 
    4141  return -1; 
    4242 } 
     
    9494 
    9595 if ( vio->inst != NULL ) 
    96   free(vio->inst); 
     96  roar_mm_free(vio->inst); 
    9797 
    9898 return ret; 
     
    101101int     roar_vio_open_bixcode    (struct roar_vio_calls * calls, struct roar_audio_info * info, 
    102102                                  struct roar_vio_calls * dst) { 
    103  struct roar_bixcoder * bixcoder = malloc(sizeof(struct roar_bixcoder)); 
     103 struct roar_bixcoder * bixcoder = roar_mm_malloc(sizeof(struct roar_bixcoder)); 
    104104 
    105105 if ( bixcoder == NULL ) 
     
    107107 
    108108 if ( calls == NULL || info == NULL || dst == NULL ) { 
    109   free(bixcoder); 
     109  roar_mm_free(bixcoder); 
    110110  return -1; 
    111111 } 
    112112 
    113113 if ( roar_bixcoder_init(bixcoder, info, dst) == -1 ) { 
    114   free(bixcoder); 
     114  roar_mm_free(bixcoder); 
    115115  return -1; 
    116116 } 
     
    165165 
    166166 if ( vio->inst != NULL ) 
    167   free(vio->inst); 
     167  roar_mm_free(vio->inst); 
    168168 
    169169 return ret; 
Note: See TracChangeset for help on using the changeset viewer.