Changeset 28924 in osm for applications


Ignore:
Timestamp:
2012-11-11T22:00:32+01:00 (12 years ago)
Author:
donvip
Message:

[josm_videomapping] potential fix for #josm8190, update to vlcj 2.1.0 / jna 3.4.0, code cleanup

Location:
applications/editors/josm/plugins/videomapping
Files:
5 added
5 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/videomapping/.classpath

    r25796 r28924  
    33        <classpathentry kind="src" path="src"/>
    44        <classpathentry kind="src" path="test"/>
    5         <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
    6         <classpathentry kind="lib" path="/core/dist/josm-custom.jar"/>
    7         <classpathentry kind="lib" path="lib/jna.jar"/>
     5        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    86        <classpathentry kind="lib" path="lib/log4j.jar"/>
    9         <classpathentry kind="lib" path="lib/vlcj-1.1.5.1.jar" sourcepath="C:/Dokumente und Einstellungen/Matthias/Desktop/vlcj/vlcj-1.1.5.1-javadoc.jar">
     7        <classpathentry kind="lib" path="lib/vlcj-2.1.0.jar" sourcepath="lib/vlcj-2.1.0-sources.jar">
    108                <attributes>
    11                         <attribute name="javadoc_location" value="jar:file:/D:/Projekte/Studium/BA Arbeit/working/plugins/videomapping/lib/vlcj-1.1.5.1-javadoc.jar!/"/>
     9                        <attribute name="javadoc_location" value="jar:platform:/resource/VideoMapping/lib/vlcj-2.1.0-javadoc.jar!/"/>
    1210                </attributes>
    1311        </classpathentry>
    14         <classpathentry combineaccessrules="false" kind="src" path="/core"/>
    15         <classpathentry kind="lib" path="lib/platform.jar"/>
     12        <classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
     13        <classpathentry kind="lib" path="lib/jna-3.4.0.jar"/>
     14        <classpathentry kind="lib" path="lib/platform-3.4.0.jar"/>
    1615        <classpathentry kind="output" path="bin"/>
    1716</classpath>
  • applications/editors/josm/plugins/videomapping/.settings/org.eclipse.jdt.core.prefs

    r21226 r28924  
    1 #Fri Apr 30 14:06:39 CEST 2010
    21eclipse.preferences.version=1
    32org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
    4 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
     3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
    54org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
    6 org.eclipse.jdt.core.compiler.compliance=1.5
     5org.eclipse.jdt.core.compiler.compliance=1.6
    76org.eclipse.jdt.core.compiler.debug.lineNumber=generate
    87org.eclipse.jdt.core.compiler.debug.localVariable=generate
     
    109org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
    1110org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
    12 org.eclipse.jdt.core.compiler.source=1.5
     11org.eclipse.jdt.core.compiler.source=1.6
  • applications/editors/josm/plugins/videomapping/README

    r21295 r28924  
    55icon: http://www.openclipart.org/detail/16349
    66
    7 VLCj binding (1.1.0f):
     7VLCj binding (2.1.0):
    88http://code.google.com/p/vlcj/
    99
    10 for use with VLC 1.1.x
    11 http://download.videolan.org/pub/videolan/testing/vlc-1.1.0-pre4/win32/
     10for use with VLC 2.0.x
     11http://www.videolan.org/vlc/#download
  • applications/editors/josm/plugins/videomapping/build.xml

    r28808 r28924  
    4242    <import file="../build-common.xml"/>
    4343
    44     <property name="vlcj" value="${plugin.lib.dir}/vlcj-1.1.5.1.jar"/>
    45     <property name="jna" value="${plugin.lib.dir}/jna.jar"/>
    46     <property name="platform" value="${plugin.lib.dir}/platform.jar"/>
     44    <property name="vlcj" value="${plugin.lib.dir}/vlcj-2.1.0.jar"/>
     45    <property name="jna" value="${plugin.lib.dir}/jna-3.4.0.jar"/>
     46    <property name="platform" value="${plugin.lib.dir}/platform-3.4.0.jar"/>
    4747    <property name="log4j" value="${plugin.lib.dir}/log4j.jar"/>
    4848    <!-- classpath -->
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPlugin.java

    r28289 r28924  
    22
    33import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
     4import static org.openstreetmap.josm.tools.I18n.marktr;
    45import static org.openstreetmap.josm.tools.I18n.tr;
    5 import static org.openstreetmap.josm.tools.I18n.marktr;
    6 
    7 import java.awt.BorderLayout;
    8 import java.awt.Panel;
     6
    97import java.awt.event.ActionEvent;
    108import java.awt.event.KeyEvent;
    11 import java.beans.PropertyChangeListener;
    129import java.io.File;
    1310import java.text.ParseException;
     
    1613import java.util.Date;
    1714
    18 import javax.swing.Action;
    19 import javax.swing.Box;
    2015import javax.swing.InputVerifier;
    21 import javax.swing.JButton;
    2216import javax.swing.JCheckBoxMenuItem;
    2317import javax.swing.JComponent;
    24 import javax.swing.JDialog;
    2518import javax.swing.JFileChooser;
    2619import javax.swing.JFormattedTextField;
     
    2922import javax.swing.JMenuItem;
    3023import javax.swing.JOptionPane;
    31 import javax.swing.JPanel;
    3224import javax.swing.JRadioButtonMenuItem;
    3325import javax.swing.SwingUtilities;
     
    3527
    3628import org.openstreetmap.josm.Main;
    37 import org.openstreetmap.josm.plugins.*;
     29import org.openstreetmap.josm.actions.JosmAction;
     30import org.openstreetmap.josm.gui.MapView;
     31import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
     32import org.openstreetmap.josm.gui.layer.GpxLayer;
     33import org.openstreetmap.josm.gui.layer.Layer;
     34import org.openstreetmap.josm.plugins.Plugin;
     35import org.openstreetmap.josm.plugins.PluginInformation;
    3836import org.openstreetmap.josm.plugins.videomapping.video.GPSVideoPlayer;
    3937import org.openstreetmap.josm.plugins.videomapping.video.VideoEngine;
    4038import org.openstreetmap.josm.tools.Shortcut;
    41 import org.openstreetmap.josm.actions.JosmAction;
    42 import org.openstreetmap.josm.gui.MapView;
    43 import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
    44 import org.openstreetmap.josm.gui.layer.*;
    45 
    46 import uk.co.caprica.vlcj.runtime.windows.WindowsRuntimeUtil;
    47 
    48 import com.sun.jna.LastErrorException;
    49 import com.sun.jna.NativeLibrary;
     39
     40import uk.co.caprica.vlcj.player.DeinterlaceMode;
    5041
    5142  /**
     
    6657    private final String PROP_JUMPLENGTH="videomapping.jumplength";
    6758    private final String PROP_LOOPLENGTH="videomapping.looplength";
    68     private String deinterlacer;
     59//    private String deinterlacer;
    6960    private boolean autoCenter;
    7061    private Integer jumpLength,loopLength;
     
    9182                    importVideoFile();
    9283                }
    93        
    9484        };
    9585        VRemove= new JosmAction(tr("Remove Video"),"videomapping",tr("removes current video from layer"),null,false) {
     
    9888            public void actionPerformed(ActionEvent arg0) {
    9989            }
    100         };       
     90        };
    10191        VStart = new JosmAction(tr("Play/Pause"), "audio-playpause", tr("starts/pauses video playback"),
    10292                Shortcut.registerShortcut("videomapping:startstop",tr("Video: {0}", tr("Play/Pause")),KeyEvent.VK_NUMPAD5, Shortcut.DIRECT), false, "vm_play_pause",false) {           
    10393            public void actionPerformed(ActionEvent e) {
    104                 gpsVideoPlayer.pause();               
     94                if (gpsVideoPlayer != null) {
     95                    gpsVideoPlayer.pause();
     96                }
    10597            }
    10698        };
     
    108100                Shortcut.registerShortcut("videomapping:backward",tr("Video: {0}", tr("Backward")),KeyEvent.VK_NUMPAD4, Shortcut.DIRECT), false, "vm_prev",false) {
    109101            public void actionPerformed(ActionEvent e) {
    110                 gpsVideoPlayer.backward();
     102                if (gpsVideoPlayer != null) {
     103                    gpsVideoPlayer.backward();
     104                }
    111105            }
    112106        };
     
    114108                Shortcut.registerShortcut("videomapping:forward",tr("Video: {0}", tr("Forward")),KeyEvent.VK_NUMPAD6, Shortcut.DIRECT), false, "vm_next",false) {
    115109            public void actionPerformed(ActionEvent e) {
    116                 gpsVideoPlayer.forward();
    117                            
     110                if (gpsVideoPlayer != null) {
     111                    gpsVideoPlayer.forward();
     112                }
    118113            }
    119114        };
     
    122117           
    123118            public void actionPerformed(ActionEvent e) {
    124                 gpsVideoPlayer.setSpeed(gpsVideoPlayer.getSpeed()+20);
    125                            
     119                if (gpsVideoPlayer != null) {
     120                    gpsVideoPlayer.setSpeed(gpsVideoPlayer.getSpeed()+20);
     121                }
    126122            }
    127123        };
     
    130126           
    131127            public void actionPerformed(ActionEvent e) {
    132                 gpsVideoPlayer.setSpeed(gpsVideoPlayer.getSpeed()-20);
    133                            
     128                if (gpsVideoPlayer != null) {
     129                    gpsVideoPlayer.setSpeed(gpsVideoPlayer.getSpeed()-20);
     130                }
    134131            }
    135132        };
     
    144141                Shortcut.registerShortcut("videomapping:loop",tr("Video: {0}", tr("Loop")),KeyEvent.VK_NUMPAD7, Shortcut.DIRECT), false) {           
    145142            public void actionPerformed(ActionEvent e) {
    146                 gpsVideoPlayer.toggleLooping();
     143                if (gpsVideoPlayer != null) {
     144                    gpsVideoPlayer.toggleLooping();
     145                }
    147146            }
    148147        };
     
    151150        VCenterIcon = new JCheckBoxMenuItem(new JosmAction(tr("Keep centered"), (String)null, tr("follows the video icon automaticly"),null, false,"vm_keepcentered",false) {           
    152151            public void actionPerformed(ActionEvent e) {
    153                 videoPositionLayer.setAutoCenter(VCenterIcon.isSelected());
     152                if (videoPositionLayer != null) {
     153                    videoPositionLayer.setAutoCenter(VCenterIcon.isSelected());
     154                }
    154155            }
    155156        });
     
    157158        VSubTitles = new JCheckBoxMenuItem(new JosmAction(tr("Subtitles"), (String)null, tr("Show subtitles in video"),null, false,"vm_subtitles",false) {
    158159            public void actionPerformed(ActionEvent e) {
    159                 gpsVideoPlayer.setSubtitles(VSubTitles.isSelected());                           
     160                if (gpsVideoPlayer != null) {
     161                    gpsVideoPlayer.setSubtitles(VSubTitles.isSelected());
     162                }
    160163            }
    161164        });
     
    182185        VIntNone= new JRadioButtonMenuItem(new JosmAction(tr("none"), (String)null, tr("no deinterlacing"),null, false,"vm_deinterlacer",false) {           
    183186            public void actionPerformed(ActionEvent e) {
    184                 gpsVideoPlayer.setDeinterlacer("none");
     187                if (gpsVideoPlayer != null) {
     188                    gpsVideoPlayer.setDeinterlacer(null);
     189                }
    185190            }
    186191        });
    187192        VIntBob= new JRadioButtonMenuItem(new JosmAction("bob", (String)null, tr("deinterlacing using line doubling"),null, false,"vm_bobdeinterlace",false) {
    188193            public void actionPerformed(ActionEvent e) {
    189                 gpsVideoPlayer.setDeinterlacer("bob");
     194                if (gpsVideoPlayer != null) {
     195                    gpsVideoPlayer.setDeinterlacer(DeinterlaceMode.BOB);
     196                }
    190197            }
    191198        });
    192199        VIntLinear= new JRadioButtonMenuItem(new JosmAction("linear", (String)null, tr("deinterlacing using linear interpolation"),null, false,"vm_lineardeinterlace",false) {
    193200            public void actionPerformed(ActionEvent e) {
    194                 gpsVideoPlayer.setDeinterlacer("linear");
     201                if (gpsVideoPlayer != null) {
     202                    gpsVideoPlayer.setDeinterlacer(DeinterlaceMode.LINEAR);
     203                }
    195204            }
    196205        });
     
    212221        VMenu.add(VDeinterlacer);
    213222        VMenu.add(VSubTitles);
    214        
    215223    }
    216224
     
    218226                JFileChooser fc = new JFileChooser(mostRecentFolder);
    219227        fc.setSelectedFile(new File(mostRecentFolder));
    220         if(fc.showOpenDialog(Main.main.parent)!=JFileChooser.CANCEL_OPTION)
    221         {               
     228        if (fc.showOpenDialog(Main.parent) != JFileChooser.CANCEL_OPTION) {
    222229                mostRecentFolder=fc.getSelectedFile().getAbsolutePath();
    223230                saveProperties();
    224                 if(videoPositionLayer==null)
    225                 {
    226                         videoPositionLayer= new VideoPositionLayer(gpsLayer);
     231                if (videoPositionLayer == null && gpsLayer != null) {
     232                        videoPositionLayer = new VideoPositionLayer(gpsLayer);
    227233                gpsVideoPlayer = new GPSVideoPlayer(new SimpleDateFormat("hh:mm:ss") ,videoPositionLayer);
    228234                gpsVideoPlayer.setJumpLength(jumpLength);
    229235                gpsVideoPlayer.setLoopLength(loopLength);
    230236                enableVideoControlMenus(true);
    231                 }               
    232                 gpsVideoPlayer.addVideo(fc.getSelectedFile());         
     237                }
     238                if (gpsVideoPlayer != null) {
     239                    gpsVideoPlayer.addVideo(fc.getSelectedFile());
     240                }
    233241        }               
    234242        }
     
    244252        }
    245253       
    246         private void setDefaults()
    247         {
     254        private void setDefaults() {
    248255                autoCenter=false;
    249                 deinterlacer="";
     256//              deinterlacer="";
    250257                jumpLength=1000;
    251258                loopLength=6000;
     
    276283    }
    277284       
    278 
    279285        private void showJumpTo()
    280286        {
    281                 String s;
    282287        try {
    283288                JOptionPane d=new JOptionPane(tr("Jump to"), JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);               
     
    301306                    }
    302307                });
    303                 if(d.showConfirmDialog(Main.main.panel,inp, tr("Jump to GPS time"),JOptionPane.OK_CANCEL_OPTION)==JOptionPane.OK_OPTION)
     308                if (JOptionPane.showConfirmDialog(Main.panel,inp, tr("Jump to GPS time"),JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION)
    304309                {
    305310                        //add the day to the time
     
    342347               
    343348        }
    344      
    345    
    346    
    347349  }
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPositionLayer.java

    r25896 r28924  
    22
    33
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.awt.Color;
     7import java.awt.Graphics2D;
     8import java.awt.Point;
     9import java.awt.Rectangle;
     10import java.awt.event.MouseEvent;
     11import java.awt.event.MouseListener;
     12import java.awt.event.MouseMotionListener;
    413import java.text.DateFormat;
    514import java.text.SimpleDateFormat;
     
    817import java.util.LinkedList;
    918import java.util.List;
    10 import java.awt.Color;
    11 import java.awt.Cursor;
    12 import java.awt.Graphics2D;
    13 import java.awt.Point;
    14 import java.awt.Rectangle;
    15 import java.awt.event.MouseEvent;
    16 import java.awt.event.MouseListener;
    17 import java.awt.event.MouseMotionListener;
    18 import java.io.File;
    19 
    20 import javax.swing.*;
    21 
    22 import static org.openstreetmap.josm.tools.I18n.*;
     19
     20import javax.swing.Action;
     21import javax.swing.Icon;
     22import javax.swing.ImageIcon;
    2323
    2424import org.openstreetmap.josm.Main;
     
    3535import org.openstreetmap.josm.gui.layer.GpxLayer;
    3636import org.openstreetmap.josm.gui.layer.Layer;
    37 import org.openstreetmap.josm.plugins.videomapping.video.GPSVideo;
    3837import org.openstreetmap.josm.plugins.videomapping.video.GPSVideoPlayer;
    39 import org.openstreetmap.josm.plugins.videomapping.video.Video;
    4038
    4139//Basic rendering and GPS layer interaction
     
    107105        g.drawString(gpsTimeFormat.format(iconPosition.getTime()),p.x-15,p.y-15);
    108106        }
    109        
     107/*     
    110108        private void paintInterpolatedSegment(Graphics2D g) {
    111109                g.setColor(Color.CYAN);
     
    142140                return ls;
    143141        }
    144        
     142*/     
    145143        //creates a waypoint for the corresponding time
    146144        public WayPoint interpolate(Date GPSTime)
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideo.java

    r25896 r28924  
    11package org.openstreetmap.josm.plugins.videomapping.video;
    2 import java.awt.Canvas;
    32import java.io.File;
    4 import java.util.Calendar;
    53import java.util.Date;
    64import java.util.List;
     
    119import org.openstreetmap.josm.data.gpx.WayPoint;
    1210import org.openstreetmap.josm.plugins.videomapping.VideoPositionLayer;
     11
     12import uk.co.caprica.vlcj.player.MediaPlayerFactory;
    1313
    1414// a specific synced video
     
    2424        private VideoPositionLayer videoPositionLayer;
    2525       
    26         public GPSVideo(File filename, String id) {
    27                 super(filename,id);
     26        public GPSVideo(File filename, String id, MediaPlayerFactory mediaPlayerFactory) {
     27                super(filename,id,mediaPlayerFactory);
    2828        }
    2929       
    3030        public GPSVideo(Video video)
    3131        {
    32                 super(video.filename,video.id);
    33                 this.player=video.player;
     32                super(video.filename, video.id, video.mediaPlayerFactory);
     33                this.player = video.player;
    3434        }
    3535       
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java

    r25896 r28924  
    11package org.openstreetmap.josm.plugins.videomapping.video;
    2 import java.awt.BorderLayout;
     2import static org.openstreetmap.josm.tools.I18n.tr;
     3
    34import java.awt.Color;
    4 import java.awt.FlowLayout;
    55import java.awt.HeadlessException;
    66import java.awt.event.ActionEvent;
     
    99import java.io.File;
    1010import java.text.DateFormat;
    11 import java.util.Calendar;
    1211import java.util.Date;
    13 import java.util.Iterator;
    1412import java.util.LinkedList;
    1513import java.util.List;
    16 import java.util.Timer;
    17 import java.util.TimerTask;
    1814
    1915import javax.swing.JButton;
    20 import javax.swing.JCheckBoxMenuItem;
    21 import javax.swing.JPanel;
    2216
    23 import org.openstreetmap.josm.Main;
    24 import org.openstreetmap.josm.data.gpx.WayPoint;
    25 import org.openstreetmap.josm.plugins.videomapping.VideoObserver;
    2617import org.openstreetmap.josm.plugins.videomapping.VideoPositionLayer;
    27 
    28 import static org.openstreetmap.josm.tools.I18n.*;
    29 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    3018
    3119//extends video playback, major control has the video player
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/Video.java

    r25896 r28924  
    99
    1010import uk.co.caprica.vlcj.player.MediaPlayer;
     11import uk.co.caprica.vlcj.player.MediaPlayerFactory;
     12import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;
    1113
    1214//basic informations about one single video playback instance
    1315public class Video {
    14         public File filename;
    15         public String id; //unique id to make it easy to identify
     16        public final File filename;
     17        public final String id; //unique id to make it easy to identify
    1618        public MediaPlayer player;
    1719        public Canvas canvas;
    18         public JPanel panel;   
     20        public CanvasVideoSurface videoSurface;
     21        public final JPanel panel;
     22        public final MediaPlayerFactory mediaPlayerFactory;
    1923       
    20         public Video(File filename, String id) {
    21                 this.filename=filename;
    22                 this.id=id;
    23                 canvas=new Canvas();
    24                 panel=new JPanel();
    25                 panel.setLayout(new FlowLayout());
    26                 panel.add(canvas,BorderLayout.CENTER);
     24        public Video(File filename, String id, MediaPlayerFactory mediaPlayerFactory) {
     25                this.filename = filename;
     26                this.id = id;
     27                this.mediaPlayerFactory = mediaPlayerFactory;
     28                this.canvas = new Canvas();
     29                this.videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
     30                this.panel = new JPanel();
     31                this.panel.setLayout(new FlowLayout());
     32                this.panel.add(videoSurface.canvas(), BorderLayout.CENTER);
    2733        }
    2834       
    29         public long getCurrentTime()
    30         {
     35        public long getCurrentTime() {
    3136                return player.getTime();
    3237        }
    33        
    34 
    3538}
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/VideoEngine.java

    r28289 r28924  
    11package org.openstreetmap.josm.plugins.videomapping.video;
    22
    3 import java.awt.Canvas;
    4 import java.awt.Dimension;
     3import static org.openstreetmap.josm.tools.I18n.tr;
     4
    55import java.awt.Window;
    6 import java.io.File;
    76import java.util.LinkedList;
    87import java.util.List;
    98
    10 import com.sun.jna.NativeLibrary;
    11 
    12 import uk.co.caprica.vlcj.binding.internal.libvlc_media_player_t;
     9import uk.co.caprica.vlcj.binding.internal.libvlc_media_t;
     10import uk.co.caprica.vlcj.player.DeinterlaceMode;
    1311import uk.co.caprica.vlcj.player.MediaPlayer;
    1412import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
    1513import uk.co.caprica.vlcj.player.MediaPlayerFactory;
    16 import uk.co.caprica.vlcj.player.VideoMetaData;
    1714import uk.co.caprica.vlcj.player.embedded.DefaultFullScreenStrategy;
    1815import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
    1916import uk.co.caprica.vlcj.player.embedded.FullScreenStrategy;
    20 import uk.co.caprica.vlcj.runtime.windows.WindowsCanvas;
     17import uk.co.caprica.vlcj.runtime.RuntimeUtil;
    2118import uk.co.caprica.vlcj.runtime.windows.WindowsRuntimeUtil;
    2219
    23 import static org.openstreetmap.josm.tools.I18n.*;
     20import com.sun.jna.NativeLibrary;
     21import com.sun.jna.platform.win32.Advapi32Util;
     22import com.sun.jna.platform.win32.WinReg;
    2423
    2524//concrete Player library that is able to playback multiple videos
    26 public class VideoEngine implements MediaPlayerEventListener{
     25public class VideoEngine implements MediaPlayerEventListener {
    2726        private FullScreenStrategy fullScreenStrategy;
    28         private MediaPlayerFactory mediaPlayerFactory;
     27        public MediaPlayerFactory mediaPlayerFactory;
    2928        private List<Video> videos;
    3029        private List<VideosObserver> observers;
     
    3231    private final String[] standardMediaOptions = {""};
    3332    private final static String[] deinterlacers = {"bob","linear"};
    34     private final float initialCanvasFactor = 0.5f;
     33    //private final float initialCanvasFactor = 0.5f;
    3534        private boolean singleVideoMode; //commands will only affect the last added video
    3635        private Video lastAddedVideo;
    3736       
    3837        //called at plugin start to setup library
    39         public static void setupPlayer()
    40         {
    41                 NativeLibrary.addSearchPath("libvlc", WindowsRuntimeUtil.getVlcInstallDir());
     38        public static void setupPlayer() {
     39            String vlcInstallDir = null;
     40           
     41            if (RuntimeUtil.isWindows()) {
     42                vlcInstallDir = WindowsRuntimeUtil.getVlcInstallDir();
     43                String arch = System.getProperty("os.arch");
     44                if (vlcInstallDir == null && arch.equals("amd64")) {
     45                    try {
     46                        vlcInstallDir = Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE,
     47                                WindowsRuntimeUtil.VLC_REGISTRY_KEY.replaceFirst("\\\\", "\\\\Wow6432Node\\\\"),
     48                                WindowsRuntimeUtil.VLC_INSTALL_DIR_KEY);
     49                    } catch (RuntimeException e) {
     50                        System.err.println(e.getMessage());
     51                    }
     52                }
     53            } else if (RuntimeUtil.isMac()) {
     54                // TODO
     55            } else if (RuntimeUtil.isNix()) {
     56            // TODO
     57            }
     58           
     59        if (vlcInstallDir != null) {
     60            System.out.println("videomapping: found VLC install dir: "+vlcInstallDir);
     61            NativeLibrary.addSearchPath("libvlc", vlcInstallDir);
     62        } else {
     63            System.err.println("videomapping: unable to locate VLC install dir");
     64        }
    4265        }
    4366       
     
    4770                videos = new LinkedList<Video>();
    4871                observers = new LinkedList<VideosObserver>();
    49                 try
    50                 {
     72                try {
    5173                        mediaPlayerFactory = new MediaPlayerFactory(libvlcArgs);
    5274                fullScreenStrategy = new DefaultFullScreenStrategy(parent);
    53                 }
    54                 catch (NoClassDefFoundError e)
    55         {
     75                } catch (NoClassDefFoundError e) {
    5676            System.err.println(tr("Unable to find JNA Java library!"));
     77        } catch (UnsatisfiedLinkError e) {
     78            System.err.println(tr("Unable to find native libvlc library!"));
     79        } catch (Throwable t) {
     80            System.err.println(t.getMessage());
    5781        }
    58         catch (UnsatisfiedLinkError e)
    59         {
    60             System.err.println(tr("Unable to find native libvlc library!"));
    61         }       
    6282        }
    6383       
     
    6686                try
    6787                {
    68                         EmbeddedMediaPlayer mp;
    69                         mp = mediaPlayerFactory.newMediaPlayer(fullScreenStrategy);
     88                        EmbeddedMediaPlayer mp = mediaPlayerFactory.newEmbeddedMediaPlayer(fullScreenStrategy);
    7089                        video.player=mp;
    7190                        mp.setStandardMediaOptions(standardMediaOptions);
    7291                        videos.add(video);
    7392                        lastAddedVideo=video;
    74                         mp.setVideoSurface(video.canvas);
     93                        mp.setVideoSurface(video.videoSurface);
    7594                mp.addMediaPlayerEventListener(this);
    7695                String mediaPath = video.filename.getAbsoluteFile().toString();
     
    87106        }
    88107        }
    89        
     108        /*
    90109        private Video getVideo(MediaPlayer mp)
    91110        {
     
    95114                return null;
    96115        }
    97 
     116*/
    98117        public List<Video> getVideos() {               
    99118                return videos;
     
    246265               
    247266       
    248         public void setDeinterlacer (String deinterlacer)
     267        public void setDeinterlacer (DeinterlaceMode deinterlacer)
    249268        {
    250269                if (singleVideoMode)
     
    282301                        video.player.release();
    283302                        video.player=null;
     303                        video.videoSurface=null;
    284304                        video.canvas=null;
    285305                }
     
    302322               
    303323        }
    304 
     324/*
    305325        public void buffering(MediaPlayer arg0) {
    306326               
    307327        }
    308 
     328*/
    309329        public void error(MediaPlayer arg0) {
    310330               
     
    322342               
    323343        }
    324 
     344/*
    325345        public void mediaChanged(MediaPlayer arg0) {
    326346               
     
    332352                notifyObservers(VideoObserversEvents.resizing);         
    333353        }
    334 
     354*/
    335355        public void opening(MediaPlayer arg0) {
    336356               
     
    386406        }
    387407
     408    @Override
     409    public void mediaChanged(MediaPlayer mediaPlayer, libvlc_media_t media, String mrl) {
     410        // TODO Auto-generated method stub
     411       
     412    }
     413
     414    @Override
     415    public void buffering(MediaPlayer mediaPlayer, float newCache) {
     416        // TODO Auto-generated method stub
     417       
     418    }
     419
     420    @Override
     421    public void videoOutput(MediaPlayer mediaPlayer, int newCount) {
     422        // TODO Auto-generated method stub
     423       
     424    }
     425
     426    @Override
     427    public void mediaMetaChanged(MediaPlayer mediaPlayer, int metaType) {
     428        // TODO Auto-generated method stub
     429       
     430    }
     431
     432    @Override
     433    public void mediaSubItemAdded(MediaPlayer mediaPlayer, libvlc_media_t subItem) {
     434        // TODO Auto-generated method stub
     435       
     436    }
     437
     438    @Override
     439    public void mediaDurationChanged(MediaPlayer mediaPlayer, long newDuration) {
     440        // TODO Auto-generated method stub
     441       
     442    }
     443
     444    @Override
     445    public void mediaParsedChanged(MediaPlayer mediaPlayer, int newStatus) {
     446        // TODO Auto-generated method stub
     447       
     448    }
     449
     450    @Override
     451    public void mediaFreed(MediaPlayer mediaPlayer) {
     452        // TODO Auto-generated method stub
     453       
     454    }
     455
     456    @Override
     457    public void mediaStateChanged(MediaPlayer mediaPlayer, int newState) {
     458        // TODO Auto-generated method stub
     459       
     460    }
     461
     462    @Override
     463    public void newMedia(MediaPlayer mediaPlayer) {
     464        // TODO Auto-generated method stub
     465       
     466    }
     467
     468    @Override
     469    public void subItemPlayed(MediaPlayer mediaPlayer, int subItemIndex) {
     470        // TODO Auto-generated method stub
     471       
     472    }
     473
     474    @Override
     475    public void subItemFinished(MediaPlayer mediaPlayer, int subItemIndex) {
     476        // TODO Auto-generated method stub
     477       
     478    }
     479
     480    @Override
     481    public void endOfSubItems(MediaPlayer mediaPlayer) {
     482        // TODO Auto-generated method stub
     483       
     484    }
     485
    388486}
  • applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/VideoPlayer.java

    r28289 r28924  
    11package org.openstreetmap.josm.plugins.videomapping.video;
     2import static org.openstreetmap.josm.tools.I18n.tr;
     3
    24import java.awt.Adjustable;
    3 
    4 import org.apache.log4j.Logger;
    5 import org.apache.log4j.helpers.DateTimeDateFormat;
    6 
    75import java.awt.BorderLayout;
    8 import java.awt.Canvas;
    96import java.awt.Dimension;
    107import java.awt.FlowLayout;
     
    1411import java.awt.event.WindowEvent;
    1512import java.awt.event.WindowListener;
    16 import java.beans.PropertyChangeListener;
    1713import java.io.File;
    18 import java.sql.Time;
    1914import java.text.DateFormat;
    20 import java.text.SimpleDateFormat;
    21 import java.util.Date;
    22 import java.util.HashSet;
    23 import java.util.Hashtable ;
     15import java.util.Hashtable;
    2416import java.util.LinkedList;
    2517import java.util.List;
    26 import java.util.Set;
    27 import java.util.TimeZone;
    2818import java.util.Timer;
    2919import java.util.TimerTask;
    30 import java.util.concurrent.TimeUnit;
    31 import java.util.concurrent.Executors;
    32 import java.util.concurrent.ScheduledExecutorService;
    33 
    34 import javax.swing.Action;
     20
    3521import javax.swing.JButton;
    36 import javax.swing.JComponent;
    3722import javax.swing.JFrame;
    3823import javax.swing.JLabel;
     
    4025import javax.swing.JSlider;
    4126import javax.swing.JToggleButton;
    42 import javax.swing.SwingUtilities;
    4327import javax.swing.event.ChangeEvent;
    4428import javax.swing.event.ChangeListener;
    4529
    46 import org.openstreetmap.josm.Main;
    47 import org.openstreetmap.josm.plugins.videomapping.VideoObserver;
    48 import static org.openstreetmap.josm.tools.I18n.*;
    49 
    50 import uk.co.caprica.vlcj.binding.LibVlc;
    51 import uk.co.caprica.vlcj.player.MediaPlayer;
    52 import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
    53 import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
    54 import uk.co.caprica.vlcj.player.MediaPlayerFactory;
    55 import uk.co.caprica.vlcj.player.VideoMetaData;
    56 import uk.co.caprica.vlcj.player.embedded.*;
    57 import uk.co.caprica.vlcj.runtime.RuntimeUtil;
    58 import uk.co.caprica.vlcj.runtime.windows.WindowsRuntimeUtil;
     30import uk.co.caprica.vlcj.player.DeinterlaceMode;
    5931
    6032//basic UI of a videoplayer for multiple videos incl. notifications
    61 public class VideoPlayer extends JFrame implements WindowListener, VideosObserver, VideoPlayerObserver{
     33public class VideoPlayer extends JFrame implements WindowListener, VideosObserver, VideoPlayerObserver {
    6234        private static final int notificationIntervall = 500;
    6335        protected JPanel screenPanel,controlsPanel,canvasPanel;
     
    6638    private JToggleButton loop,mute;
    6739    private JSlider speed;
    68     private DateFormat videoTimeFormat;
     40//    private DateFormat videoTimeFormat;
    6941    private VideoEngine videoengine;
    7042    private long jumpLength;
     
    7749        public VideoPlayer(DateFormat videoTimeFormat) throws HeadlessException {
    7850                super();               
    79                 this.videoTimeFormat=videoTimeFormat;
     51//              this.videoTimeFormat=videoTimeFormat;
    8052                //setup playback notifications
    8153                videoengine=new VideoEngine(this);
     
    9466        }
    9567       
    96         public Video addVideo(File Videofile,String id)
    97         {
    98                 Video video = new Video(Videofile,id);         
     68        public Video addVideo(File Videofile, String id)
     69        {
     70                Video video = new Video(Videofile,id,videoengine.mediaPlayerFactory);
    9971                canvasPanel.add(video.panel);
    10072                video.canvas.setSize(new Dimension(300, 300)); // will be updated by the video engine itself
     
    11183
    11284       
    113         public void pause(){
     85        public void pause() {
    11486                videoengine.pause();
    11587                if (videoengine.isNoVideoPlaying())
     
    143115        }
    144116       
    145         public void setDeinterlacer(String deinterlacer)
     117        public void setDeinterlacer(DeinterlaceMode deinterlacer)
    146118        {
    147119                videoengine.setDeinterlacer(deinterlacer);
  • applications/editors/josm/plugins/videomapping/test/videotest.java

    r25894 r28924  
    11
    2 import java.awt.Canvas;
    3 import java.awt.Dimension;
    4 import java.awt.event.ActionEvent;
    5 import java.awt.event.ActionListener;
    62import java.io.File;
    73import java.text.SimpleDateFormat;
    84
    9 import javax.swing.JButton;
    10 import javax.swing.JFileChooser;
    11 import javax.swing.JFrame;
    12 import javax.swing.JPanel;
    13 import javax.swing.JSlider;
    14 import javax.swing.event.ChangeEvent;
    15 import javax.swing.event.ChangeListener;
    16 
    175import org.openstreetmap.josm.plugins.videomapping.video.VideoEngine;
    186import org.openstreetmap.josm.plugins.videomapping.video.VideoPlayer;
    19 
    20 import uk.co.caprica.vlcj.player.*;
    21 
    227
    238//simple app to test videoplayer alone
     
    3116        testplayer.addVideo(new File("C:\\TEMP\\aoe-drachen_dvdscr.avi"),"2");
    3217        testplayer.enableSingleVideoMode(true);
    33        
    3418    }
    35 
    3619}
Note: See TracChangeset for help on using the changeset viewer.