annotate libgsmefr/gsm_efr.h @ 49:dd79ec84283d

libgsmefr: decoder state structure filled in
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 25 Nov 2022 06:29:43 +0000
parents 88468d5b3590
children 9499d12d315b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
2 * This header file is the external public interface to libgsmefr;
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * it should be installed in the same system include directory
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
4 * as <gsm.h> and <gsm_fr_preproc.h> for the older FR codec.
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
7 #ifndef __GSM_EFR_H
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
8 #define __GSM_EFR_H
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
10 #include <stdint.h>
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
33
88468d5b3590 libgsmefr: implement frame packing
Mychaela Falconia <falcon@freecalypso.org>
parents: 30
diff changeset
12 #define EFR_RTP_FRAME_LEN 31
88468d5b3590 libgsmefr: implement frame packing
Mychaela Falconia <falcon@freecalypso.org>
parents: 30
diff changeset
13 #define EFR_NUM_PARAMS 57
88468d5b3590 libgsmefr: implement frame packing
Mychaela Falconia <falcon@freecalypso.org>
parents: 30
diff changeset
14
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
15 struct EFR_encoder_state; /* opaque to external users */
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
16 struct EFR_decoder_state; /* ditto */
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
18 extern struct EFR_encoder_state *EFR_encoder_create(int dtx);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
19 extern struct EFR_decoder_state *EFR_decoder_create(void);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
20 /* use standard free() call to free both afterward */
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 /* reset state to initial */
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
23 extern void EFR_encoder_reset(struct EFR_encoder_state *st, int dtx);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
24 extern void EFR_decoder_reset(struct EFR_decoder_state *st);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
25
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
26 /* encoder public functions */
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
27
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
28 extern void EFR_encode_params(struct EFR_encoder_state *st, const int16_t *pcm,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
29 int16_t *params, int *sp, int *vad);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
30 extern void EFR_encode_frame(struct EFR_encoder_state *st, const int16_t *pcm,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
31 uint8_t *frame, int *sp, int *vad);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
32
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
33 /* decoder public functions */
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
35 extern void EFR_decode_params(struct EFR_decoder_state *st,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
36 const int16_t *params, int bfi, int sid, int taf,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
37 int16_t *pcm);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
38 extern void EFR_decode_frame(struct EFR_decoder_state *st, const uint8_t *frame,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
39 int bfi, int taf, int16_t *pcm);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
40 extern void EFR_decode_bfi_nodata(struct EFR_decoder_state *st, int taf,
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
41 int16_t *pcm);
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
43 /* stateless utility functions */
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
30
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
45 extern int EFR_sid_classify(const uint8_t *frame);
2272ba6f6879 libgsmefr: beginning with API definition
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
46 extern void EFR_frame2params(const uint8_t *frame, int16_t *params);
33
88468d5b3590 libgsmefr: implement frame packing
Mychaela Falconia <falcon@freecalypso.org>
parents: 30
diff changeset
47 extern void EFR_params2frame(const int16_t *params, uint8_t *frame);
88468d5b3590 libgsmefr: implement frame packing
Mychaela Falconia <falcon@freecalypso.org>
parents: 30
diff changeset
48 extern void EFR_insert_sid_codeword(uint8_t *frame);
1
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49
6780b23654bd libgsmfrp: starting with the silence frame
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 #endif /* include guard */