Fix Conversion API process callbacks being called *before* other transformations (fixes #403), restructure Conversion API to make full use of in-source transformations, add AudioSample.trim()

This commit is contained in:
Vanilagy
2026-06-15 18:30:16 +02:00
parent 0da1107858
commit 8b9a1acf16
7 changed files with 369 additions and 238 deletions
+10
View File
@@ -74,6 +74,8 @@ export type VideoEncodingConfig = {
* WebCodecs API, is created.
*/
onEncoderConfig?: (config: VideoEncoderConfig) => unknown;
/** Called right before a sample is passed to the encoder. */
onEncodedSample?: (sample: VideoSample) => unknown;
} & VideoEncodingAdditionalOptions;
/**
@@ -232,6 +234,9 @@ export const validateVideoEncodingConfig = (config: VideoEncodingConfig) => {
if (config.onEncoderConfig !== undefined && typeof config.onEncoderConfig !== 'function') {
throw new TypeError('config.onEncoderConfig, when provided, must be a function.');
}
if (config.onEncodedSample !== undefined && typeof config.onEncodedSample !== 'function') {
throw new TypeError('config.onEncodedSample, when provided, must be a function.');
}
validateVideoEncodingAdditionalOptions(config.codec, config);
};
@@ -382,6 +387,8 @@ export type AudioEncodingConfig = {
* WebCodecs API, is created.
*/
onEncoderConfig?: (config: AudioEncoderConfig) => unknown;
/** Called right before a sample is passed to the encoder. */
onEncodedSample?: (sample: AudioSample) => unknown;
} & AudioEncodingAdditionalOptions;
/**
@@ -462,6 +469,9 @@ export const validateAudioEncodingConfig = (config: AudioEncodingConfig) => {
if (config.onEncoderConfig !== undefined && typeof config.onEncoderConfig !== 'function') {
throw new TypeError('config.onEncoderConfig, when provided, must be a function.');
}
if (config.onEncodedSample !== undefined && typeof config.onEncodedSample !== 'function') {
throw new TypeError('config.onEncodedSample, when provided, must be a function.');
}
validateAudioEncodingAdditionalOptions(config.codec, config);
};