Fix NS_E_UNCOMP_COMP_COMBINATION (0XC00D1BB6) Error
This Windows Media error means you tried mixing uncompressed and compressed streams in one session. The fix is to rebuild your encoding profile or split the output into separate files.
I know seeing NS_E_UNCOMP_COMP_COMBINATION (0XC00D1BB6) pop up mid-encoding feels like a punch in the gut. You've got your media pipeline all set, and then Windows throws this cryptic nonsense about mixing compressed and uncompressed content. Let me save you the rabbit hole of registry tweaks and reinstallations — the fix is straightforward once you understand what's actually breaking.
The Short Fix: Rebuild Your Profile
Open your encoding app — Windows Media Encoder, Expression Encoder, or any SDK-based tool. Go to the Session Properties or Profile tab. Find the audio and video streams. For each stream, make sure all streams in the same output use the same compression type. Either all compressed (using a codec like WMA, WMV, H.264) or all uncompressed (PCM, RGB). Mixing them inside one session triggers this error.
If you're working with code, here's the pattern that fixes it in C++ using the Windows Media SDK:
// Bad: mixing compressed and uncompressed in one profile
pProfile->CreateStream(&pStream1);
pStream1->SetStreamType(WMMEDIATYPE_Video);
pStream1->SetCompressed(FALSE); // uncompressed
pProfile->CreateStream(&pStream2);
pStream2->SetStreamType(WMMEDIATYPE_Audio);
pStream2->SetCompressed(TRUE); // compressed — ERROR
// Good: keep both compressed
pStream1->SetCompressed(TRUE);
pStream2->SetCompressed(TRUE);
// Or keep both uncompressed
pStream1->SetCompressed(FALSE);
pStream2->SetCompressed(FALSE);
Once both streams match, save the profile and re-run the session. No more 0XC00D1BB6.
Why This Error Happens
The Windows Media Profile system (WMProfile) stores each stream's compression state in a flag called WMT_PROJECT_DATATYPE_COMPRESSED or WMT_PROJECT_DATATYPE_UNCOMPRESSED. When you create a session, the IWMProfileManager checks that flag across all streams. If one says COMPRESSED and another says UNCOMPRESSED, it throws NS_E_UNCOMP_COMP_COMBINATION. The session object physically can't handle this mix — it wasn't designed to mux compressed and raw data together into one container.
A real-world scenario: I saw this constantly when someone built a Windows Media file with a raw PCM audio track (uncompressed) and a WMV video track (compressed). The encoder tried to put them into a single .wmv output, which doesn't support mixed stream types. The fix took longer than it should've because Microsoft's error message doesn't say "you need to match compression flags" — it just says "can't mix."
Less Common Variations
- Expression Encoder 4 SP2: If you're using the Silverlight Output Format, this error sometimes shows as
0xC00D1BB6after a preset import. The real problem is the preset has one stream usingUncompressedVideoand another usingAacAudio. Open the preset XML, find<MediaStream>entries, and set allIsCompressedattributes to the same value. - Windows Media Encoder 9 Series: When using custom profiles from a file, the error can appear if the profile was created with an older SDK that saved the compression flag inconsistently. Re-save the profile through the Profile Editor included with the encoder — that forces all streams to a consistent compression type.
- Third-party tools that wrap the WMSDK: Tools like FFmpeg with the
-f asfmuxer sometimes produce this error if you feed a mix of codecs. For example,ffmpeg -i input.mp4 -c:v wmv2 -c:a pcm_s16le output.wmvtriggers it. Switch the audio to a compressed codec likewmav2or split the output into separate files (one for video, one for audio). - Network streaming sessions: Live streaming with Windows Media Services can hit this error if the source filter outputs uncompressed video while the encoder expects compressed feeds. Check the source filter's output pin media type — it should match the encoder input type.
How to Prevent It
Before you build any encoding pipeline (live or file-based), decide upfront: are you going for compressed or uncompressed? If you need one compressed stream and one uncompressed — for example, compressed video for storage but uncompressed audio for editing — then don't try to put them in the same file. Write them to separate outputs. Most SDKs let you create multiple writers or use the IWMProfile3::AddStream method only after verifying the compression flags match.
Also, when you copy profiles from other machines or download them from forums, always validate them in the Profile Editor before using. Open the .prx file, check the "Compressed" checkbox for each stream, and make sure they're all the same. That one step would've saved me three hours of head-scratching the first time I hit this.
One more thing: if you're building a custom app with the WMSDK, call IWMProfileManager::LoadProfileByID or IWMProfileManager::LoadProfileByData before adding streams. Those methods return a clean profile with default compression settings. Then override each stream's compression flag — but again, keep them consistent. A quick audit function that loops through all streams and compares their GetCompressed() return values will catch the mismatch before the session starts.
Was this solution helpful?