package com.uvigo.tMaestro.SCOCreator.tool.properties.cellEditors.contentEditors;

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 *
 * @author Silvia
 */
public class creaXML {

    public creaXML(String oVideo) {

      System.out.println("creaXML "+oVideo);
        int indice = oVideo.lastIndexOf("\\");

        String nombre = oVideo.substring(indice + 1, oVideo.length());
       
        String ruta = oVideo.substring(0, indice + 1);
        //SSS talvez sea mejar crear unicamente un archivo para los videos, en 
        //lugar de uno por video
        String xml = ruta.concat(nombre.substring(0, nombre.length() - 3));
        xml = xml.concat("xml");
       
        File f = new File(xml);
        OutputStreamWriter outfile = null;
        try {
            f.createNewFile();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            OutputStream out = new FileOutputStream(f);
            outfile = new OutputStreamWriter(out);

            outfile.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n");
            outfile.write("<videoSlice videoName=\"");
            outfile.write(nombre);
            outfile.write("\">\r\n");


        } catch (IOException e) {
        }


        try {
            FileInputStream is = new FileInputStream(oVideo);
            ByteArrayOutputStream tot = new ByteArrayOutputStream();
            byte[] buf = new byte[1];
            byte[] comp = new byte[4];//8

            byte[] total = new byte[4];
            //indica inicio de un GOP
            comp[0] = 0x00;
            comp[1] = 0x00;
            comp[2] = 0x01;
            comp[3] = (byte) 0xB3;//00
            //comp[4]=(byte)0x16;
            //comp[5]=(byte)0x01;
            //comp[6]=(byte)0x20;
            //comp[7]=(byte)0x23;

            //byte[] buf = new byte[size];
            boolean fin = false;

            //los primeros ocho ya se q coinciden
            is.read(total);
            tot.write(total);
            
            int lon = 0, dos = 0, cuenta = 0;
            int contador = 0;
            while (!fin) {
                int coinciden = 0;
                boolean igual = true;
                for (int i = 0; i < 4; i++) {//8

                    lon = is.read(buf);
                    contador++;
                    total[i] = buf[0];
                    if (buf[0] != comp[i]) {
                        igual = false;
                        coinciden = i;
                        break;
                    }

                }

                if (igual) {
                    dos++;
                    // System.out.println("son igualesssssssssssssssssssssssssssss*******************************");

                   // if (dos < 6) {//con 8 se pierde
                if (contador<350000){
                       // cuenta++;
                    //System.out.println("Son iguales pero no dos veces: " + contador);

                    //sigo almacenando hasta conseguir una cadena grande
                    } else {


                        //System.out.println("Son iguales y dos veces, entrar en accion " + contador);
                        //escribo en el fichero y empiezo de nuevo
                        outfile.write("<slice>");
                        outfile.write(Integer.toString(contador));
                        outfile.write("</slice>\r\n");
                        dos = 0;
                        contador = 0;
                        tot.write(total);
                        tot.reset();
                    }


                } else {
                    //System.out.println("entro aqui pq no coinciden y voy a anadir "+coinciden);
                    tot.write(total, 0, coinciden + 1);

                }

                if (lon < 0) {
                    fin = true;
                }
            }



            outfile.write("</videoSlice>");
            outfile.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

       


    }
}
