Webcam MJPG-Capture-Streams sind unter Windows 10 nicht verfügbar.

nter Windows 10 Build 10.1607.14393.10 (auch bekannt als Anniversary Edition) kann ich keine MJPG-Capture-Streams mehr abrufen. Früher gab es sowohl MJPG- als auch YUY2-Auflösungen. Jetzt erhalte ich nur YUY2 in DirectShow (Kernel-Streaming) und in Media Foundation. MJPG konvertierte Medientypen in NV12, bevor die IBaseFilter-Quelle mit irgendetwas verbunden ist. Versucht auf mehreren Systemen mit verschiedenen Kameras. Irgendwelche Ideen, was könnte falsch sein?

     640x480   @30   YUY2
     ...
     640x480   @30   MJPG <- gone
 ...
DirectShow:
    com_t<IAMStreamConfig> sc;
    if_failed_return_result(camera_output_pin->QueryInterface(&sc));
    int number_of_capabilities = 0;
    int capability_size = 0;
    if_failed_return(sc->GetNumberOfCapabilities(&number_of_capabilities, &capability_size), -1);
    for (int i = 0; i < number_of_capabilities && k < count; i++) {
        VIDEO_STREAM_CONFIG_CAPS scc;
        assert(sizeof(scc) == capability_size);
        AM_MEDIA_TYPE* mt = null;
        if_failed_return(sc->GetStreamCaps(i, &mt, (BYTE*)&scc), -1);
...

In MMF:

    640x480   @30   YUY2
    ...
    640x480   @30   NV12 // camera reports MJPG 4cc in USBView and KsStudio

for (int i = 0; k < count; i++) {
    com_t<IMFMediaType> type;
    if (d->reader->GetNativeMediaType(VIDEO_STREAM, i, &type) != 0) {
        break;
    }
    GUID guid_major_type = {0};
    if_failed_return_result(type->GetMajorType(&guid_major_type));
    if (guid_major_type == MFMediaType_Video) {
        GUID guid_subtype = {0};
        if_failed_return_result(type->GetGUID(MF_MT_SUBTYPE, &guid_subtype));
        AM_MEDIA_TYPE* amMediaType = null;
        if_failed_return_result(type->GetRepresentation(FORMAT_MFVideoFormat, (void**)&amMediaType));
        assert(amMediaType->cbFormat == sizeof(MFVIDEOFORMAT));
        const MFVIDEOFORMAT* mi = (const MFVIDEOFORMAT*)amMediaType->pbFormat;

Antworten auf die Frage(4)

Ihre Antwort auf die Frage