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