gint ghb_select_audio_codec(gint mux, hb_audio_config_t *aconfig, gint acodec, gint fallback, gint copy_mask) { guint32 in_codec = aconfig != NULL ? aconfig->in.codec : 0; if (acodec == HB_ACODEC_AUTO_PASS) { return hb_autopassthru_get_encoder(in_codec, copy_mask, fallback, mux); } // Sanitize fallback const hb_encoder_t *enc; for (enc = hb_audio_encoder_get_next(NULL); enc != NULL; enc = hb_audio_encoder_get_next(enc)) { if (enc->codec == fallback && !(enc->muxers & mux)) { if ( mux == HB_MUX_MKV ) fallback = HB_ACODEC_LAME; else fallback = HB_ACODEC_FAAC; break; } } if ((acodec & HB_ACODEC_PASS_FLAG) && !(acodec & in_codec & HB_ACODEC_PASS_MASK)) { return fallback; } for (enc = hb_audio_encoder_get_next(NULL); enc != NULL; enc = hb_audio_encoder_get_next(enc)) { if (enc->codec == acodec && !(enc->muxers & mux)) { return fallback; } } return acodec; }
int ghb_select_fallback( GValue *settings, int mux, int acodec ) { gint fallback = 0; switch ( acodec ) { case HB_ACODEC_MP3_PASS: return HB_ACODEC_LAME; case HB_ACODEC_AAC_PASS: return HB_ACODEC_FAAC; case HB_ACODEC_AC3_PASS: return HB_ACODEC_AC3; default: { fallback = ghb_settings_combo_int(settings, "AudioEncoderFallback"); return hb_autopassthru_get_encoder(acodec, 0, fallback, mux); } } }
gint ghb_select_audio_codec(gint mux, hb_audio_config_t *aconfig, gint acodec, gint fallback, gint copy_mask) { guint32 in_codec = aconfig != NULL ? aconfig->in.codec : 0; if (acodec == HB_ACODEC_AUTO_PASS) { return hb_autopassthru_get_encoder(in_codec, copy_mask, fallback, mux); } gint ii; // Sanitize fallback for (ii = 0; ii < hb_audio_encoders_count; ii++) { if (hb_audio_encoders[ii].encoder == fallback && !(hb_audio_encoders[ii].muxers & mux)) { if ( mux == HB_MUX_MKV ) fallback = HB_ACODEC_LAME; else fallback = HB_ACODEC_FAAC; break; } } if ((acodec & HB_ACODEC_PASS_FLAG) && !(acodec & in_codec & HB_ACODEC_PASS_MASK)) { return fallback; } for (ii = 0; ii < hb_audio_encoders_count; ii++) { if (hb_audio_encoders[ii].encoder == acodec && !(hb_audio_encoders[ii].muxers & mux)) { return fallback; } } return acodec; }