forked from mia/Aegisub
Avisynth audio provider: add option to allow no downmix
This commit is contained in:
parent
691ab820b8
commit
e2a49b3313
2 changed files with 9 additions and 7 deletions
|
@ -110,12 +110,14 @@ void AvisynthAudioProvider::LoadFromClip(AVSValue clip) {
|
||||||
if (!vi.HasAudio()) throw agi::AudioDataNotFound("No audio found.");
|
if (!vi.HasAudio()) throw agi::AudioDataNotFound("No audio found.");
|
||||||
|
|
||||||
IScriptEnvironment *env = avs_wrapper.GetEnv();
|
IScriptEnvironment *env = avs_wrapper.GetEnv();
|
||||||
|
AVSValue script;
|
||||||
|
|
||||||
// Convert to one channel
|
// Convert to one channel
|
||||||
AVSValue script = env->Invoke(OPT_GET("Audio/Downmixer")->GetString().c_str(), clip);
|
if (OPT_GET("Audio/Downmixer")->GetString() != "None")
|
||||||
|
script = env->Invoke(OPT_GET("Audio/Downmixer")->GetString().c_str(), clip);
|
||||||
|
else
|
||||||
|
script = clip;
|
||||||
|
|
||||||
// Convert to 16 bits per sample
|
|
||||||
script = env->Invoke("ConvertAudioTo16bit", script);
|
|
||||||
vi = script.AsClip()->GetVideoInfo();
|
vi = script.AsClip()->GetVideoInfo();
|
||||||
|
|
||||||
// Convert sample rate
|
// Convert sample rate
|
||||||
|
@ -135,8 +137,8 @@ void AvisynthAudioProvider::LoadFromClip(AVSValue clip) {
|
||||||
channels = vi.AudioChannels();
|
channels = vi.AudioChannels();
|
||||||
decoded_samples = num_samples = vi.num_audio_samples;
|
decoded_samples = num_samples = vi.num_audio_samples;
|
||||||
sample_rate = vi.SamplesPerSecond();
|
sample_rate = vi.SamplesPerSecond();
|
||||||
bytes_per_sample = vi.BytesPerAudioSample();
|
bytes_per_sample = vi.BytesPerChannelSample();
|
||||||
float_samples = false;
|
float_samples = vi.IsSampleType(SAMPLE_FLOAT);
|
||||||
|
|
||||||
this->clip = tempclip;
|
this->clip = tempclip;
|
||||||
}
|
}
|
||||||
|
|
|
@ -387,8 +387,8 @@ void Advanced_Audio(wxTreebook *book, Preferences *parent) {
|
||||||
|
|
||||||
#ifdef WITH_AVISYNTH
|
#ifdef WITH_AVISYNTH
|
||||||
auto avisynth = p->PageSizer("Avisynth");
|
auto avisynth = p->PageSizer("Avisynth");
|
||||||
const wxString adm_arr[3] = { "ConvertToMono", "GetLeftChannel", "GetRightChannel" };
|
const wxString adm_arr[4] = { "None", "ConvertToMono", "GetLeftChannel", "GetRightChannel" };
|
||||||
wxArrayString adm_choice(3, adm_arr);
|
wxArrayString adm_choice(4, adm_arr);
|
||||||
p->OptionChoice(avisynth, _("Avisynth down-mixer"), adm_choice, "Audio/Downmixer");
|
p->OptionChoice(avisynth, _("Avisynth down-mixer"), adm_choice, "Audio/Downmixer");
|
||||||
p->OptionAdd(avisynth, _("Force sample rate"), "Provider/Audio/AVS/Sample Rate");
|
p->OptionAdd(avisynth, _("Force sample rate"), "Provider/Audio/AVS/Sample Rate");
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue