2016-02-22 59 views
0

我以前AutoGen產生的ffmpeg的包裝現在我要爲AVFormatContext interrupt_callback回調的interrupt_callback,但我不知道如何C#FFmpeg的包裝 - 如何設置AVFormatContext

這是生成的代碼AVFormatContext

public unsafe partial struct AVFormatContext 
{ 
    public AVIOInterruptCB @interrupt_callback;   
} 

這生成的代碼AVIOInterruptCB

public unsafe struct AVIOInterruptCB 
{ 
    public IntPtr @callback; 
    public void* @opaque; 
} 

回調應被設置爲回調AVIOInter領域ruptCB

我用這個代碼和它的工作,但我想用它像一個委託

var pFormatContext = FFmpegWrapper.avformat_alloc_context(); 
Action<IntPtr> action = ptr => 
     { 
      //Do something 
     }; 
pFormatContext->interrupt_callback.callback = action.Method.MethodHandle.GetFunctionPointer(); 

任何建議感謝

回答

0

我有同樣的問題,你的問題幫我解決這個問題。 我只是你的轉化成行動代表:

unsafe public delegate int InterruptCallback(void* opaque); 

...

pFormatContext = ffmpeg.avformat_alloc_context(); 
InterruptCallback action = ptr => 
{ 
    // if timeout return 1 to unblock 
    return 0; 
}; 
pFormatContext->interrupt_callback.callback = action.Method.MethodHandle.GetFunctionPointer();