Ignore:
Timestamp:
Jul 26, 2006 5:04:54 PM (18 years ago)
Author:
bennylp
Message:
  • Bring speex codec up to date with their SVN trunk
  • Speex codec should work in FIXED_POINT mode when PJ_HAS_FLOATING_POINT is set to zero.
  • ulaw2linear will return zero if zero is given (this would make the VAD works better, and it also fixed click noise when call is established/hangup).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia-codec/speex/speex_jitter.h

    r278 r628  
    4444#endif 
    4545 
    46 #define SPEEX_JITTER_MAX_PACKET_SIZE 1500 /**< Maximum number of bytes per packet         */ 
    47 #define SPEEX_JITTER_MAX_BUFFER_SIZE 20   /**< Maximum number of packets in jitter buffer */ 
     46struct JitterBuffer_; 
    4847 
    49 #define MAX_MARGIN 12  /**< Number of bins in margin histogram */ 
     48typedef struct JitterBuffer_ JitterBuffer; 
     49 
     50typedef struct _JitterBufferPacket JitterBufferPacket; 
     51 
     52struct _JitterBufferPacket { 
     53   char        *data; 
     54   spx_uint32_t len; 
     55   spx_uint32_t timestamp; 
     56   spx_uint32_t span; 
     57}; 
     58 
     59 
     60#define JITTER_BUFFER_OK 0 
     61#define JITTER_BUFFER_MISSING 1 
     62#define JITTER_BUFFER_INCOMPLETE 2 
     63#define JITTER_BUFFER_INTERNAL_ERROR -1 
     64#define JITTER_BUFFER_BAD_ARGUMENT -2 
     65 
     66/** Initialise jitter buffer */ 
     67JitterBuffer *jitter_buffer_init(int tick); 
     68 
     69/** Reset jitter buffer */ 
     70void jitter_buffer_reset(JitterBuffer *jitter); 
     71 
     72/** Destroy jitter buffer */ 
     73void jitter_buffer_destroy(JitterBuffer *jitter); 
     74 
     75/** Put one packet into the jitter buffer */ 
     76void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet); 
     77 
     78/** Get one packet from the jitter buffer */ 
     79int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_uint32_t *current_timestamp); 
     80 
     81/** Get pointer timestamp of jitter buffer */ 
     82int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter); 
     83 
     84/** Advance by one tick */ 
     85void jitter_buffer_tick(JitterBuffer *jitter); 
     86 
    5087 
    5188/** Speex jitter-buffer state. */ 
    5289typedef struct SpeexJitter { 
    53    int buffer_size;                                                       /**< Buffer size                         */ 
    54    int pointer_timestamp;                                                 /**< Pointer timestamp                   */ 
    55  
    5690   SpeexBits current_packet;                                              /**< Current Speex packet                */ 
    5791   int valid_bits;                                                        /**< True if Speex bits are valid        */ 
    58  
    59    char buf[SPEEX_JITTER_MAX_BUFFER_SIZE][SPEEX_JITTER_MAX_PACKET_SIZE];  /**< Buffer of packets                   */ 
    60    int timestamp[SPEEX_JITTER_MAX_BUFFER_SIZE];                           /**< Timestamp of packet                 */ 
    61    int len[SPEEX_JITTER_MAX_BUFFER_SIZE];                                 /**< Number of bytes in packet           */ 
    62  
     92   JitterBuffer *packets; 
    6393   void *dec;                                                             /**< Pointer to Speex decoder            */ 
    6494   int frame_size;                                                        /**< Frame size of Speex decoder         */ 
    65    int frame_time;                                                        /**< Frame time in [ms] of Speex decoder */ 
    66    int reset_state;                                                       /**< True if Speex state was reset       */ 
    67     
    68    int lost_count;                                                        /**< Number of lost packets              */ 
    69    float shortterm_margin[MAX_MARGIN];                                    /**< Short term margins                  */ 
    70    float longterm_margin[MAX_MARGIN];                                     /**< Long term margins                   */ 
    71    float loss_rate;                                                       /**< Loss rate                           */ 
    7295} SpeexJitter; 
    7396 
     
    82105 
    83106/** Get one packet from the jitter buffer */ 
    84 void speex_jitter_get(SpeexJitter *jitter, short *out, int *current_timestamp); 
     107void speex_jitter_get(SpeexJitter *jitter, spx_int16_t *out, int *start_offset); 
    85108 
    86109/** Get pointer timestamp of jitter buffer */ 
Note: See TracChangeset for help on using the changeset viewer.