Skip to content

Commit 0ce4095

Browse files
Update RenderingMode.hx
1 parent 598fae8 commit 0ce4095

File tree

1 file changed

+18
-45
lines changed

1 file changed

+18
-45
lines changed

src/ffmpeg/RenderingMode.hx

Lines changed: 18 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -95,18 +95,6 @@ class RenderingMode {
9595
pbos = [];
9696
pboTarget = 0x88EB; // GL_PIXEL_PACK_BUFFER
9797

98-
// Check if buffer mapping is available
99-
#if FV_LIME_FORK
100-
var extensions = GL.getSupportedExtensions();
101-
var hasMapBuffer = (extensions != null && extensions.indexOf("GL_ARB_pixel_buffer_object") != -1);
102-
103-
if (hasMapBuffer) {
104-
Sys.println("Using PBO with buffer mapping (fast path)");
105-
} else {
106-
Sys.println("Using PBO with getBufferSubData (slow path)");
107-
}
108-
#end
109-
11098
for (i in 0...PBO_BUFFERS) {
11199
var buf = GL.createBuffer();
112100
GL.bindBuffer(pboTarget, buf);
@@ -350,7 +338,7 @@ class RenderingMode {
350338

351339
// PBO readback with double buffering
352340
if (pbos.length == PBO_BUFFERS) {
353-
var readIndex = (pboIndex + 3) % PBO_BUFFERS;
341+
var readIndex = (pboIndex + 4) % PBO_BUFFERS;
354342
var writeIndex = pboIndex;
355343

356344
// Start async readback to write PBO
@@ -361,46 +349,31 @@ class RenderingMode {
361349
// Try buffer mapping (fastest)
362350
GL.bindBuffer(pboTarget, pbos[readIndex]);
363351

364-
/*#if FV_LIME_FORK
365-
var mappedPtr#if cpp :cpp.RawPointer<cpp.UInt8> #else :hl.NativeArray<hl.UI8> #end = @:privateAccess lime._internal.backend.native.NativeCFFI.fv_gl_map_buffer_range_pbo(frameSize);
366-
if (mappedPtr != null) {
352+
try {
353+
GL.getBufferSubData(pboTarget, 0, frameSize, buffer);
354+
367355
if (useNetworkStreaming) {
368356
NetworkStreamer.enqueueFrame(buffer);
369357
} else {
370358
enqueueFrame(buffer);
371359
}
360+
} catch (e:Dynamic) {
361+
Sys.println("getBufferSubData failed: " + e);
362+
363+
// Ultimate fallback: direct readPixels
372364
GL.bindBuffer(pboTarget, null);
373-
pboIndex = (pboIndex + 1) % PBO_BUFFERS;
374-
} else
375-
#end
376-
{*/
377-
// Fallback: Use getBufferSubData
378-
try {
379-
GL.getBufferSubData(pboTarget, 0, frameSize, buffer);
365+
GL.readPixels(0, 0, Main.VARIABLE_WIDTH, Main.VARIABLE_HEIGHT,
366+
GL.RGB, GL.UNSIGNED_SHORT_5_6_5, buffer);
380367

381-
if (useNetworkStreaming) {
382-
NetworkStreamer.enqueueFrame(buffer);
383-
} else {
384-
enqueueFrame(buffer);
385-
}
386-
} catch (e:Dynamic) {
387-
Sys.println("getBufferSubData failed: " + e);
388-
389-
// Ultimate fallback: direct readPixels
390-
GL.bindBuffer(pboTarget, null);
391-
GL.readPixels(0, 0, Main.VARIABLE_WIDTH, Main.VARIABLE_HEIGHT,
392-
GL.RGB, GL.UNSIGNED_SHORT_5_6_5, buffer);
393-
394-
if (useNetworkStreaming) {
395-
NetworkStreamer.enqueueFrame(buffer);
396-
} else {
397-
enqueueFrame(buffer);
398-
}
368+
if (useNetworkStreaming) {
369+
NetworkStreamer.enqueueFrame(buffer);
370+
} else {
371+
enqueueFrame(buffer);
399372
}
400-
401-
GL.bindBuffer(pboTarget, null);
402-
pboIndex = (pboIndex + 1) % PBO_BUFFERS;
403-
//}
373+
}
374+
375+
GL.bindBuffer(pboTarget, null);
376+
pboIndex = (pboIndex + 4) % PBO_BUFFERS;
404377
} else {
405378
// Direct synchronous read
406379
GL.readPixels(0, 0, Main.VARIABLE_WIDTH, Main.VARIABLE_HEIGHT,

0 commit comments

Comments
 (0)