Well, Thank you Anthony. 3 questions In summary, 1) in
if (x < rlen) { z += (int32_t) *(fp + x);
Any difference if change the "+=" to "=" since z is 0? It just confused me. 2) If n1 = 32768, n2 = 32766, after use MACRO switch_normalize_to_16bit(n1) switch_normalize_to_16bit(n2) the result will be: n1 = 32767/2 = 16383 n2 = 32766 is that the expected result? 3) Is there any chance rlen and wlen both > 0? On Apr 6, 2009, at 11:16 PM, Anthony Minessale wrote:
what ?
I don't know what your question is.
On Mon, Apr 6, 2009 at 9:35 AM, seven du <seven@idapted.com> wrote: Hi, can someone explain this to me?
In switch_core_media_bug.c, around line 173:
for (x = 0; x < blen; x++) { int32_t z = 0;
if (x < rlen) { z += (int32_t) *(fp + x); // what's difference here with z = (int32_t) *(fp + x) ?
} if (x < wlen) { z += (int32_t) *(dp + x); } switch_normalize_to_16bit(z); *(fp + x) = (int16_t) z / 2; }
And for switch_normalize_to_16bit, according to switch_utils.h,
#define SWITCH_SMAX 32767 #define SWITCH_SMIN -32768 #define switch_normalize_to_16bit(n) if (n > SWITCH_SMAX) n = SWITCH_SMAX / 2; else if (n < SWITCH_SMIN) n = SWITCH_SMIN / 2;
Then switch_normalize_to_16bit( 32768 ), z = 32767/2, and (int16_t) z / 2 = 32767/4 switch_normalize_to_16bit( 32766) , z = 32766, and (int16_t) z / 2 = 32766/2
Does that make sense? I guess it should be like this:
#define switch_normalize_to_16bit(n) if (n > SWITCH_SMAX) n = SWITCH_SMAX / 2; else if (n < SWITCH_SMIN) n = SWITCH_SMIN / 2; else n = n / 2;
switch_normalize_to_16bit(z); *(fp + x) = (int16_t) z;
Thank you.
_______________________________________________ Freeswitch-dev mailing list Freeswitch-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org pstn:213-799-1400 _______________________________________________ Freeswitch-dev mailing list Freeswitch-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org