chore: move CameraView logic to itself

This commit is contained in:
2026-01-23 08:42:58 +03:00
parent 8896629ce2
commit d4e7c300f4
8 changed files with 100 additions and 139 deletions
+12 -26
View File
@@ -680,7 +680,7 @@ public class CameraService : IDisposable
var result = request.AddBuffer(_viewFinderStream, buffer);
if (result < 0)
throw new Exception("Error while request create");
_logger.LogDebug("Request(s) created");
// _logger.LogDebug("Request(s) created");
effectiveCancellationToken.ThrowIfCancellationRequested();
@@ -694,20 +694,20 @@ public class CameraService : IDisposable
if (buffer.Metadata.Status == FrameMetadata.StatusEnum.FrameError ||
buffer.Metadata.Status == FrameMetadata.StatusEnum.FrameStartup)
{
_logger.LogDebug("Request buffers status: {}", buffer.Metadata.Status);
// _logger.LogDebug("Request buffers status: {}", buffer.Metadata.Status);
e.Request.Reuse(Request.ReuseFlagEnum.ReuseBuffers);
var result = _camera.QueueRequest(e.Request);
if (result >= 0)
return;
}
_logger.LogDebug("Request complited: \n\tStatus: {}\n\tCookie: {}\n\tSequence: {}\n\tHasPendingBuffers: {}", e.Request.Status, e.Request.Cookie, e.Request.Sequence, e.Request.HasPendingBuffers);
_logger.LogDebug("Request buffer: \n\tStatus: {} \n\tCookie: {} \n\tSequence: {} \n\tTimestamp: {}", buffer.Metadata.Status, buffer.Cookie, buffer.Metadata.Sequence, buffer.Metadata.Timestamp);
_logger.LogDebug("Request buffer planes: ");
foreach (var (i, plane) in buffer.Metadata.Planes.Enumerate())
_logger.LogDebug("Plane[{}]: bytes used: 0x{:X}", i, plane.BytesUsed);
foreach (var (i, plane) in buffer.Planes.Enumerate())
_logger.LogDebug("Plane[{}]: \n\tFd: 0x{:X} \n\tOffset: 0x{:X} \n\tLength: 0x{:X} \n\tKInvalidOffset: 0x{:X}", i, plane.Fd.Get(), plane.Offset, plane.Length, plane.KInvalidOffset);
// _logger.LogDebug("Request complited: \n\tStatus: {}\n\tCookie: {}\n\tSequence: {}\n\tHasPendingBuffers: {}", e.Request.Status, e.Request.Cookie, e.Request.Sequence, e.Request.HasPendingBuffers);
// _logger.LogDebug("Request buffer: \n\tStatus: {} \n\tCookie: {} \n\tSequence: {} \n\tTimestamp: {}", buffer.Metadata.Status, buffer.Cookie, buffer.Metadata.Sequence, buffer.Metadata.Timestamp);
// _logger.LogDebug("Request buffer planes: ");
// foreach (var (i, plane) in buffer.Metadata.Planes.Enumerate())
// _logger.LogDebug("Plane[{}]: bytes used: 0x{:X}", i, plane.BytesUsed);
// foreach (var (i, plane) in buffer.Planes.Enumerate())
// _logger.LogDebug("Plane[{}]: \n\tFd: 0x{:X} \n\tOffset: 0x{:X} \n\tLength: 0x{:X} \n\tKInvalidOffset: 0x{:X}", i, plane.Fd.Get(), plane.Offset, plane.Length, plane.KInvalidOffset);
effectiveCancellationToken.ThrowIfCancellationRequested();
@@ -722,26 +722,12 @@ public class CameraService : IDisposable
_camera.RequestCompleted -= RequestCompleted;
throw new Exception("Error while request queue");
}
_logger.LogDebug("Request queued");
// _logger.LogDebug("Request queued");
await cts.Task.WaitAsync(effectiveCancellationToken);
_camera.RequestCompleted -= RequestCompleted;
_logger.LogDebug("Request complited");
// _logger.LogDebug("Request complited");
return new (buffer, _viewFinderStreamConfiguration);
}
public void Test()
{
var config = _viewFinderStreamConfiguration!;
var size = config.Size;
var fourcc = config.PixelFormat.Fourcc;
var modifier = config.PixelFormat.Modifier;
var primariesEnum = config.ColorSpace?.Primaries;
var transferFunctionEnum = config.ColorSpace?.TransferFunction;
var ycbcrEncodingEnum = config.ColorSpace?.YcbcrEncoding;
var rangeEnum = config.ColorSpace?.Range;
var stride = config.Stride;
_logger.LogInformation($"Cannot find decoder for fourcc=0x{fourcc:X}({new string(BitConverter.GetBytes(fourcc).Select(b => (char)b).ToArray())}) modifier=0x{modifier:X} primariesEnum={primariesEnum} transferFunctionEnum={transferFunctionEnum} ycbcrEncodingEnum={ycbcrEncodingEnum} rangeEnum={rangeEnum}");
return new(buffer, _viewFinderStreamConfiguration);
}
protected virtual void Dispose(bool disposing)