Skip to content

Commit 937bf8b

Browse files
committed
Bypass buffer pool into the core.
1 parent bfb416f commit 937bf8b

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

FSharp.FlashCap/CaptureDeviceDescriptorExtension.fs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ module public CaptureDeviceDescriptorExtension =
3939
?ct: CancellationToken) : Async<CaptureDevice> =
4040
self.InternalOpenWithFrameProcessorAsync(
4141
characteristics, TranscodeFormats.Auto,
42-
new DelegatedQueuingProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
42+
new DelegatedQueuingProcessor(pixelBufferArrived, 1, self.defaultBufferPool),
4343
asCT ct) |> Async.AwaitTask
4444

4545
member self.openDevice(
@@ -50,7 +50,7 @@ module public CaptureDeviceDescriptorExtension =
5050
self.InternalOpenWithFrameProcessorAsync(
5151
characteristics,
5252
transcodeFormat,
53-
new DelegatedQueuingProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
53+
new DelegatedQueuingProcessor(pixelBufferArrived, 1, self.defaultBufferPool),
5454
asCT ct) |> Async.AwaitTask
5555

5656
member self.openDevice(
@@ -64,8 +64,8 @@ module public CaptureDeviceDescriptorExtension =
6464
characteristics,
6565
transcodeFormat,
6666
(match isScattering with
67-
| true -> (new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)
68-
| false -> (new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)),
67+
| true -> (new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)
68+
| false -> (new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)),
6969
asCT ct) |> Async.AwaitTask
7070

7171
//////////////////////////////////////////////////////////////////////////////////
@@ -77,7 +77,7 @@ module public CaptureDeviceDescriptorExtension =
7777
self.InternalOpenWithFrameProcessorAsync(
7878
characteristics,
7979
TranscodeFormats.Auto,
80-
new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, 1, new DefaultBufferPool()),
80+
new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, 1, self.defaultBufferPool),
8181
asCT ct) |> Async.AwaitTask
8282

8383
member self.openDevice(
@@ -88,7 +88,7 @@ module public CaptureDeviceDescriptorExtension =
8888
self.InternalOpenWithFrameProcessorAsync(
8989
characteristics,
9090
transcodeFormat,
91-
new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, 1, new DefaultBufferPool()),
91+
new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, 1, self.defaultBufferPool),
9292
asCT ct) |> Async.AwaitTask
9393

9494
member self.openDevice(
@@ -102,8 +102,8 @@ module public CaptureDeviceDescriptorExtension =
102102
characteristics,
103103
transcodeFormat,
104104
(match isScattering with
105-
| true -> (new DelegatedScatteringTaskProcessor(asTask pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)
106-
| false -> (new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)),
105+
| true -> (new DelegatedScatteringTaskProcessor(asTask pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)
106+
| false -> (new DelegatedQueuingTaskProcessor(asTask pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)),
107107
asCT ct) |> Async.AwaitTask
108108

109109
//////////////////////////////////////////////////////////////////////////////////
@@ -116,7 +116,7 @@ module public CaptureDeviceDescriptorExtension =
116116
characteristics,
117117
TranscodeFormats.Auto,
118118
(new DelegatedQueuingProcessor(
119-
new PixelBufferArrivedDelegate(observerProxy.OnPixelBufferArrived), 1, new DefaultBufferPool())), asCT ct) |> Async.AwaitTask
119+
new PixelBufferArrivedDelegate(observerProxy.OnPixelBufferArrived), 1, self.defaultBufferPool)), asCT ct) |> Async.AwaitTask
120120
return new ObservableCaptureDevice(captureDevice, observerProxy)
121121
}
122122

@@ -129,7 +129,7 @@ module public CaptureDeviceDescriptorExtension =
129129
characteristics,
130130
transcodeFormat,
131131
(new DelegatedQueuingProcessor(
132-
new PixelBufferArrivedDelegate(observerProxy.OnPixelBufferArrived), 1, new DefaultBufferPool())), asCT ct) |> Async.AwaitTask
132+
new PixelBufferArrivedDelegate(observerProxy.OnPixelBufferArrived), 1, self.defaultBufferPool)), asCT ct) |> Async.AwaitTask
133133
return new ObservableCaptureDevice(captureDevice, observerProxy)
134134
}
135135

@@ -145,8 +145,8 @@ module public CaptureDeviceDescriptorExtension =
145145
characteristics,
146146
transcodeFormat,
147147
(match isScattering with
148-
| true -> (new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)
149-
| false -> (new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :> FrameProcessor)), asCT ct) |> Async.AwaitTask
148+
| true -> (new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)
149+
| false -> (new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, self.defaultBufferPool) :> FrameProcessor)), asCT ct) |> Async.AwaitTask
150150
return new ObservableCaptureDevice(captureDevice, observerProxy)
151151
}
152152

