The 'issue' is with this part:
This method actually calculates the bit depth instead of returning the value that was read. I have updated the IntelliSense help to explain this better. You should use the Depth property of the image if you want the bit depth that was read:
int depth = frames[0].BitDepth();
int depth = frames[0].Depth;