- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I encounter the following problem (IPP5.0 @ ia32).
Based on the audio_codec_con_so and sources from the media examples and the polyphase example on page 8-215 of the ippsman.pdf, I am working on a resampling application from mp3 to wav. I use the ippsResamplePolyphaseFixed* routines and static linking.
(For the record, using dynamic linking all works as expected, but static linkage is a needed in this case)
The problem is that when the inRate/outRate division is not integral, the following call does not return:
result = ippsResamplePolyphaseFixedInitAlloc_16s(
&state, inRate, outRate, 2*window,
0.95f,9.0f, ippAlgHintAccurate);
When running this through gdb I get this backtrace:
resample_Init inRate: 88200 outRate: 8000
Program received signal SIGINT, Interrupt.
[Switching to Thread 1124096 (LWP 19364)]
0x0807a3c1 in Bessel ()
(gdb) bt
#0 0x0807a3c1 in Bessel ()
#1 0x0807cd47 in initResample_64f_2d_In ()
#2 0x0807b311 in ownsResampleFixedInitAlloc_32f ()
#3 0x41100000 in ?? ()
#4 0x00001401 in ?? ()
#5 0x087b2d00 in ?? ()
#6 0xbf9e037f in ?? ()
#7 0x0805b004 in UMC::MediaData::TryWeakCasting ()
Now, if I make sure that the inRate/outRate is integral by somehow taking the floor or the ceil, the function returns and everything works as expected (with a slightly different result in resampling
ofcourse)
Furthermore, if I program this using the 'nonFixed' polyphase routines, all works good as well, but the performance is very poor in comparison.
Is there any solution to this?
I would appreciate any feedback, help or information.
Thanks in advance,
Hendrik
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have built a small program that shows this behaviour.
When statically linked the call does not return with the following input and output rates:
44100 8000
44100 6511
But it does return when the rates are:
inRate outRate
44100 6510
44100 6512
44100 8001
I have attached a small tar file to demonstrate the behaviour.
If someone could be so kind as to build the program and see why there is no return in some cases I would be very greatful.
It might be my own inexperience with the IPP libraries (in a way, I hope so).
Thanks in advance for the efforts.
(To build the program, unpack the Makefile and the polytest.c file and run make. Two programs are built: polytest and polytest-static. The Makefile might be modificated to set the proper IPPROOT include files.)
Message Edited by klend on 02-27-2006 10:45 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
About polytest.c file - it misuses "size" variable that is the size of polyphase resampling structure in bytes. Please see the corrected version, it passes as for dll as for static lib. I think it should crash all the time but sometimes the memory layout prevents it.
Please answer if error continues
thanks,
Alexander
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
akibkal1 wrote:Hi,
About polytest.c file - it misuses "size" variable that is the size of polyphase resampling structure in bytes. Please see the corrected version, it passes as for dll as for static lib. I think it should crash all the time but sometimes the memory layout prevents it.
Please answer if error continues
Thanks for helping out, however, the problem still persists.
When I build your version of polytest.c and run the static version like this: ./polytest_static 44100 8000 the program does not return and spends its time in the ippsResamplePolyphaseFixedInitAlloc_16s routine.
This is on Linux only (I can't test under windows).
The problem is not a segmentation violation or a crash, but the problem is not returning from a ipp function call.
Regards,
Hendrik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Hendrik,
We found this bug, the reason is -0.0 sqrt argumentin the static library for Linux. Itwill becorrected in IPP 6.0.
Thanks,
Alexander
Message Edited by vdudnik on 03-15-2006 10:25 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
is there a work-around for this bug when using the static libraries? The mentioned 'nonFixed' polyphase workaround seems to have the same problen and hangs in the same Bessel function. Is there a public release date for version 6.0?
Thanks.
Mathijn
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page