FlashCap.Core/CaptureDeviceDescriptor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public abstract class CaptureDeviceDescriptor
4646
{
4747
private readonly AsyncLock locker = new();
4848

49-
protected readonly BufferPool DefaultBufferPool;
49+
internal readonly BufferPool defaultBufferPool;
5050

5151
protected CaptureDeviceDescriptor(
5252
string name, string description,
@@ -56,7 +56,7 @@ protected CaptureDeviceDescriptor(
5656
this.Name = name;
5757
this.Description = description;
5858
this.Characteristics = characteristics;
59-
this.DefaultBufferPool = defaultBufferPool;
59+
this.defaultBufferPool = defaultBufferPool;
6060
}
6161

6262
public abstract object Identity { get; }

FlashCap/CaptureDeviceDescriptorExtension.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static Task<CaptureDevice> OpenAsync(
3434
CancellationToken ct = default) =>
3535
descriptor.OpenWithFrameProcessorAsync(
3636
characteristics, TranscodeFormats.Auto,
37-
new DelegatedQueuingProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
37+
new DelegatedQueuingProcessor(pixelBufferArrived, 1, descriptor.defaultBufferPool),
3838
ct);
3939

4040
public static Task<CaptureDevice> OpenAsync(
@@ -45,7 +45,7 @@ public static Task<CaptureDevice> OpenAsync(
4545
CancellationToken ct = default) =>
4646
descriptor.OpenWithFrameProcessorAsync(
4747
characteristics, transcodeFormat,
48-
new DelegatedQueuingProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
48+
new DelegatedQueuingProcessor(pixelBufferArrived, 1, descriptor.defaultBufferPool),
4949
ct);
5050

5151
public static Task<CaptureDevice> OpenAsync(
@@ -59,8 +59,8 @@ public static Task<CaptureDevice> OpenAsync(
5959
descriptor.OpenWithFrameProcessorAsync(
6060
characteristics, transcodeFormat,
6161
isScattering ?
62-
new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :
63-
new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()),
62+
new DelegatedScatteringProcessor(pixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool) :
63+
new DelegatedQueuingProcessor(pixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool),
6464
ct);
6565

6666
//////////////////////////////////////////////////////////////////////////////////
@@ -72,7 +72,7 @@ public static Task<CaptureDevice> OpenAsync(
7272
CancellationToken ct = default) =>
7373
descriptor.OpenWithFrameProcessorAsync(
7474
characteristics, TranscodeFormats.Auto,
75-
new DelegatedQueuingTaskProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
75+
new DelegatedQueuingTaskProcessor(pixelBufferArrived, 1, descriptor.defaultBufferPool),
7676
ct);
7777

7878
public static Task<CaptureDevice> OpenAsync(
@@ -83,7 +83,7 @@ public static Task<CaptureDevice> OpenAsync(
8383
CancellationToken ct = default) =>
8484
descriptor.OpenWithFrameProcessorAsync(
8585
characteristics, transcodeFormat,
86-
new DelegatedQueuingTaskProcessor(pixelBufferArrived, 1, new DefaultBufferPool()),
86+
new DelegatedQueuingTaskProcessor(pixelBufferArrived, 1, descriptor.defaultBufferPool),
8787
ct);
8888

8989
public static Task<CaptureDevice> OpenAsync(
@@ -97,8 +97,8 @@ public static Task<CaptureDevice> OpenAsync(
9797
descriptor.OpenWithFrameProcessorAsync(
9898
characteristics, transcodeFormat,
9999
isScattering ?
100-
new DelegatedScatteringTaskProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :
101-
new DelegatedQueuingTaskProcessor(pixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()),
100+
new DelegatedScatteringTaskProcessor(pixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool) :
101+
new DelegatedQueuingTaskProcessor(pixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool),
102102
ct);
103103

104104
//////////////////////////////////////////////////////////////////////////////////
@@ -111,7 +111,7 @@ public static async Task<ObservableCaptureDevice> AsObservableAsync(
111111
var observerProxy = new ObservableCaptureDevice.ObserverProxy();
112112
var captureDevice = await descriptor.OpenWithFrameProcessorAsync(
113113
characteristics, TranscodeFormats.Auto,
114-
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, 1, new DefaultBufferPool()),
114+
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, 1, descriptor.defaultBufferPool),
115115
ct).
116116
ConfigureAwait(false);
117117

@@ -127,7 +127,7 @@ public static async Task<ObservableCaptureDevice> AsObservableAsync(
127127
var observerProxy = new ObservableCaptureDevice.ObserverProxy();
128128
var captureDevice = await descriptor.OpenWithFrameProcessorAsync(
129129
characteristics, transcodeFormat,
130-
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, 1, new DefaultBufferPool()),
130+
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, 1, descriptor.defaultBufferPool),
131131
ct).
132132
ConfigureAwait(false);
133133

@@ -146,8 +146,8 @@ public static async Task<ObservableCaptureDevice> AsObservableAsync(
146146
var captureDevice = await descriptor.OpenWithFrameProcessorAsync(
147147
characteristics, transcodeFormat,
148148
isScattering ?
149-
new DelegatedScatteringProcessor(observerProxy.OnPixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()) :
150-
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, maxQueuingFrames, new DefaultBufferPool()),
149+
new DelegatedScatteringProcessor(observerProxy.OnPixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool) :
150+
new DelegatedQueuingProcessor(observerProxy.OnPixelBufferArrived, maxQueuingFrames, descriptor.defaultBufferPool),
151151
ct).
152152
ConfigureAwait(false);
153153

0 commit comments

Comments
 (0)