You are right, and at the highest level, the libstagefright library has a "streaming" interface. That is, you create an audio or video source, configure codecs, and then start the encoding or decoding process.
However, using the OMXCodec interface, you can access individual frames. Unfortunately, I do not know any official OMXCodec official docs.
The only source is code examples in the Android repository.
If you want to know more about how to use OMXCodec, you can view the AwesomePlayer.cpp file ( http://gitorious.org/rowboat/frameworks-base/blobs/rowboat-ics/media/libstagefright/AwesomePlayer.cpp )
Using libstagefright library is clear from StagefrightRecorder.cpp (in the same repository)
Also useful information on OMXCodec architecture is here.
PS Remember that the OMXCodec API is unstable and may vary from version to version ...
source share