本文整理汇总了C#中StreamState.Init方法的典型用法代码示例。如果您正苦于以下问题:C# StreamState.Init方法的具体用法?C# StreamState.Init怎么用?C# StreamState.Init使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StreamState
的用法示例。
在下文中一共展示了StreamState.Init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: main
static byte[] convbuffer = new byte[convsize]; // take 8k out of the data segment, not the stack
#endregion Fields
#region Methods
public static void main(String[] arg)
{
//Stream output = File.OpenWrite("output.bin");
var Name = "Output.ogg";
var OutputBuffer = new MemoryStream();
Stream input = null;
//java.io.InputStream input=System.In;
if (arg.Length > 0)
{
try
{
Name = arg[0];
input = File.OpenRead(arg[0]);
}
catch (Exception e)
{
Console.Error.WriteLine(e);
}
}
else
{
throw (new NotImplementedException("aaaa"));
}
if (input == null) throw (new NotImplementedException("bbb"));
var SyncState = new SyncState(); // sync and verify incoming physical bitstream
var StreamState = new StreamState(); // take physical pages, weld into a logical stream of packets
var Page = new Page(); // one Ogg bitstream page. Vorbis packets are inside
var Packet = new Packet(); // one raw packet of data for decode
var Info = new Info(); // struct that stores all the static vorbis bitstream settings
var Comment = new Comment(); // struct that stores all the bitstream user comments
var DspState = new DspState(); // central working state for the packet->PCM decoder
var Block = new Block(DspState); // local working space for packet->PCM decode
byte[] buffer;
int bytes = 0;
// Decode setup
SyncState.Init(); // Now we can read pages
// we repeat if the bitstream is chained
while (true)
{
int eos = 0;
// grab some data at the head of the stream. We want the first page
// (which is guaranteed to be small and only contain the Vorbis
// stream initial header) We need the first page to get the stream
// serialno.
// submit a 4k block to libvorbis' Ogg layer
int index = SyncState.Buffer(4096);
buffer = SyncState.Data;
try
{
bytes = input.Read(buffer, index, 4096);
}
catch (Exception e)
{
Console.Error.WriteLine(e);
return;
}
SyncState.wrote(bytes);
// Get the first page.
int _result = SyncState.PageOut(Page);
if (_result != 1)
{
// have we simply run out of data? If so, we're done.
if (bytes < 4096) break;
Console.WriteLine(bytes + "; " + _result);
//File.WriteAllBytes();
// error case. Must not be Vorbis data
Console.Error.WriteLine("Input does not appear to be an Ogg bitstream.");
return;
}
// Get the serial number and set up the rest of decode.
// serialno first; use it to set up a logical stream
StreamState.Init(Page.serialno());
// extract the initial header from the first page and verify that the
// Ogg bitstream is in fact Vorbis data
// I handle the initial header first instead of just having the code
// read all three Vorbis headers at once because reading the initial
// header is an easy way to identify a Vorbis bitstream and it's
// useful to see that functionality seperated out.
Info.init();
//.........这里部分代码省略.........