@xmov/avatar 2.4.0 → 2.5.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -6
- package/package-dist/agent/avatar.cjs +1 -0
- package/package-dist/agent/avatar.modern.js +1 -0
- package/package-dist/agent/avatar.module.js +1 -0
- package/package-dist/agent/avatar.umd.js +1 -0
- package/package-dist/agent/index.d.ts +42 -0
- package/{dist/agent/types.d.ts → package-dist/agent/public-types.d.ts} +115 -116
- package/package-dist/index.cjs +3 -0
- package/package-dist/index.d.ts +34 -0
- package/package-dist/index.modern.js +1 -0
- package/package-dist/index.module.js +1 -0
- package/package-dist/index.umd.js +14 -0
- package/package-dist/public-types.d.ts +205 -0
- package/package.json +41 -33
- package/dist/agent/avatar.cjs +0 -1
- package/dist/agent/avatar.modern.js +0 -1
- package/dist/agent/avatar.module.js +0 -1
- package/dist/agent/avatar.umd.js +0 -1
- package/dist/agent/index.d.ts +0 -137
- package/dist/baseRender/AudioRenderer.d.ts +0 -46
- package/dist/baseRender/AudioWorklet.d.ts +0 -78
- package/dist/baseRender/AvatarRenderer.d.ts +0 -225
- package/dist/baseRender/MSEAudioPlayer.d.ts +0 -51
- package/dist/baseRender/UIRenderer.d.ts +0 -39
- package/dist/baseRender/pcm-audio-processor.d.ts +0 -63
- package/dist/control/APIForwarder.d.ts +0 -23
- package/dist/control/DataCacheQueue.d.ts +0 -69
- package/dist/control/EventDispatcher.d.ts +0 -35
- package/dist/control/RenderScheduler.d.ts +0 -171
- package/dist/control/SaveAndDownload.d.ts +0 -14
- package/dist/control/StreamingClient.d.ts +0 -33
- package/dist/control/VideoPlayer.d.ts +0 -47
- package/dist/control/ttsa.d.ts +0 -125
- package/dist/encoding/media-recorder-encoder.d.ts +0 -33
- package/dist/encoding/pcm-webm-encoder.d.ts +0 -13
- package/dist/encoding/webcodec-opus-encoder.d.ts +0 -41
- package/dist/encoding/webm-muxer.d.ts +0 -90
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -251
- package/dist/index.modern.js +0 -2
- package/dist/index.modern.js.map +0 -1
- package/dist/index.module.js +0 -2
- package/dist/index.module.js.map +0 -1
- package/dist/index.umd.js +0 -2
- package/dist/index.umd.js.map +0 -1
- package/dist/modules/Composition.d.ts +0 -28
- package/dist/modules/ResourceManager.d.ts +0 -299
- package/dist/modules/TrackRenderer/base-track.d.ts +0 -4
- package/dist/modules/TrackRenderer/index.d.ts +0 -12
- package/dist/modules/TrackRenderer/render-implements.d.ts +0 -19
- package/dist/modules/TrackRenderer/track-pic.d.ts +0 -8
- package/dist/modules/TrackRenderer/track-subtitle.d.ts +0 -8
- package/dist/modules/cache-manager.d.ts +0 -5
- package/dist/modules/decoder.d.ts +0 -84
- package/dist/modules/error-handle.d.ts +0 -17
- package/dist/modules/network.d.ts +0 -21
- package/dist/modules/sentry-reporter.d.ts +0 -58
- package/dist/proto/face_data_pb.d.ts +0 -0
- package/dist/types/capability.d.ts +0 -15
- package/dist/types/error.d.ts +0 -70
- package/dist/types/event.d.ts +0 -25
- package/dist/types/frame-data.d.ts +0 -107
- package/dist/types/index.d.ts +0 -196
- package/dist/types/render.d.ts +0 -18
- package/dist/utils/DataInterface.d.ts +0 -113
- package/dist/utils/GLDevice.d.ts +0 -46
- package/dist/utils/GLPipeline.d.ts +0 -84
- package/dist/utils/GLPipelineDebugTools.d.ts +0 -5
- package/dist/utils/Math.d.ts +0 -21
- package/dist/utils/__tests__/capability-checker.test.d.ts +0 -1
- package/dist/utils/audio-session.d.ts +0 -11
- package/dist/utils/audio.d.ts +0 -1
- package/dist/utils/capability-checker.d.ts +0 -28
- package/dist/utils/encodeToken.d.ts +0 -14
- package/dist/utils/face.d.ts +0 -1
- package/dist/utils/float32-decoder.d.ts +0 -26
- package/dist/utils/fpsTracker.d.ts +0 -27
- package/dist/utils/index.d.ts +0 -22
- package/dist/utils/logger.d.ts +0 -9
- package/dist/utils/media-recorder-timestamp.d.ts +0 -15
- package/dist/utils/pcmAnalyzer.d.ts +0 -40
- package/dist/utils/perfermance.d.ts +0 -15
- package/dist/utils/request.d.ts +0 -20
- package/dist/utils/requestAnimateFrames.d.ts +0 -31
- package/dist/utils/time.d.ts +0 -9
- package/dist/utils/video-probe-asset.d.ts +0 -28
- package/dist/view/DebugOverlay.d.ts +0 -54
- package/dist/worker/streaming-video.d.ts +0 -1
- package/src/baseRender/AudioRenderer.ts +0 -328
- package/src/baseRender/AudioWorklet.ts +0 -776
- package/src/baseRender/AvatarRenderer.ts +0 -1550
- package/src/baseRender/MSEAudioPlayer.ts +0 -254
- package/src/baseRender/UIRenderer.ts +0 -195
- package/src/baseRender/pcm-audio-processor.js +0 -267
- package/src/control/APIForwarder.ts +0 -67
- package/src/control/DataCacheQueue.ts +0 -372
- package/src/control/EventDispatcher.ts +0 -106
- package/src/control/RenderScheduler.ts +0 -1000
- package/src/control/SaveAndDownload.js +0 -77
- package/src/control/StreamingClient.ts +0 -138
- package/src/control/VideoPlayer.ts +0 -306
- package/src/control/ttsa.ts +0 -754
- package/src/encoding/media-recorder-encoder.ts +0 -175
- package/src/encoding/pcm-webm-encoder.ts +0 -72
- package/src/encoding/webcodec-opus-encoder.ts +0 -258
- package/src/encoding/webm-muxer.ts +0 -337
- package/src/global.d.ts +0 -112
- package/src/index.ts +0 -2053
- package/src/modules/Composition.ts +0 -79
- package/src/modules/ResourceManager.ts +0 -926
- package/src/modules/TrackRenderer/base-track.ts +0 -7
- package/src/modules/TrackRenderer/index.ts +0 -40
- package/src/modules/TrackRenderer/render-implements.ts +0 -269
- package/src/modules/TrackRenderer/track-pic.ts +0 -19
- package/src/modules/TrackRenderer/track-subtitle.ts +0 -16
- package/src/modules/cache-manager.ts +0 -10
- package/src/modules/decoder.ts +0 -548
- package/src/modules/error-handle.ts +0 -20
- package/src/modules/network.ts +0 -71
- package/src/modules/sentry-reporter.ts +0 -171
- package/src/proto/face_data.proto +0 -45
- package/src/proto/face_data_pb.js +0 -1297
- package/src/proto/protobuf.min.js +0 -8
- package/src/types/capability.ts +0 -24
- package/src/types/error.ts +0 -211
- package/src/types/event.ts +0 -38
- package/src/types/frame-data.ts +0 -121
- package/src/types/index.ts +0 -220
- package/src/types/render.ts +0 -18
- package/src/utils/DataInterface.ts +0 -746
- package/src/utils/GLDevice.ts +0 -286
- package/src/utils/GLPipeline.ts +0 -1293
- package/src/utils/GLPipelineDebugTools.ts +0 -174
- package/src/utils/Math.ts +0 -266
- package/src/utils/__tests__/capability-checker.test.ts +0 -159
- package/src/utils/audio-session.ts +0 -144
- package/src/utils/audio.ts +0 -44
- package/src/utils/blueimp-md5.d.ts +0 -3
- package/src/utils/capability-checker.ts +0 -762
- package/src/utils/encodeToken.ts +0 -115
- package/src/utils/face.ts +0 -29
- package/src/utils/float32-decoder.js +0 -130
- package/src/utils/fpsTracker.ts +0 -100
- package/src/utils/index.ts +0 -182
- package/src/utils/logger.js +0 -36
- package/src/utils/media-recorder-timestamp.ts +0 -79
- package/src/utils/pcmAnalyzer.ts +0 -154
- package/src/utils/perfermance.ts +0 -141
- package/src/utils/request.ts +0 -107
- package/src/utils/requestAnimateFrames.ts +0 -195
- package/src/utils/time.ts +0 -32
- package/src/utils/video-probe-asset.ts +0 -99
- package/src/view/DebugOverlay.ts +0 -409
- package/src/worker/streaming-video.ts +0 -4647
- /package/{dist → package-dist}/agent/index.cjs +0 -0
- /package/{dist → package-dist}/agent/index.umd.js +0 -0
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
export type WebAudioSessionType = "playback" | "play-and-record";
|
|
2
|
-
|
|
3
|
-
type WebAudioSession = {
|
|
4
|
-
type: string;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
type NavigatorWithAudioSession = Navigator & {
|
|
8
|
-
audioSession?: WebAudioSession;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
type WebAudioPlaybackSessionRestoredListener = () => void;
|
|
12
|
-
|
|
13
|
-
const captureStates = new WeakMap<
|
|
14
|
-
WebAudioSession,
|
|
15
|
-
{ count: number; previousType: string }
|
|
16
|
-
>();
|
|
17
|
-
const playbackSessionRestoredListeners = new WeakMap<
|
|
18
|
-
WebAudioSession,
|
|
19
|
-
Set<WebAudioPlaybackSessionRestoredListener>
|
|
20
|
-
>();
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Keep Web Audio audible through the iOS Ring/Silent switch. Do not override
|
|
24
|
-
* a play-and-record session that may belong to an active microphone track.
|
|
25
|
-
*/
|
|
26
|
-
export function configureWebAudioPlaybackSession(
|
|
27
|
-
target: Navigator = navigator,
|
|
28
|
-
): boolean {
|
|
29
|
-
const audioSession = getAudioSession(target);
|
|
30
|
-
if (!audioSession) {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const captureState = captureStates.get(audioSession);
|
|
35
|
-
if (captureState?.count || audioSession.type === "play-and-record") {
|
|
36
|
-
return setAudioSessionType(audioSession, "play-and-record");
|
|
37
|
-
}
|
|
38
|
-
return setAudioSessionType(audioSession, "playback");
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function beginWebAudioCaptureSession(
|
|
42
|
-
target: Navigator = navigator,
|
|
43
|
-
): boolean {
|
|
44
|
-
const audioSession = getAudioSession(target);
|
|
45
|
-
if (!audioSession) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const existingState = captureStates.get(audioSession);
|
|
50
|
-
const previousType = existingState?.previousType ?? audioSession.type;
|
|
51
|
-
if (!setAudioSessionType(audioSession, "play-and-record")) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
captureStates.set(audioSession, {
|
|
56
|
-
count: (existingState?.count ?? 0) + 1,
|
|
57
|
-
previousType,
|
|
58
|
-
});
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export function subscribeWebAudioPlaybackSessionRestored(
|
|
63
|
-
listener: WebAudioPlaybackSessionRestoredListener,
|
|
64
|
-
target: Navigator = navigator,
|
|
65
|
-
): () => void {
|
|
66
|
-
const audioSession = getAudioSession(target);
|
|
67
|
-
if (!audioSession) {
|
|
68
|
-
return () => {};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
let listeners = playbackSessionRestoredListeners.get(audioSession);
|
|
72
|
-
if (!listeners) {
|
|
73
|
-
listeners = new Set();
|
|
74
|
-
playbackSessionRestoredListeners.set(audioSession, listeners);
|
|
75
|
-
}
|
|
76
|
-
listeners.add(listener);
|
|
77
|
-
|
|
78
|
-
return () => {
|
|
79
|
-
listeners?.delete(listener);
|
|
80
|
-
if (listeners?.size === 0) {
|
|
81
|
-
playbackSessionRestoredListeners.delete(audioSession);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export function endWebAudioCaptureSession(
|
|
87
|
-
target: Navigator = navigator,
|
|
88
|
-
): boolean {
|
|
89
|
-
const audioSession = getAudioSession(target);
|
|
90
|
-
if (!audioSession) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const captureState = captureStates.get(audioSession);
|
|
95
|
-
if (!captureState) {
|
|
96
|
-
return configureWebAudioPlaybackSession(target);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
captureState.count -= 1;
|
|
100
|
-
if (captureState.count > 0) {
|
|
101
|
-
return setAudioSessionType(audioSession, "play-and-record");
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
captureStates.delete(audioSession);
|
|
105
|
-
const nextType = captureState.previousType === "play-and-record"
|
|
106
|
-
? "play-and-record"
|
|
107
|
-
: "playback";
|
|
108
|
-
const updated = setAudioSessionType(audioSession, nextType);
|
|
109
|
-
if (updated && nextType === "playback") {
|
|
110
|
-
notifyPlaybackSessionRestored(audioSession);
|
|
111
|
-
}
|
|
112
|
-
return updated;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function notifyPlaybackSessionRestored(audioSession: WebAudioSession): void {
|
|
116
|
-
const listeners = playbackSessionRestoredListeners.get(audioSession);
|
|
117
|
-
if (!listeners) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
for (const listener of [...listeners]) {
|
|
122
|
-
try {
|
|
123
|
-
listener();
|
|
124
|
-
} catch {
|
|
125
|
-
// Playback recovery must never break microphone cleanup.
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
function getAudioSession(target: Navigator): WebAudioSession | undefined {
|
|
131
|
-
return (target as NavigatorWithAudioSession).audioSession;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function setAudioSessionType(
|
|
135
|
-
audioSession: WebAudioSession,
|
|
136
|
-
type: WebAudioSessionType,
|
|
137
|
-
): boolean {
|
|
138
|
-
try {
|
|
139
|
-
audioSession.type = type;
|
|
140
|
-
return audioSession.type === type;
|
|
141
|
-
} catch {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
}
|
package/src/utils/audio.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// PCM转WAV的辅助函数
|
|
2
|
-
export function pcmToWav(pcmData: Uint8Array) {
|
|
3
|
-
const wavHeader = new ArrayBuffer(44);
|
|
4
|
-
const view = new DataView(wavHeader);
|
|
5
|
-
|
|
6
|
-
/* RIFF identifier */
|
|
7
|
-
writeString(view, 0, "RIFF");
|
|
8
|
-
/* RIFF chunk length */
|
|
9
|
-
view.setUint32(4, 36 + pcmData.length, true);
|
|
10
|
-
/* RIFF type */
|
|
11
|
-
writeString(view, 8, "WAVE");
|
|
12
|
-
/* format chunk identifier */
|
|
13
|
-
writeString(view, 12, "fmt ");
|
|
14
|
-
/* format chunk length */
|
|
15
|
-
view.setUint32(16, 16, true);
|
|
16
|
-
/* sample format (raw) */
|
|
17
|
-
view.setUint16(20, 1, true);
|
|
18
|
-
/* channel count */
|
|
19
|
-
view.setUint16(22, 1, true); // mono
|
|
20
|
-
/* sample rate */
|
|
21
|
-
view.setUint32(24, 24000, true);
|
|
22
|
-
/* byte rate (sample rate * block align) */
|
|
23
|
-
view.setUint32(28, 24000 * 2, true);
|
|
24
|
-
/* block align (channel count * bytes per sample) */
|
|
25
|
-
view.setUint16(32, 2, true);
|
|
26
|
-
/* bits per sample */
|
|
27
|
-
view.setUint16(34, 16, true);
|
|
28
|
-
/* data chunk identifier */
|
|
29
|
-
writeString(view, 36, "data");
|
|
30
|
-
/* data chunk length */
|
|
31
|
-
view.setUint32(40, pcmData.length, true);
|
|
32
|
-
|
|
33
|
-
const wavData = new Uint8Array(wavHeader.byteLength + pcmData.length);
|
|
34
|
-
wavData.set(new Uint8Array(wavHeader), 0);
|
|
35
|
-
wavData.set(new Uint8Array(pcmData), wavHeader.byteLength);
|
|
36
|
-
|
|
37
|
-
return wavData.buffer;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function writeString(view: DataView, offset: number, string: string) {
|
|
41
|
-
for (let i = 0; i < string.length; i++) {
|
|
42
|
-
view.setUint8(offset + i, string.charCodeAt(i));
|
|
43
|
-
}
|
|
44
|
-
}
|