<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><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 class="713304410-24052012"><font size="2" face="Arial">That enables 
bool for Boolean in the library. </font></span></div></span></div></blockquote><div><br></div>OK, I'll make this change in the next release of the software.</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012">
<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></span></div></blockquote><div><br></div>OK (except that it'll be "False" and "True" rather than "false" and "true").</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012">
<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></span></div></blockquote><div><br></div>OK.</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012">
<div><span class="Apple-style-span" style="font-family: Arial; font-size: small; ">File 
MP3InternalsHuffman.cpp</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</font></span></div></span></div></blockquote><div><br></div>Yes, that's the right thing to do.<br><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012"><div><span class="Apple-style-span" style="font-family: Arial; font-size: small; ">File 
MP3Internals.cpp</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></span></div></blockquote><div><br></div>OK, I'll just change it to that; thanks.</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012">
<div><span class="713304410-24052012"><font size="2" face="Arial"></font></span> <span class="Apple-style-span" style="font-family: Arial; font-size: small; ">in line 227 
replace</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></span></div></blockquote><div><br></div>OK.</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012">
<div><span class="Apple-style-span" style="font-family: Arial; font-size: small; ">File 
MediaSession.cpp</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></span></div></blockquote><div><br></div>OK (except again that it'll be "False" and "True" rather than "false" and "true").</div><div><br></div><div><br><blockquote type="cite"><div><span class="713304410-24052012"><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></span></div></blockquote><div><br></div>Agreed; I'll do this.</div><div><br></div><div>Thanks again for the suggestions.  I'll make these changes in the next release of the software.</div><br><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>