00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MPF_JITTER_BUFFER_H
00020 #define MPF_JITTER_BUFFER_H
00021
00022
00023
00024
00025
00026
00027 #include "mpf_frame.h"
00028 #include "mpf_codec.h"
00029 #include "mpf_rtp_descriptor.h"
00030
00031 APT_BEGIN_EXTERN_C
00032
00033
00034 typedef enum {
00035 JB_OK,
00036 JB_DISCARD_NOT_ALLIGNED,
00037 JB_DISCARD_TOO_LATE,
00038 JB_DISCARD_TOO_EARLY,
00039 } jb_result_t;
00040
00041
00042 typedef struct mpf_jitter_buffer_t mpf_jitter_buffer_t;
00043
00044
00045
00046 mpf_jitter_buffer_t* mpf_jitter_buffer_create(mpf_jb_config_t *jb_config, mpf_codec_descriptor_t *descriptor, mpf_codec_t *codec, apr_pool_t *pool);
00047
00048
00049 void mpf_jitter_buffer_destroy(mpf_jitter_buffer_t *jb);
00050
00051
00052 apt_bool_t mpf_jitter_buffer_restart(mpf_jitter_buffer_t *jb);
00053
00054
00055 jb_result_t mpf_jitter_buffer_write(mpf_jitter_buffer_t *jb, void *buffer, apr_size_t size, apr_uint32_t ts, apr_byte_t marker);
00056
00057
00058 jb_result_t mpf_jitter_buffer_event_write(mpf_jitter_buffer_t *jb, const mpf_named_event_frame_t *named_event, apr_uint32_t ts, apr_byte_t marker);
00059
00060
00061 apt_bool_t mpf_jitter_buffer_read(mpf_jitter_buffer_t *jb, mpf_frame_t *media_frame);
00062
00063
00064 apr_uint32_t mpf_jitter_buffer_playout_delay_get(const mpf_jitter_buffer_t *jb);
00065
00066 APT_END_EXTERN_C
00067
00068 #endif