{
gint br = ainfo.bitrate / 1000;
// Set the values for bitrate and samplerate to the input rates
- if (br >= 8)
+ if (br < 8)
+ br = 160;
+ if (ghb_audio_is_passthru (ainfo.codec))
+ {
ghb_set_passthru_bitrate_opts (ud->builder, br);
+ }
else
- br = 160;
+ {
+ acodec = ghb_select_audio_codec(ud, audioindex);
+ br = ghb_find_closest_audio_bitrate(acodec, br);
+ }
ghb_ui_update(ud, "AudioBitrate", ghb_int64_value(br));
ghb_ui_update(ud, "AudioSamplerate", ghb_int64_value(0));
ghb_ui_update(ud, "AudioMixdown", ghb_int64_value(0));
return result;
}
+gint
+ghb_find_closest_audio_bitrate(gint codec, gint rate)
+{
+ gint ii;
+ gint low = 32;
+ gint high = 768;
+ gint result;
+
+ if (codec == HB_ACODEC_FAAC)
+ high = 160;
+
+ result = high;
+ for (ii = 0; ii < hb_audio_bitrates_count; ii++)
+ {
+ if (hb_audio_bitrates[ii].rate < low)
+ continue;
+ if (hb_audio_bitrates[ii].rate > high)
+ break;
+ if (rate <= hb_audio_bitrates[ii].rate)
+ {
+ result = hb_audio_bitrates[ii].rate;
+ break;
+ }
+ }
+ return result;
+}
+
static gint
lookup_audio_bitrate_int(const GValue *rate)
{
if (audio == NULL) return FALSE; // Bad audioindex
ainfo->codec = audio->in.codec;
ainfo->bitrate = audio->in.bitrate;
+ ainfo->bitrate = 436000;
ainfo->samplerate = audio->in.samplerate;
return TRUE;
}
gchar* ghb_get_tmp_dir();
gint ghb_select_audio_codec(signal_user_data_t *ud, gint track);
const gchar* ghb_select_audio_codec_str(signal_user_data_t *ud, gint track);
+gint ghb_find_closest_audio_bitrate(gint codec, gint rate);
#endif // _HBBACKEND_H_