[Asterisk-Dev] help needed implementing H324M (UMTS Video)

Klaus Darilion klaus.mailinglists at pernau.at
Thu Jan 13 09:13:20 MST 2005


Hi all!

I investigae implementing a UMTS Video <-> SIP Video gateway in 
astersik. Currently I'm analyzing the asterisk code and reading the 
specifications (H.324M, H.223). I have several questions how to 
incorporate this into asterisk and hope that some of you can give me 
some answers. (If someone is already working on this, I would be happy 
to work with you)

First, I will give a very short introduction into H.324M. H.324M is 
basically the same as H.324 with some adaptions for mobile terminals - 
it uses the mobile levels of H.223 for better frame detection and error 
recovery. In case of ISDN, the setup procedure is similar to an audio 
call, except the "User information layer 1": (btw: the debug output of 
asterisk is wrong - it should be "H.324M" instead of "G.7xx 384k Video")

   < Bearer Capability (len= 3)
       Ext: 1  Q.931 Std: 0  Info transfer capability:
                Unrestricted digital information (8)
       Ext: 1  Trans mode/rate: 64kbps, circuit-mode (16)
       Ext: 1  User information layer 1: G.7xx 384k Video (38)

After the channel is established, the setup procedure will proceed in 
the established B-channel. H.223 will be used to multiplex the various 
logical channels (audio, video, control) over the B-channel. One logical 
channel will be established implicitly for enabling call control using 
H.245. Depending on the mobile level of H.223, the H.223 packets will be 
delimited using HDLC flags (01111110) (mobile level 0), 16 bit flags 
(level 1), or more complex flags (level 2 and 3). (You can also find a 
good and short introduction at: 
http://www.dilithiumnetworks.com/news/Media%20Coverage/IEEE_Multimedia_04July.pdf)

Immediately after establishing the B-channel, the 2 clients have to 
agree on a H.223 mobile level. Therefore they are consecutively sending 
the flags to indicate their mobile level capabillities. Simultaneously 
the clients are analyzing the received flags to identify the mobile 
level of the remote client. If the mobile levels differ, the clients 
have to fall back to a mobile level supported by both clients.

And now my questions/problems.

- Where should I implement this functionality? Should I write an 
application which does H.324 or should I modify the zaptel channel?

- Up to now I wrote s small application which uses f=ast_read(chan); to 
read a frame from the B-channel and later dumps the data to a file (for 
analyzing the received bit stream). Is there a better way to retrieve 
the unmodified stream from the B-channel? Is the order of bytes/bits in 
f->data the same as received on the B-channel? (I'm currently having 
some byte sex and byte order problems).

I'm willing to put effort in this gateway, but somehow I'm lost in the 
source code and help by some experts will help me to focus on the real 
problems. Btw: Is there a developer guide which describes the design of 
asterisk and the usage of zaptel?

Any help is greatly appreciated.
regards,
Klaus









More information about the asterisk-dev mailing list