Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.

Bug in mp3enc_api_fp.c

m3driver
Beginner
141 Views

The memory for state->pMDCTSpec36 & state->pMDCTSpec12 is allocated using ippsMDCTFwdInitAlloc_32f() and should be freed in mp3encClose_layer3() using ippsMDCTFwdFree_32f() not ippsFree()

This was found in 5.3.4.087

0 Kudos
3 Replies
Vladimir_Dudnik
Employee
141 Views
Thanks, I'll let development team to know about your report. By the way, did you check IPP 6.0 beta where this issue might be already solved?
Regards,
Vladimir

m3driver
Beginner
141 Views
Quoting - vdudnik
Thanks, I'll let development team to know about your report. By the way, did you check IPP 6.0 beta where this issue might be already solved?
Regards,
Vladimir

No, the beta is considerably different in structure. Is it safe to swictch the beta yet? If not, when is release anticipated?

m3driver
Beginner
141 Views
I compiled the 6.0 beta and found it has a different memory leak - the psychoacoustic_block.IIRfilterState is not being free'd. mp3encClose() needs to change to:
[cpp]MP3Status mp3encClose(MP3Enc *state)
{
  if (NULL == state){
    return MP3_OK;
  }

  switch(state->com.header.layer) {
      case 1:
        break;
      case 2:
        break;
      case 3:
	{
	   int i;
	  mp3encClose_layer3(state);
	  for (i=0; i<4; i++)
	  {
	     ippsIIRFree_32f(state->psychoacoustic_block.IIRfilterState);
	  }
	}
       break;
      default:
        break;
  }

  return MP3_OK;
}[/cpp]

Reply