• 首页
  • 文件
  • 下载
  • 状态
  • 常见问题
  • 邮件列表
  • 应用程序
  • 外部链结
  • 版权
  • 志愿者
  • 联络

类别:BufferProcessor

缓冲区处理器

类型 使用 成员 说明
建构子 public BufferProcessor(void)
解构子 public ~BufferProcessor(void)
资料 public CaUint32 framesPerUserBuffer
资料 public CaUint32 framesPerHostBuffer
资料 public CaHostBufferSizeMode hostBufferSizeMode
资料 public int useNonAdaptingProcess
资料 public int userOutputSampleFormatIsEqualToHost
资料 public int userInputSampleFormatIsEqualToHost
资料 public CaUint32 framesPerTempBuffer
资料 public CaUint32 inputChannelCount
资料 public CaUint32 bytesPerHostInputSample
资料 public CaUint32 bytesPerUserInputSample
资料 public int userInputIsInterleaved
资料 public Converter * inputConverter
资料 public ZeroCopier * inputZeroer
资料 public CaUint32 outputChannelCount
资料 public CaUint32 bytesPerHostOutputSample
资料 public CaUint32 bytesPerUserOutputSample
资料 public int userOutputIsInterleaved
资料 public Converter * outputConverter
资料 public ZeroCopier * outputZeroer
资料 public CaUint32 initialFramesInTempInputBuffer
资料 public CaUint32 initialFramesInTempOutputBuffer
资料 public void * tempInputBuffer
资料 public void ** tempInputBufferPtrs
资料 public CaUint32 framesInTempInputBuffer
资料 public void * tempOutputBuffer
资料 public void ** tempOutputBufferPtrs
资料 public CaUint32 framesInTempOutputBuffer
资料 public int hostInputIsInterleaved
资料 public CaUint32 hostInputFrameCount [ 2 ]
资料 public CaChannelDescriptor * hostInputChannels [ 2 ]
资料 public int hostOutputIsInterleaved
资料 public CaUint32 hostOutputFrameCount [ 2 ]
资料 public CaChannelDescriptor * hostOutputChannels [ 2 ]
资料 public double samplePeriod
资料 public Dither dither
资料 public Conduit * conduit
函式 public virtual CaError Initialize (
int inputChannelCount ,
CaSampleFormat userInputSampleFormat ,
CaSampleFormat hostInputSampleFormat ,
int outputChannelCount ,
CaSampleFormat userOutputSampleFormat ,
CaSampleFormat hostOutputSampleFormat ,
double sampleRate ,
CaStreamFlags streamFlags ,
CaUint32 framesPerUserBuffer ,
CaUint32 framesPerHostBuffer ,
CaHostBufferSizeMode hostBufferSizeMode ,
Conduit * conduit )

函式 public virtual void Terminate (void)
函式 public virtual void Reset (void)
函式 public virtual void Begin (Conduit * conduit)
函式 public virtual CaUint32 End (int * callbackResult = NULL)
函式 public virtual CaUint32 InputLatencyFrames (void)
函式 public virtual CaUint32 OutputLatencyFrames (void)
函式 public virtual bool isOutputEmpty (void)
函式 public virtual void setNoInput (void)
函式 public virtual void setInputFrameCount (int index ,
CaUint32 frameCount)

函式 public virtual void setInputChannel (int index,
CaUint32 channel,
void * data ,
CaUint32 stride)

函式 public virtual void setInterleavedInputChannels (
int index ,
CaUint32 firstChannel ,
void * data ,
CaUint32 channelCount )

函式 public virtual void setNonInterleavedInputChannels (
int index ,
CaUint32 channel ,
void * data )

函式 public virtual void setNoOutput (void)
函式 public virtual void setOutputFrameCount (int index ,
CaUint32 frameCount )

函式 public virtual void setOutputChannel (int index ,
CaUint32 channel ,
void * data ,
CaUint32 stride )

