So, I managed to produce (with the help of Evolve) a video file that causes the decoding library to crash. I'm not too familiar with it, but the file crashes both Evolve (which uses DirectShow -> Windows codecs -> Media SDK for thumbnailing) and Windows Media Player when attempting to play it. However, ffmpeg-based players (both VLC and MPV) can play it just fine.
I'm not familiar with either Media SDK itself or the internals of the MOV container, so I'm just going to post the file here and hope someone more knowledgeable can identify the issue and fix it: https://yadi.sk/d/q46JXUqaisb6B
System info: Windows 8.1 64-bit, i5-4670K CPU (Haswell), latest Intel graphics drivers.
Can you please check the version of Windows Media Player you are using and update to latest. As I was able to play content file "crasher.mov" on latest windows media player successfully. Also, you mentioned that you created this video with help of Evolve and during decode Evolve app crashed. It looks more like a bug with Evolve, please contact and direct this to evolve team, as they will be able to a provide a workaround solution on the issue.
I've got Windows 8.1 with all the latest updates here. Looking at the backtrace, the crash is in mfx_mft_mjpgvd_32.dll (Intel Hardware M-JPEG Decoder MFT), which is part of the Media SDK. Disabling that specific MFT in registry (by renaming HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\MediaFoundation\Transforms\00c69f81-0524-48c0-a353-4dd9d54f9a6e) makes the video playable in WMP (presumably using Microsoft's default codecs). I feel like that points strongly towards to that specific MFT being the culprit.
Ok, Can you please follow below steps and run the simple command. This will help to rootcause if issue is with mjpeg hw decoder.
- Download and install MediaSDK for windows from INDE here: https://software.intel.com/en-us/intel-inde
- Follow quick installation guide to install MediaSDK for Windows: https://software.intel.com/en-us/articles/quick-installation-guide-for-media-sdk-on-windows-with-intel-inde
- Download and install media samples (ver 18.104.22.168) from here: https://software.intel.com/en-us/media-client-solutions-support/code-samples
- Verify and check if you have latest drivers installed. Latest version (22.214.171.124.4264)
Now, run the command line: "sample_decode.exe jpeg -i inputfile.MJPG -o outputfile.yuv -hw"
Sample_decode is available in samples folder <installed path>/_bin/.
Let me know result of this test.
The video decodes with sample_decode:
Decoding Sample Version 126.96.36.199
Input video JPEG
Output format YUV420
Crop X,Y,W,H 0,0,960,600
Frame rate 30.00
Memory type system
MediaSDK impl hw_d3d11
MediaSDK version 1.16
Frame number: 1, fps: 12.913, fread_fps: 1208.992, fwrite_fps: 79.734
However, this seems to only produce a single frame (while the video has multiple), and Windows Media Player still crashes when opening it. Interestingly enough, the builtin Windows 8.1 "Videos" app plays the file successfully.
The video actually has more than 1 frame, which means it's still decoded incorrectly. Also, don't we eliminate the actual MFT code from the pipeline when doing this? To me it seems like the MFT code is what's causing the crash, potentially because the video isn't decoding correctly in the first place.
I suspect the issue could be with original input video container (crasher.mov) format. A single frame may be because demuxing did not happen correctly. So, please let me know results to suggestions made in previous comment:
- Try using any other long correct test mjpeg clip, were you able to successfully decode other mjpep clip with sample_decode with same command line?
- I suggest reinstalling WMP and updating to latest to resolve crash with WMP on your system.