Skip to content

Commit 3acb3e6

Browse files
authored
Merge pull request shimat#1183 from shimat/superres_remove_impl
remove impl classes of superres
2 parents 9cddac2 + 0c93444 commit 3acb3e6

File tree

4 files changed

+389
-568
lines changed

4 files changed

+389
-568
lines changed

src/OpenCvSharp/Modules/superres/FrameSource.cs

Lines changed: 77 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,38 @@ namespace OpenCvSharp
77
/// <summary>
88
///
99
/// </summary>
10-
public abstract class FrameSource : DisposableCvObject
10+
public class FrameSource : DisposableCvObject
1111
{
12+
private Ptr? ptrObj;
13+
1214
#region Init & Disposal
1315

16+
/// <summary>
17+
/// Creates instance from cv::Ptr&lt;T&gt; .
18+
/// ptr is disposed when the wrapper disposes.
19+
/// </summary>
20+
/// <param name="ptr"></param>
21+
private static FrameSource FromPtr(IntPtr ptr)
22+
{
23+
if (ptr == IntPtr.Zero)
24+
throw new OpenCvSharpException("Invalid FrameSource pointer");
25+
var obj = new FrameSource();
26+
var ptrObj = new Ptr(ptr);
27+
obj.ptrObj = ptrObj;
28+
obj.ptr = ptr;
29+
return obj;
30+
}
31+
32+
/// <summary>
33+
/// Releases managed resources
34+
/// </summary>
35+
protected override void DisposeManaged()
36+
{
37+
ptrObj?.Dispose();
38+
ptrObj = null;
39+
base.DisposeManaged();
40+
}
41+
1442
/// <summary>
1543
///
1644
/// </summary>
@@ -19,7 +47,7 @@ public static FrameSource CreateFrameSource_Empty()
1947
{
2048
NativeMethods.HandleException(
2149
NativeMethods.superres_createFrameSource_Empty(out var ptr));
22-
return FrameSourceImpl.FromPtr(ptr);
50+
return FromPtr(ptr);
2351
}
2452

2553
/// <summary>
@@ -36,7 +64,7 @@ public static FrameSource CreateFrameSource_Video(string fileName)
3664

3765
NativeMethods.HandleException(
3866
NativeMethods.superres_createFrameSource_Video(fileName, out var ptr));
39-
return FrameSourceImpl.FromPtr(ptr);
67+
return FromPtr(ptr);
4068
}
4169

4270
/// <summary>
@@ -53,7 +81,7 @@ public static FrameSource CreateFrameSource_Video_CUDA(string fileName)
5381

5482
NativeMethods.HandleException(
5583
NativeMethods.superres_createFrameSource_Video_CUDA(fileName, out var ptr));
56-
return FrameSourceImpl.FromPtr(ptr);
84+
return FromPtr(ptr);
5785
}
5886

5987
/// <summary>
@@ -65,24 +93,65 @@ public static FrameSource CreateFrameSource_Camera(int deviceId)
6593
{
6694
NativeMethods.HandleException(
6795
NativeMethods.superres_createFrameSource_Camera(deviceId, out var ptr));
68-
return FrameSourceImpl.FromPtr(ptr);
96+
return FromPtr(ptr);
6997
}
7098

7199
#endregion
72100

73101
#region Methods
74-
102+
75103
/// <summary>
76104
///
77105
/// </summary>
78106
/// <param name="frame"></param>
79-
public abstract void NextFrame(OutputArray frame);
107+
public virtual void NextFrame(OutputArray frame)
108+
{
109+
ThrowIfDisposed();
110+
if (frame == null)
111+
throw new ArgumentNullException(nameof(frame));
112+
frame.ThrowIfNotReady();
113+
114+
NativeMethods.HandleException(
115+
NativeMethods.superres_FrameSource_nextFrame(ptr, frame.CvPtr));
116+
117+
frame.Fix();
118+
GC.KeepAlive(this);
119+
GC.KeepAlive(frame);
120+
}
80121

81122
/// <summary>
82123
///
83124
/// </summary>
84-
public abstract void Reset();
125+
public virtual void Reset()
126+
{
127+
ThrowIfDisposed();
128+
NativeMethods.HandleException(
129+
NativeMethods.superres_FrameSource_reset(ptr));
130+
GC.KeepAlive(this);
131+
}
85132

86133
#endregion
134+
135+
internal class Ptr : OpenCvSharp.Ptr
136+
{
137+
public Ptr(IntPtr ptr) : base(ptr)
138+
{
139+
}
140+
141+
public override IntPtr Get()
142+
{
143+
NativeMethods.HandleException(
144+
NativeMethods.superres_Ptr_FrameSource_get(ptr, out var ret));
145+
GC.KeepAlive(this);
146+
return ret;
147+
}
148+
149+
protected override void DisposeUnmanaged()
150+
{
151+
NativeMethods.HandleException(
152+
NativeMethods.superres_Ptr_FrameSource_delete(ptr));
153+
base.DisposeUnmanaged();
154+
}
155+
}
87156
}
88157
}

src/OpenCvSharp/Modules/superres/FrameSourceImpl.cs

Lines changed: 0 additions & 122 deletions
This file was deleted.

0 commit comments

Comments
 (0)