import { mediaDevices, MediaStream, RTCIceCandidate, RTCPeerConnection, RTCSessionDescription } from "react-native-webrtc";
import { IPlatformWebRTC } from "./adapter.inteerfce";
export class PlatformAdapter implements IPlatformWebRTC {
createPeerConnection(config: RTCConfiguration) {
return new RTCPeerConnection(config);
}
createSessionDescription(init: RTCSessionDescriptionInit) {
return new RTCSessionDescription(init as any);
}
createIceCandidate(init: RTCIceCandidateInit) {
return new RTCIceCandidate(init);
}
async getUserMedia(): Promise<any> {
return mediaDevices.getUserMedia({
audio: true,
video: {
width: { min: 360, ideal: 540, max: 960 },
height: { min: 480, ideal: 720, max: 1280 },
frameRate: { ideal: 30, max: 30 },
facingMode: 'user',
},
});
}
async switchCamera(mediaStream: MediaStream): Promise<boolean> {
if (!mediaStream) return false;
const videoTrack = mediaStream.getVideoTracks()[0];
if (!videoTrack) return false;
try {
await (videoTrack as any)._switchCamera();
return true;
} catch (error) {
console.error("[PlatformAdapter] 카메라 전환 실패: ", error);
return false;
}
}
}