Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * MLP codec common header file
  3.  * Copyright (c) 2007-2008 Ian Caulfield
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVCODEC_MLPDSP_H
  23. #define AVCODEC_MLPDSP_H
  24.  
  25. #include <stdint.h>
  26. #include "mlp.h"
  27.  
  28. void ff_mlp_rematrix_channel(int32_t *samples,
  29.                              const int32_t *coeffs,
  30.                              const uint8_t *bypassed_lsbs,
  31.                              const int8_t *noise_buffer,
  32.                              int index,
  33.                              unsigned int dest_ch,
  34.                              uint16_t blockpos,
  35.                              unsigned int maxchan,
  36.                              int matrix_noise_shift,
  37.                              int access_unit_size_pow2,
  38.                              int32_t mask);
  39.  
  40. int32_t ff_mlp_pack_output(int32_t lossless_check_data,
  41.                            uint16_t blockpos,
  42.                            int32_t (*sample_buffer)[MAX_CHANNELS],
  43.                            void *data,
  44.                            uint8_t *ch_assign,
  45.                            int8_t *output_shift,
  46.                            uint8_t max_matrix_channel,
  47.                            int is32);
  48.  
  49. typedef struct MLPDSPContext {
  50.     void (*mlp_filter_channel)(int32_t *state, const int32_t *coeff,
  51.                                int firorder, int iirorder,
  52.                                unsigned int filter_shift, int32_t mask,
  53.                                int blocksize, int32_t *sample_buffer);
  54.     void (*mlp_rematrix_channel)(int32_t *samples,
  55.                                  const int32_t *coeffs,
  56.                                  const uint8_t *bypassed_lsbs,
  57.                                  const int8_t *noise_buffer,
  58.                                  int index,
  59.                                  unsigned int dest_ch,
  60.                                  uint16_t blockpos,
  61.                                  unsigned int maxchan,
  62.                                  int matrix_noise_shift,
  63.                                  int access_unit_size_pow2,
  64.                                  int32_t mask);
  65.     int32_t (*(*mlp_select_pack_output)(uint8_t *ch_assign,
  66.                                         int8_t *output_shift,
  67.                                         uint8_t max_matrix_channel,
  68.                                         int is32))(int32_t, uint16_t, int32_t (*)[], void *, uint8_t*, int8_t *, uint8_t, int);
  69.     int32_t (*mlp_pack_output)(int32_t lossless_check_data,
  70.                                uint16_t blockpos,
  71.                                int32_t (*sample_buffer)[MAX_CHANNELS],
  72.                                void *data,
  73.                                uint8_t *ch_assign,
  74.                                int8_t *output_shift,
  75.                                uint8_t max_matrix_channel,
  76.                                int is32);
  77. } MLPDSPContext;
  78.  
  79. void ff_mlpdsp_init(MLPDSPContext *c);
  80. void ff_mlpdsp_init_arm(MLPDSPContext *c);
  81. void ff_mlpdsp_init_x86(MLPDSPContext *c);
  82.  
  83. #endif /* AVCODEC_MLPDSP_H */
  84.