]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/libvo-amrwbenc.c
libopencore-amr, libvo-amrwbenc: Only check the bitrate when changed
[ffmpeg] / libavcodec / libvo-amrwbenc.c
index b194bf04bb386fc9bf3ab762a5f141bc9de30083..d3db5f847adbcaccc477427dcac9d28dc74de9f0 100644 (file)
@@ -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;
 }