00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef ROHC_COMP_SCHEMES_SCALED_RTP_TS_H
00032 #define ROHC_COMP_SCHEMES_SCALED_RTP_TS_H
00033
00034 #include "comp_wlsb.h"
00035 #include "rohc_traces.h"
00036
00037 #ifdef __KERNEL__
00038 # include <linux/types.h>
00039 #else
00040 # include <stdbool.h>
00041 #endif
00042
00043
00044
00045
00046
00047
00048
00049
00050 typedef enum
00051 {
00052
00053 INIT_TS = 1,
00054
00055 INIT_STRIDE = 2,
00056
00057 SEND_SCALED = 3,
00058 } ts_sc_state;
00059
00060
00061
00062
00063
00064
00065
00066
00067 struct ts_sc_comp
00068 {
00069
00070 uint32_t ts_stride;
00071
00072
00073 uint32_t ts_scaled;
00074
00075 struct c_wlsb *ts_scaled_wlsb;
00076
00077
00078 uint32_t ts_offset;
00079
00080
00081 uint32_t ts;
00082
00083 struct c_wlsb *ts_unscaled_wlsb;
00084
00085 uint32_t old_ts;
00086
00087
00088 uint16_t sn;
00089
00090 uint16_t old_sn;
00091
00092
00093 bool is_deducible;
00094
00095
00096 ts_sc_state state;
00097
00098 bool are_old_val_init;
00099
00100 size_t nr_init_stride_packets;
00101
00102
00103 uint32_t ts_delta;
00104
00105
00106 rohc_trace_callback2_t trace_callback;
00107
00108 void *trace_callback_priv;
00109 };
00110
00111
00112
00113
00114
00115
00116
00117 bool c_create_sc(struct ts_sc_comp *const ts_sc,
00118 const size_t wlsb_window_width,
00119 rohc_trace_callback2_t trace_cb,
00120 void *const trace_cb_priv)
00121 __attribute__((warn_unused_result));
00122 void c_destroy_sc(struct ts_sc_comp *const ts_sc);
00123
00124 void c_add_ts(struct ts_sc_comp *const ts_sc,
00125 const uint32_t ts,
00126 const uint16_t sn);
00127
00128 void nb_bits_unscaled(const struct ts_sc_comp *const ts_sc,
00129 size_t *const bits_nr_less_equal_than_2,
00130 size_t *const bits_nr_more_than_2)
00131 __attribute__((nonnull(1, 2, 3)));
00132 void add_unscaled(const struct ts_sc_comp *const ts_sc, const uint16_t sn);
00133
00134 void nb_bits_scaled(const struct ts_sc_comp *const ts_sc,
00135 size_t *const bits_nr_less_equal_than_2,
00136 size_t *const bits_nr_more_than_2)
00137 __attribute__((nonnull(1, 2, 3)));
00138 void add_scaled(const struct ts_sc_comp *const ts_sc, const uint16_t sn);
00139
00140 uint32_t get_ts_stride(const struct ts_sc_comp *const ts_sc)
00141 __attribute__((nonnull(1), warn_unused_result, pure));
00142 uint32_t get_ts_scaled(const struct ts_sc_comp *const ts_sc)
00143 __attribute__((nonnull(1), warn_unused_result, pure));
00144 uint32_t get_ts_unscaled(const struct ts_sc_comp *const ts_sc)
00145 __attribute__((nonnull(1), warn_unused_result, pure));
00146
00147 bool rohc_ts_sc_is_deducible(const struct ts_sc_comp *const ts_sc)
00148 __attribute__((nonnull(1), warn_unused_result, pure));
00149
00150 #endif
00151