Corrupted audio in video served up to QT 7.6.6 via SMIL files

We've been providing access to recorded QT video materials via SMIL playlists to QuickTime player embed-ed into web pages for some time and until the recent 7.6.6 update had no trouble with playback.
Now when clients who have updated to 7.6.6 view a movie via our SMIL file the video plays ok but its audio is stuttered and distorted, to the point of being incomprehensible. If the same videos are played back directly (ie the qtsrc attrib points directly at the media file) the video and audio play back fine. And if the video is downloaded to the clients desktop it also plays back ok.
This problem is present on Windows Vista and Windows 7, and in recent versions of Firefox and IE. We do not see this problem on our OSX test machines.
Here's a sample of the kind of embed we're using, with qtsrc pointing to the SMIL file in this case:
<embed
id="main_movie" type="video/quicktime"
src="http://OURSERVER.COM/smallplaceholder.mov"
scale="tofit" controller="false" autoplay="true" bgcolor="#000000" enablejavascript="true"
qtsrc="http://OURSERVER.COM/OURPLAYLIST.smi?id=HASHOFID&format=quicktime&playli st=0418060http://OURSERVER.COM/data/FILENAME.mp4;"
align="center" height="180" width="320">
And here's a sample SMIL file as served up to browsers...
<smil>
<body>
<seq>
<video src="http:/OURSERVER.COM/sample_mpeg4.mp4"/>
</seq>
</body>
</smil>
note: although our SMIL files usually reference our own encoded mp4 media we see the same problem if the playlist points to other sources, including the sample QT files from apple.com
If anyone can suggest how we might solve this, or think of further information that might lead to us solving this problem please reply here and I can furnish it.
thanx in advance,
Dean

I was able to fix this problem with QT SMIL movies by opening them in the QT Player on Windows and showing the AV Controls (under the Window menu). By moving the Pitch Shift control slightly to the left, it cured the gabled audio. Unfortunately, you would have to do this separately for each video you opened and the AV controls are not available for movies that are embedded into a web page. I have also reported this as a bug to Apple and included this info. Perhaps it will help them solve the problem. I sure hope so! This really needs to get fixed

