# HG changeset patch # User Mychaela Falconia # Date 1716071442 0 # Node ID 4c9222d956472ecf24a6f4491aa1a72bf19d34d6 # Parent c84bf526c7ebb852607a7367238bae9b09d89bcc libtwamr encoder: always emit frame->mode = mode; In the original implementation of amr_encode_frame(), the 'mode' member of the output struct was set to 0xFF if the output frame type is TX_NO_DATA. This design was made to mimic the mode field (16-bit word) being set to 0xFFFF (or -1) in 3GPP test sequence format - but nothing actually depends on this struct member being set in any way, and amr_frame_to_tseq() generates the needed 0xFFFF on its own, based on frame->type being equal to TX_NO_DATA. It is simpler and more efficient to always set frame->mode to the actual encoding mode in amr_encode_frame(), and this new behavior has already been documented in doc/AMR-library-API description in anticipation of the present change. diff -r c84bf526c7eb -r 4c9222d95647 libtwamr/enc_main.c --- a/libtwamr/enc_main.c Sat May 18 21:22:07 2024 +0000 +++ b/libtwamr/enc_main.c Sat May 18 22:30:42 2024 +0000 @@ -53,10 +53,7 @@ cod_amr(&st->cod, mode, new_speech, frame->param, &used_mode, syn); sid_sync(&st->sid, used_mode, &tx_type); frame->type = tx_type; - if (tx_type != TX_NO_DATA) - frame->mode = mode; - else - frame->mode = 0xFF; + frame->mode = mode; /* encoder homing */ if (encoder_homing_frame_test(pcm))