Author: michiel
Date: 2009-05-15 15:29:01 +0200 (Fri, 15 May 2009)
New Revision: 35197

Added:
   speeltuin/mihxil/streams/blocks/admin.jspx
   speeltuin/mihxil/streams/blocks/myfragments.jspx
   speeltuin/mihxil/streams/blocks/myjobs.jspx
   speeltuin/mihxil/streams/config/functions/
   speeltuin/mihxil/streams/config/functions/functionsets.xml
   speeltuin/mihxil/streams/config/functions/streams.xml
   speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
   
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
   
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
Modified:
   speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
   speeltuin/mihxil/streams/config/components/streams.xml
   speeltuin/mihxil/streams/pom.xml
   speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
   
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
   
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
   
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
   speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
Log:
user feedback

Added: speeltuin/mihxil/streams/blocks/admin.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/admin.jspx                          (rev 0)
+++ speeltuin/mihxil/streams/blocks/admin.jspx  2009-05-15 13:29:01 UTC (rev 
35197)
@@ -0,0 +1,41 @@
+<div
+    class="mm_c c_streams b_admin ${requestScope.componentClassName}"
+    id="${requestScope.componentId}"
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";>
+  <jsp:output omit-xml-declaration="true" />
+  <mm:cloud rank="basic user">
+    
<h3>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.title)}</h3>
+    
<p>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.description)}</p>
+
+    <mm:import from="request" externid="trigger" />
+    <mm:listnodescontainer type="streamsources" id="q" >
+      SIZE <mm:size /> (${q.sql})
+      <mm:listnodes>
+        BLa
+        <mm:field name="number" />
+        <div class="stream" title="">
+          <h4>
+
+
+          </h4>
+
+          URL: <mm:function name="url" />
+          <mm:present referid="trigger">
+            <mm:voidfunction name="trigger" />
+            Triggered conversion
+          </mm:present>
+          <mm:present referid="trigger" inverse="true">
+            <mm:link>
+              <mm:param name="trigger" />
+              <a href="${_}">Trigger</a>
+            </mm:link>
+          </mm:present>
+        </div>
+      </mm:listnodes>
+    </mm:listnodescontainer>
+  </mm:cloud>
+</div>

Added: speeltuin/mihxil/streams/blocks/myfragments.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/myfragments.jspx                            
(rev 0)
+++ speeltuin/mihxil/streams/blocks/myfragments.jspx    2009-05-15 13:29:01 UTC 
(rev 35197)
@@ -0,0 +1,32 @@
+<div
+    class="mm_c c_streams b_myfragments ${requestScope.componentClassName}"
+    id="${requestScope.componentId}"
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";>
+  <jsp:output omit-xml-declaration="true" />
+
+
+  <p><mm:cloudinfo type="user" id="currentuser" /></p>
+  <mm:listnodescontainer type="mediafragments">
+    <mm:constraint field="owner" 
value="${requestScope['org.mmbase.currentuser']}" />
+    <ul>
+      <mm:listnodes>
+        <li>
+          <mm:field name="number" />
+          <jsp:text> </jsp:text>
+          <mm:field name="title" />
+          <ul>
+            <mm:listfunction name="urls">
+              <li>u: ${_}</li>
+            </mm:listfunction>
+          </ul>
+        </li>
+      </mm:listnodes>
+    </ul>
+  </mm:listnodescontainer>
+
+
+</div>

Added: speeltuin/mihxil/streams/blocks/myjobs.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/myjobs.jspx                         (rev 0)
+++ speeltuin/mihxil/streams/blocks/myjobs.jspx 2009-05-15 13:29:01 UTC (rev 
35197)
@@ -0,0 +1,32 @@
+<div
+    class="mm_c c_streams b_myfragments ${requestScope.componentClassName}"
+    id="${requestScope.componentId}"
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";>
+  <jsp:output omit-xml-declaration="true" />
+
+
+  <ul>
+    <mm:listfunction set="streams" name="myJobs">
+      <li>
+        <span>${_.transcoder} (${_.progress})</span>
+        <p>
+          <span class="in">${_.transcoder.in}</span>
+          <jsp:text> -&amp;gt; </jsp:text>
+          <span class="out">${_.transcoder.out}</span>
+        </p>
+        <div class="log">
+          ${_.logger}
+          <pre>
+          ${_.logger.debugList}
+          </pre>
+        </div>
+      </li>
+    </mm:listfunction>
+  </ul>
+
+
+</div>

Modified: speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
===================================================================
--- speeltuin/mihxil/streams/config/builders/streams/streamsources.xml  
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/config/builders/streams/streamsources.xml  
2009-05-15 13:29:01 UTC (rev 35197)
@@ -74,5 +74,10 @@
 
 
   </fieldlist>
+  <functionlist>
+    <function name="trigger">
+      <class>org.mmbase.streams.CreateCachesFunction</class>
+    </function>
+  </functionlist>
 
 </builder>

Modified: speeltuin/mihxil/streams/config/components/streams.xml
===================================================================
--- speeltuin/mihxil/streams/config/components/streams.xml      2009-05-15 
13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/config/components/streams.xml      2009-05-15 
13:29:01 UTC (rev 35197)
@@ -14,16 +14,38 @@
   <dependency component="media" version="1" />
 
   <block name="recent"
-         classification="mmbase.examples:90 strams"
+         classification="mmbase.examples:90 mmbase.streams"
          mimetype="text/html">
     <title xml:lang="en">Recent </title>
     <title xml:lang="nl">Recente resources</title>
     <description xml:lang="en">Displays recent streams in MMBase</description>
     <description xml:lang="nl">Toont recent in MMBase ingevoerde 
streams</description>
-    <head jsp="head.jspx" />
     <body jsp="recent.jspx">
       <param name="nodetypes" />
     </body>
   </block>
 
+  <block name="admin"
+         classification="mmbase.examples:90 mmbase.streams"
+         mimetype="text/html">
+    <title xml:lang="en">Streams admin</title>
+    <title xml:lang="nl">Streams admin</title>
+    <description xml:lang="en">Displays streams configuration</description>
+    <body jsp="admin.jspx">
+      <param name="trigger" />
+    </body>
+  </block>
+
+  <block name="myfragments"
+         classification="mmbase.examples:90 mmbase.streams"
+         mimetype="text/html">
+    <body jsp="myfragments.jspx" />
+  </block>
+
+  <block name="myjobs"
+         classification="mmbase.examples:90 mmbase.streams"
+         mimetype="text/html">
+    <body jsp="myjobs.jspx" />
+  </block>
+
 </component>

Added: speeltuin/mihxil/streams/config/functions/functionsets.xml
===================================================================
--- speeltuin/mihxil/streams/config/functions/functionsets.xml                  
        (rev 0)
+++ speeltuin/mihxil/streams/config/functions/functionsets.xml  2009-05-15 
13:29:01 UTC (rev 35197)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE functionsets PUBLIC "-//MMBase//DTD functionsets config 1.0//EN" 
"http://www.mmbase.org/dtd/functionsets_1_0.dtd";>
+<functionsets>
+  <functionset name="streams"        resource="streams.xml" />
+</functionsets>

Added: speeltuin/mihxil/streams/config/functions/streams.xml
===================================================================
--- speeltuin/mihxil/streams/config/functions/streams.xml                       
        (rev 0)
+++ speeltuin/mihxil/streams/config/functions/streams.xml       2009-05-15 
13:29:01 UTC (rev 35197)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE functionset PUBLIC "//MMBase - functionset //" 
"http://www.mmbase.org/dtd/functionset_1_0.dtd";>
+<functionset>
+  <description>
+  </description>
+
+  <function name="myJobs">
+    <type>class</type>
+    <class>org.mmbase.streams.CreateCachesProcessor</class>
+    <method>myJobs</method>
+    <param name="user" type="org.mmbase.security.UserContext" />
+  </function>
+
+</functionset>

