<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>