<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word"><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2627" name=GENERATOR>
<STYLE>@page Section1 {size: 595.3pt 841.9pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: navy; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: navy; TEXT-DECORATION: underline
}
P.FileSystemFile {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
LI.FileSystemFile {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
DIV.FileSystemFile {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
SPAN.EmailStyle18 {
        COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal-compose
}
DIV.Section1 {
        page: Section1
}
</STYLE>
</HEAD>
<BODY lang=EN-GB vLink=navy link=blue bgColor=#ffffff>
<DIV><FONT face=Arial size=2>I always find it easier to wrap native code inside 
C++.NET managed code... so you can expose the managed interface and C++.NET lets 
you run native code within that code. I don't like using interop for porting 
entire API's... it's mainly good for one off function calls.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>You problem is probably because you are trying to 
get a native callback to invoke a managed one.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>You can find various utility functions to help with 
exposing native code to managed code here.</FONT></DIV>
<DIV><FONT face=Arial size=2><A 
href="http://svn.xiph.org/trunk/oggdsf/src/lib/helper/libiWrapper/">http://svn.xiph.org/trunk/oggdsf/src/lib/helper/libiWrapper/</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>If you go up a few directories and have a look 
around there's several examples of other native code being exposed to .NET in 
this way (look for directories ending in DotNET).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Specifically for the callback problem you need a 
callback proxy.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>An example of one is here</FONT></DIV>
<DIV><FONT face=Arial size=2><A 
href="http://svn.xiph.org/trunk/oggdsf/src/lib/player/libDSPlayDotNET/CMMLCallbackProxy.cpp">http://svn.xiph.org/trunk/oggdsf/src/lib/player/libDSPlayDotNET/CMMLCallbackProxy.cpp</A></FONT></DIV>
<DIV><FONT face=Arial size=2><A 
href="http://svn.xiph.org/trunk/oggdsf/src/lib/player/libDSPlayDotNET/CMMLCallbackProxy.h">http://svn.xiph.org/trunk/oggdsf/src/lib/player/libDSPlayDotNET/CMMLCallbackProxy.h</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Incidentally that library libDSPlay is a ready made 
.NET media player class... if you install my ogg codecs from <A 
href="http://www.illiminable.com/ogg/">www.illiminable.com/ogg/</A> you can use 
that .NET class to play any media file on windows including all the ogg files ie 
speex, vorbis flac and theora.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Zen.</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=Adam.Langley@adis.co.nz 
  href="mailto:Adam.Langley@adis.co.nz">Langley, Adam</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=vorbis@xiph.org 
  href="mailto:vorbis@xiph.org">vorbis@xiph.org</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, June 09, 2005 9:56 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [Vorbis] c# source to interop 
  call vorbisfile.dll</DIV>
  <DIV><BR></DIV>
  <DIV class=Section1>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hi,<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Can anyone tell me where I can get 
  sample C# code to call the native (win32) dll vorbisfile.dll to decode a 
  vorbis Stream?<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">I want the native performance of 
  this methodology, however Ive tried porting the invocation code to C# and keep 
  getting null reference errors when<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Calling 
  ov_open_callback.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Thanks<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;- 
  Adam<o:p></o:p></SPAN></FONT></P></DIV>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Vorbis mailing 
  list<BR>Vorbis@xiph.org<BR>http://lists.xiph.org/mailman/listinfo/vorbis<BR></BLOCKQUOTE></BODY></HTML>