Proton: The codecs and media frameworks support meta-tracker

Created on 15 Sep 2018  ·  176Comments  ·  Source: ValveSoftware/Proton

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:

  • [X] that I haven't found another request for this feature. Technically there are multiple requests, but they are scattered between multiple issue reports.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

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

  • The fix for .wmv file playback might break something else in Proton.
  • There might be some other unknown risks associated with including the .wmv file playback, like for example patent/IP issues regarding including .wmv codecs/playback.

References

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

Feature Request

Most helpful comment

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.

All 176 comments

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.

@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.

@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.

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.

+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

@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?

VLC has it’s own codecs, afaik.

+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.

this also effects the new RE2

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

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

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

Problem description:

  • The list is getting very big and unwieldy.
  • I'm not sure this list is actually helpful in its current format.
  • The current list seems mostly to be focused on Windows Media Foundation support issues, so it might make sense to retool the list as such.

Current situation:

  • Big list, with lots of subcategories.
  • Lack of focus on the precise issue that is needing the fix ( .wmv / WMP9 / WMP10 / WMF ).
  • Manual labor by me to get the game in the right subcategory ( .wmv / WMP9 / WMP10 / WMF ).

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:

  • Your thoughts on the current format?
  • Subcategories, yes/no?
  • Permission to rename the issue to [Feature request] Add Windows Media Foundation support to Proton?
  • Permission to remove the subcategories in favor of only one category?
  • Should I remove the section: "Thoughts on potential fix:"?

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.

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.

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.

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.

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:

1649 uses quartz, videos use wmv3 and wma2

This manual fix will work with games requires mfplat.dll

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

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

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

@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.

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

Is this so hard to implement?

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.

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

@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.

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

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?

@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

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

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

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:

@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)

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

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

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

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.

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

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

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

@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.

#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>

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.

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.

any updates on this issue
this is so so so needed

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

@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.

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
.

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

@basxto Media Foundation is meant to replace the old video playback APIs, but Wine supporting Media Foundation won't help any of the older games using those directshow/quartz/wmp playback methods.

Also affects 'Blacksad: Under The Skin' (Unity). Uses media foundation + h264.

Hi @adamdmoss, there is currently no issue for Blacksad: Under The Skin (1003890). Could you maybe make a new issue report, if you have the game, so that we can track its performance in Proton?

See here for scripts to rename all of the video files in a game. You can also revert the video file names back with the second provided script. The 3rd script can create 0 byte video files also.
https://gist.github.com/BillFleming/9cf58245c5544896181ce99cb108edb5

Darksiders Genesis also uses Media Foundation.

Hi @ahmed-elsayed2017, there is currently no issue for Darksiders Genesis (710920). Could you maybe make a new issue report, if you have the game, so that we can track its performance in Proton?

@HonkingGoose I got the issue here with the other guy in game Darksider Genesis, not sure if it is the same problem https://steamcommunity.com/app/710920/discussions/0/1754645970777594912/?tscn=1575636461
Let me know what I can help.

Hi @ahmed-elsayed2017, there is currently no issue for Darksiders Genesis (710920). Could you maybe make a new issue report, if you have the game, so that we can track its performance in Proton?

I have GOG version of this game, and I run it with wine-staging, and it needs <Removed by moderator>

Hello @ahmed-elsayed2017, the workaround you recommended is legally problematic and has been removed. There are other ways to get Media Foundation libraries from a 64 bit Windows 7 install, but we can not condone the distribution of copyrighted libraries by third parties.

Hi @nguyennb9, you can help by opening a issue report for the game. :)

Fill in this form to create a new issue.

Some tips:

  1. Use this link to check that nobody else has created a issue for this game yet.
  2. The steam app id can be found on the store page for the game, it's 710920 for this particular game.
  3. The title for the issue should be: Darksiders Genesis (710920)
  4. You can tick the boxes [ ] by marking them with a [x], (do not leave whitespaces in the box, that will not render the tick correctly).

You can find the game's launch options like this:

  1. Open the Steam client.
  2. Go to the Library view.
  3. Right-click Darksiders Genesis.
  4. From the menu that appears, select Properties.
  5. Then select Set Launch Options.

Please add PROTON_LOG=1 %command% to the game's launch options, then start the game.
The Proton log will be created in your home directory. It will be called: steam-710920.log
Drag and drop the log into your issue report. It should upload the log.
If the log is too big, zip the log with a tool of your choice, Proton logs should compress well.

I hope this is helpful to get you started.

Greetings,

HonkingGoose

Oops, I follow an unofficial guide to install mfplat and I don't know how to roll back. The game works after that fix so that I think its about the same problem with mfplat.

Is it possible to get a trace of all of the mfplat/mf library calls? I want to look into the Spyro Reignited Trilogy (since the lack of cutscenes seems to affect the ability to use the Y button on the Xbox controller).

When I looked at the logs that the users submitted at #3035 I only found this reference

7299.566:0030:0031:trace:loaddll:load_native_dll Loaded L"C:\\windows\\system32\\mfplat.dll" at 0x13690000: PE builtin
7299.566:0030:0031:trace:loaddll:load_native_dll Loaded L"C:\\windows\\system32\\mf.dll" at 0x6aa00000: PE builtin

Edit: Figure it out. Did some research online and found it that it is called mfplat.

Can add #3400 to this list as well. Flops on wmv files, using the controversial script we don't talk about 'round these parts won't fix it either.

Humm, can an instance of VLC be opened within the game instance? I'm just spitballing here, as this is a massive issue that prevents me from playing one of my all time favorite games on Steam, Catherine.
It was said in this thread that Proton VLC can run the videos, so could that be done in any capacity?
EDIT: Just tried it out, and Catherine's videos are also playable in VLC without any problem.

Those games don’t use libVLC.

I see. This is all a bit over my head, I wish I could contribute with a little bit more weight to the discussion.

also affects trails in the sky (251150)

As a workaround that might be "Legally Possible" to ship; would it be possible to get game developers to agree to steam providing AV1 transcoded versions of their videos and for Proton to ship with a DLL compatibility that auto-plays substituted AV1 videos rather than the game's included content?

As a workaround that might be "Legally Possible" to ship; would it be possible to get game developers to agree to steam providing AV1 transcoded versions of their videos and for Proton to ship with a DLL compatibility that auto-plays substituted AV1 videos rather than the game's included content?

It is easier said than done. Many game developers don't know what Linux is, and don't care either. Actually when Google announced Stadia (which is an optimized Debian Linux distro) gaming companies hired other people to port their games to Stadia, and many games are delayed because of that.

So just to be clear this is much more of a legal issue than a technical issue right? I could invest in checking how WINE works but if it's a legal matter there's not much point in it.

It's just that fixing this issue would perhaps be great for Valve since a lot of Windows games would now work, SteamOS would be a proper alternative OS and the Steam Machine could perhaps be revived or at least be a safe guard against Microsoft. Linux "consoles" would be nice and AMD now has proper drivers and all. Of course it would be very nice for Linux gamers too. Until a lot more Windows compatibility happens Linux gaming will be seen as the niche market.

@unit73e It's a technical issue. In almost every Wine release Zebediah Figura has pushed commits for dshow/quartz/wmp/wmv, stuff needed for video playback of games using video files. We're just waiting for Wine devs to figure it out, which I'm sure isn't easy.

@z0z0z thanks for the info. In that case I'll start checking the source code history as well. Nice to know they're working on it. Perhaps we will have this feature sooner than expected.

How about we (meaning Valve) just license the missing frameworks and codecs old & new from Microsoft? I'd have no problem paying for a "Proton Premium DLC". Yes, Microsoft could refuse or charge exorbitant amounts, but they seem more reasonable lately, and it would look bad for them.

(Maybe some of that could be even be useful on Windows to increase compatibility of older games with Windows 10.)

How about we (meaning Valve) just _license_ the missing frameworks and codecs old & new from Microsoft? I'd have no problem paying for a "Proton Premium DLC".

Valve offers a free solution for Linux users, and you want them to charge Linux users money just to give it to Microsoft?!!!

Wine developers will figure it out as they did with everything else.

How about we (meaning Valve) just _license_ the missing frameworks and codecs old & new from Microsoft? I'd have no problem paying for a "Proton Premium DLC". Yes, Microsoft could refuse or charge exorbitant amounts, but they seem more reasonable lately, and it would look bad for them.

(Maybe some of that could be even be useful on Windows to increase compatibility of older games with Windows 10.)

I agree.
Is a more practical solution for this specific problem... A lot of games can be whitelisted with this.

Respectfully, we understand the problem and have plans to fix it. It's a hard problem. We're working on it. Please be patient.

We're working on it. Please be patient.

Understood. I didn't mean to sound impatient, just suggest that a) sometimes one can throw money at a problem; and b) I don't expect to get everything for free. (... and back to lurking it is.)

Understood. I didn't mean to sound impatient, just suggest that a) sometimes one _can_ throw money at a problem; and b) I don't expect to get everything for free. (... and back to lurking it is.)

If you are willing to pay money at a problem, start donating money for WINE, and CodeWeavers developers that works everyday to provide a better product for you, and everyone using Linux.

This problem, steam CEG and Easy AntiCheat are the three worst obstacles for to release PROTON as a real fully functional thing...

This actually is a very good and practical approach. It can be justified
financially.

On Tue, 21 Jan 2020, 01:30 CSahajdacny, notifications@github.com wrote:

How about we (meaning Valve) just license the missing frameworks and
codecs old & new from Microsoft? I'd have no problem paying for a "Proton
Premium DLC". Yes, Microsoft could refuse or charge exorbitant amounts, but
they seem more reasonable lately, and it would look bad for them.

(Maybe some of that could be even be useful on Windows to increase
compatibility of older games with Windows 10.)

I agree.
Is a more practical solution for this specific problem... A lot of games
can be whitelisted with this.


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=AK3OXTUNYROV2R7WZXFKLQDQ6XNSTA5CNFSM4FVJPG5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJNLPAI#issuecomment-576370561,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AK3OXTRPHBJM2CUQV7BU47DQ6XNSTANCNFSM4FVJPG5A
.

I'm going to leave here the WINE mirror repository: https://github.com/wine-mirror/wine
I only picked the GitHub mirror because it's easier to explore if you don't want to clone it.
Version 5.0 is going to be released soon. Check the WMV implementation.

Note
If I had any saying in Valve road map I would not agree with paying Microsoft. It's a terrible plan in the long run given Microsoft history and WINE does not seem to be that far from having something working. Nevertheless I understand @fallenguru point of view since it's a big issue but ultimately that's up to Valve to decide. The plan is to bet on WINE, so just like @aeikum suggested, be patient. We're lucky enough that Valve is investing in this at all. In the past it was just a bunch of guys trying to get this working. Those guys get a lot of credit but having the largest digital store backing it up helps a lot as well. I don't think anyone was expecting this to go as smooth, out of nowhere. I think we should all just drop this conversation because the developers must be eager to have this working as well. Just my two cents.

Sadly, it's a little more involved than dropping off a briefcase of money in Redmond and getting back a CD labeled "flawless wmv and wma decoders, and support in Wine on Linux for media foundation, dshow, mci, and xaudio2".

flawless wmv and wma decoders

But ffmpeg exists. Is using gstreamer instead of ffmpeg (libavcodec) really something holding this back?

Version 5.0 is going to be released soon. Check the WMV implementation.

FWIW, I'm running 5.0~rc6 and as far as Windows media frameworks go, it hasn't made a difference.

Sadly, it's a little more involved than dropping off a briefcase of money in Redmond [...]

Just to be clear: I meant just meant licensing the various DLLs and such that are already floating around, installable (or not, in the case of 64-bit WMP) via winetricks and other scripts, that go a long way towards alleviating the problem, but can't be integrated into and distributed with Proton, or even linked here.

We really need this sorted, boys!
Thanks for what you've done, keep up the great work!

@fallenguru signed, thank you! :)

@fallenguru https://www.fsf.org/windows/upcycle-windows-7

That'll never happen. Maybe FSF should stick to giving their rubber stamp to 802.11n adapters

Someone recently at work told me about his mantra. No harm asking.

Guess the same applies here.

On Mon, 3 Feb 2020, 21:22 ryester27, notifications@github.com wrote:

@fallenguru https://github.com/fallenguru
https://www.fsf.org/windows/upcycle-windows-7

That'll never happen. Maybe FSF should stick to giving their rubber stamp
to 802.11n adapters


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=AK3OXTTAIE3QQZMSV4UVBK3RBALAHA5CNFSM4FVJPG5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKT2AFA#issuecomment-581410836,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AK3OXTSRGH65HU3M3WGQT7DRBALAHANCNFSM4FVJPG5A
.

Workaround enabling the wmp9 verb in winetricks for 64-bit prefixes, tested with Proton 5.0-1.

... now with working link. Sorry.

cant we do mods to play those videos without using windows platform foundation?
(this is not an solution for valve, but may solve in the mean time for end users)

Would "NASCAR Heat 4" be affected by this issue?

Assetto Corsa Competizione have the same problem

Atelier Firis is using quartz and requires ASF support, the video files are using VC-1(WMV3) and WMA (Version 2) codecs.

Workaround enabling the wmp9 verb in winetricks for 64-bit prefixes, tested with Proton 5.0-1.

... now with working link. Sorry.

I used this to install wmp9 into my Proton Call of Juarez Gunslinger prefix and now the wmv cutscenes play perfectly!

this issue is still open, years later.

proton needs to come up with a method to implement this automatically per game
it already installs DirectX, VC++, .Net etc. we need Codec compatibilty reports and automation

winetricks/protontricks/mfinstallers whatever needs

this BLACK SCREEN issue needs more attention

this issue is still open, years later.

proton needs to come up with a method to implement this automatically per game
it already installs DirectX, VC++, .Net etc. we need Codec compatibilty reports and automation

winetricks/protontricks/mfinstallers whatever needs

this BLACK SCREEN issue needs more attention

Everyone knows what needs to be done, and there's some liability concerns over someone like Valve encouraging people to acquire a DLL that can only be legally obtained from a Windows installation.

Every minor Wine release is inching closer and closer to implementing what's needed. If you want it done faster, either volunteer or donate

this issue is still open, years later.

proton needs to come up with a method to implement this automatically per game
it already installs DirectX, VC++, .Net etc. we need Codec compatibilty reports and automation

winetricks/protontricks/mfinstallers whatever needs

this BLACK SCREEN issue needs more attention

Proton has only been a thing since August of 2018, so it's hardly "years later". And as others have said, they're working on it. If you're a lawyer or programmer and would like to donate your time to fix the issue or sort out any legal problems, by all means go ahead.

Until then, though, you'll just have to wait until these problems are worked out.

this issue dates back to wine 2.0, its been fixed and regressed. i dont need a history lesson thanks.

WindowsVideoMedia error 0x80004001 while reading E:/steam/steamapps/common/Death and Taxes Demo/Death and Taxes_Data/StreamingAssets/MenuIntro.mp4

Context: MFCreateSourceReaderFromMediaSource
Error details: <Empty>
Track types:


(Filename: C:\buildslave\unity\build\Modules/Video/Public/Media/WindowsMedia/WindowsVideoMedia.cpp Line: 3112)

this .mp4 is h264, so its not "wmv" only.

this issue dates back to wine 2.0, its been fixed and regressed. i dont need a history lesson thanks.

It's very much possible that a regression did happen at some point while "true" Media Foundation support was being worked on. If you have a specific example, then report it. Until the contributors finish their work, you will have to deal with workarounds breaking, no videos, or not being able to load the game at all.

I've gotten TrailMakers (#3409) and ThroneBreaker (#1966) working on my local mfplat branch as of 4da3d13

Tested with openh264dec h264 decoder.

@Guy1524 Tested your wine branch with Thronebreaker - the intro video works, both with openh264 and ffmpeg (gst-libav). Great!
However, after the intro (either ended or skipped), the game seems stuck at black screen.

@gasinvein That shouldn't be happening, on my end I am able to proceed just fine. Could you send me a log with WINEDEBUG=+mfplat,+timestamp?

@Guy1524 Sure, thronebreaker_wine_mfplat.log. Testing with GStreamer 1.16.2 and wine built with mingw enabled, if that matters.

Thanks, it looks like they're trying to play a .m4v video, which I haven't hooked up yet. I'm in the middle of cleaning up the code and preparing it for upstream, but when I'm in a more stable state I'll update the git repo with that. Alternatively, you can add it yourself and update your prefix w/ wineboot -u. Just add m4v entries here

@Guy1524 Works fine now. Awesome, thanks.

Great work @Guy1524!
Any chance for mp4?

@mozo78 It already does play mp4. Videos in Thronebreaker are mixed mp4/m4v for some reason.

Ah, thank you. I'll try Late Shift and will report you back :) I didn't managed to run this game properly. I installed mfplat and quartz. On the first run everything is looking good except there is no sound when a video is playing. On the second run - black screen and there are no more videos and this is a problem as the whole game is made up of different videos. Now I'll try with the Guy1524! implementation.

Unforunately it doesn't work - black screen:
Late_Shift_wine_mfplat.log
If install mfplat, the game now shows the first splash screen and again there's a black screen after it.

@mozo78 Not sure but it looks like you're missing some gstreamer codecs:

5646.899:0070:err:gstreamer:unknown_type Could not find a filter for caps: "video/quicktime, variant=(string)iso"
5646.899:0009:err:gstreamer:gstdecoder_init_gst Failed to play stream.
5646.899:0071:err:gstreamer:watch_bus decodebin0: Your GStreamer installation is missing a plug-in.
5646.899:0071:err:gstreamer:watch_bus gstdecodebin2.c(4678): gst_decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: Quicktime (video/quicktime, variant=(string)iso)

Can you post output with GST_DEBUG=4 env var?

I have Gstreamer installed, it's some Wine problem :)
Here's the log:
Late_Shift_wine_gstreamer.log

@mozo78 Do you have gst-plugins-good installed? You need 32-bit one, if the game is 32-bit.

I have installed x64. Now I install x86 but this doesn't help. The game is x64 though :)

Let us not forget to commend work when it is being done. Slowly getting there people:

[...]
Nikolay Sivov (49):
      mf: Implement GetFullTopology().
      mf: Add a helper to check for session shutdown state.
      mf: Fix GetClock() for shutdown state.
      include: Add IMFFinalizableMediaSink definition.
      mfplat: Use underlying work queue calls more to get rid of duplicated traces.
      rtworkq: Change RtwqPutWorkItem() trace format for consistency.
      mf: Handle shutdown state in GetFullTopology().
      mf: Correctly respond to start attempt from closed state.
      mf: Implement transition to closed state together with sink finalization.
      mf: Match session state names with events.
      mfplat: Implement MFTEnumEx().
      mfplat: Add some MFT-related attributes GUIDs.
      mfplat: Set activation object attributes for enumeration results.
      mfplat: Default to synchronous model for locally registered MFTs.
      mfplat: Implement transform activation object.
      mf: Implement MFGetSupportedMimeTypes()/MFGetSupportedSchemes().
      mf/tests: Fix a test failure on older versions.
      include: Fix VMR9AlphaBitmap definition.
      include: Add some types used for MF pipeline objects.
      mfplat: Remove extra critical section used in sample implementation.
      mfplat: Remove extra critical section from presentation descriptor.
      mfplat: Remove extra critical section from stream descriptor.
      include: Add some MFT flags types.
      include: Update MF resolver flags.
      mf: Partially implement sample copier transform.
      mfplat: Add MFGetPlaneSize().
      mfplat: Implement CopyToBuffer().
      mf: Implement IsMediaTypeSupported() for simple type handler.
      mfplat: Implement IsMediaTypeSupported() for stream descriptor.
      mf: Implement MFGetTopoNodeCurrentType().
      mf: Shutdown samplegrabber event queue on sink shutdown.
      mf: Block samplegrabber stream event calls after stream is removed.
      mf: Improve ShutdownObject() behavior for sample grabber activation object.
      mf: Set shutdown state flag for presentation clock.
      mf: Notify just added sinks with current clock state.
      mf: Do not touch clock state when setting rate.
      mf/tests: Remove tests causing occasional crashes on Windows.
      mfplat: Add MFGetStrideForBitmapInfoHeader().
      mf/tests: Use wide string literals.
      mfplat: Add a stub for 2D system memory buffer object.
      dwrite: Simplify LB22 rule according to Unicode 13.0 algorithm.
      mf: Use single list for topology nodes in current presentation.
      mf/tests: Add a test for default node attributes.
      mf: Handle basic case of sample request/response.
      mf: Send MFT_MESSAGE_NOTIFY_BEGIN_STREAMING message after setting current topology.
      mf: Pass start and flush messages to transform nodes.
      mf: Keep transform node input/output streams map.
      mf: Add support for requesting sample from transform nodes.
      mf: Implement sample delivering to transform nodes.
[...]

@mozo78 You don't need my branch for that game, it uses quartz

I just wanted to try :) Installing quartz helps a little only for the first launch and then again black screen :(

@DistantThunder Does these changes have something to to do with @Guy1524's work?

They don't, however the media session work will be very important in getting UE4 games functional.

As of 422f190, RE2 (Issue #2266 ) now works, provided you have the libav plugins installed, and apply this patch for a bug I found in asfdemux.

I was just checking on #327 (Orbduction in game video playback) and it looks like __wine__ 5.4 has commits that fix this issue; however as far as I can tell with about 5-10 min of looking, Steam's Proton is still only building against 5.0 (or at least a version which is still only stubs), not 5.4.

Since this might actually fix an issue affecting multiple games, could the Steam Beta users (which I'm still signed up for) please get the option of testing a release with wine 5.4 (even if it is in "Development")? It'd be nice during these days we're stuck at home.

Checking a little deeper, I missed some updates that sound like bug / performance fixes after the last commit that made it into wine 5.4:

https://source.winehq.org/git/wine.git/search/346cf20ba4909ba7a465f2048cae810df8e6eab0?s=Nikolay+Sivov;st=author

(The last one included was: mf: Implement sample delivering to transform nodes.)

Adding some of the extra commits up through at least "comctl32/tests: Remove excessive error handling logic." It removes (some) gotos and does targeted local cleanups (rather than a full goto cleanup). The next commit after it, at a glance, looks like expanding a codec ID matrix.

A couple other authors / prefix tags that might be considered...

https://source.winehq.org/git/wine.git/search?s=Derek+Lesho;st=author
https://source.winehq.org/git/wine.git/search?s=Vijay+Kiran+Kamuju;st=author

@mjevans vanilla wine 5.4 does not support this functionality either. Changes you see in commit logs are necessary but not sufficient, and work is ongoing. Regarding Proton versions, they indicate wine version it's based on, while still receiving targeted updates from newer wine releases.

@mjevans

... the option of testing a release with wine 5.4 ...

https://github.com/GloriousEggroll/proton-ge-custom/releases

Thank you for your work @nsivov and also @axredneck for the link to the release (directions on the main page).

Wine 5.4 did actually fix some of the playability issues in Obduction (the lantern in the initial cave is no longer glitchy, at least the handle being in the correct spot), but the videos still don't work.

In case it helps, these are the seemingly notable events when trying to play

Obduction with Proton-5.4-GE-3 + Set Launch Options:
WINEDEBUG="+timestamp,+pid,+tid,+seh,+debugstr,+module" %command%

714682.336:000a:000b:fixme:winediag:__wine_start_process Wine Staging 5.4 is a testing version containing experimental patches.
714686.078:002b:002c:fixme:win:DisableProcessWindowsGhosting : stub
714686.404:002b:002c:warn:module:alloc_module disabling no-exec because of L"dxvk_config.dll"
714687.663:002b:002c:fixme:win:RegisterTouchWindow (0x20090 00000000): stub
714688.110:002b:002c:warn:module:load_dll Failed to load module L"mfplay.dll"; status=c0000135
714688.110:002b:002c:warn:module:load_dll Failed to load module L"mfplay.dll"; status=c0000135
714691.561:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724a930, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f87e0, modes (nil) partial stub!
714691.561:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724a930, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f87e0, modes 0x1ad45b00 partial stub!
714691.574:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724a4d0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f87c0, modes (nil) partial stub!
714691.574:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724a4d0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f87c0, modes 0xd7d2900 partial stub!
714691.694:002b:002c:warn:seh:OutputDebugStringA "Checking Pak Config"
714760.647:002b:002c:warn:seh:OutputDebugStringA "Resizing viewport due to setres change, 1280 x 800"

I started trying to play the game after changing settings.

714770.131:002b:002c:fixme:msctf:TextStoreACPSink_OnLayoutChange STUB:(0000000017246AE0)
714770.134:002b:002c:fixme:msctf:TextStoreACPSink_OnLayoutChange STUB:(0000000017246AE0)

Each of these are probably an attempt at playing a video.
714857.530:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724e3f0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a60, modes (nil) partial stub!
714857.530:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1724e3f0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a60, modes 0x1ad4b280 partial stub!
714857.551:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x172454c0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a40, modes (nil) partial stub!
714857.551:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x172454c0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a40, modes 0xd7d2b80 partial stub!
715166.802:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1725e260, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a60, modes (nil) partial stub!
715166.802:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1725e260, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a60, modes 0x1ad45380 partial stub!
715166.827:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1722b770, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a40, modes (nil) partial stub!
715166.827:002b:002c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x1722b770, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x5f8a40, modes 0xd7d2e00 partial stub!
715174.821:002b:002c:fixme:msctf:ThreadMgr_Destructor Left Over ITfDocumentMgr. Should we do something with it?
715174.821:002b:002c:fixme:msctf:ThreadMgr_Destructor Left Over ITfDocumentMgr. Should we do something with it?
715176.746:002b:002c:fixme:ntdll:EtwEventUnregister (deadbeef) stub.
715176.746:002b:002c:fixme:ntdll:EtwEventUnregister (0) stub.
715176.815:0029:002a:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFFFFFFFFFA, 00000000005FFA80

@mjevans this Proton-GE is unofficial fork

I realize that, but it's the closest I have to being able to see if the bleeding edge works and if it doesn't, provide useful feedback to those who are actually familiar with the project in ways that allow them to be productive.

I realize that, but it's the closest I have to being able to see if the bleeding edge works and if it doesn't, provide useful feedback to those who are actually familiar with the project in ways that allow them to be productive.

I don't think Proton-GE is pulling from @Guy1524's repo yet, therefore you won't be seeing any of his changes yet

Does anyone knowledgeable here can contribute to the question on Ask Patents about whether wmv1/wmv7 patents have expired?

https://patents.stackexchange.com/questions/22253/have-windows-media-video-7-wmv1-patents-expired

From what I understand, here we have a number of games that use this old video coding format.

Is it correct that if it's clear that the patents expired, then Proton could start shipping the decoder?

About WMV3 (Windows Media Video 9) and VC-1

VC-1 is a superset.
https://en.wikipedia.org/wiki/VC-1#WMV3

WMV3 bitstreams fully VC-1 compliant

VC-1 patents are well documented. In the Wikipedia article, the patent section is sourced by an MPEG-LA document that is even updated regularly with expired patents. That's very convenient. (and surprising ^^) So when MPEG-LA will list all of them expired for VC-1, then WMV3(WMV 9) will also become "clean".

So the document can be monitored to know if VC-1 & WMV3 are clean for inclusion in Proton.

Going further

WMV3 is a subset of VC-1 (Simple and Main Profiles) so it should be clean sooner (maybe even today). The thing is someone must find the list of related patents. Any clues about how to reliably find them?

Will it be a safe assumption (enough for Valve) that when WMV3 will be patent free, WMV2 (WMV 8) and WMV1(WMV 7) will also be patent free?

Thanks to the amazing work of Nikolay and Sergio, as well as some low hanging fruit I picked, Remnant, a UE4 game, correctly plays intro video files as of 31a23c8.

Thanks to the amazing work of Nikolay and Sergio, as well as some low hanging fruit I picked, Remnant, a UE4 game, correctly plays intro video files as of 31a23c8.

Looking forward to test when your repo makes its way to Proton-GE

@ryester27 Looks like some fixes are now in Proton-GE
https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/5.5-GE-1

I tested a few games with this, Infliction and Trailmakers worked out of the ones I tried so far. (Infliction was a surprise, as videos on that game have not worked even with the non-legit mf workarounds)

@Guy1524 will you be active on the Proton-GE issue tracker for bug reports?

I tried Strike Vector EX and Raiden V Director's Cut. Strike Vector EX seems to work fine now, but Raiden V freezes on the now loading screen.

Edit: Scratch that about Strike Vector EX. The intro movie plays fine, but the Press Start screen is frozen on the first frame

I re-tested Obduction _very_ briefly, _at least one in-game video works_ (I'll likely try playing more later this week).
With (yes I know it's not an official release ) Proton-5.5-GE-1 https://github.com/GloriousEggroll/proton-ge-custom/releases

Reminds me, I'm also removing the launch options for that longer test... even just loading in to click one button / play the one video was 6.5MB of logs.
WINEDEBUG="+timestamp,+pid,+tid,+seh,+debugstr,+module" %command%

https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/5.5-GE-1

What this does is allows mp4 playback in MANY titles, including UE4 -and- Unity engine games. This fixes a lot (not all, but a lot) of issues surrounding media foundation/mfplat without the need for the 'mf-install' workaround that has legal issues and limitations, and is much safer for us to ship.

Can someone explain the legal difference of the upcoming media foundation changes?

https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/5.5-GE-1

What this does is allows mp4 playback in MANY titles, including UE4 -and- Unity engine games. This fixes a lot (not all, but a lot) of issues surrounding media foundation/mfplat without the need for the 'mf-install' workaround that has legal issues and limitations, and is much safer for us to ship.

Can someone explain the legal difference of the upcoming media foundation changes?

It's all reverse engineered, which is legal if they're not using any of Microsoft's code to achieve the feat

they're not using any of Microsoft's code to achieve the feat

That huge! :D
This take care about the copyright side of things.

But that doesn't work about the patent part right?

Still a much much better situation though. But that still won't mean official inclusion into Proton right? (for the still patent encumbered formats)

or maybe we could use the Ubuntu strategy:
Having a checkbox in the installer about patent encumbered software like for MP3 support. Which I guess leaves the responsibility and legal research work to the users. Is that a correct interpretation?

they're not using any of Microsoft's code to achieve the feat

That huge! :D
This take care about the copyright side of things.

But that doesn't work about the patent part right?

Still a much much better situation though. But that still won't mean official inclusion into Proton right? (for the still patent encumbered formats)

or maybe we could use the Ubuntu strategy:
Having a checkbox in the installer about patent encumbered software like for MP3 support. Which I guess leaves the responsibility and legal research work to the users. Is that a correct interpretation?

I could be wrong, but with gstreamer I think the only plugins that are legally questionable to distribute are the ones that they put in their "ugly" plugin package. As of right now, it's only these:

a52dec — Decodes ATSC A/52 encoded audio streams
amrnb — Adaptive Multi-Rate Narrow-Band
amrwbdec — Adaptive Multi-Rate Wide-Band Decoder
asf — Demuxes and muxes audio and video in Microsofts ASF format
cdio — Read audio from audio CDs
dvdlpcmdec — Decode DVD LPCM frames into standard PCM
dvdread — Access a DVD with dvdread
dvdsub — DVD subtitle parser and decoder
mpeg2dec — LibMpeg2 decoder
realmedia — RealMedia support plugins
sid — Uses libsidplay to decode .sid files
x264 — libx264-based H264 plugins
xingmux — Add XING tags to mpeg audio files

If one of these plugins are needed, at the very worst Valve would just need to provide an option to download and install these plugins at the user's request (just like how Linux distros handle it), or provide a fallback option for Proton to use the gstreamer plugins already installed locally by the Linux distro. ASF and mpeg2 are the biggies on that list. x264 is handled in an open-source manner by the openh264 plugin, thanks to Cisco.

Oh, and the patent for MP3 expired in 2017

I could be wrong, but with gstreamer I think the only plugins that are legally questionable to distribute are the ones that they put in their "ugly" plugin package. As of right now, it's only these:

How did you got the list?

I can find a subset of it here:
https://github.com/GStreamer/gst-plugins-ugly/tree/master/ext

Maybe some patent expired since your list :D

I think the only plugins that are legally questionable to distribute are the ones that they put in their "ugly"

What if they also meet the "bad" criteria? (code quality):

https://github.com/GStreamer/gst-plugins-bad/tree/master/ext

x265
opus

We see that there is a mix of codec with and without patent issues.

Don't forget that there's also gst-ffmpeg for a number of codecs/colorspaces: list from cgit.
The formats supported using this plugin are highly dependent on how ffmpeg itself is built. If I remember correctly, some formats that can be enabled at ffmpeg configure-time are patent-encumbered too...

@tuxayo

How did you got the list?

I can find a subset of it here:
https://github.com/GStreamer/gst-plugins-ugly/tree/master/ext

Maybe some patent expired since your list :D

I got my list from here:
https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/

Look in the gst folder. You'll see the other ones ;)
https://github.com/GStreamer/gst-plugins-ugly/tree/master/gst

What if they also meet the "bad" criteria? (code quality):

https://github.com/GStreamer/gst-plugins-bad/tree/master/ext

x265
opus

We see that there is a mix of codec with and without patent issues.

Guess they just decided to prioritize categorization based on stability instead of legality (besides, you're probably going to be installing "bad" and "ugly" together anyways) For our purposes, we only care about codecs that game developers actually use. No one is using x265 because of the royalties. The patent problem will occur alot more with older games because of the lack of viable patent-free codecs back in those days.

Although I don't know why ASF/WMV is still used today. Maybe you don't need to pay separate royalties when developing with Media Foundation?

@414n

Don't forget that there's also gst-ffmpeg for a number of codecs/colorspaces: list from cgit.
The formats supported using this plugin are highly dependent on how ffmpeg itself is built. If I remember correctly, some formats that can be enabled at ffmpeg configure-time are patent-encumbered too...

Using FFmpeg doesn't magically absolve you from patent issues. They allow you to compile what formats you want so that it can be redistributed without any legal question. If you visit the FAQ of VLC, they tell you that it's the user's responsibility to pay for any royalties. As a developer of commercial products, Valve has alot less tolerance for legal risk, and just shoving the user's royalty responsibilities into a webpage that no one will read will probably not fly very well

@ryester27

Guess they just decided to prioritize categorization based on stability instead of legality (besides, you're probably going to be installing "bad" and "ugly" together anyways) For our purposes, we only care about codecs that game developers actually use. No one is using x265 because of the royalties. The patent problem will occur alot more with older games because of the lack of viable patent-free codecs back in those days.

To backtrack in the discussion, this means we can't anymore use the following info «but with gstreamer I think the only plugins that are legally questionable to distribute are the ones that they put in their "ugly" plugin package»

And earlier questions of mine was

But that still won't mean official inclusion into Proton right? (for the still patent encumbered formats)

If delegating the choice to the user (provide an option to download and install these plugins at the user's request) would be enough. Then it's not that useful to investigate each format to see which are patent-free now. I say "that useful" because before I though that valid patents were blocking any chance of official Proton inclusion.

Is that a correct conclusion?

Seeing as we're far down the meta rabbit hole already ... What's stopping Proton from falling back to utilising the user's system's decoding capabilities for things Valve doesn't dare ship? Surely dumping data on the system gstreamer/ffmpeg/whatever and hoping for the best can't be illegal anywhere?
Or even something like PROTON_USE_CUSTOM_FFMPEG="$SOMEPATH". Yes, yes, the goal is to have it work out of the box, but ...

I guess they need proper long-term solution for SteamOS anyway.

To backtrack in the discussion, this means we can't anymore use the following info «but with gstreamer I think the only plugins that are legally questionable to distribute are the ones that they put in their "ugly" plugin package»

That is correct. I striked out my claim from earlier

If delegating the choice to the user (provide an option to download and install these plugins at the user's request) would be enough. Then it's not that useful to investigate each format to see which are patent-free now. I say "that useful" because before I though that valid patents were blocking any chance of official Proton inclusion.

Is that a correct conclusion?

It would still be beneficial to find out which formats are patent-free because the gstreamer plugins being included in the Proton builds will still provide the easiest out-of-the-box experience for end users.

Seeing as we're far down the meta rabbit hole already ... What's stopping Proton from falling back to utilising the user's system's decoding capabilities for things Valve doesn't dare ship? Surely dumping data on the system gstreamer/ffmpeg/whatever and hoping for the best can't be illegal anywhere?
Or even something like PROTON_USE_CUSTOM_FFMPEG="$SOMEPATH". Yes, yes, the goal is to have it work out of the box, but ...

That would very much be possible, and I know of a few commercial products that require you to download something like ffmpeg separately, then specify where it's installed within the program settings. What I'm not sure about is if there are different amount of risks between the gstreamer plugin distribution options. I think the main thing is making sure that end users are the ones legally responsible to cough up the royalties (which they will never do, but still)

I finished playing Obduction but I was a bit tired from staying up way too late one night.

With the custom, not-official, compiled by a third party with lots of patches/etc, as mentioned above, bleeding edge Proton-5.5-GE-1...

The only issue I ran across that I don't attribute to the game generally was a black opening screen that didn't display. Pressing Esc (maybe any key) or clicking the mouse brought up the main menu. Everything in game worked as expected (there were some times videos weren't playing on things in the game, but I attribute that to working as intended for puzzles/situations, rather than being broken, as the one area I really thought was broken worked later after I progressed the game a bit).

Re: ryester27 quoting others...

Seeing as we're far down the meta rabbit hole already ... What's stopping Proton from falling back to utilising the user's system's decoding capabilities for things Valve doesn't dare ship? Surely dumping data on the system gstreamer/ffmpeg/whatever and hoping for the best can't be illegal anywhere?
Or even something like PROTON_USE_CUSTOM_FFMPEG="$SOMEPATH". Yes, yes, the goal is to have it work out of the box, but ...

That would very much be possible, and I know of a few commercial products that require you to download something like ffmpeg separately, then specify where it's installed within the program settings. What I'm not sure about is if there are different amount of risks between the gstreamer plugin distribution options. I think the main thing is making sure that end users are the ones legally responsible to cough up the royalties (which they will never do, but still)

I am not a laywer: My understanding is that it depends on if the company in question in any way appears to endorse or support infringing upon some perceived state granted monopoly. If it's just listing an external program or interface to utilize, and particularly if the official documentation either uses an external reference that is legally obtained (IE there's either no restrictions in a country, it's free, or it's already paid for) or an example placeholder (but leaves the user unsupported in finding a puzzle piece that fits that shape) then it probably isn't infringing. Of course in the latter case moderation staff would have to also be instructed to purge any 'inciting' documentation from forums/etc.

I was going to add something else, but refreshing my memory was a good call.
https://en.wikipedia.org/wiki/Advanced_Video_Coding#Licensing
It appears that h264 is/was only 'royalty free for free to end users internet video', and that those terms are updated in 5 year blocks of time (not perpetually).

Another question is if the games themselves are paying a royalty already, or if they were instead relying upon a royalty in the OS. In either of those cases Steam and Proton should be able to rely upon the game and/or OS (though in the latter case, clearly reporting what the problem is would be the issue).

Proton-5.6-GE-1 was just released, and looks like they added gst-plugins-ugly, along with partial wmv support, to the repo. Back with Proton-5.5-GE-1, they said in the release notes that reps from Valve specifically said that it was still OK to provide links to Proton-GE within their issue tracker.

If Proton-GE was given the same OK signal for Proton-5.6-GE-1, then that will probably tell us how Valve plans to handle distribution of these questionable plugins

Okay so those who know about it can have the cool patches. Those who don't will have to wait. I'm fine with that.

Who knew a glorious eggroll would be nice enough to share a better version.

I'd just like to throw out there that I am considered an end-user. I don't work for valve. I have no ties to them in anyway in any business means. The 'OK' I received was simply in terms of it not causing legal issues for valve, as all of the material is publicly available, as opposed to copying DLLs from windows and distributing them when they cannot be obtained by any freely available means - which could essentially be considered pirating. My Proton releases are no indication what so ever of what Valve is doing or plans to do with proton.

I'd just like to throw out there that I am considered an end-user. I don't work for valve. I have no ties to them in anyway in any business means. The 'OK' I received was simply in terms of it not causing legal issues for valve, as all of the material is publicly available, as opposed to copying DLLs from windows and distributing them when they cannot be obtained by any freely available means - which could essentially be considered pirating. My Proton releases are no indication what so ever of what Valve is doing or plans to do with proton.

Just speculation on my part. Valve seems to care about the legality of some workarounds being posted in their issue tracker. With openly allowing end users to link to your Proton-GE builds w/ gst-ugly packaged, it might give insight on how Valve plans to distribute the plugins needed for wmv support

Is there any additional information about media support of Proton-5.6-GE-2?
Like does it need additional dependencies installed like gstreamer-plugins-ugly?
Is there information what codecs exactly it handles?

Can we maybe help by sending in sample files?

@jug007 Proton-GE is packaged with the gstreamer dependencies.

looks like 314030 is not listed, but it dont play the videos...
(Guilty Gear X2 #Reload)

I have not tested the STARS office scene in RE3, so if someone could confirm that's working it'd be appreciated.

RE3 still crashes for me on the STARS office scene using the latest build, in case you are still looking for folks to help test this. Let me know if there are any logs or system specs that would be helpful here.

@Elmapul There's no issue yet for Guilty Gear X2 #Reload, if you open one and mention me with @HonkingGoose in the issue, I'll put it in the list for this issue.

@HonkingGoose

done, issues/3976

Thanks for making a report @Elmapul! I've updated this list with your report. 😄 ✨

There are several media/gstreamer-related changes in Proton 5.13, does anyone know which games it has fixed?

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.

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.

Answered my question. Tried Melty Blood last night, and was wondering why I got transferred back to 1990s over-the-air TV at 3AM

@aeikum Good to know, thanks.

@aeikum Is there any need for me to keep updating the list in the top post? Or are you using some other list yourselves nowadays to keep track of the changes?

@aeikum Is there any need for me to keep updating the list in the top post? Or are you using some other list yourselves nowadays to keep track of the changes?

Your list is still very useful, but I don't want to give you any obligations. I appreciate what you've done already.

Answered my question. Tried Melty Blood last night, and was wondering why I got transferred back to 1990s over-the-air TV at 3AM

Time-travelling our users back to the 90s is step one. Strap in for step two.

Your list is still very useful, but I don't want to give you any obligations. I appreciate what you've done already.

Thanks for the appreciation @aeikum! :smile:


Note to all: I'm moving to a "push" based model for this list, as this list is no longer small enough for me to manually check each issue for updates. If you want me to update an item on the list, ping me by mentioning my username and I'll update that item.

Your list is still very useful, but I don't want to give you any obligations. I appreciate what you've done already.

Thanks for the appreciation @aeikum! 😄

Note to all: I'm moving to a "push" based model for this list, as this list is no longer small enough for me to manually check each issue for updates. If you want me to update an item on the list, ping me by mentioning my username and I'll update that item.

Maybe a separate repo with only the issue tracker active would be better? I don't think github frowns upon doing that

I think I'm not understanding what you say @ryester27 :confused:

If I have a new repository where others can open issues, aren't we just duplicating the issues? Now we have a issue on Proton and on my repository? What benefit do you see here?

Do you maybe mean for me to open a new repository with a "master list" in a Markdown table, and then let others contribute to that list via opening pull requests? That would have the added benefit of the list being easily accessible for the Proton developers, as they can just pull the newest list from the repository.

If anybody else has a good idea on how to manage this, please let me know.

@HonkingGoose the second option sounds good

Hi @aeikum and @kisak-valve! :wave:

I was thinking of moving these huge tables to a separate repository where others can then contribute to the list by opening a pull request. I made a basic proof of concept: https://github.com/HonkingGoose/proton_codecs_media_support_tracker

Can you tell me if you like/hate this? If you want me to delete it, just say so, and it's gone. :+1:
Or I can transfer the repository to your organization so that you can manage it under your own umbrella.

Greetings,

HonkingGoose

Oh! This is really awesome! Thanks for linking it, @HonkingGoose

@HonkingGoose Whatever is easiest for you is fine with me.

Well, let's try out my idea. I've done some work on it, and I think I'm ready to accept pull requests.

I've migrated the tables to my repository, and updated the top post with directions.
I think at the very least, the tables are way easier to read and use, now they are split into separate files per framework.

If this thing doesn't work out, I will edit the top post, and put the tables back in the old place. :+1:

It would be rude to tease y'all, right?

Screenshot_2020-11-05_16-18-53

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AwesamLinux picture AwesamLinux  ·  3Comments

lumni1968 picture lumni1968  ·  3Comments

Dakunier picture Dakunier  ·  3Comments

lucifertdark picture lucifertdark  ·  3Comments

AwesamLinux picture AwesamLinux  ·  3Comments