mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
libopencore-amr, libvo-amrwbenc: Only check the bitrate when changed
Also rename the incorrectly named enc_bitrate to enc_mode, use the enc_bitrate variable for storing the last chosen bitrate. This avoids continuous warning log messages if not using an exactly matching bitrate, while still allowing changing bitrate at any point. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
7073938121
commit
3dd82afc74
@ -81,6 +81,7 @@ typedef struct AMRContext {
|
||||
void *dec_state;
|
||||
void *enc_state;
|
||||
int enc_bitrate;
|
||||
int enc_mode;
|
||||
} AMRContext;
|
||||
|
||||
static av_cold int amr_nb_decode_init(AVCodecContext *avctx)
|
||||
@ -181,7 +182,8 @@ static av_cold int amr_nb_encode_init(AVCodecContext *avctx)
|
||||
return -1;
|
||||
}
|
||||
|
||||
s->enc_bitrate = get_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->enc_mode = get_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->enc_bitrate = avctx->bit_rate;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -202,12 +204,15 @@ static int amr_nb_encode_frame(AVCodecContext *avctx,
|
||||
AMRContext *s = avctx->priv_data;
|
||||
int written;
|
||||
|
||||
s->enc_bitrate = get_bitrate_mode(avctx->bit_rate, avctx);
|
||||
if (s->enc_bitrate != avctx->bit_rate) {
|
||||
s->enc_mode = get_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->enc_bitrate = avctx->bit_rate;
|
||||
}
|
||||
|
||||
written = Encoder_Interface_Encode(s->enc_state, s->enc_bitrate, data,
|
||||
written = Encoder_Interface_Encode(s->enc_state, s->enc_mode, data,
|
||||
frame, 0);
|
||||
av_dlog(avctx, "amr_nb_encode_frame encoded %u bytes, bitrate %u, first byte was %#02x\n",
|
||||
written, s->enc_bitrate, frame[0]);
|
||||
written, s->enc_mode, frame[0]);
|
||||
|
||||
return written;
|
||||
}
|
||||
|
@ -27,6 +27,7 @@
|
||||
typedef struct AMRWBContext {
|
||||
void *state;
|
||||
int mode;
|
||||
int last_bitrate;
|
||||
int allow_dtx;
|
||||
} AMRWBContext;
|
||||
|
||||
@ -70,7 +71,8 @@ static av_cold int amr_wb_encode_init(AVCodecContext *avctx)
|
||||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->last_bitrate = avctx->bit_rate;
|
||||
|
||||
avctx->frame_size = 320;
|
||||
avctx->coded_frame = avcodec_alloc_frame();
|
||||
@ -97,7 +99,10 @@ static int amr_wb_encode_frame(AVCodecContext *avctx,
|
||||
AMRWBContext *s = avctx->priv_data;
|
||||
int size;
|
||||
|
||||
s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
|
||||
if (s->last_bitrate != avctx->bit_rate) {
|
||||
s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
|
||||
s->last_bitrate = avctx->bit_rate;
|
||||
}
|
||||
size = E_IF_encode(s->state, s->mode, data, frame, s->allow_dtx);
|
||||
return size;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user