From 21ce5dfad4644cbaa8a809ac17a18df1dc6158c0 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 10 Mar 2023 19:46:51 -0800 Subject: [PATCH] sdk: image support --- sdk/types/scrypted_python/scrypted_sdk/types.py | 12 +++++++++--- sdk/types/src/types.input.ts | 13 +++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sdk/types/scrypted_python/scrypted_sdk/types.py b/sdk/types/scrypted_python/scrypted_sdk/types.py index f7566a084..aa8cfb2aa 100644 --- a/sdk/types/scrypted_python/scrypted_sdk/types.py +++ b/sdk/types/scrypted_python/scrypted_sdk/types.py @@ -36,6 +36,10 @@ class MediaPlayerState(Enum): Paused = "Paused" Playing = "Playing" +class PanTiltZoomMovement(Enum): + Absolute = "Absolute" + Relative = "Relative" + class ScryptedDeviceType(Enum): API = "API" Automation = "Automation" @@ -149,6 +153,7 @@ class ScryptedInterface(Enum): class ScryptedMimeTypes(Enum): FFmpegInput = "x-scrypted/x-ffmpeg-input" FFmpegTranscodeStream = "x-scrypted/x-ffmpeg-transcode-stream" + Image = "x-scrypted/x-scrypted-image" InsecureLocalUrl = "text/x-insecure-local-uri" LocalUrl = "text/x-local-uri" MediaObject = "x-scrypted/x-scrypted-media-object" @@ -161,8 +166,6 @@ class ScryptedMimeTypes(Enum): RequestMediaObject = "x-scrypted/x-scrypted-request-media-object" RequestMediaStream = "x-scrypted/x-scrypted-request-stream" SchemePrefix = "x-scrypted/x-scrypted-scheme-" - ScryptedDevice = "x-scrypted/x-scrypted-device" - ScryptedDeviceId = "x-scrypted/x-scrypted-device-id" Url = "text/x-uri" class SecuritySystemMode(Enum): @@ -228,6 +231,7 @@ class HttpResponseOptions(TypedDict): pass class ImageOptions(TypedDict): + crop: Any format: str resize: Any pass @@ -508,7 +512,9 @@ class PanTiltZoomCapabilities(TypedDict): pass class PanTiltZoomCommand(TypedDict): + movement: PanTiltZoomMovement pan: float + speed: Any tilt: float zoom: float pass @@ -2401,7 +2407,7 @@ class VideoFrame: sourceId: str timestamp: float width: float - async def read(self, options: ImageOptions = None) -> bytearray: + async def toBuffer(self, options: ImageOptions = None) -> bytearray: pass pass diff --git a/sdk/types/src/types.input.ts b/sdk/types/src/types.input.ts index dd295c6f4..841a8271a 100644 --- a/sdk/types/src/types.input.ts +++ b/sdk/types/src/types.input.ts @@ -1317,14 +1317,19 @@ export interface ImageOptions { width: number, height: number, }; + crop?: { + left: number; + top: number; + width: number; + height: number; + }; format?: string; } export interface Image extends MediaObject { - timestamp: number; width: number; height: number; format: string; - read(options?: ImageOptions): Promise; + toBuffer(options?: ImageOptions): Promise; } export interface VideoFrame extends Image { timestamp: number; @@ -2041,8 +2046,6 @@ export enum ScryptedMimeTypes { RequestMediaObject = 'x-scrypted/x-scrypted-request-media-object', RequestMediaStream = 'x-scrypted/x-scrypted-request-stream', MediaStreamFeedback = 'x-scrypted/x-media-stream-feedback', - ScryptedDevice = 'x-scrypted/x-scrypted-device', - ScryptedDeviceId = 'x-scrypted/x-scrypted-device-id', FFmpegInput = 'x-scrypted/x-ffmpeg-input', FFmpegTranscodeStream = 'x-scrypted/x-ffmpeg-transcode-stream', @@ -2050,6 +2053,8 @@ export enum ScryptedMimeTypes { RTCSignalingChannel = 'x-scrypted/x-scrypted-rtc-signaling-channel', RTCSignalingSession = 'x-scrypted/x-scrypted-rtc-signaling-session', RTCConnectionManagement = 'x-scrypted/x-scrypted-rtc-connection-management', + + Image = 'x-scrypted/x-scrypted-image', } export type RequestMediaObject = () => Promise;