[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