mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 15:47:12 +00:00
Put access to ffmpeg hass.data behind a method (#62570)
* Put access to ffmpeg hass.data behind a method Move all callers of `hass.data[DATA_FFMPEG]` to a new function that returns the FFMpegManager. * Update homeassistant/components/ffmpeg/__init__.py Co-authored-by: Martin Hjelmare <marhje52@gmail.com> * Remove unnecessary async_ prefix Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
ce9abdb520
commit
14e4216e29
@ -15,7 +15,7 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components.camera import SUPPORT_ON_OFF, SUPPORT_STREAM, Camera
|
from homeassistant.components.camera import SUPPORT_ON_OFF, SUPPORT_STREAM, Camera
|
||||||
from homeassistant.components.camera.const import DOMAIN as CAMERA_DOMAIN
|
from homeassistant.components.camera.const import DOMAIN as CAMERA_DOMAIN
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG, FFmpegManager
|
from homeassistant.components.ffmpeg import FFmpegManager, get_ffmpeg_manager
|
||||||
from homeassistant.const import ATTR_ENTITY_ID, CONF_NAME, STATE_OFF, STATE_ON
|
from homeassistant.const import ATTR_ENTITY_ID, CONF_NAME, STATE_OFF, STATE_ON
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import entity_registry
|
from homeassistant.helpers import entity_registry
|
||||||
@ -136,7 +136,7 @@ async def async_setup_platform(
|
|||||||
|
|
||||||
name = discovery_info[CONF_NAME]
|
name = discovery_info[CONF_NAME]
|
||||||
device = hass.data[DATA_AMCREST][DEVICES][name]
|
device = hass.data[DATA_AMCREST][DEVICES][name]
|
||||||
entity = AmcrestCam(name, device, hass.data[DATA_FFMPEG])
|
entity = AmcrestCam(name, device, get_ffmpeg_manager(hass))
|
||||||
|
|
||||||
# 2021.9.0 introduced unique id's for the camera entity, but these were not
|
# 2021.9.0 introduced unique id's for the camera entity, but these were not
|
||||||
# unique for different resolution streams. If any cameras were configured
|
# unique for different resolution streams. If any cameras were configured
|
||||||
|
@ -7,7 +7,7 @@ from haffmpeg.camera import CameraMjpeg
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.const import ATTR_BATTERY_LEVEL
|
from homeassistant.const import ATTR_BATTERY_LEVEL
|
||||||
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
@ -59,7 +59,7 @@ class ArloCam(Camera):
|
|||||||
self._camera = camera
|
self._camera = camera
|
||||||
self._attr_name = camera.name
|
self._attr_name = camera.name
|
||||||
self._motion_status = False
|
self._motion_status = False
|
||||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||||
self._ffmpeg_arguments = device_info.get(CONF_FFMPEG_ARGUMENTS)
|
self._ffmpeg_arguments = device_info.get(CONF_FFMPEG_ARGUMENTS)
|
||||||
self._last_refresh = None
|
self._last_refresh = None
|
||||||
self.attrs = {}
|
self.attrs = {}
|
||||||
|
@ -15,7 +15,7 @@ from homeassistant.components.camera import (
|
|||||||
PLATFORM_SCHEMA as PARENT_PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA as PARENT_PLATFORM_SCHEMA,
|
||||||
Camera,
|
Camera,
|
||||||
)
|
)
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG, FFmpegManager
|
from homeassistant.components.ffmpeg import FFmpegManager, get_ffmpeg_manager
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
@ -94,7 +94,7 @@ class CanaryCamera(CoordinatorEntity, Camera):
|
|||||||
"""Initialize a Canary security camera."""
|
"""Initialize a Canary security camera."""
|
||||||
super().__init__(coordinator)
|
super().__init__(coordinator)
|
||||||
Camera.__init__(self)
|
Camera.__init__(self)
|
||||||
self._ffmpeg: FFmpegManager = hass.data[DATA_FFMPEG]
|
self._ffmpeg: FFmpegManager = get_ffmpeg_manager(hass)
|
||||||
self._ffmpeg_arguments = ffmpeg_args
|
self._ffmpeg_arguments = ffmpeg_args
|
||||||
self._location_id = location_id
|
self._location_id = location_id
|
||||||
self._device = device
|
self._device = device
|
||||||
|
@ -8,7 +8,7 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components import ffmpeg
|
from homeassistant.components import ffmpeg
|
||||||
from homeassistant.components.camera import PLATFORM_SCHEMA, SUPPORT_STREAM, Camera
|
from homeassistant.components.camera import PLATFORM_SCHEMA, SUPPORT_STREAM, Camera
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.config_entries import (
|
from homeassistant.config_entries import (
|
||||||
SOURCE_DISCOVERY,
|
SOURCE_DISCOVERY,
|
||||||
SOURCE_IGNORE,
|
SOURCE_IGNORE,
|
||||||
@ -249,7 +249,7 @@ class EzvizCamera(EzvizEntity, Camera):
|
|||||||
self._rtsp_stream = camera_rtsp_stream
|
self._rtsp_stream = camera_rtsp_stream
|
||||||
self._local_rtsp_port = local_rtsp_port
|
self._local_rtsp_port = local_rtsp_port
|
||||||
self._ffmpeg_arguments = ffmpeg_arguments
|
self._ffmpeg_arguments = ffmpeg_arguments
|
||||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||||
self._attr_unique_id = serial
|
self._attr_unique_id = serial
|
||||||
self._attr_name = self.data["name"]
|
self._attr_name = self.data["name"]
|
||||||
|
|
||||||
|
@ -90,6 +90,14 @@ async def async_setup(hass, config):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@bind_hass
|
||||||
|
def get_ffmpeg_manager(hass: HomeAssistant) -> FFmpegManager:
|
||||||
|
"""Return the FFmpegManager."""
|
||||||
|
if DATA_FFMPEG not in hass.data:
|
||||||
|
raise ValueError("ffmpeg component not initialized")
|
||||||
|
return hass.data[DATA_FFMPEG]
|
||||||
|
|
||||||
|
|
||||||
@bind_hass
|
@bind_hass
|
||||||
async def async_get_image(
|
async def async_get_image(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
@ -11,8 +11,8 @@ from homeassistant.components.ffmpeg import (
|
|||||||
CONF_EXTRA_ARGUMENTS,
|
CONF_EXTRA_ARGUMENTS,
|
||||||
CONF_INITIAL_STATE,
|
CONF_INITIAL_STATE,
|
||||||
CONF_INPUT,
|
CONF_INPUT,
|
||||||
DATA_FFMPEG,
|
|
||||||
FFmpegBase,
|
FFmpegBase,
|
||||||
|
get_ffmpeg_manager,
|
||||||
)
|
)
|
||||||
from homeassistant.const import CONF_NAME, CONF_REPEAT
|
from homeassistant.const import CONF_NAME, CONF_REPEAT
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
@ -49,7 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
|
|
||||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||||
"""Set up the FFmpeg binary motion sensor."""
|
"""Set up the FFmpeg binary motion sensor."""
|
||||||
manager = hass.data[DATA_FFMPEG]
|
manager = get_ffmpeg_manager(hass)
|
||||||
entity = FFmpegMotion(hass, manager, config)
|
entity = FFmpegMotion(hass, manager, config)
|
||||||
async_add_entities([entity])
|
async_add_entities([entity])
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from homeassistant.components.ffmpeg import (
|
|||||||
CONF_INITIAL_STATE,
|
CONF_INITIAL_STATE,
|
||||||
CONF_INPUT,
|
CONF_INPUT,
|
||||||
CONF_OUTPUT,
|
CONF_OUTPUT,
|
||||||
DATA_FFMPEG,
|
get_ffmpeg_manager,
|
||||||
)
|
)
|
||||||
from homeassistant.components.ffmpeg_motion.binary_sensor import FFmpegBinarySensor
|
from homeassistant.components.ffmpeg_motion.binary_sensor import FFmpegBinarySensor
|
||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_NAME
|
||||||
@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
|
|
||||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||||
"""Set up the FFmpeg noise binary sensor."""
|
"""Set up the FFmpeg noise binary sensor."""
|
||||||
manager = hass.data[DATA_FFMPEG]
|
manager = get_ffmpeg_manager(hass)
|
||||||
entity = FFmpegNoise(hass, manager, config)
|
entity = FFmpegNoise(hass, manager, config)
|
||||||
async_add_entities([entity])
|
async_add_entities([entity])
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from pyhap.camera import (
|
|||||||
)
|
)
|
||||||
from pyhap.const import CATEGORY_CAMERA
|
from pyhap.const import CATEGORY_CAMERA
|
||||||
|
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.const import STATE_ON
|
from homeassistant.const import STATE_ON
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers.event import (
|
from homeassistant.helpers.event import (
|
||||||
@ -139,7 +139,7 @@ class Camera(HomeAccessory, PyhapCamera):
|
|||||||
|
|
||||||
def __init__(self, hass, driver, name, entity_id, aid, config):
|
def __init__(self, hass, driver, name, entity_id, aid, config):
|
||||||
"""Initialize a Camera accessory object."""
|
"""Initialize a Camera accessory object."""
|
||||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||||
for config_key, conf in CONFIG_DEFAULTS.items():
|
for config_key, conf in CONFIG_DEFAULTS.items():
|
||||||
if config_key not in config:
|
if config_key not in config:
|
||||||
config[config_key] = conf
|
config[config_key] = conf
|
||||||
|
@ -5,7 +5,7 @@ from datetime import timedelta
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.components.camera import ATTR_ENTITY_ID, SUPPORT_ON_OFF, Camera
|
from homeassistant.components.camera import ATTR_ENTITY_ID, SUPPORT_ON_OFF, Camera
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ATTRIBUTION,
|
ATTR_ATTRIBUTION,
|
||||||
ATTR_BATTERY_CHARGING,
|
ATTR_BATTERY_CHARGING,
|
||||||
@ -40,7 +40,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
|||||||
async def async_setup_entry(hass, entry, async_add_entities):
|
async def async_setup_entry(hass, entry, async_add_entities):
|
||||||
"""Set up a Logi Circle Camera based on a config entry."""
|
"""Set up a Logi Circle Camera based on a config entry."""
|
||||||
devices = await hass.data[LOGI_CIRCLE_DOMAIN].cameras
|
devices = await hass.data[LOGI_CIRCLE_DOMAIN].cameras
|
||||||
ffmpeg = hass.data[DATA_FFMPEG]
|
ffmpeg = get_ffmpeg_manager(hass)
|
||||||
|
|
||||||
cameras = [LogiCam(device, entry, ffmpeg) for device in devices]
|
cameras = [LogiCam(device, entry, ffmpeg) for device in devices]
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ from yarl import URL
|
|||||||
|
|
||||||
from homeassistant.components import ffmpeg
|
from homeassistant.components import ffmpeg
|
||||||
from homeassistant.components.camera import SUPPORT_STREAM, Camera
|
from homeassistant.components.camera import SUPPORT_STREAM, Camera
|
||||||
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS, DATA_FFMPEG
|
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS, get_ffmpeg_manager
|
||||||
from homeassistant.const import HTTP_BASIC_AUTHENTICATION
|
from homeassistant.const import HTTP_BASIC_AUTHENTICATION
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
||||||
@ -153,7 +153,7 @@ class ONVIFCameraEntity(ONVIFBaseEntity, Camera):
|
|||||||
"""Generate an HTTP MJPEG stream from the camera."""
|
"""Generate an HTTP MJPEG stream from the camera."""
|
||||||
LOGGER.debug("Handling mjpeg stream from camera '%s'", self.device.name)
|
LOGGER.debug("Handling mjpeg stream from camera '%s'", self.device.name)
|
||||||
|
|
||||||
ffmpeg_manager = self.hass.data[DATA_FFMPEG]
|
ffmpeg_manager = get_ffmpeg_manager(self.hass)
|
||||||
stream = CameraMjpeg(ffmpeg_manager.binary)
|
stream = CameraMjpeg(ffmpeg_manager.binary)
|
||||||
|
|
||||||
await stream.open_camera(
|
await stream.open_camera(
|
||||||
|
@ -9,7 +9,7 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components import ffmpeg
|
from homeassistant.components import ffmpeg
|
||||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
@ -65,7 +65,7 @@ class XiaomiCamera(Camera):
|
|||||||
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
||||||
self._last_image = None
|
self._last_image = None
|
||||||
self._last_url = None
|
self._last_url = None
|
||||||
self._manager = hass.data[DATA_FFMPEG]
|
self._manager = get_ffmpeg_manager(hass)
|
||||||
self._name = config[CONF_NAME]
|
self._name = config[CONF_NAME]
|
||||||
self.host = config[CONF_HOST]
|
self.host = config[CONF_HOST]
|
||||||
self.host.hass = hass
|
self.host.hass = hass
|
||||||
|
@ -9,7 +9,7 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components import ffmpeg
|
from homeassistant.components import ffmpeg
|
||||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
@ -60,7 +60,7 @@ class YiCamera(Camera):
|
|||||||
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
||||||
self._last_image = None
|
self._last_image = None
|
||||||
self._last_url = None
|
self._last_url = None
|
||||||
self._manager = hass.data[DATA_FFMPEG]
|
self._manager = get_ffmpeg_manager(hass)
|
||||||
self._name = config[CONF_NAME]
|
self._name = config[CONF_NAME]
|
||||||
self._is_on = True
|
self._is_on = True
|
||||||
self.host = config[CONF_HOST]
|
self.host = config[CONF_HOST]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user