How are these Data Buffering Methods same or different from each other?
Ping-pong is minimizes chances of missing. It also keeps messages in continuous sequence and isolates reads and writes from each other so processing is safe and easy. But it wastes memory if messages don't fit in the remaining space in one half of the buffer. Max message size that the buffer can handle is limited to half your total buffer memory, even if the buffer is empty.

Circular buffers both minimize wasted memory and chances of missing an incoming message since it can free up memory from old data on the fly after it is processed. It can stack messages the tightest and hold the longest messages for the buffer memory available and free up room the earliest after something is processed, but the most difficult to code for and has the most overhead.

Single buffer is just as memory efficient as circular buffer and can hold messages just as long as circular. Unlike circular, it is simple but you might miss messages if you are slow draining the buffer since it cannot free up memory from old data on the fly.