mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-23 19:30:05 +00:00
mp3enc: Try to use a matching bitrate in the xing header.
Might Fix Ticket431 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
1fea432b7a
commit
40176fc314
@ -156,7 +156,9 @@ static int mp3_write_xing(AVFormatContext *s)
|
||||
{
|
||||
AVCodecContext *codec = s->streams[0]->codec;
|
||||
MP3Context *mp3 = s->priv_data;
|
||||
int bitrate_idx = 3;
|
||||
int bitrate_idx;
|
||||
int best_bitrate_idx;
|
||||
int best_bitrate_error= INT_MAX;
|
||||
int64_t xing_offset;
|
||||
int32_t mask, header;
|
||||
MPADecodeHeader c;
|
||||
@ -185,7 +187,17 @@ static int mp3_write_xing(AVFormatContext *s)
|
||||
header |= (srate_idx << 2) << 8;
|
||||
header |= channels << 6;
|
||||
|
||||
for (;; bitrate_idx++) {
|
||||
for (bitrate_idx=1; bitrate_idx<15; bitrate_idx++) {
|
||||
int error;
|
||||
avpriv_mpegaudio_decode_header(&c, header | (bitrate_idx << (4+8)));
|
||||
error= FFABS(c.bit_rate - codec->bit_rate);
|
||||
if(error < best_bitrate_error){
|
||||
best_bitrate_error= error;
|
||||
best_bitrate_idx = bitrate_idx;
|
||||
}
|
||||
}
|
||||
|
||||
for (bitrate_idx= best_bitrate_idx;; bitrate_idx++) {
|
||||
if (15 == bitrate_idx)
|
||||
return -1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user