mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-18 14:18:21 +03:00
Merge pull request #39 from ibs0d/revert-38-codex/fix-live-grid-zoom-behavior
Revert "Expose mediaContentStyle on LivePlayer and pass through to MSEPlayer and still image"
This commit is contained in:
commit
53179fd078
@ -3,7 +3,6 @@ import { CameraConfig } from "@/types/frigateConfig";
|
||||
import AutoUpdatingCameraImage from "../camera/AutoUpdatingCameraImage";
|
||||
import ActivityIndicator from "../indicators/activity-indicator";
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import type { CSSProperties } from "react";
|
||||
import MSEPlayer from "./MsePlayer";
|
||||
import JSMpegPlayer from "./JSMpegPlayer";
|
||||
import { MdCircle } from "react-icons/md";
|
||||
@ -49,7 +48,6 @@ type LivePlayerProps = {
|
||||
autoLive?: boolean;
|
||||
showStats?: boolean;
|
||||
onClick?: () => void;
|
||||
mediaContentStyle?: CSSProperties;
|
||||
setFullResolution?: React.Dispatch<React.SetStateAction<VideoResolutionType>>;
|
||||
onError?: (error: LivePlayerError) => void;
|
||||
onResetLiveMode?: () => void;
|
||||
@ -75,7 +73,6 @@ export default function LivePlayer({
|
||||
autoLive = true,
|
||||
showStats = false,
|
||||
onClick,
|
||||
mediaContentStyle,
|
||||
setFullResolution,
|
||||
onError,
|
||||
onResetLiveMode,
|
||||
@ -302,7 +299,6 @@ export default function LivePlayer({
|
||||
<MSEPlayer
|
||||
key={"mse_" + key}
|
||||
className={`size-full rounded-lg md:rounded-2xl ${liveReady ? "" : "hidden"}`}
|
||||
style={mediaContentStyle}
|
||||
camera={streamName}
|
||||
playbackEnabled={cameraActive || liveReady}
|
||||
audioEnabled={playAudio}
|
||||
@ -387,7 +383,6 @@ export default function LivePlayer({
|
||||
? "visible"
|
||||
: "invisible",
|
||||
)}
|
||||
style={mediaContentStyle}
|
||||
>
|
||||
<AutoUpdatingCameraImage
|
||||
className="pointer-events-none size-full"
|
||||
|
||||
@ -19,7 +19,6 @@ import { isIOS, isSafari } from "react-device-detect";
|
||||
type MSEPlayerProps = {
|
||||
camera: string;
|
||||
className?: string;
|
||||
style?: CSSProperties;
|
||||
playbackEnabled?: boolean;
|
||||
audioEnabled?: boolean;
|
||||
volume?: number;
|
||||
@ -35,7 +34,6 @@ type MSEPlayerProps = {
|
||||
function MSEPlayer({
|
||||
camera,
|
||||
className,
|
||||
style,
|
||||
playbackEnabled = true,
|
||||
audioEnabled = false,
|
||||
volume,
|
||||
@ -845,21 +843,15 @@ function MSEPlayer({
|
||||
};
|
||||
}, [isRotatedGrid]);
|
||||
|
||||
const rotationTransform =
|
||||
"var(--frigate-mse-grid-rotation, none)" as CSSProperties["transform"];
|
||||
const combinedTransform = style?.transform
|
||||
? `${style.transform} ${rotationTransform}`
|
||||
: rotationTransform;
|
||||
|
||||
const videoElement = (
|
||||
<video
|
||||
ref={videoRef}
|
||||
className={className}
|
||||
style={{
|
||||
...style,
|
||||
objectFit:
|
||||
"var(--frigate-mse-object-fit, fill)" as CSSProperties["objectFit"],
|
||||
transform: combinedTransform,
|
||||
transform:
|
||||
"var(--frigate-mse-grid-rotation, none)" as CSSProperties["transform"],
|
||||
transformOrigin:
|
||||
"var(--frigate-mse-grid-rotation-origin, center center)" as CSSProperties["transformOrigin"],
|
||||
width: isRotatedGrid ? "100%" : undefined,
|
||||
|
||||
@ -828,55 +828,59 @@ export default function DraggableGridLayout({
|
||||
hydrateCameraZoomFromStorage(camera.name);
|
||||
}}
|
||||
>
|
||||
<LivePlayer
|
||||
key={camera.name}
|
||||
streamName={streamName}
|
||||
autoLive={autoLive ?? globalAutoLive}
|
||||
showStillWithoutActivity={
|
||||
showStillWithoutActivity ?? true
|
||||
}
|
||||
alwaysShowCameraName={displayCameraNames}
|
||||
useWebGL={useWebGL}
|
||||
cameraRef={cameraRef}
|
||||
className={cn(
|
||||
"draggable-live-grid-mse-cover size-full rounded-lg bg-black md:rounded-2xl",
|
||||
camera.ui?.rotate &&
|
||||
"draggable-live-grid-rotated [--frigate-mse-grid-rotated:1] [--frigate-mse-grid-rotation:rotate(90deg)]",
|
||||
isEditMode &&
|
||||
showCircles &&
|
||||
"outline-2 outline-muted-foreground hover:cursor-grab hover:outline-4 active:cursor-grabbing",
|
||||
)}
|
||||
windowVisible={
|
||||
windowVisible && visibleCameras.includes(camera.name)
|
||||
}
|
||||
cameraConfig={camera}
|
||||
preferredLiveMode={
|
||||
preferredLiveModes[camera.name] ?? "mse"
|
||||
}
|
||||
playInBackground={false}
|
||||
showStats={statsStates[camera.name] ?? true}
|
||||
mediaContentStyle={{
|
||||
<div
|
||||
className="size-full"
|
||||
style={{
|
||||
transform: `translate3d(${cameraZoomTransform.positionX}px, ${cameraZoomTransform.positionY}px, 0) scale(${cameraZoomTransform.scale})`,
|
||||
transformOrigin: "top left",
|
||||
}}
|
||||
onClick={() => {
|
||||
!isEditMode && onSelectCamera(camera.name);
|
||||
}}
|
||||
onError={(e) => {
|
||||
setPreferredLiveModes((prevModes) => {
|
||||
const newModes = { ...prevModes };
|
||||
if (e === "mse-decode") {
|
||||
delete newModes[camera.name];
|
||||
}
|
||||
return newModes;
|
||||
});
|
||||
}}
|
||||
onResetLiveMode={() =>
|
||||
resetPreferredLiveMode(camera.name)
|
||||
}
|
||||
playAudio={audioStates[camera.name]}
|
||||
volume={volumeStates[camera.name]}
|
||||
/>
|
||||
>
|
||||
<LivePlayer
|
||||
key={camera.name}
|
||||
streamName={streamName}
|
||||
autoLive={autoLive ?? globalAutoLive}
|
||||
showStillWithoutActivity={
|
||||
showStillWithoutActivity ?? true
|
||||
}
|
||||
alwaysShowCameraName={displayCameraNames}
|
||||
useWebGL={useWebGL}
|
||||
cameraRef={cameraRef}
|
||||
className={cn(
|
||||
"draggable-live-grid-mse-cover size-full rounded-lg bg-black md:rounded-2xl",
|
||||
camera.ui?.rotate &&
|
||||
"draggable-live-grid-rotated [--frigate-mse-grid-rotated:1] [--frigate-mse-grid-rotation:rotate(90deg)]",
|
||||
isEditMode &&
|
||||
showCircles &&
|
||||
"outline-2 outline-muted-foreground hover:cursor-grab hover:outline-4 active:cursor-grabbing",
|
||||
)}
|
||||
windowVisible={
|
||||
windowVisible && visibleCameras.includes(camera.name)
|
||||
}
|
||||
cameraConfig={camera}
|
||||
preferredLiveMode={
|
||||
preferredLiveModes[camera.name] ?? "mse"
|
||||
}
|
||||
playInBackground={false}
|
||||
showStats={statsStates[camera.name] ?? true}
|
||||
onClick={() => {
|
||||
!isEditMode && onSelectCamera(camera.name);
|
||||
}}
|
||||
onError={(e) => {
|
||||
setPreferredLiveModes((prevModes) => {
|
||||
const newModes = { ...prevModes };
|
||||
if (e === "mse-decode") {
|
||||
delete newModes[camera.name];
|
||||
}
|
||||
return newModes;
|
||||
});
|
||||
}}
|
||||
onResetLiveMode={() =>
|
||||
resetPreferredLiveMode(camera.name)
|
||||
}
|
||||
playAudio={audioStates[camera.name]}
|
||||
volume={volumeStates[camera.name]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{isEditMode && showCircles && <CornerCircles />}
|
||||
</GridLiveContextMenu>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user