import FFMPEG_CODEC_AUDIO from './data/ffmpeg.codecs.audio.keys.json' assert { type: 'json' };
import FFMPEG_CODEC_CONTENT from './data/ffmpeg.codecs.json' assert { type: 'json' };
import FFMPEG_CODEC_SUBTITLE from './data/ffmpeg.codecs.subtitle.keys.json' assert { type: 'json' };
import FFMPEG_CODEC_VIDEO from './data/ffmpeg.codecs.video.keys.json' assert { type: 'json' };
import FFMPEG_DECODER_AUDIO from './data/ffmpeg.decoders.audio.keys.json' assert { type: 'json' };
import FFMPEG_DECODER_CONTENT from './data/ffmpeg.decoders.json' assert { type: 'json' };
import FFMPEG_DECODER_SUBTITLE from './data/ffmpeg.decoders.subtitle.keys.json' assert { type: 'json' };
import FFMPEG_DECODER_VIDEO from './data/ffmpeg.decoders.video.keys.json' assert { type: 'json' };
import FFMPEG_ENCODER_AUDIO from './data/ffmpeg.encoders.audio.keys.json' assert { type: 'json' };
import FFMPEG_ENCODER_CONTENT from './data/ffmpeg.encoders.json' assert { type: 'json' };
import FFMPEG_ENCODER_SUBTITLE from './data/ffmpeg.encoders.subtitle.keys.json' assert { type: 'json' };
import FFMPEG_ENCODER_VIDEO from './data/ffmpeg.encoders.video.keys.json' assert { type: 'json' };
import FFMPEG_FORMAT_CONTENT from './data/ffmpeg.formats.json' assert { type: 'json' };
import FFMPEG_FORMAT from './data/ffmpeg.formats.keys.json' assert { type: 'json' };
export const ffmpeg_codec_audio = {
    form: 'list',
    list: FFMPEG_CODEC_AUDIO,
};
export const ffmpeg_codec_content = {
    form: 'hash',
    hash: FFMPEG_CODEC_CONTENT,
    bond: {
        label: { like: 'string' },
        type: { like: 'string', need: false },
        supportsDecoding: { like: 'boolean' },
        supportsEncoding: { like: 'boolean' },
        intraFrameOnly: { like: 'boolean' },
        lossy: { like: 'boolean' },
        lossless: { like: 'boolean' },
    },
};
export const ffmpeg_codec_subtitle = {
    form: 'list',
    list: FFMPEG_CODEC_SUBTITLE,
};
export const ffmpeg_codec_video = {
    form: 'list',
    list: FFMPEG_CODEC_VIDEO,
};
export const ffmpeg_decoder_audio = {
    form: 'list',
    list: FFMPEG_DECODER_AUDIO,
};
export const ffmpeg_decoder_content = {
    form: 'hash',
    hash: FFMPEG_DECODER_CONTENT,
    bond: {
        label: { like: 'string' },
        type: { like: 'string' },
        frameLevelMultithreading: { like: 'boolean' },
        sliceLevelMultithreading: { like: 'boolean' },
        experimental: { like: 'boolean' },
        supportsDrawHorizontalBand: { like: 'boolean' },
        supportsDirectRenderingMethod1: { like: 'boolean' },
    },
};
export const ffmpeg_decoder_subtitle = {
    form: 'list',
    list: FFMPEG_DECODER_SUBTITLE,
};
export const ffmpeg_decoder_video = {
    form: 'list',
    list: FFMPEG_DECODER_VIDEO,
};
export const ffmpeg_encoder_audio = {
    form: 'list',
    list: FFMPEG_ENCODER_AUDIO,
};
export const ffmpeg_encoder_content = {
    form: 'hash',
    hash: FFMPEG_ENCODER_CONTENT,
    bond: {
        label: { like: 'string' },
        type: { like: 'string' },
        frameLevelMultithreading: { like: 'boolean' },
        sliceLevelMultithreading: { like: 'boolean' },
        experimental: { like: 'boolean' },
        supportsDrawHorizontalBand: { like: 'boolean' },
        supportsDirectRenderingMethod1: { like: 'boolean' },
    },
};
export const ffmpeg_encoder_subtitle = {
    form: 'list',
    list: FFMPEG_ENCODER_SUBTITLE,
};
export const ffmpeg_encoder_video = {
    form: 'list',
    list: FFMPEG_ENCODER_VIDEO,
};
export const ffmpeg_format_content = {
    form: 'hash',
    hash: FFMPEG_FORMAT_CONTENT,
    bond: {
        label: { like: 'string' },
        supportsDemuxing: { like: 'boolean' },
        supportsMuxing: { like: 'boolean' },
    },
};
export const ffmpeg_format = {
    form: 'list',
    list: FFMPEG_FORMAT,
};
export const build_command_to_remove_audio_from_video_with_ffmpeg = {
    form: 'form',
    link: {
        inputPath: { like: 'string' },
        outputPath: { like: 'string' },
    },
};
export const build_command_to_add_audio_to_video_with_ffmpeg = {
    form: 'form',
    link: {
        inputVideoPath: { like: 'string' },
        inputAudioPath: { like: 'string' },
        outputPath: { like: 'string' },
        audioCodec: { like: 'string', base: 'aac' },
        fit: { like: 'boolean' },
    },
};
export const build_command_to_convert_video_to_audio_with_ffmpeg = {
    form: 'form',
    link: {
        inputPath: { like: 'string' },
        outputPath: { like: 'string' },
    },
};
export const build_command_to_convert_video_with_ffmpeg_base = {
    form: 'form',
    link: {
        audioCodec: { like: 'ffmpeg_codec_audio', need: false },
        videoCodec: { like: 'ffmpeg_codec_video', need: false },
        audioBitRate: { like: 'integer', need: false },
        videoBitRate: { like: 'integer', need: false },
        frameRate: { like: 'integer', need: false },
        startTime: {
            need: false,
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
        endTime: {
            need: false,
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
        strict: {
            like: 'ffmpeg_strict_option',
            fall: 'strict',
            need: false,
        },
        overwrite: { like: 'boolean', need: false, fall: false },
        progress: { like: 'boolean', need: false, fall: false },
        scaleWidth: { like: 'integer', need: false },
        scaleHeight: { like: 'integer', need: false },
        audioChannels: { like: 'integer', need: false },
        audioSamplingFrequency: { like: 'integer', need: false },
        subtitleCodec: { like: 'ffmpeg_codec_subtitle', need: false },
        duration: {
            need: false,
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
        rotation: { like: 'decimal', need: false },
    },
};
export const build_command_to_convert_video_with_ffmpeg = {
    form: 'form',
    link: {
        inputPath: { like: 'string', need: false },
        outputPath: { like: 'string', need: false },
        inputExtension: { like: 'string', need: false },
        outputExtension: { like: 'string', need: false },
        input: { like: 'ArrayBuffer', need: false },
        output: { like: 'ArrayBuffer', need: false },
        ...build_command_to_convert_video_with_ffmpeg_base.link,
    },
};
export const build_command_to_convert_mp4_to_gif_with_ffmpeg = {
    form: 'form',
    link: {
        inputPath: { like: 'string' },
        outputPath: { like: 'string' },
        fps: { like: 'integer' },
        width: { like: 'integer' },
        startTime: {
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
        endTime: {
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
        duration: {
            case: [
                { like: 'integer', test: 'test_time_integer' },
                { like: 'string', test: 'test_time_string' },
            ],
        },
    },
};
export const ffmpeg_strict_option = {
    form: 'list',
    list: ['very', 'strict', 'normal', 'unofficial', 'experimental'],
};
export const ffmpeg_strict_option_content = {
    form: 'hash',
    link: 'ffmpeg_strict_option',
    bond: {
        note: { like: 'string' },
    },
    hash: {
        very: {
            note: 'Strictly conform to a older more strict version of the spec or reference software.',
        },
        strict: {
            note: 'Strictly conform to all the things in the spec no matter what consequences.',
        },
        normal: { note: '' },
        unofficial: { note: 'Allow unofficial extensions.' },
        experimental: {
            note: 'Allow non standardized experimental things.',
        },
    },
};
export const build_command_to_compress_mp4_with_ffmpeg = {
    form: 'form',
    link: {
        inputPath: { like: 'string' },
        outputPath: { like: 'string' },
        audioCodec: {
            like: 'ffmpeg_codec_audio',
            fall: 'aac',
            need: false,
        },
        videoCodec: {
            like: 'ffmpeg_codec_video',
            fall: 'h264',
            need: false,
        },
    },
};
//# sourceMappingURL=video.js.map