<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 9.00.8112.16443"></HEAD>
<BODY>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>Hello 
Ross,</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>I'm using your 
library with MS Visual Studio 2008 and I've found the following 
issue:</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>The Boolean type in 
your library is defined as unsigned char. However, VS2008 fully supports 
proper bool/true/false type.  Could you please consider the following 
changes in code (library from 2012-05-17)</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>1. Enable bool 
support for MSVC: in the UsageEnvironment\include\Boolean.hh file 
replace:</FONT></SPAN></DIV><SPAN class=713304410-24052012>
<DIV><FONT size=2 face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><BR><FONT size=2 face=Arial>#ifdef   
__BORLANDC__<BR>#define Boolean bool</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><BR><FONT size=2 face=Arial>by</FONT></DIV><FONT size=2 
face=Arial></FONT><FONT size=2 face=Arial></FONT>
<DIV><FONT size=2 face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><BR><FONT size=2 face=Arial>#if 
defined(__BORLANDC__) <SPAN class=713304410-24052012> 
</SPAN>||  <SPAN 
class=713304410-24052012>(</SPAN>defined(_MSC_VER)<SPAN 
class=713304410-24052012> &&  _MSC_VER >= 
1400)    // MSVC++ 8.0, Visual Studio 2005 and 
higher</SPAN><BR>#define Boolean bool</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV></SPAN><SPAN class=713304410-24052012><FONT size=2 face=Arial>That enables 
bool for Boolean in the library. </FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>After that I've 
found some places where the Boolean variables are improperly used. Here is 
the list of places and proposed fixes:</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>File 
MPEG4LATMAudioRTPSource.cpp</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in line 175 
replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2>audioMuxVersion = 0;</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>allStreamsSameTimeFraming = 1;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2>by</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2><BR>audioMuxVersion = false;</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2>allStreamsSameTimeFraming = true;<BR></FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT size=2>in line 
187-190 change</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2></FONT></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2>audioMuxVersion = (nextByte&0x80)>>7;<BR>if (audioMuxVersion != 
0) break;</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial><FONT 
size=2>allStreamsSameTimeFraming = 
(nextByte&0x40)>>6;</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>by</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>audioMuxVersion = 
(nextByte&0x80) != 0;<BR>if (audioMuxVersion) break;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>allStreamsSameTimeFraming = (nextByte&0x40)>>6 != 
0;</FONT> </SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>File 
MP3InternalsHuffman.cpp</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in line 552 
replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>scaleFactorsLength = 
getScaleFactorsLength(gr, isMPEG2);</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>by 
</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>scaleFactorsLength = 
getScaleFactorsLength(gr, isMPEG2 != 0);</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>Actually it's more 
accurate to change the isMPEG2 type to Boolean, but I'm note sure what else this 
change might need.</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>File 
MP3Internals.cpp</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in line 176 
replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>hasCRC = 
((hdr>>16)&0x1)^0x1;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>by</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>hasCRC = 
((hdr>>16)&0x1) == 0;</FONT></SPAN></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>I hope compiler 
could optimize it to (hdr & 0x10000) == 0</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in line 227 
replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>framesize /= 
samplingFreq<<isMPEG2;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>by 
</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>framesize /= 
samplingFreq<< (isMPEG2 ? 1 : 0);</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>File 
MediaSession.cpp</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in lines 1114-116 
and 1121-1123 replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>fReadSource 
=<BR>  AMRAudioRTPSource::createNew(env(), fRTPSocket, 
fRTPSource,<BR>                   
fRTPPayloadFormat, 0 
/*isWideband*/,<BR>                   
fNumChannels, fOctetalign, 
fInterleaving,<BR>                   
fRobustsorting, fCRC);<BR>// Note that fReadSource will differ from fRTPSource 
in this case<BR>  } else if (strcmp(fCodecName, "AMR-WB") == 0) { // AMR 
audio (wideband)<BR>fReadSource =<BR>  AMRAudioRTPSource::createNew(env(), 
fRTPSocket, 
fRTPSource,<BR>                   
fRTPPayloadFormat, 1 
/*isWideband*/,<BR>                   
fNumChannels, fOctetalign, 
fInterleaving,<BR>                   
fRobustsorting, fCRC);</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>by</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>fReadSource 
=<BR>  AMRAudioRTPSource::createNew(env(), fRTPSocket, 
fRTPSource,<BR>                   
fRTPPayloadFormat, false 
/*isWideband*/,<BR>                   
fNumChannels, fOctetalign != 0, 
fInterleaving,<BR>                   
fRobustsorting != 0, fCRC != 0);<BR>// Note that fReadSource will differ from 
fRTPSource in this case<BR>  } else if (strcmp(fCodecName, "AMR-WB") == 0) 
{ // AMR audio (wideband)<BR>fReadSource =<BR>  
AMRAudioRTPSource::createNew(env(), fRTPSocket, 
fRTPSource,<BR>                   
fRTPPayloadFormat, true 
/*isWideband*/,<BR>                   
fNumChannels, fOctetalign != 0, 
fInterleaving,<BR>                   
fRobustsorting != 0, fCRC != 0);</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>I hope I didn't make 
a mistake here with the fOctetalign, fRobustsorting and fCRC 
passing.</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>File 
H264VideoStreamFramer.cpp</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>here is 4 places 
where the <FONT size=2>BitVector::</FONT>get1bit() result is assigned 
to the Boolean variable. The easiest solution is to assign the get1bit() != 0 to 
Boolean, but more nicer is to make inline get1BitAsBoolean() member 
and use it.</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>in lines 347, 411, 
540, 544 replace</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><FONT size=2 face=Arial>separate_colour_plane_flag = 
bv.get1Bit();</FONT></DIV>
<DIV><FONT size=2 face=Arial>frame_mbs_only_flag = bv.get1Bit();</FONT></DIV>
<DIV><FONT size=2 face=Arial>field_pic_flag = bv.get1Bit();</FONT></DIV>
<DIV><FONT size=2 face=Arial>bottom_field_flag = bv.get1Bit();</FONT></DIV>
<DIV><FONT size=2 face=Arial><SPAN 
class=713304410-24052012></SPAN></FONT> </DIV>
<DIV><FONT size=2 face=Arial><SPAN 
class=713304410-24052012>by</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>separate_colour_plane_flag = bv.get1Bit() != 
0;</FONT></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>frame_mbs_only_flag 
= bv.get1Bit() != 0;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>field_pic_flag = 
bv.get1Bit() != 0;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>bottom_field_flag = 
bv.get1Bit() != 0;</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 face=Arial>Thanks in 
advance,</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial>Nikolai</FONT></SPAN></DIV>
<DIV><SPAN class=713304410-24052012><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV align=left><FONT face="Courier New"><FONT 
size=2>_________________________________________________________<FONT 
face="Times New Roman"><BR></FONT></FONT></FONT><FONT face="Courier New"><FONT 
size=2>Nikolai Vorontsov</FONT><BR><FONT size=2>Quadrox nv</FONT></FONT><FONT 
face="Times New Roman"><BR></FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV></BODY></HTML>