• 首頁
  • 文件
  • 下載
  • 狀態
  • 常見問題
  • 郵件列表
  • 應用程式
  • 外部鏈結
  • 版權
  • 志願者
  • 聯繫

類別: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 ) ;

};