| @@ -2141,6 +2141,17 @@ static av_cold int validate_options(AC3EncodeContext *s) | |||||
| s->bit_alloc.sr_code = i % 3; | s->bit_alloc.sr_code = i % 3; | ||||
| s->bitstream_id = s->eac3 ? 16 : 8 + s->bit_alloc.sr_shift; | s->bitstream_id = s->eac3 ? 16 : 8 + s->bit_alloc.sr_shift; | ||||
| /* select a default bit rate if not set by the user */ | |||||
| if (!avctx->bit_rate) { | |||||
| switch (s->fbw_channels) { | |||||
| case 1: avctx->bit_rate = 96000; break; | |||||
| case 2: avctx->bit_rate = 192000; break; | |||||
| case 3: avctx->bit_rate = 320000; break; | |||||
| case 4: avctx->bit_rate = 384000; break; | |||||
| case 5: avctx->bit_rate = 448000; break; | |||||
| } | |||||
| } | |||||
| /* validate bit rate */ | /* validate bit rate */ | ||||
| if (s->eac3) { | if (s->eac3) { | ||||
| int max_br, min_br, wpf, min_br_dist, min_br_code; | int max_br, min_br, wpf, min_br_dist, min_br_code; | ||||
| @@ -151,4 +151,5 @@ AVCodec ff_ac3_fixed_encoder = { | |||||
| .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"), | .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"), | ||||
| .priv_class = &ac3enc_class, | .priv_class = &ac3enc_class, | ||||
| .channel_layouts = ff_ac3_channel_layouts, | .channel_layouts = ff_ac3_channel_layouts, | ||||
| .defaults = ac3_defaults, | |||||
| }; | }; | ||||
| @@ -149,5 +149,6 @@ AVCodec ff_ac3_encoder = { | |||||
| .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"), | .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"), | ||||
| .priv_class = &ac3enc_class, | .priv_class = &ac3enc_class, | ||||
| .channel_layouts = ff_ac3_channel_layouts, | .channel_layouts = ff_ac3_channel_layouts, | ||||
| .defaults = ac3_defaults, | |||||
| }; | }; | ||||
| #endif | #endif | ||||
| @@ -20,6 +20,7 @@ | |||||
| */ | */ | ||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
| #include "internal.h" | |||||
| #include "ac3.h" | #include "ac3.h" | ||||
| #if AC3ENC_TYPE == AC3ENC_TYPE_AC3_FIXED | #if AC3ENC_TYPE == AC3ENC_TYPE_AC3_FIXED | ||||
| @@ -78,3 +79,8 @@ static const AVOption eac3_options[] = { | |||||
| {"auto", "Selected by the Encoder", 0, AV_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_AUTO }, INT_MIN, INT_MAX, AC3ENC_PARAM, "cpl_start_band"}, | {"auto", "Selected by the Encoder", 0, AV_OPT_TYPE_CONST, {.dbl = AC3ENC_OPT_AUTO }, INT_MIN, INT_MAX, AC3ENC_PARAM, "cpl_start_band"}, | ||||
| {NULL} | {NULL} | ||||
| }; | }; | ||||
| static const AVCodecDefault ac3_defaults[] = { | |||||
| { "b", "0" }, | |||||
| { NULL } | |||||
| }; | |||||
| @@ -258,5 +258,6 @@ AVCodec ff_eac3_encoder = { | |||||
| .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52 E-AC-3"), | .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52 E-AC-3"), | ||||
| .priv_class = &eac3enc_class, | .priv_class = &eac3enc_class, | ||||
| .channel_layouts = ff_ac3_channel_layouts, | .channel_layouts = ff_ac3_channel_layouts, | ||||
| .defaults = ac3_defaults, | |||||
| }; | }; | ||||
| #endif | #endif | ||||