Una mappa di profondità viene serializzata come un insieme di proprietà XMP. Nell'ambito della procedura di serializzazione, la mappa di profondità viene prima convertita in un formato immagine tradizionale. La pipeline di codifica prevede tre passaggi (vedi Figura 2):
- Converti dal formato di input (ad es. valori float o int32) a un formato immagine in scala di grigi intero, ad es. byte (8 bit) o parole (16 bit).
- Comprimi utilizzando un codec immagine standard, ad esempio JPEG o PNG.
- Serializza come proprietà XMP di stringa Base64.

La pipeline può essere lossless o lossy, a seconda del numero di bit della mappa di profondità originale e del numero di bit utilizzati per memorizzarla, ad esempio 8 bit per un codec JPEG e 8 o 16 bit per un codec PNG.
Al momento sono supportati due formati diversi: RangeLinear e RangeInverse. RangeInverse è il formato consigliato se la mappa di profondità perde precisione durante la codifica, ad esempio durante la conversione da float a 8 bit. Assegna più bit ai valori di profondità vicini e meno bit ai valori lontani, in modo simile al funzionamento dello z-buffer nelle schede GPU.
Se la mappa di profondità ha una mappa di confidenza allegata, anche quest'ultima viene convertita in un formato immagine tradizionale utilizzando una pipeline simile a quella utilizzata per la profondità. La mappa di confidenza è sempre codificata utilizzando il formato RangeLinear, con l'intervallo di confidenza considerato [0, 1].
RangeLinear
Sia d la profondità di un pixel e near e far i valori di profondità minimo e massimo considerati. Il valore di profondità viene prima normalizzato nell'intervallo [0, 1] come
RangeInverse
Sia d la profondità di un pixel e near e far i valori di profondità minimo e massimo considerati. Il valore di profondità viene prima normalizzato nell'intervallo [0, 1] come