I was trying to confirm how a Mavic drone determines altitude on the DJI GO4 app and came across this thread. This was a really useful discussion and answered all my questions.
As a former holder of a PPL (aircraft), I wanted to contribute by saying that all aircraft use barometric pressure to determine their altitude at any time, and yet it is very accurate. Part of standard flight procedure (at takeoff, throughout the flight and prior to landing) is to regularly calibrate the altimeter due to any pressure changes from weather and conditions. This is typically done by setting a dial on the altimeter to values of what is known as either QNH or QFE. IF you set the dial so that altitude is 0 whilst on the ground, you are setting the QFE, your alitmeter then always reads the height above this point. QNH is the reading you would need to set to get 0 on the instrument if you were at sea level. Use this and your altimeter will show height above sea level.
ATC, airport information broadcasts, or advisory services will always provide updates as required. And knowing QFE when landing is obviously very important (especially if using flying using an ILS approach)
Sounds like drones recalibrate to 0 (QFE) at point of launch, but don't make any changes after this.
Which leads to two important points. Regulations (at least here in oz) say you can't fly above 400ft from the ground, So if you launch from high ground, go straight up before moving, then fly over ground much lower down, you could quickly be in breach of the regulation.
Conversely, if you launch from low ground, but want to land somewhere much higher, don't rely on the indicated height and make sure your RTH altitude accounts for the variation, or you could be in trouble.