pcm-processor
Version:
Processes raw PCM data from mobile device microphones/live recordings
68 lines • 2.03 kB
JavaScript
import PcmProcessorModule from "./PcmProcessorModule";
export function addListener(listener) {
PcmProcessorModule.removeListener();
return PcmProcessorModule.addListener("onChange", listener);
}
export function removeListener(subscription) {
if (subscription) {
subscription.remove();
PcmProcessorModule.removeListener();
}
}
export async function startCapturing(config, onData, onError) {
try {
const defaultConfig = {
sampleRate: 44100,
channels: 1,
shouldRecordAudio: false,
fileName: `recording_${Date.now()}`,
fileExtension: "wav",
};
const mergedConfig = { ...defaultConfig, ...config };
const subscription = addListener((event) => {
if (event.error && onError) {
onError(event.error);
}
else if (event.data && onData) {
onData(event);
}
});
await PcmProcessorModule.startCapturing(mergedConfig);
return subscription;
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
if (onError) {
onError(errorMessage);
}
throw error;
}
}
export async function stopCapturing() {
try {
return await PcmProcessorModule.stopCapturing();
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : "Failed to stop recording";
console.error("Error stopping PCM capturing:", error);
return {
error: errorMessage,
};
}
}
export function isRecordingError(event) {
return "error" in event;
}
export function isPcmData(event) {
return "data" in event && event.data !== undefined;
}
export { default as PcmProcessor } from "./PcmProcessorModule";
export default {
startCapturing,
stopCapturing,
addListener,
removeListener,
isRecordingError,
isPcmData,
};
//# sourceMappingURL=index.js.map