So I eventually figured out that, even though I was using an output
surface, I had to manually drain the output buffers. By calling
decoder.dequeueOutputBuffer and then
decoder.releaseOutputBuffer, the input buffers worked as
I was able to also able to get output by passing in both individual NAL
units as well as full access units (one per PES packet), but I got the
clearest video by passing in full access units.