completed audio recording implementation

This commit is contained in:
itsmattkc
2022-05-02 17:05:11 -07:00
parent 026cc9f064
commit ef515579df
19 changed files with 204 additions and 37 deletions
+3 -2
View File
@@ -211,6 +211,7 @@ ExportDialog::ExportDialog(ViewerOutput *viewer_node, QWidget *parent) :
video_tab_->pixel_format_field()->SetPixelFormat(static_cast<VideoParams::Format>(Config::Current()[QStringLiteral("OnlinePixelFormat")].toInt()));
video_tab_->interlaced_combobox()->SetInterlaceMode(vp.interlacing());
audio_tab_->sample_rate_combobox()->SetSampleRate(ap.sample_rate());
audio_tab_->sample_format_combobox()->SetSampleFormat(ap.format());
audio_tab_->channel_layout_combobox()->SetChannelLayout(ap.channel_layout());
video_aspect_ratio_ = static_cast<double>(vp.width()) / static_cast<double>(vp.height());
@@ -515,7 +516,7 @@ ExportParams ExportDialog::GenerateParams() const
AudioParams audio_render_params(audio_tab_->sample_rate_combobox()->currentData().toInt(),
audio_tab_->channel_layout_combobox()->GetChannelLayout(),
AudioParams::kInternalFormat);
audio_tab_->sample_format_combobox()->GetSampleFormat());
ExportParams params;
params.set_encoder(Encoder::GetTypeFromFormat(format_combobox_->GetFormat()));
@@ -553,7 +554,7 @@ ExportParams ExportDialog::GenerateParams() const
}
if (audio_enabled_->isChecked()) {
ExportCodec::Codec audio_codec = static_cast<ExportCodec::Codec>(audio_tab_->codec_combobox()->currentData().toInt());
ExportCodec::Codec audio_codec = audio_tab_->GetCodec();
params.EnableAudio(audio_render_params, audio_codec);
params.set_audio_bit_rate(audio_tab_->bit_rate_slider()->GetValue() * 1000);
+6 -4
View File
@@ -59,7 +59,9 @@ ExportAudioTab::ExportAudioTab(QWidget* parent) :
row++;
layout->addWidget(new QLabel(tr("Format:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
sample_format_combobox_ = new SampleFormatComboBox();
layout->addWidget(sample_format_combobox_, row, 1);
row++;
@@ -68,7 +70,7 @@ ExportAudioTab::ExportAudioTab(QWidget* parent) :
bit_rate_slider_ = new IntegerSlider();
bit_rate_slider_->SetMinimum(32);
bit_rate_slider_->SetMaximum(320);
bit_rate_slider_->SetValue(256);
bit_rate_slider_->SetValue(320);
bit_rate_slider_->SetFormat(tr("%1 kbps"));
layout->addWidget(bit_rate_slider_, row, 1);
@@ -79,9 +81,9 @@ int ExportAudioTab::SetFormat(ExportFormat::Format format)
{
QList<ExportCodec::Codec> acodecs = ExportFormat::GetAudioCodecs(format);
setEnabled(!acodecs.isEmpty());
codec_combobox()->clear();
codec_combobox_->clear();
foreach (ExportCodec::Codec acodec, acodecs) {
codec_combobox()->addItem(ExportCodec::GetCodecName(acodec), acodec);
codec_combobox_->addItem(ExportCodec::GetCodecName(acodec), acodec);
}
return acodecs.size();
}
+18 -2
View File
@@ -37,9 +37,19 @@ class ExportAudioTab : public QWidget
public:
ExportAudioTab(QWidget* parent = nullptr);
QComboBox* codec_combobox() const
ExportCodec::Codec GetCodec() const
{
return codec_combobox_;
return static_cast<ExportCodec::Codec>(codec_combobox_->currentData().toInt());
}
void SetCodec(ExportCodec::Codec c)
{
for (int i=0; i<codec_combobox_->count(); i++) {
if (codec_combobox_->itemData(i) == c) {
codec_combobox_->setCurrentIndex(i);
break;
}
}
}
SampleRateComboBox* sample_rate_combobox() const
@@ -47,6 +57,11 @@ public:
return sample_rate_combobox_;
}
SampleFormatComboBox* sample_format_combobox() const
{
return sample_format_combobox_;
}
ChannelLayoutComboBox* channel_layout_combobox() const
{
return channel_layout_combobox_;
@@ -64,6 +79,7 @@ private:
QComboBox* codec_combobox_;
SampleRateComboBox* sample_rate_combobox_;
ChannelLayoutComboBox* channel_layout_combobox_;
SampleFormatComboBox *sample_format_combobox_;
IntegerSlider* bit_rate_slider_;
};
+6 -2
View File
@@ -33,12 +33,16 @@ ExportFormatComboBox::ExportFormatComboBox(Mode mode, QWidget *parent) :
case kShowAllFormats:
break;
case kShowAudioOnly:
if (!ExportFormat::GetVideoCodecs(f).isEmpty()) {
if (!ExportFormat::GetVideoCodecs(f).isEmpty()
|| !ExportFormat::GetSubtitleCodecs(f).isEmpty()
|| ExportFormat::GetAudioCodecs(f).isEmpty()) {
continue;
}
break;
case kShowVideoOnly:
if (!ExportFormat::GetAudioCodecs(f).isEmpty()) {
if (ExportFormat::GetVideoCodecs(f).isEmpty()
|| !ExportFormat::GetSubtitleCodecs(f).isEmpty()
|| !ExportFormat::GetAudioCodecs(f).isEmpty()) {
continue;
}
break;