View Full Version : It's time to write yet another HTPC frontend
dimzon
6th February 2008, 18:05
Hi!
Unfortunally I can't find good HTPC frontend wich provide requed functionality ;(
I decide to write my own HTPC frontend.
I want to use MPC as videoplayer engine (fine subtitles and Pan&Scan support, great stability and compatibility, awesome player)
I want to use ffdshow as primary decoder and image processor (upscaling,postprocessing etc)
I want to use foobar2000 as audioplayer engine ( i really like it )
I doesn't plan to support DVB/TV right now (since I doen't have HW and I don't need it atm)
Main goal is provide complete control over most features via 5-8 remote buttons only (via sexy OSD menu)
I decide to use C# as development language. Now I'm at the first stage (planning) and I'm waiting for some MPC improvements (http://forum.doom9.org/showthread.php?t=134336).
chros
7th February 2008, 11:57
Woowww !!!
This can be interesting !
We're waiting, unpatiently ... :)
dimzon
8th February 2008, 17:07
Just to track all info in one place:
found COM API for foobar2000 (http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/COM_Automation_Server_%28foo_comserver2%29)
found some info about ffdshow API (http://www.krugle.org/examples/p-CTG7M1zOpDGJFv43/ffdshow_remote_main.pas)
Still wait Media Player Classic API (http://forum.doom9.org/showthread.php?t=134336)
dimzon
8th February 2008, 17:11
Oh, forgot
proposed project name is FreeHTPC
dimzon
8th February 2008, 17:39
FreeImage (http://freeimage.sourceforge.net/) will be used for image reading (to provide image view/slideshow functionality)
Sample and managed wrapper is here (http://www.codeproject.com/KB/graphics/FireballCoreFreeImage.aspx)
Schrade
8th February 2008, 21:56
This sounds great! We really do need a solution like this that uses non bloated things.
MPC, ffdshow and Foobar2000 are a great combo.
Blue_MiSfit
9th February 2008, 00:46
Sounds awesome!
I have a decent setup with media portal - since it can use any media player you want.
It's a little fat though.
Something light and totally MPC / ffdshow / foobar based would be slick!
~MiSfit
dimzon
11th February 2008, 14:40
I started this project at CodePlex (nothing is working yet)
http://www.codeplex.com/FreeHTPC
koutou
13th February 2008, 09:54
Since i am very intrested in a very good front end that i can not find anywhere, i though it will be good
to give you my thoughts.
The front end that i am refering to , should be able to do the following....
- Rip hddvd & bluray discs through anydvdhd
- Rip dvd titles through dvdfab
- Rip audio cd through EAC
Basic function of video playback, should be the automatic detection of movie framerate and
automatic changing the graphics card output through powerstrip to specific resolution,refresh rate and color profile.
Should be able to use ffdshow, and again according the movie type to use several different profiles of ffdshow.
Should be able to play either overlay, vmr9 or evr.
To be able to use latest codecs in order to have dtsHD and ddHD audio support.
Support of UVD dxva for the hd formats.
To be able to use graphs.
To be able to use external srt type subtitle files.
Must have the ability to use reclock.
Support of mkv type movie files, with srt subtitles.Different automatic set, settings for this also.
Audio playback support for known file types, also for flac & ape file types.
That's what i have in mind with a good htpc front end ..
ilovejedd
13th February 2008, 10:34
Sounds awesome. I applaud you for undertaking this project. Now on to the suggestions...
In addition to the above, an HTPC needs good search and cataloguing functions.
-generate and cache thumbnails (for home videos, etc)
-integration with imdb to request for cover art and description/synopsis if possible
-ability to search/filter by genre, director, actor/actress, etc
That's all I can think of right now. If I think of additional features for HTPC front-ends, I'll drop you a line.
Good luck! I'm really looking forward to this project. :)
dimzon
13th February 2008, 14:28
- Rip hddvd & bluray discs through anydvdhd
- Rip dvd titles through dvdfab
- Rip audio cd through EAC
This features is planned but not right now.
Basic function of video playback, should be the automatic detection of movie framerate and
automatic changing the graphics card output through powerstrip to specific resolution,refresh rate and color profile.
Should be able to use ffdshow, and again according the movie type to use several different profiles of ffdshow.
Should be able to play either overlay, vmr9 or evr.
To be able to use latest codecs in order to have dtsHD and ddHD audio support.
Support of UVD dxva for the hd formats.
To be able to use graphs.
To be able to use external srt type subtitle files.
Must have the ability to use reclock.
Support of mkv type movie files, with srt subtitles.Different automatic set, settings for this also.
All video playback will be implemented via Media Player Classic. Can You tweak MPC for such features? If not ask Media Player Classic developers. For ffdshow - I doesn't think about some automatics but I'm planing to give ability to switch between different ffdshow presets and to turn on/off some options.
Audio playback support for known file types, also for flac & ape file types.
All audio playback will be implemented via foobar2000.
-generate and cache thumbnails (for home videos, etc)
This feature is NOT planned for video atm. I really doesn't want to read/decode video files myself. And I hate this feature in Windows Explorer.
-integration with imdb to request for cover art and description/synopsis if possible
This feature is NOT planned atm.
-ability to search/filter by genre, director, actor/actress, etc
This feature is NOT planned atm. Actually I doesn't think it will be usable without keyboard. Just place your files in proper folder structure.
dimzon
13th February 2008, 15:16
PROJECT ROADMAP
VERSION 0.1
Video files support
Must provide ability to use OSD menu to navigate via file system and open video files in MPC.
Must provide ability to control such MPC features
1) toggle videoframe size: Stretch to Window/Touch Window Inside/Touch Window Outside
2) toggle aspect ratio: Current / 4:3 / 5:4 / 16:9
3) Pan & Scan control - increase/decrease/move/reset etc...
4) toggle subtitles
5) toggle audio tracks
6) tweak audio delay (increase/decrease/reset)
7) tweak subtitles delay (increase/decrease/reset)
8) FF/FB/REWIND etc.
9) Go to specified time feature
10) Previous/Next file in playlist.
VERSION 0.2
Add DVD support. Must be able to open DVD in Media Player Classic. Must provide ability to control such MPC features
1) Toggle video angle
2) Navigate to DVD menus (root/chapter/subtitle etc.)
VERSION 0.3
Add basic Image Viewer support.
Must provide ability to use OSD menu to navigate via file system and open image files using build-in image viewer.
Build-in image viewer must provide such abilities:
1) toggle different image size mode (actual size/fit to screen/etc)
2) show to next/previous image in folder
3) simple sildeshow
VERSION 0.4
Add basic audio support.
Must provide ability to use OSD menu to navigate via file system and add folder to foobar2000 playlist.
Must provide ability to control such foobar2000 features
1) FF/FB/REWIND etc.
2) Previous/Next file in playlist
3) Clear playlist
4) Toggle playback mode (Shuffle/Repeat/Default etc)
foobar2000 must be hidden, all information will be shown via OSD.
dimzon
13th February 2008, 17:46
OSD menu sample
http://img169.imageshack.us/img169/7871/freehtpcul1.th.jpg (http://img169.imageshack.us/my.php?image=freehtpcul1.jpg)
Actually I want to keep it as easy as possible. So You can use remote navigation keys to select + enter/ok to activate item or use numeric keys for instant activation
Casimir666
13th February 2008, 18:02
@dimzon
How did you plan to do the OSD? Inside MPC?
@koutou
DXVA is supported by mpc-hc ;)
dimzon
13th February 2008, 18:32
@dimzon
How did you plan to do the OSD? Inside MPC?
No, I created window using TransparentKey and set it as TopMost.
Actually it works if fine
smok3
13th February 2008, 22:21
'resume playback' for all formats would be really nice.
wozio
14th February 2008, 08:09
Hi,
Damn, I'm late with announcing my own project which I'm developing for some time now in my free time :-) Maybe we can join with one of them to have one bigger team instead of two smaller :-)
Basically my project started with to be HTPC frontend and this is what it is now, but my plans are much wider.
Project goals are basically the same as yours, it will be HTPC frontend but with several differences:
1. as lightweight as possible, so no C#, C++ only with C in ready libs
2. Direct3D GUI
3. only built in video player, since no easy way of integrating external video player when using d3d fullscreen exclusive mode (which you must have when video quality is important
4. as easy and smooth to use as possible, this must be frontend for our wifes/girlfriends/kids but also for us, computer freaks :-) so common things must be very easy but complicated possiblie maybe not directly from gui
Maybe I will post some screenshots what I actually have and it is working more or less (gui is under rewriting now to allow more flexible skinning so this screenshots are from 100 revs back or something like that, from last working version :-) ):
music files browsing page (tagging is supported for almost all formats, mp3, mp4/m4a (itunes), flac, mpc, ogg, wma, etc):
http://www.pwozniak.multimo.pl/pMC1.png
video files browsing page while video is playing:
http://www.pwozniak.multimo.pl/pMC3.png
Maybe we could join forces :D.
What is also integrated now is support for MCE remote control.
Regards
Piotr Wozniak
A-star
14th February 2008, 11:00
Did any of you try Meedios?
http://www.meedios.com
Inventive Software
14th February 2008, 14:17
I'm liking this idea very much. Something that's a worthy competitor to Media Center would be nice. Consider using ffdshow alongside it too, for the monumental codec support. :)
Also, this might be out on a limb, so to speak, but any chance of TV Tuner support?
dimzon
14th February 2008, 14:34
3. only built in video player
Unfortunately it means you must reproduce too much functionality from perfect Media Player Classic. Because I really love it and don't want any compromise. Maybe the better way in this case will be just create yet another MPC fork and turn it into HTPC frontend?
wozio
14th February 2008, 14:58
Unfortunately it means you must reproduce too much functionality from perfect Media Player Classic. Because I really love it and don't want any compromise. Maybe the better way in this case will be just create yet another MPC fork and turn it into HTPC frontend?
HTPC application must be as easy to use as possible so duplicating whole MPC functionality is not a good idea, at least in every day use. So if we will remove functionality which is used rarely in every day use then MPC is not that complicated application to make this task so demanding ;-)
For example almost all functionality you listed in version goals is already implemented in my app or is very simply to add (by very simply I mean about 50 lines of code).
In fact my goal is to have whole system of applications and one of it may be modded MPC:
1. media server - here all media library is placed (normal files and tv streams)
2. media clients - connects to server for access to media library and provide also interface for local client media for example dvds or cd audio, usb storage:
- HTPC frontend
- normal pc player (it can be modded MPC for example)
As I wrote: if you want to have highest quality video, you must use exclusive fullscreen mode, what makes integration with MPC very hard to do properly. Some specific functionality makes it even more complicated, for example matching screen refresh rate with video frame rate.
wozio
14th February 2008, 15:50
1. media server - here all media library is placed (normal files and tv streams)
2. media clients - connects to server for access to media library and provide also interface for local client media for example dvds or cd audio, usb storage:
- HTPC frontend
- normal pc player (it can be modded MPC for example)
Some more possibilities:
2. clients:
- web client - access to media server via http (with server side transcoding)
3. remote control of HTPC frontend
- touch screen - on external tablet pc as in high end solutions like caleidascape or on secondary display for high end HTPC cases with integrated screen
- palmtop - remote control via wifi or bluetooth
- web remote control
4. output module in HTPC frontend for supporting LCD/VFD/OLED
...
As you can see I have a lot of ideas whch can't be done using only MPC and starting HTPC app alone depending on MPC isn't good since later we will have a lot of problems with integrating it with other components. When writing from stratch it will be a lot easier. MPC is not that complicated to base on it and also some code is already done in my project.
And most important:
There is no such system on windows at the moment.
Regards Piotr
dimzon
14th February 2008, 15:51
HTPC application must be as easy to use as possible so duplicating whole MPC functionality is not a good idea, at least in every day use.
Wrong!
I'm using Pan&Scan very frequently. I'm using subtitle/audio switching very frequently too. I want to do it without mouse/keyboard at all - using only remote control.
I have huge collection of FLV/QuickTime/RealMedia clips so I need ability to play them in same player.
I have huge amount of movies in MP4 container with chapters - I want to be able to navigate using remote.
And, actually, I don't understand why i need matching screen refresh rate with video frame rate. Is it so critical? Are you sure most of FullHD LCD TV supports different refresh rates? I doesn't think so... Talking about different screen resolution - actually LCD has only one NATIVE resolution, all other are interpolated. In this situation I'm strongly prefer confugurable SW upscaling/downscaling to NATIVE LCD resolution via ffdshow.
And yet another question - why do you think you must use exclusive fullscreen mode? Can't believe normal mode adds some artefacts/distortion....
wozio
14th February 2008, 18:25
Wrong!
I'm using Pan&Scan very frequently. I'm using subtitle/audio switching very frequently too. I want to do it without mouse/keyboard at all - using only remote control.
I have huge collection of FLV/QuickTime/RealMedia clips so I need ability to play them in same player.
I have huge amount of movies in MP4 container with chapters - I want to be able to navigate using remote.
All of this is basic functionality and very easy to implement. What I can't do in my app yet is stream switching and chapter navigation. Also pan scan is not yet implemented but this is two lines of code feature. Playing different formats is app independend, you need only correct filters.
And, actually, I don't understand why i need matching screen refresh rate with video frame rate. Is it so critical? Are you sure most of FullHD LCD TV supports different refresh rates? I doesn't think so...
Almost all new, fullHD screens and projectors support 24, 50 and 60 Hz what covers all sources to be played without odd frame multiplication (ie straight 1:1 or 1:2 without strange 3:2). Play once 50Hz source on 60Hz screen and you will see why you need it.
Talking about different screen resolution - actually LCD has only one NATIVE resolution, all other are interpolated. In this situation I'm strongly prefer confugurable SW upscaling/downscaling to NATIVE LCD resolution via ffdshow.
You can use ffdshow in any app when needed. Or you can use pixel based scaling what saves CPU resources. This is not app dependent.
And yet another question - why do you think you must use exclusive fullscreen mode? Can't believe normal mode adds some artefacts/distortion....
During my tests I discovered fullscreen exclusive mode is much better. FOr example when I play 60 Hz hdtv tv source on 60 Hz screen I can't get smooth motion using windowed mode, at least on XP and ati x1650 pro. When using exclusive it is butter smooth. Maybe on nvidia on evr it is better.
Regards
Piotr Wozniak
dimzon
14th February 2008, 18:43
All of this is basic functionality and very easy to implement.
What I can't do in my app yet is stream switching and chapter navigation.
Both are very useful. Why not just get some implementation from MPC? And what about subtitles? What about internal (mp4/ogm/mkv) and external subtitles?
Also pan scan is not yet implemented but this is two lines of code feature. Playing different formats is app independend, you need only correct filters.
this is "ideal" situation
actually AFAIK MPC contains some workarounds for some filters bug. And MPC can play RealMedia/QuickTime using it's own proprietary API instead DirectShow filters...
Almost all new, fullHD screens and projectors support 24, 50 and 60 Hz what covers all sources to be played without odd frame multiplication (ie straight 1:1 or 1:2 without strange 3:2). Play once 50Hz source on 60Hz screen and you will see why you need it.
Hmmm... My HD-Ready Samsung supports only 60Hz...
dimzon
14th February 2008, 18:48
...thinking about MPC/OSD and exclusive fullscreen mode.
actually i think it's posiible to add to MPC ability to draw RGB32 (with alphachannel) over video. In this case controlling application can draw OSD onto invisible inmemory bitmap and send it to MPC using WM_COPYDATA....
Casimir666
14th February 2008, 19:17
Whouaaa this thread is active today!
D3D exclusive mode is very useful, especially to remove tearing and playback smooth on Windows XP.
I think OSD inside mpc would be a better solution, because he can have a better a direct access to the framebuffer. There is a the begining of an OSD already (uncomplete, and pretty ugly), but it can be completed. If you want to choose this way i can open access to the svn, because i don't think i will have time to works on this part. I have much more ideas than time to realise it already :p
Inventive Software
14th February 2008, 19:48
I have an idea, though this might be a bit of a stretch...
Is there a way of including MPC within the screen, so to speak, so that you could have it in a corner while you have the file browser up?
wozio
15th February 2008, 08:03
Both are very useful. Why not just get some implementation from MPC? And what about subtitles? What about internal (mp4/ogm/mkv) and external subtitles?
Yes they are useful and are on my todo list. Subtitles are just via vobsub now, without any control from application now, it is just not enough time to implement all of this. That's why I'm asking for joining forces. As far as I saw in MPC code, internal subs are not that complicated thing to included in other app. We have here MPC experts I'm sure they would help with implementing it.
this is "ideal" situation
actually AFAIK MPC contains some workarounds for some filters bug. And MPC can play RealMedia/QuickTime using it's own proprietary API instead DirectShow filters...
Sure it has. I don't know how about you but I have all internal filters disabled in MPC. I'm just not using it since I can always find something more useful in standalone filters.
Hmmm... My HD-Ready Samsung supports only 60Hz... Mine is the same on VGA :-) But you are in PAL world so on I'm sure you have both 50 and 60 Hz also on HDMI. Your tv broadcast is 50Hz, panel is driven also on 50 Hz. And it can do 60Hz also, since this is from VGA. Older samsung electronics is garbage I'm afraid.
Regards
Piotr Wozniak
wozio
15th February 2008, 08:18
Some thoughs about changing/using MPC as HTPC frontend. I think this is not a good idea. Not really elegant solutions are already showing, for example drawing gui in other app and then copying screen into MPC via WM_COPYDATA... Problem with MPC is that code is very integrated with ui, changing it into something really different would be a lot of work in my opinion.
My idea is to leave MPC what it is, a great pc player, but not usable of being part of HTPC frontend.
Maybe we could do something like that: develop other app trying to share as much code base with MPC as possible. For example: VMR9, EVR custom allocators can be used with little modification. Subtitle rendering engine, graph building engine, all of this can be used, even two apps can share the same settings for example to have filters blocking/prefering list.
Even we could have great name for this: MCC aka Media Center Classic ;-)
We can add media database solution and gui from my app since it is developed more or less already.
Oh I forgot, if you want to see my code, it is here (http://www.sourceforge.net/projects/pht). It is not compilable, since I' in the middle of gui rewriting.
Regards
Piotr Wozniak
dimzon
15th February 2008, 15:14
Some thoughs about changing/using MPC as HTPC frontend. I think this is not a good idea. Not really elegant solutions are already showing, for example drawing gui in other app and then copying screen into MPC via WM_COPYDATA...
Actually I think this is good idea. This helps a lot to save development time.
Casimir666? what do you think about this idea (http://forum.doom9.org/showthread.php?p=1100312#post1100312)?
vBulletin® v3.8.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.