Modified: speeltuin/mihxil/streams/pom.xml
===================================================================
--- speeltuin/mihxil/streams/pom.xml    2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/pom.xml    2009-05-15 13:29:01 UTC (rev 35197)
@@ -15,7 +15,7 @@
   <packaging>war</packaging>
 
   <description>
-    Support for maintenance of media files in MMBase itself. Uploaded, 
transcoding, and serving.
+    Support for maintenance of media files in MMBase itself. Uploading, 
transcoding, and serving.
   </description>
 
 

Added: speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java   
                        (rev 0)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java   
2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,41 @@
+/*
+
+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;
+
+import org.mmbase.util.functions.*;
+import org.mmbase.bridge.*;
+import org.mmbase.datatypes.processors.CommitProcessor;
+
+/**
+ * Retriggers creation of the caches.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CreateCachesProcessor.java 35037 2009-05-07 15:45:11Z michiel 
$
+ */
+
+public class CreateCachesFunction  extends NodeFunction<Boolean> {
+
+    public CreateCachesFunction() {
+        super("createcaches");
+    }
+
+    @Override
+    protected Boolean getFunctionValue(Node node, Parameters parameters) {
+        Field url = node.getNodeManager().getField("url");
+
+        CommitProcessor deleteCaches = url.getDataType().getDeleteProcessor();
+        deleteCaches.commit(node, url);
+
+        CommitProcessor createCaches = url.getDataType().getCommitProcessor();
+        createCaches.commit(node, url);
+        return true;
+    }
+
+}

Modified: 
speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java  
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java  
2009-05-15 13:29:01 UTC (rev 35197)
@@ -14,6 +14,7 @@
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.NodeList;
 import org.mmbase.storage.search.*;
+import org.mmbase.security.UserContext;
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.util.*;
 import org.mmbase.util.xml.*;
@@ -157,6 +158,21 @@
 
 
 
+    private static final Set<Job> runningJobs = 
Collections.synchronizedSet(new HashSet<Job>());
+
+
+    public static Set<Job> myJobs(UserContext u) {
+        Set<Job> myjobs = new HashSet<Job>();
+        synchronized(runningJobs) {
+            for (Job j : runningJobs) {
+                if (j.user.equals(u.getIdentifier())) {
+                    myjobs.add(j);
+                }
+            }
+        }
+        return myjobs;
+    }
+
     public void commit(final Node node, final Field field) {
         if (node.getNumber() > 0) {
 
@@ -164,12 +180,15 @@
                                           // mediafragment if it does not yet 
exist
 
             LOG.info("Field '" + field + " was changed. Triggering caches for 
" + list);
+
             final ChainedLogger logger = new ChainedLogger();
-            logger.addLogger(Logging.getLoggerInstance("CACHES." + 
node.getCloud().getUser().getIdentifier()));
             logger.addLogger(LOG);
 
-            final Future<Integer> future = transcoderExecutor.submit(new 
Callable<Integer>() {
+            final Job thisJob = new Job(node.getCloud().getUser(), logger, 
list.size());
+            runningJobs.add(thisJob);
 
+            thisJob.setFuture(transcoderExecutor.submit(new 
Callable<Integer>() {
+
                     public Integer call() {
                         List<Transcoder> clones = new ArrayList<Transcoder>();
                         try {
@@ -185,16 +204,20 @@
                             logger.error(e.getMessage());
                         }
                         int result = 0;
+                        LOG.debug("Using " + clones);
                         for (Transcoder t : clones) {
-                            logger.service("Creating with " + t);
+                            LOG.debug("" + t);
+                            thisJob.setTranscoder(t);
                             Node cacheNode = 
CreateCachesProcessor.this.getCacheNode(node, t, logger);
                             File inFile = new File(FileServlet.getDirectory(), 
node.getStringValue("url"));
                             URI in = inFile.toURI();
                             StringBuilder buf = new StringBuilder();
                             
org.mmbase.storage.implementation.database.DatabaseStorageManager.appendDirectory(buf,
 cacheNode.getNumber(), "/");
                             
buf.append("/").append(cacheNode.getNumber()).append(".");
-                            
buf.append(ResourceLoader.getName(inFile.getName())).append(".").append(t.getExtension());
+                            
buf.append(ResourceLoader.getName(inFile.getName())).append(".").append(t.getFormat().toString().toLowerCase());
                             File outFile = new 
File(FileServlet.getDirectory(), buf.toString().replace("/", File.separator));
+                            logger.service("Transcoding with " + t + " for " + 
in + " -> " + outFile);
+
                             try {
                                 cacheNode.setIntValue("state", 
State.BUSY.getValue());
                                 cacheNode.setStringValue("url", 
buf.toString());
@@ -218,7 +241,7 @@
                                     }
                                 }
 
-                                t.transcode(in, outFile.toURI(), 
t.getLogger());
+                                t.transcode(in, outFile.toURI(), logger);
 
                                 cacheNode.setIntValue("state", 
State.DONE.getValue());
                                 cacheNode.commit();
@@ -231,21 +254,26 @@
                                 logger.service("Interrupted");
                                 break;
                             } catch (Exception e) {
-                                logger.error(e.getMessage());
+                                logger.error(e.getMessage(), e);
                             }
 
 
                         }
+                        logger.service("READY");
+                        runningJobs.remove(thisJob);
                         return result;
                     }
-                });
+                    })
+                );
 
+
+
             // If the node happens to be deleted before the future with cache 
creations is ready, cancel the future
             EventManager.getInstance().addEventListener(new 
WeakNodeEventListener() {
                     public void notify(NodeEvent event) {
                         if (event.getNodeNumber() == node.getNumber() && 
event.getType() == Event.TYPE_DELETE) {
-                            if (future.cancel(true)) {
-                                logger.info("Canceled " + future + " for " + 
event.getBuilderName() + " " + event.getNodeNumber());
+                            if (thisJob.future.cancel(true)) {
+                                logger.info("Canceled " + thisJob.future + " 
for " + event.getBuilderName() + " " + event.getNodeNumber());
                             }
                         }
                     }
@@ -259,5 +287,42 @@
 
     }
 
+    public class Job {
 
+        private final String user;
+        private final BufferedLogger logger;
+        private final int size;
+
+        private int busy = 0;;
+
+        private Future<Integer> future;
+        private Transcoder transcoder;
+
+        public Job(UserContext u, ChainedLogger chain, int s) {
+            user = u.getIdentifier();
+            logger = new BufferedLogger();
+            logger.setLevel(Level.DEBUG);
+            logger.setMaxSize(100);
+            logger.setMaxAge(60000);
+            chain.addLogger(logger);
+            size = s;
+        }
+        public void setFuture(Future<Integer> f) {
+            future = f;
+        }
+        public Logger getLogger() {
+            return logger;
+        }
+        public void setTranscoder(Transcoder t) {
+            transcoder = t;
+            busy++;
+        }
+        public Transcoder getTranscoder() {
+            return transcoder;
+        }
+        public String getProgress() {
+            return "" + busy + "/" + size;
+        }
+    }
+
 }

Added: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
                         (rev 0)
+++ 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
 2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,88 @@
+/*
+
+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 org.mmbase.applications.media.Format;
+import java.net.*;
+import java.io.*;
+import org.mmbase.util.externalprocess.*;
+import org.mmbase.util.WriterOutputStream;
+
+import org.mmbase.util.logging.*;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CommandTranscoder.java 35048 2009-05-08 13:10:31Z michiel $
+ */
+
+public abstract class AbstractTranscoder implements Transcoder {
+
+    public static final Logger LOG = 
Logging.getLoggerInstance(AbstractTranscoder.class);
+
+    protected boolean clone = false;
+
+    protected URI in;
+    protected URI out;
+
+    protected Format format;
+
+    public void setFormat(String f) {
+        format = Format.valueOf(f);
+    }
+
+    public Format getFormat() {
+        return format;
+    }
+
+    public String getKey() {
+        return getClass().getName();
+    }
+
+    public final void transcode(final URI in, final URI out, final Logger log) 
throws Exception {
+        if (in == null) throw new IllegalArgumentException();
+        if (out == null) throw new IllegalArgumentException();
+        this.in = in;
+        this.out = out;
+        if (! clone) {
+            throw new IllegalStateException("Clone this transcoder before 
useage!");
+        }
+        log.info("Transcoding " + in + " -> " + out);
+        transcode(log);
+    }
+
+    protected abstract void transcode(final Logger log) throws Exception;
+
+
+    public String toString() {
+        return getKey();
+    }
+
+    public URI getIn() {
+        return in;
+    }
+    public URI getOut() {
+        return out;
+    }
+
+    public AbstractTranscoder clone() {
+        try {
+            AbstractTranscoder c =  (AbstractTranscoder) super.clone();
+            c.clone = true;
+            return c;
+        } catch (CloneNotSupportedException cnse) {
+            throw new RuntimeException(cnse);
+        }
+    }
+
+
+
+}

Modified: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
  2009-05-15 13:28:11 UTC (rev 35196)
+++ 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
  2009-05-15 13:29:01 UTC (rev 35197)
@@ -25,12 +25,11 @@
  * @version $Id$
  */
 
-public abstract class CommandTranscoder implements Transcoder {
+public abstract class CommandTranscoder extends AbstractTranscoder {
 
-    private boolean clone = false;
-
     private CommandExecutor.Method method = new CommandExecutor.Method();
 
+
     public void setMethod(CommandExecutor.Method m) {
         method = m;
     }
@@ -40,34 +39,20 @@
     protected String[] getEnvironment() {
         return new String[0];
     }
-    protected abstract String[] getArguments(URI in, URI out);
+    protected abstract String[] getArguments();
 
     protected LoggerWriter getOutputWriter(Logger log) {
         return new LoggerWriter(log, Level.SERVICE);
     }
 
-    public String getKey() {
-        return getClass().getName();
-    }
-
-    public void  transcode(final URI in, final URI out, final Logger log) 
throws Exception {
-        if (! clone) throw new IllegalStateException("Clone this transcoder 
before useage!");
+    protected void transcode(final Logger log) throws Exception {
         OutputStream outStream = new WriterOutputStream(getOutputWriter(log), 
System.getProperty("file.encoding"));
-        CommandExecutor.execute(outStream, method, getCommand(), 
getArguments(in, out));
+        CommandExecutor.execute(outStream, method, getCommand(), 
getArguments());
     }
 
-    public String toString() {
-        return getKey();
-    }
 
     public CommandTranscoder clone() {
-        try {
-            CommandTranscoder c =  (CommandTranscoder) super.clone();
-            c.clone = true;
-            return c;
-        } catch (CloneNotSupportedException cnse) {
-            throw new RuntimeException(cnse);
-        }
+        return  (CommandTranscoder) super.clone();
     }
 
 

Modified: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
    2009-05-15 13:28:11 UTC (rev 35196)
+++ 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
    2009-05-15 13:29:01 UTC (rev 35197)
@@ -10,6 +10,7 @@
 package org.mmbase.streams.transcoders;
 
 
+import org.mmbase.applications.media.Format;
 import java.net.*;
 import java.io.*;
 import java.util.regex.*;
@@ -30,13 +31,13 @@
 
     private static final Logger log = 
Logging.getLoggerInstance(FFMpeg2TheoraTranscoder.class);
 
+    {
+        format = Format.OGV;
+    }
+
     private int videoQuality = 5;
     private int keyInt = 64;
 
-    public Logger getLogger() {
-        return log;
-    }
-
     public void setVideoQuality(int vq) {
         videoQuality = vq;
     }
@@ -56,7 +57,7 @@
     }
 
     @Override
-    protected String[] getArguments(URI in, URI out) {
+    protected String[] getArguments() {
         if (! in.getScheme().equals("file")) throw new 
UnsupportedOperationException();
         if (! out.getScheme().equals("file")) throw new 
UnsupportedOperationException();
 
@@ -89,9 +90,6 @@
         return w;
     }
 
-    public String getExtension() {
-        return "ogv";
-    }
 
     public static void main(String[] argv) throws Exception {
         CommandTranscoder transcoder = new FFMpeg2TheoraTranscoder();

Modified: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
   2009-05-15 13:28:11 UTC (rev 35196)
+++ 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
   2009-05-15 13:29:01 UTC (rev 35197)
@@ -9,7 +9,7 @@
 */
 package org.mmbase.streams.transcoders;
 
-
+import org.mmbase.applications.media.Format;
 import java.net.*;
 import java.io.*;
 import org.mmbase.util.logging.*;
@@ -26,24 +26,17 @@
 
     private static final Logger log = 
Logging.getLoggerInstance(FFMpegTranscoder.class);
 
-    public Logger getLogger() {
-        return log;
+    {
+        format = Format.AVI;
     }
 
-    private String extension = "avi";
-
-
-    public void setExtension(String e) {
-        extension = e;
-    }
-
     @Override
     protected  String getCommand() {
         return "ffmpeg";
     }
 
     @Override
-    protected String[] getArguments(URI in, URI out) {
+    protected String[] getArguments() {
         if (! in.getScheme().equals("file")) throw new 
UnsupportedOperationException();
         if (! out.getScheme().equals("file")) throw new 
UnsupportedOperationException();
 
@@ -65,20 +58,15 @@
                     if (PROGRESS.matcher(line).matches()) {
                         return Level.DEBUG;
                     }
-                    log.info("Not matching " + PROGRESS);
                     return null;
                 }
             };
 
-        log.info("Returning " + w);
+        log.debug("Returning " + w);
         return w;
     }
 
-    public String  getExtension() {
-        return extension;
-    }
 
-
     public static void main(String[] argv) throws Exception {
         CommandTranscoder transcoder = new FFMpeg2TheoraTranscoder();
         Logger logger = Logging.getLoggerInstance("FFMPEG");

Added: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
===================================================================
--- 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
                         (rev 0)
+++ 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
 2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,50 @@
+/*
+
+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 org.mmbase.applications.media.Format;
+import java.net.*;
+import java.io.*;
+
+import org.mmbase.util.logging.*;
+
+
+/**
+ * This is a transcoder that does nothing. It will simply stall infinitely, 
and log some bogus. This is for testing only.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CommandTranscoder.java 35048 2009-05-08 13:10:31Z michiel $
+ */
+
+public class InfiniteTranscoder extends AbstractTranscoder {
+    private static final Logger LOG = 
Logging.getLoggerInstance(InfiniteTranscoder.class);
+    private int seq = 0;
+    {
+        format = Format.UNKNOWN;
+    }
+
+    protected void transcode(final Logger log) throws Exception {
+        LOG.info("Logging to " + log);
+
+        while(true) {
+            Thread.sleep(1000);
+            if (Thread.currentThread().interrupted()) {
+                break;
+            }
+            LOG.info("Logging to " + log);
+
+            log.service("" + (seq++) + " " + in + " -> " + out);
+        }
+    }
+
+
+
+
+}

Modified: 
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java 
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java 
2009-05-15 13:29:01 UTC (rev 35197)
@@ -11,7 +11,7 @@
 
 
 import java.net.*;
-
+import org.mmbase.applications.media.Format;
 import org.mmbase.util.logging.*;
 
 
@@ -24,15 +24,16 @@
 
 public interface Transcoder  extends 
org.mmbase.util.PublicCloneable<Transcoder> {
 
-    Logger getLogger();
-
     String getKey();
 
-    String getExtension();
+    Format getFormat();
 
     /**
      *
      */
     void transcode(URI in, URI out, Logger logger) throws Exception;
 
+    URI getIn();
+    URI getOut();
+
 }

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

Reply via email to