// 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); } }
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); }
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); }
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); }
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); }
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); }
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); }
public Stream GetStream() { return(subfile.CreateReadStream()); }