diff options
author | jstebbins <[email protected]> | 2011-10-18 21:51:01 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2011-10-18 21:51:01 +0000 |
commit | 4570769bdde73f0451f331da1e48ba80c437c399 (patch) | |
tree | 0a452b4340d55e22dcb9466a7f1ae7ce2c46f0bd | |
parent | df1968b6f1617e5a71d7140c5ec4a4305d674df3 (diff) |
better detection of Libav audio bitrate
For some codecs, Libav does not set the codec context bitrate. They
expect you to compute it from bits per sample, sample rate, and
channels.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4298 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | libhb/stream.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libhb/stream.c b/libhb/stream.c index a5401ec18..4d24be86d 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -4889,7 +4889,13 @@ static void add_ffmpeg_audio( hb_title_t *title, hb_stream_t *stream, int id ) } audio->config.in.codec_param = codec->codec_id; - audio->config.in.bitrate = codec->bit_rate? codec->bit_rate : 1; + int bps = av_get_bits_per_sample(codec->codec_id); + if( bps && codec->sample_rate && codec->channels ) + audio->config.in.bitrate = bps * codec->sample_rate * codec->channels; + else if( codec->bit_rate ) + audio->config.in.bitrate = codec->bit_rate; + else + audio->config.in.bitrate = 1; audio->config.in.samplerate = codec->sample_rate; audio->config.in.samples_per_frame = codec->frame_size; audio->config.in.channel_layout = layout; |