[Live-devel] MPEG-4 Visual configuration bits in SDP

Dmitry Petrenko demask at mail.ru
Tue Dec 14 13:58:29 PST 2010


Re: [Live-devel] MPEG-4 Visual configuration bits in SDPHello Ross,

I would disagree that decoding SDP config bits is not needed for streaming at all.

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.

>From another hand, Axis 240S and 240Q video servers provide the required video resolution info in bits "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.

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.

Kind regards,
Dmitriy Petrenko
  ----- Original Message ----- 
  From: Ross Finlayson 
  To: LIVE555 Streaming Media - development & use 
  Sent: Friday, December 10, 2010 10:07 AM
  Subject: Re: [Live-devel] MPEG-4 Visual configuration bits in SDP


    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?


  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:
          parseGeneralConfigStr()
  (defined in "liveMedia/include/MPEG4LATMAudioRTPSource.hh) that will convert a 'config' string to binary.  E.g., the 'config' string
          deadbeef
  would be converted to the following sequence of 4 bytes
          0xDE 0xAD 0xBE 0xEF


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

  Ross Finlayson
  Live Networks, Inc.
  http://www.live555.com/


------------------------------------------------------------------------------


  _______________________________________________
  live-devel mailing list
  live-devel at lists.live555.com
  http://lists.live555.com/mailman/listinfo/live-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20101215/18f041f4/attachment.html>


More information about the live-devel mailing list