// use address of PacketInputAdapter instance as input filename
// -f packetinput: enable PacketInputAdapter
// -input_type <packet input type>: one of h264/h263/mjpeg/m4v/mpegvideo/vc1
// -max_packet_size <size>: max packet size, default 65536(64KB)
// -pix_fmt <pixel format>: yuvj420p for mjpeg, default yuv420p
// -r/-framerate <frame rate>: e.g. 30000/1001 (-> 29.97)
// -s/-video_size <frame size>: such as 640x480 or hd720

type
{$IF Defined(VER140) or Defined(BCB)} // Delphi 6.0 or BCB
  {$IF Defined(BCB)}
  TReadPacketEvent = function(Sender: TObject; Buffer: Pointer; Count: Longint): Longint of object;
  {$ELSE}
  TReadPacketEvent = function(Sender: TObject; Buffer: PByte; Count: Longint): Longint of object;
  {$IFEND}
{$ELSE}
  TReadPacketEvent = function(Sender: TObject; var Buffer; Count: Longint): Longint of object;
{$IFEND}

  TPacketInputAdapter = class(TFFBaseComponent)
  public
    destructor Destroy; override;
    property UserData: Pointer read FData write FData;
  published
    property OnReadHeader: TNotifyEvent read FOnReadHeader write FOnReadHeader;
    property OnReadClose: TNotifyEvent read FOnReadClose write FOnReadClose;
    property OnReadPacket: TReadPacketEvent read FOnReadPacket write FOnReadPacket;
  end;

procedure register_packetinput;
