001 package com.github.sarxos.webcam.ds.ipcam.device.xvision;
002
003 import java.awt.Dimension;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006
007 import com.github.sarxos.webcam.WebcamException;
008 import com.github.sarxos.webcam.ds.ipcam.IpCamDevice;
009 import com.github.sarxos.webcam.ds.ipcam.IpCamMode;
010
011
012 /**
013 * Speed Dome X104S IP Camera by XVision.
014 *
015 * @author Bartosz Firyn (SarXos)
016 */
017 public class X104S extends IpCamDevice {
018
019 public static final Dimension SIZE_SXGA = new Dimension(1280, 1024);
020 public static final Dimension SIZE_VGA = new Dimension(640, 480);
021 public static final Dimension SIZE_QVGA = new Dimension(320, 240);
022 public static final Dimension SIZE_QQVGA = new Dimension(160, 128);
023
024 //@formatter:off
025 private static final Dimension[] SIZES = new Dimension[] {
026 SIZE_SXGA,
027 SIZE_VGA,
028 SIZE_QVGA,
029 SIZE_QQVGA,
030 };
031 //@formatter:on
032
033 private URL base = null;
034
035 public X104S(String name, String urlBase) {
036 this(name, toURL(urlBase));
037 }
038
039 public X104S(String name, URL base) {
040 super(name, null, IpCamMode.PUSH);
041 this.base = base;
042 }
043
044 @Override
045 public Dimension[] getResolutions() {
046 return SIZES;
047 }
048
049 @Override
050 public void setResolution(Dimension size) {
051
052 int index = -1;
053 for (int i = 0; i < SIZES.length; i++) {
054 if (SIZES[i].equals(size)) {
055 index = i;
056 break;
057 }
058 }
059
060 if (index == -1) {
061 throw new IllegalArgumentException(String.format("Incorrect size %s", size));
062 }
063
064 super.setResolution(size);
065 }
066
067 @Override
068 public URL getURL() {
069
070 int index = -1;
071 for (int i = 0; i < SIZES.length; i++) {
072 if (SIZES[i].equals(getResolution())) {
073 index = i;
074 break;
075 }
076 }
077
078 String r = "";
079 switch (index) {
080 case 0:
081 r = "sxga";
082 break;
083 case 1:
084 r = "vga";
085 break;
086 case 2:
087 r = "qvga";
088 break;
089 case 3:
090 r = "qqvga";
091 break;
092 }
093
094 String url = String.format("%s/video.cgi?resolution=%s&random=0.%s", base, r, System.currentTimeMillis());
095
096 try {
097 return new URL(url);
098 } catch (MalformedURLException e) {
099 throw new WebcamException(String.format("Incorrect URL %s", url), e);
100 }
101 }
102
103 }