@@ -1664,9 +1664,9 @@ static void dprint_options(AC3EncodeContext *s) | |||||
if (opt->audio_production_info) { | if (opt->audio_production_info) { | ||||
av_dlog(avctx, "mixing_level: %ddB\n", opt->mixing_level); | av_dlog(avctx, "mixing_level: %ddB\n", opt->mixing_level); | ||||
switch (opt->room_type) { | switch (opt->room_type) { | ||||
case 0: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case 1: av_strlcpy(strbuf, "large", 32); break; | |||||
case 2: av_strlcpy(strbuf, "small", 32); break; | |||||
case AC3ENC_OPT_NOT_INDICATED: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case AC3ENC_OPT_LARGE_ROOM: av_strlcpy(strbuf, "large", 32); break; | |||||
case AC3ENC_OPT_SMALL_ROOM: av_strlcpy(strbuf, "small", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->room_type); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->room_type); | ||||
} | } | ||||
av_dlog(avctx, "room_type: %s\n", strbuf); | av_dlog(avctx, "room_type: %s\n", strbuf); | ||||
@@ -1678,9 +1678,9 @@ static void dprint_options(AC3EncodeContext *s) | |||||
av_dlog(avctx, "dialnorm: %ddB\n", opt->dialogue_level); | av_dlog(avctx, "dialnorm: %ddB\n", opt->dialogue_level); | ||||
if (s->channel_mode == AC3_CHMODE_STEREO) { | if (s->channel_mode == AC3_CHMODE_STEREO) { | ||||
switch (opt->dolby_surround_mode) { | switch (opt->dolby_surround_mode) { | ||||
case 0: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case 1: av_strlcpy(strbuf, "on", 32); break; | |||||
case 2: av_strlcpy(strbuf, "off", 32); break; | |||||
case AC3ENC_OPT_NOT_INDICATED: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case AC3ENC_OPT_MODE_ON: av_strlcpy(strbuf, "on", 32); break; | |||||
case AC3ENC_OPT_MODE_OFF: av_strlcpy(strbuf, "off", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_surround_mode); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_surround_mode); | ||||
} | } | ||||
av_dlog(avctx, "dsur_mode: %s\n", strbuf); | av_dlog(avctx, "dsur_mode: %s\n", strbuf); | ||||
@@ -1692,9 +1692,9 @@ static void dprint_options(AC3EncodeContext *s) | |||||
if (s->bitstream_id == 6) { | if (s->bitstream_id == 6) { | ||||
if (opt->extended_bsi_1) { | if (opt->extended_bsi_1) { | ||||
switch (opt->preferred_stereo_downmix) { | switch (opt->preferred_stereo_downmix) { | ||||
case 0: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case 1: av_strlcpy(strbuf, "ltrt", 32); break; | |||||
case 2: av_strlcpy(strbuf, "loro", 32); break; | |||||
case AC3ENC_OPT_NOT_INDICATED: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case AC3ENC_OPT_DOWNMIX_LTRT: av_strlcpy(strbuf, "ltrt", 32); break; | |||||
case AC3ENC_OPT_DOWNMIX_LORO: av_strlcpy(strbuf, "loro", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->preferred_stereo_downmix); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->preferred_stereo_downmix); | ||||
} | } | ||||
av_dlog(avctx, "dmix_mode: %s\n", strbuf); | av_dlog(avctx, "dmix_mode: %s\n", strbuf); | ||||
@@ -1711,23 +1711,23 @@ static void dprint_options(AC3EncodeContext *s) | |||||
} | } | ||||
if (opt->extended_bsi_2) { | if (opt->extended_bsi_2) { | ||||
switch (opt->dolby_surround_ex_mode) { | switch (opt->dolby_surround_ex_mode) { | ||||
case 0: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case 1: av_strlcpy(strbuf, "on", 32); break; | |||||
case 2: av_strlcpy(strbuf, "off", 32); break; | |||||
case AC3ENC_OPT_NOT_INDICATED: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case AC3ENC_OPT_MODE_ON: av_strlcpy(strbuf, "on", 32); break; | |||||
case AC3ENC_OPT_MODE_OFF: av_strlcpy(strbuf, "off", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_surround_ex_mode); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_surround_ex_mode); | ||||
} | } | ||||
av_dlog(avctx, "dsurex_mode: %s\n", strbuf); | av_dlog(avctx, "dsurex_mode: %s\n", strbuf); | ||||
switch (opt->dolby_headphone_mode) { | switch (opt->dolby_headphone_mode) { | ||||
case 0: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case 1: av_strlcpy(strbuf, "on", 32); break; | |||||
case 2: av_strlcpy(strbuf, "off", 32); break; | |||||
case AC3ENC_OPT_NOT_INDICATED: av_strlcpy(strbuf, "notindicated", 32); break; | |||||
case AC3ENC_OPT_MODE_ON: av_strlcpy(strbuf, "on", 32); break; | |||||
case AC3ENC_OPT_MODE_OFF: av_strlcpy(strbuf, "off", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_headphone_mode); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->dolby_headphone_mode); | ||||
} | } | ||||
av_dlog(avctx, "dheadphone_mode: %s\n", strbuf); | av_dlog(avctx, "dheadphone_mode: %s\n", strbuf); | ||||
switch (opt->ad_converter_type) { | switch (opt->ad_converter_type) { | ||||
case 0: av_strlcpy(strbuf, "standard", 32); break; | |||||
case 1: av_strlcpy(strbuf, "hdcd", 32); break; | |||||
case AC3ENC_OPT_ADCONV_STANDARD: av_strlcpy(strbuf, "standard", 32); break; | |||||
case AC3ENC_OPT_ADCONV_HDCD: av_strlcpy(strbuf, "hdcd", 32); break; | |||||
default: snprintf(strbuf, 32, "ERROR (%d)", opt->ad_converter_type); | default: snprintf(strbuf, 32, "ERROR (%d)", opt->ad_converter_type); | ||||
} | } | ||||
av_dlog(avctx, "ad_conv_type: %s\n", strbuf); | av_dlog(avctx, "ad_conv_type: %s\n", strbuf); | ||||
@@ -1791,7 +1791,7 @@ int ff_ac3_validate_metadata(AC3EncodeContext *s) | |||||
opt->eac3_info_metadata = 0; | opt->eac3_info_metadata = 0; | ||||
/* determine mixing metadata / xbsi1 use */ | /* determine mixing metadata / xbsi1 use */ | ||||
if (s->channel_mode > AC3_CHMODE_STEREO && opt->preferred_stereo_downmix >= 0) { | |||||
if (s->channel_mode > AC3_CHMODE_STEREO && opt->preferred_stereo_downmix != AC3ENC_OPT_NONE) { | |||||
opt->extended_bsi_1 = 1; | opt->extended_bsi_1 = 1; | ||||
opt->eac3_mixing_metadata = 1; | opt->eac3_mixing_metadata = 1; | ||||
} | } | ||||
@@ -1810,28 +1810,29 @@ int ff_ac3_validate_metadata(AC3EncodeContext *s) | |||||
/* determine info metadata use */ | /* determine info metadata use */ | ||||
if (avctx->audio_service_type != AV_AUDIO_SERVICE_TYPE_MAIN) | if (avctx->audio_service_type != AV_AUDIO_SERVICE_TYPE_MAIN) | ||||
opt->eac3_info_metadata = 1; | opt->eac3_info_metadata = 1; | ||||
if (opt->copyright >= 0 || opt->original >= 0) | |||||
if (opt->copyright != AC3ENC_OPT_NONE || opt->original != AC3ENC_OPT_NONE) | |||||
opt->eac3_info_metadata = 1; | opt->eac3_info_metadata = 1; | ||||
if (s->channel_mode == AC3_CHMODE_STEREO && | if (s->channel_mode == AC3_CHMODE_STEREO && | ||||
(opt->dolby_headphone_mode >= 0 || opt->dolby_surround_mode >= 0)) | |||||
(opt->dolby_headphone_mode != AC3ENC_OPT_NONE || opt->dolby_surround_mode != AC3ENC_OPT_NONE)) | |||||
opt->eac3_info_metadata = 1; | opt->eac3_info_metadata = 1; | ||||
if (s->channel_mode >= AC3_CHMODE_2F2R && opt->dolby_surround_ex_mode >= 0) | |||||
if (s->channel_mode >= AC3_CHMODE_2F2R && opt->dolby_surround_ex_mode != AC3ENC_OPT_NONE) | |||||
opt->eac3_info_metadata = 1; | opt->eac3_info_metadata = 1; | ||||
if (opt->mixing_level >= 0 || opt->room_type >= 0 || opt->ad_converter_type >= 0) { | |||||
if (opt->mixing_level != AC3ENC_OPT_NONE || opt->room_type != AC3ENC_OPT_NONE || | |||||
opt->ad_converter_type != AC3ENC_OPT_NONE) { | |||||
opt->audio_production_info = 1; | opt->audio_production_info = 1; | ||||
opt->eac3_info_metadata = 1; | opt->eac3_info_metadata = 1; | ||||
} | } | ||||
} else { | } else { | ||||
/* determine audio production info use */ | /* determine audio production info use */ | ||||
if (opt->mixing_level >= 0 || opt->room_type >= 0) | |||||
if (opt->mixing_level != AC3ENC_OPT_NONE || opt->room_type != AC3ENC_OPT_NONE) | |||||
opt->audio_production_info = 1; | opt->audio_production_info = 1; | ||||
/* determine xbsi2 use */ | /* determine xbsi2 use */ | ||||
if (s->channel_mode >= AC3_CHMODE_2F2R && opt->dolby_surround_ex_mode >= 0) | |||||
if (s->channel_mode >= AC3_CHMODE_2F2R && opt->dolby_surround_ex_mode != AC3ENC_OPT_NONE) | |||||
opt->extended_bsi_2 = 1; | opt->extended_bsi_2 = 1; | ||||
if (s->channel_mode == AC3_CHMODE_STEREO && opt->dolby_headphone_mode >= 0) | |||||
if (s->channel_mode == AC3_CHMODE_STEREO && opt->dolby_headphone_mode != AC3ENC_OPT_NONE) | |||||
opt->extended_bsi_2 = 1; | opt->extended_bsi_2 = 1; | ||||
if (opt->ad_converter_type >= 0) | |||||
if (opt->ad_converter_type != AC3ENC_OPT_NONE) | |||||
opt->extended_bsi_2 = 1; | opt->extended_bsi_2 = 1; | ||||
} | } | ||||
@@ -1852,8 +1853,8 @@ int ff_ac3_validate_metadata(AC3EncodeContext *s) | |||||
/* validate extended bsi 1 / mixing metadata */ | /* validate extended bsi 1 / mixing metadata */ | ||||
if (opt->extended_bsi_1 || opt->eac3_mixing_metadata) { | if (opt->extended_bsi_1 || opt->eac3_mixing_metadata) { | ||||
/* default preferred stereo downmix */ | /* default preferred stereo downmix */ | ||||
if (opt->preferred_stereo_downmix < 0) | |||||
opt->preferred_stereo_downmix = 0; | |||||
if (opt->preferred_stereo_downmix == AC3ENC_OPT_NONE) | |||||
opt->preferred_stereo_downmix = AC3ENC_OPT_NOT_INDICATED; | |||||
if (!s->eac3 || s->has_center) { | if (!s->eac3 || s->has_center) { | ||||
/* validate Lt/Rt center mix level */ | /* validate Lt/Rt center mix level */ | ||||
validate_mix_level(avctx, "ltrt_center_mix_level", | validate_mix_level(avctx, "ltrt_center_mix_level", | ||||
@@ -1895,35 +1896,35 @@ int ff_ac3_validate_metadata(AC3EncodeContext *s) | |||||
/* validate extended bsi 2 / info metadata */ | /* validate extended bsi 2 / info metadata */ | ||||
if (opt->extended_bsi_2 || opt->eac3_info_metadata) { | if (opt->extended_bsi_2 || opt->eac3_info_metadata) { | ||||
/* default dolby headphone mode */ | /* default dolby headphone mode */ | ||||
if (opt->dolby_headphone_mode < 0) | |||||
opt->dolby_headphone_mode = 0; | |||||
if (opt->dolby_headphone_mode == AC3ENC_OPT_NONE) | |||||
opt->dolby_headphone_mode = AC3ENC_OPT_NOT_INDICATED; | |||||
/* default dolby surround ex mode */ | /* default dolby surround ex mode */ | ||||
if (opt->dolby_surround_ex_mode < 0) | |||||
opt->dolby_surround_ex_mode = 0; | |||||
if (opt->dolby_surround_ex_mode == AC3ENC_OPT_NONE) | |||||
opt->dolby_surround_ex_mode = AC3ENC_OPT_NOT_INDICATED; | |||||
/* default A/D converter type */ | /* default A/D converter type */ | ||||
if (opt->ad_converter_type < 0) | |||||
opt->ad_converter_type = 0; | |||||
if (opt->ad_converter_type == AC3ENC_OPT_NONE) | |||||
opt->ad_converter_type = AC3ENC_OPT_ADCONV_STANDARD; | |||||
} | } | ||||
/* copyright & original defaults */ | /* copyright & original defaults */ | ||||
if (!s->eac3 || opt->eac3_info_metadata) { | if (!s->eac3 || opt->eac3_info_metadata) { | ||||
/* default copyright */ | /* default copyright */ | ||||
if (opt->copyright < 0) | |||||
opt->copyright = 0; | |||||
if (opt->copyright == AC3ENC_OPT_NONE) | |||||
opt->copyright = AC3ENC_OPT_OFF; | |||||
/* default original */ | /* default original */ | ||||
if (opt->original < 0) | |||||
opt->original = 1; | |||||
if (opt->original == AC3ENC_OPT_NONE) | |||||
opt->original = AC3ENC_OPT_ON; | |||||
} | } | ||||
/* dolby surround mode default */ | /* dolby surround mode default */ | ||||
if (!s->eac3 || opt->eac3_info_metadata) { | if (!s->eac3 || opt->eac3_info_metadata) { | ||||
if (opt->dolby_surround_mode < 0) | |||||
opt->dolby_surround_mode = 0; | |||||
if (opt->dolby_surround_mode == AC3ENC_OPT_NONE) | |||||
opt->dolby_surround_mode = AC3ENC_OPT_NOT_INDICATED; | |||||
} | } | ||||
/* validate audio production info */ | /* validate audio production info */ | ||||
if (opt->audio_production_info) { | if (opt->audio_production_info) { | ||||
if (opt->mixing_level < 0) { | |||||
if (opt->mixing_level == AC3ENC_OPT_NONE) { | |||||
av_log(avctx, AV_LOG_ERROR, "mixing_level must be set if " | av_log(avctx, AV_LOG_ERROR, "mixing_level must be set if " | ||||
"room_type is set\n"); | "room_type is set\n"); | ||||
return AVERROR(EINVAL); | return AVERROR(EINVAL); | ||||
@@ -1934,8 +1935,8 @@ int ff_ac3_validate_metadata(AC3EncodeContext *s) | |||||
return AVERROR(EINVAL); | return AVERROR(EINVAL); | ||||
} | } | ||||
/* default room type */ | /* default room type */ | ||||
if (opt->room_type < 0) | |||||
opt->room_type = 0; | |||||
if (opt->room_type == AC3ENC_OPT_NONE) | |||||
opt->room_type = AC3ENC_OPT_NOT_INDICATED; | |||||
} | } | ||||
/* set bitstream id for alternate bitstream syntax */ | /* set bitstream id for alternate bitstream syntax */ | ||||
@@ -2207,12 +2208,12 @@ static av_cold void set_bandwidth(AC3EncodeContext *s) | |||||
/* initialize coupling strategy */ | /* initialize coupling strategy */ | ||||
if (s->cpl_enabled) { | if (s->cpl_enabled) { | ||||
if (s->options.cpl_start >= 0) { | |||||
if (s->options.cpl_start != AC3ENC_OPT_AUTO) { | |||||
cpl_start = s->options.cpl_start; | cpl_start = s->options.cpl_start; | ||||
} else { | } else { | ||||
cpl_start = ac3_coupling_start_tab[s->channel_mode-2][s->bit_alloc.sr_code][s->frame_size_code/2]; | cpl_start = ac3_coupling_start_tab[s->channel_mode-2][s->bit_alloc.sr_code][s->frame_size_code/2]; | ||||
if (cpl_start < 0) { | if (cpl_start < 0) { | ||||
if (s->options.channel_coupling < 0) | |||||
if (s->options.channel_coupling == AC3ENC_OPT_AUTO) | |||||
s->cpl_enabled = 0; | s->cpl_enabled = 0; | ||||
else | else | ||||
cpl_start = 15; | cpl_start = 15; | ||||
@@ -65,6 +65,23 @@ typedef int32_t CoefType; | |||||
typedef int64_t CoefSumType; | typedef int64_t CoefSumType; | ||||
#endif | #endif | ||||
/* common option values */ | |||||
#define AC3ENC_OPT_NONE -1 | |||||
#define AC3ENC_OPT_AUTO -1 | |||||
#define AC3ENC_OPT_OFF 0 | |||||
#define AC3ENC_OPT_ON 1 | |||||
#define AC3ENC_OPT_NOT_INDICATED 0 | |||||
#define AC3ENC_OPT_MODE_ON 1 | |||||
#define AC3ENC_OPT_MODE_OFF 2 | |||||
/* specific option values */ | |||||
#define AC3ENC_OPT_LARGE_ROOM 1 | |||||
#define AC3ENC_OPT_SMALL_ROOM 2 | |||||
#define AC3ENC_OPT_DOWNMIX_LTRT 1 | |||||
#define AC3ENC_OPT_DOWNMIX_LORO 2 | |||||
#define AC3ENC_OPT_ADCONV_STANDARD 0 | |||||
#define AC3ENC_OPT_ADCONV_HDCD 1 | |||||
/** | /** | ||||
* Encoding Options used by AVOption. | * Encoding Options used by AVOption. | ||||
@@ -37,46 +37,46 @@ static const AVOption eac3_options[] = { | |||||
{"surround_mixlev", "Surround Mix Level", OFFSET(surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = LEVEL_MINUS_6DB }, 0.0, 1.0, AC3ENC_PARAM}, | {"surround_mixlev", "Surround Mix Level", OFFSET(surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = LEVEL_MINUS_6DB }, 0.0, 1.0, AC3ENC_PARAM}, | ||||
#endif | #endif | ||||
/* audio production information */ | /* audio production information */ | ||||
{"mixing_level", "Mixing Level", OFFSET(mixing_level), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 111, AC3ENC_PARAM}, | |||||
{"room_type", "Room Type", OFFSET(room_type), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 2, AC3ENC_PARAM, "room_type"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
{"large", "Large Room", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
{"small", "Small Room", 0, FF_OPT_TYPE_CONST, {.dbl = 2 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
{"mixing_level", "Mixing Level", OFFSET(mixing_level), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, 111, AC3ENC_PARAM}, | |||||
{"room_type", "Room Type", OFFSET(room_type), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_SMALL_ROOM, AC3ENC_PARAM, "room_type"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_NOT_INDICATED }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
{"large", "Large Room", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_LARGE_ROOM }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
{"small", "Small Room", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_SMALL_ROOM }, INT_MIN, INT_MAX, AC3ENC_PARAM, "room_type"}, | |||||
/* other metadata options */ | /* other metadata options */ | ||||
{"copyright", "Copyright Bit", OFFSET(copyright), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 1, AC3ENC_PARAM}, | |||||
{"copyright", "Copyright Bit", OFFSET(copyright), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, 1, AC3ENC_PARAM}, | |||||
{"dialnorm", "Dialogue Level (dB)", OFFSET(dialogue_level), FF_OPT_TYPE_INT, {.dbl = -31 }, -31, -1, AC3ENC_PARAM}, | {"dialnorm", "Dialogue Level (dB)", OFFSET(dialogue_level), FF_OPT_TYPE_INT, {.dbl = -31 }, -31, -1, AC3ENC_PARAM}, | ||||
{"dsur_mode", "Dolby Surround Mode", OFFSET(dolby_surround_mode), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 2, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"on", "Dolby Surround Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"off", "Not Dolby Surround Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 2 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"original", "Original Bit Stream", OFFSET(original), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 1, AC3ENC_PARAM}, | |||||
{"dsur_mode", "Dolby Surround Mode", OFFSET(dolby_surround_mode), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_MODE_OFF, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_NOT_INDICATED }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"on", "Dolby Surround Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_ON }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"off", "Not Dolby Surround Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_OFF }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsur_mode"}, | |||||
{"original", "Original Bit Stream", OFFSET(original), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, 1, AC3ENC_PARAM}, | |||||
/* extended bitstream information */ | /* extended bitstream information */ | ||||
{"dmix_mode", "Preferred Stereo Downmix Mode", OFFSET(preferred_stereo_downmix), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 2, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"ltrt", "Lt/Rt Downmix Preferred", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"loro", "Lo/Ro Downmix Preferred", 0, FF_OPT_TYPE_CONST, {.dbl = 2 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"dmix_mode", "Preferred Stereo Downmix Mode", OFFSET(preferred_stereo_downmix), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_DOWNMIX_LORO, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_NOT_INDICATED }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"ltrt", "Lt/Rt Downmix Preferred", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_DOWNMIX_LTRT }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"loro", "Lo/Ro Downmix Preferred", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_DOWNMIX_LORO }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dmix_mode"}, | |||||
{"ltrt_cmixlev", "Lt/Rt Center Mix Level", OFFSET(ltrt_center_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | {"ltrt_cmixlev", "Lt/Rt Center Mix Level", OFFSET(ltrt_center_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | ||||
{"ltrt_surmixlev", "Lt/Rt Surround Mix Level", OFFSET(ltrt_surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | {"ltrt_surmixlev", "Lt/Rt Surround Mix Level", OFFSET(ltrt_surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | ||||
{"loro_cmixlev", "Lo/Ro Center Mix Level", OFFSET(loro_center_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | {"loro_cmixlev", "Lo/Ro Center Mix Level", OFFSET(loro_center_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | ||||
{"loro_surmixlev", "Lo/Ro Surround Mix Level", OFFSET(loro_surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | {"loro_surmixlev", "Lo/Ro Surround Mix Level", OFFSET(loro_surround_mix_level), FF_OPT_TYPE_FLOAT, {.dbl = -1.0 }, -1.0, 2.0, AC3ENC_PARAM}, | ||||
{"dsurex_mode", "Dolby Surround EX Mode", OFFSET(dolby_surround_ex_mode), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 2, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"on", "Dolby Surround EX Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"off", "Not Dolby Surround EX Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 2 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"dheadphone_mode", "Dolby Headphone Mode", OFFSET(dolby_headphone_mode), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 2, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"on", "Dolby Headphone Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"off", "Not Dolby Headphone Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = 2 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"ad_conv_type", "A/D Converter Type", OFFSET(ad_converter_type), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 1, AC3ENC_PARAM, "ad_conv_type"}, | |||||
{"standard", "Standard (default)", 0, FF_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "ad_conv_type"}, | |||||
{"hdcd", "HDCD", 0, FF_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "ad_conv_type"}, | |||||
{"dsurex_mode", "Dolby Surround EX Mode", OFFSET(dolby_surround_ex_mode), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_MODE_OFF, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_NOT_INDICATED }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"on", "Dolby Surround EX Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_ON }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"off", "Not Dolby Surround EX Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_OFF }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dsurex_mode"}, | |||||
{"dheadphone_mode", "Dolby Headphone Mode", OFFSET(dolby_headphone_mode), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_MODE_OFF, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"notindicated", "Not Indicated (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_NOT_INDICATED }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"on", "Dolby Headphone Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_ON }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"off", "Not Dolby Headphone Encoded", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_MODE_OFF }, INT_MIN, INT_MAX, AC3ENC_PARAM, "dheadphone_mode"}, | |||||
{"ad_conv_type", "A/D Converter Type", OFFSET(ad_converter_type), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_NONE }, AC3ENC_OPT_NONE, AC3ENC_OPT_ADCONV_HDCD, AC3ENC_PARAM, "ad_conv_type"}, | |||||
{"standard", "Standard (default)", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_ADCONV_STANDARD }, INT_MIN, INT_MAX, AC3ENC_PARAM, "ad_conv_type"}, | |||||
{"hdcd", "HDCD", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_ADCONV_HDCD }, INT_MIN, INT_MAX, AC3ENC_PARAM, "ad_conv_type"}, | |||||
/* Other Encoding Options */ | /* Other Encoding Options */ | ||||
{"stereo_rematrixing", "Stereo Rematrixing", OFFSET(stereo_rematrixing), FF_OPT_TYPE_INT, {.dbl = 1 }, 0, 1, AC3ENC_PARAM}, | |||||
{"stereo_rematrixing", "Stereo Rematrixing", OFFSET(stereo_rematrixing), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_ON }, AC3ENC_OPT_OFF, AC3ENC_OPT_ON, AC3ENC_PARAM}, | |||||
#if AC3ENC_TYPE != AC3ENC_TYPE_AC3_FIXED | #if AC3ENC_TYPE != AC3ENC_TYPE_AC3_FIXED | ||||
{"channel_coupling", "Channel Coupling", OFFSET(channel_coupling), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 1, AC3ENC_PARAM, "channel_coupling"}, | |||||
{"auto", "Selected by the Encoder", 0, FF_OPT_TYPE_CONST, {.dbl = -1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "channel_coupling"}, | |||||
{"cpl_start_band", "Coupling Start Band", OFFSET(cpl_start), FF_OPT_TYPE_INT, {.dbl = -1 }, -1, 15, AC3ENC_PARAM, "cpl_start_band"}, | |||||
{"auto", "Selected by the Encoder", 0, FF_OPT_TYPE_CONST, {.dbl = -1 }, INT_MIN, INT_MAX, AC3ENC_PARAM, "cpl_start_band"}, | |||||
{"channel_coupling", "Channel Coupling", OFFSET(channel_coupling), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_AUTO }, AC3ENC_OPT_AUTO, AC3ENC_OPT_ON, AC3ENC_PARAM, "channel_coupling"}, | |||||
{"auto", "Selected by the Encoder", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_AUTO }, INT_MIN, INT_MAX, AC3ENC_PARAM, "channel_coupling"}, | |||||
{"cpl_start_band", "Coupling Start Band", OFFSET(cpl_start), FF_OPT_TYPE_INT, {.dbl = AC3ENC_OPT_AUTO }, AC3ENC_OPT_AUTO, 15, AC3ENC_PARAM, "cpl_start_band"}, | |||||
{"auto", "Selected by the Encoder", 0, FF_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_AUTO }, INT_MIN, INT_MAX, AC3ENC_PARAM, "cpl_start_band"}, | |||||
#endif | #endif | ||||
{NULL} | {NULL} | ||||
}; | }; |