gst_plugins_base/gst/audioresample/speex_resampler_wrapper.h
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
equal deleted inserted replaced
29:567bb019e3e3 30:7e817e7e631c
     1 /* GStreamer
       
     2  * Copyright (C) 2007-2008 Sebastian Dröge <sebastian.droege@collabora.co.uk>
       
     3  *
       
     4  * This library is free software; you can redistribute it and/or
       
     5  * modify it under the terms of the GNU Library General Public
       
     6  * License as published by the Free Software Foundation; either
       
     7  * version 2 of the License, or (at your option) any later version.
       
     8  *
       
     9  * This library is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    12  * Library General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU Library General Public
       
    15  * License along with this library; if not, write to the
       
    16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
       
    17  * Boston, MA 02111-1307, USA.
       
    18  */
       
    19 
       
    20 #ifndef __SPEEX_RESAMPLER_WRAPPER_H__
       
    21 #define __SPEEX_RESAMPLER_WRAPPER_H__
       
    22 
       
    23 #define SPEEX_RESAMPLER_QUALITY_MAX 10
       
    24 #define SPEEX_RESAMPLER_QUALITY_MIN 0
       
    25 #define SPEEX_RESAMPLER_QUALITY_DEFAULT 4
       
    26 #define SPEEX_RESAMPLER_QUALITY_VOIP 3
       
    27 #define SPEEX_RESAMPLER_QUALITY_DESKTOP 5
       
    28 
       
    29 enum
       
    30 {
       
    31   RESAMPLER_ERR_SUCCESS = 0,
       
    32   RESAMPLER_ERR_ALLOC_FAILED = 1,
       
    33   RESAMPLER_ERR_BAD_STATE = 2,
       
    34   RESAMPLER_ERR_INVALID_ARG = 3,
       
    35   RESAMPLER_ERR_PTR_OVERLAP = 4,
       
    36 
       
    37   RESAMPLER_ERR_MAX_ERROR
       
    38 };
       
    39 
       
    40 typedef struct SpeexResamplerState_ SpeexResamplerState;
       
    41 
       
    42 typedef struct {
       
    43   SpeexResamplerState *(*init) (guint32 nb_channels,
       
    44     guint32 in_rate, guint32 out_rate, gint quality, gint * err);
       
    45   void (*destroy) (SpeexResamplerState * st);
       
    46   int (*process) (SpeexResamplerState *
       
    47     st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
       
    48   int (*set_rate) (SpeexResamplerState * st,
       
    49     guint32 in_rate, guint32 out_rate);
       
    50   void (*get_rate) (SpeexResamplerState * st,
       
    51     guint32 * in_rate, guint32 * out_rate);
       
    52   void (*get_ratio) (SpeexResamplerState * st,
       
    53     guint32 * ratio_num, guint32 * ratio_den);
       
    54   int (*get_input_latency) (SpeexResamplerState * st);
       
    55   int (*set_quality) (SpeexResamplerState * st, gint quality);
       
    56   int (*reset_mem) (SpeexResamplerState * st);
       
    57   int (*skip_zeros) (SpeexResamplerState * st);
       
    58   const char * (*strerror) (gint err);
       
    59   unsigned int width;
       
    60 } SpeexResampleFuncs;
       
    61 
       
    62 SpeexResamplerState *resample_float_resampler_init (guint32 nb_channels,
       
    63     guint32 in_rate, guint32 out_rate, gint quality, gint * err);
       
    64 void resample_float_resampler_destroy (SpeexResamplerState * st);
       
    65 int resample_float_resampler_process_interleaved_float (SpeexResamplerState *
       
    66     st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
       
    67 int resample_float_resampler_set_rate (SpeexResamplerState * st,
       
    68     guint32 in_rate, guint32 out_rate);
       
    69 void resample_float_resampler_get_rate (SpeexResamplerState * st,
       
    70     guint32 * in_rate, guint32 * out_rate);
       
    71 void resample_float_resampler_get_ratio (SpeexResamplerState * st,
       
    72     guint32 * ratio_num, guint32 * ratio_den);
       
    73 int resample_float_resampler_get_input_latency (SpeexResamplerState * st);
       
    74 int resample_float_resampler_set_quality (SpeexResamplerState * st, gint quality);
       
    75 int resample_float_resampler_reset_mem (SpeexResamplerState * st);
       
    76 int resample_float_resampler_skip_zeros (SpeexResamplerState * st);
       
    77 const char * resample_float_resampler_strerror (gint err);
       
    78 
       
    79 static const SpeexResampleFuncs float_funcs =
       
    80 {
       
    81   resample_float_resampler_init,
       
    82   resample_float_resampler_destroy,
       
    83   resample_float_resampler_process_interleaved_float,
       
    84   resample_float_resampler_set_rate,
       
    85   resample_float_resampler_get_rate,
       
    86   resample_float_resampler_get_ratio,
       
    87   resample_float_resampler_get_input_latency,
       
    88   resample_float_resampler_set_quality,
       
    89   resample_float_resampler_reset_mem,
       
    90   resample_float_resampler_skip_zeros,
       
    91   resample_float_resampler_strerror,
       
    92   32
       
    93 };
       
    94 
       
    95 SpeexResamplerState *resample_double_resampler_init (guint32 nb_channels,
       
    96     guint32 in_rate, guint32 out_rate, gint quality, gint * err);
       
    97 void resample_double_resampler_destroy (SpeexResamplerState * st);
       
    98 int resample_double_resampler_process_interleaved_float (SpeexResamplerState *
       
    99     st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
       
   100 int resample_double_resampler_set_rate (SpeexResamplerState * st,
       
   101     guint32 in_rate, guint32 out_rate);
       
   102 void resample_double_resampler_get_rate (SpeexResamplerState * st,
       
   103     guint32 * in_rate, guint32 * out_rate);
       
   104 void resample_double_resampler_get_ratio (SpeexResamplerState * st,
       
   105     guint32 * ratio_num, guint32 * ratio_den);
       
   106 int resample_double_resampler_get_input_latency (SpeexResamplerState * st);
       
   107 int resample_double_resampler_set_quality (SpeexResamplerState * st, gint quality);
       
   108 int resample_double_resampler_reset_mem (SpeexResamplerState * st);
       
   109 int resample_double_resampler_skip_zeros (SpeexResamplerState * st);
       
   110 const char * resample_double_resampler_strerror (gint err);
       
   111 
       
   112 static const SpeexResampleFuncs double_funcs =
       
   113 {
       
   114   resample_double_resampler_init,
       
   115   resample_double_resampler_destroy,
       
   116   resample_double_resampler_process_interleaved_float,
       
   117   resample_double_resampler_set_rate,
       
   118   resample_double_resampler_get_rate,
       
   119   resample_double_resampler_get_ratio,
       
   120   resample_double_resampler_get_input_latency,
       
   121   resample_double_resampler_set_quality,
       
   122   resample_double_resampler_reset_mem,
       
   123   resample_double_resampler_skip_zeros,
       
   124   resample_double_resampler_strerror,
       
   125   64
       
   126 };
       
   127 
       
   128 SpeexResamplerState *resample_int_resampler_init (guint32 nb_channels,
       
   129     guint32 in_rate, guint32 out_rate, gint quality, gint * err);
       
   130 void resample_int_resampler_destroy (SpeexResamplerState * st);
       
   131 int resample_int_resampler_process_interleaved_int (SpeexResamplerState *
       
   132     st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
       
   133 int resample_int_resampler_set_rate (SpeexResamplerState * st,
       
   134     guint32 in_rate, guint32 out_rate);
       
   135 void resample_int_resampler_get_rate (SpeexResamplerState * st,
       
   136     guint32 * in_rate, guint32 * out_rate);
       
   137 void resample_int_resampler_get_ratio (SpeexResamplerState * st,
       
   138     guint32 * ratio_num, guint32 * ratio_den);
       
   139 int resample_int_resampler_get_input_latency (SpeexResamplerState * st);
       
   140 int resample_int_resampler_set_quality (SpeexResamplerState * st, gint quality);
       
   141 int resample_int_resampler_reset_mem (SpeexResamplerState * st);
       
   142 int resample_int_resampler_skip_zeros (SpeexResamplerState * st);
       
   143 const char * resample_int_resampler_strerror (gint err);
       
   144 
       
   145 static const SpeexResampleFuncs int_funcs =
       
   146 {
       
   147   resample_int_resampler_init,
       
   148   resample_int_resampler_destroy,
       
   149   resample_int_resampler_process_interleaved_int,
       
   150   resample_int_resampler_set_rate,
       
   151   resample_int_resampler_get_rate,
       
   152   resample_int_resampler_get_ratio,
       
   153   resample_int_resampler_get_input_latency,
       
   154   resample_int_resampler_set_quality,
       
   155   resample_int_resampler_reset_mem,
       
   156   resample_int_resampler_skip_zeros,
       
   157   resample_int_resampler_strerror,
       
   158   16
       
   159 };
       
   160 
       
   161 #endif /* __SPEEX_RESAMPLER_WRAPPER_H__ */