函式 public virtual void setInterleavedOutputChannels (
int index ,
CaUint32 firstChannel ,
void * data ,
CaUint32 channelCount )

函式 public virtual void setNonInterleavedOutputChannel (
int index ,
CaUint32 channel ,
void * data )

函式 public virtual CaUint32 CopyInput (void ** buffer ,
CaUint32 frameCount )

函式 public virtual CaUint32 CopyOutput (const void ** buffer ,
CaUint32 frameCount )

函式 public virtual CaUint32 ZeroOutput (CaUint32 frameCount )
函式 protected inline void Delete (void * memory)
函式 protected inline CaUint32 GCD (CaUint32 a,CaUint32 b)
函式 protected inline CaUint32 LCM (CaUint32 a,CaUint32 b)
函式 protected CaUint32 FrameShift ( CaUint32 M , CaUint32 N )
函式 private void TempToHost (void)
函式 private CaUint32 NonAdapting (int * streamCallbackResult ,
CaChannelDescriptor * hic ,
CaChannelDescriptor * hoc ,
CaUint32 framesToProcess )

函式 private CaUint32 AdaptingInputOnly (int * streamCallbackResult ,
CaChannelDescriptor * hostInputChannels ,
CaUint32 framesToProcess )

函式 private CaUint32 AdaptingOutputOnly (int * streamCallbackResult ,
CaChannelDescriptor * hostOutputChannels ,
CaUint32 framesToProcess )

函式 private CaUint32 Adapting (int * streamCallbackResult ,
int processPartialUserBuffers )


建议

外部程序不应使用这个类别,这是供应音讯底层的缓冲区处理器。


C/C++定义


class BufferProcessor

{
  public:

    CaUint32              framesPerUserBuffer                 ;
    CaUint32              framesPerHostBuffer                 ;
    CaHostBufferSizeMode  hostBufferSizeMode                  ;
    int                   useNonAdaptingProcess               ;
    int                   userOutputSampleFormatIsEqualToHost ;
    int                   userInputSampleFormatIsEqualToHost  ;
    CaUint32              framesPerTempBuffer                 ;

    CaUint32              inputChannelCount                   ;
    CaUint32              bytesPerHostInputSample             ;
    CaUint32              bytesPerUserInputSample             ;
    int                   userInputIsInterleaved              ;
    Converter           * inputConverter                      ;
    ZeroCopier          * inputZeroer                         ;

    CaUint32              outputChannelCount                  ;
    CaUint32              bytesPerHostOutputSample            ;
    CaUint32              bytesPerUserOutputSample            ;
    int                   userOutputIsInterleaved             ;
    Converter           * outputConverter                     ;
    ZeroCopier          * outputZeroer                        ;

    CaUint32              initialFramesInTempInputBuffer      ;
    CaUint32              initialFramesInTempOutputBuffer     ;

    void                * tempInputBuffer                     ;
    void               ** tempInputBufferPtrs                 ;
    CaUint32              framesInTempInputBuffer             ;

    void                * tempOutputBuffer                    ;
    void               ** tempOutputBufferPtrs                ;
    CaUint32              framesInTempOutputBuffer            ;

    int                   hostInputIsInterleaved              ;
    CaUint32              hostInputFrameCount  [ 2 ]          ;
    CaChannelDescriptor * hostInputChannels    [ 2 ]          ;
    int                   hostOutputIsInterleaved             ;
    CaUint32              hostOutputFrameCount [ 2 ]          ;
    CaChannelDescriptor * hostOutputChannels   [ 2 ]          ;

    double                samplePeriod                        ;
    Dither                dither                              ;
    Conduit             * conduit                             ;

    explicit BufferProcessor             (void) ;
    virtual ~BufferProcessor             (void) ;

    virtual CaError Initialize                                    (
                      int                  inputChannelCount      ,
                      CaSampleFormat       userInputSampleFormat  ,
                      CaSampleFormat       hostInputSampleFormat  ,
                      int                  outputChannelCount     ,
                      CaSampleFormat       userOutputSampleFormat ,
                      CaSampleFormat       hostOutputSampleFormat ,
                      double               sampleRate             ,
                      CaStreamFlags        streamFlags            ,
                      CaUint32             framesPerUserBuffer    ,
                      CaUint32             framesPerHostBuffer    ,
                      CaHostBufferSizeMode hostBufferSizeMode     ,
                      Conduit            * conduit              ) ;
    virtual void     Terminate           (void) ;
    virtual void     Reset               (void) ;

    virtual void     Begin               (Conduit * conduit) ;
    virtual CaUint32 End                 (int * callbackResult = NULL) ;

    virtual CaUint32 InputLatencyFrames  (void) ;
    virtual CaUint32 OutputLatencyFrames (void) ;
    virtual bool     isOutputEmpty       (void) ;

    virtual void     setNoInput          (void) ;
    virtual void     setInputFrameCount  (int      index          ,
                                          CaUint32 frameCount   ) ;
    virtual void     setInputChannel     (int      index          ,
                                          CaUint32 channel        ,
                                          void   * data           ,
                                          CaUint32 stride       ) ;
    virtual void     setInterleavedInputChannels                  (
                                          int      index          ,
                                          CaUint32 firstChannel   ,
                                          void   * data           ,
                                          CaUint32 channelCount ) ;
    virtual void     setNonInterleavedInputChannels               (
                                          int      index          ,
                                          CaUint32 channel        ,
                                          void   * data         ) ;
    virtual void     setNoOutput         (void) ;
    virtual void     setOutputFrameCount (int      index          ,
                                          CaUint32 frameCount   ) ;
    virtual void     setOutputChannel    (int      index          ,
                                          CaUint32 channel        ,
                                          void   * data           ,
                                          CaUint32 stride       ) ;
    virtual void     setInterleavedOutputChannels                 (
                                          int      index          ,
                                          CaUint32 firstChannel   ,
                                          void   * data           ,
                                          CaUint32 channelCount ) ;
    virtual void     setNonInterleavedOutputChannel               (
                                          int      index          ,
                                          CaUint32 channel        ,
                                          void   * data         ) ;

    virtual CaUint32 CopyInput           (void       ** buffer       ,
                                          CaUint32      frameCount ) ;
    virtual CaUint32 CopyOutput          (const void ** buffer       ,
                                          CaUint32      frameCount ) ;
    virtual CaUint32 ZeroOutput          (CaUint32      frameCount ) ;

  protected:

    inline void Delete (void * memory)
    {
      if ( NULL != memory ) Allocator :: free ( memory ) ;
    }

    /* greatest common divisor - PGCD in French */
    inline CaUint32 GCD( CaUint32 a, CaUint32 b )
    {
      return ( 0 == b ) ? a : GCD ( b , ( a % b ) ) ;
    }

    /* least common multiple - PPCM in French */
    inline CaUint32 LCM( CaUint32 a , CaUint32 b )
    {
      return ( a * b ) / GCD ( a , b ) ;
    }

    CaUint32 FrameShift ( CaUint32 M , CaUint32 N ) ;

  private:

    void             TempToHost          (void) ;
    CaUint32         NonAdapting         (int                 * streamCallbackResult ,
                                          CaChannelDescriptor * hic                  ,
                                          CaChannelDescriptor * hoc                  ,
                                          CaUint32              framesToProcess    ) ;
    CaUint32         AdaptingInputOnly   (int                 * streamCallbackResult ,
                                          CaChannelDescriptor * hostInputChannels    ,
                                          CaUint32              framesToProcess    ) ;
    CaUint32         AdaptingOutputOnly  (int                 * streamCallbackResult ,
                                          CaChannelDescriptor * hostOutputChannels   ,
                                          CaUint32              framesToProcess    ) ;
    CaUint32         Adapting            (int * streamCallbackResult        ,
                                          int   processPartialUserBuffers ) ;

};