# API compatibility report for the libcodec2-dev library between 0.7-2 and 0.8-1 versions on x86_64

Binary
Compatibility Source
Compatibility

## Test Info

Library Name | libcodec2-dev
Version #1 | 0.7-2
Version #2 | 0.8-1
Arch | x86_64
GCC Version | 7
Subject | Binary Compatibility

## Test Results

Total Header Files | 15
Total Libraries | 1
Total Symbols / Types | 139 / 41
Compatibility | 60.1%

## Problem Summary

| Severity | Count
--- | --- | ---
Added Symbols | - | 27
Removed Symbols | High | 0
Problems with Data Types | High | 1
Medium | 20
Low | 7
Problems with Symbols | High | 0
Medium | 2
Low | 0
Problems with Constants | Low | 1
Other Changes in Constants | - | 12

## Added Symbols 27

codec2_cohpsk.h, libcodec2.so.0.8
cohpsk_set_freq_est_mode ( struct COHPSK* coh, int used_simple_mode )
codec2_ofdm.h, libcodec2.so.0.8
OFDM_CONFIG_700D [data]
ofdm_create ( struct OFDM_CONFIG const* config )
ofdm_demod ( struct OFDM* p1, int* p2, COMP* p3 )
ofdm_destroy ( struct OFDM* p1 )
ofdm_get_bits_per_frame ( struct OFDM* p1 )
ofdm_get_demod_stats ( struct OFDM* ofdm, struct MODEM_STATS* stats )
ofdm_get_max_samples_per_frame ( )
ofdm_get_nin ( struct OFDM* p1 )
ofdm_get_samples_per_frame ( )
ofdm_mod ( struct OFDM* p1, COMP* p2, int const* p3 )
ofdm_set_foff_est_enable ( struct OFDM* p1, bool p2 )
ofdm_set_off_est_hz ( struct OFDM* p1, float p2 )
ofdm_set_phase_est_enable ( struct OFDM* p1, bool p2 )
ofdm_set_sync ( struct OFDM* ofdm, int sync_cmd )
ofdm_set_timing_enable ( struct OFDM* p1, bool p2 )
ofdm_set_tx_bpf ( struct OFDM* ofdm, bool p2 )
ofdm_set_verbose ( struct OFDM* p1, int p2 )
ofdm_sync_search ( struct OFDM* ofdm, COMP* rxbuf_in )
ofdm_sync_state_machine ( struct OFDM* ofdm, int* rx_uw )
freedv_api.h, libcodec2.so.0.8
freedv_get_sync_interleaver ( struct freedv* freedv )
freedv_get_total_bit_errors_coded ( struct freedv* freedv )
freedv_get_total_bits_coded ( struct freedv* freedv )
freedv_open_advanced ( int mode, struct freedv_advanced* adv )
freedv_set_sync ( struct freedv* freedv, int sync_cmd )
freedv_set_tx_bpf ( struct freedv* freedv, int val )
freedv_set_verbose ( struct freedv* freedv, int verbosity )
to the top

## Problems with Data Types, High Severity 1

freedv_api_internal.h
[+] struct freedv 1

| Change | Effect
--- | --- | ---
1 | Field prev_rx_bits has been removed from the middle position of this structural type. | 1) Previous accesses of applications to the removed field will be incorrect. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.

[+] affected symbols: 43 (30.9%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
to the top

## Problems with Data Types, Medium Severity 20

freedv_api_internal.h
[+] struct freedv 19

| Change | Effect
--- | --- | ---
1 | Field codeword_amps has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
2 | Field codeword_symbols has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
3 | Field ldpc has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
4 | Field mod_out has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
5 | Field modem_frame_count_tx has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
6 | Field nbyte_packed_codec_bits has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
7 | Field ofdm has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
8 | Field packed_codec_bits_tx has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
9 | Field total_bit_errors_coded has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
10 | Field total_bits_coded has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
11 | Field verbose has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
12 | Size of field stats has been changed from 7712 bytes to 8064 bytes. | 1) Size of the inclusive type has been changed. 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
13 | The relative position of field cohpsk has been changed from 4 to 3. | 1) Applications will access incorrect memory when attempting to access this field. 2) Size of the inclusive type has been changed.
14 | The relative position of field stats has been changed from 3 to 6. | 1) Applications will access incorrect memory when attempting to access this field. 2) Size of the inclusive type has been changed.
15 | The relative position of field fmfsk has been changed from 6 to 5. | Applications will access incorrect memory when attempting to access this field.
16 | The relative position of field fsk has been changed from 5 to 4. | Applications will access incorrect memory when attempting to access this field.
17 | The relative position of field n_codec_bits has been changed from 23 to 21. | Applications will access incorrect memory when attempting to access this field.
18 | The relative position of field smooth_symbols has been changed from 22 to 23. | Applications will access incorrect memory when attempting to access this field.
19 | The relative position of field tx_sync_bit has been changed from 21 to 22. | Applications will access incorrect memory when attempting to access this field.

