96 lines
2.6 KiB
JavaScript
96 lines
2.6 KiB
JavaScript
/**
|
|
* Audio recording state management
|
|
*/
|
|
|
|
export function createAudioState(ref, computed) {
|
|
// --- Audio Recording State ---
|
|
const isRecording = ref(false);
|
|
const mediaRecorder = ref(null);
|
|
const audioChunks = ref([]);
|
|
const audioBlobURL = ref(null);
|
|
const recordingTime = ref(0);
|
|
const recordingInterval = ref(null);
|
|
const canRecordAudio = ref(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);
|
|
const canRecordSystemAudio = computed(() => navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia);
|
|
const systemAudioSupported = ref(false);
|
|
const systemAudioError = ref('');
|
|
const recordingNotes = ref('');
|
|
const showSystemAudioHelp = ref(false);
|
|
|
|
// ASR options for recording view
|
|
const asrLanguage = ref('');
|
|
const asrMinSpeakers = ref('');
|
|
const asrMaxSpeakers = ref('');
|
|
|
|
// Audio context and analyzers
|
|
const audioContext = ref(null);
|
|
const analyser = ref(null);
|
|
const micAnalyser = ref(null);
|
|
const systemAnalyser = ref(null);
|
|
const visualizer = ref(null);
|
|
const micVisualizer = ref(null);
|
|
const systemVisualizer = ref(null);
|
|
const animationFrameId = ref(null);
|
|
const recordingMode = ref('microphone');
|
|
const activeStreams = ref([]);
|
|
|
|
// --- Wake Lock and Background Recording ---
|
|
const wakeLock = ref(null);
|
|
const recordingNotification = ref(null);
|
|
const isPageVisible = ref(true);
|
|
|
|
// --- Recording Size Monitoring ---
|
|
const estimatedFileSize = ref(0);
|
|
const fileSizeWarningShown = ref(false);
|
|
const recordingQuality = ref('optimized');
|
|
const actualBitrate = ref(0);
|
|
const maxRecordingMB = ref(200);
|
|
const sizeCheckInterval = ref(null);
|
|
|
|
return {
|
|
// Recording state
|
|
isRecording,
|
|
mediaRecorder,
|
|
audioChunks,
|
|
audioBlobURL,
|
|
recordingTime,
|
|
recordingInterval,
|
|
canRecordAudio,
|
|
canRecordSystemAudio,
|
|
systemAudioSupported,
|
|
systemAudioError,
|
|
recordingNotes,
|
|
showSystemAudioHelp,
|
|
|
|
// ASR options
|
|
asrLanguage,
|
|
asrMinSpeakers,
|
|
asrMaxSpeakers,
|
|
|
|
// Audio context
|
|
audioContext,
|
|
analyser,
|
|
micAnalyser,
|
|
systemAnalyser,
|
|
visualizer,
|
|
micVisualizer,
|
|
systemVisualizer,
|
|
animationFrameId,
|
|
recordingMode,
|
|
activeStreams,
|
|
|
|
// Wake lock
|
|
wakeLock,
|
|
recordingNotification,
|
|
isPageVisible,
|
|
|
|
// Size monitoring
|
|
estimatedFileSize,
|
|
fileSizeWarningShown,
|
|
recordingQuality,
|
|
actualBitrate,
|
|
maxRecordingMB,
|
|
sizeCheckInterval
|
|
};
|
|
}
|