From 5f51319b890174c27d2532c98e14ff36df7a8efa Mon Sep 17 00:00:00 2001 From: "Galindo, Alex" Date: Tue, 7 Mar 2023 15:10:31 +0100 Subject: [PATCH] Change the rotate field to camera/ffmpeg --- docs/docs/configuration/cameras.md | 2 +- docs/docs/configuration/index.md | 4 ++-- frigate/config.py | 6 +++--- frigate/test/test_ffmpeg_presets.py | 24 ++++++++++++------------ 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/docs/configuration/cameras.md b/docs/docs/configuration/cameras.md index 622d4869f..54fe12721 100644 --- a/docs/docs/configuration/cameras.md +++ b/docs/docs/configuration/cameras.md @@ -66,7 +66,7 @@ cameras: roles: - detect - record - rotate: 90 + rotate: 90 detect: width: 1280 height: 720 diff --git a/docs/docs/configuration/index.md b/docs/docs/configuration/index.md index fcd145f94..9f5f463e1 100644 --- a/docs/docs/configuration/index.md +++ b/docs/docs/configuration/index.md @@ -427,8 +427,8 @@ cameras: # Optional: camera specific output args (default: inherit) # output_args: - # Optional: rotation for this camera, allowed values are: 90, 180 or 270 (-90). (default: shown below) - rotate: 0 + # Optional: rotation for this camera, allowed values are: 90, 180 or 270 (-90). (default: shown below) + rotate: 0 # Optional: timeout for highest scoring image before allowing it # to be replaced by a newer image. (default: shown below) diff --git a/frigate/config.py b/frigate/config.py index 55771ed96..716f80ecd 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -462,6 +462,7 @@ class CameraInput(FrigateBaseModel): class CameraFfmpegConfig(FfmpegConfig): inputs: List[CameraInput] = Field(title="Camera inputs.") + rotate: int = Field(default=0, title="Rotate camera: 0º, 90º, 180º or 270º(-90º)") @validator("inputs") def validate_roles(cls, v): @@ -576,7 +577,6 @@ class CameraUiConfig(FrigateBaseModel): class CameraConfig(FrigateBaseModel): name: Optional[str] = Field(title="Camera name.", regex=REGEX_CAMERA_NAME) enabled: bool = Field(default=True, title="Enable camera.") - rotate: int = Field(default=0, title="Rotate camera: 0º, 90º, 180º or 270º(-90º)") ffmpeg: CameraFfmpegConfig = Field(title="FFmpeg configuration for the camera.") best_image_timeout: int = Field( default=60, @@ -675,7 +675,7 @@ class CameraConfig(FrigateBaseModel): self.detect.fps, self.detect.width, self.detect.height, - self.rotate, + self.ffmpeg.rotate, ) ffmpeg_output_args = scale_detect_args + ffmpeg_output_args + ["pipe:"] @@ -693,7 +693,7 @@ class CameraConfig(FrigateBaseModel): parse_preset_output_record( self.ffmpeg.output_args.record, ffmpeg_input.hwaccel_args or self.ffmpeg.hwaccel_args, - self.rotate, + self.ffmpeg.rotate, ) or self.ffmpeg.output_args.record ) diff --git a/frigate/test/test_ffmpeg_presets.py b/frigate/test/test_ffmpeg_presets.py index 65c66d680..960281b19 100644 --- a/frigate/test/test_ffmpeg_presets.py +++ b/frigate/test/test_ffmpeg_presets.py @@ -86,7 +86,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_90_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 90 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 90 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264" @@ -106,7 +106,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_180_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-rpi-64-h264" @@ -125,7 +125,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_180_vaapi_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-vaapi" @@ -145,7 +145,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_180_qsv_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-intel-qsv-h264" @@ -165,7 +165,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_270_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 270 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 270 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264" @@ -185,7 +185,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_hwaccel_rotate_wrong_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 20 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 20 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264" @@ -276,7 +276,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_90_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 90 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 90 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264" @@ -293,7 +293,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_180_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-rpi-64-h264" @@ -310,7 +310,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_180_vaapi_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-vaapi" @@ -327,7 +327,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_180_qsv_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 180 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 180 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-intel-qsv-h264" @@ -344,7 +344,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_270_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 270 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 270 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264" @@ -361,7 +361,7 @@ class TestFfmpegPresets(unittest.TestCase): ) def test_ffmpeg_output_record_rotate_wrong_preset(self): - self.default_ffmpeg["cameras"]["back"]["rotate"] = 20 + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["rotate"] = 20 self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ "hwaccel_args" ] = "preset-nvidia-h264"