diff -urp -x '*.class' tmp/src/at/anzac/jvctool/JVCTool.java src/at/anzac/jvctool/JVCTool.java
--- tmp/src/at/anzac/jvctool/JVCTool.java	2006-07-21 20:06:30.000000000 +0100
+++ src/at/anzac/jvctool/JVCTool.java	2014-06-08 01:18:23.630516613 +0100
@@ -316,7 +316,7 @@ public class JVCTool
       System.out.println("processing file '"+_srcDirName+fileNames[i]+"'");
       
       
-      moi.load(_srcDirName+FileUtil.getNameWithoutExtension(fileNames[i])+".MOI");
+      moi.load(_srcDirName+FileUtil.getNameWithoutExtension(fileNames[i]));
       if(_verbose)
       {
         System.out.println(moi);
@@ -338,13 +338,15 @@ public class JVCTool
       newName=StringUtil.replaceAll(newName,"$bandwidth$",moi.getbandwidth());
       
       // find next possible file name
-      do
+      tmpName=StringUtil.sanitizeFileName(StringUtil.replaceAll(newName,"$index$",decF.format(n)));
+      tmpName=StringUtil.sanitizeFileName(StringUtil.replaceAll(tmpName,"$$","$"));
+      File f = new File(_destDirName+tmpName);
+      if (f.exists())
       {
-        tmpName=StringUtil.sanitizeFileName(StringUtil.replaceAll(newName,"$index$",decF.format(n)));
-        tmpName=StringUtil.sanitizeFileName(StringUtil.replaceAll(tmpName,"$$","$"));
-        n++;
+        System.out.println(_destDirName+tmpName+" already exists, skipped not overwrite ");
+        continue;
       }
-      while(new File(_destDirName+tmpName).exists());
+      n++;
 
       newName=_destDirName+tmpName;
       
diff -urp -x '*.class' tmp/src/at/anzac/jvctool/MoiStructure.java src/at/anzac/jvctool/MoiStructure.java
--- tmp/src/at/anzac/jvctool/MoiStructure.java	2006-07-21 20:06:30.000000000 +0100
+++ src/at/anzac/jvctool/MoiStructure.java	2014-04-06 07:05:00.075613784 +0100
@@ -13,6 +13,7 @@
 package at.anzac.jvctool;
 
 import java.io.FileInputStream;
+import java.io.File;
 import java.text.*;
 
 /***********************************************************************************************************************
@@ -78,14 +79,37 @@ public class MoiStructure
     int fLength=0;
 
     byte[] fBuffer=new byte[1024];
-    FileInputStream f=new FileInputStream(fullFileName);
+    SimpleDateFormat sdf;// = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
+
+    File f2 = new File(fullFileName+".MOI");
+    if (!f2.exists()) {
+        System.out.println("File:"+ fullFileName + ".MOI not existe dummy MOI values");
+        aspectRatio=AspectRatio_16by9;
+        quality=Quality_F;
+        videoLength = 120000;
+        File file = new File(fullFileName+".MOD");
+        sdf = new SimpleDateFormat("yyyy");
+        year= Integer.parseInt(sdf.format(file.lastModified()));
+        sdf = new SimpleDateFormat("MM");
+        month= Integer.parseInt(sdf.format(file.lastModified()));
+        sdf = new SimpleDateFormat("dd");
+        day= Integer.parseInt(sdf.format(file.lastModified()));
+        sdf = new SimpleDateFormat("HH");
+        hour= Integer.parseInt(sdf.format(file.lastModified()));
+        sdf = new SimpleDateFormat("mm");
+        minute=Integer.parseInt(sdf.format(file.lastModified()));
+        return;
+    }
+        
+
+    FileInputStream f=new FileInputStream(fullFileName+".MOI");
     while(f.read(fBuffer, fLength, 1)!=-1)
     {
-      // System.out.println((int)fBuffer[fLength]+" ");
+      //System.out.println((int)fBuffer[fLength]+" ");
       fLength++;
       if(fBuffer.length==fLength) // realloc
       {
-        // System.out.println("realloc to size "+fBuffer.length*2);
+        //System.out.println("realloc to size "+fBuffer.length*2);
         byte[] temp=new byte[fBuffer.length*2];
         for(int n=0; n<fBuffer.length; n++)
         {
@@ -96,6 +120,7 @@ public class MoiStructure
     }
     f.close();
 
+    //System.out.println("realloc to size done");
     fileSize=BinaryNumbers.readUint(fBuffer, 0x0002);
     if(fileSize!=fLength) throw new Exception("filesize doesn't match container info "+fileSize+"!="+fLength);
 
@@ -124,9 +149,27 @@ public class MoiStructure
       case 0x5896 :
         quality=Quality_UF;
         break;
+    /* ULTRA FINE 720x576 pixels (8.5Mbps), invalid Quality value (17777) , is 0x4571
+    FINE 720x576 pixels (5.5Mbps), invalid Quality value (18548), is 0x4874
+    NORM 720x576 pixels (4.2Mbps), invalid Quality value (19972), is 0x4E04
+    ECO 352x288 pixels (1.5Mbps), invalid Quality value (25072), is 0x61F0*/
+      case 0x61F0 :
+        quality=Quality_E;
+        break;
+      case 0x4E04 :
+        quality=Quality_N;
+        break;
+      case 0x4874 :
+        quality=Quality_F;
+        break;
+      case 0x4571 :
+        quality=Quality_UF;
+        break;
       default :
-        throw new Exception("invalid Quality value ("+BinaryNumbers.readUshort(fBuffer, 0x00DA)+")");
+        System.out.println("invalid Quality value ("+BinaryNumbers.readUshort(fBuffer, 0x00DA)+")");
+/*         throw new Exception("invalid Quality value ("+BinaryNumbers.readUshort(fBuffer, 0x00DA)+")"); */
     }
+    //System.out.println("load done");
   }
 
   
@@ -166,16 +209,16 @@ public class MoiStructure
     switch(quality)
     {
       case Quality_E :
-        buff.append("\nQuality: economy (1 Mbit/s)");
+        buff.append("\nQuality: economy (1.5 Mbit/s)");
         break;
       case Quality_N :
-        buff.append("\nQuality: normal (4 Mbit/s)");
+        buff.append("\nQuality: normal (4.2 Mbit/s)");
         break;
       case Quality_F :
-        buff.append("\nQuality: fine (5,5 Mbit/s)");
+        buff.append("\nQuality: fine (5.5 Mbit/s)");
         break;
       case Quality_UF :
-        buff.append("\nQuality: ultrafine (8,4 Mbit/s)");
+        buff.append("\nQuality: ultrafine (8.5 Mbit/s)");
         break;
       default :
         buff.append("\nQuality: invalid value");
