UniMRCP  1.7.0
mpf_jitter_buffer.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008-2015 Arsen Chaloyan
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MPF_JITTER_BUFFER_H
18 #define MPF_JITTER_BUFFER_H
19 
20 /**
21  * @file mpf_jitter_buffer.h
22  * @brief Jitter Buffer
23  */
24 
25 #include "mpf_frame.h"
26 #include "mpf_codec.h"
27 #include "mpf_rtp_descriptor.h"
28 
30 
31 /** Jitter buffer write result */
32 typedef enum {
33  JB_OK, /**< successful write */
34  JB_DISCARD_NOT_ALLIGNED, /**< discarded write (frame isn't alligned to CODEC_FRAME_TIME_BASE) */
35  JB_DISCARD_TOO_LATE, /**< discarded write (frame is arrived too late) */
36  JB_DISCARD_TOO_EARLY, /**< discarded write (frame is arrived too early, buffer is full) */
37 } jb_result_t;
38 
39 /** Opaque jitter buffer declaration */
41 
42 
43 /** Create jitter buffer */
44 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);
45 
46 /** Destroy jitter buffer */
48 
49 /** Restart jitter buffer */
51 
52 /** Write audio data to jitter buffer */
53 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);
54 
55 /** Write named event to jitter buffer */
56 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);
57 
58 /** Read media frame from jitter buffer */
60 
61 /** Get current playout delay */
63 
65 
66 #endif /* MPF_JITTER_BUFFER_H */
Definition: mpf_rtp_descriptor.h:93
apr_uint32_t mpf_jitter_buffer_playout_delay_get(const mpf_jitter_buffer_t *jb)
Definition: mpf_jitter_buffer.h:35
Definition: mpf_jitter_buffer.h:34
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)
MPF Codec.
#define APT_END_EXTERN_C
Definition: apt.h:38
int apt_bool_t
Definition: apt.h:57
Definition: mpf_codec.h:35
jb_result_t
Definition: mpf_jitter_buffer.h:32
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)
Definition: mpf_frame.h:50
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)
void mpf_jitter_buffer_destroy(mpf_jitter_buffer_t *jb)
Definition: mpf_jitter_buffer.h:33
#define APT_BEGIN_EXTERN_C
Definition: apt.h:36
MPF Audio/Video/Named-event Frame.
apt_bool_t mpf_jitter_buffer_restart(mpf_jitter_buffer_t *jb)
Definition: mpf_named_event.h:34
struct mpf_jitter_buffer_t mpf_jitter_buffer_t
Definition: mpf_jitter_buffer.h:40
Definition: mpf_jitter_buffer.h:36
MPF RTP Stream Descriptor.
Definition: mpf_codec_descriptor.h:63
apt_bool_t mpf_jitter_buffer_read(mpf_jitter_buffer_t *jb, mpf_frame_t *media_frame)