Custom RTP Payloads

Hi all
In the "Transmitting and Receiving Custom RTP Payloads"
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/CustomPayload.html
I want to do packetizer/depacketizer for video
so, I have VideoPacketizer.java and VideoDepacketizer.java like PcmDepacketizer/PcmPacketizer
public class VideoPacketizer implements Codec {
public VideoPacketizer() {
     supportedInputFormats = new VideoFormat[] {
     new VideoFormat(
          VideoFormat.RGB
supportedOutputFormats = new VideoFormat[] {
     new VideoFormat(
CUSTOM_VIDEO
          System.out.println(supportedOutputFormats[0].getEncoding());
          System.out.println("PA construct ok!");
public synchronized int process(Buffer inBuf, Buffer outBuf) {
int inLength = inBuf.getLength();
byte[] inData = (byte[])inBuf.getData();
byte[] outData = (byte[])outBuf.getData();
     if (outData == null || outData.length < PACKET_SIZE) {
     outData = new byte[PACKET_SIZE];
     outBuf.setData(outData);
     outData[0] = 0;
     if (first) {
          outFormat = new VideoFormat(CUSTOM_VIDEO,
new Dimension(160, 120),
               VideoFormat.NOT_SPECIFIED,
               null,
               VideoFormat.NOT_SPECIFIED);
          first = false;
          System.out.println("first................................");
When I run AVCustomTrans.java,it has a error
Error : Format of Stream not supported in RTP Session Manager
I know that my custom_video don't supported RTP
so,I wonder how can I do that.
thanks a lot.
fcustd

Have you solved this problem.
Please can you tell me how i can implement a video packetizer/depacketizer.
It would be very helpfull.
Thanks a lot

Similar Messages

  • Problem with the examples of Transmitting and Receiving Custom RTP Payloads

    I have tried the examples of this web:
    http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/CustomPayload.html
    Transmitting and Receiving Custom RTP Payloads
    I run the examples all right.
    But I want to transmit the sound using my own format, so i want to change the file PcmPacketizer.java
    and PcmDepacketizer.java
    I think the sound data is in the byte[] inData ---- {byte[] inData = (byte[])inBuf.getData();}
    so i change the data with my own function, so the inData have the diffrent length:
    then i transmit the data with the packet header
    public synchronized int process(Buffer inBuf, Buffer outBuf) {
    int inLength = inBuf.getLength();
    byte[] inData = (enbase((byte[])inBuf.getData()));
    byte[] outData = (byte[])outBuf.getData();
         if (outData == null || outData.length < PACKET_SIZE) {
         outData = new byte[PACKET_SIZE];
         outBuf.setData(outData);
         // Generate the packet header.
         int rate = (int)inFormat.getSampleRate();
         int size = (int)inFormat.getSampleSizeInBits();
         int channels = (int)inFormat.getChannels();
         outData[0] = 0;     // filler
         outData[1] = (byte)((rate >> 16) & 0xff);
         outData[2] = (byte)((rate >> 8) & 0xff);
         outData[3] = (byte)(rate & 0xff);
         outData[4] = (byte)inFormat.getSampleSizeInBits();
         outData[5] = (byte)inFormat.getChannels();
         outData[6] = (byte)inFormat.getEndian();
         outData[7] = (byte)inFormat.getSigned();
         int frameSize = inFormat.getSampleSizeInBits() * inFormat.getChannels();
         // Recompute the output format if the input format has changed.
         // The crucial info is the frame rate and size. These are used
         // to compute the actual rate the data being sent.
         if (rate != (int)outFormat.getFrameRate() ||
         frameSize != outFormat.getFrameSizeInBits()) {
              outFormat = new AudioFormat(CUSTOM_PCM,
                        AudioFormat.NOT_SPECIFIED, // rate
                        AudioFormat.NOT_SPECIFIED, // size
                        AudioFormat.NOT_SPECIFIED, // channel
                        AudioFormat.NOT_SPECIFIED, // endian
                        AudioFormat.NOT_SPECIFIED, // signed
                        size * channels,     // frame size
                        rate,               // frame rate
                        null);
    if (inLength + historyLength >= DATA_SIZE) {
         // Enough data for one packet.
                   int copyFromHistory = Math.min(historyLength, DATA_SIZE);
                   System.arraycopy(history, 0, outData, HDR_SIZE , copyFromHistory);
    int remainingBytes = DATA_SIZE - copyFromHistory;
    System.arraycopy(inData, inBuf.getOffset(),
                   outData, copyFromHistory + HDR_SIZE, remainingBytes);
    historyLength -= copyFromHistory;
    inBuf.setOffset( inBuf.getOffset() + remainingBytes);
    inBuf.setLength( inLength - remainingBytes);
         outBuf.setFormat(outFormat);
         outBuf.setLength(PACKET_SIZE);
         outBuf.setOffset(0);
    return INPUT_BUFFER_NOT_CONSUMED ;
    if (inBuf.isEOM()) { // last packet
    System.arraycopy(history, 0, outData, HDR_SIZE, historyLength);
    System.arraycopy(inData, inBuf.getOffset(),
                   outData, historyLength + HDR_SIZE, inLength);
         outBuf.setFormat(outFormat);
         outBuf.setLength(inLength + historyLength + HDR_SIZE);
         outBuf.setOffset(0);
    historyLength = 0;
    return BUFFER_PROCESSED_OK;
    // Not enough data for one packet. Save the remainder
         // for next time.
    System.arraycopy(inData, inBuf.getOffset(),
                   history, historyLength,inLength) ;
    historyLength += inLength;
    return OUTPUT_BUFFER_NOT_FILLED ;
    I think I change the data use my own function debase(), so i should decode the data in the file:PcmDepacketizer.java
    but int PcmDepacketizer.java the example is so simple that i don't know how to find and change the data.
    there is only a few lines here:
    Object outData = outBuf.getData();
         outBuf.setData(inBuf.getData());
         inBuf.setData(outData);
         outBuf.setLength(inBuf.getLength() - HDR_SIZE);
         outBuf.setOffset(inBuf.getOffset() + HDR_SIZE);
         System.out.println("the outBuf length is "+inBuf.getLength());
    I write a function : public static byte [] debase(byte[] str)
    but i don't know where can i use it.
    please tell me what should i do or where is wrong about my thought.

    the function in PcmPackettizer.java is
    public static byte[] enbase(byte [] b) {
         ByteArrayOutputStream os = new ByteArrayOutputStream();
         //byte[] oo = new byte[(b.length + 2) / 3*4];
         //for (int i = 0; i < (b.length + 2) / 3; i++) {
         for (int i = 0; i < (b.length + 2) / 3; i++) {
              short [] s = new short[3];
              short [] t = new short[4];
              for (int j = 0; j < 3; j++) {
                   if ((i * 3 + j) < b.length)
                        s[j] = (short) (b[i*3+j] & 0xFF);
                   else
                        s[j] = -1;
              t[0] = (short) (s[0] >> 2);
              if (s[1] == -1)
                   t[1] = (short) (((s[0] & 0x3) << 4));
              else
                   t[1] = (short) (((s[0] & 0x3) << 4) + (s[1] >> 4));
              if (s[1] == -1)
                   t[2] = t[3] = 64;
              else if (s[2] == -1) {
                   t[2] = (short) (((s[1] & 0xF) << 2));
                   t[3] = 64;
              else {
                   t[2] = (short) (((s[1] & 0xF) << 2) + (s[2] >> 6));
                   t[3] = (short) (s[2] & 0x3F);
              for (int j = 0; j < 4; j++)
                   os.write(t[j]);
                   //os.write(t[j],(3*i+j),1);
                   //os.write(Base64.charAt(t[j]));
         //return new String(os.toByteArray());
         return os.toByteArray();
    just like the base64 function

  • Custom RTP payload

    I used the sample "Custom RTP payload"of sun,sed when program run it tell on console that "the track is not possibile to send as MyPCM Format" and it is sent with another format!! Why????

    I used the sample "Custom RTP payload"of sun,sed when program run it tell on console that "the track is not possibile to send as MyPCM Format" and it is sent with another format!! Why????

  • Can I have a custom RTP payload, and still use a MediaLocator?

    Hi,
    I think I am a little confused. Can I have a custom RTP payload, and still use Manager.createPlayer(MediaLocator locator) to create my player?
    This doesn't seem possible because the RTPManger's addPayload(Format format, int payloadType) method isn't static, forcing me to always create my RTPManager first.
    Is this a valid observation, or am I missing something?
    Your comments are highly appreciated.
    Kind regards,
    Erwin

    Thanks for your prompt reply.
    The short answer is yes.
    The MediaLocator is used to identify the source, or destination for a media stream. For example this could be a file (file://c:\mydisk\audio.wav) or a URL (http://mydomain/music/audio.wav)
    Ok, I get that, but the MediaLocator is also used to identify the protocol, rtp in this case, and the protocol in its turn is used by the framework to locate the DataSource. I am not suggesting what you write is incorrect, I am only trying to understand how this works the way it does.
    RTP is used to transport streaming media in real time over a network (usually UDP).And that is exactly what I need it for.
    The receiver of an RTP stream is an RTP receiver. Players take the datasource(created from the MediaLocator) and feed the data to the RTP manager so it can be streamed across the network or vice versa.
    The vice versa part is what I am interested in. I need to handle a proprietary video format, packed as RTP, and shipped over UDP. My initial approach was to simply register my DePacketizer with the PlugInManager, and add my custom payload type to the RTPHandler (addFormat(Format fmt, int type)). That obviously doesn't work.
    So what I'm trying to convey is that the MediaLocator used in creating a Player will be different, and is used for a different purpose, than the Internet address, and Port used to create an RTPManager.I need a good night of sleep to think that over. I.m.h.o. there is no reason to handle "http://host:port/video/whatever.ext" different from "rtp://host:port/video/whatever.ext". The only difference is that in the first case I can build my graph based on the extension of whatever, and in the second case I have to wait for my first packet in order to determine the payload type. In both cases I expect "DataSource ds = Manager.createDataSource(ml) to work (and it probably does for the standard payload types).
    The JMF framework has a .../media/protocol/rtp/DataSource class as well as a .../media/protocol/http/DataSource class.
    Is this making any sense?Not sure yet, but I certainly appreciate your help.
    Note: In general you don't need to create a custom Payload for RTP.
    What if I want to ship a proprietary video format?
    Thanks a lot,
    Erwin

  • Custom RTP Payload Types in JMF

    I have a completely non-audio/video content type that I've sourced from an SVG based whiteboard, which generates a Media Locator. Instantiating a DataSource via the Manager from this Media Locator grabs the correct whiteboard from a static list, and generates a series of controls for how often full updates of the board are sent, collision handling, etc. (Works)
    This generates a custom Format output which is basically the SVG's XML representation (Works)
    Feeding this into a processor, you can request BZIP compression of this data to minimize the transmission bandwidth (works)
    Further feeding this data into a a custom packetizer class breaks the data into chunks, and adds FEC packets to the stream when the buffer has to be broken into 2 or more chunks. Output is a derivative of the earlier custom format. (Works)
    Muxing this data back together gets you a custom DataSource of type "fec.rtp", which technically could handle any data type, but only advertises support for my custom packetized data formats. (Muxer is based on RTPSyncBufferMux - Works)
    Here's where things are getting frustrating. Calling com.sun.media.rtp.RTPSessionMgr.formatSupported (part of RTPSyncBufferMux) will tell you that I've correctly registered these custom formats for RTP transmission, but attempting to create a sendStream gives this error:
    javax.media.format.UnsupportedFormatException: Format of Stream not supported in RTP Session Manager
    at com.sun.media.rtp.RTPSessionMgr.createSendStream(RTPSessionMgr.java:1104)
    at com.sun.media.rtp.RTPSessionMgr.createSendStream(RTPSessionMgr.java:1262)
    This is extremely frustrating to put it mildly to have gotten this far and not be able to proceed, but I'm smack up against a brick wall at this point, and pressed for time to get this done. Basically I just want RTP Session Manager to take one buffer at a time and send it over the network. The FEC Depacketizer handles the work of reassembling the chunks, and passing along the data once it has enough to reconstruct a full buffer. (Uses an expiring cache so the data goes away automatically if too much is dropped to reconstruct a full buffer)
    My gut tells me there's some sort of helper that processes the dataSource, and hands data to the RTP Session Manager in a way that it understands that it has a "single packet chunk" (I've seen some classes in the com.sun.media tree that suggest as much to me) but I haven't figured this part out yet. Does anyone have experience enough with this particular API to point me in the right direction?
    Is there any good documentation for the com.sun.media tree incidentally? I'm using a LOT of helper classes from in there because once you look at the source, it's easy to see how useful they are, but it's a pain to dig through 5 or 6 classes to find out what I need to override and what I shouldn't touch.

    Switched everything over to using RTPManager, and found I had to register the type with each individual instance, instead of just doing it once. The resulting exception is now further down in the RTPSessionMgr source, which I'm assuming is progress, though that's a dangerous assumption.
    javax.media.format.UnsupportedFormatException: Format not supported
            at com.sun.media.rtp.RTPSessionMgr.createSendStream(RTPSessionMgr.java:1147)
            at com.sun.media.rtp.RTPSessionMgr.createSendStream(RTPSessionMgr.java:1262)
            at SVGEditorPanelTest.DialogTest(SVGEditorPanelTest.java:238)Here's the code, from RTPManager.newInstance to SendStream.start
            // Create the transmitter
            RTPManager rtpMgr = RTPManager.newInstance();
            Codec c = new Packetizer();
            // Register the RTP stream formats
            Format f = c.getSupportedOutputFormats(null)[0];
            Logger.global.info("Registering format: " + f);
            rtpMgr.addFormat(f, 105);
            SessionAddress localAddr = new SessionAddress(InetAddress.getLocalHost(), 1057);
            String cname = "test@localhost";
            String username = System.getProperty("User.name");
            // create our local Session Address
            SourceDescription[] userdesclist = new SourceDescription[]{
                new SourceDescription(SourceDescription.SOURCE_DESC_EMAIL,
                "[email protected]",
                1,
                false),
                new SourceDescription(SourceDescription.SOURCE_DESC_CNAME,
                cname,
                1,
                false),
                new SourceDescription(SourceDescription.SOURCE_DESC_TOOL,
                "Whiteboard Test",
                1,
                false),
                new SourceDescription(SourceDescription.SOURCE_DESC_NAME,
                username,
                1,
                false)
            rtpMgr.initialize(new SessionAddress[]{localAddr}, userdesclist, 0.05,
                    0.25, null);
            SessionAddress destAddr = new SessionAddress(
                    InetAddress.getByName("127.0.0.1"),
                    1058);
            System.out.println("Adding target: " + destAddr.toString());
            rtpMgr.addTarget(destAddr);
            System.out.println("--- Creating Send Stream on port " + localAddr.getDataPort() + " ---");
            System.out.println("Content Type: " + dataOutput.getContentType());
            System.out.println("Stream Format: " + format + "(" + format.getDataType().getCanonicalName() + ")");
            Object[] controls = dataOutput.getControls();
            for (int i = 0; i < controls.length; i++) {
                System.out.println("Control Type: " + controls.getClass().getName());
    rtpMgr.getLocalParticipant().setSourceDescription(userdesclist);
    try {
    SendStream sendStream = rtpMgr.createSendStream(dataOutput, 0);
    sendStream.start();
    System.out.println("New Stream SSRC: " + sendStream.getSSRC());
    System.out.println("New Stream Source: " + sendStream.getDataSource());
    } catch (UnsupportedFormatException ex) {
    System.out.println("Failed format is: " + ex.getFailedFormat());
    throw ex;
    It may be worth noting that this is part of a Unit Test, hence the lack of exception handling.
    Stdout looks like:RTP Format Supported
    Adding target: DataAddress: /127.0.0.1
    ControlAddress: /127.0.0.1
    DataPort: 1058
    ControlPort: 1059
    --- Creating Send Stream on port 1057 ---
    Content Type: fec.rtp
    Stream Format: bzipsvgwb/rtp(byte[])
    Failed format is: bzipsvgwb/rtp
    Edited by: sh0ckbyt3 on Dec 29, 2008 12:05 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Using Custom RTP Payloads

    Hello,
    I need to use my Custom Video Codecs in a media application so as to transform the content before transmitting it and to transform back such content when receiving. I also need to use some elements located in a file. If I get them inside the codec/decodec code, everything is OK. On the contrary, when I provide them to the codec/decode in their constructor, the transmission is not possible. I have found somewhere that in the transmitter side, I have to configure processor's tracks before sending media using the following:
    [i]Codec codecs[] = new Codec[2];
    codecs[0] = new com.sun.media.codec.video.jpeg.NativeEncoder();
    codecs[1] = new myCustomCodec();
    videoTracks[i].setCodecChain(codecs);[/i]However, in the receiver side I don't know how to deal with it. I tried the AVCustomRecv in CustomRTPPayloads example "as-is", but I get an exception, as it doesn't know how to decode. Maybe, I have to use a Processor instead of a Player and configure it in the same way as I did in the Transmitter, but I have several problems.
    Could somebody be so kind as to tell me how to create and configurate a Proccesor in the receiver side?? Is it the correct way to make my Receiver receive and decode the stream??
    Thank you very much in advance.

    Thank you very much for your answer, but I have not been able to make the codec work. I could not register my custom codec using jmfregistry, I don`t know why, because I followed the steps you said.
    Any other idea????
    Thank you very much!!

  • Can someone help me with "no format has been reg. for RTP Payload type 10"

    I am trying to send audio from Mac to PC. Mac uses quicktime for java and PC uses jmf. I looked at the Jmf supported formats list and on the SDP file for mac i used payload types like :
    m=audio 2656 RTP/AVP 0
    c=IN IP4 239.60.60.60
    . I also tried other formats too but I always get "no format has been registered for rtp payload type 10". on the pc side. Anyone can help me out? thanks!

    Sprint's unlimited wireless service is actually ten bucks more a month than my Verizon service, according to Sprint's Web site.
    And Verizon's customer support is the best in the industry.
    I have never experienced a "throttling" with my Verizon account. And I have never experienced any limited bandwidth usage problem.

  • AVReceive2 gives error:  No format has been registered for RTP Payload type

    Hello,
    I am using the AVReceive2 program (http://java.sun.com/products/java-media/jmf/2.1.1/solutions/AVReceive.html#requirements) as posted to hopefully play back RTP in real time. I have it set to receive a known good RTP stream and I receive the following error:
    No format has been registered for RTP Payload type 8
    I have seen posts for a similar error but it seemed to be in the context of an A-law add on which am I not doing. Am I missing a plug-in or modification to the code?
    thanks in advance,
    Erich

    Hi Erich,
    I have the same problem when I using AVReceive2.java .Could yuo describe your solution in order to solve the issue?
    In order to create the RTP stream I used VLC and is impossible to change the encapsulation method and then the payload type .
    What kind of streaming server are yuo used?
    My e-mail address is [email protected]
    If you can , please write me your proceeding in order to solve the problem.
    Thank you

  • Firefox webrtc rtp payload type

    I'm seeing an issue when placing a webrtc call with firefox when the answer SDP has different payload types than the offer. for example, i get an offer from firefox that has the opus codec with payload type 109. if the answer SDP comes in with the opus codec and payload type 110, audio will not be heard. looking in the WebRTC.log file you will see a whole bunch of "IncomingRTPPacket received invalid payloadtype".
    i believe the correct behavior in this case is for firefox to transmit opus with RTP payload type 110 (ie the remote payload type) and expect to receive opus with payload type 109. it looks like firefox will send with 110 and expect to receive with 110.
    the same scenario with chrome does not have a problem. if i change the SDP answer to match the payload type of the offer, audio can be heard in firefox.
    the same issue can be seen with VP8 video or other codecs with dynamic payload types.
    for reference, the relevant excerpt from rfc3264:
    "In the case of RTP, if a particular codec was referenced with a
    specific payload type number in the offer, that same payload type
    number SHOULD be used for that codec in the answer. "
    in this case the answer SDP is violating the SHOULD in the rfc, but this is sometimes unavoidable when interworking SDP between devices (ie some sort of back-to-back signaling agent).

    That RFC is a proposed standard at the moment [http://datatracker.ietf.org/doc/rfc3264/]
    However, this would be a great bug for tech evangelism, I would encourage you to file a bug with some technical examples. Way to keep the web open!

  • Support RTP payload type 8 and 13

    I am trying to use JMF to play back recorded RTP streams containing RTP payload type 8 (ALaw) and 13 (CN). It seems these are not supported by default.
    Did anybody add support to JMF to support these payload types succesfully? Help is greatly appreciated.

    Hello
    i have a same problem.so i was asking if you solved it or not.
    Thanks

  • Dynamic rtp payload type 123

    Hello,
    We have a problem about dynamic rtp payload type 123. Wireshark is shown rtp packets which dynamic rtp payload type is 123 malformed.
    why do cisco gateways send dynamic rtp payload type 123 packets to non-cisco gateways? Can we disable dynamic rtp payload type 123 nagotiation?
    please help,
    Thanks
    Omer

    Hello again,
    Signaling Protocol is H323. I can not take debug h323 etc  logs because of the device has too many calls. But you can find below rtp debug that i took before.
    I can not share AS full config because privacy stuff.
    voice service voip
    fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711ulaw
    h323
      emptycapability
      h225 timeout setup 10
    modem passthrough nse codec g711ulaw
    sip
      bind control source-interface Loopback3
      bind media source-interface Loopback3
    no voice-fastpath enable
    dial-peer voice 1 voip
    description INCOMING Traffic
    service incomingcallcontrol
    voice-class aaa 3
    voice-class codec 101
    incoming called-number B00290..........$
    dtmf-relay rtp-nte h245-signal h245-alphanumeric
    fax-relay ecm disable
    fax rate 14400
    ip qos dscp cs3 signaling
    no vad
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs tx s=10.10.10.1(23690), d=172.20.60.2(12994), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    RTP(54397): fs rx s=10.10.11.1(20928), d=10.10.10.1(23946), pt=123, ts=1303D47D, ssrc=20351C0, marker=0
    Regards

  • RTP payload(RFC 2833) DTMF handler in JMF

    hi all,
    anybody tell how I receive RTP payload format vai JMF .I am able to receive DTMF through SIP INFO.
    [email protected]

    Hi Teodor.
    Thanks for your answer.
    This is my dial-peer 4000:
    dial-peer voice 4000 voip
    service session
    destination-pattern [2-9]T
    rtp payload-type nte 98
    voice-class codec 55
    session protocol sipv2
    session target ipv4:65.xxx.xxx.35
    dtmf-relay rtp-nte
    The voice class codec 55 puts the g729a as the preferred one.
    Your answer gave me the idea where to look and found that the calls that doesn't match the dial peer 4000 and go by the default (PeerID= 0) are shown at the show call history voice command as using tx_DtmfRelay=rtp-nte
    while the calls that do match the dp 4000 for an unknown reason are shown as using tx_DtmfRelay=inband-voice.
    I am looking for a reason but I think it is with the supplier of the DIDs as another supplier using the same dp4000 and also G729a codec looks like using rtp-nte.
    If you have any further idea please let me know.
    Regards

  • HT5981 AD Bind via Custom Settings payload?

    In this this document...
    OS X Mavericks: Using advanced Active Directory options in a configuration profile
    Apple indicates that advanced Active Directory configuration options are configurable as a "Custom Settings" payload in Profile Manager.
    My tests indicate this is not the case, but perhaps I am missing something?
    Has anbody been able to get this work?
    Can anybody provide a concrete example of the correct Property List structure one must employ to get this to work?
    Thanks,
    Brian

    Thanks for posting Brian  You're 100% right.  It's been noted and the revised article should be published shortly.

  • H.263/RTP payload

    As we know jmf can stream in h.263/rtp with payload 34. i am streaming h.263/rtp to a device which does not understand payload 34 rather payload 96 whihc is used by h.263-1998 and 2000 updated versions.
    Do anyone has any idea how can change payload from 34 to compatible with 96.
    Sorry if it is not the right place/forum to ask this question. But if any one has any idea where i can ask question regarding transcoding h.263/rtp packets from the one compatible with rfc 2190 (which is supported by jmf and is almost outdated) to packets compatible with rfc 2429.

    Sorry captfoss i was on leave for some time so could not respond to your reply on time.
    While working today i found that JMF has a videoformat :-VideoFormat.H263_1998_RTP which is compaitable with RFC 2429. But there is a problem - i tried several times to transcode my h263 file i am reading from local computer to h263_1998_RTP format but it fails giving following error:-
    Failed to realize: com.sun.media.ProcessEngine@19209ea
      Cannot build a flow graph with the customized options:
        Unable to transcode format: H263, 176x144, FrameRate=15.0, Length=76032 0 extra bytes
          to: H263-1998/RTP
          outputting to: RAW/RTP
    Error: Unable to realize com.sun.media.ProcessEngine@19209eathen i checked in jmf registery i found a codec -com.sun.media.codec.video.vh263.Native Decoder -This Decoder converts h263,h263/rtp as well as h263-1998/rtp into yuv format. but i could not found any encoder which converts any format(yuv or rgb or h263 or any other) to h263-1998/rtp.
    Is there any way by which i can transcode to h263-1998/rtp???

  • RTP payload type 8 G711 AlAW RTP

    Hi everybody,
    I look for a decoder to decode ALAW_RTP. For my project I have to save RTP stream (a-law and not mu-law) to a wave file.
    I found this in the forum : http://forum.java.sun.com/thread.jspa?forumID=28&threadID=505153
    But they don't put a solution for this problem.
    Is anybody solve this problem?
    How can i create the DePackatazer for ALAW_RTP?
    Please help!
    Gassman

    I find the solution :
    It's a mixe between the link upside, com.ibm.media.codec.alaw.JavaDecoder, com.ibm.media.codec.ulaw.JavaDecoder and http://java.sun.com/products/java-media/jmf/2.1.1/solutions/PcmDepacketizer.java
    class AlawRtpDecoder.java
    import javax.media.Buffer;
    import javax.media.Control;
    import javax.media.Format;
    import javax.media.format.AudioFormat;
    import com.sun.media.controls.SilenceSuppressionAdapter;
    * Mu-Law to PCM java decoder
    * @Author Shay Ben-David [email protected]
    public class AlawRtpDecoder extends com.ibm.media.codec.audio.AudioCodec {
         // Variables
         static private final byte[] lutTableL = new byte[256];
         static private final byte[] lutTableH = new byte[256];
         static String PLUGIN_NAME = "ALAW_RTP DePacketizer";
         static String CUSTOM_PCM = "alaw/rtp";
         static int DEFAULT_RATE = 8000;
         static int DEFAULT_SIZE = 16;
         static int DEFAULT_CHNLS = 1;
         // Methods
         public AlawRtpDecoder() {
              supportedInputFormats = new AudioFormat[] { new AudioFormat(CUSTOM_PCM) };
              // We have to assume some defaults for the output
              // format. Otherwise, the data flow graph cannot
              // be initialized.
              supportedOutputFormats = new AudioFormat[] { new AudioFormat(
                        AudioFormat.LINEAR, DEFAULT_RATE, DEFAULT_SIZE, DEFAULT_CHNLS) };
         protected Format[] getMatchingOutputFormats(Format in) {
              AudioFormat af = (AudioFormat) in;
              supportedOutputFormats = new AudioFormat[] { new AudioFormat(
                        AudioFormat.LINEAR, af.getSampleRate(), 16, af.getChannels(),
                        AudioFormat.LITTLE_ENDIAN, // isBigEndian(),
                        AudioFormat.SIGNED // isSigned());
              return supportedOutputFormats;
         /** Initializes the codec. * */
         public void open() {
              initTables();
         public String getName() {
              return PLUGIN_NAME;
         static public boolean matche(Format input, Format supported[]) {
              for (int i = 0; i < supported.length; i++) {
                   if (input.matches(supported))
                        return true;
              return false;
         public Format[] getSupportedOutputFormats(Format input) {
              if (input == null || matche(input, supportedInputFormats)) {
                   return supportedOutputFormats;
              return new Format[0];
         public Format setInputFormat(Format format) {
              if (!matche(format, supportedInputFormats))
                   return null;
              inputFormat = (AudioFormat) format;
              return format;
         public Format setOutputFormat(Format format) {
              if (!matche(format, supportedOutputFormats))
                   return null;
              outputFormat = (AudioFormat) format;
              return format;
         public Format[] getSupportedInputFormats() {
              return supportedInputFormats;
         protected Format getInputFormat() {
              return inputFormat;
         protected Format getOutputFormat() {
              return outputFormat;
         public void close() {
         /** decode the buffer * */
         public int process(Buffer inputBuffer, Buffer outputBuffer) {
              if (!checkInputBuffer(inputBuffer)) {
                   return BUFFER_PROCESSED_FAILED;
              if (isEOM(inputBuffer)) {
                   propagateEOM(outputBuffer);
                   return BUFFER_PROCESSED_OK;
              byte[] inData = (byte[]) inputBuffer.getData();
              byte[] outData = validateByteArraySize(outputBuffer, inData.length * 2);
              int inpLength = inputBuffer.getLength();
              int outLength = 2 * inpLength;
              int inOffset = inputBuffer.getOffset();
              int outOffset = outputBuffer.getOffset();
              for (int i = 0; i < inpLength; i++) {
                   int temp = inData[inOffset++] & 0xff;
                   outData[outOffset++] = lutTableL[temp];
                   outData[outOffset++] = lutTableH[temp];
              updateOutput(outputBuffer, outputFormat, outLength, outputBuffer.getOffset());
              return BUFFER_PROCESSED_OK;
         private void initTables (){
         for (int i=0;i<256;i++) {
         int input = i ^ 0x55;
         int mantissa = (input & 0xf ) << 4;
         int segment = (input & 0x70) >> 4;
         int value = mantissa+8;
         if (segment>=1)
         value+=0x100;
         if (segment>1)
         value <<= (segment - 1);
         if ( (input & 0x80)==0 )
         value = -value;
         lutTableL[i]=(byte)value;
         lutTableH[i]=(byte)(value>>8);
         public java.lang.Object[] getControls() {
              if (controls == null) {
                   controls = new Control[1];
                   controls[0] = new SilenceSuppressionAdapter(this, false, false);
              return (Object[]) controls;
    for use this juste add the following codec in your main program
    RTPManager manager = RTPManager.newInstance();
    AlawRtpDecoder alawRtpDepktizer = null;
              try
    alawRtpDepktizer = new AlawRtpDecoder();
                   PlugInManager.addPlugIn(alawRtpDepktizer.getClass().getName(),
                             alawRtpDepktizer.getSupportedInputFormats(),
                             alawRtpDepktizer.getSupportedOutputFormats(null),
                             PlugInManager.CODEC);
                   Format AlawRtpFormat =(alawRtpDepktizer.getSupportedInputFormats())[0];
                   manager.addFormat(AlawRtpFormat, 8);
    }null

Maybe you are looking for