Author: michiel
Date: 2009-06-25 15:29:31 +0200 (Thu, 25 Jun 2009)
New Revision: 36408

Added:
   
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/Settings.java
Modified:
   
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
   
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
   
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
Log:
leave unfilled values away from key

Modified: 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
       2009-06-25 12:24:53 UTC (rev 36407)
+++ 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
       2009-06-25 13:29:31 UTC (rev 36408)
@@ -12,7 +12,7 @@
 import org.mmbase.applications.media.Format;
 import org.mmbase.applications.media.Codec;
 import java.net.*;
-import java.beans.*;
+import java.lang.reflect.*;
 import java.io.*;
 import java.util.*;
 import org.mmbase.util.externalprocess.*;
@@ -26,7 +26,6 @@
  * @author Michiel Meeuwissen
  * @version $Id$
  */
-
 public abstract class AbstractTranscoder implements Transcoder {
 
     public static final Logger LOG = 
Logging.getLoggerInstance(AbstractTranscoder.class);
@@ -56,15 +55,42 @@
         return codec;
     }
 
-    public  String getKey() {
+    public  final String getKey() {
         StringBuilder buf = new StringBuilder(getClass().getName());
-        /**
         buf.append(" ");
-        BeanDescriptor bi = new BeanDescriptor(this);
-        for (String prop : Collections.list(bi.attributNames())) {
-            buf.append(prop).append("=").append(bi.getValue(prop));
+        boolean appendedSetting = false;
+        Settings settings = getClass().getAnnotation(Settings.class);
+        for (String setting : settings.value()) {
+            Object value = null;
+
+            String methodName = "get" + setting.substring(0, 1).toUpperCase() 
+ setting.substring(1);
+            try {
+                Method m = getClass().getMethod(methodName);
+                value = m.invoke(this);
+            } catch (NoSuchMethodException nsme) {
+                try {
+                    Field f = getClass().getDeclaredField(setting);
+                    value = f.get(this);
+                } catch (NoSuchFieldException nsfe) {
+                    LOG.error("No such method " + methodName + " or field " + 
setting + " on " + getClass());;
+                } catch (IllegalAccessException iea) {
+                    LOG.error(iea);
+                }
+            } catch (IllegalAccessException iea) {
+                LOG.error(iea);
+            } catch (InvocationTargetException ita) {
+                LOG.error(ita);
+            }
+            if (value != null) {
+                if (appendedSetting) {
+                    buf.append(", ");
+                }
+                buf.append(setting).append("=");
+                buf.append(value);
+                appendedSetting = true;
+
+            }
         }
-        */
         return buf.toString();
     }
 

Modified: 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
  2009-06-25 12:24:53 UTC (rev 36407)
+++ 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
  2009-06-25 13:29:31 UTC (rev 36408)
@@ -28,7 +28,7 @@
  * @author Michiel Meeuwissen
  * @version $Id$
  */
-
+...@settings({"videoQuality",  "keyInt", "height", "width"})
 public class FFMpeg2TheoraTranscoder extends CommandTranscoder {
 
 
@@ -39,8 +39,10 @@
         codec  = Codec.THEORA;
     }
 
-    private int videoQuality = 5;
-    private int keyInt = 64;
+    int videoQuality = 5;
+    int keyInt = 64;
+    Integer height = null;
+    Integer width  = null;
 
     public void setVideoQuality(int vq) {
         videoQuality = vq;
@@ -50,28 +52,47 @@
         keyInt = ki;
     }
 
+    public void setHeight(int y) {
+        height = y;
+    }
+
+    public void setWidth(int x) {
+        width = x;
+    }
+
     @Override
     protected  String getCommand() {
         return "ffmpeg2theora";
     }
 
     @Override
-    public String getKey() {
-        return getClass().getName() + " videoQuality=" + videoQuality + 
",keyInt=" + keyInt;
-    }
-
-    @Override
     protected String[] getArguments() {
-        if (! in.getScheme().equals("file")) throw new 
UnsupportedOperationException();
-        if (! out.getScheme().equals("file")) throw new 
UnsupportedOperationException();
+        if (! in.getScheme().equals("file")) {
+            throw new UnsupportedOperationException();
+        }
+        if (! out.getScheme().equals("file")) {
+            throw new UnsupportedOperationException();
+        }
 
         File inFile = new File(in.getPath());
         File outFile = new File(out.getPath());
 
-        return new String[] { "-o", outFile.toString(),
-                              "--videoquality", "" + videoQuality,
-                              "--keyint", "" + keyInt,
-                              inFile.toString() };
+        List<String> args = new ArrayList<String>();
+        args.add("-o"); args.add(outFile.toString());
+        args.add("--videoquality"); args.add("" + videoQuality);
+        args.add("--keyint"); args.add("" + keyInt);
+
+        if (width != null) {
+            args.add("-x"); args.add("" + width);
+        }
+        if (height != null) {
+            args.add("-y"); args.add("" + height);
+        }
+
+
+        args.add(inFile.toString());
+
+        return args.toArray(new String[args.size()]);
     }
 
     long count = 0;

Modified: 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
 2009-06-25 12:24:53 UTC (rev 36407)
+++ 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
 2009-06-25 13:29:31 UTC (rev 36408)
@@ -24,7 +24,7 @@
  * @author Michiel Meeuwissen
  * @version $Id$
  */
-
+...@settings({"format"})
 public class FFMpegTranscoder extends CommandTranscoder {
 
     private static final Logger log = 
Logging.getLoggerInstance(FFMpegTranscoder.class);

Added: 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/Settings.java
===================================================================
--- 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/Settings.java
                         (rev 0)
+++ 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/transcoders/Settings.java
 2009-06-25 13:29:31 UTC (rev 36408)
@@ -0,0 +1,24 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.streams.transcoders;
+import java.lang.annotation.*;
+
+/**
+ * This annotation can be used on methods, to make it
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: Required.java 34900 2009-05-01 16:29:42Z michiel $
+ */
+...@retention(RetentionPolicy.RUNTIME)
+...@target({ElementType.TYPE})
+public @interface Settings {
+    String[] value();
+
+}

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to