<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Re: [Live-devel] MPEG-4 Visual configuration bits in SDP</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE type=text/css>BLOCKQUOTE {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
DL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
UL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
OL {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI {
        PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
</STYLE>

<META content="MSHTML 6.00.6000.17092" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hello Ross,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I would disagree that decoding SDP config bits is 
not needed for streaming at all.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>For example, Axis 240S and 240Q video servers *do 
not* provide "x-dimensions" parameter in their SDP (or other similar 
parameters like "cliprect" or "framesize"). Thus, LIVE555 is not aware 
about video resolution when recording RTSP from these video servers. The width 
and height values must be supplied manually, which is not feasible in some 
cases. E.g. when recording MPEG-4 stream to AVI file, the wrong width and 
height values in AVI header might result in unplayable file.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>From another hand, Axis 240S and 240Q video 
servers provide the required video resolution info in bits 
"</FONT><FONT face=Arial size=2>video_object_layer_width" and 
"video_object_layer_height" from config parameter. Thus, config 
bits parsing/decoding would be a useful feature in LIVE555. The 
decoding algorythm is pretty simple and can be found in ISO/IEC 14496 Part 2 
documentation in "Visual bitstream syntax" chapter.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>After all, LIVE555 currently has a static function 
samplingFrequencyFromAudioSpecificConfig() implemented in 
MPEG4GenericRTPSource.cpp. That's exactly what it is doing - parsing (i.e. 
decoding, in other words) SDP config bits to extract frequency. This 
value is being used in SubsessionIOState class when recording QT 
movies.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Kind regards,</FONT></DIV>
<DIV><FONT face=Arial size=2>Dmitriy Petrenko</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=finlayson@live555.com href="mailto:finlayson@live555.com">Ross 
  Finlayson</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=live-devel@ns.live555.com 
  href="mailto:live-devel@ns.live555.com">LIVE555 Streaming Media - development 
  & use</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Friday, December 10, 2010 10:07 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [Live-devel] MPEG-4 Visual 
  configuration bits in SDP</DIV>
  <DIV><BR></DIV>
  <BLOCKQUOTE cite="" type="cite"><FONT face=Arial size=-1>Just came across 
    that it would be useful to have an easy-to-use decoder for MPEG-4 Visual 
    configuration bits that are encoded in "config" parameter of SDP. 
    Something like mpeg4vol command-line tool from mpeg4ip does. Are there any 
    plans to implement this in the future?</FONT></BLOCKQUOTE>
  <DIV><BR></DIV>
  <DIV>The 'config' parameter string is simply a string of bytes, encoded as 
  hexadecimal digits (therefore, two hexadecimal digits per byte).  We do 
  have a function:</DIV>
  <DIV><X-TAB>        
  </X-TAB>parseGeneralConfigStr()</DIV>
  <DIV>(defined in "liveMedia/include/MPEG4LATMAudioRTPSource.hh) that will 
  convert a 'config' string to binary.  E.g., the 'config' string</DIV>
  <DIV><X-TAB>        </X-TAB>deadbeef</DIV>
  <DIV>would be converted to the following sequence of 4 bytes</DIV>
  <DIV><X-TAB>        </X-TAB>0xDE 0xAD 0xBE 
  0xEF</DIV>
  <DIV><BR></DIV>
  <DIV>However, we don't implement any additional 'decoding' of this data (or 
  any other MPEG-4 data), because it's not needed at all for streaming.  
  (We don't include any audio/video decoding or encoding 
  software.)</DIV><X-SIGSEP><PRE>-- 
</PRE></X-SIGSEP>
  <DIV><BR>Ross Finlayson<BR>Live Networks, 
Inc.<BR>http://www.live555.com/</DIV>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>live-devel mailing 
  list<BR>live-devel@lists.live555.com<BR>http://lists.live555.com/mailman/listinfo/live-devel<BR></BLOCKQUOTE></BODY></HTML>