I’m going to repeat what @anon90297517 said and expand on it a bit.
@Hans_Bogaert is actually confusing Audio Container vs. Audio Format.
Container - How you store music. Generally this includes the metadata, image, etc. plus the audio (or in the case of something like WAV just the audio on disk).
Audio Format - The Encoded analog audio into a digital format.
Both the Container and the Format are clearly defined independently. Remembering that the container itself is the audio + other stuff. And the format is just the audio.
At the point of D/A conversion you, basically, have 2 options of format: PCM and DSD. One is a multi-bit format and one is a single bit format. All audio formats are a way to get back to PCM or DSD or are directly the PCM or DSD.
All lossy “compressed” CODECs compress PCM into a smaller storage format. This is MP3 in your example. The MP3 encode compresses (by throwing things away it thinks are not important from the analog waveform) the PCM and stores the result. The MP3 starts with a PCM data stream (usually 16/44.1). The MP3 uncompress and decode operation expands the compressed data back to PCM (16/44.1) but the analog waveform does not match the encoded waveform. It’s an “approximation” of the original (because of the stuff that got thrown away). So, MP3 is a container of metadata + the compressed audio waiting to be decoded back to 16/44.1 PCM.
When Roon encounters a MP3 file it first decodes it to 16/44.1 PCM and then hands that bitstream to the transport; in your case RAAT. EDiT: See nice correction by @BrianW below with a link to why Roon will decode at a bit-depth of 24 bits. Thanks for that!
It’s 16/44.1 PCM and it’s “bit-perfect” across the stream (because RAAT is bit-perfect transport) but it’s “bit-perfect” from the decoded PCM and that is absolutely not bit-perfect to the original PCM which was used to encode the mp3.
This is not the case for something like Cast or Airplay. Both Cast and Airplay re-encode the PCM to 16/44.1 specifically for the stream / transport. In that case the streaming protocol itself is said to not be bit-perfect (the PCM that arrives at the DAC can be different than the decode of the file).
So few things based on your signal path:
Roon shows you the bitrate of the MP3. The bitrate of the MP3 impacts the amount of data that gets stored and influences how close the “approximation” will be to the original PCM. Higher bitrate, less thrown away, closer approximation. This is why 384k MP3s sound much better than 128k.
You can upsample just fine, it’s upsampling the decoded PCM from the MP3. The 16/44.1 (or 24/44.1 it looks like in your case)
And, to directly answer your question, PCM by definition is not “compressed”. It’s very simply a string of 1’s and 0’s representing a bit depth and sample rate. Whatever RAAT does it maintains the PCM data stream across the network so that data stream is unharmed when handed to the DAC (via SPDIF, USB, etc.). When using RAAT, Roon will always take the original container, extract the PCM (ignore DSD for now), and send it as is across the network. So, no, it’s not being “converted” it’s being decoded. That’s the DEC part of Code / Decode in CODEC. Once you have the PCM you can upsample to whatever bit depth and resolution you want. What’s actually occurring to add those additional bits and sample resolution is a bit (pun unintended) beyond the scope… and… maybe another time.