This repository has been archived by the owner on Mar 30, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 639
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added shadows and vtables for callback interfaces.
- Loading branch information
1 parent
650436c
commit 89cf255
Showing
8 changed files
with
215 additions
and
0 deletions.
There are no files selected for viewing
16 changes: 16 additions & 0 deletions
16
Source/SharpDX.MediaFoundation/CaptureEngineOnEventCallback.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
[Shadow(typeof(CaptureEngineOnEventCallbackShadow))] | ||
internal partial interface CaptureEngineOnEventCallback | ||
{ | ||
void OnEvent(MediaEvent mediaEvent); | ||
} | ||
} | ||
#endif |
54 changes: 54 additions & 0 deletions
54
Source/SharpDX.MediaFoundation/CaptureEngineOnEventCallbackShadow.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Runtime.InteropServices; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
internal class CaptureEngineOnEventCallbackShadow : SharpDX.ComObjectShadow | ||
{ | ||
private static readonly CaptureEngineOnEventCallbackVtbl Vtbl = new CaptureEngineOnEventCallbackVtbl(); | ||
|
||
/// <summary> | ||
/// Return a pointer to the unmanaged version of this callback. | ||
/// </summary> | ||
/// <param name="callback">The callback.</param> | ||
/// <returns>A pointer to a shadow c++ callback</returns> | ||
public static IntPtr ToIntPtr(CaptureEngineOnEventCallback callback) | ||
{ | ||
return ToCallbackPtr<CaptureEngineOnEventCallback>(callback); | ||
} | ||
|
||
public class CaptureEngineOnEventCallbackVtbl : ComObjectVtbl | ||
{ | ||
public CaptureEngineOnEventCallbackVtbl() : base(1) | ||
{ | ||
AddMethod(new OnEventCallback(OnEventImpl)); | ||
} | ||
|
||
/// <unmanaged>HRESULT IMFCaptureEngineOnEventCallback::OnEvent([In] IMFMediaEvent* pEvent)</unmanaged> | ||
[UnmanagedFunctionPointer(CallingConvention.StdCall)] | ||
private delegate int OnEventCallback(IntPtr thisPtr, IntPtr mediaEvent); | ||
private static int OnEventImpl(IntPtr thisPtr, IntPtr mediaEvent) | ||
{ | ||
try | ||
{ | ||
var shadow = ToShadow<MediaEngineNotifyShadow>(thisPtr); | ||
var callback = (CaptureEngineOnEventCallback)shadow.Callback; | ||
var eventRef = new MediaEvent(mediaEvent); | ||
callback.OnEvent(eventRef); | ||
} | ||
catch (Exception exception) | ||
{ | ||
return (int)SharpDX.Result.GetResultFromException(exception); | ||
} | ||
return Result.Ok.Code; | ||
} | ||
} | ||
|
||
protected override CppObjectVtbl GetVtbl | ||
{ | ||
get { return Vtbl; } | ||
} | ||
} | ||
} | ||
#endif |
16 changes: 16 additions & 0 deletions
16
Source/SharpDX.MediaFoundation/CaptureEngineOnSampleCallback.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
[Shadow(typeof(CaptureEngineOnSampleCallbackShadow))] | ||
public partial interface CaptureEngineOnSampleCallback | ||
{ | ||
void OnSample(Sample sample); | ||
} | ||
} | ||
#endif |
16 changes: 16 additions & 0 deletions
16
Source/SharpDX.MediaFoundation/CaptureEngineOnSampleCallback2.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
[Shadow(typeof(CaptureEngineOnSampleCallback2Shadow))] | ||
public partial interface CaptureEngineOnSampleCallback2 | ||
{ | ||
void OnSynchronizedEvent(MediaEvent mediaEvent); | ||
} | ||
} | ||
#endif |
50 changes: 50 additions & 0 deletions
50
Source/SharpDX.MediaFoundation/CaptureEngineOnSampleCallback2Shadow.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Runtime.InteropServices; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
internal class CaptureEngineOnSampleCallback2Shadow : ComObjectShadow | ||
{ | ||
private static readonly CaptureEngineOnSampleCallback2Vtbl Vtbl = new CaptureEngineOnSampleCallback2Vtbl(); | ||
|
||
public class CaptureEngineOnSampleCallback2Vtbl : CaptureEngineOnSampleCallbackShadow.CaptureEngineOnSampleCallbackVtbl | ||
{ | ||
public CaptureEngineOnSampleCallback2Vtbl() | ||
:base(1) | ||
{ | ||
AddMethod(new OnSynchronizedEventCallback(OnSynchronizedEventImpl)); | ||
} | ||
|
||
/// <unmanaged>HRESULT IMFCaptureEngineOnEventCallback::OnEvent([In] IMFMediaEvent* pEvent)</unmanaged> | ||
[UnmanagedFunctionPointer(CallingConvention.StdCall)] | ||
private delegate int OnSynchronizedEventCallback(IntPtr thisPtr, IntPtr mediaEvent); | ||
private static int OnSynchronizedEventImpl(IntPtr thisPtr, IntPtr mediaEvent) | ||
{ | ||
try | ||
{ | ||
var shadow = ToShadow<CaptureEngineOnSampleCallback2Shadow>(thisPtr); | ||
var callback = (CaptureEngineOnSampleCallback2)shadow.Callback; | ||
var eventRef = new MediaEvent(mediaEvent); | ||
callback.OnSynchronizedEvent(eventRef); | ||
} | ||
catch (Exception exception) | ||
{ | ||
return (int)SharpDX.Result.GetResultFromException(exception); | ||
} | ||
return Result.Ok.Code; | ||
} | ||
} | ||
|
||
|
||
protected override CppObjectVtbl GetVtbl | ||
{ | ||
get | ||
{ | ||
return Vtbl; | ||
} | ||
} | ||
|
||
} | ||
} | ||
#endif |
54 changes: 54 additions & 0 deletions
54
Source/SharpDX.MediaFoundation/CaptureEngineOnSampleCallbackShadow.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#if DESKTOP_APP | ||
using System; | ||
using System.Runtime.InteropServices; | ||
|
||
namespace SharpDX.MediaFoundation | ||
{ | ||
internal class CaptureEngineOnSampleCallbackShadow : ComObjectShadow | ||
{ | ||
private static readonly CaptureEngineOnSampleCallbackVtbl Vtbl = new CaptureEngineOnSampleCallbackVtbl(0); | ||
|
||
/// <summary> | ||
/// Return a pointer to the unmanaged version of this callback. | ||
/// </summary> | ||
/// <param name="callback">The callback.</param> | ||
/// <returns>A pointer to a shadow c++ callback</returns> | ||
public static IntPtr ToIntPtr(CaptureEngineOnSampleCallback callback) | ||
{ | ||
return ToCallbackPtr<CaptureEngineOnSampleCallback>(callback); | ||
} | ||
|
||
public class CaptureEngineOnSampleCallbackVtbl : ComObjectVtbl | ||
{ | ||
public CaptureEngineOnSampleCallbackVtbl(int numberOfMethods) : base(numberOfMethods + 1) | ||
{ | ||
AddMethod(new OnSampleCallback(OnSampleImpl)); | ||
} | ||
|
||
/// <unmanaged>HRESULT IMFCaptureEngineOnEventCallback::OnEvent([In] IMFMediaEvent* pEvent)</unmanaged> | ||
[UnmanagedFunctionPointer(CallingConvention.StdCall)] | ||
private delegate int OnSampleCallback(IntPtr thisPtr, IntPtr sample); | ||
private static int OnSampleImpl(IntPtr thisPtr, IntPtr sample) | ||
{ | ||
try | ||
{ | ||
var shadow = ToShadow<CaptureEngineOnSampleCallbackShadow>(thisPtr); | ||
var callback = (CaptureEngineOnSampleCallback)shadow.Callback; | ||
var sampleRef = new Sample(sample); | ||
callback.OnSample(sampleRef); | ||
} | ||
catch (Exception exception) | ||
{ | ||
return (int)SharpDX.Result.GetResultFromException(exception); | ||
} | ||
return Result.Ok.Code; | ||
} | ||
} | ||
|
||
protected override CppObjectVtbl GetVtbl | ||
{ | ||
get { return Vtbl; } | ||
} | ||
} | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters