You're setting up a live broadcast with Windows Media Encoder, you've got a capture card feeding in, and you decide to apply a denoise filter or a resize because the source looks a bit rough. You hit Start Encoding. A dialog pops up: "NS_E_NO_REALTIME_PREPROCESS (0XC00D1B8C) — It is not possible to use image preprocessing with live encoding." The encode never starts. The stream never goes out. This happens on Windows Media Encoder 9 Series, Windows Media Services 9 Series, and any SDK-based app using the WM Encoder API when the source is a live device (capture card, webcam, DV cam) and preprocessing filters are enabled in the session's video properties.
What the error actually means
The Windows Media encoding pipeline handles live sources differently from file sources. A file source (an AVI, WMV, or MP4 on disk) can be passed through a preprocessing stage before the encoder sees it. That stage runs in a non-realtime context — it can buffer frames, look ahead, run heavy filters like deinterlacing, color correction, or scaling without caring about clock time. A live source can't do that. Frames arrive in real time and must be encoded before the next frame lands. If preprocessing needs more time than the frame interval gives it, the pipeline falls behind and the stream stutters or drops. So Microsoft disabled preprocessing on live sources entirely. When you turn a preprocessing filter on and the source is live, the encoder checks the session, sees the conflict, and refuses to start with 0xC00D1B8C.
You'll typically see this in three situations: you cloned a file-encoding profile and switched the source to a capture card, you loaded a preset that had "Deinterlace" or "Inverse telecine" checked, or you wrote code against the WM Encoder API and set IWMEncVideoSource2::put_Preprocessing or the equivalent filter properties before calling Start. The error itself is the encoder being honest with you — it's not a bug, it's a guardrail.
Fix it: turn preprocessing off for live encodes
The real fix is to disable preprocessing on the live session and push the filtering work to something that can actually handle it in real time. Here's the sequence for Windows Media Encoder 9.
Open Windows Media Encoder and load your session, or if you're already in the New Session Wizard, get to the Session Properties dialog. You can also right-click the session name in the main window and pick Properties.
Go to the Processing tab. This is where preprocessing lives. You should see a list of available filters: Deinterlace, Inverse Telecine, Cropping, Scaling, Denoise, and so on. Any of these that are checked while your source is a live device will trigger 0xC00D1B8C.
Uncheck every preprocessing filter. Don't leave even one enabled "just in case" — the encoder checks the whole list. After you've cleared them all, click Apply. The Processing tab should now show no active filters.
Switch to the Sources tab and confirm your video source. It should read something like
Video Device: your capture card nameorDV Camera. If it says "File" then you're not actually in a live session and 0xC00D1B8C wouldn't be firing — so if you saw the error, the source is live.Click Apply on the session properties, then OK to close the dialog. You should be back at the main encoder window with no error dialog.
Click Start Encoding. The status bar at the bottom should change to "Encoding" and the elapsed time counter should start ticking. If it does, you've cleared the error. If the same dialog reappears, jump to the troubleshooting section below.
If you're coding against the WM Encoder API
Same logic, different surface. Before you call Start on the encoder, make sure your video source's preprocessing is disabled. A minimal check looks like this:
IWMEncVideoSource2* pVidSrc = NULL;
// ... obtain pVidSrc from the source group ...
pVidSrc->put_Preprocessing(VARIANT_FALSE);
Also clear any filter objects you added to the source group. If you added an IWMEncVideoSource for a file, that's fine — the restriction only applies to live device sources. But if the source is a device and you've attached a preprocessing filter to it, remove the filter before starting.
The encoder's job is to encode, not to run Photoshop on every frame in flight. Live means live.
Where to do the preprocessing instead
If you actually need deinterlacing, scaling, or color correction on a live feed, you have two honest options. First, do it before the encoder: run the capture card through a hardware scaler or a capture application like OBS or ffmpeg that has real-time filters, then feed the cleaned video into the encoder as a virtual camera or a file-like source. Second, apply it after the fact: record the raw stream, then batch process the file with those filters when time isn't a constraint. Trying to force the encoder to do both at once is what got you 0xC00D1B8C in the first place.
If it still fails after clearing filters
Confirm the source really is live. Some capture tools register as file sources and some register as devices. Open Sources and check. A DV camera connected but not in VTR mode can also report oddly.
Restart the encoder. Session property changes don't always propagate to a running session. Close the app completely and reopen it.
Check profile defaults. Some .prx profiles ship with preprocessing baked in. Load the profile, clear the Processing tab, then save it under a new name so you don't have to do this again.
Look for stale filter registrations. Third-party DirectShow filters (deinterlacers from capture card vendors, for example) can register themselves as preprocessing candidates. Open Registry Editor and look under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Media\Encoder\Preprocessingfor anything you don't recognize. Back up the key before deleting anything.Update the encoder. Windows Media Encoder 9 Series is ancient — the last release was in the 2000s. If you're on Windows 10 or 11 and running WME 9, expect compatibility quirks. Many teams have moved to ffmpeg or OBS for the capture side and keep the encoder out of the live path entirely.
Capture the exact call stack if you're coding. Attach a debugger and break on
Start. Inspect the source group's filters and preprocessing flag right before the call. Nine times out of ten, something is settingput_Preprocessing(VARIANT_TRUE)somewhere upstream in your code and you forgot about it.
Once you've cleared preprocessing and restarted the encode, you should see the status change to "Encoding" and the stream go out. If you're still getting 0xC00D1B8C after all of this, the source is almost certainly still a live device and something in the pipeline is still flagging preprocessing as on — check your profile, your API calls, and any filter packs you installed.