mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-23 16:45:07 +03:00
py: Use exceptions instead of returning error codes
We have multiple methods which return an error code, mimicking the C++ API. Using exceptions is more natural in the Python API, so change all those methods to raise an Exception instead. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
5b2f1ce501
commit
1fb31ac4f4
6 changed files with 91 additions and 118 deletions
|
@ -259,12 +259,7 @@ def main():
|
|||
allocator = libcam.FrameBufferAllocator(camera)
|
||||
|
||||
for cfg in config:
|
||||
ret = allocator.allocate(cfg.stream)
|
||||
if ret < 0:
|
||||
print('Can\'t allocate buffers')
|
||||
return -1
|
||||
|
||||
allocated = len(allocator.buffers(cfg.stream))
|
||||
allocated = allocator.allocate(cfg.stream)
|
||||
print(f'Allocated {allocated} buffers for stream')
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
@ -289,15 +284,9 @@ def main():
|
|||
requests = []
|
||||
for i in range(len(buffers)):
|
||||
request = camera.create_request()
|
||||
if not request:
|
||||
print('Can\'t create request')
|
||||
return -1
|
||||
|
||||
buffer = buffers[i]
|
||||
ret = request.add_buffer(stream, buffer)
|
||||
if ret < 0:
|
||||
print('Can\'t set buffer for request')
|
||||
return -1
|
||||
request.add_buffer(stream, buffer)
|
||||
|
||||
# Controls can be added to a request on a per frame basis.
|
||||
request.set_control(libcam.controls.Brightness, 0.5)
|
||||
|
|
|
@ -43,8 +43,7 @@ def main():
|
|||
|
||||
# Acquire the camera for our use
|
||||
|
||||
ret = cam.acquire()
|
||||
assert ret == 0
|
||||
cam.acquire()
|
||||
|
||||
# Configure the camera
|
||||
|
||||
|
@ -60,8 +59,7 @@ def main():
|
|||
w, h = [int(v) for v in args.size.split('x')]
|
||||
stream_config.size = libcam.Size(w, h)
|
||||
|
||||
ret = cam.configure(cam_config)
|
||||
assert ret == 0
|
||||
cam.configure(cam_config)
|
||||
|
||||
print(f'Capturing {TOTAL_FRAMES} frames with {stream_config}')
|
||||
|
||||
|
@ -83,15 +81,13 @@ def main():
|
|||
req = cam.create_request(i)
|
||||
|
||||
buffer = allocator.buffers(stream)[i]
|
||||
ret = req.add_buffer(stream, buffer)
|
||||
assert ret == 0
|
||||
req.add_buffer(stream, buffer)
|
||||
|
||||
reqs.append(req)
|
||||
|
||||
# Start the camera
|
||||
|
||||
ret = cam.start()
|
||||
assert ret == 0
|
||||
cam.start()
|
||||
|
||||
# frames_queued and frames_done track the number of frames queued and done
|
||||
|
||||
|
@ -101,8 +97,7 @@ def main():
|
|||
# Queue the requests to the camera
|
||||
|
||||
for req in reqs:
|
||||
ret = cam.queue_request(req)
|
||||
assert ret == 0
|
||||
cam.queue_request(req)
|
||||
frames_queued += 1
|
||||
|
||||
# The main loop. Wait for the queued Requests to complete, process them,
|
||||
|
@ -155,13 +150,11 @@ def main():
|
|||
|
||||
# Stop the camera
|
||||
|
||||
ret = cam.stop()
|
||||
assert ret == 0
|
||||
cam.stop()
|
||||
|
||||
# Release the camera
|
||||
|
||||
ret = cam.release()
|
||||
assert ret == 0
|
||||
cam.release()
|
||||
|
||||
return 0
|
||||
|
||||
|
|
|
@ -28,8 +28,7 @@ class CameraCaptureContext:
|
|||
|
||||
# Acquire the camera for our use
|
||||
|
||||
ret = cam.acquire()
|
||||
assert ret == 0
|
||||
cam.acquire()
|
||||
|
||||
# Configure the camera
|
||||
|
||||
|
@ -37,8 +36,7 @@ class CameraCaptureContext:
|
|||
|
||||
stream_config = cam_config.at(0)
|
||||
|
||||
ret = cam.configure(cam_config)
|
||||
assert ret == 0
|
||||
cam.configure(cam_config)
|
||||
|
||||
stream = stream_config.stream
|
||||
|
||||
|
@ -62,8 +60,7 @@ class CameraCaptureContext:
|
|||
req = cam.create_request(idx)
|
||||
|
||||
buffer = allocator.buffers(stream)[i]
|
||||
ret = req.add_buffer(stream, buffer)
|
||||
assert ret == 0
|
||||
req.add_buffer(stream, buffer)
|
||||
|
||||
self.reqs.append(req)
|
||||
|
||||
|
@ -73,13 +70,11 @@ class CameraCaptureContext:
|
|||
def uninit_camera(self):
|
||||
# Stop the camera
|
||||
|
||||
ret = self.cam.stop()
|
||||
assert ret == 0
|
||||
self.cam.stop()
|
||||
|
||||
# Release the camera
|
||||
|
||||
ret = self.cam.release()
|
||||
assert ret == 0
|
||||
self.cam.release()
|
||||
|
||||
|
||||
# A container class for our state
|
||||
|
@ -145,8 +140,7 @@ class CaptureContext:
|
|||
|
||||
for cam_ctx in self.camera_contexts:
|
||||
for req in cam_ctx.reqs:
|
||||
ret = cam_ctx.cam.queue_request(req)
|
||||
assert ret == 0
|
||||
cam_ctx.cam.queue_request(req)
|
||||
|
||||
# Use Selector to wait for events from the camera and from the keyboard
|
||||
|
||||
|
@ -177,8 +171,7 @@ def main():
|
|||
# Start the cameras
|
||||
|
||||
for cam_ctx in ctx.camera_contexts:
|
||||
ret = cam_ctx.cam.start()
|
||||
assert ret == 0
|
||||
cam_ctx.cam.start()
|
||||
|
||||
ctx.capture()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue