Example #1
0
    // simply return contents of the file (if applicable applying its own compression)
    // idx and off are values where the file will be stored at - so the callee
    // better write it down to talk about it later via meta()
    //
    // if the file wishes to flush current chunk it is in, it can return true
    public void GetData(ChunkBuilder cb, Stream os)
    {
        cb.FlushOnOverflow((int)orig_size, MAXSIZE, os);
        cb.lastf = this;
        ushort chp = cb.chpos;

        chpos     = chp;
        chunk_idx = cb.idx;
        chunk_off = (uint)cb.buffer.Length;
        if (chpos == 0)
        {
            Debug.Assert(chunk_off == 0);
        }
        var src = pp.CreateReadStream();

        if (naked)
        {
            var wav = new byte[orig_size];
            src.Read(wav, 0, (int)orig_size);
            encodeWavToOpus(wav, cb.buffer);
            //encodeWavToFLAC(wav, cb.buffer);
        }
        else
        {
            src.CopyTo(cb.buffer);
        }
    }
Example #2
0
 public static ToolOutputParser OpenToolOutput([DefaultVar] ppParser parser, string name)
 {
     for (int i = 0; i < parser.Subfiles.Count; i++)
     {
         if (parser.Subfiles[i].Name == name)
         {
             IReadFile subfile = parser.Subfiles[i] as IReadFile;
             if (subfile != null)
             {
                 return(new ToolOutputParser(subfile.CreateReadStream(), subfile.Name));
             }
             IWriteFile writeFile = parser.Subfiles[i] as IWriteFile;
             if (writeFile != null)
             {
                 using (MemoryStream memStream = new MemoryStream())
                 {
                     writeFile.WriteTo(memStream);
                     memStream.Position = 0;
                     ToolOutputParser outParser = new ToolOutputParser(memStream, writeFile.Name);
                     outParser.readFromOtherParser = true;
                     return(outParser);
                 }
             }
             break;
         }
     }
     return(null);
 }
Example #3
0
File: sviex.cs Project: kkdevs/sb3u
        public static sviParser OpenSVI([DefaultVar] ppParser parser, string name)
        {
            for (int i = 0; i < parser.Subfiles.Count; i++)
            {
                if (parser.Subfiles[i].Name == name)
                {
                    IReadFile subfile = parser.Subfiles[i] as IReadFile;
                    if (subfile != null)
                    {
                        return(new sviParser(subfile.CreateReadStream(), subfile.Name));
                    }
                    if (parser.Subfiles[i] is sviParser)
                    {
                        return((sviParser)parser.Subfiles[i]);
                    }
                    else if (parser.Subfiles[i] is ToolOutputParser)
                    {
                        ToolOutputParser toolOutputParser = (ToolOutputParser)parser.Subfiles[i];
                        return(new sviParser(new MemoryStream(toolOutputParser.contents), toolOutputParser.Name));
                    }

                    break;
                }
            }
            return(null);
        }
Example #4
0
    public ChunkFile(IReadFile _pp, string parent, uint size)
    {
        pp   = _pp;
        name = (parent + "/" + pp.Name);

        if (name.ToLower().EndsWith(".wav"))
        {
            var tmp = new byte[44];
            pp.CreateReadStream().Read(tmp, 0, 44);
            if (checkWav(tmp) != 0)
            {
                naked  = true;
                flags |= Flags.OPUS;
            }
        }
        if (!naked)
        {
            flags |= Flags.ZSTD;
        }
        orig_size = size;
        var hasher = MD5.Create();

        md5 = BitConverter.ToInt64(hasher.ComputeHash(pp.CreateReadStream()), 0);
    }
Example #5
0
        public static reaParser OpenREA([DefaultVar] fpkParser parser, string name)
        {
            for (int i = 0; i < parser.Subfiles.Count; i++)
            {
                if (parser.Subfiles[i].Name == name)
                {
                    IReadFile subfile = parser.Subfiles[i] as IReadFile;
                    if (subfile != null)
                    {
                        return(new reaParser(subfile.CreateReadStream(), subfile.Name, parser.FilePath));
                    }

                    break;
                }
            }
            return(null);
        }
Example #6
0
        public static lstParser OpenLST([DefaultVar] ppParser parser, string name)
        {
            for (int i = 0; i < parser.Subfiles.Count; i++)
            {
                if (parser.Subfiles[i].Name == name)
                {
                    IReadFile subfile = parser.Subfiles[i] as IReadFile;
                    if (subfile != null)
                    {
                        return(new lstParser(subfile.CreateReadStream(), subfile.Name));
                    }

                    break;
                }
            }
            return(null);
        }
Example #7
0
        public static Stream GetReadStream(IWriteFile iw)
        {
            Stream str;

            if (iw is MemSubfile)
            {
                MemSubfile m = iw as MemSubfile;
                str = m.CreateReadStream();
            }
            else if (iw is IReadFile)
            {
                IReadFile p = iw as IReadFile;
                str = p.CreateReadStream();
            }
            else
            {
                str = new MemoryStream();
                iw.WriteTo(str);

                str.Position = 0;
            }

            return(str);
        }
Example #8
0
 public Stream GetStream()
 {
     return(subfile.CreateReadStream());
 }