[+] affected symbols: 43 (30.9%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
modem_stats.h
[+] struct MODEM_STATS 1

| Change | Effect
--- | --- | ---
1 | Field f_est has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.

[+] affected symbols: 67 (48.2%)
cohpsk_get_demod_stats ( struct COHPSK* cohpsk, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fdmdv_get_demod_stats ( struct FDMDV* fdmdv_state, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_create ( int Fs, int Rb )
Field 'retval.stats' in the return value (pointer) has base type 'struct MODEM_STATS'.
fmfsk_demod ( struct FMFSK* fmfsk, uint8_t* rx_bits, float* fmfsk_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_destroy ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_get_demod_stats ( struct FMFSK* fmfsk, struct MODEM_STATS* stats )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_mod ( struct FMFSK* fmfsk, float* fmfsk_out, uint8_t* bits_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_nin ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
freedv_close ( struct freedv* freedv )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
...
to the top

## Problems with Symbols, Medium Severity 2

codec2_cohpsk.h, libcodec2.so.0.7
[+] cohpsk_clip ( COMP* tx_fdm ) 2
⇣
cohpsk_clip ( COMP* tx_fdm, float clip_thresh, int n )

| Change | Effect
--- | --- | ---
1 | Parameter clip_thresh of type float has been added to the calling stack. | This parameter will not be initialized by old clients.
2 | Parameter n of type int has been added to the calling stack. | This parameter will not be initialized by old clients.

to the top

## Problems with Data Types, Low Severity 7

freedv_api_internal.h
[+] struct freedv 4

| Change | Effect
--- | --- | ---
1 | Size of this type has been changed from 8080 bytes to 8504 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
2 | Field frames has been added to this type. | This field will not be initialized by old clients. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
3 | Field interleave_frames has been added to this type. | This field will not be initialized by old clients. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
4 | Field modem_frame_count_rx has been added to this type. | This field will not be initialized by old clients. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.

[+] affected symbols: 43 (30.9%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
fsk.h
[+] struct FSK 1

| Change | Effect
--- | --- | ---
1 | Field burst_mode has been added to this type. | This field will not be initialized by old clients. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.

[+] affected symbols: 56 (40.3%)
freedv_close ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_data_ntxframes ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_datatx ( struct freedv* f, short* mod_out )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_get_codec2 ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_get_fsk ( struct freedv* f )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
...
modem_stats.h
[+] struct MODEM_STATS 2

| Change | Effect
--- | --- | ---
1 | Size of this type has been changed from 7712 bytes to 8064 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
2 | Type of field rx_symbols has been changed from COMP[6][21] to COMP[8][21]. | Replacement of the field data type may indicate a change in the semantic meaning of the field.

[+] affected symbols: 67 (48.2%)
cohpsk_get_demod_stats ( struct COHPSK* cohpsk, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fdmdv_get_demod_stats ( struct FDMDV* fdmdv_state, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_create ( int Fs, int Rb )
Field 'retval.stats' in the return value (pointer) has base type 'struct MODEM_STATS'.
fmfsk_demod ( struct FMFSK* fmfsk, uint8_t* rx_bits, float* fmfsk_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_destroy ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_get_demod_stats ( struct FMFSK* fmfsk, struct MODEM_STATS* stats )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_mod ( struct FMFSK* fmfsk, float* fmfsk_out, uint8_t* bits_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_nin ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
freedv_close ( struct freedv* freedv )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
...
to the top

## Problems with Constants, Low Severity 1

modem_stats.h
[+] MODEM_STATS_NR_MAX

| Change | Effect
--- | --- | ---
1 | The value of constant MODEM_STATS_NR_MAX has been changed from 6 to 8. | Applications will pass an old value of this constant as the parameter to the new-version library functions, that expect a new one. This may result in crash of incorrect behavior of applications.

to the top

## Other Changes in Constants 12

codec2.h
[+] CODEC2_MODE_WB

| Change | Effect
--- | --- | ---
1 | The constant CODEC2_MODE_WB with value 9 has been added. | No effect.

codec2_cohpsk.h
[+] COHPSK_CLIP

| Change | Effect
--- | --- | ---
1 | The constant COHPSK_CLIP with value 6.5 has been added. | No effect.

codec2_ofdm.h
[+] OFDM_AMP_SCALE

| Change | Effect
--- | --- | ---
1 | The constant OFDM_AMP_SCALE with value (2E5*1.1491/1.06) has been added. | No effect.

[+] OFDM_CLIP

| Change | Effect
--- | --- | ---
1 | The constant OFDM_CLIP with value (32767*0.35) has been added. | No effect.

[+] OFDM_SYNC_AUTO

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_AUTO with value 1 has been added. | No effect.

[+] OFDM_SYNC_MANUAL

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_MANUAL with value 2 has been added. | No effect.

[+] OFDM_SYNC_UNSYNC

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_UNSYNC with value 0 has been added. | No effect.

freedv_api.h
[+] FREEDV_MODE_700D

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_MODE_700D with value 7 has been added. | No effect.

[+] FREEDV_SYNC_AUTO

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_AUTO with value 1 has been added. | No effect.

[+] FREEDV_SYNC_MANUAL

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_MANUAL with value 2 has been added. | No effect.

[+] FREEDV_SYNC_UNSYNC

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_UNSYNC with value 0 has been added. | No effect.

modem_stats.h
[+] MODEM_STATS_MAX_F_EST

| Change | Effect
--- | --- | ---
1 | The constant MODEM_STATS_MAX_F_EST with value 4 has been added. | No effect.

to the top

## Header Files 15

codec2.h
codec2_cohpsk.h
codec2_fdmdv.h
codec2_fifo.h
codec2_fm.h
comp.h
comp_prim.h
fmfsk.h
freedv_api.h
freedv_api_internal.h
fsk.h
golay23.h
kiss_fft.h
modem_stats.h
varicode.h
to the top

## Libraries 1

libcodec2.so.0.7
to the top

## Test Info

Library Name | libcodec2-dev
Version #1 | 0.7-2
Version #2 | 0.8-1
Arch | x86_64
Subject | Source Compatibility

## Test Results

Total Header Files | 15
Total Libraries | 1
Total Symbols / Types | 154 / 41
Compatibility | 71.1%

## Problem Summary

| Severity | Count
--- | --- | ---
Added Symbols | - | 27
Removed Symbols | High | 0
Problems with Data Types | High | 1
Medium | 0
Low | 17
Problems with Symbols | High | 0
Medium | 2
Low | 0
Problems with Constants | Low | 1
Other Changes in Data Types | - | 7
Other Changes in Constants | - | 15

## Added Symbols 27

codec2_cohpsk.h
cohpsk_set_freq_est_mode ( struct COHPSK* coh, int used_simple_mode )
codec2_ofdm.h
OFDM_CONFIG_700D [data]
ofdm_create ( struct OFDM_CONFIG const* config )
ofdm_demod ( struct OFDM* p1, int* p2, COMP* p3 )
ofdm_destroy ( struct OFDM* p1 )
ofdm_get_bits_per_frame ( struct OFDM* p1 )
ofdm_get_demod_stats ( struct OFDM* ofdm, struct MODEM_STATS* stats )
ofdm_get_max_samples_per_frame ( )
ofdm_get_nin ( struct OFDM* p1 )
ofdm_get_samples_per_frame ( )
ofdm_mod ( struct OFDM* p1, COMP* p2, int const* p3 )
ofdm_set_foff_est_enable ( struct OFDM* p1, bool p2 )
ofdm_set_off_est_hz ( struct OFDM* p1, float p2 )
ofdm_set_phase_est_enable ( struct OFDM* p1, bool p2 )
ofdm_set_sync ( struct OFDM* ofdm, int sync_cmd )
ofdm_set_timing_enable ( struct OFDM* p1, bool p2 )
ofdm_set_tx_bpf ( struct OFDM* ofdm, bool p2 )
ofdm_set_verbose ( struct OFDM* p1, int p2 )
ofdm_sync_search ( struct OFDM* ofdm, COMP* rxbuf_in )
ofdm_sync_state_machine ( struct OFDM* ofdm, int* rx_uw )
freedv_api.h
freedv_get_sync_interleaver ( struct freedv* freedv )
freedv_get_total_bit_errors_coded ( struct freedv* freedv )
freedv_get_total_bits_coded ( struct freedv* freedv )
freedv_open_advanced ( int mode, struct freedv_advanced* adv )
freedv_set_sync ( struct freedv* freedv, int sync_cmd )
freedv_set_tx_bpf ( struct freedv* freedv, int val )
freedv_set_verbose ( struct freedv* freedv, int verbosity )
to the top

## Problems with Data Types, High Severity 1

freedv_api_internal.h
[+] struct freedv 1

| Change | Effect
--- | --- | ---
1 | Field prev_rx_bits has been removed from this type. | Recompilation of a client program may be broken with the error message: 'struct freedv' has no member named 'prev_rx_bits'.

[+] affected symbols: 44 (28.6%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
to the top

## Problems with Symbols, Medium Severity 2

codec2_cohpsk.h
[+] cohpsk_clip ( COMP* tx_fdm ) 2
⇣
cohpsk_clip ( COMP* tx_fdm, float clip_thresh, int n )

| Change | Effect
--- | --- | ---
1 | Parameter clip_thresh of type float has been added to the calling stack. | Recompilation of a client program may be broken.
2 | Parameter n of type int has been added to the calling stack. | Recompilation of a client program may be broken.

to the top

## Problems with Data Types, Low Severity 17

freedv_api_internal.h
[+] struct freedv 14

| Change | Effect
--- | --- | ---
1 | Field codeword_amps has been added to this type. | This field will not be initialized or used by old client applications.
2 | Field codeword_symbols has been added to this type. | This field will not be initialized or used by old client applications.
3 | Field frames has been added to this type. | This field will not be initialized or used by old client applications.
4 | Field interleave_frames has been added to this type. | This field will not be initialized or used by old client applications.
5 | Field ldpc has been added to this type. | This field will not be initialized or used by old client applications.
6 | Field mod_out has been added to this type. | This field will not be initialized or used by old client applications.
7 | Field modem_frame_count_rx has been added to this type. | This field will not be initialized or used by old client applications.
8 | Field modem_frame_count_tx has been added to this type. | This field will not be initialized or used by old client applications.
9 | Field nbyte_packed_codec_bits has been added to this type. | This field will not be initialized or used by old client applications.
10 | Field ofdm has been added to this type. | This field will not be initialized or used by old client applications.
11 | Field packed_codec_bits_tx has been added to this type. | This field will not be initialized or used by old client applications.
12 | Field total_bit_errors_coded has been added to this type. | This field will not be initialized or used by old client applications.
13 | Field total_bits_coded has been added to this type. | This field will not be initialized or used by old client applications.
14 | Field verbose has been added to this type. | This field will not be initialized or used by old client applications.

[+] affected symbols: 44 (28.6%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
fsk.h
[+] struct FSK 1

| Change | Effect
--- | --- | ---
1 | Field burst_mode has been added to this type. | This field will not be initialized or used by old client applications.

[+] affected symbols: 57 (37%)
freedv_close ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_data_ntxframes ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_datatx ( struct freedv* f, short* mod_out )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_get_codec2 ( struct freedv* freedv )
Field 'freedv.fsk' in 1st parameter 'freedv' (pointer) has base type 'struct FSK'.
freedv_get_fsk ( struct freedv* f )
Field 'f.fsk' in 1st parameter 'f' (pointer) has base type 'struct FSK'.
...
modem_stats.h
[+] struct MODEM_STATS 2

| Change | Effect
--- | --- | ---
1 | Field f_est has been added to this type. | This field will not be initialized or used by old client applications.
2 | Type of field rx_symbols has been changed from COMP[6][21] to COMP[8][21]. | Recompilation of a client program may be broken.

[+] affected symbols: 68 (44.2%)
cohpsk_get_demod_stats ( struct COHPSK* cohpsk, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fdmdv_get_demod_stats ( struct FDMDV* fdmdv_state, struct MODEM_STATS* stats )
2nd parameter 'stats' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_create ( int Fs, int Rb )
Field 'retval.stats' in the return value (pointer) has base type 'struct MODEM_STATS'.
fmfsk_demod ( struct FMFSK* fmfsk, uint8_t* rx_bits, float* fmfsk_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_destroy ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_get_demod_stats ( struct FMFSK* fmfsk, struct MODEM_STATS* stats )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_mod ( struct FMFSK* fmfsk, float* fmfsk_out, uint8_t* bits_in )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
fmfsk_nin ( struct FMFSK* fmfsk )
Field 'fmfsk.stats' in 1st parameter 'fmfsk' (pointer) has base type 'struct MODEM_STATS'.
freedv_close ( struct freedv* freedv )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
Field 'freedv.fmfsk.stats' in 1st parameter 'freedv' (pointer) has base type 'struct MODEM_STATS'.
...
to the top

## Problems with Constants, Low Severity 1

modem_stats.h
[+] MODEM_STATS_NR_MAX

| Change | Effect
--- | --- | ---
1 | The value of constant MODEM_STATS_NR_MAX has been changed from 6 to 8. | Recompilation of a client program may be broken.

to the top

## Other Changes in Data Types 7

freedv_api_internal.h
[+] struct freedv 7

| Change | Effect
--- | --- | ---
1 | The relative position of field cohpsk has been changed from 4 to 3. | No effect.
2 | The relative position of field fmfsk has been changed from 6 to 5. | No effect.
3 | The relative position of field fsk has been changed from 5 to 4. | No effect.
4 | The relative position of field n_codec_bits has been changed from 23 to 21. | No effect.
5 | The relative position of field smooth_symbols has been changed from 22 to 23. | No effect.
6 | The relative position of field stats has been changed from 3 to 6. | No effect.
7 | The relative position of field tx_sync_bit has been changed from 21 to 22. | No effect.

[+] affected symbols: 44 (28.6%)
freedv_close ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codecrx ( struct freedv* freedv, unsigned char* packed_codec_bits, short* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_codectx ( struct freedv* f, short* mod_out, unsigned char* packed_codec_bits )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_comprx ( struct freedv* freedv, short* speech_out, COMP* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_comptx ( struct freedv* freedv, COMP* mod_out, short* speech_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_data_ntxframes ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_datatx ( struct freedv* f, short* mod_out )
1st parameter 'f' (pointer) has base type 'struct freedv'.
freedv_floatrx ( struct freedv* freedv, short* speech_out, float* demod_in )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_codec2 ( struct freedv* freedv )
1st parameter 'freedv' (pointer) has base type 'struct freedv'.
freedv_get_fsk ( struct freedv* f )
1st parameter 'f' (pointer) has base type 'struct freedv'.
...
to the top

## Other Changes in Constants 15

codec2.h
[+] CODEC2_MODE_WB

| Change | Effect
--- | --- | ---
1 | The constant CODEC2_MODE_WB with value 9 has been added. | No effect.

codec2_cohpsk.h
[+] COHPSK_CLIP

| Change | Effect
--- | --- | ---
1 | The constant COHPSK_CLIP with value 6.5 has been added. | No effect.

codec2_ofdm.h
[+] OFDM_AMP_SCALE

| Change | Effect
--- | --- | ---
1 | The constant OFDM_AMP_SCALE with value (2E5*1.1491/1.06) has been added. | No effect.

[+] OFDM_CLIP

| Change | Effect
--- | --- | ---
1 | The constant OFDM_CLIP with value (32767*0.35) has been added. | No effect.

[+] OFDM_SYNC_AUTO

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_AUTO with value 1 has been added. | No effect.

[+] OFDM_SYNC_MANUAL

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_MANUAL with value 2 has been added. | No effect.

[+] OFDM_SYNC_UNSYNC

| Change | Effect
--- | --- | ---
1 | The constant OFDM_SYNC_UNSYNC with value 0 has been added. | No effect.

freedv_api.h
[+] FREEDV_MODE_700D

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_MODE_700D with value 7 has been added. | No effect.

[+] FREEDV_SYNC_AUTO

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_AUTO with value 1 has been added. | No effect.

[+] FREEDV_SYNC_MANUAL

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_MANUAL with value 2 has been added. | No effect.

[+] FREEDV_SYNC_UNSYNC

| Change | Effect
--- | --- | ---
1 | The constant FREEDV_SYNC_UNSYNC with value 0 has been added. | No effect.

modem_stats.h
[+] MODEM_STATS_MAX_F_EST

| Change | Effect
--- | --- | ---
1 | The constant MODEM_STATS_MAX_F_EST with value 4 has been added. | No effect.

version.h
[+] CODEC2_VERSION

| Change | Effect
--- | --- | ---
1 | The constant CODEC2_VERSION with value "0.8" has been added. | No effect.

[+] CODEC2_VERSION_MAJOR

| Change | Effect
--- | --- | ---
1 | The constant CODEC2_VERSION_MAJOR with value 0 has been added. | No effect.

[+] CODEC2_VERSION_MINOR

| Change | Effect
--- | --- | ---
1 | The constant CODEC2_VERSION_MINOR with value 8 has been added. | No effect.

to the top

## Header Files 15

codec2.h
codec2_cohpsk.h
codec2_fdmdv.h
codec2_fifo.h
codec2_fm.h
comp.h
comp_prim.h
fmfsk.h
freedv_api.h
freedv_api_internal.h
fsk.h
golay23.h
kiss_fft.h
modem_stats.h
varicode.h
to the top

## Libraries 1

libcodec2.so.0.7
to the top