mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
Make sure ffmpeg chooses a supported samplerte if the encoder supports
just some. Originally committed as revision 22943 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
951776c478
commit
10d0f5e035
21
ffmpeg.c
21
ffmpeg.c
@ -485,6 +485,23 @@ static void choose_sample_fmt(AVStream *st, AVCodec *codec)
|
||||
}
|
||||
}
|
||||
|
||||
static void choose_sample_rate(AVStream *st, AVCodec *codec)
|
||||
{
|
||||
if(codec && codec->supported_samplerates){
|
||||
const int *p= codec->supported_samplerates;
|
||||
int best;
|
||||
int best_dist=INT_MAX;
|
||||
for(; *p; p++){
|
||||
int dist= abs(st->codec->sample_rate - *p);
|
||||
if(dist < best_dist){
|
||||
best_dist= dist;
|
||||
best= *p;
|
||||
}
|
||||
}
|
||||
st->codec->sample_rate= best;
|
||||
}
|
||||
}
|
||||
|
||||
static void choose_pixel_fmt(AVStream *st, AVCodec *codec)
|
||||
{
|
||||
if(codec && codec->pix_fmts){
|
||||
@ -3312,6 +3329,7 @@ static void new_audio_stream(AVFormatContext *oc)
|
||||
if (audio_stream_copy) {
|
||||
st->stream_copy = 1;
|
||||
audio_enc->channels = audio_channels;
|
||||
audio_enc->sample_rate = audio_sample_rate;
|
||||
} else {
|
||||
AVCodec *codec;
|
||||
|
||||
@ -3333,13 +3351,14 @@ static void new_audio_stream(AVFormatContext *oc)
|
||||
}
|
||||
audio_enc->channels = audio_channels;
|
||||
audio_enc->sample_fmt = audio_sample_fmt;
|
||||
audio_enc->sample_rate = audio_sample_rate;
|
||||
audio_enc->channel_layout = channel_layout;
|
||||
if (avcodec_channel_layout_num_channels(channel_layout) != audio_channels)
|
||||
audio_enc->channel_layout = 0;
|
||||
choose_sample_fmt(st, codec);
|
||||
choose_sample_rate(st, codec);
|
||||
}
|
||||
nb_ocodecs++;
|
||||
audio_enc->sample_rate = audio_sample_rate;
|
||||
audio_enc->time_base= (AVRational){1, audio_sample_rate};
|
||||
if (audio_language) {
|
||||
av_metadata_set(&st->metadata, "language", audio_language);
|
||||
|
Loading…
Reference in New Issue
Block a user