网上演练贵港万达广场(人员密集)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

70 lines
2.1 KiB

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
namespace UTJ.FrameCapturer
{
[Serializable]
public class AudioEncoderConfigs
{
public AudioEncoder.Type format = AudioEncoder.Type.Flac;
public fcAPI.fcWaveConfig waveEncoderSettings = fcAPI.fcWaveConfig.default_value;
public fcAPI.fcOggConfig oggEncoderSettings = fcAPI.fcOggConfig.default_value;
public fcAPI.fcFlacConfig flacEncoderSettings = fcAPI.fcFlacConfig.default_value;
public void Setup()
{
}
}
public abstract class AudioEncoder : EncoderBase
{
public enum Type
{
Wave,
Ogg,
Flac,
}
static public Type[] GetAvailableEncoderTypes()
{
var ret = new List<Type>();
if (fcAPI.fcWaveIsSupported()) { ret.Add(Type.Wave); }
if (fcAPI.fcOggIsSupported()) { ret.Add(Type.Ogg); }
if (fcAPI.fcFlacIsSupported()) { ret.Add(Type.Flac); }
return ret.ToArray();
}
public abstract Type type { get; }
// config: config struct (fcGifConfig, fcWebMConfig, etc)
public abstract void Initialize(object config, string outPath);
public abstract void AddAudioSamples(float[] samples);
public static AudioEncoder Create(Type t)
{
switch (t)
{
case Type.Wave: return new WaveEncoder();
case Type.Ogg: return new OggEncoder();
case Type.Flac: return new FlacEncoder();
}
return null;
}
public static AudioEncoder Create(AudioEncoderConfigs c, string path)
{
var ret = Create(c.format);
switch (c.format)
{
case Type.Wave: ret.Initialize(c.waveEncoderSettings, path); break;
case Type.Ogg: ret.Initialize(c.oggEncoderSettings, path); break;
case Type.Flac: ret.Initialize(c.flacEncoderSettings, path); break;
}
return ret;
}
}
}