Commit 4e99501f authored by Justin Ruggles's avatar Justin Ruggles

(e)ac3enc: select a default bit rate based on the channel layout

parent 6aeea1df
...@@ -2141,6 +2141,17 @@ static av_cold int validate_options(AC3EncodeContext *s) ...@@ -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 = { ...@@ -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 = { ...@@ -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 @@ ...@@ -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[] = { ...@@ -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 = { ...@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment