Subject: Re: "Local" part of SDP to the binary data

From: "Louis J. Romero" <[email-masked]>
Date: Thu, 01 Mar 2001 14:33:31 -0700

hi,

I was going through the archives looking for an answer to my question and this response from Christian
appears to be the closest I can get but, its not quite what I'm looking for.

My question is similar to what the response except as follows.

Converting "c=IN IP4 $" to binary would be "%x6001 choose" but, what does the choose get converted to?
We decided to use zero but, there is concern that zero could be a valid value (not for an IP address but
certainly for other descriptor values.)

Thanks

louis

Christian Groves wrote:

> Hello Satoshi,
>
> There's a couple of ways to have a binary encoded version of the
> example.
>
> One is to find the equivalent Native Tag to the SDP information in the
> example flows.
> ie. > (?)c=IN IP4 $ could be represented by doing a choose on property
> Tag 6001. How to do a choose in the binary version is described in Annex
> A.
>
> The other is to use the tags in Annex C.11 to represent the appropriate
> SDP lines. Whilst not explicitely stated, nor prohibited I guess you
> could use the same (?) construct for choose.
>
> I think the first option is the favoured one.
>
> Cheers, Christian
>
> Satoshi SUNAGA wrote:
> >
> > Dear Sir,
> >
> > We have a question about H.248(06/00) APPENDIX A
> > EXAMPLE CALL FLOWS(INFORMATIVE) Clause 3 of ITU-T
> > recommendation.
> > Please let me know how we convert the text sample data
> > of "Local" part of SDP(Session Description Protocol) to
> > the binary data.
> >
> > Please advise;
> > (1)How do we convert the "(?)" part of sample data to
> >     binary data?
> >     For example,we have converted the "V=0" of sample data
> >     of SDP to "(2)" part as following.
> >
> > ////ITU-T H.248(06/00) APPENDIX A EXAMPLE CALL FLOWS
> > (INFORMATIVE)  Clause 3. sample data
> >
> > 3.      The MGC programs a Termination in the NULL context.
> > The terminationId is A4444, the streamId is 1,
> > the requestId in the Events descriptor is 2222.
> > The   mId is the identifier of the sender of this message,
> >   in this case,
> > it is the IP address and port [123.123.123.4]:55555.
> > Mode for this stream is set to SendReceive.
> > "al" is the analog line supervision package.
> > MGC to MG1:
> > MEGACO/1 [123.123.123.4]:55555
> > Transaction = 9999 {
> >      Context = - {
> >          Modify = A4444 {
> >              Media { Stream = 1 {
> >                       LocalControl {
> >                           Mode = SendReceive,
> >                           tdmc/gain=2,  ; in dB,
> >                           tdmc/ec=on
> >                       },
> > ---------------------------------------------
> >                       Local {
> >
> > (?)v=0
> > (?)c=IN IP4 $
> > (?)m=audio $ RTP/AVP 0
> > (?)a=fmtp:PCMU VAD=X-NNVAD ; special voice activity
> >                            ; detection algorithm
> >                       }
> > ---------------------------------------------
> > (1)How do we convert the "(?)" part of sample data to
> >     binary data?
> >
> >         }
> >              },
> >              Events = 2222 {al/of}
> >          }
> >      }
> > }
> > /////////////////////
> >
> > /////////// This is the result that we have edited of
> >                       the sample data to the binary data.
> > H248_APPENDIX_A.1.1_3.vmd
> >
> > ASN.1(BER):
> > <DETAIL>
> >   + ASN.1(BER): 250 Bytes :
> >     + MegacoMessage
> >       + mess ::= Message
> >         + version : 1
> >         + mId ::= MId : ip4Address
> >         | + ip4Address ::= IP4Address
> >         |   + address : 123.123.123.4
> >         |   + portNumber : 55555
> >         + messageBody : transactions : 1 components
> >           + [0] Transaction : transactionRequest
> >             + transactionRequest ::= TransactionRequest
> >               + transactionId ::= TransactionId : 9999
> >               + actions : 1 components
> >                 + [0] ActionRequest
> >                   + contextId ::= ContextID : 0
> >                   + commandRequests : 1 components
> >                     + [0] CommandRequest
> >                       + command ::= Command : modReq
> >                         + modReq ::= AmmRequest
> >                           + terminationID ::= TerminationIDList : 1 components
> >                           | + [0] TerminationID
> >                           |   + wildcard : 0 components
> >                           |   + id : 3 Bytes
> >                           |     + 0A4444
> >                           + descriptors : 2 components
> >                             + [0] AmmDescriptor : mediaDescriptor
> >                             | + mediaDescriptor ::= MediaDescriptor
> >                             |   + streams : multiStream : 1 components
> >                             |     + [0] StreamDescriptor
> >                             |       + streamID ::= StreamID : 1
> >                             |       + streamParms ::= StreamParms
> >                             |         + localControlDescriptor ::= LocalControlDescriptor
> >                             |         | + streamMode ::= StreamMode : sendRecv (2)
> >                             |         | + reserveValue : FALSE
> >                             |         | + reserveGroup : FALSE
> >                             |         | + propertyParms : 2 components
> >                             |         |   + [0] PropertyParm
> >                             |         |   | + name ::= PkgdName : 4 Bytes
> >                             |         |   | | + 000D000A
> >                             |         |   | + value : 1 components
> >                             |         |   |   + [0] OCTET STRING : 2 Bytes
> >                             |         |   |     + 0002
> >                             |         |   + [1] PropertyParm
> >                             |         |     + name ::= PkgdName : 4 Bytes
> >                             |         |     | + 000D0008
> >                             |         |     + value : 1 components
> >                             |         |       + [0] OCTET STRING : 1 Bytes
> >                             |         |         + 01
> >                             |         + localDescriptor ::= LocalRemoteDescriptor
> >                             |           + propGrps : 1 components
> >                             |             + [0] PropertyGroup : 5 components
> >                             |               + [0] PropertyParm
> >                             |               | + name ::= PkgdName : 4 Bytes
> >                             |               | | + 0000B001
> >                             |               | + value : 1 components
> >                             |               |   + [0] OCTET STRING : 3 Bytes
> >                             |               |     + 763D30
> >                                                       (?)We have converted the
> >                                                      "V=0" to "763D30",ASCII code.
> >                                            Please advise what we input in this part.
> >                             |               + [1] PropertyParm
> >                             |               | + name ::= PkgdName : 4 Bytes
> >                             |               | | + 0000B008
> >                             |               | + value : 1 components
> >                             |               |   + [0] OCTET STRING : 10 Bytes
> >                             |               |     + 633D494E 20495034 2024
> >                             |               + [2] PropertyParm
> >                             |               | + name ::= PkgdName : 4 Bytes
> >                             |               | | + 00001001
> >                             |               | + value : 1 components
> >                             |               |   + [0] OCTET STRING : 1 Bytes
> >                             |               |     + 00
> >                             |               + [3] PropertyParm
> >                             |               | + name ::= PkgdName : 4 Bytes
> >                             |               | | + 0000100F
> >                             |               | + value : 1 components
> >                             |               |   + [0] OCTET STRING : 1 Bytes
> >                             |               |     + 00
> >                             |               + [4] PropertyParm
> >                             |                 + name ::= PkgdName : 4 Bytes
> >                             |                 | + 0000B00C
> >                             |                 + value : 1 components
> >                             |                   + [0] OCTET STRING : 21 Bytes
> >                             |                     + 666D7470 3A50434D 55205641 443D582D 4E4E5641 44
> >                             + [1] AmmDescriptor : eventsDescriptor
> >                               + eventsDescriptor ::= EventsDescriptor
> >                                   + requestID ::= RequestID : 2222
> >                                  + eventList : 1 components
> >                                   + [0] RequestedEvent
> >                                     + pkgdName ::= PkgdName : 4 Bytes
> >                                     | + 00090005
> >                                     + evParList : 0 components
> >
> > Any help you can provide would be appreciated.
> > Thank you.
> >
> > Best regards,
> > Satoshi SUNAGA

---

From: Christian Groves <[email-masked]>
Date: Sun, 04 Mar 2001 12:36:01 +1100

Hello Louis,

The choose is encoding as per H.248 Annex A ie.
-- In PropertyParm, value is a SEQUENCE OF octet string.  When sent
-- by an MGC the interpretation is as follows:
-- empty sequence means CHOOSE
-- one element sequence specifies value
-- If the sublist field is not selected, a longer sequence means

	name 		PkgdName,
	value 	SEQUENCE OF OCTET STRING,

Value would be a sequence of length 0.

Cheers, Christian