ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.12k stars 1.06k forks source link

The codecs and media frameworks support meta-tracker #1464

Open HonkingGoose opened 6 years ago

HonkingGoose commented 6 years ago

To all who read this issue report and thread:

I've migrated the tables to my repository at https://github.com/HonkingGoose/proton_codecs_media_support_tracker If you want to update a table entry, you can open a pull request there. :wink: This way I don't need to keep track of changes all by myself.


Proton 5.13-1 has improvements for some games. Some quartz games may start working now.

Quote from @aeikum original comment here

There won't be any improvements for Media Foundation-based games in 5.13-1.

We put in a bunch of work improving quartz video between 5.0 and 5.13, so some games may start working (I don't have specific titles, sorry). If you see a color bars pattern appearing now, that's an indicator of our work on certain codecs. You will hopefully see the real video instead of those color bars very soon.


Feature Request

I confirm:

Description

There are multiple games which use .wmv (Windows Media Video) files, for their cinematics/cutscenes. These files will not be played back in-game on a standard installation of the game using Proton.

Because I've seen multiple bug-reports with regards to .wmv file playback, I wanted to make a generic request, so it doesn't get lost in between all the specific game issues.

Justification

There are multiple games which have .wmv file playback issues, these games use .wmv for cutscenes, and so are a integral part of the story and experience of the games which use it.

For #137 the fix for .wmv files would probably make the game ready for official whitelist process. There might be other games which would qualify for whitelisting too, after this feature has been implemented.

Integration into Proton would fix .wmv file playback for the games referenced below.

Risks

References

The old tables can be seen from the edit history. I recommend you use the newer tables in my repository though.

ghost commented 6 years ago

The problem is that there are games like Obduction that need Windows Media Foundation/Windows Media Feature support as they use a dll not installed otherwise by a wmv player like WMP. https://github.com/ValveSoftware/Proton/issues/327

So its not just being able to play a video, they literally need this dll (and whatever else is tied to it) to playback the video. UE4 games all have the option of needing this dll if it is used in a Windows release for video playback. Possibly Unity games as well.

Although, as long as some version of it can be found by the game (and used), it could even just be a mock one that uses a different means.

While, some games seem to be able to get by with WMP installed as far as I can tell from various posts on the internet, it would be better to go the whole mile and support more than just simple wmv format. WMV is a part of a whole pie.

HonkingGoose commented 6 years ago

@byte1024 Oh, I didn't know that more might be needed beside just fixing "simple" .wmv file playback.

I understand your point correctly:

  1. Some games also require Windows Media Foundation and/or Windows Media Feature support.
  2. Those games use a dll (and all that is tied to this dll) which is not installed by a wmv player like WMP.
  3. Therefore just fixing .wmv playback will not solve the whole problem games have with playback.
  4. So it's better to implement support for the whole "Windows Media Foundation and/or Windows Media Feature" framework.
ghost commented 6 years ago

@byte1024 Oh, I didn't know that more might be needed beside just fixing "simple" .wmv file playback.

I understand your point correctly:

1. Some games also require Windows Media Foundation and/or Windows Media Feature support.

2. Those games use a dll (and all that is tied to this dll) which is not installed by a wmv player like WMP.

3. Therefore just fixing .wmv playback will not solve the whole problem games have with playback.

4. So it's better to implement support for the whole "Windows Media Foundation and/or Windows Media Feature" framework.

It looks like there might even be more. The only log I found in all the links you posted (here: https://github.com/ValveSoftware/Proton/issues/137) needs quartz.dll to find system codecs and uses fmod for in-game sound.

The log for that one shows some stuff used in quartz.dll can't be found:

41489.934:0008:0032:err:quartz:GetClassMediaFile Media class not found
41489.935:0008:0032:err:quartz:GetClassMediaFile Media class not found
41489.936:0008:0032:err:quartz:GetClassMediaFile Media class not found

That's all I noticed in that log, but its easier to find this stuff when you know the filename of the video being played since a search goes right to it if its found in the log.

And an explanation that Wine's quartz.dll is fake and missing stuff. https://www.winehq.org/pipermail/wine-users/2002-November/009217.html

And the corresponding log entry shows this is still true: 41489.932:0008:0032:trace:module:load_dll L"C:\\windows\\system32\\quartz.dll" is a fake Wine dll

Some seem to say quartz is a part of the WMP install, but quartz is also DirectShow (DirectX media) which was replaced with WMF that I mentioned. https://en.wikipedia.org/wiki/DirectShow

and Microsoft also mentions WMF in the what's new section of DirectShow: https://docs.microsoft.com/en-us/windows/desktop/directshow/whats-new-in-directshow

Its a media pie, all these pieces are a part of it, but Wine has been failing on them and now Proton is too.

aeikum commented 6 years ago

Wine has a directshow implementation, which depends on gstreamer. Since we can't depend on the system having gstreamer installed, we will need to build and ship it with Proton. Worse, we also would need to ship the codecs, which may have patent/licensing issues. It hasn't been looked into yet.

Wine does not have a MF implementation yet. There's some work being done on it, but it's not nearly ready. If anyone is looking to contribute to Wine, that may be a decent place to get started.

niikoo commented 5 years ago

+1

I have tried a lot of different configurations. Haven't had any success with codec packs / wmp. VLC in Proton plays those videos though, so it should be possible.

Tried Proton 3.16-4 beta and 3.7-8 Graphics: AMD RX580

HonkingGoose commented 5 years ago

@niikoo Thanks for trying things out. :smile:

I must confess, my understanding of this issue is very limited. @aeikum knows way more about this than me... So @aeikum, could you perhaps give your thoughts on this?

basxto commented 5 years ago

VLC has it’s own codecs, afaik.

PythonicChemist commented 5 years ago

+1

it affects all Blazblue games. I tried manually installing quartz into their prefixes which doesn't work with a proton prefix but with a normal wine one.

f0rmatme commented 5 years ago

this also effects the new RE2

kisak-valve commented 5 years ago

Hello @james-munson, the libraries you've shared are not free and it's problematic to redistribute them.

Ahmed-E-86 commented 5 years ago

Add the six games that I just have referenced to the list (Windows Media Foundation).

HonkingGoose commented 5 years ago

Hi @kisak-valve, I'm thinking of changing the layout/format of this list. But I want your guidance/approval first.

Problem description:

Current situation:

Suggested situation:

Change title of issue to: "[Feature request] Add Windows Media Foundation support to Proton", so that all current issues are included, regardless of current subcategory. Delete subcategories, and only have one category: Games affected by the lack of WMF support

Questions to you:

kisak-valve commented 5 years ago

It would be better to ask a Proton dev, but I think it's probably best to split this apart to individual components involved, otherwise the notes on the individual games are of more value. The general idea is that there should be a single actionable issue per issue report.

My impression was that the intent of this feature request was for the codec(s) to be made available, and the frameworks needed to get to that codec creeped in over time.

HonkingGoose commented 5 years ago

Yeah, this list is not "one actionable issue per report" anymore. I agree with you that splitting this apart into their components would probably be cleaner.

The problem is, I myself don't know what to look for. I don't know the individual components, so I would need help splitting this issue. I don't know what parts are codec(s) related and which are framework(s) related. If the developer gives me a list of what is codec and framework and how to categorize the games, I'll do the splitting up into new issues myself.

Could you get a developer to look over this, and give their opinion/guidance? I don't know who would be the developer to ping for this, you probably do know who knows most about this.

PythonicChemist commented 5 years ago

There is quartz.dll that is needed for mostly older games using .wmv files and then there is also the newer mfplat.dll that is required by mostly newer games.

There is currently a workaround to install mfplat.dll manually into a prefix:https://old.reddit.com/r/linux_gaming/comments/ajyx51/resident_evil_2_playable_with_the_latest_dxvk_and/ef0pqem/

I do not know if or to what extend mfplat.dll can replace quartz.dll to get playback to work for older games.

aeikum commented 5 years ago

The problems are understood. We need an mfplat implementation (we have a dev working on this) and we need to make a decision on how WMV and other codecs are to be licensed.

It may be interesting to split games into two categories (mfplat users and quartz users) and also list what codecs are used by each game. This is actually something we're working on internally, so I wouldn't go out of your way to gather this information. But if you have that info already and want to sort it, feel free.

HonkingGoose commented 5 years ago

Hi @aeikum thanks for your comments and guidance on how to organize this issue.

I've gone ahead and split all those games into two categories as best as I can. I searched in their respective proton logs for quartz or mf and noted the results.

I found that some games don't yet have a clean proton log attached to their issue, I have commented in their respective issues, to ask for a clean proton log.

I've removed my section "thoughts on potential fix" seeing as you're already having more knowledgeable people looking into it. :smile:

basxto commented 5 years ago

1649 uses quartz, videos use wmv3 and wma2

Ahmed-E-86 commented 5 years ago

This manual fix will work with games requires mfplat.dll

https://github.com/doitsujin/dxvk/issues/728#issuecomment-459839962

romulasry commented 5 years ago

Infectonator 3 : Apocalypse https://github.com/ValveSoftware/Proton/issues/2193 Also requires mfplat support.

ghost commented 5 years ago

Dead or Alive 6 seems to require MediaFoundation for the story mode, while online multiplayer, controllers, and everything else seems to work.

HonkingGoose commented 5 years ago

@z0z0z There is no open issue yet for Dead or Alive 6, so I've added the github search link for the app id in the list. I've also referred to your comment.

I'll fix the listing for DoA 6 when there's an proper issue report.

Edit: there's a ticket for DoA6 now at #2420, so I've edited my list, to include this ticket.

Cxpher commented 5 years ago

This being implemented would almost instantly make a good percentage of games available via proton.

vjr2 commented 5 years ago

Is this so hard to implement?

Ahmed-E-86 commented 5 years ago

Is this so hard to implement?

They implemented some pieces, it will need some time to be fully implemented. They are half way there, so no need to worry.

vjr2 commented 5 years ago

But if I install vía winetricks in a protoprefix a software like quartz, may ve possible for some games run video-based cutscenes?

HonkingGoose commented 5 years ago

@vjr2 Please read this message: https://github.com/ValveSoftware/Proton/issues/1464#issuecomment-458144128 it explains the status of the project. The main issue is licensing the needed parts for usage in Proton.

basxto commented 5 years ago

@vjr2 you have to install stuff like wmp10, which can’t be installed in a 64bit prefix and proton is 64bit only

Duckbuster commented 5 years ago

Zero Escape collection on steam requires quartz and the MP43 codec. (at least for 999) https://github.com/ValveSoftware/Proton/issues/1893#issuecomment-478333802

Anyone know how to get that working?

ryao commented 5 years ago

@basxto I would be surprised if it is that simple, but if you want to give it a try, you can get a 64-bit WMP 11 here:

https://www.microsoft.com/en-us/download/windows-media-player-details.aspx

ghost commented 5 years ago

I wrote a script to easily install Media Foundation support in Wine prefixes.

Casuallynoted commented 5 years ago

Absolutely in support of this. Excited to see it being worked on.

HonkingGoose commented 5 years ago

Hi @kisak-valve, has the Proton team thought about labeling the relevant issues with tags like quartz and Media Foundation and WMVcore.dll? Or would that just clutter up the issue tracker with tags/labels? Maybe that would provide a easier way to search the issue tracker than my list?

I'm just asking, I'm not pushing for or against labeling. :smile:

AwesamLinux commented 5 years ago

@HonkingGoose I have done some more testing, here is some additional info for a few more of the games:

1319

Codecs used: WMV, VC-1 + WMA Quartz "76044.767:0028:002d:err:quartz:GetClassMediaFile Media class not found"

1781

Codecs used: WMV, VC-1 + WMA Log mentions "Microsoft.Xna.Framework.Video.dll", quartz maybe?

2576

Codecs used: WMV, VC-1 + WMA

829

Codecs used: WMV, VC-1 + WMA Quartz "3241.574:0027:0028:err:quartz:GetClassMediaFile Media class not found"

(I have posted the proton and media info logs in each of those issues)

HonkingGoose commented 5 years ago

Thank you @AwesamLinux, for your testing work. I've updated my list with your findings.

corvusd commented 5 years ago

Star Wars The Force Unleashed 2 - no cinematics at all:

0082:err:quartz:GetClassMediaFile Media class not found 0082:fixme:quartz:VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator (0x20ce648/0x20ce438)->(...) stub 0082:err:quartz:GetClassMediaFile Media class not found 0082:fixme:quartz:VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator (0x20ce648/0x20ce438)->(...) stub 0082:err:quartz:GetClassMediaFile Media class not found 0082:fixme:quartz:VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator (0x20ce648/0x20ce438)->(...) stub 0082:err:quartz:GetClassMediaFile Media class not found 0082:fixme:quartz:VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator (0x20ce648/0x20ce438)->(...) stub 009b:fixme:imm:ImmReleaseContext ((nil), (nil)): stub

imagen

HonkingGoose commented 5 years ago

@corvusd Thanks for your comment, I've added the game and codecs to the list.

owlboy commented 5 years ago

1199

Codecs Used (Unity Video Players): H.264, AAC, MP3 Codecs Used (AVPro Based Video Players): Pretty much everything as AVPro is designed to have broad support.

pchome commented 5 years ago

666 - No intro/tutorial videos, quartz

$ ffprobe FMV_Intro_OneShot.avi

Input #0, avi, from 'FMV_Intro_OneShot.avi':
  Metadata:
    encoder         : MEncoder SVN-r33883(20110719-gcc4.5.2)
  Duration: 00:00:51.60, start: 0.000000, bitrate: 4298 kb/s
    Stream #0:0: Video: wmv2 (WMV2 / 0x32564D57), yuv420p, 1280x720, 4159 kb/s, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 30 tbn, 30 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, fltp, 128 kb/s
nidjan commented 5 years ago

MUST HAVE! Problem with Battlefleet Gothic Armada misson "Hulk" is saved now.

h1z1 commented 5 years ago

You can add GTA5 to the list though the impact isn't clear as it works for some.

Tank-Missile commented 5 years ago

@h1z1 The Self Radio in GTA V does not work due to the lack of an implementation for mfplat:mfsourceresolver_CreateObjectFromURL. I imagine that's the impact it has.

DS-Pro commented 5 years ago

#2316 the game freezes on intro

NickelodeonLogo.mp4 codec:

Video: MPEG4 Video (H264) 1920x1080 30fps 275kbps [V: h264 main L4.0, yuv420p, 1920x1080, 275 kb/s]

TorusLogo.mp4 codec:

Video: MPEG4 Video (H264) 1920x1080 29.97fps 15602kbps [V: Core Media Video (h264 high L4.0, yuv420p, 1920x1080, 15602 kb/s)]
Audio: AAC 48000Hz stereo 256kbps [A: Core Media Audio [eng] (aac lc, 48000 Hz, stereo, 256 kb/s)]

log

WindowsVideoMedia error 0x80004001 while reading ...
Context: Turning DXVA off
Error details: <Empty>
KillyMXI commented 5 years ago

1905

UE4 game. Freezes on videos with the message written in the log: Could not find a native player for file ....mp4 mf.dll and mfplat.dll seems to be mentioned in the log.

DistantThunder commented 5 years ago

Confirming this is still happening on Proton 4.11 with Star Wars the Force Unleashed II:

8865.353:0027:002f:err:quartz:GetClassMediaFile Media class not found 68865.355:0027:002f:err:quartz:GetClassMediaFile Media class not found 68865.357:0027:002f:err:quartz:GetClassMediaFile Media class not found 68865.357:0027:002f:fixme:quartz:VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator > (0x1cf68c/0x1cf2f0)->(...) stub

Installing xact:

env WINEPREFIX=/$PATH/Steam/steamapps/compatdata/32500/pfx/ winetricks xact

Helps with some in-mission scenes but not the others.

The game still skips important story scenes introducing and ending missions.

Weirdo1312 commented 5 years ago

any updates on this issue this is so so so needed

DanielRios549 commented 5 years ago

The same way as DX calls are translated to native Linux Vulkan calls, I think maybe is possible to translate WMP calls to native VLC calls, so the videos can be played, of course, if VLC was installed, it is better than nothing

ghost commented 5 years ago

@DanielRios549 Yeah that's definitely possible.

I was told by codeweavers employee that Wine already has the ability to pipe media playback to gstreamer.

I was also told that Proton's Wine is not built with gstreamer support, but don't get excited, because I've never gotten any game with .wmv video playback to play videos, even with Wine built with gstreamer support, and all gstreamer plugins I know of installed (including gst-libav and lib32-gst-libav).

This is probably the second biggest issue that prevents Windows games from being played aside from anti-cheat, I'd love a solution.

Cxpher commented 5 years ago

This has to happen eventually.

Proton blockers like EAC and wmv playback need to be sorted out.

On Mon, Sep 30, 2019 at 1:46 PM z0z0z notifications@github.com wrote:

@DanielRios549 https://github.com/DanielRios549 Yeah that's definitely possible.

I was told by codeweavers employee that Wine already has the ability to pipe media playback to gstreamer.

I was also told that Proton's Wine is not built with gstreamer support, but don't get excited, because I've never gotten any game with .wmv video playback to play videos, even with Wine built with gstreamer support, and all gstreamer plugins I know of installed (including gst-libav and lib32-gst-libav).

This is probably the second biggest issue that prevents Windows games from being played aside from anti-cheat, I'd love a solution.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ValveSoftware/Proton/issues/1464?email_source=notifications&email_token=AK3OXTUDVFFCAFGN22BA7O3QMGHDXA5CNFSM4FVJPG5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD74PR6A#issuecomment-536410360, or mute the thread https://github.com/notifications/unsubscribe-auth/AK3OXTRVZVO4QEIDOT3PF23QMGHDXANCNFSM4FVJPG5A .

basxto commented 5 years ago

aeikum explained above why gstreamer support is disabled That’s only for DirectShow (quartz), but not for Media Foundation, which is meant to supersede the other, as far as I understand