public void Transcode(bool flushEncoder = false) { while (true) { while (!CanEncodeFrame() && !decoder.DecoderFlushed) { DecodeFrame(); } while (CanEncodeFrame() || (flushEncoder && decoder.DecoderFlushed && HasDataStored())) { EncodeFrame(); } if (decoder.DecoderFlushed) { if (flushEncoder) { encoder.Flush(); } break; } } }