Minimum requirements for avstream encoder

What are the absolute *minimum* requirements for writing a skeleton encoder avstream pin-centric driver that shows up in topoedit that is able to connect with a source (say, the avshws sample driver) and a sink (say, one of the Microsoft supplied decoder transforms, or some file writer filter that dumps whatever I send to a file) ?

For example,

  1. Is it mandatory to have intersect handlers on input and/or output pins?
  2. Is it mandatory to supply some allocator on either pin?
  3. Is it mandatory to handle SetDataFormat on either pin?
  4. I have implemented ENCAPIPARAM_xxx properties using and specified CLSID_IVideoEncoderProxy in the inf file for KsProxy to use. Is this enough or do I need to implement CODECAPI_xxx as well?

I’ll worry about the Process calls on the pins later on, for now I only need to be able to do something like, add some filters including mine to topoedit, link them up and resolve topology successfully. Please advice!