//This function needs to be called before //every connection /// <summary> /// Initializes and retrieves the ogg header packets from libogg and libvorbis. /// Must be called after <see cref="Init(Dictionary{string, string})"/> and before <see cref="Encode(byte[], byte[], int)"/> /// </summary> public void WriteHeader() { // Comments from vorbis ecoder example /* set up our packet->stream encoder */ /* pick a random serial number; that way we can more likely build * chained streams just by concatenation */ ogg_stream_init(osh.AddrOfPinnedObject(), m_rand.Next()); ogg_packet header = default(ogg_packet); ogg_packet header_comm = default(ogg_packet); ogg_packet header_code = default(ogg_packet); vorbis_analysis_headerout(vdh.AddrOfPinnedObject(), vch.AddrOfPinnedObject(), ref header, ref header_comm, ref header_code); ogg_stream_packetin(osh.AddrOfPinnedObject(), ref header); /* automatically placed in its own page */ ogg_stream_packetin(osh.AddrOfPinnedObject(), ref header_comm); ogg_stream_packetin(osh.AddrOfPinnedObject(), ref header_code); }
public static extern int ogg_stream_packetin(IntPtr os, ref ogg_packet op);
public static extern int vorbis_analysis_headerout(IntPtr v, IntPtr vc, ref ogg_packet op, ref ogg_packet op_comm, ref ogg_packet op_code);