Skip to content

Commit dbd3133

Browse files
authored
Merge pull request #1307 from jangernert/net_disparity_transform
[NET wrapper] depth<->disparity transform processing block
2 parents 0945c25 + 567fa48 commit dbd3133

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

wrappers/csharp/Intel.RealSense/NativeMethods.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ internal static extern int rs2_poll_for_frame(IntPtr queue,
149149
[DllImport(dllName, CallingConvention = CallingConvention.Cdecl)]
150150
internal static extern IntPtr rs2_create_spatial_filter_block([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Helpers.ErrorMarshaler))] out object error);
151151

152+
[DllImport(dllName, CallingConvention = CallingConvention.Cdecl)]
153+
internal static extern IntPtr rs2_create_disparity_transform_block(byte transform_to_disparity, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Helpers.ErrorMarshaler))] out object error);
154+
152155

153156
#endregion
154157
#region rs_option

wrappers/csharp/Intel.RealSense/Processing.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,28 @@ public FrameSet Process(FrameSet original)
103103
FrameQueue queue;
104104
}
105105

106+
public class DisparityTransform : ProcessingBlock
107+
{
108+
public DisparityTransform(bool transform_to_disparity = true)
109+
{
110+
object error;
111+
byte transform_direction = transform_to_disparity ? (byte)1 : (byte)0;
112+
m_instance = new HandleRef(this, NativeMethods.rs2_create_disparity_transform_block(transform_direction, out error));
113+
queue = new FrameQueue();
114+
NativeMethods.rs2_start_processing_queue(m_instance.Handle, queue.m_instance.Handle, out error);
115+
}
116+
117+
public VideoFrame ApplyFilter(VideoFrame original)
118+
{
119+
object error;
120+
NativeMethods.rs2_frame_add_ref(original.m_instance.Handle, out error);
121+
NativeMethods.rs2_process_frame(m_instance.Handle, original.m_instance.Handle, out error);
122+
return queue.WaitForFrame() as VideoFrame;
123+
}
124+
125+
FrameQueue queue;
126+
}
127+
106128
public class DecimationFilter : ProcessingBlock
107129
{
108130
public DecimationFilter()

0 commit comments

Comments
 (0)