コード例 #1
0
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;
}
コード例 #2
0
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);
        }
    }
}
コード例 #3
0
ファイル: audiohandler.c プロジェクト: rbrito/pkg-handbrake
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;
}