// use address of WaveOutAdapter instance as input filename
// -f waveoutput: enable WaveOutputAdapter
// -codec:a <codec>': pcm_s16le, pcm_s24le, pcm_s32le, pcm_u8
// -ar/sample_rate <sample rate>: audio sample rate
// -ac/channels <channels>: audio channels

type
  POutputWaveInfo = ^TOutputWaveInfo;
  TOutputWaveInfo = record
    FormatContext: PAVFormatContext;
    SampleRate: Integer;
    SampleFormat: TAVSampleFormat;
    Channels: Integer;
    CodecID: TAVCodecID;
    BitsPerSample: Integer;
    BlockAlign: Integer;
    BitRate: Integer;
    FrameNumber: Integer;
    Packet: PAVPacket;
  end;

  TWriteWaveEvent = procedure(Sender: TObject; AWaveInfo: POutputWaveInfo) of object;

  TWaveOutputAdapter = class(TFFBaseComponent)
  public
    destructor Destroy; override;
    property UserData: Pointer read FData write FData;
    property WaveInfo: POutputWaveInfo read FWaveInfo;
  published
    property OnWriteHeader: TNotifyEvent read FOnWriteHeader write FOnWriteHeader;
    property OnWriteWave: TWriteWaveEvent read FOnWriteWave write FOnWriteWave;
    property OnWriteClose: TNotifyEvent read FOnWriteClose write FOnWriteClose;
  end;

procedure register_waveoutput;