Similar Messages

  • Video Server

    I have a project making portal with extensive use of video file. (It 's a manpower database). So, each record will have it's video file.
    How do we optimize the use of Oracle Video Server?
    Is it included in enterprise edition?
    What are the advantages using video server?

    well, i wanted to upload the flash file to photobucket to try
    it out. I also wanted to use photobucket as a temp. host so i can
    just quickly embed it in other applications, like on forums..
    With that being said, When i saved my flash file, it gave me
    a bunch of files that were saved along with it. I then saved for
    web and it gave me ONE .swf file. The swf file is the one that i
    was trying to upload to photobucket.
    These are the files that automatically were generated when i
    saved my finished product:
    advertisement_alternate.html
    advertisement_content.html
    advertisement.fla
    advertisement.html
    alternate.gif
    flash_detection.swf
    Now, i know that the advertisement.fla is the main file and
    the flash_detection.swf is a thing that will look for the flash
    player as the media player on the customer's computer, but i have
    NO IDEA what the alternate and content files are and why they are
    there.
    I then created a swf by saving for web by opening the
    advertisement.fla and simply saving for web as a swf..
    Now i have no idea what to do.
    When i open the advertisement.fla in flash it works. When i
    open advertisement.html in a browser window it works.. WHAT IN THE
    WORLD IS HAPPENING?

  • MERGING AND SYNCING more then one audio and video clip?

    Is there are way to select a bin of video clips and a bin of audio clips (DSLR with separate audio) and have Premiere analyze and sync them in batches like Avid. I have a mountain of audio and video clips, but with no rhyme or reason to the file name, no timecode, no slates, just waveforms. But without knowing which audio files go with which video files, it’s impossible (or least time-consuming).
    Or do I have to use plural eyes or other synchronising program for doing that?
    THanks.

    Do the video clips have audio. That is, are you seeking to match A/V clips with audio-only clips? If so, then Premiere can do that. Select all the clips in both bins, right-click & select Create Multicam Source Sequence, and select Sync by Audio.
    Whenever Premiere finds that two or more clips match each other but no others in the batch, it creates a multicam source sequence of just those clips.

  • Audio or Video Not Playing

    I recently installed Limewire on my computer and I downloaded one song. i then went into itunes to play purchased music and I got an error message saying that Itunes might not have any audio or video. I also saw that limewire was under shared files so I uninstalled limewire. And I'm still not able to play any music or video.

    It's possible you got an audio configuration error message. This may help:
    http://docs.info.apple.com/article.html?artnum=304424

  • Configuring WebLogic 8.1 to serve Streaming Audio and Video

    Hello,
    I have a requirement to serve video and audio on my application. Could anyone
    please give me the details about how to configure webLogic8.1 for streaming audio/video.
    Where should the files be placed? How to go about it...etc...etc.
    It would also be very helpful if anyone could direct me to websites or other
    resources that can provide extensive details about the same.

    it's not a feature unless someone adds it...
    You mean Apple will never accepts such feature in the App Store ?
    I'm wondering why they want to apply a restriction like this one, this really does not make sense to me...
    I've seen in a shop a device with 32gb internal flash to connect to the iphone ipad and use it like an hd for storing stuff, if they allow such thing why they don't allow this one, there is no difference in the end, also they allow streaming thru wi-fi, and they allow media players to store and read audio and video without using itunes. So i really don't get the point of their policy.

  • Corrupt audio on transferred videos

    iPhone 4 with iOS 7.1.2.  Audio on videos play fine on my phone, but when the file is transferred to my PC, the audio is garbled/corrupt.  I've tried playing the transferred files with various programs, Windows Media Player, Quick Time, etc.  No help.  This problem exists on ALL videos transferred to my PC, but does not occur when transferred to YouTube. Solution?

    Something freaky just happened the audio transfered but the visual didn't.Now I'm more confused than ever.
    Keran

  • DO i need some extra hardware interface for receving both Audio and video

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for receving both Audio and video. im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give Dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
         config= new Config();
         GridBagLayout gridBagLayout= new GridBagLayout();
         GridBagConstraints gbc;
         JPanel p= new JPanel();
         p.setLayout( gridBagLayout);
         JPanel localPanel= createLocalPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.gridwidth= 2;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
         p.add( localPanel);
         JPanel targetPanel= createTargetPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 1;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
         JPanel mediaPanel= createMediaPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 2;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
         update.setEnabled( false);
         rtcp.addActionListener( this);
         update.addActionListener( this);
         buttonPanel.add( rtcp);
         buttonPanel.add( update);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 3;
    gbc.gridwidth= 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
         p.add( buttonPanel);
    getContentPane().add( p);
         list.addMouseListener( this);
         addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "Media Locator:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_media_file= new JTextField( 35);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
         p.add( tf_media_file);
         tf_media_file.setText( config.media_locator);
         cb_loop= new JCheckBox( "loop");
         startXmit= new JButton( "Start Transmission");
         startXmit.setEnabled( true);
         startXmit.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 2;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
         p.add( cb_loop);
         cb_loop.setSelected( true);
         cb_loop.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
         p.add( startXmit);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
         p.setBorder( titledBorder);
         return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         targets= new Vector();
         for( int i= 0; i < config.targets.size(); i++) {
         targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
         list.addKeyListener( this);
         list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
         p.add( scrollPane);
    JPanel p1= new JPanel();
         p1.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_address= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
         p1.add( tf_remote_address);
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
         p1.add( tf_remote_data_port);     
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");     
    removeTarget= new JButton( "Remove Target");
         p2.add( addTarget);
         p2.add( removeTarget);
         addTarget.addActionListener( this);
         removeTarget.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.gridwidth= 2;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 20,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
         p1.add( p2);
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
         p.add( p1);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
         p.setBorder( titledBorder);
         return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         JTextField tf_local_host= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
         p.add( tf_local_host);
         try {
    String host= InetAddress.getLocalHost().getHostAddress();     
         tf_local_host.setText( host);
         } catch( UnknownHostException e) {
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
         p.add( tf_data_port);
         tf_data_port.setText( config.local_data_port);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
         p.setBorder( titledBorder);
         return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
         if( source == addTarget) {
         String ip= tf_remote_address.getText().trim();
         String port= tf_remote_data_port.getText().trim();
         String localPort= tf_data_port.getText().trim();
         addTargetToList( localPort, ip, port);
         if( avTransmitter != null) {
         avTransmitter.addTarget( ip, port);
         } else if( source == removeTarget) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              if( avTransmitter != null) {
         avTransmitter.removeTarget( target.ip, target.port);
              targets.removeElement( target);
              listModel.setData( targets);          
         } else if( source == startXmit) {
         if( startXmit.getLabel().equals( "Start Transmission")) {          
         int data_port= new Integer( tf_data_port.getText()).intValue();
              avTransmitter= new AVTransmitter( this, data_port);
         avTransmitter.start( tf_media_file.getText().trim(), targets);          
              avTransmitter.setLooping( cb_loop.isSelected());
         startXmit.setLabel( "Stop Transmission");
         } else if( startXmit.getLabel().equals( "Stop Transmission")) {
              avTransmitter.stop();
              avTransmitter= null;
              removeNonBaseTargets();
              listModel.setData( targets);
         startXmit.setLabel( "Start Transmission");          
         } else if( source == rtcp) {
         if( rtcpViewer == null) {
         rtcpViewer= new RTCPViewer();
         } else {
              rtcpViewer.setVisible( true);
              rtcpViewer.toFront();
         } else if( source == cb_loop) {
         if( avTransmitter != null) {
              avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
         String localPort= tf_data_port.getText().trim();
         for( int i= targets.size(); i > 0;) {
         Target target= (Target) targets.elementAt( i - 1);
         if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
         i--;
    public void addTargetToList( String localPort,
                             String ip, String port) {     
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
                                  port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);           
    public void rtcpReport( String report) {
         if( rtcpViewer != null) {
         rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
         config.local_data_port= tf_data_port.getText().trim();
         config.targets= new Vector();
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( config.local_data_port)) {
              config.addTarget( target.ip, target.port);
         config.media_locator= tf_media_file.getText().trim();
         config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              tf_remote_address.setText( target.ip);
              tf_remote_data_port.setText( target.port);
         int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
         this.options= options;
    public int getSize() {
         int size;
         if( options == null) {
         size= 0;
         } else {
         size= options.size();
         return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
         Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
         } else {
         name= null;
         return name;
    public void setData( Vector data) {
         options= data;
         fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
                   TargetListModel listModel, Vector targets) {
         this.localPort= localPort;
         this.ip= ip;
         this.port= port;
         this.listModel= listModel;
         this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
         if( !targetExists( localPort, ip, port)) {
         targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
         boolean exists= false;
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( localPort)
         && target.ip.equals( ip)
              && target.port.equals( port)) {          
              exists= true;
         break;
         return exists;
    >>>>>>>>>>>>>>>>>
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // Input MediaLocator
    // Can be a file or http or capture source
    private MediaLocator locator;
    private String ipAddress;
    private int portBase;
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
         this.tx= tx;
         local_data_port= data_port;
    * Starts the transmission. Returns null if transmission started ok.
    * Otherwise it returns a string with the reason why the setup failed.
    public synchronized String start( String filename, Vector targets) {
         String result;
         locator= new MediaLocator( filename);
         // Create a processor for the specified media locator
         // and program it to output JPEG/RTP
         result = createProcessor();
         if (result != null) {
         return result;
         // Create an RTP session to transmit the output of the
         // processor to the specified IP address and port no.
         result = createTransmitter( targets);
         if (result != null) {
         processor.close();
         processor = null;
         return result;
         // Start the transmission
         processor.start();
         return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
         // Cheated. Should have checked the type.
         PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
         PushBufferStream pbss[] = pbds.getStreams();
         rtpMgrs = new RTPManager[pbss.length];
         localPorts = new int[ pbss.length];
         SessionAddress localAddr, destAddr;
         InetAddress ipAddr;
         SendStream sendStream;
         int port;
         SourceDescription srcDesList[];
         for (int i = 0; i < pbss.length; i++) {
         // for (int i = 0; i < 1; i++) {
         try {
              rtpMgrs[i] = RTPManager.newInstance();     
              port = local_data_port + 2*i;
              localPorts[ i]= port;
              localAddr = new SessionAddress( InetAddress.getLocalHost(),
                                  port);
              rtpMgrs.initialize( localAddr);          
              rtpMgrs[i].addReceiveStreamListener(this);
              rtpMgrs[i].addRemoteListener(this);
         for( int k= 0; k < targets.size(); k++) {
              Target target= (Target) targets.elementAt( k);
              int targetPort= new Integer( target.port).intValue();
              addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
              sendStream = rtpMgrs[i].createSendStream(dataOutput, i);          
              sendStream.start();
         } catch (Exception e) {
              e.printStackTrace();
              return e.getMessage();
         return null;
    public void addTarget( String ip, String port) {
         for (int i= 0; i < rtpMgrs.length; i++) {
         int targetPort= new Integer( port).intValue();
         addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
         try {
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         mgr.addTarget( addr);
         tx.addTargetToList( localPort + "", ip, port + "");
         } catch( Exception e) {
         e.printStackTrace();
    public void removeTarget( String ip, String port) {
         try {     
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
         } catch( Exception e) {
         e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
         System.out.println( ce);
         if( ce instanceof DurationUpdateEvent) {
         Time duration= ((DurationUpdateEvent) ce).getDuration();
         System.out.println( "duration: " + duration.getSeconds());
         } else if( ce instanceof EndOfMediaEvent) {
         System.out.println( "END OF MEDIA - looping=" + looping);
         if( looping) {
         processor.setMediaTime( new Time( 0));
              processor.start();
    public void setLooping( boolean flag) {
         looping= flag;
    public void update( ReceiveStreamEvent event) {
         String timestamp= getTimestamp();
         StringBuffer sb= new StringBuffer();
         if( event instanceof InactiveReceiveStreamEvent) {
         sb.append( timestamp + " Inactive Receive Stream");
         } else if( event instanceof ByeEvent) {
         sb.append( timestamp + " Bye");
         } else {
         System.out.println( "ReceiveStreamEvent: "+ event);
         tx.rtcpReport( sb.toString());     
    public void update( RemoteEvent event) {     
         String timestamp= getTimestamp();
         if( event instanceof ReceiverReportEvent) {
         ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
         StringBuffer sb= new StringBuffer();
         sb.append( timestamp + " RR");
         if( rr != null) {
              Participant participant= rr.getParticipant();
              if( participant != null) {
              sb.append( " from " + participant.getCNAME());
              sb.append( " ssrc=" + rr.getSSRC());
              } else {
              sb.append( " ssrc=" + rr.getSSRC());
              tx.rtcpReport( sb.toString());
         } else {
         System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
         String timestamp;
         Calendar calendar= Calendar.getInstance();
         int hour= calendar.get( Calendar.HOUR_OF_DAY);
         String hourStr= formatTime( hour);
         int minute= calendar.get( Calendar.MINUTE);
         String minuteStr= formatTime( minute);
         int second= calendar.get( Calendar.SECOND);
         String secondStr= formatTime( second);
         timestamp= hourStr + ":" + minuteStr + ":" + secondStr;     
         return timestamp;
    private String formatTime( int time) {     
         String timeStr;
         if( time < 10) {
         timeStr= "0" + time;
         } else {
         timeStr= "" + time;
         return timeStr;
    * Stops the transmission if already started
    public void stop() {
         synchronized (this) {
         if (processor != null) {
              processor.stop();
              processor.close();
              processor = null;
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTargets( "Session ended.");
              rtpMgrs[ i].dispose();
    public String createProcessor() {
         if (locator == null) {
         return "Locator is null";
         DataSource ds;
         DataSource clone;
         try {
         ds = javax.media.Manager.createDataSource(locator);
         } catch (Exception e) {
         return "Couldn't create DataSource";
         // Try to create a processor to handle the input media locator
         try {
         processor = javax.media.Manager.createProcessor(ds);
         processor.addControllerListener( this);     
         } catch (NoProcessorException npe) {
         return "Couldn't create processor";
         } catch (IOException ioe) {
         return "IOException creating processor";
         // Wait for it to configure
         boolean result = waitForState(processor, Processor.Configured);
         if (result == false)
         return "Couldn't configure processor";
         // Get the tracks from the processor
         TrackControl [] tracks = processor.getTrackControls();
         // Do we have atleast one track?
         if (tracks == null || tracks.length < 1)
         return "Couldn't find tracks in processor";
         // Set the output content descriptor to RAW_RTP
         // This will limit the supported formats reported from
         // Track.getSupportedFormats to only valid RTP formats.
         ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
         processor.setContentDescriptor(cd);
         Format supported[];
         Format chosen;
         boolean atLeastOneTrack = false;
         // Program the tracks.
         for (int i = 0; i < tracks.length; i++) {
         Format format = tracks[i].getFormat();
         if (tracks[i].isEnabled()) {
              supported = tracks[i].getSupportedFormats();
              // We've set the output content to the RAW_RTP.
              // So all the supported formats should work with RTP.
              // We'll just pick the first one.
              if (supported.length > 0) {
              if (supported[0] instanceof VideoFormat) {
                   // For video formats, we should double check the
                   // sizes since not all formats work in all sizes.
                   chosen = checkForVideoSizes(tracks[i].getFormat(),
                                       supported[0]);
              } else
                   chosen = supported[0];
              tracks[i].setFormat(chosen);
              System.err.println("Track " + i + " is set to transmit as:");
              System.err.println(" " + chosen);
              atLeastOneTrack = true;
              } else
              tracks[i].setEnabled(false);
         } else
              tracks[i].setEnabled(false);
         if (!atLeastOneTrack)
         return "Couldn't set any of the tracks to a valid RTP format";
         // Realize the processor. This will internally create a flow
         // graph and attempt to create an output datasource for JPEG/RTP
         // audio frames.
         result = waitForState(processor, Controller.Realized);
         if (result == false)
         return "Couldn't realize processor";
         // Set the JPEG quality to .5.
         setJPEGQuality(processor, 0.5f);
         // Get the output data source of the processor
         dataOutput = processor.getDataOutput();
         return null;
    static SessionAddress destAddr1, destAddr2;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
         int width, height;
         Dimension size = ((VideoFormat)original).getSize();
         Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
         Format h263Fmt = new Format(VideoFormat.H263_RTP);
         if (supported.matches(jpegFmt)) {
         // For JPEG, make sure width and height are divisible by 8.
         width = (size.width % 8 == 0 ? size.width :
                        (int)(size.width / 8) * 8);
         height = (size.height % 8 == 0 ? size.height :
                        (int)(size.height / 8) * 8);
         } else if (supported.matches(h263Fmt)) {
         // For H.263, we only support some specific sizes.
         if (size.width < 128) {
              width = 128;
              height = 96;
         } else if (size.width < 176) {
              width = 176;
              height = 144;
         } else {
              width = 352;
              height = 288;
         } else {
         // We don't know this particular format. We'll just
         // leave it alone then.
         return supported;
         return (new VideoFormat(null,
                        new Dimension(width, height),
                        Format.NOT_SPECIFIED,
                        null,
                        Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
         Control cs[] = p.getControls();
         QualityControl qc = null;
         VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
         // Loop through the controls to find the Quality control for
         // the JPEG encoder.
         for (int i = 0; i < cs.length; i++) {
         if (cs[i] instanceof QualityControl &&
              cs[i] instanceof Owned) {
              Object owner = ((Owned)cs[i]).getOwner();
              // Check to see if the owner is a Codec.
              // Then check for the output format.
              if (owner instanceof Codec) {
              Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
              for (int j = 0; j < fmts.length; j++) {
                   if (fmts[j].matches(jpegFmt)) {
                   qc = (QualityControl)cs[i];
                   qc.setQuality(val);
                   System.err.println("- Setting quality to " +
                             val + " on " + qc);
                   break;
              if (qc != null)
              break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
         return stateLock;
    void setFailed() {
         failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
         p.addControllerListener(new StateListener());
         failed = false;
         // Call the required method on the processor
         if (state == Processor.Configured) {
         p.configure();
         } else if (state == Processor.Realized) {
         p.realize();
         // Wait until we get an event that confirms the
         // success of the method, or a failure event.
         // See StateListener inner class
         while (p.getState() < state && !failed) {
         synchronized (getStateLock()) {
              try {
              getStateLock().wait();
              } catch (InterruptedException ie) {
              return false;
         if (failed)
         return false;
         else
         return true;
    * Inner Classes
    class StateListener implements ControllerListener {
         public void controllerUpdate(ControllerEvent ce) {
         // If there was an error during configure or
         // realiz

    I do this all the time, I put my MBP to a 60 inch Sharp. If you have the video working do the simple thing first. Check to make sure your sound is on your TV and Mac. Then if that doesn't work go to System Prefrences and under sound go to a tab called Output and see if your TV is listed and if it is change it to that setting
    Hope It Works

  • Can no longer connect for audio or video chat : Error -8 drama

    I've been video and audio chatting to Europe for quite some time with no problem. After installing a new modem (Motorola Surfboard SB5101) I'm now getting the dreaded Error -8 and can not connect for either audio or video. Text works fine.
    I've poked around the forums and see some similarities with problems other users are having, but I have to assume my issues have something to do with the new modem, since I've been using audio/video chat for so long without a hassle.
    I went through all the usual steps as mentioned in other threads: Firewall is off, Quicktime streaming changed to T1, tried changing the port to 443... Nothing works.
    I'm using OSX 10.4.10
    iChat AV 3.1.8(v445)
    Modem goes to an Airport Express which is wired to my desktop computer.
    I get the same results from my MacBook Pro as I do with my desktop so it's not a computer issue.
    Upon inviting or being invited the wheels spin a moment and then I get a message saying I left the chat.
    And the report is this:
    Date/Time: 2007-08-09 14:09:15.107 -0400
    OS Version: 10.4.10 (Build 8R218)
    Report Version: 4
    iChat Connection Log:
    AVChat started with ID 886884518.
    [email protected]: State change from AVChatNoState to AVChatStateWaiting.
    0x457a70: State change from AVChatNoState to AVChatStateInvited.
    0x457a70: State change from AVChatStateInvited to AVChatStateConnecting.
    [email protected]: State change from AVChatStateWaiting to AVChatStateConnecting.
    [email protected]: State change from AVChatStateConnecting to AVChatStateEnded.
    Chat ended with error -8
    0x457a70: State change from AVChatStateConnecting to AVChatStateEnded.
    Chat ended with error -8
    Video Conference Error Report:
    4.005750 @:0 type=4 (00000000/2)
    [VCSIP_INVITEERROR]
    [19]
    4.005627 @SIP/SIP.c:2447 type=4 (900A0015/2)
    [SIPConnectIPPort failed]
    2.005101 @SIP/SIP.c:2447 type=4 (900A0015/2)
    [SIPConnectIPPort failed]
    Video Conference Support Report:
    3.506302 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP 10.0.1.2;branch=z9hG4bK745ad9d276fb8ac3
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=524660867
    Call-ID: 9a84c4ea-46a3-11dc-8590-fb4ac9af13c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 539
    v=0
    o=briansack 0 0 IN IP4 10.0.1.2
    [email protected]
    c=IN IP4 10.0.1.2
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 16386 RTP/AVP 12 3 0
    a=rtcp:16387
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 16384 RTP/AVP 126 34
    a=rtcp:16385
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 16387 VIDEO 16385
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    2.506041 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP 10.0.1.2;branch=z9hG4bK745ad9d276fb8ac3
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=524660867
    Call-ID: 9a84c4ea-46a3-11dc-8590-fb4ac9af13c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 539
    v=0
    o=briansack 0 0 IN IP4 10.0.1.2
    [email protected]
    c=IN IP4 10.0.1.2
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 16386 RTP/AVP 12 3 0
    a=rtcp:16387
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 16384 RTP/AVP 126 34
    a=rtcp:16385
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 16387 VIDEO 16385
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    2.005780 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP 10.0.1.2;branch=z9hG4bK745ad9d276fb8ac3
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=524660867
    Call-ID: 9a84c4ea-46a3-11dc-8590-fb4ac9af13c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 539
    v=0
    o=briansack 0 0 IN IP4 10.0.1.2
    [email protected]
    c=IN IP4 10.0.1.2
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 16386 RTP/AVP 12 3 0
    a=rtcp:16387
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 16384 RTP/AVP 126 34
    a=rtcp:16385
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 16387 VIDEO 16385
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    1.505465 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP m.0:40941;branch=z9hG4bK3298135216491829
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=1327194736
    Call-ID: 9953701c-46a3-11dc-8590-a9eff06413c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]:40941>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 545
    v=0
    o=briansack 0 0 IN IP4 m.0
    [email protected]
    c=IN IP4 m.0
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 40947 RTP/AVP 12 3 0
    a=rtcp:40949
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 40943 RTP/AVP 126 34
    a=rtcp:40945
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 40949 VIDEO 40945
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    0.505163 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP m.0:40941;branch=z9hG4bK3298135216491829
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=1327194736
    Call-ID: 9953701c-46a3-11dc-8590-a9eff06413c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]:40941>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 545
    v=0
    o=briansack 0 0 IN IP4 m.0
    [email protected]
    c=IN IP4 m.0
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 40947 RTP/AVP 12 3 0
    a=rtcp:40949
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 40943 RTP/AVP 126 34
    a=rtcp:40945
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 40949 VIDEO 40945
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    0.004892 @SIP/Transport.c:1218 type=1 (00000000/0)
    [INVITE sip:[email protected] SIP/2.0
    Via: SIP/2.0/UDP m.0:40941;branch=z9hG4bK3298135216491829
    Max-Forwards: 70
    To: "u0" <sip:[email protected]>
    From: "[email protected]" <sip:[email protected]>;tag=1327194736
    Call-ID: 9953701c-46a3-11dc-8590-a9eff06413c4@lip
    CSeq: 1 INVITE
    Contact: <sip:[email protected]:40941>;isfocus
    User-Agent: Viceroy 1.2
    Content-Type: application/sdp
    Content-Length: 545
    v=0
    o=briansack 0 0 IN IP4 m.0
    [email protected]
    c=IN IP4 m.0
    b=AS:2147483647
    t=0 0
    a=hwi:34:2:1249
    a=bandwidthDetection:YES
    a=iChatEncryption:NO
    m=audio 40947 RTP/AVP 12 3 0
    a=rtcp:40949
    a=rtpmap:3 GSM/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpID:138569664
    m=video 40943 RTP/AVP 126 34
    a=rtcp:40945
    a=rtpmap:126 X-H264/90000
    a=rtpmap:34 H263/90000
    a=fmtp:34 imagesize 1 rules 30:352:288
    a=framerate:15
    a=RTCP:AUDIO 40949 VIDEO 40945
    a=pogo
    a=fmtp:126 imagesize 0 rules 15:160:120:160:120
    a=rtpID:-1522475925
    0.000000 @:0 type=2 (00000000/22)
    [VCVIDEO_OUTGOINGATTEMPT]
    [4]
    Video Conference User Report:
    Binary Images Description for "iChat":
    0x1000 - 0x172fff com.apple.iChat 3.1.8 (445) /Applications/iChat.app/Contents/MacOS/iChat
    0x5e05000 - 0x5e0ffff com.apple.IOFWDVComponents 1.7.9 /System/Library/Components/IOFWDVComponents.component/Contents/MacOS/IOFWDVComp onents
    0x5e17000 - 0x5e49fff com.apple.QuickTimeIIDCDigitizer 7.2 /System/Library/QuickTime/QuickTimeIIDCDigitizer.component/Contents/MacOS/Quick TimeIIDCDigitizer
    0x5e7a000 - 0x5e7bfff com.apple.aoa.halplugin 2.5.6 (2.5.6b5) /System/Library/Extensions/IOAudioFamily.kext/Contents/PlugIns/AOAHALPlugin.bun dle/Contents/MacOS/AOAHALPlugin
    0x5ed8000 - 0x5f2dfff com.DivXInc.DivXDecoder 6.0.0 /Library/QuickTime/DivX 6 Decoder.component/Contents/MacOS/DivX 6 Decoder
    0x5f3b000 - 0x5f80fff com.apple.QuickTimeUSBVDCDigitizer 1.7.5 /System/Library/QuickTime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/Qui ckTimeUSBVDCDigitizer
    0x5fa2000 - 0x5fccfff com.apple.iSightAudio 7.2 /Library/Audio/Plug-Ins/HAL/iSightAudio.plugin/Contents/MacOS/iSightAudio
    0x607b000 - 0x618afff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
    0x61b9000 - 0x6234fff com.apple.GeForce3GLDriver 1.4.18 (4.1.8) /System/Library/Extensions/GeForce3GLDriver.bundle/Contents/MacOS/GeForce3GLDri ver
    0x623c000 - 0x6255fff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLDriver.bundl e/GLDriver
    0x625b000 - 0x6267fff com.apple.audio.AudioIPCPlugIn 1.0.2 /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugI n.bundle/Contents/MacOS/AudioIPCPlugIn
    0x629b000 - 0x62b6fff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloa t.bundle/GLRendererFloat
    0x6483000 - 0x64bcfff com.apple.audio.SoundManager.Components 3.9.1 /System/Library/Components/SoundManagerComponents.component/Contents/MacOS/Soun dManagerComponents
    0x6714000 - 0x672afff com.apple.FCP Uncompressed 422.component 1.4 /Library/QuickTime/FCP Uncompressed 422.component/Contents/MacOS/FCP Uncompressed 422
    0x672f000 - 0x6733fff com.apple.iokit.IOQTComponents 1.4 /System/Library/Components/IOQTComponents.component/Contents/MacOS/IOQTComponen ts
    0x41410000 - 0x414affff com.apple.QuickTimeImporters.component 7.2 /System/Library/QuickTime/QuickTimeImporters.component/Contents/MacOS/QuickTime Importers
    0x419b0000 - 0x419effff com.apple.QuickTimeFireWireDV.component 7.2 /System/Library/QuickTime/QuickTimeFireWireDV.component/Contents/MacOS/QuickTim eFireWireDV
    0x8fe00000 - 0x8fe52fff dyld /usr/lib/dyld
    0x90000000 - 0x901bcfff libSystem.B.dylib /usr/lib/libSystem.B.dylib
    0x90214000 - 0x90219fff libmathCommon.A.dylib /usr/lib/system/libmathCommon.A.dylib
    0x9021b000 - 0x90268fff com.apple.CoreText 1.0.3 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ CoreText.framework/Versions/A/CoreText
    0x90293000 - 0x90344fff com.apple.ApplicationServices.ATS 1.9.6 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ATS.framework/Versions/A/ATS
    0x90373000 - 0x9072efff com.apple.CoreGraphics 1.258.75 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ CoreGraphics.framework/Versions/A/CoreGraphics
    0x907bb000 - 0x90894fff com.apple.CoreFoundation 6.4.7 (368.28) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x908dd000 - 0x908ddfff com.apple.CoreServices 10.4 (???) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x908df000 - 0x909e1fff libicucore.A.dylib /usr/lib/libicucore.A.dylib
    0x90a3b000 - 0x90abffff libobjc.A.dylib /usr/lib/libobjc.A.dylib
    0x90ae9000 - 0x90b59fff com.apple.framework.IOKit 1.4 (???) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x90b6f000 - 0x90b81fff libauto.dylib /usr/lib/libauto.dylib
    0x90b88000 - 0x90e5ffff com.apple.CoreServices.CarbonCore 681.15 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonC ore.framework/Versions/A/CarbonCore
    0x90ec5000 - 0x90f45fff com.apple.CoreServices.OSServices 4.1 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServi ces.framework/Versions/A/OSServices
    0x90f8f000 - 0x90fd1fff com.apple.CFNetwork 129.21 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwo rk.framework/Versions/A/CFNetwork
    0x90fe6000 - 0x90ffefff com.apple.WebServices 1.1.2 (1.1.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/WebServ icesCore.framework/Versions/A/WebServicesCore
    0x9100e000 - 0x9108ffff com.apple.SearchKit 1.0.5 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchK it.framework/Versions/A/SearchKit
    0x910d5000 - 0x910fefff com.apple.Metadata 10.4.4 (121.36) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadat a.framework/Versions/A/Metadata
    0x9110f000 - 0x9111dfff libz.1.dylib /usr/lib/libz.1.dylib
    0x91120000 - 0x912dbfff com.apple.security 4.6 (29770) /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x913da000 - 0x913e3fff com.apple.DiskArbitration 2.1 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x913ea000 - 0x913f2fff libbsm.dylib /usr/lib/libbsm.dylib
    0x913f6000 - 0x9141efff com.apple.SystemConfiguration 1.8.3 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfi guration
    0x91431000 - 0x9143cfff libgcc_s.1.dylib /usr/lib/libgcc_s.1.dylib
    0x91441000 - 0x914bcfff com.apple.audio.CoreAudio 3.0.4 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x914f9000 - 0x914f9fff com.apple.ApplicationServices 10.4 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Application Services
    0x914fb000 - 0x91533fff com.apple.AE 1.5 (297) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ AE.framework/Versions/A/AE
    0x9154e000 - 0x91620fff com.apple.ColorSync 4.4.9 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ColorSync.framework/Versions/A/ColorSync
    0x91673000 - 0x91704fff com.apple.print.framework.PrintCore 4.6 (177.13) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ PrintCore.framework/Versions/A/PrintCore
    0x9174b000 - 0x91802fff com.apple.QD 3.10.24 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ QD.framework/Versions/A/QD
    0x9183f000 - 0x9189dfff com.apple.HIServices 1.5.3 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ HIServices.framework/Versions/A/HIServices
    0x918cc000 - 0x918edfff com.apple.LangAnalysis 1.6.1 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ LangAnalysis.framework/Versions/A/LangAnalysis
    0x91901000 - 0x91926fff com.apple.FindByContent 1.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ FindByContent.framework/Versions/A/FindByContent
    0x91939000 - 0x9197bfff com.apple.LaunchServices 182 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ LaunchServices.framework/Versions/A/LaunchServices
    0x91997000 - 0x919abfff com.apple.speech.synthesis.framework 3.3 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x919b9000 - 0x919fffff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/ImageIO
    0x91a16000 - 0x91addfff libcrypto.0.9.7.dylib /usr/lib/libcrypto.0.9.7.dylib
    0x91b2b000 - 0x91b40fff libcups.2.dylib /usr/lib/libcups.2.dylib
    0x91b45000 - 0x91b63fff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x91b69000 - 0x91c20fff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x91c6f000 - 0x91c73fff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x91c75000 - 0x91cddfff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libRaw.dylib
    0x91ce2000 - 0x91d1ffff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x91d26000 - 0x91d3ffff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x91d44000 - 0x91d47fff com.apple.ImageIO.framework 1.5.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x91d49000 - 0x91e27fff libxml2.2.dylib /usr/lib/libxml2.2.dylib
    0x91e47000 - 0x91e47fff com.apple.Accelerate 1.2.2 (Accelerate 1.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x91e49000 - 0x91f2efff com.apple.vImage 2.4 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.fr amework/Versions/A/vImage
    0x91f36000 - 0x91f55fff com.apple.Accelerate.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.fr amework/Versions/A/vecLib
    0x91fc1000 - 0x9202ffff com.apple.Accelerate.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.fr amework/Versions/A/libvMisc.dylib
    0x9203a000 - 0x920cffff com.apple.Accelerate.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.fr amework/Versions/A/libvDSP.dylib
    0x920e9000 - 0x92671fff com.apple.Accelerate.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.fr amework/Versions/A/libBLAS.dylib
    0x926a4000 - 0x929cffff com.apple.Accelerate.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.fr amework/Versions/A/libLAPACK.dylib
    0x929ff000 - 0x92aedfff libiconv.2.dylib /usr/lib/libiconv.2.dylib
    0x92af0000 - 0x92b78fff com.apple.DesktopServices 1.3.6 /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/Desk topServicesPriv
    0x92bb9000 - 0x92de4fff com.apple.Foundation 6.4.8 (567.29) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x92f11000 - 0x92f2ffff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x92f3a000 - 0x92f94fff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x92fb2000 - 0x92fb2fff com.apple.Carbon 10.4 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x92fb4000 - 0x92fc8fff com.apple.ImageCapture 3.0 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture. framework/Versions/A/ImageCapture
    0x92fe0000 - 0x92ff0fff com.apple.speech.recognition.framework 3.4 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecogni tion.framework/Versions/A/SpeechRecognition
    0x92ffc000 - 0x93011fff com.apple.securityhi 2.0 (203) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.fr amework/Versions/A/SecurityHI
    0x93023000 - 0x930aafff com.apple.ink.framework 101.2 (69) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework /Versions/A/Ink
    0x930be000 - 0x930c9fff com.apple.help 1.0.3 (32) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framewor k/Versions/A/Help
    0x930d3000 - 0x93100fff com.apple.openscripting 1.2.5 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting .framework/Versions/A/OpenScripting
    0x9311a000 - 0x93129fff com.apple.print.framework.Print 5.2 (192.4) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framewo rk/Versions/A/Print
    0x93135000 - 0x9319bfff com.apple.htmlrendering 1.1.2 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering .framework/Versions/A/HTMLRendering
    0x931cc000 - 0x9321bfff com.apple.NavigationServices 3.4.4 (3.4.3) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationSer vices.framework/Versions/A/NavigationServices
    0x93249000 - 0x93266fff com.apple.audio.SoundManager 3.9 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.f ramework/Versions/A/CarbonSound
    0x93278000 - 0x93285fff com.apple.CommonPanels 1.2.2 (73) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels. framework/Versions/A/CommonPanels
    0x9328e000 - 0x9359cfff com.apple.HIToolbox 1.4.9 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.fra mework/Versions/A/HIToolbox
    0x936ec000 - 0x936f8fff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x936fd000 - 0x9371dfff com.apple.DirectoryService.Framework 3.1 /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryServi ce
    0x93771000 - 0x93771fff com.apple.Cocoa 6.4 (???) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x93773000 - 0x93da6fff com.apple.AppKit 6.4.7 (824.41) /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x94133000 - 0x941a5fff com.apple.CoreData 91 (92.1) /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x941de000 - 0x942a2fff com.apple.audio.toolbox.AudioToolbox 1.4.5 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x942f4000 - 0x942f4fff com.apple.audio.units.AudioUnit 1.4 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x942f6000 - 0x944b6fff com.apple.QuartzCore 1.4.12 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x94500000 - 0x9453dfff libsqlite3.0.dylib /usr/lib/libsqlite3.0.dylib
    0x94545000 - 0x94595fff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dyl ib
    0x9459e000 - 0x945b8fff com.apple.CoreVideo 1.4.1 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x945c8000 - 0x945e8fff libmx.A.dylib /usr/lib/libmx.A.dylib
    0x94625000 - 0x9466afff com.apple.bom 8.5 (86.3) /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
    0x94676000 - 0x946aefff com.apple.vmutils 4.0.0 (85) /System/Library/PrivateFrameworks/vmutils.framework/Versions/A/vmutils
    0x946f1000 - 0x9470dfff com.apple.securityfoundation 2.2 (27710) /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoun dation
    0x94721000 - 0x94765fff com.apple.securityinterface 2.2 (27692) /System/Library/Frameworks/SecurityInterface.framework/Versions/A/SecurityInter face
    0x94789000 - 0x94798fff com.apple.CoreGraphics 1.258.75 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ CoreGraphics.framework/Versions/A/Resources/libCGATS.A.dylib
    0x947a0000 - 0x947adfff com.apple.CoreGraphics 1.258.75 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib
    0x947f3000 - 0x9480cfff com.apple.CoreGraphics 1.258.75 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
    0x94813000 - 0x94b32fff com.apple.QuickTime 7.2.0 /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime
    0x94c16000 - 0x94c87fff libstdc++.6.dylib /usr/lib/libstdc++.6.dylib
    0x94dfc000 - 0x94f2cfff com.apple.AddressBook.framework 4.0.5 (487) /System/Library/Frameworks/AddressBook.framework/Versions/A/AddressBook
    0x94fbe000 - 0x94fcdfff com.apple.DSObjCWrappers.Framework 1.1 /System/Library/PrivateFrameworks/DSObjCWrappers.framework/Versions/A/DSObjCWra ppers
    0x94fd5000 - 0x95002fff com.apple.LDAPFramework 1.4.1 (69.0.1) /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
    0x95009000 - 0x95019fff libsasl2.2.dylib /usr/lib/libsasl2.2.dylib
    0x9501d000 - 0x9504cfff libssl.0.9.7.dylib /usr/lib/libssl.0.9.7.dylib
    0x9505c000 - 0x95079fff libresolv.9.dylib /usr/lib/libresolv.9.dylib
    0x953bf000 - 0x9542efff com.apple.Bluetooth 1.7.14 (1.7.14f14) /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x95792000 - 0x95820fff com.apple.WebKit 419.3 /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit
    0x9587c000 - 0x95911fff com.apple.JavaScriptCore 418.6.1 /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/JavaScriptCor e.framework/Versions/A/JavaScriptCore
    0x9594e000 - 0x95c5bfff com.apple.WebCore 418.23 /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.frame work/Versions/A/WebCore
    0x95de4000 - 0x95e0dfff libxslt.1.dylib /usr/lib/libxslt.1.dylib
    0x97197000 - 0x971b6fff com.apple.vecLib 3.2.2 (vecLib 3.2.2) /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
    0x97827000 - 0x9784cfff com.apple.speech.LatentSemanticMappingFramework 2.2 /System/Library/PrivateFrameworks/LatentSemanticMapping.framework/Versions/A/La tentSemanticMapping
    0x978cd000 - 0x9798efff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgramma bility.dylib
    0x979b9000 - 0x979bafff com.apple.opengl 1.4.7 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLSystem.dy lib
    0x979bc000 - 0x979c9fff com.apple.agl 2.5.6 (AGL-2.5.6) /System/Library/Frameworks/AGL.framework/Versions/A/AGL
    0x97b28000 - 0x97b29fff com.apple.MonitorPanelFramework 1.1.1 /System/Library/PrivateFrameworks/MonitorPanel.framework/Versions/A/MonitorPane l
    0x982c5000 - 0x983ecfff com.apple.viceroy.framework 273.7.12 /System/Library/PrivateFrameworks/VideoConference.framework/Versions/A/VideoCon ference
    0x98ba5000 - 0x98ba8fff com.apple.DisplayServicesFW 1.8.1 /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayS ervices
    0x98df3000 - 0x999b9fff com.apple.QuickTimeComponents.component 7.2 /System/Library/QuickTime/QuickTimeComponents.component/Contents/MacOS/QuickTim eComponents
    0x9a49c000 - 0x9a4a7fff com.apple.IMFramework 3.1.4 (429) /System/Library/Frameworks/InstantMessage.framework/Versions/A/InstantMessage
    0x9a4b2000 - 0x9a60bfff com.apple.MessageFramework 2.1 (752.2) /System/Library/Frameworks/Message.framework/Versions/B/Message
    Any brilliance on the matter would be greatly appreciated.
    Thanks!
    B.
    Message was edited by: Brian Sack

    Hi Brian,
    I am not sure the Surfboard routes either.
    It is not in this list http://portforward.com/routers.htm which is where we start for most people.
    A little of what we are talking about.
    DHCP is a way that so called server in routing devices hands out IP addresses.
    You Mac will be getting one from the Airport.
    You can look it up on your Mac in System Preferences > Network.
    Pick the connection method from the second drop down and then the TCP/IP tab in the next section.
    The IP is listed, Whether is asking for a DHCP given IP, A Subnet Mask, DSN servers (if your lucky) and the "router" IP
    With an Airport Router you are likely to get an IP that starts 10.0.1.x and the "Router" is at 10.0.1.1
    If connected direct to the modem the the "router" is the modem. In the case of some cable connections it will pass through the Public IP given to you by the ISP
    On the whole Cable modems do not route but it is not exclusive.
    IF it does not route and you connect directly to it then the IP will show may be you Public IP seen here http://myip.dk/
    Next bit.
    Now all ports below the number 1024 are normally open in all routers and modems that route.
    Web browsing and Mail apps tend to use ports below this figure which is why any routing device will work and get you on the Net no matter how they are set up.
    Applications like IM ones like iChat and On-line games use ports above this 1024 threshold and as a consequence need ports to be allowed or opened.
    Next Bit.
    Certain apps like iChat like the LAN and the ports open to be very Linear. In fact iChat is fussy about how many times it has to go through devices that all do NAT Based methods of opening the ports.
    These methods are Port Forwarding, Port Triggering and DMZ (which is an extreme form of Port Forwarding).
    Because of the way routers allow the routing and Addressing info through even from another routing device then the computer can have two IP address (one from the modem and one from the Router).
    See the Second pic This means the computer sits in two subnets on your LAN.
    The normal way of telling this in an iChat log is to look for the change in ports that showed up in your Log.
    SO far the above infers what you can do using System Preferences > Network to find out if both device are routing.
    I am not sure that the surfboard is.
    I think the idea that the ISP is doing something to the packets is the problem.
    Read the whole of this page http://www.ralphjohnsuk.dsl.pipex.com/page4.html if you want to know more. It starts with the Mac Firewall but goes on to the stuff listed above.
    7:18 PM Friday; August 10, 2007

  • Can Compressor make MPEG2 files that will work on a Princeton Video server?

    I am responsible for selection of equipment and software for the local Public Access studio. I am trying to be sure if Final Cut Studio will output the format we need.
    We need to output video files that are compatible with our Princeton Server Group B1400 Digital Video Server. We have found it is very difficult to be certain if a particular program will generate what we need. Below are the specs for our server.
    Basically it is a a rather specific form of MPEG2. I see on the Apple web site that Compressor will do MPEG2, but that is qualified with "Quicktime", and is mostly described as being for DVD production. It seems that those are not necessarily compatible with our server. It wants a plain MPEG2 file in the format given in the specs. The server is a Linux system and its software does not know about special formats like say Quicktime or DVD might wrap around the basic data. It seems to want just plain files of MPEG2 video (and audio of course) data.
    One of my sources of my concern is that in spite of what Apple says about Compressor doing MPEG2, the makers of the server say FCP does not create output for it.
    I need to be assured about this before we invest in software and possibly new hardware.
    These are the specs for the encoding the server needs:
    Princeton Server Group
    B1400 Digital Video Server
    Encoding Requirements
    In order to ensure optimum video playout quality on the B1400 Digital Video Broadcast Server, MPEG video and audio content must be encoded as follows.
    • Video files for play-out must be encoded in multiplexed MPEG-2 program stream (PS) or MPEG-1 system stream format. Video can be encoded at rates up to 15 Mb/s.
    • Use 4:2:0, not 4:2:2 encoding.
    • Audio must be encoded as MPEG1 Layer II, AC-3 Stereo, or Linear PCM.
    • The video and audio presentation time stamp (PTS) values in a file must be continuous and increasing. The time between the first and last time stamps in a file should reflect the actual duration of the file.
    Encoding Recommendations
    • Resolution: 720 X 480 or 704 X 480 in NTSC
    • Closed GOP (Group of Pictures) with an “I-frame” every 15 frames
    • Audio bit rate of 256 kbps
    • Sampling rate of 48 kHz
    • Program stream files should have one end code (00 00 01 b9) at the very end of the file.
    • Recommended bit rates for various types of video content are as follows:
    o 4 Mbps for good quality video with low motion
    o 6 Mbps for good quality with average motion
    o 8 Mbps for good quality with high motion and
    o 10 Mbps for high quality with high motion content.
    • MPEG2 files are constructed from multiplexed audio and video streams. The length of video and audio stream segments within the MPEG file should be identical.
    G4   Mac OS X (10.4.7)  

    Hey Terry
    in the corporate world wee have to contend with clients who are all windows based and prevented from installing anything on their systems.
    I use Flip4Mac, Studio Pro HD, with the following mix of settings;
    Open clip in QT, I do also use compressor but for some reason I like using QT for exporting to WMV.
    File/Export
    Export:movie to windows media
    Use: One pass VBR, Presentation (high), 16:9
    Options>
    Advanced... input type: interlace Lower field first(DV), output type: progressive
    Coding method: Two pass VBR
    Give this a shot and then tweak to suit your needs, oh and you can save your settings as a preset for QuickTime.
    Within Compressor there is no export to WMV, so you have to start with another setting and create your own saving it for future use.
    Tony

  • Audio Follows Video greyed out

    I am working with a sequence that uses clips that were shot DVC Pro 720p 30, NTSC. Suddenly, when looking at interview content in the canvas and viewer, the sync for content from a particular reel is slightly off. I noticed under the view menu / audio playback, audio follows video is greyed out. The only options are default or built in output. At first I thought that was the proglem (can anyone tell me why it is greyed out, and if I need to select this somehow?)
    Interestingly, however, other clips in the project, shot on the same day, do not appear to have the same sync problem. What would cause the sync problem on this one reel? I did not notice the sync problem when previously working with the material.
    Thank you so much in advance.

    I seem to remember this happening before with captured material. Can someone answer the question of whether I should switch the sequence settings to the settings that I used to capture the clip originally?
    Or could the clip have been corrupted, and if yes, what to do? Or is the simplest solution to re-sync by eye? It's sort of like when the data flow isn't fast enough and sync is lost.
    Thanks to all for your comments.

  • Audio and video not synchronized in recording made with Lync 2013

    There appears to be no forum for the Lync 2013 client yet, so I am posting this in the Lync 2013 server forum.
    Environment: Lync 2013 Server and Lync 2013 32-bit client. Only one Lync pool. Conference call was scheduled using "Lync Meeting" in Outlook about a week before the call. Call recorded on a laptop that was plugged into our LAN with an Ethernet
    cable.
    Problem: User scheduled a conference call with screen sharing (PowerPoint) and recorded the call. The audio and video are not synchronized in the recording. There is several minutes' delay, with the audio lagging behind the PowerPoint. The last slide
    on the call was presented, the call ended, and the presenter ended the recording (I was present for all this and can confirm no user error in these steps); however, in the recording, the slides change before the speaker talks about it, and the last
    couple of minutes are cut off. 
    Any ideas on why this happened? Web research has failed me. Thank you.

    You may need to lower the recording quality as your PC might not be able to keep up the pace.
    Go to Options in Lync client -> Recording -> Select 480p
    Then test again
    - Belgian Unified Communications Community : http://www.pro-lync.be - MCM/MVP/MCT

  • [SOLVED] Air Video Server Error Message

    Does anyone here have any experience with Air Video Server for Linux? I sure hope so...
    I'm trying to install Air Video Server on my Arch box so I can watch movies on my iPad without using my mac or converting the video files. I got everything installed, and the server software was running. When I tried to start a video on my iPad, I got "unexpected error." So, I killed the process and started the server manually, and then tried to play a video. This is the output that I got. Maybe you can help?
    /usr/share/air-video-server/avconv -ss 60.0 -i /home/media/completed/Contraband/Contraband.mp4 -vframes 1 -f mjpeg -
    DEBUG: Thumbnail: >>
    346E68693468737A697E347A7269366D727F7E7436687E696D7E69347A6D7874756D3B3668683B2D2B352B3B36723B347374767E34767E7F727A3478
    74766B777E6F7E7F345874756F697A797A757F345874756F697A797A757F35766B2F3B366D7D697A767E683B2A3B367D3B76716B7E7C3B36
    <<
    ===================================================================================================
    DEBUG: Thumbnail: avconv version 0.8, Copyright (c) 2000-2012 the Libav developers
    DEBUG: Thumbnail: built on Dec 2 2012 10:17:40 with gcc 4.7.2
    DEBUG: Thumbnail: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/media/completed/Contraband/Contraband.mp4':
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: major_brand : isom
    DEBUG: Thumbnail: minor_version : 1
    DEBUG: Thumbnail: compatible_brands: isom
    DEBUG: Thumbnail: creation_time : 2012-04-15 06:49:31
    DEBUG: Thumbnail: Duration: 01:49:38.56, start: 0.000000, bitrate: 1670 kb/s
    DEBUG: Thumbnail: Chapter #0.0: start 0.000000, end 506.256000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:00:00.000
    DEBUG: Thumbnail: Chapter #0.1: start 506.256000, end 886.260000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:08:26.256
    DEBUG: Thumbnail: Chapter #0.2: start 886.260000, end 1152.860000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:14:46.260
    DEBUG: Thumbnail: Chapter #0.3: start 1152.860000, end 1492.366000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:19:12.860
    DEBUG: Thumbnail: Chapter #0.4: start 1492.366000, end 1752.626000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:24:52.366
    DEBUG: Thumbnail: Chapter #0.5: start 1752.626000, end 2079.744000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:29:12.626
    DEBUG: Thumbnail: Chapter #0.6: start 2079.744000, end 2336.376000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:34:39.744
    DEBUG: Thumbnail: Chapter #0.7: start 2336.376000, end 2736.943000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:38:56.376
    DEBUG: Thumbnail: Chapter #0.8: start 2736.943000, end 3137.760000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:45:36.943
    DEBUG: Thumbnail: Chapter #0.9: start 3137.760000, end 3596.092000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:52:17.760
    DEBUG: Thumbnail: Chapter #0.10: start 3596.092000, end 3931.344000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 00:59:56.092
    DEBUG: Thumbnail: Chapter #0.11: start 3931.344000, end 4203.991000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:05:31.344
    DEBUG: Thumbnail: Chapter #0.12: start 4203.991000, end 4575.112000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:10:03.991
    DEBUG: Thumbnail: Chapter #0.13: start 4575.112000, end 4877.372000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:16:15.112
    DEBUG: Thumbnail: Chapter #0.14: start 4877.372000, end 5134.046000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:21:17.372
    DEBUG: Thumbnail: Chapter #0.15: start 5134.046000, end 5415.910000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:25:34.046
    DEBUG: Thumbnail: Chapter #0.16: start 5415.910000, end 5726.888000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:30:15.910
    DEBUG: Thumbnail: Chapter #0.17: start 5726.888000, end 5941.144000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:35:26.888
    DEBUG: Thumbnail: Chapter #0.18: start 5941.144000, end 6272.099000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:39:01.144
    DEBUG: Thumbnail: Chapter #0.19: start 6272.099000, end 6578.560000
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: title : 01:44:32.099
    DEBUG: Thumbnail: Stream #0.0(und): Video: h264 (High), yuv420p, 1920x816 [PAR 40001:40000 DAR 2353:1000], 1597 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    DEBUG: Thumbnail: Target Framerate: 23.975
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: creation_time : 2012-04-15 00:12:59
    DEBUG: Thumbnail: Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 70 kb/s
    DEBUG: Thumbnail: Metadata:
    DEBUG: Thumbnail: creation_time : 2012-04-15 06:56:52
    DEBUG: Thumbnail: Output #0, mjpeg, to 'pipe:':
    DEBUG: Thumbnail: Metadata:java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
    at com.inmethod.air.connect.service.ServiceRegistry$ServiceWrapper.invoke(ServiceRegistry.java:231)
    at com.inmethod.air.connect.service.ServiceRegistry.invokeMethod(ServiceRegistry.java:48)
    at com.inmethod.air.connect.service.ServiceRegistry.invokeMethod(ServiceRegistry.java:37)
    at com.inmethod.air.connect.filter.ServiceFilter.doFilter(ServiceFilter.java:82)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
    at javax.swing.ImageIcon.<init>(ImageIcon.java:274)
    at com.inmethod.common.util.ImageUtil$CreateThumbnail.<init>(ImageUtil.java:55)
    at com.inmethod.common.util.ImageUtil.resizeImageAsJPG(ImageUtil.java:24)
    at com.inmethod.air.video.common.thumbnail.ThumbnailParser.resize(ThumbnailParser.java:84)
    at com.inmethod.air.video.common.thumbnail.ThumbnailParser.parseThumbnail(ThumbnailParser.java:73)
    at com.inmethod.air.video.common.thumbnail.ThumbnailParser.parseThumbnailInternal(ThumbnailParser.java:104)
    at com.inmethod.air.video.common.thumbnail.ThumbnailParser.parseThumbnail(ThumbnailParser.java:139)
    at com.inmethod.air.video.v0240.info.MediaInfoParser.parseMediaInfo(MediaInfoParser.java:80)
    at com.inmethod.air.video.v0240.model.fs.FileSystemVideoItem.loadDetail(FileSystemVideoItem.java:59)
    at com.inmethod.air.video.v0240.model.BrowseService.getNestedItem(BrowseService.java:354)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.inmethod.air.connect.service.ServiceRegistry$ServiceWrapper.invoke(ServiceRegistry.java:221)
    ... 15 more
    ^C[root@arch ~]#
    It seems to me that there's a problem with creating a thumbnail. Any ideas?
    Last edited by discipulus (2012-12-03 04:07:27)

    Alright, I have figured it out after much working! After doing some searching and realizing that no one had encountered this problem with Arch Linux before, I decided to search specifically by the error that Java was giving, instead of trying to relate it to Air Video Server. I had to edit the script that launched the daemon (/usr/bin/air-video-server) to add the option -Djava.awt.headless=true and then I needed to install an additional library (that wasn't on the dependencies list, ironically enough) fontconfig. I guess fontconfig is standard with X11, which is why it wasn't listed as a dependency. It's also why I needed to add the headless option to the launch script, because I don't use a GUI, just a CLI. This is solved, and I'll leave it up for others that may encounter similar problems.

  • How to synchronize audio and video rtp-streams

    Hi everyone!
    I've tried to make one of the processors, processor1, control the other processor, processor2, with processor1.addController(processor2) but I get a
    javax.media.IncompatibleTimeBaseException. I need to synchronize audio and video rtp-streams because they are sometimes completely out of sync.
    In JMF API Guide I've read:
    "2. Determine which Player object's time base is going to be used to drive
    the other Player objects and set the time base for the synchronized
    Player objects. Not all Player objects can assume a new time base.
    For example, if one of the Player objects you want to synchronize has
    a *push-data-source*, that Player object's time base must be used to
    drive the other Player objects."
    I'm using a custom AVReceive3 to receive rtp-streams and then I create processors for the incoming stream's datasource's, and they are ALL PushBufferDataSource's.
    Does this mean I can't synchronize these. If so is there any way I can change them into Pull...DataSources ?
    How are you supposed to sync audio and video if not with as above ?

    camelstrike wrote:
    Hi everyone!
    I've tried to make one of the processors, processor1, control the other processor, processor2, with processor1.addController(processor2) but I get a
    javax.media.IncompatibleTimeBaseException. I need to synchronize audio and video rtp-streams because they are sometimes completely out of sync.
    In JMF API Guide I've read:
    "2. Determine which Player object's time base is going to be used to drive
    the other Player objects and set the time base for the synchronized
    Player objects. Not all Player objects can assume a new time base.
    For example, if one of the Player objects you want to synchronize has
    a *push-data-source*, that Player object's time base must be used to
    drive the other Player objects."
    I'm using a custom AVReceive3 to receive rtp-streams and then I create processors for the incoming stream's datasource's, and they are ALL PushBufferDataSource's.
    Does this mean I can't synchronize these. If so is there any way I can change them into Pull...DataSources ?The RTP packets are timestamped when they leave, and they are played in order. You can't change the timebase on an RTP stream because, for all intensive purposes, it's "live" data. It plays at the speed the transmitting RTP server wants it to play, and it never gets behind because it drops out of order and old data packets.
    If your RTP streams aren't synced correctly on the receiving end, it means they aren't being synced on the transmitting end...so you should look into the other side of the equation.

  • Choppy movie, corrupted audio

    My computer does not support a Quartz Extreme Compatible Graphic Card. I have an iMovie that became choppy and now has corrupted audio. Could this have happened when I upgraded from standard iMovie to iMovieHD? The iMovie may have been originally created in standard iMovie and upgraded when I opened the file after installing the upgrade. I have some iMovies created using VHS clips which are also corrupted. I have tried deleting the iMovies preferences, which did not help. The iMovie will run fine with the audio deleted. The entire movie, audio and video runs fine on my iBook G4 with the same version of iMovie.

    Choppy playback, sometimes called stutter, can occur when a project contains many audio clips. iMovie 6 is a bit more sensitive to the number of clips than earlier versions, which may explain why the problem began after converting.
    Here's a (long) description of the problem, offering several workarounds:
    http://discussions.apple.com/thread.jspa?messageID=2597033#2597033
    Karl

  • Extra hardware interface for transmiting both Audio and video to client ??

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for Transmitting  both Audio and video to client im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
    config= new Config();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    JPanel p= new JPanel();
    p.setLayout( gridBagLayout);
    JPanel localPanel= createLocalPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.gridwidth= 2;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
    p.add( localPanel);
    JPanel targetPanel= createTargetPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 1;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
    JPanel mediaPanel= createMediaPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 2;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
    update.setEnabled( false);
    rtcp.addActionListener( this);
    update.addActionListener( this);
    buttonPanel.add( rtcp);
    buttonPanel.add( update);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 3;
    gbc.gridwidth= 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
    p.add( buttonPanel);
    getContentPane().add( p);
    list.addMouseListener( this);
    addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "Media Locator:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_media_file= new JTextField( 35);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
    p.add( tf_media_file);
    tf_media_file.setText( config.media_locator);
    cb_loop= new JCheckBox( "loop");
    startXmit= new JButton( "Start Transmission");
    startXmit.setEnabled( true);
    startXmit.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
    p.add( cb_loop);
    cb_loop.setSelected( true);
    cb_loop.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
    p.add( startXmit);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
    p.setBorder( titledBorder);
    return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    targets= new Vector();
    for( int i= 0; i < config.targets.size(); i++) {
    targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
    list.addKeyListener( this);
    list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
    p.add( scrollPane);
    JPanel p1= new JPanel();
    p1.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_address= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
    p1.add( tf_remote_address);
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
    p1.add( tf_remote_data_port);
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");
    removeTarget= new JButton( "Remove Target");
    p2.add( addTarget);
    p2.add( removeTarget);
    addTarget.addActionListener( this);
    removeTarget.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.gridwidth= 2;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 20,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
    p1.add( p2);
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
    p.add( p1);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
    p.setBorder( titledBorder);
    return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    JTextField tf_local_host= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
    p.add( tf_local_host);
    try {
    String host= InetAddress.getLocalHost().getHostAddress();
    tf_local_host.setText( host);
    } catch( UnknownHostException e) {
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
    p.add( tf_data_port);
    tf_data_port.setText( config.local_data_port);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
    p.setBorder( titledBorder);
    return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
    if( source == addTarget) {
    String ip= tf_remote_address.getText().trim();
    String port= tf_remote_data_port.getText().trim();
    String localPort= tf_data_port.getText().trim();
    addTargetToList( localPort, ip, port);
    if( avTransmitter != null) {
    avTransmitter.addTarget( ip, port);
    } else if( source == removeTarget) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    if( avTransmitter != null) {
    avTransmitter.removeTarget( target.ip, target.port);
    targets.removeElement( target);
    listModel.setData( targets);
    } else if( source == startXmit) {
    if( startXmit.getLabel().equals( "Start Transmission")) {
    int data_port= new Integer( tf_data_port.getText()).intValue();
    avTransmitter= new AVTransmitter( this, data_port);
    avTransmitter.start( tf_media_file.getText().trim(), targets);
    avTransmitter.setLooping( cb_loop.isSelected());
    startXmit.setLabel( "Stop Transmission");
    } else if( startXmit.getLabel().equals( "Stop Transmission")) {
    avTransmitter.stop();
    avTransmitter= null;
    removeNonBaseTargets();
    listModel.setData( targets);
    startXmit.setLabel( "Start Transmission");
    } else if( source == rtcp) {
    if( rtcpViewer == null) {
    rtcpViewer= new RTCPViewer();
    } else {
    rtcpViewer.setVisible( true);
    rtcpViewer.toFront();
    } else if( source == cb_loop) {
    if( avTransmitter != null) {
    avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
    String localPort= tf_data_port.getText().trim();
    for( int i= targets.size(); i > 0;) {
    Target target= (Target) targets.elementAt( i - 1);
    if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
    i--;
    public void addTargetToList( String localPort,
    String ip, String port) {
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
    port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);
    public void rtcpReport( String report) {
    if( rtcpViewer != null) {
    rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
    config.local_data_port= tf_data_port.getText().trim();
    config.targets= new Vector();
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( config.local_data_port)) {
    config.addTarget( target.ip, target.port);
    config.media_locator= tf_media_file.getText().trim();
    config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    tf_remote_address.setText( target.ip);
    tf_remote_data_port.setText( target.port);
    int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
    this.options= options;
    public int getSize() {
    int size;
    if( options == null) {
    size= 0;
    } else {
    size= options.size();
    return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
    Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
    } else {
    name= null;
    return name;
    public void setData( Vector data) {
    options= data;
    fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
    TargetListModel listModel, Vector targets) {
    this.localPort= localPort;
    this.ip= ip;
    this.port= port;
    this.listModel= listModel;
    this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
    if( !targetExists( localPort, ip, port)) {
    targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
    boolean exists= false;
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( localPort)
    && target.ip.equals( ip)
    && target.port.equals( port)) {
    exists= true;
    break;
    return exists;
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // Input MediaLocator
    // Can be a file or http or capture source
    private MediaLocator locator;
    private String ipAddress;
    private int portBase;
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
    this.tx= tx;
    local_data_port= data_port;
    * Starts the transmission. Returns null if transmission started ok.
    * Otherwise it returns a string with the reason why the setup failed.
    public synchronized String start( String filename, Vector targets) {
    String result;
    locator= new MediaLocator( filename);
    // Create a processor for the specified media locator
    // and program it to output JPEG/RTP
    result = createProcessor();
    if (result != null) {
    return result;
    // Create an RTP session to transmit the output of the
    // processor to the specified IP address and port no.
    result = createTransmitter( targets);
    if (result != null) {
    processor.close();
    processor = null;
    return result;
    // Start the transmission
    processor.start();
    return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
    // Cheated. Should have checked the type.
    PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
    PushBufferStream pbss[] = pbds.getStreams();
    rtpMgrs = new RTPManager[pbss.length];
    localPorts = new int[ pbss.length];
    SessionAddress localAddr, destAddr;
    InetAddress ipAddr;
    SendStream sendStream;
    int port;
    SourceDescription srcDesList[];
    for (int i = 0; i < pbss.length; i++) {
    // for (int i = 0; i < 1; i++) {
    try {
    rtpMgrs[i] = RTPManager.newInstance();
    port = local_data_port + 2*i;
    localPorts[ i]= port;
    localAddr = new SessionAddress( InetAddress.getLocalHost(),
    port);
    rtpMgrs.initialize( localAddr);
    rtpMgrs[i].addReceiveStreamListener(this);
    rtpMgrs[i].addRemoteListener(this);
    for( int k= 0; k < targets.size(); k++) {
    Target target= (Target) targets.elementAt( k);
    int targetPort= new Integer( target.port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
    sendStream = rtpMgrs[i].createSendStream(dataOutput, i);
    sendStream.start();
    } catch (Exception e) {
    e.printStackTrace();
    return e.getMessage();
    return null;
    public void addTarget( String ip, String port) {
    for (int i= 0; i < rtpMgrs.length; i++) {
    int targetPort= new Integer( port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    mgr.addTarget( addr);
    tx.addTargetToList( localPort + "", ip, port + "");
    } catch( Exception e) {
    e.printStackTrace();
    public void removeTarget( String ip, String port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    for (int i= 0; i < rtpMgrs.length; i++) {
    rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
    } catch( Exception e) {
    e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
    System.out.println( ce);
    if( ce instanceof DurationUpdateEvent) {
    Time duration= ((DurationUpdateEvent) ce).getDuration();
    System.out.println( "duration: " + duration.getSeconds());
    } else if( ce instanceof EndOfMediaEvent) {
    System.out.println( "END OF MEDIA - looping=" + looping);
    if( looping) {
    processor.setMediaTime( new Time( 0));
    processor.start();
    public void setLooping( boolean flag) {
    looping= flag;
    public void update( ReceiveStreamEvent event) {
    String timestamp= getTimestamp();
    StringBuffer sb= new StringBuffer();
    if( event instanceof InactiveReceiveStreamEvent) {
    sb.append( timestamp + " Inactive Receive Stream");
    } else if( event instanceof ByeEvent) {
    sb.append( timestamp + " Bye");
    } else {
    System.out.println( "ReceiveStreamEvent: "+ event);
    tx.rtcpReport( sb.toString());
    public void update( RemoteEvent event) {
    String timestamp= getTimestamp();
    if( event instanceof ReceiverReportEvent) {
    ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
    StringBuffer sb= new StringBuffer();
    sb.append( timestamp + " RR");
    if( rr != null) {
    Participant participant= rr.getParticipant();
    if( participant != null) {
    sb.append( " from " + participant.getCNAME());
    sb.append( " ssrc=" + rr.getSSRC());
    } else {
    sb.append( " ssrc=" + rr.getSSRC());
    tx.rtcpReport( sb.toString());
    } else {
    System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
    String timestamp;
    Calendar calendar= Calendar.getInstance();
    int hour= calendar.get( Calendar.HOUR_OF_DAY);
    String hourStr= formatTime( hour);
    int minute= calendar.get( Calendar.MINUTE);
    String minuteStr= formatTime( minute);
    int second= calendar.get( Calendar.SECOND);
    String secondStr= formatTime( second);
    timestamp= hourStr + ":" + minuteStr + ":" + secondStr;
    return timestamp;
    private String formatTime( int time) {
    String timeStr;
    if( time < 10) {
    timeStr= "0" + time;
    } else {
    timeStr= "" + time;
    return timeStr;
    * Stops the transmission if already started
    public void stop() {
    synchronized (this) {
    if (processor != null) {
    processor.stop();
    processor.close();
    processor = null;
    for (int i= 0; i < rtpMgrs.length; i++) {
    rtpMgrs[ i].removeTargets( "Session ended.");
    rtpMgrs[ i].dispose();
    public String createProcessor() {
    if (locator == null) {
    return "Locator is null";
    DataSource ds;
    DataSource clone;
    try {
    ds = javax.media.Manager.createDataSource(locator);
    } catch (Exception e) {
    return "Couldn't create DataSource";
    // Try to create a processor to handle the input media locator
    try {
    processor = javax.media.Manager.createProcessor(ds);
    processor.addControllerListener( this);
    } catch (NoProcessorException npe) {
    return "Couldn't create processor";
    } catch (IOException ioe) {
    return "IOException creating processor";
    // Wait for it to configure
    boolean result = waitForState(processor, Processor.Configured);
    if (result == false)
    return "Couldn't configure processor";
    // Get the tracks from the processor
    TrackControl [] tracks = processor.getTrackControls();
    // Do we have atleast one track?
    if (tracks == null || tracks.length < 1)
    return "Couldn't find tracks in processor";
    // Set the output content descriptor to RAW_RTP
    // This will limit the supported formats reported from
    // Track.getSupportedFormats to only valid RTP formats.
    ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
    processor.setContentDescriptor(cd);
    Format supported[];
    Format chosen;
    boolean atLeastOneTrack = false;
    // Program the tracks.
    for (int i = 0; i < tracks.length; i++) {
    Format format = tracks[i].getFormat();
    if (tracks[i].isEnabled()) {
    supported = tracks[i].getSupportedFormats();
    // We've set the output content to the RAW_RTP.
    // So all the supported formats should work with RTP.
    // We'll just pick the first one.
    if (supported.length > 0) {
    if (supported[0] instanceof VideoFormat) {
    // For video formats, we should double check the
    // sizes since not all formats work in all sizes.
    chosen = checkForVideoSizes(tracks[i].getFormat(),
    supported[0]);
    } else
    chosen = supported[0];
    tracks[i].setFormat(chosen);
    System.err.println("Track " + i + " is set to transmit as:");
    System.err.println(" " + chosen);
    atLeastOneTrack = true;
    } else
    tracks[i].setEnabled(false);
    } else
    tracks[i].setEnabled(false);
    if (!atLeastOneTrack)
    return "Couldn't set any of the tracks to a valid RTP format";
    // Realize the processor. This will internally create a flow
    // graph and attempt to create an output datasource for JPEG/RTP
    // audio frames.
    result = waitForState(processor, Controller.Realized);
    if (result == false)
    return "Couldn't realize processor";
    // Set the JPEG quality to .5.
    setJPEGQuality(processor, 0.5f);
    // Get the output data source of the processor
    dataOutput = processor.getDataOutput();
    return null;
    static SessionAddress destAddr1, destAddr2;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
    int width, height;
    Dimension size = ((VideoFormat)original).getSize();
    Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
    Format h263Fmt = new Format(VideoFormat.H263_RTP);
    if (supported.matches(jpegFmt)) {
    // For JPEG, make sure width and height are divisible by 8.
    width = (size.width % 8 == 0 ? size.width :
    (int)(size.width / 8) * 8);
    height = (size.height % 8 == 0 ? size.height :
    (int)(size.height / 8) * 8);
    } else if (supported.matches(h263Fmt)) {
    // For H.263, we only support some specific sizes.
    if (size.width < 128) {
    width = 128;
    height = 96;
    } else if (size.width < 176) {
    width = 176;
    height = 144;
    } else {
    width = 352;
    height = 288;
    } else {
    // We don't know this particular format. We'll just
    // leave it alone then.
    return supported;
    return (new VideoFormat(null,
    new Dimension(width, height),
    Format.NOT_SPECIFIED,
    null,
    Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
    Control cs[] = p.getControls();
    QualityControl qc = null;
    VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
    // Loop through the controls to find the Quality control for
    // the JPEG encoder.
    for (int i = 0; i < cs.length; i++) {
    if (cs[i] instanceof QualityControl &&
    cs[i] instanceof Owned) {
    Object owner = ((Owned)cs[i]).getOwner();
    // Check to see if the owner is a Codec.
    // Then check for the output format.
    if (owner instanceof Codec) {
    Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
    for (int j = 0; j < fmts.length; j++) {
    if (fmts[j].matches(jpegFmt)) {
    qc = (QualityControl)cs[i];
    qc.setQuality(val);
    System.err.println("- Setting quality to " +
    val + " on " + qc);
    break;
    if (qc != null)
    break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
    return stateLock;
    void setFailed() {
    failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
    p.addControllerListener(new StateListener());
    failed = false;
    // Call the required method on the processor
    if (state == Processor.Configured) {
    p.configure();
    } else if (state == Processor.Realized) {
    p.realize();
    // Wait until we get an event that confirms the
    // success of the method, or a failure event.
    // See StateListener inner class
    while (p.getState() < state && !failed) {
    synchronized (getStateLock()) {
    try {
    getStateLock().wait();
    } catch (InterruptedException ie) {
    return false;
    if (failed)
    return false;
    else
    return true;
    * Inner Classes
    class StateListener implements ControllerListener {
    public void controllerUpdate(ControllerEvent ce) {
    // If there was an error during configure or
    // realize, the processor will be closed
    if (ce instanceof ControllerClosedEvent)
    setFailed();
    // All controller events, send a notification
    // to the waiting thread in waitForState method.
    if (ce instanceof ControllerEvent) {
    synchronized (getStateLock()) {
    getStateLock().notifyAll();
    import java.io.*;
    import java.util.*;
    public class Config {
    private String pathPrefix;
    public String local_data_port;
    public Vector targets;
    public String media_locator;
    public Config() {
    pathPrefix= System.getProperty( "user.home") + File.separator;
    read();
    public void read() {
    targets= new Vector();
    try {
    String path= pathPrefix + "xmit.dat";
    FileInputStream fin= new FileInputStream( path);
    BufferedInputStream bin= new BufferedInputStream( fin);
    DataInputStream din= new DataInputStream( bin);
    local_data_port= readString( din);
    int n_targets= din.readInt();
    for( int i= 0; i < n_targets; i++) {
    String ip= readString( din);
    String port= readString( din);
    targets.addElement( new Target( local_data_port, ip, port));
    media_locator= readString( din);
    fin.close();
    } catch( IOException e) {
    System.out.println( "xmit.dat file missing!");
    local_data_port= "";
    media_locator= "";
    public void write() {
    try {
    String path= pathPrefix + "xmit.dat";
    FileOutputStream fout= new FileOutputStream( path);
    BufferedOutputStream bout= new BufferedOutputStream( fout);
    DataOutputStream dout= new DataOutputStream( bout);
    writeString( dout, local_data_port);
    dout.writeInt( targets.size());
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    writeString( dout, target.ip);
    writeString( dout, target.port);
    writeString( dout, media_locator);
    dout.flush();
    dout.close();
    fout.close();
    } catch( IOException e) {
    System.out.println( "Error writing xmit.dat!");
    public String readString( DataInputStream din) {
    String s= null;
    try {
    short length= din.readShort();
    if( length > 0) {
    byte buf[]= new byte[ length];
    din.read( buf, 0, length);
    s= new String( buf);
    } catch( IOException e) {
    System.err.println( e);
    return s;
    public void writeString( DataOutputStream dout, String str) {
    try {
    if( str != null) {
    dout.writeShort( str.length());
    dout.writeBytes( str);
    } else {
    dout.writeShort( 0);
    } catch( Exception e) {
    e.printStackTrace();
    public void addTarget( String ip, String port) {
    targets.addElement( new Target( "", ip, port));
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class RTCPViewer extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    private JList list;
    private Vector reports;
    private RtcpListModel listModel;
    private JButton clear;
    private JButton start;
    private boolean recording;
    public RTCPViewer() {
    setTitle( "JMF/RTCP Tracer");
    re

    I'm also getting some really bad sound quality on facebook notifications. I've been forced to disable them they sound horrible like they are clipping.
    Trying to figure out if this is a problem on all Late 2013 15" macbook pros or if mine is defective? This occurs even at around 20-30% volume levels with the Facebook notification sound problems...

Maybe you are looking for

  • Display issue in IE

    Hi All; the test page at http://www.windycitycarpets.com/index2a.html displays fine  in FireFox but in IE the content in apDiv3 is pushed down to the bottom of  the page. How do I correct that ? Thanks; Pat

  • How do I start my computer over from scatch!

    I am giving my old computer to a friend and I what to copletly start over. how would I do that?

  • Configuration needed to be done IN R/3

    Hi all, i have a scenario.ECC>XI>ECC(Proxy XiIdoc) In pi i created a RFC connetion to END system and port in IDX1.what configuration is needed in end system to receive idocs. when creating  port in  end system .we have to give the rfc destination of

  • Attach a File to a cell in the BW report...

    Hi all, When I run a bw report on the web it is possible attach a text comment to a cell in the result table as a "document". This is an standard function but we need attach also a file in the same way. Please con you help me with this issue? Enrique

  • Journal Voucher Printing

    Dear All, I wan to print Journal Voucher , Can you tell me Standard process... regards nitin