I'm having a hard time understanding how non-integer frame rates are implemented in h264 and hevc. For example, I just stepped through a 23.976fps video frame by frame using Shotcut, and looking at the timestamp of each frame, it looks like there are full 24 frames in each second.
How do they do it? Do the encoders actually write 24 full frames per second to file? (What even would be a non-full frame?) But that would mean, when playing at 23.976, that to play 1000 seconds you need to render 23976 frames. But the file contains 24000 frames (does it?) Do they just drop some frames? Who does the dropping? The player? Or does the encoder drop a frame every n seconds?