ReactOS Media Player

The place to bring up any design issues, or post your own creations

Moderator: Moderator Team

What do you think?

Great! But could you change the looks?
10
21%
Great! Love it!
4
8%
Brilliant!
4
8%
OK
7
15%
not very good
23
48%
 
Total votes: 48

Nmn
Posts: 170
Joined: Wed Dec 07, 2005 10:20 pm
Location: In front of my pc maybe?

Post by Nmn »

*sigh*

Short: Licensing issues.
Alt: Real is a bad player to use in the first place. It mis-uses resources.
Alt 2: Real probably misses a few key features/supported-files that WMP has.

The main point - Reals source code isn't availible under GPL 2.
Nor Winamp's.
Nor Foobar's.
Nor basically any other player.
VLC and Mplayer may be possible, but it just so happens that neither support DirectShow codecs (Though Mplayer supports Video For Windows codecs, thats dirt old and just so its possible to play proprietary codecs.)

So, before you get flamed, people, stop bringing it up. All of the GPL projects that do what ROS needs are either poorly written, not in C, not in Win32 directly, Can't use DirectX, or when looks become important, Look ugly. So, if we're to grab and fork some other media player:
- Opensource
- DirectShow capable
- Good code
- C and Win32
- Expandable (Perhaps then it could be made to look less ugly some day. lol.)

I heard Media Player Classic. Perhaps. I don't know yet, the google link to the sf page is to another project now.

etko
Posts: 154
Joined: Thu May 26, 2005 3:43 am
Location: Slovakia
Contact:

Post by etko »

Hello ... people!

Solution is out there:
MPC is GPL, is DirectShow/ReactShow.
ffdshow is GPL, is DirectShow/ReactShow.
ReactShow is GPL, or better will be once.

There should be some sticky pasted on every forum discouraging this ReactEverithing attitude. What about research first. I really got p* off by this thread. This is my opinion:

So let's look. MPlayer is - linux thing. Yes there is port for windows, but well it's not native.
VLC is basically - same thing like MPlayer - the codecs are bundled in, even if they are provided by external dll. We could say those things are more or less hardcoded.

No good for ReactOS I believe because of several reasons.

Even when those things play video on windows, they do it, well let's name it this way: nonstandard way from the point of windows :).

Let's call it monolithic linux monster executable way. VLC it just one big monster same like MPlayer. Yes, MPlayer might be able load windows codecs but thats for it's own sake.

And VLC uses wxWindows implementation to provide it's native GUI. Do you know what wxWindows is? Yes that's that sluggish unusualy giant crossplatform layer which is slowing things down almost to a level of dotnet. Skinned interface might be more responsive than that, but as I hate skins, I have not tried it. I guess that developers don't want to have wxWindows runtimes included into the ReactOS.

Plus to justify this statement about the speed of wxW try to run Code::Blocks or DevCpp on 1GB RAM 1000 MHz system and you'll get instantly what I am talking about. It's not the lack of RAM what's causing the constant 4% processor usage and 32 MB working set when doing actually -> NOTHING.
Even easier way to test is to go and download using wxDownloader, what a cool program, doing almost nothing eating almost every resource. Cool.

So VLC? Rather not.

Besides everything said, these player are not windowsish, don't forget that! Its same like with all that NTFS drivers discussed here and there every time!


Now let's look on the windows multimedia/video model. To simplify things let us forget VFW. This is for those script kiddies here on forums.

There is that bloatware usually preinstalled on every windows called DirectX, based on COM technology, which is offspring of the former OLE technology. Even cooler heh? ReactOS will have it!

This big X is there because of marketing wizards at Microsoft. The idea is you can replace this X with some noun or abbreviation and you get all these magic yummy things like Direct3D (what might that be?), DirectSound (perfect now I understand), DirectPlay (huh whats that), DirectJoy :) and guess what? One of these Direct things is DirectShow.

As you might guessed this is our video player! You might use RadLight, WMP, Winamp or WhateverNative player, it always uses, in one way or another - usually broken way - DirectShow as it's video playing layer. Oh really? Yes.

Theoretically. It should be of no importance what player you choose to play your content you should always get what you need. This DirectShow thingy is composed of another tiny little thingies called Filters. Some of these Filters might be called Codecs (<- Oh I heard that somewhere). And these nice tiny little filters chain together to form a Graph, and this entity actually plays your video.

This is all nice. However there is problem with these filters. Seems like everyone is producing them (eg SomeCompanyManufacturingDVDBurningSoftware) with varying degree of success. Then there are these codec packs where even more filters are stuffed in, seemingly without any knowledge from codec pack author how this system works.

So if you ever had a chance to look at the amount and names of the codecs installed on your system I bet you were runing terrified in agony making circles around your room. 200 was the lowest count, if you were happy. And many times there are from 2 to 10 codecs trying to do same thing fighting using weapons like filter merit.

Yes this is wonderful world of Windows Video. Maybe a bit of mess like everything on Windows Platform, but this is the way of doing things right on Windows.

However there are some benefits - DirectShow allows correctly written software to use or play new videos in plug-in like manner. Just stuff in there new filter/codec and you are done. If filter supports encoding you'll get even ability to create video using that codec. Amazing not? There are other small benefits.

Sow how does it fits all into ReactOS? As said sometime ReactOS will have it's own DirectX implementation. I guess it's called ReactX right now. If you want to remain compatible there should be component implemented called ReactShow :). This will allow you to actually support video in Winamp installed in ReactOS.

ReactShow should emulate DirectShow as closely as possible. And trust me DirectShow is huuuge piece of code. Yes it's much bigger then any usual ReactOS forum user (like me) who is not dev, can ever imagine. Wiki says code in Platform SDK is half of MFC - OMG! Now that is cool.

And here we come to our player. On top of that - ReactShow - native ReactOS player should be implemented or some good on, GPLed, used. It would be utterly stupid to include almost complete DirectShow implementation without an actual player.
So question whether it should be able to change look is rather silly. But I guess we don't have a line of that code (ReactShow) written. Don't forget ReactShow is almost an player in itself. So adding something above it is not that stupid. So I am for player, but I am for true native ReactShow enabled player.

To make that goal more realistic let's start looking, we might actually use something on the net. Something what is GPLed, and as i mentioned on beginning there it is :

OMG there is FFDShow

That is an DirectShow Filter, actually it's a codec. Oh my - it uses libavcodec as decoding backend. It's library which decodes this many formats:

AVS, CSCD, Cinepak, CYUV, FSV, FFV1, H.261, H.263 H.264/MPEG-4 AVC, Huffyuv, id Software RoQ, Intel Indeo 2, Intel Indeo 3, LOCO, MJPEG, MPEG-1, MPEG-2, MPEG-4 Part 2, Apple Computer QuickDraw, Quicktime Graphics SMC, RealVideo RV10, RealVideo RV20, Snow, Sorenson SVQ1, Sorenson SVQ3, Theora
, Asus V1, Asus V2, Sierra VMD Video, VMware VMnc, On2 VP3, On2 VP5, On2 VP6
, Westwood Studios VQA, Microsoft WMV 7 and 8, Microsoft WMV 9, Wing Commander/Xan Video

That's plenty. It's GPLed - thus can be included into ReactOS at any time, even now. But I guess it' won't work. Because I guess there is no ReactShow. Some legal issues might pop up because of some codecs implemented in libavcodec. But this can be cured by using only open source codecs.

OMG then there is Media Player Classic

This is nice media player which sits on top of the DirectShow and even implements some internal video filters. This is the player which is able to use most of the well behaved codecs on the net. It is a good player, it doesn't look like feces, and usually does what it's designed for. It is GPL - wow it can be used.

So we have basic codecs and we have nice player what do we need, ReactShow. This is the way.

You might say what's the difference between:

1. MPlayer/VLC loading libavcodec to play video.

and

2. MPC using ReactShow to load FFDShow loading libavcodec to play video.

?

I believe, although 2. looks uglier, it is the right way of doing things. ReactOS is windows like operating system -> it should to the things windows way. If you want to use MPlayer you don't need windows/ReactOS at all. Same with VLC. And if user wants them that badly, those two can be downloaded.

Thus instead of including VLC/MPLayer there should be inclusion of core ReactShow libs, ffdshow filter with basic codecs, and Media Player Classic and perhaps someone could write nice CPL UI to make those filter pests behave (in case you install something flawed).

We have 2 great GPLed project at our disposal, MPC and FFDshow, and we need ReactX and ReactShow now - maybe even that exists in some form hidden within Wine.

So instead of creating yet another RosApp like RosPlayer - ReactX and ReactShow should be targets of our attention. Also anyone contributing to any GPLed DirecShow filter is right now contributing to ReactOS Multimedia layer, much more than anyone here, because those filters will be one day included naturally once ReactShow is complete. It would be silly to not use stuff already there.

Z98
Release Engineer
Posts: 3379
Joined: Tue May 02, 2006 8:16 pm
Contact:

Post by Z98 »

etko raises some valid points and I'd also like to remind people of something. The ReactOS devs are mostly working on this project at the system level. Their objective isn't to write applications, it's to create an operating system. A few things are thrown into the mix because people expect GUIs to work with in an OS, but full blown applications are another story entirely. Notepad was imported from WINE if I remember correctly and the Wordpad clone is there for newbies who want to learn more about win32 programming. So suggesting that these people "write" ROS versions of stuff isn't likely to get you anywhere.

Nmn
Posts: 170
Joined: Wed Dec 07, 2005 10:20 pm
Location: In front of my pc maybe?

Post by Nmn »

OK, Thats valid completely. I guess its ok to just to fork MPC, but I don't see why it would be so bad to have a cool looking media player eventually, considering a lot of people will rate the OS by its graphics (If people went by quality or potential, then OpenGL would be a lot further already, Linux would be more popular, etc etc, but obviously OpenGL is still with its design flaws and Linux only has 10% of the desktop market)

I figured that making a cool media player alongside ReactOS would be a cool thing to do, because in reality a lot of people who would like to contribute to React OS are like me and just plain can't absorb all of the info fast enough (For example, I would be working on the graphics drivers part of ReactOS right now if only I was able to figure out how it all worked. NDISwrapper's code was a great start but learning the rest of the driver APIs and how they work isn't going to be easy.) and having a nice set of media applications would be pretty sweet.

Well, in any case, i totally agree about holding back on these big projects. I can't wait to see MPC work in React OS, so I'm going to try to shorten the wait somehow ;) Hopefully I'll begin to understand all of the stuff in the big mess of software Microsoft layered onto DirectX.

BTW etko - AFAIK DevCpp uses a crappy borland GUI system and Pascal(which isn't so great) and not crappy WxWindows. lol. I do kinda wish these IDEs, being some of the best IDEs Open Source has to offer these days, used something unsucky.

etko
Posts: 154
Joined: Thu May 26, 2005 3:43 am
Location: Slovakia
Contact:

Post by etko »

Nmn I just thrown in my 2 cents.

OpenGL right now seems to be worse then Direct3D at least until OGL3 becomes standard to compete with DX10. And that is far away. Anyway regarding that 3D API I believe it's perfectly possible to write OpenGL renderer for DirectShow.

Even right now there are 4 of them on every Windows - 1 classic GDI video rederer, 2 overlay renderer, 3 VMR7 - DX7 based render to texture renderer and finally 4 VMR9 - DX9 based render to texture renderer. There seems to be nothing in DirectShow what is able to prevent you from writing OpenGL DirectShow renderer. Remember from DShow view is propably just another enpoint of the rendering graph. Like there is WaveOut or DirectSound enpoint for sound output.

This actually might be some interesting experiment for some DShow coding wizard - to implement such a thing. Only as proof of concept. If OpenGL and ReactShow somehow magically gets implemented sooner then this might enable HW accelerated(? - whatever that means) video output in ReactOS even when Direct3D won't be finished.
Posibilities are endless.

However this requires someone who is truly at home in DirectShow I guess. Anyway I guess MPC is actually only player which gives you an choice to select renderer which you want to use. Show me another GPL player capable of that. And I mean DirectShow based - I know VLC has OpenGL backend.

Nmn
Posts: 170
Joined: Wed Dec 07, 2005 10:20 pm
Location: In front of my pc maybe?

Post by Nmn »

I used to write DirectX wrappers. Unfortanatally, I ignored most of DirectX other than Direct3D... Plus, my wrappers are out of date.

OpenGL? Yeah, it is just a tad... messed up. I do understand that version 3 is gonna clear a lot of it up and I'm sure it won't take NVidia long to come out with drivers (And they'll dual release Linux drivers for it if they know whats good for 'em XD)

As for using OpenGL with DirectShow... Wow. I would have to tip my hat to someone who implements that himself. HOWEVER: I thought in the end, legal or not, ReactOS should be able to run DirectX? And all of that would be entirely possible as long as we have the Windows 2000 WDDM interfaces implemented? I'm sorry, maybe I'm just losing it... I kinda started a project to implement WDDM Drivers over the Linux kernel via loading the binaries and linking it to functions that are actually in the driver, but trying to grasp it all quickly is hard. If that project gains momentum from outside help or i ever figure it all out, I'll make sure React OS gets a benefit from it. If anyone wants to join, you can PM me, and i'll send you a link to the homepage, but no need to put a bunch of ads up.

Speaking of using the actual DirectX, Can we use DirectShow if we use the hardware level key in the registry when its down to the "No Acceleration" option since it uses GDI at that point? I always thought it was a good theory, but i figured since someone confirmed for me that it used GDI with acceleration off that i'd have to ask. I guess I myself can't see why not, considering the wide range of applications i got to run on React OS lately.

dreams
Posts: 207
Joined: Tue Sep 26, 2006 10:23 am
Location: Holland
Contact:

Post by dreams »

Nmn wrote:OK, Thats valid completely. I guess its ok to just to fork MPC, but I don't see why it would be so bad to have a cool looking media player eventually, considering a lot of people will rate the OS by its graphics
Don't worry, when ReactOS gets usefull for everyday work, i'm sure there will be someone who makes a ReactOS distribution with all kinds of usefull applications in it.

andrewweb
Posts: 263
Joined: Fri Jun 01, 2007 3:59 pm
Location: United Kingdom
Contact:

Post by andrewweb »

Haos wrote:Guess what... there wont be anything like WMP in ReactOS, because no one wants it, apart from you.
Yeh, but that's not the point. New users (from windows) will be used to wmp or something like it, and they will expect windows media player or similar. :D

andrewweb
Posts: 263
Joined: Fri Jun 01, 2007 3:59 pm
Location: United Kingdom
Contact:

Post by andrewweb »

dreams wrote:
Nmn wrote:OK, Thats valid completely. I guess its ok to just to fork MPC, but I don't see why it would be so bad to have a cool looking media player eventually, considering a lot of people will rate the OS by its graphics
Don't worry, when ReactOS gets usefull for everyday work, i'm sure there will be someone who makes a ReactOS distribution with all kinds of usefull applications in it.
Look up at the top, i'm gonna make this useful!

andrewweb
Posts: 263
Joined: Fri Jun 01, 2007 3:59 pm
Location: United Kingdom
Contact:

Post by andrewweb »

Nmn wrote:OK, Thats valid completely. I guess its ok to just to fork MPC, but I don't see why it would be so bad to have a cool looking media player eventually, considering a lot of people will rate the OS by its graphics (If people went by quality or potential, then OpenGL would be a lot further already, Linux would be more popular, etc etc, but obviously OpenGL is still with its design flaws and Linux only has 10% of the desktop market)

I figured that making a cool media player alongside ReactOS would be a cool thing to do, because in reality a lot of people who would like to contribute to React OS are like me and just plain can't absorb all of the info fast enough (For example, I would be working on the graphics drivers part of ReactOS right now if only I was able to figure out how it all worked. NDISwrapper's code was a great start but learning the rest of the driver APIs and how they work isn't going to be easy.) and having a nice set of media applications would be pretty sweet.

Well, in any case, i totally agree about holding back on these big projects. I can't wait to see MPC work in React OS, so I'm going to try to shorten the wait somehow ;) Hopefully I'll begin to understand all of the stuff in the big mess of software Microsoft layered onto DirectX.

BTW etko - AFAIK DevCpp uses a crappy borland GUI system and Pascal(which isn't so great) and not crappy WxWindows. lol. I do kinda wish these IDEs, being some of the best IDEs Open Source has to offer these days, used something unsucky.
I agree. Now i've decide my prog was rubbish, and are letting people design a skin for it(look at the top!)

andrewweb
Posts: 263
Joined: Fri Jun 01, 2007 3:59 pm
Location: United Kingdom
Contact:

Post by andrewweb »

MadWolf wrote:hi

i Downloaded your media player put politely the interface is ugly
Yeh I know
please design a skin for the new version!!

kokodin
Posts: 175
Joined: Tue Nov 29, 2005 7:19 pm

Post by kokodin »

hi i download your "new" player and i must say
yes it is very ugly
one sugestion
make it with standard buttons first then start thinking about skining engine ordinary system windows colour could be better looking that actual blue
if you realy want to make skin on your product make it in external bmb files with some ini with function (background, playbutton , or something like that) directions x nag y size and file path
(
[mainwindow] width:300 height:270 resizable:no ;
...
[platbutton] x:20 y:200 size:auto path:play.bmp ;
...
)
this is only my idea but if you make something like that i think that i could make some skins

artguy10
Posts: 240
Joined: Wed Aug 01, 2007 12:20 am

Post by artguy10 »

Here's my first draft.

[ external image ]

If anyone likes it or has feedback, let me know. I personally think that progressive mock-ups with feedback produce better results than a contest (though sure other designs should be posted). (For example, the winner of the ReactX logo might be the best one, but I would have suggestions to make it better.) Once people like it, and specific directions are given for exactly what bmp files are needed (such as mouse-over buttons, window size, player with or without movie box), I will provide bmp files for the buttons and mock-up. (This window design is taken from a desktop mock-up I was working on.)

By the way, in your new version, please provide support for more video/audio types; it let me select a .mov file but it didn't play. And make sure the video area doesn't appear when just listening to audio.

EDIT: Looks like my design doesn't have much competition. Once you post the specific requirements of the image files for me to post, I can upload them.

artguy10
Posts: 240
Joined: Wed Aug 01, 2007 12:20 am

Post by artguy10 »

:idea: I'm double posting because there was no response.

andrewweb: Please give specifics if you want to use my design. What components, what formats, what sizes, etc? And the buttons, can they be png to support transparency, or if bmp, what background color?

eXile
Posts: 59
Joined: Sun Jul 09, 2006 6:39 pm

Post by eXile »

Hi,

I'm still not sure why VLC is rejected here. In the following version, VLC uses a QT4 instead of a wxWidgets Interface. And im pretty sure that one day QT4 will be (fully) supported in ReactOS. I think the skype software uses a QT4 interface, too, so there will be at one time the need to get QT running. Heck, this is the design forum, so simply put a new Interface on top of VLC.

Cheers,
eXile.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest