// use address of WaveInputAdapter instance as input filename
// -f waveinput: enable WaveInputAdapter
// -ar/sample_rate <sample rate>: audio sample rate
// -ac/channels <channels>: audio channels
// -sample_fmt <sample format>: one of u8/s16/s32

type
  PInputWaveInfo = ^TInputWaveInfo;
  TInputWaveInfo = record
    TimeStamp: Int64;
    FrameNumber: Integer;
    FrameSize: Integer;
    TotalSize: Int64;
    SampleRate: Integer;
    SampleFormat: Integer;
    Channels: Integer;
  end;

  TReadWaveDataEvent = function(Sender: TObject; AData: Pointer;
    AWaveInfo: PInputWaveInfo): Integer of object;

  TWaveInputAdapter = class(TFFBaseComponent)
  public
    destructor Destroy; override;
    property UserData: Pointer read FData write FData;
    property WaveInfo: PInputWaveInfo read FWaveInfo;
  published
    property OnReadHeader: TNotifyEvent read FOnReadHeader write FOnReadHeader;
    property OnReadClose: TNotifyEvent read FOnReadClose write FOnReadClose;
    property OnReadWaveData: TReadWaveDataEvent read FOnReadWaveData write FOnReadWaveData;
  end;

procedure register_waveinput;
