UI: Make bitrate map sample rate aware

This commit is contained in:
Palana 2015-08-10 14:57:39 +02:00
parent 979f00fd2d
commit 40b7a4c918

View File

@ -8,6 +8,8 @@
#include <vector> #include <vector>
#include "audio-encoders.hpp" #include "audio-encoders.hpp"
#include "obs-app.hpp"
#include "window-main.hpp"
using namespace std; using namespace std;
@ -64,6 +66,38 @@ static void HandleListProperty(obs_property_t *prop, const char *id)
} }
} }
static void HandleSampleRate(obs_property_t* prop, const char *id)
{
auto ReleaseData = [](obs_data_t *data)
{
obs_data_release(data);
};
std::unique_ptr<obs_data_t, decltype(ReleaseData)> data{
obs_encoder_defaults(id),
ReleaseData};
if (!data) {
blog(LOG_ERROR, "Failed to get defaults for encoder '%s' (%s) "
"while populating bitrate map",
EncoderName(id), id);
return;
}
auto main = reinterpret_cast<OBSMainWindow*>(App()->GetMainWindow());
if (!main) {
blog(LOG_ERROR, "Failed to get main window while populating "
"bitrate map");
return;
}
uint32_t sampleRate = config_get_uint(main->Config(), "Audio",
"SampleRate");
obs_data_set_int(data.get(), "samplerate", sampleRate);
obs_property_modified(prop, data.get());
}
static void HandleEncoderProperties(const char *id) static void HandleEncoderProperties(const char *id)
{ {
auto DestroyProperties = [](obs_properties_t *props) auto DestroyProperties = [](obs_properties_t *props)
@ -81,6 +115,11 @@ static void HandleEncoderProperties(const char *id)
return; return;
} }
obs_property_t *samplerate = obs_properties_get(props.get(),
"samplerate");
if (samplerate)
HandleSampleRate(samplerate, id);
obs_property_t *bitrate = obs_properties_get(props.get(), "bitrate"); obs_property_t *bitrate = obs_properties_get(props.get(), "bitrate");
obs_property_type type = obs_property_get_type(bitrate); obs_property_type type = obs_property_get_type(bitrate);