mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-05 18:55:23 +03:00
Optimize portrait layout for 3+ cams
This commit is contained in:
parent
3a877894f1
commit
918d5b34e5
@ -321,7 +321,7 @@ class BirdsEyeFrameManager:
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
elif first_camera_dims[1] + second_camera_dims[1] < canvas_height:
|
else:
|
||||||
# place cameras vertically
|
# place cameras vertically
|
||||||
top_scaled_width = int(
|
top_scaled_width = int(
|
||||||
(canvas_height / 2) * first_camera_dims[0] / first_camera_dims[1]
|
(canvas_height / 2) * first_camera_dims[0] / first_camera_dims[1]
|
||||||
@ -356,7 +356,8 @@ class BirdsEyeFrameManager:
|
|||||||
camera_layout: list[list[any]] = []
|
camera_layout: list[list[any]] = []
|
||||||
camera_layout.append([])
|
camera_layout.append([])
|
||||||
canvas_aspect = canvas[0] / canvas[1]
|
canvas_aspect = canvas[0] / canvas[1]
|
||||||
x = 0
|
starting_x = 0
|
||||||
|
x = starting_x
|
||||||
y = 0
|
y = 0
|
||||||
y_i = 0
|
y_i = 0
|
||||||
max_height = 0
|
max_height = 0
|
||||||
@ -364,35 +365,45 @@ class BirdsEyeFrameManager:
|
|||||||
camera_dims = self.cameras[camera]["dimensions"].copy()
|
camera_dims = self.cameras[camera]["dimensions"].copy()
|
||||||
camera_aspect = camera_dims[0] / camera_dims[1]
|
camera_aspect = camera_dims[0] / camera_dims[1]
|
||||||
|
|
||||||
# if the camera aspect ratio is less than canvas aspect ratio, it needs to be scaled down to fit
|
if camera_dims[1] > camera_dims[0]:
|
||||||
if camera_aspect < canvas_aspect:
|
portrait = True
|
||||||
|
elif camera_aspect < canvas_aspect:
|
||||||
|
# if the camera aspect ratio is less than canvas aspect ratio, it needs to be scaled down to fit
|
||||||
camera_dims[0] *= camera_aspect / canvas_aspect
|
camera_dims[0] *= camera_aspect / canvas_aspect
|
||||||
camera_dims[1] *= camera_aspect / canvas_aspect
|
camera_dims[1] *= camera_aspect / canvas_aspect
|
||||||
|
portrait = False
|
||||||
|
else:
|
||||||
|
portrait = False
|
||||||
|
|
||||||
if (x + camera_dims[0] * coefficient) <= canvas[0]:
|
if (x + camera_dims[0] * coefficient) <= canvas[0]:
|
||||||
# insert if camera can fit on current row
|
# insert if camera can fit on current row
|
||||||
|
scaled_width = int(camera_dims[0] * coefficient)
|
||||||
camera_layout[y_i].append(
|
camera_layout[y_i].append(
|
||||||
(
|
(
|
||||||
camera,
|
camera,
|
||||||
(
|
(
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
int(camera_dims[0] * coefficient),
|
scaled_width,
|
||||||
int(camera_dims[1] * coefficient),
|
int(camera_dims[1] * coefficient),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
x += int(camera_dims[0] * coefficient)
|
x += scaled_width
|
||||||
max_height = max(
|
|
||||||
max_height,
|
if portrait:
|
||||||
int(camera_dims[1] * coefficient),
|
starting_x = scaled_width
|
||||||
)
|
else:
|
||||||
|
max_height = max(
|
||||||
|
max_height,
|
||||||
|
int(camera_dims[1] * coefficient),
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
# move on to the next row and insert
|
# move on to the next row and insert
|
||||||
y += max_height
|
y += max_height
|
||||||
y_i += 1
|
y_i += 1
|
||||||
camera_layout.append([])
|
camera_layout.append([])
|
||||||
x = 0
|
x = starting_x
|
||||||
|
|
||||||
if camera_dims[0] * coefficient > canvas_width:
|
if camera_dims[0] * coefficient > canvas_width:
|
||||||
safe_coefficient = 1
|
safe_coefficient = 1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user