View Full Version : YAP (Yet Another Player) v0.9.5
Orf
19th September 2014, 16:24
YAP: Yet Another Player is a desktop application - media player. Targeted for use on computers running Windows OS to create a library of media files, playback them, and also view DVB broadcasts. The best effect from using a media player is achieved on media center computers in multi-monitor configurations and controlled by remote control.
Project home page links
0.9.5 changes (https://orfsoft.net/en/history/#v0-9-5)
Description (https://orfsoft.net/en/products/)
Gallery (https://orfsoft.net/en/gallery/)
Download (https://orfsoft.net/en/download/)
Help and support (https://orfsoft.net/en/support/)
Credits
Big thanks to Shiandow for shader developing and image processing consulting.
Notes
If someone want/can help to improve this project, feel free to join in.
What I think are the parts of a project that need to be addressed:
- Shader developers. If you can implement some image processing algorithm or improve existing ones, YAP shader pack editor is a good place to start
- Better graphics. Graphic designers can make YAP looks better.
- Translators. If you want to see it in your own language, you can spend some time and translate it.
- Ideas and suggestions about further improvements/features YAP miss/must have.
- Testers. Are always needed and welcome.
But if not, you can simply have fun with it.
Milardo
20th September 2014, 00:33
Hi, i have tried out your program, somewhat, but how does one add 3rd party directshow filters? Also, can i request some features? Integrated lav filters? Capture card support? Let me know thanks.
Orf
20th September 2014, 05:36
but how does one add 3rd party directshow filters?
Not sure I understand this. What goal you are trying to reach ?
Integrated lav filters? Capture card support?
Again, what do you mean by LAV integration ?
Milardo
20th September 2014, 06:03
Well, if i wanted to use this filter in your player, usually one has to add it in the player so it will use it.
http://www.dmitrirender.ru/
and there are others out there that one has to add manually because that is the only way to use them.
MPC-HC and kmplayer have lav filters integrated into player so you don't have to install the separate package. Is that something you can do?
Orf
20th September 2014, 08:28
@Milardo
The one by your link is a video renderer. This is different. Adding a video renderer required some testing and code changes. And the filter by your link is not a free one.
As for the other filters, Yap will use them automatically, if DirectShow decide to load it to the graph. The same about LAV, it is not required for Yap to function, but LAV can be used (and I use it myself) if installed. I do not think Yap should install LAV automatically and force someone to use it. Also there's no support for capture and I do not even imagine how it should look like inside Yap.
p/s Before implementing any new features, I plan to fix all bugs in current version and release version 0.7
huhn
20th September 2014, 17:17
dmitrirender
is not a video renderer. it is just an frame interpolation filter it is not renderering videos at all. it like xyVSfilter it takes the decoded frame and do "things" with it.
LDD9O
21st September 2014, 07:52
Seem quite a fair time went into making this.
Few problem I find with it is;
(1) The setting/option, it annoying having to use it. Each time I change something, I have to right click to open the context menu again to change something else.
(2) The clog(?) wheel in the main player that look is a "Setting" icon is actual some kind of debug(?) or notification
(3) View mode icon - Right clicking on it should open a list of view mode available rather than the usual context menu
Overall it quite a good player but at the moment, there no reason replace it with my current player
Orf
21st September 2014, 09:31
@huhn
Maybe, I never use it myself, but it site says something about dmitrirender should be installed as a custom renderer in players that support it. In case it is a in-between processing filter I do not see a reason why DS can't put in the graph Yap builds
@LDD9O
(1) Context menu just mirrors navigator view mode called main menu (F8). You can change setting from there. It doesn't auto close
(2) When this wheel is rotating, that indicates one or more processes is running in the background. You can see what is happening from it hint. Maybe it really look confusing, not sure about it
(3) The list is present in navigator menu, I guess the icon you mean is short link to cycle view mode action (F1)
Orf
22nd September 2014, 14:03
Link to the manual added to the first post. Should clarify things a bit.
Orf
26th September 2014, 19:09
One week passed, one thousand views registered, three persons replayed...I wonder does it means no one else care to try it and give me some more feedback maybe?
turbojet
26th September 2014, 19:49
As someone who often watches in window mode I appreciate the auto hiding of toolbars. In a brief test I noticed a few issues:
1. scrollbar thumbnail stuck on and couldn't figure out to remove it
2. Maximized window to fullscreen then back to window goes to a default size, expected maximized
Some things it's missing that are important in a mediaplayer imo:
a. pixel shaders
b. auto play when media is opened
c. large time display (second important thing on toolbar imo but usually one of the smallest)
d. options to declutter the toolbar, the top line of toolbar is unnecessary imo, ditto with messages and status icon in lower left.
e. tv tuner support (this is probably a lot of work)
f. maybe an additional skin option or skinning support (default isn't ugly but some may prefer different looks)
Orf
27th September 2014, 10:11
turbojet, thanks for the feedback
As someone who often watches in window mode I appreciate the auto hiding of toolbars.
Yap do auto hide toolbars or you mean something different ?
scrollbar thumbnail stuck on and couldn't figure out to remove it
Sounds like a bug to me, how to reproduce it ?
Maximized window to fullscreen then back to window goes to a default size, expected maximized
There's two buttons in full screen mode maximize and restore. Turning full screen mode off always works like restore. Is that behaviour case confusion ?
pixel shaders
what you use this for ?
auto play when media is opened
There's no "open" action at all. Media is imported once and then it stays in library database
c. large time display (second important thing on toolbar imo but usually one of the smallest)
What time do you mean here ? Clock ? If yes it is located in the caption of information panel (I)
options to declutter the toolbar, the top line of toolbar is unnecessary imo, ditto with messages and status icon in lower left.
It is a group seek bar. You can seek entire group here. The lower seek bar is item seek bar where you can seek only through current item. When item is not a part of a group, both seek bars looks the same and one of then is unnecessary, yes, I simply do not hide it
tv tuner support (this is probably a lot of work)
I do use TV tuner myself. It have special application (player) with it. What are the benefits of putting all that stuff inside media player ?
maybe an additional skin option or skinning support (default isn't ugly but some may prefer different looks)
As I mention in first post, I need a graphics for that, and I can't do it myself
Orf
27th September 2014, 14:38
Screenshots added to the first post
turbojet
2nd October 2014, 22:52
Yes I meant toolbars and it's mostly ignored to auto hide and glad it's in YAP. I'm going to use numbers and letters to reply because there's no nested replies in this forum. Strict replying to your post wouldn't make any sense and manually nesting takes quite a bit of work.
1. Scrollbar thumbnail sticks for about a minute the first time for every video I've tried. Consecutive thumbnails go away as expected.
2. Going back to previous window state is what's common and expected.
a. pixel shaders for sharpening for me
b. ok then auto play from library would be welcome and is expected from a media player
c. not the clock but the currrent timestamp and length of media playing, it's small, tough to see on tv's
d. group toolbar is very confusing
e. for a nicer gui and ability to use madvr, pixel shaders, etc. every pcr software I've used has an average gui at best and lacks a lot of ability
f. ok, like I said it's not an ugly design imo but it's cluttered.
Orf
3rd October 2014, 14:32
turbojet
Yes I meant toolbars and it's mostly ignored to auto hide and glad it's in YAP
Guess you've meant that autohide delay is too long. I think you are right, I'll lower it a bit
Scrollbar thumbnail sticks for about a minute the first time for every video I've tried. Consecutive thumbnails go away as expected.
Never seen it myself. Can you give me step by step guide of what you are doing from player start to the point this bug first appears ?
Going back to previous window state is what's common and expected.
Accepted. Subject to change before 0.7 will be released
pixel shaders for sharpening for me
Did you use it with madVR only ?
ok then auto play from library would be welcome and is expected from a media player
Yap has an option On start up/Restore playback(disabled by default). If you close Yap when it is playing something and this option is enabled Yap will resume playback next time it will be started. Is that what you want ?
c. not the clock but the currrent timestamp and length of media playing, it's small, tough to see on TV's
I wonder, what is screen resolution of you TV ? And if you talking about fullscreen mode, try to enlarge value of Interface/Fullscreen font size multiplier option. Maybe it will do the trick :)
group toolbar is very confusing
You say it is confusing, but you didn't say why. Groups inside playlist is the feature no others players had I think, and it is one of the things why Yap was created. So may be is just look unusual to you. Look closely at the screen shots, I've tried to illustrate what playlist groups and group seek bar is about
for a nicer gui and ability to use madvr, pixel shaders, etc. every pcr software I've used has an average gui at best and lacks a lot of ability
I understand the point. But it is not about just add a support, it's about writing several more players, assuming there're different types of capture cards. We have to be realistic here, it can take unpredictable amount of time....
turbojet
3rd October 2014, 23:27
There's nothing wrong with the auto hide toolbars, I was praising it.
1. Open video, press play and hover the timeline, the thumbnail stays for a long time the first time, then it's normal.
2. OK
a. I use madvr with Lumasharpening, MadVR alone even with Lanczos8 is still a pretty soft picture in most situations for me.
b. No, I mean when opening a video it plays instead of having to press play
c. 47" 1080p it's somewhat difficult to read, on a 1024x768 CRT it's unreadable.
d. Confusing because there's 2 trackbars, I can see advantages of it in some cases though
e. Yup, I said it was probably a lot of work in initial posting, I can understand not wanting to take it on
I use Potplayer which has the capability to do all of this plus a lot more but apparently they use edited open source code for their closed source player which I don't agree with. I'm really open to changing players but have never seen alternatives offer half of what I demand from a player.
Orf
4th October 2014, 06:23
turbojet
Open video, press play and hover the timeline, the thumbnail stays for a long time the first time, then it's normal
It stays longer when the mouse over some control and when the state is not playing, and as I said before I will change the delays a bit
I use madvr with Lumasharpening, MadVR alone even with Lanczos8 is still a pretty soft picture in most situations for me.
I see. Will see what I can do after 0.7 will be released
No, I mean when opening a video it plays instead of having to press play
I think finally I've got it. When you change current item in playlist Yap restores the same state it was before (paused for example) and you want to always start playback of new item ? If yes, I can add option for that
c. 47" 1080p it's somewhat difficult to read, on a 1024x768 CRT it's unreadable
Did you try option I've mention before to enlarge all the fonts ?
I use Potplayer which has the capability to do all of this plus a lot more but apparently they use edited open source code for their closed source player which I don't agree with. I'm really open to changing players but have never seen alternatives offer half of what I demand from a player.
Well, suggest what you missed at the first time, that the one of the things what this thread is about
Orf
16th October 2014, 15:30
Version 0.7 released, changes:
(+) Option added to switch control bar between basic and extended modes
(-) Status bar was removed cause people think it is confusing
(*) Return from full screen mode restores previous windowed mode
(*) Several bugs fixed
turbojet
17th October 2014, 19:38
Changelog lists some positive changes but unfortunately I can't play anything with 0.7. Message is "Import completed, 0 files were added"
Orf
18th October 2014, 06:21
Strange, nothing was changed in the import. Normally such thing only can happen, when you import folder and no files with extensions listed under "Options/Supported media extensions" was found...
Orf
23rd October 2014, 17:00
Updated to 0.7.0.1, nasty bug with disappeared seek bar and couple of other bugs introduced in 0.7 was fixed
turbojet
23rd October 2014, 20:02
The problem with not playing any files still exists for me.
Orf
24th October 2014, 04:56
turbojet, try to reset options to their default values
turbojet
24th October 2014, 06:04
After reset, still the same.
Orf
24th October 2014, 14:22
turbojet, did you import folder or file ? What's the extension of target media file ? Is that extension listed under "Options\Import\Supported media extensions" option ? What method of import do you use: Import folders dialog, import files dialog, drug & drop to main window, file browser menu ?
turbojet
24th October 2014, 21:00
file, mkv/mpg, yes, drag and drop and import files dialog.
Orf
25th October 2014, 07:30
turbojet, I still don't understand what's happening. Pls do the following: open player, import file you say you can't import, open message panel (M), press Ctrl+A, Ctrl+C there, copy the text here
turbojet
26th October 2014, 06:23
Copying doesn't work but the error is: SQLite: FOREIGN KEY constraint failed
Orf
26th October 2014, 08:55
Ah, I see, so we got an error here. Can you give me the debug log (located at "%localappdata%\YAP\YAP.log") to examine? After that you can delete YAP DB file, located at "%localappdata%\YAP\DB\YAP.db", I hope this should restore import functionality for you.
turbojet
26th October 2014, 22:20
Deleting yap.db didn't help. Here is what's in the log:
26.10.2014 16:18:32.723 Version 0.7, built on 10/23/14 started
26.10.2014 16:18:32.918 SQLite engine 3.8.5 initialized
26.10.2014 16:18:32.919 Database is empty, creating new one
26.10.2014 16:18:32.963 Database created
26.10.2014 16:18:32.997 Command line (0 parameter(s))
26.10.2014 16:18:33.003 Resize(1680, 1016)
26.10.2014 16:18:33.840 OnImageChange
26.10.2014 16:18:33.842 OnLibraryChange
26.10.2014 16:18:33.845 OnChange(0)
26.10.2014 16:18:33.852 OnStateChange(plsStopped)
26.10.2014 16:18:33.859 OnCurrentChange(0,0)
26.10.2014 16:18:37.377 Resize(656, 404)
26.10.2014 16:18:39.081 Parse "E:\Watch\Sons of Anarchy.S07E07.Greensleeves.mpg"
26.10.2014 16:18:43.417 Resize(1680, 1016)
26.10.2014 16:18:44.235 ImportThread: SQLite: FOREIGN KEY constraint failed
26.10.2014 16:18:46.509 ClosePlayer.Execute
26.10.2014 16:18:46.514 Destroy
26.10.2014 16:18:46.550 Finished
Orf
27th October 2014, 07:33
turbojet, can you share mpg mentioned in the log, or any other media that gives you the same error and PM me the link ?
turbojet
27th October 2014, 19:55
It's every file I've tried with 0.7*, mpg, mkv, mp4 avi. All work fine in earlier versions.
Orf
28th October 2014, 04:33
Well, I've already understand that. But it works on all of my test machines just like before. So it is somehow related to 1) your media files or 2) your machine configuration. I've ask for sample from you just to make sure it is not 1). If it's not we'll see what to do next
turbojet
28th October 2014, 20:17
It's really any file but here's a link to an open video that doesn't play in 0.7.* but does in 0.6.* http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_640x360.m4v
Could it be some language issue with sqlite? I'm using english.
Orf
29th October 2014, 19:14
turbojet, thanks for the link, I've tested it and it is imports and plays fine on three different configurations (including one with English locale). And by the way both import process and SQLite pretty much transparent to locale settings. Technically the error you encounter means that import process tries to insert invalid data inside DB (which is wrong) and SQLite integrity check do not allow it (which is correct). Still not sure why it happens to you. I'll add stack trace to import in next version, may be it'll give me some clues...
Orf
30th October 2014, 15:21
turbojet: I've PM you the link, pls check this version and if error still exists, copy the log again, it should give me some more info
Gravitator
30th October 2014, 16:18
Привет!
Support LAV x64 (To be useful for HEVC) ? How about the SVP (http://www.svp-team.com/)...
Orf
30th October 2014, 18:08
Gravitator:
Currently YAP is 32 bit only, addin' support for custom directshow filters is work in progress and will be available in 7.1
Orf
8th November 2014, 10:42
0.7.1 released
(+) Filters used in Directshow graph are fully customized now, including
adding any third party filters, audio renderer selection and more.
New settings are located under Directshow Filters category
of Advanced options dialog. Selection of video and audio renderer is also
availible from full screen options
(+) Advanced options dialog added (for advanced options which configuration
requires complicated UI and therefor is not available in fullscreen mode)
(+) Database updating mechanism added
turbojet
8th November 2014, 20:28
0.7.1 opens files again, thanks!
Orf
9th November 2014, 11:14
turbojet:
nothing was changed in this matter, but it is good that it is working for you again
0.7.1 was tested and works without any problems with following filters:
- SVP either with LAV Video Decoder + ffdshow raw video filter combination or ffdshow video decoder alone
- DmitriRender
- ffdshow subtitles filter can be used instead of DirectVobSub for subtitle handling
- ReClock
Any others might work without problems too, but you should have some understanding of what DirectShow is to config it right
Tip: you can connect to YAP graph from GraphStudioNext to see what actually happens with your custom filter config
madshi
14th November 2014, 09:48
@Orf, seems to work fine and looks nice on first quick check. Good job!
One little bug I stumbled over: Started in small window, pressed F12 to maximize, pressed F12 again to go back to small window. Works fine. Pressed F12 to maximize, accidently pressed F11, then pressed F12 to go back to small window. Doesn't work, anymore. Once I press F11 in fullscreen state, pressing F12 doesn't go back to small window, anymore.
pixel shaders
what you use this for ?
For example for this:
http://forum.doom9.org/showthread.php?t=171346
You don't have to add support for this to YAP, if you're fine with it only working for madVR, because I plan to add direct custom shader support from within madVR. If you want shaders like "FineSharp" to also work for YAP's EVR then you'll have to add support for it, though.
Orf
15th November 2014, 13:03
YAP 0.7.2 released
(*) DVD compatibility improved
(+) Import: Autoplay after import option
(+) Temporary playlist. All content imported to temporary playlist remains only until current player instance is running
(+) System: Option to prevent multiple player instances
(+) System: Explorer context (right-click) menu entry and option to enable/disable it
(*) MediaInfo updated to version 0.7.71
Orf
15th November 2014, 13:24
seems to work fine and looks nice on first quick check. Good job!
Actually it is, thanks :)
You don't have to add support for this to YAP, if you're fine with it only working for madVR, because I plan to add direct custom shader support from within madVR. If you want shaders like "FineSharp" to also work for YAP's EVR then you'll have to add support for it, though.
I've planned to add the support for madVR shaders right in next version, already have seen you've got an interface for that...But if you plan that too, I don't know then. Seems like we've got again an old question where it should be in player or renderer :sly: And I think EVR CP will be useful in YAP anyway. Investigating it a bit...But not quiet sure currently I can handle it right...
p/s will check the bug too, thanks
madshi
15th November 2014, 13:51
Seems like we've got again an old question where it should be in player or renderer :sly:
Yes, same as always... :p
leeperry
16th November 2014, 01:46
Image slideshow capable of displaying cover images along with playing audio or when video is stopped
That looks great, kinda late to the party but I'll have to give it a shot spasibo :cool:
If you don't mind me asking, there is one feature that all other media players lack IME it's the ability to use mVR for picture viewing because NNEDI looks astonishing when upscaling comics or small pictures, I've tried a good bunch of picture viewers, they use horrid scalers and lack very simple features such as hotkeys for previous/next/random/shrink to fit/1:1 scaling(like ACDSee6, too bad it's using bicubic duh) :(
PotPlayer can do it but it's a black frame feast and it takes a lot of patience to get a picture at all(that's apparently due to mVR's buffers) and it can't do 1:1 scaling. If there were a way you could add a no-fuss NNEDI picture viewer in YAP using mVR, this would be too awesome :)
Orf
16th November 2014, 07:56
leeperry:
Yes, you already can use it as picture viewer. To do so, make new playlist, put some audio file in folder where your images resides and import that folder. That what I'm doing to watch my photos. But YAP currently do not use DirectShow for pictures at all...
And I'm thinking about adding shaders support to YAP, since images in slideshow are technically just video card textures, shaders support can be used with image slideshow too then. And for not reinventing the wheel, it would be good if madshi can provide some access to all the cool stuff madVR have, that can be used outside video renderer (to be used with EVR CP or resize images for example). Just a plain thoughts this time, I don't know what madshi thinks about it himself.
madshi
16th November 2014, 08:15
Well, NNEDI3 is freely available as a CPU and GPU algorithm here in doom9. If you want to use it outside of madVR, you can. Well, might depend on the license, though, you may have to check. I've asked permission from the author before using NNEDI3 in madVR. Atm, madVR is just meant to be used for video playback. Of course you can simulate an image being a video by sending the image through the normal DirectShow video chain. I think LAV Splitter would already do some/most/all of that work for you. If you don't want to use DirectShow for picture viewing at all, then atm madVR does not offer any way to help you there. Adding such support would cost me quite a bit of time (defining a new API for that, setting up a render chain which just handles one image, bypassing all the pause/stop/play/seek stuff, copying the image back from GPU RAM etc) and it's really outside of what madVR is intended for, so even if I added that to my to do list, it would be very low priority.
Orf
16th November 2014, 09:12
madshi:
At first, I've kept in mind not only NNEDI3, but all others rescaling algorithms madVR already have. At second, I do understand that this is theoretically possible to implement all stuff madVR have in YAP. And YAP will not need madVR at all in the end. But you should know it better then I about huge amount of work it will cost me. That's why I've said about reinventing the wheel before. And I'm afraid, using DirectShow for picture viewing is not an option at all, you can believe me by the word, or I can drop you email on that subject if you interested in technical details... I do understand now, it is a lot of work for you too, so it was just another wish, that will never comes true, sadly...
madshi
16th November 2014, 13:51
Well, I didn't say never. But for now I've more things on my to do list than I can handle, so I have to set priorities...
Orf
16th November 2014, 14:40
madshi, on the second thought, may be your efforts for making API is not needed at all. Correct me if I'm wrong, but are all rescaling algorithms madVR uses for now, including NNEDI3 a pieces of shader code ? And if I manage the way to apply shaders to YAP images, you can simply give me the permission to use your shader code. Is it a better way for us to go or I'm missing something here ?
madshi
16th November 2014, 20:26
NNEDI3 uses OpenCL. The other algorithms use D3D9 HLSL, but they require some lookup tables/textures to be filled, so just using the HLSL code won't help, you'd also have to use the code which fills those lookup tables/textures etc. And to be honest, I'm not sure if I want to make my source code available. E.g. you might be tempted to use the same algorithms for EVR. I'd rather make an API available. But I currently don't have the time. Maybe you could use the madVR screenshot functionality to do image resampling, once I've extended it a bit. I'm planning to let the user choose whether he wants screenshots to be taken in the original video resolution or scaled etc. And there's already an official API (supported by madVR) which lets the media player fetch the current image from the video renderer. You could use that API. The only problem right now is that it's always the unscaled video atm. But I plan to change that "soon", as described above.
Orf
17th November 2014, 06:45
madshi, thanks for the explanations and honesty. I respect honesty, especially when it compared to false promises. Well, API will only be useful, if it will work without madVR instance. Also API doesn't solve my intensions as you've said 'tempted to use the same algorithms for EVR' problem. Existing API is not useful too, cause it requires DS graph and copies image from GPU memory back to system memory which is the huge overhead, because resizing needed not only on image load stage
madshi
17th November 2014, 08:37
Oh, so you want the final image to stay in GPU RAM? I thought you wanted it in CPU RAM. Well, I guess that rules out the screenshot idea, too bad. But yes, a DS graph would be necessary in any case. I have to admit that my source code currently isn't in the best shape. There is a lot of code in the DS event routines atm. I plan to cleanup my code after I've reached v1.0 in madVR. If my code were cleaner, it would probably be easier for me to offer you a rendering API without DS. But with the current state of my source code it would be hard to achieve without a DS framework.
generalmx
17th November 2014, 08:54
Hmm, would this work for NNEDI3 still-image support, if AVISynth support is added: http://avisynth.nl/index.php/Nnedi3ocl#Filters
I also found one Japanese Manga Viewer called "MangaMeeya" which supports AVISynth plugins for most of its features (google something like "comic+viewer+avisynth" and it's the only one that comes up), going to try and give it a shot myself (if interested, try tails's lasted translated version where he says he fixed Avisynth support).
Orf
17th November 2014, 11:10
madshi, yes, maybe I was not clear enough before, function that takes texture, needed dimensions and scale algorithm as input and returns the same or new scaled texture...
Orf
18th November 2014, 06:50
madshi:
I've decide that I need own shader options editor in YAP anyway. I have some questions about IMadVRExternalPixelShaders:
1) Is there any specific reason it didn't accept compiled shaders (only the source) ?
2) What is the best point during graph building to initially set the shaders ?
3) Can it handle clearing and re-adding a ps chain when graph is running or paused ?
Also, I'm planning a DB structure to store shader-related data and I'm trying to make it universal (to use with madVR at first and use it for may own needs later), wanna take part in discussion of it?
madshi
18th November 2014, 10:58
1) Is there any specific reason it didn't accept compiled shaders (only the source) ?
Hmmmm... Good question. IIRC, when I implemented that interface, MPC-HC was the only media player with custom shader support, so I implemented an interface which was easy to integrate for the MPC-HC devs. When I rewrite/extend the shader support in a future version (not too far away, I hope), I'll most probably also support compiled shaders.
2) What is the best point during graph building to initially set the shaders ?
3) Can it handle clearing and re-adding a ps chain when graph is running or paused ?
From the top of my head you can change the shaders at any time you want. Doing so results in madVR having to eventually clear the rendering queue and re-render frames, but that's not a problem, really. It might just cause a minor stutter in the moment when you change the shaders. An ideal time to set the shaders should be after building the graph and connecting the pins, but before starting/pausing the graph.
Also, I'm planning a DB structure to store shader-related data and I'm trying to make it universal (to use with madVR at first and use it for may own needs later), wanna take part in discussion of it?
I'm not sure I understand what you mean. Can you elaborate?
Orf
18th November 2014, 12:25
I've meant I can show you schema of shader-related DB tables I'm currently thinking over. It also can give you a picture on how the future shader interface will look like in YAP. Can you revise it and suggest if I'm missing something important maybe ?
leeperry
13th December 2014, 01:58
I do understand now, it is a lot of work for you too, so it was just another wish, that will never comes true, sadly...
OK thanks for the reply, so basically ACDSee-like features(previous/next/random/shrink to fit/1:1 scaling) with NNEDI3 and Jinc3 aren't gonna happen in YAP? :o
I also found one Japanese Manga Viewer called "MangaMeeya" which supports AVISynth plugins for most of its features (google something like "comic+viewer+avisynth" and it's the only one that comes up), going to try and give it a shot myself.
Oh your google-fu skills are impressive :cool:
It keeps crashing for me and can it do NNEDI3 luma doubling + Jinc upscaling? If so, could you create a thread and share your settings by any chance please?
It's a real bummer that picture viewers are still stuck in the 90's.
Orf
13th December 2014, 09:23
OK thanks for the reply, so basically ACDSee-like features(previous/next/random/shrink to fit/1:1 scaling) with NNEDI3 and Jinc3 aren't gonna happen in YAP? :o
No, what you've quoted means that madVR in its current state can't be used to accomplish this. But I think this idea of yours is nice, I like it much and I want to implement it anyway. So, I've already started to add pixel shader support on my own. When it will be finished, it will enable you to apply any combination of hlsl sources to images, madVR and to EVR CP in the future.
Also I've come to an understanding that compute shaders is better fit for this purpose then pixels shaders. Can anyone say, am I right that NNEDI3 is only currently available here @doom9 as pixel shader hlsl sources ?
@madshi
I can't reproduce the F11-F12 bug you've reported by your description. Maybe you have some more to report ? Is it always happen to you ?
Shiandow
13th December 2014, 16:15
Also I've come to an understanding that compute shaders is better fit for this purpose then pixels shaders. Can anyone say, am I right that NNEDI3 is only currently available here @doom9 as pixel shader hlsl sources ?
As far as I know it's available as Avisynth (.avsi) or OpenCL (.cl) files. MadVR uses DirectCompute but I'm not sure if madshi ever made that code public.
Edit: I was mistaken. It seems that MadVR also uses OpenCL. And I think part of the code actually comes with MadVR (in the folder 'legal stuff').
nevcairiel
13th December 2014, 16:19
NNEDI3 is done in OpenCL in madVR as well. Only the dithering shaders are DirectCompute, afaik.
Shiandow
13th December 2014, 16:24
Oh, I think you're right, the changelog mentions that NNEDI3 needs OpenCL.
madshi
13th December 2014, 16:29
I've tried converting NNEDI3 to DirectCompute, but it performed *much* slower than with OpenCL, unlike error diffusion which was actually slightly faster with DirectCompute. So nevcairiel ist right, NNEDI3 is done in OpenCL, error diffusion in DirectCompute.
@Orf, unfortunately I don't have any time atm. But I know that it was 100% reproducable for me, when I reported the problem.
Orf
13th December 2014, 19:36
Shiandow, nevcairiel, madshi,
thanks guys firstly for your comments, they are really helpful finding my way in the dark. But at second thought, and may be I'm missing something here, but why all of your starts talking in one voice about OpenCL vs DirectCompute, when I was initially asked about pixels shaders vs direct compute shaders ?
madshi
14th December 2014, 10:56
at second thought, and may be I'm missing something here, but why all of your starts talking in one voice about OpenCL vs DirectCompute, when I was initially asked about pixels shaders vs direct compute shaders ?
Because you were asking about NNEDI3 GPU implementations, and you were asking about DirectCompute. So we tried to explain to you that for NNEDI3, you'd better be using OpenCL because it's dramatically faster.
Orf
15th December 2014, 06:39
madshi, I agree, I do not ask a question in a correct way may be. Will try to correct myself now. As far as I understood beside using DirectCompute/OpenCL APIs there's third way to do it by simply drawing a quad via Direct3D and applyng pixel shader to it. Did you test is that method any faster then OpenCL ?
nevcairiel
15th December 2014, 08:09
As far as I understood beside using DirectCompute/OpenCL APIs there's third way to do it by simply drawing a quad via Direct3D and applyng pixel shader to it. Did you test is that method any faster then OpenCL ?
Pixel Shaders are much more limited, and something as complex as NNEDI3 is unlikely to be possible with pixel shaders alone.
madshi
15th December 2014, 08:15
madshi, I agree, I do not ask a question in a correct way may be. Will try to correct myself now. As far as I understood beside using DirectCompute/OpenCL APIs there's third way to do it by simply drawing a quad via Direct3D and applyng pixel shader to it. Did you test is that method any faster then OpenCL ?
I actually did try to do NNEDI3 via PS3.0 pixel shaders, and from what I remember, it was slower by a factor of around 1000x, compared to OpenCL.
The reason why pixel shaders are so much slower for OpenCL is that pixel shaders apply math to every destination pixel separetely. OpenCL and DirectCompute are more flexible, you can configure them to render multiple destination pixels with one kernel pass. Doing that allows to cleverly cache things and to share some calculations for multiple pixels etc. Especially for NNEDI3 that's very important to get things up to speed.
Orf
16th December 2014, 05:32
nevcairiel, madshi, thanks
I do understand OpenCL/DirectCompute is more powerfull, that was why I initially asked.
But this NEDI/NNEDI is really confusing me. To summarize what I've learned from your:
- NNEDI3 is the most heavy algorithm, but it gives the best result in the end
- NEDI implemented here for example (http://forum.doom9.org/showthread.php?t=170727) is less heavy, so PS use is acceptable
- madVR internally should have at least two image processing conveyers. #1 is PS conveyer, #2 is OpenCL conveyer. Also it possible have DirectCompute conveyer as #3
- IMadVRExternalPixelShaders supports only #1 (?)
- To make general and flexible image processing support all three conveyers have to be implemented
- Which one of the three is better is kind of an open question. Also picking and implementing only one of them will require rewriting of hlsl/cl code (thing I very unlikely can do myself)
I'm I still missing something ?
madshi
16th December 2014, 09:28
But this NEDI/NNEDI is really confusing me. To summarize what I've learned from your:
- NNEDI3 is the most heavy algorithm, but it gives the best result in the end
- NEDI implemented here for example (http://forum.doom9.org/showthread.php?t=170727) is less heavy, so PS use is acceptable
- madVR internally should have at least two image processing conveyers. #1 is PS conveyer, #2 is OpenCL conveyer. Also it possible have DirectCompute conveyer as #3
- IMadVRExternalPixelShaders supports only #1 (?)
- To make general and flexible image processing support all three conveyers have to be implemented
- Which one of the three is better is kind of an open question. Also picking and implementing only one of them will require rewriting of hlsl/cl code (thing I very unlikely can do myself)
Seems all correct to me.
Although the names suggest otherwise, NNEDI3 and NEDI are *totally* different algorithms, which have almost nothing in common (except for doing an exact 2x upscale). IMO NNEDI3 has better image quality, but it's also quite a bit slower than NEDI. And yes, NEDI works fine with simple PS3.0 pixel shaders, while NNEDI3 requires OpenCL to run at a decent speed.
FYI, Shiandow has written a super-res post-processing algorithm (using simple pixel shaders, once again) which improves NEDI quality even further, bringing it even nearer to NNEDI3 quality. This super-res algorithm is currently available for NEDI, only, I think, but it could in theory also be used to improve other 2x upscale algorithms, e.g. NNEDI3, or even Bicubic/Lanczos. I'm not sure if this super-res algorithm would improve NNEDI3 quality, too, we haven't tried yet, I think. But it might. I'm hoping that the super-res algorithm will sooner or later be a separate filter, running after any other 2x upscaling algorithm.
Shiandow
16th December 2014, 12:24
FYI, Shiandow has written a super-res post-processing algorithm (using simple pixel shaders, once again) which improves NEDI quality even further, bringing it even nearer to NNEDI3 quality. This super-res algorithm is currently available for NEDI, only, I think, but it could in theory also be used to improve other 2x upscale algorithms, e.g. NNEDI3, or even Bicubic/Lanczos. I'm not sure if this super-res algorithm would improve NNEDI3 quality, too, we haven't tried yet, I think. But it might. I'm hoping that the super-res algorithm will sooner or later be a separate filter, running after any other 2x upscaling algorithm.
SuperRes works for arbitrary scaling factors, and arbitrary algorithms. It's not hard to combine with other scaling algorithms, it basically just needs a 'before' and 'after' image. So far I'm having a bit of trouble with larger scaling factors, since it's hard to add detail back into the image without introducing aliasing, but I still have some ideas I could try and MPDN's render scripts make it quite easy to try things out so hopefully I'll be able to improve that soon.
madshi
16th December 2014, 12:40
Ok, sounds good!
Gravitator
16th December 2014, 14:45
Still barely understand, who are we and what do they want from me.
p/s pls remove this torrent shot of yours from my thread
This is just a proposal for expansion/improvement of your product. The problem is in the understanding of the translation. It would be good to contact you via e-mail (Vkontakte).
Orf
17th December 2014, 06:13
madshi,
can you please share your the PS and DirectCompute versions of nnedi3? It will be nice example for me to estimate the differences in code base and test performance maybe. Quick looked through Shiandow SuperRes realization, I'm right guessing that separate PS hlsl's theoretically can be combined in one DirectCompute hlsl or one OpenCL cl ?
Shiandow,
as far as I understand SuperRes requires only that separate hlsl been applied in correct order to work. So what benefits MPDN's render scripts gives to your comparing to MPC-HC way of configuring shaders ?
Gravitator,
I do not use any of social networks. But you can use the PM I guess.
Shiandow
17th December 2014, 12:07
Shiandow,
as far as I understand SuperRes requires only that separate hlsl been applied in correct order to work. So what benefits MPDN's render scripts gives to your comparing to MPC-HC way of configuring shaders ?
A few weeks ago madshi asked a similar question, you may want read my reply here (http://forum.doom9.org/showthread.php?p=1701264#post1701264). But the gist of it is that SuperRes needs to compare the current image to the original image, so you need to be able to store the original somewhere. If it wasn't for some very creative use of the alpha channel, I wouldn't have been able to do SuperRes with just shaders, at all.
Orf
19th December 2014, 10:03
Shiandow,
sorry for delay, have to check some things before answer. That's because we're implementing the same thing. Does it simply means you need another sampler with source image on any stage of processing ? Because from what I've found here (http://forum.doom9.org/showthread.php?p=1699589#post1699589) it looks more complex. Like you need samplers with the result of all previous stages or something more maybe.
Shiandow
19th December 2014, 10:34
There's only one step where I'd need another sampler with the source image, but more importantly that is still not quite enough to implement SuperRes. To implement SuperRes it's more or less necessary to be able to create new samplers and be able to send multiple samplers to one shader. It's technically possible to do SuperRes for one of the channels by storing things in the alpha channel, but that's not ideal.
The way this is achieved in MPDN is by building a chain of so called 'filters' which keeps track of allocating textures and sending the right textures to the right shaders. It might seem that you can use results from all previous stages, but under the hood it will try to allocate as few textures as possible, it also won't calculate results that aren't used and since recently it can even optimize away unnecessary conversions (so if you have X -> ConvertToYUV -> ConvertToRGB -> Y, it will simply do X -> Y).
Orf
19th December 2014, 11:02
In other words, some logics need to be programmed anyway. I'm currently trying' to understand if texture creating is possible inside compute shader hlsl. Can't find any useful information so far. May be madshi will shed some light on this matter.
madshi
19th December 2014, 11:21
Creation of textures etc is something you need to do in CPU code. AFAIK, kernels (doesn't matter if it's pixel shaders, DirectCompute, CUDA or OpenCL) can't create textures, they can just use them.
Orf
20th December 2014, 09:35
madshi, and what about this one (http://forum.doom9.org/showthread.php?p=1703000#post1703000) ?
madshi
20th December 2014, 09:43
can you please share your the PS and DirectCompute versions of nnedi3?
The DirectCompute kernel is shipping with madVR. The PS version for upscaling in X direction is here:
"sampler SourceSampler : register(s0);\n"
"sampler WeightSampler : register(s2);\n"
"float4 floatConsts1 : register(c0);\n"
"#define pixSizeX (floatConsts1[0])\n"
"#define pixSizeY (floatConsts1[1])\n"
"static float1 SumWeights1[nns] = (float1[nns]) packedSumWeights1Array;\n"
"static float1 SumWeights2[nns] = (float1[nns]) packedSumWeights2Array;\n"
"static float4x4 rgbToHd = {+0.2126000000000000, +0.7152000000000000, +0.0722000000000000, 0,\n"
" -0.1145721060573400, -0.3854278939426600, +0.5000000000000000, 0,\n"
" +0.5000000000000000, -0.4541529083058166, -0.0458470916941834, 0, 0, 0, 0, 0};\n"
"\n"
"float4 main(float2 Tex : TEXCOORD0) : COLOR0\n"
"{\n"
" float input[32];\n"
" float mstd0, mstd1, mstd2;\n"
" {\n"
" float sum = 0;\n"
" float sumsq = 0;\n"
" int index = 0;\n"
" float xpos = Tex.x - 1.0 * pixSizeX;\n"
" for (int ix = 0; ix < 4; ix++)\n"
" {\n"
" float ypos = Tex.y - 3.0 * pixSizeY;\n"
" for (int iy = 0; iy < 8; iy++)\n"
" {\n"
" float4 sample = tex2Dlod(SourceSampler, float4(xpos, ypos, 0, 0));\n"
" sample = (sample - 16.0f / 255.0f) / (219.0f / 255.0f);\n" // d3d9Float8 16-235 -> 0-255
" sample = mul(rgbToHd, sample) * 255.0;\n"
" ypos += pixSizeY;\n"
" input[index++] = sample[0];\n"
" sum += sample[0];\n"
" sumsq += sample[0] * sample[0];\n"
" }\n"
" xpos += pixSizeX;\n"
" }\n"
" mstd0 = sum / 32.0;\n"
" mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n"
" mstd1 = (mstd1 <= 1.19209290e-07) ? 0.0 : sqrt(mstd1);\n"
" mstd2 = (mstd1 > 0) ? (1.0 / mstd1) : 0.0;\n"
" }\n"
" float vsum = 0;\n"
" float wsum = 0;\n"
" {\n"
" float ypos = 0.5 / nns;\n"
" for (int i1 = 0; i1 < nns; i1++)\n"
" {\n"
" float xpos = 0.5 / 16.0;\n"
" float sum1 = 0;\n"
" float sum2 = 0;\n"
" int index = 0;\n"
" for (int i2 = 0; i2 < 16; i2++)\n"
" {\n"
" float4 weights = tex1Dlod(WeightSampler, float4(xpos, ypos, 0, 0));\n"
" xpos += 1.0 / 16.0;\n"
" float sample = input[index++];\n"
" sum1 += sample * weights[0];\n"
" sum2 += sample * weights[1];\n"
" sample = input[index++];\n"
" sum1 += sample * weights[2];\n"
" sum2 += sample * weights[3];\n"
" }\n"
" ypos += 1.0 / nns;\n"
" float temp1 = sum1 * mstd2 + SumWeights1[i1];\n"
" float temp2 = sum2 * mstd2 + SumWeights2[i1];\n"
" temp1 = exp(clamp(temp1, -80.0, +80.0));\n"
" vsum += temp1 * (temp2 / (1.0 + abs(temp2)));\n"
" wsum += temp1;\n"
" }\n"
" }\n"
" float result = (mstd0 + ((wsum > 1e-10) ? (((5.0 * vsum) / wsum) * mstd1) : 0.0)) / 255.0;\n"
" return result * (219.0f / 255.0f) + 16.0f / 255.0f;\n" // d3d9Float8 0-255 -> 16-235
"}";
This kernel needs the NNEDI3 weight "database" uploaded to the "WeightSampler" texture and the "SumWeights1/2" constants in the right order, though, and I don't have that information easy to share, unfortunately.
Orf
22nd December 2014, 06:52
madshi,
thanks, will look into it
Shiandow,
have thought a bit about it, so if I made support for simple script, that will look like in the example below, will it allow you to replace RenderScript part without changing your hlsl's ?
For example we have a shader pack of 5 hlsl scripts (Shader1.hlsl, Shader2.hlsl, Shader3.hlsl, Shader4.hlsl, Shader5.hlsl),
the default script generated would be one pass:
Shader1(Source)->Shader2(Shader1)->Shader3(Shader2)->Shader4(Shader3)->Shader5(Shader4);
but you can change it to something like this:
Shader1(Source)->Shader2(Shader1)->Shader3(Shader2); // first pass
Shader4(Source); // second pass
Shader5(Source, Shader3, Shader4); // third pass
Shiandow
22nd December 2014, 11:27
Shiandow,
have thought a bit about it, so if I made support for simple script, that will look like in the example below, will it allow you to replace RenderScript part without changing your hlsl's ?
For example we have a shader pack of 5 hlsl scripts (Shader1.hlsl, Shader2.hlsl, Shader3.hlsl, Shader4.hlsl, Shader5.hlsl),
the default script generated would be one pass:
Shader1(Source)->Shader2(Shader1)->Shader3(Shader2)->Shader4(Shader3)->Shader5(Shader4);
but you can change it to something like this:
Shader1(Source)->Shader2(Shader1)->Shader3(Shader2); // first pass
Shader4(Source); // second pass
Shader5(Source, Shader3, Shader4); // third pass
Well, I'd need to be able to choose the sizes of the output of a shader. And for SuperRes I'm also using MPDN's internal scaling algorithms, but if you can use shaders and change their output size then it shouldn't be too hard to recreate those scaling algorithms.
Orf
22nd December 2014, 13:00
I see, something like Shader2(Shader1); ResizeOutput(2, 1); Shader3(Shader2);
where ResizeOutput(2, 1) will results in OutputImage.Width = 2 * InputImage.Width ?
Shiandow
22nd December 2014, 13:15
That notation is a bit ambiguous, does it resize the output of Shader2 or does it render Shader2 onto a larger texture? The latter is more important to have, but the former can also be convenient.
v0lt
22nd December 2014, 19:23
I ran from the archive YAP.exe and it without asking anything added context menu for folders. :mad:
Orf
23rd December 2014, 04:48
That notation is a bit ambiguous, does it resize the output of Shader2 or does it render Shader2 onto a larger texture? The latter is more important to have, but the former can also be convenient.
Yes, that was just first that comes to mind. I've meant that Shader3(Shader2) will be rendered at twice wider texture
v0lt,
uncheck "Explorer context menu entry" option and YAP will remove it. But if you only plan move executable to some other place, don't worry YAP will update path automatically
Orf
23rd December 2014, 04:48
That notation is a bit ambiguous, does it resize the output of Shader2 or does it render Shader2 onto a larger texture? The latter is more important to have, but the former can also be convenient.
Yes, that was just first that comes to mind. I've meant that Shader3(Shader2) will be rendered at twice wider texture
v0lt,
uncheck "Explorer context menu entry" option and YAP will remove it. But if you only plan move executable to some other place, don't worry YAP will update path automatically
madshi
23rd December 2014, 09:51
I'd need to be able to choose the sizes of the output of a shader. And for SuperRes I'm also using MPDN's internal scaling algorithms, but if you can use shaders and change their output size then it shouldn't be too hard to recreate those scaling algorithms.
JFMI: What do you need to scale for? I thought SuperRes would look at the original/unscaled image and at the final/scaled image and then post-process the scaled image, based on analyzing both images? Do you need to manually scale another time to make SuperRes work?
Shiandow
23rd December 2014, 13:38
JFMI: What do you need to scale for? I thought SuperRes would look at the original/unscaled image and at the final/scaled image and then post-process the scaled image, based on analyzing both images? Do you need to manually scale another time to make SuperRes work?
The basic idea behind SuperRes is to try to invert a downscaling algorithm, to do this it tries to minimize the difference between the original image and a downscaled version of the final image. If A and B are the the original and upscaled image and D is a downscaling operator, then you can minimize the "||A - D B||^2" (which measures the difference between the A and a downscaled version of B) by changing the amount pixel values of B by something like:
- D^t (A - D B)
Where D^t is the transpose of the downscaling operator, which (surprisingly) is the corresponding upscaling operator. For instance if D performs bicubic downscaling then D^t performs bicubic upscaling. This means that you can calculate this part by downscaling 'B', subtracting this from A and then upscaling this again. You could technically do this in only one go, but that is several orders of magnitude slower.
This method does effectively invert the downscaling operation, but is ill behaved. It will create lots of ringing and aliasing. To avoid that it is necessary to do some post-processing to remove those, but of course this may cause the image to deviate from the original again, so you have to correct that again. Anyway that goes back and forth a few times and (hopefully) converges onto a final image. In practice 2 times seems to be enough to get reasonable results.
madshi
24th December 2014, 11:49
Ok, so let me try to sum that up:
1) SuperRes needs access to the original image A and the upscaled image B.
2) SuperRes downscales B internally to the resolution of A.
3) SuperRes calculates the difference between A and B.
4) SuperRes upscaled the difference to the resolution of B.
5) SuperRes applies the upscaled difference to B.
Is that correct? I suppose the algorithms for steps 2) and 4) should be "identical" (e.g. both Bicubic AR)? Should they also be identical to the original upscaling algorithm used to upscale A to B? Or is that not necessary?
Shiandow
24th December 2014, 12:05
Ok, so let me try to sum that up:
1) SuperRes needs access to the original image A and the upscaled image B.
2) SuperRes downscales B internally to the resolution of A.
3) SuperRes calculates the difference between A and B.
4) SuperRes upscaled the difference to the resolution of B.
5) SuperRes applies the upscaled difference to B.
Is that correct? I suppose the algorithms for steps 2) and 4) should be "identical" (e.g. both Bicubic AR)? Should they also be identical to the original upscaling algorithm used to upscale A to B? Or is that not necessary?
Yeah, that's more or less correct. Although in the last step you should also do some post-processing (SuperRes currently does anti-aliasing, anti-ringing and some sharpening).
Anyway, according to the mathematics step 2) and 4) should have "identical" scaling algorithms, but in practice using a better algorithm for step 4) has far more benefit than using a better algorithm for 2). My current favorite combination is to use bilinear for downscaling and Gaussian for upscaling (low aliasing and ringing). In theory you can use whatever algorithm you want for the initial scaling of A to B, but it's generally better to use one without too much aliasing, NEDI is almost ideal in that regard.
madshi
24th December 2014, 12:15
Ok, thanks.
Anima123
24th December 2014, 23:38
Shiandow, NEDI doubles the resolution on both directions, does SuperRes with NEDI enabled need to do last step scaling in order to get the targeted rectangle, while the SuperRes without NEDI does not?
foxyshadis
25th December 2014, 02:18
Anima123, it looks like it hands off to the player/renderer/next in chain to make any final adjustments, like plain NEDI. Without NEDI it'll go direct to the output resolution (unless you have a weird chain and force something else), so no further resize should be done.
Shiandow, something I'm curious about with SuperRes: Once the algorithm is pretty locked in, will converting it to OpenCL make a big difference? Also, would you eventually be willing to make an AviSynth or VapourSynth filter out of it? (NEDI-based upsizing is definitely better than NNEDI for some things.) If not, at least having the code available makes it possible for others. It just keeps getting better, I really like how well it works!
Also, if you guys don't mind, I think it's best to split this discussion out of the YAP thread.
Shiandow
25th December 2014, 11:03
Shiandow, something I'm curious about with SuperRes: Once the algorithm is pretty locked in, will converting it to OpenCL make a big difference? Also, would you eventually be willing to make an AviSynth or VapourSynth filter out of it? (NEDI-based upsizing is definitely better than NNEDI for some things.) If not, at least having the code available makes it possible for others. It just keeps getting better, I really like how well it works!
Also, if you guys don't mind, I think it's best to split this discussion out of the YAP thread.
I don't think converting to OpenCL will make much difference. One of the main advantages of NEDI and SuperRes is that a pixel only depends on the pixels that immediately surround it, so it's pretty easy to do all the work with shaders. So far I'm not not planning to make an AviSynth or VapourSynth out of it. I had a quick look and it think would take me a lot of time to figure out how to use those shaders in either of them.
Anyway, this discussion is deviating quite a bit from the original topic so I agree that it would probably be better to move it to it's own thread.
Orf
26th December 2014, 04:41
Shiandow, to be completely sure
For SuperRes:
NEDI-pre -> <Upscale>-I -> <Upscale>-II -> SuperRes-pre -> SuperRes -> [SuperRes-inf -> SuperRes] -> NEDI-pst
Upscale means 2x upscale in both directions ? Where did final scaling should happen and what algorithm is used (better to use) for it ? And how did MPC-HC knew that it should reallocate and resize output texture on steps 2 and 3 ?
And can you please draw the same scheme for MPDN NEDI ?
Shiandow
26th December 2014, 14:36
Shiandow, to be completely sure
For SuperRes:
NEDI-pre -> <Upscale>-I -> <Upscale>-II -> SuperRes-pre -> SuperRes -> [SuperRes-inf -> SuperRes] -> NEDI-pst
Upscale means 2x upscale in both directions ? Where did final scaling should happen and what algorithm is used (better to use) for it ? And how did MPC-HC knew that it should reallocate and resize output texture on steps 2 and 3 ?
And can you please draw the same scheme for MPDN NEDI ?
That version of SuperRes is more of a proof of concept, it worked well enough but MPDN's version is nicer. In that version I got around the problem of allocating a new texture by abuseing the alpha channel, I think either "Nedi-pre" or "Upscale-I" stores the original image in the alpha channel and "SuperRes-pre" / "SuperRes-inf" downscale the image and store the difference with the original in the alpha channel. I only did this for the luma channel since the others didn't fit. The more complete MPDN diagram is something like:
/---------------------------------------\
| |
v |
Initial Guess ---> Downscale ---> Diff ---> SuperRes
^ ^
| |
Original --------------------------+-----------/
For clarity I've left out the various colour conversions. Basically I do downscaling in linear light and everything else in L*a*b.
For the NEDI shaders the diagram is something like:
NEDI-pre -> NEDI-I -> NEDI-II -> NEDI-pst
but in MPDN I could allocate new textures and did it as follows (the part in parentheses is the size of the resulting image).
Input (w,h)--->NEDI-Hinterleave (2w,h)--->NEDI-Vinterleave(2w,2h)
| ^ | ^
V | V |
NEDI-I (w,h)--------/ NEDI-II (2w,h)--------/
The NEDI-XInterleave shaders reshuffle the pixels of its two inputs resulting in an image that is either scaled 2x horizontally or 2x vertically. Doing it this way avoids some unnecessary calculations.
Orf
26th December 2014, 17:17
Shiandow, thank you very much, this is really helps.
I just wonder again what funny thing life is. The bunch of scripts on a first unenlightened glance hides a really big story beneath them.And I have to admit also you've got really impressing way to express your thoughts. Sometimes I've even remember long forgotten fillings when I was a student on a professors lections :)
Need some time to think it all over, and if you don't mind may be I'll ask you more later...
Orf
27th December 2014, 12:47
YAP 7.3 is out. Bug-fixing release mostly. The renderer was switched from D3D 10.1 to D3D 11 in this version because of upcoming shaders support. Please report if you have any problems in UI/video display areas
foxyshadis,
is this thread splitting thing was really necessary ? I think first two messages in new thread belongs to YAP thread as well as some other stuff there. And IMHO this new thread is starting from nowhere anyway (and probably will ends there too)...
foxyshadis
30th December 2014, 01:54
Well, it's your thread, I'll leave it then.
Orf
30th December 2014, 05:30
foxyshadis, thanks, I prefer it to stay here, 'cause it easier for me to analyze it this way
Orf
30th December 2014, 06:29
Shiandow, is following script syntax looks OK to you ?
; NEDI image doubler
; Copyright by Shiandow
Image1 = NEDI-I(InputImage, InputWidth, InputHeight);
Image2 = NEDI-HInterleave(InputImage, Image1, 2 * InputWidth, InputHeight);
Image3 = NEDI-II(Image2, 2 * InputWidth, InputHeight);
Image4 = NEDI-VInterleave(Image2, Image3, 2 * InputWidth, 2 * InputHeight);
OutputImage = Resize(Image4, OutputWidth, OutputHeight);
Shiandow
30th December 2014, 15:25
Yeah, that looks pretty good. It's pretty similar to how I wrote it with MPDN's Renderscript system, but somewhat more compact.
Orf
9th January 2015, 12:20
Shiandow, I think I've managed the way to support it. But other thing still bothers me. As far as I understand both MPDN and MPC-HC use built-in resizer shaders to do final resizing. YAP currently can do only linear filtering resizing. Will it ruin the output of NEDI image doubler or not ? And if so, what should I use instead ? I see your SuperRes pack includes Lanczos hlsl's. Can it be modified to do a general type resizing (not 2x) ?
p/s the general idea is not to use any hardcoded resize shaders, but to allow adding any resizer shaders via YAP interface as well as any other shader packs
Shiandow
9th January 2015, 13:20
Well, using bilinear resizing after using NEDI would be a bit of a shame, it would still be better than only using bilinear resizing but for optimal quality you should use a better resizer. There's no reason those resizers have to be hardcoded though, although it's pretty convenient if you don't have to write your own rescalers every time you need one.
Anyway, if you have some system that can support the operations needed to get NEDI to work, then that should also be enough to write scalers. You could adapt those shaders I included with SuperRes, but I think I've also have some other shaders lying around that could more easily be adapted into general upscalers. No downscalers though, I still haven't got round to making one; they require slightly more work.
Orf
9th January 2015, 13:59
>>Well, using bilinear resizing after using NEDI would be a bit of a shame
That's what I was afraid of
>>There's no reason those resizers have to be hardcoded though, although it's pretty convenient if you don't have to write your own rescalers every time you need one
May be it is, cause MPDN stores it resize shaders inside password protected zip archive for some reason. Don't know it is a sources or compiled ones
>> if you have some system that can support the operations needed to get NEDI to work
I do not have one. Currently I'm just trying to design and implement one
>>I think I've also have some other shaders lying around that could more easily be adapted into general upscalers
If you can give some example of such an general upscaler it will be very helpful on my current stage
Shiandow
9th January 2015, 15:24
Well here's two somewhat general upscalers. The first one scales the input by a factor of 1.5 horizontally and the second does so vertically. It first calculates the position 'pos' in pixels, and then interpolates the value at that position. Since it does horizontal and vertical scaling separately you can only change one coordinate of pos, you can however change that value to whatever you want. For fun try uncommenting "pos.x = pos.x*scale + 10*sin((tex.y + p0[2]/21)*2*acos(-1));" and "pos.y = pos.y*scale + 10*sin((tex.y + p0[2]/34)*2*acos(-1));"
You can make other upscalers by changing the definition of the "Weight" and "taps". I think MPDN and MadVR use precalculated weights, which might be faster if the weights are hard to calculate (like with Jinc), but could be slower if they are easy to calculate (as with Lanczos).
// -- Settings --
#define scaling lanczos
// -- Misc --
sampler s0 : register(s0);
float4 p0 : register(c0);
float2 p1 : register(c1);
#define width (p0[0])
#define height (p0[1])
#define px (p1[0])
#define py (p1[1])
// -- Scaling --
#define scale 1.5
#define bicubic 1
#define MN(B,C,x) (x <= 1.0 ? ((2-1.5*B-C)*x + (-3+2*B+C))*x*x + (1-B/3.) : (((-B/6.-C)*x + (B+5*C))*x + (-2*B-8*C))*x+((4./3.)*B+4*C))
#define MitchellNetravalli(x) (MN(1./3.,1./3.,abs(x)))
#define lanczos 2
#define pi (acos(-1))
#define sinc(x) (x == 0 ? 1 : sin(x)/(x))
#define Lanczos(x) (sinc(pi*abs(x))*sinc(pi*abs(x)/taps))
#if scaling == bicubic
#define taps 2
#define Weight MitchellNetravalli
#elif scaling == lanczos
#define taps 3
#define Weight Lanczos
#endif
// -- Input processing --
#define Get(x,y) (tex2D(s0,float2(px,py)*(pos + float2(x,y) + 0.5)))
// -- Main code --
float4 main(float2 tex : TEXCOORD0) : COLOR {
// Calculate position
float2 pos = (tex*p0.xy - 0.5);
pos.x /= scale;
// pos.x = pos.x*scale + 10*sin((tex.y + p0[2]/21)*2*acos(-1));
// Calculate offset
float offset = frac(pos.x);
pos.x -= offset;
//Scale image horizontally
float4 avg = 0;
float W = 0;
for (int x = -taps+1; x<=taps; x++)
{
float w = Weight(x-offset);
avg += Get(x,0)*w;
W += w;
}
return avg/W;
}
// -- Settings --
#define scaling lanczos
// -- Misc --
sampler s0 : register(s0);
float4 p0 : register(c0);
float2 p1 : register(c1);
#define width (p0[0])
#define height (p0[1])
#define px (p1[0])
#define py (p1[1])
// -- Scaling --
#define scale 1.5
#define bicubic 1
#define MN(B,C,x) (x <= 1.0 ? ((2-1.5*B-C)*x + (-3+2*B+C))*x*x + (1-B/3.) : (((-B/6.-C)*x + (B+5*C))*x + (-2*B-8*C))*x+((4./3.)*B+4*C))
#define MitchellNetravalli(x) (MN(1./3.,1./3.,abs(x)))
#define lanczos 2
#define pi (acos(-1))
#define sinc(x) (x == 0 ? 1 : sin(x)/(x))
#define Lanczos(x) (sinc(pi*abs(x))*sinc(pi*abs(x)/taps))
#if scaling == bicubic
#define taps 2
#define Weight MitchellNetravalli
#elif scaling == lanczos
#define taps 3
#define Weight Lanczos
#endif
// -- Input processing --
#define Get(x,y) (tex2D(s0,float2(px,py)*(pos + float2(x,y) + 0.5)))
// -- Main code --
float4 main(float2 tex : TEXCOORD0) : COLOR {
// Calculate position
float2 pos = (tex*p0.xy - 0.5);
pos.y /= scale;
// pos.y = pos.y*scale + 10*sin((tex.y + p0[2]/34)*2*acos(-1));
// Calculate offset
float offset = frac(pos.y);
pos.y -= offset;
//Scale image vertically
float4 avg = 0;
float W = 0;
for (int y = -taps+1; y<=taps; y++)
{
float w = Weight(y-offset);
avg += Get(0,y)*w;
W += w;
}
return avg/W;
}
Orf
9th January 2015, 18:17
Thanks, will give them a try tomorrow. But after the first look, a few questions, silly maybe. Based on what I've seen in your and JanWillem32 code.
1) Why width and height scaling should be doing as separate passes (steps) ?
2) I should change "define scale" to DstWidth/SrcWidth or DstHeight/SrcHeight respectively ? This will require to recompile the shader each time. Can we avoid this by defining constant buffer where I will pass DstWidth and DstHeight so shader can use them ? The same goes for bicubic vs lanczos setting
3) "You can make other upscalers by changing the definition of the "Weight" and "taps" ". This phrase is simply goes out of my understanding, sorry
Shiandow
9th January 2015, 20:53
1) It isn't necessary to do width and height scaling separately but it's faster. You could do it in one go, which would make the main loop look something like the following:
for (int X = -taps+1; X<=taps; X++)
for (int Y = -taps+1; Y<=taps; Y++) {
int2 XY = {X,Y};
Avg += Get(X,Y)*Weight(XY-offset);
W += Weight(XY-offset);
}
but this way you'll need to read (2*taps)*(2*taps) pixels, instead of (2*taps) + (2*taps), so doing it in 2 steps will generally be faster. However it isn't always possible to do it in two steps, the most important example is "Jinc" which can't be done in 2 steps, this is the reason that using Jinc in MadVR is so much slower than using Lanczos with the same number of taps.
2) You should indeed change "scale" to DstWidth/SrcWidth for the first shader and DstHeight/SrcHeight for the second one, and it is probably a good idea to use a constant buffer for this. Or you could put the dimensions of the textures in a constant buffer, and calculate "scale" from that. I'm not sure if it is a good idea to use a constant buffer to switch between lanczos and bicubic, if you're not careful the compiler will decide to calculate both and pick the correct one at the end, and to allow the optimizer to do it's job better it's probably a good idea to compile separate versions for lanczos and bicubic.
3) Perhaps this page (http://svn.int64.org/viewvc/int64/resamplehq/doc/kernels.html) will help, the thing I call "Weight" is what they call "sample weight" in their plot and "taps" is the maximal "sample distance" for which the "sample weight" isn't 0. For instance, bilinear is 0 when the sample distance is larger than 1 so the number of taps is 1. And the sample weight decreases linearly from 1 to 0 as the sample distance goes from 0 to 1, so the weight is given by: 1 - abs(x). You could then make a bilinear upscaler by taking the shaders I posted and redefining "Weight" and "taps" as follows:
#define Weight(x) 1 - abs(x)
#define taps 1
Orf
10th January 2015, 13:44
Shiandow, thanks again, and you was right, all seems to feet surprisingly well in the following scheme:
Shader pack definition file (Lanczos.spk):
; Lanczos resizer shader pack by Shiandow
#define PackType Resizer
Image1 = LanczosW(InputImage, OutputWidth, InputHeight);
OutputImage = LanczosH(Image1, OutputWidth, OutputHeight);
LanczosW.hlsl
// -- Misc --
sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 p2 : register(c2);
#define SrcWidth (p0[0])
#define SrcHeight (p0[1])
#define px (p1[0])
#define py (p1[1])
#define DstWidth (p2[0])
#define DstHeight (p2[1])
// -- Scaling --
#define scale DstWidth / SrcWidth
#define pi (acos(-1))
#define sinc(x) (x == 0 ? 1 : sin(x)/(x))
#define Lanczos(x) (sinc(pi*abs(x))*sinc(pi*abs(x)/taps))
#define taps 3
#define Weight Lanczos
// -- Input processing --
#define Get(x,y) (tex2D(s0,float2(px,py)*(pos + float2(x,y) + 0.5)))
// -- Main code --
float4 main(float2 tex : TEXCOORD0) : COLOR {
// Calculate position
float2 pos = (tex*p0.xy - 0.5);
pos.x /= scale;
// pos.x = pos.x*scale + 10*sin((tex.y + p0[2]/21)*2*acos(-1));
// Calculate offset
float offset = frac(pos.x);
pos.x -= offset;
//Scale image horizontally
float4 avg = 0;
float W = 0;
for (int x = -taps+1; x<=taps; x++)
{
float w = Weight(x-offset);
avg += Get(x,0)*w;
W += w;
}
return avg/W;
}
LanczosH.hlsl
Omitted. The same principals used as in LanczosW.hlsl
P/S Need to do a lot of code changes and testing to give more feedback... Can take some time...
Orf
14th January 2015, 07:52
Shiandow, about this upscalers vs downscalers thing. Did you meant that lanczos is no good for downscaling at all ? Or you meant there's better algorithms for that, but it can be used too ? If image processing chain should have abilities to use different shader packs for upscaling/downscaling/pre resizing/post resizing, this will result in pretty complex scheme that user will have to setup in the end. How do you think, is this setup can be simplified to use fixed upscale=pre resize, downscale=post resize shader pack applying scheme ?
Shiandow
14th January 2015, 16:01
No I just find downscalers slightly more annoying because you're no longer summing a fixed number of pixels. Anyway, you can use lanczos for downscaling, although most people seem to prefer mitchell-netravalli or bicubic. I agree that you can get quite a complicated scheme if you need to configure every processing step, but I don't really know a good way around that, having good defaults will probably help.
Orf
15th January 2015, 07:01
Since I'm kind of out of tune on the theme myself, I can only try to make some constructor for adding custom shaders or shader packs. Defaults, when it seems most everyone have different preferences ? I simply don't know them... May it will be better if I'll make some preview version that shows my vision on how that constructor should look like, care to take a look, try to add some shader code may be, and discuss it then ?
Shiandow
15th January 2015, 15:26
If you have an idea for what it should look then of course I could have a look at it. Picking sensible defaults is probably not that difficult, I think it will be harder to allow people to do understand how to do anything that isn't the default. MPDN's renderscripts have a similar problem, it's very hard to make clear how and when to use which processing.
Orf
16th January 2015, 04:48
Yes, and I hope this interface will be ready soon. And before it will be released, just want you too look at it critically, may be I've missed something important, may be it can be improved to be more clear from end user point of view. And yes, I've tried to look on how it is done in MPDN, and can't even get a clear picture on how it supposed to work...
Anima123
17th January 2015, 02:30
I'd say putting Siandow's diagram as part of the setting interface would be great.
Orf
22nd January 2015, 10:08
Anima123, why do you want this ? I think diagram is not a part of shader setting process from user perspective. Its only might be interesting for shader pack developers
Orf
24th January 2015, 09:18
Shiandow, I think the 0.7.4 is ready for preview , PM'ed you the details
Finally YAP 0.8 is out. The changes is mostly about adding image processing support, but not limited to it
leeperry
8th July 2016, 00:09
Great, spasibo!
Long story short it can now dsplay pictures and upscale them with NNEDI3?
Both pictures and video, yes.
Default image processing config for pictures:
nnedi3(64 neurons for luma and chroma)(if needed) + Super-XBR(if needed) + (lanczos3 for upscale or Catmull-Rom for downscale) + Adaptive sharpen
Default image processing config for video:
nnedi3(64 neurons for luma, lanczos3 for chroma)(if needed) + (lanczos3 for upscale or Catmull-Rom for downscale) + Adaptive sharpen
Anima123
8th July 2016, 18:43
Orf, since YAP has it's unique configuration interface different from others, would you please share with me how to configure YAP to use madVR as renderer and how to bring madVR's configure window?
And when using madVR, how's the image processing will be applied?
May be it looks confusing at first sight, but options are divided in two parts. One part resides in Options item of Main menu navigator (F8). Main menu is also mirrored in right click popup menu. This is done this way, cause this part is available in full screen mode.
More complex options resides is in advanced options window (Alt+O) and not available in navigator
So, you can switch renderers in Main menu/options/DirectShow/Video renderer. You can even assign a shortcut for this action in Advanced options/Hotkeys and switch renderers via keyboard
All directshow filters (including madVR), that appears in current graph listed in Main menu/DirectShow filters. This is where you can activate their option dialogs (property pages)
You can configure all image processing settings in Advanced options/Image processing. You should choose madVR in Source combo box in your case. But do not expect much, cause it is limited comparing to other sources
leeperry
26th July 2016, 13:03
w00t, sounds like a plan thanks!
but when I open it on my x86 W7SP1 + HD7850(13.12 drivers) I get http://thumbnails115.imagebam.com/49688/d3f57e496873117.jpg (http://www.imagebam.com/image/d3f57e496873117)
and the x86 version gets a bunch of false positive on www.virustotal.com
leeperry, I've never tried it with Amd cards, and unfortunately I do not have one right now, so it is hard to say exactly what this error is about. Can you try x64 version or with Nvidia card ?
About false positives, both x86 and x64 exes are packed. But there's no sense to scan packed data. Look like some AVs simply can't unpack exe and instead of simply say so start to make a 'guesses'. Funny thing that all three 'guesses' are different
leeperry
27th July 2016, 13:12
Thanks for the reply but no can do as I run x86 W7SP1. That's too bad coz I really wanted to try the NNEDI3 picture viewer :(
AMD would appear to run 25% of users machines on STEAM and nvidia only 56% (http://store.steampowered.com/hwsurvey) so maybe it would make sense that you would get YAP to work on AMD too if any possible please? :o
What are those commands that were not supported anyway? Do I need something like C# runtimes or something?
Of course I'll try to make it work and thanks for the report. I'm just saying it may take some time. YAP is not written in C#. It do not required any runtimes at all, C++, C# or others. But since image processing was added it required DX11 to function properly. What missing in your case is not even the whole DX11 runtime but one of its interfaces. Ms docs didn't say a word about it is video driver dependent, but it looks like it does...
huhn
27th July 2016, 17:15
it is working fine on my R9 270
leeperry
27th July 2016, 17:25
it is working fine on my R9 270
13.12 drivers? w10?
huhn
27th July 2016, 20:00
windows 10 14xxx and 16.7.x
leeperry
27th July 2016, 20:28
I wasn't able to have kb2670838 installed so maybe that's my problem =/
Thanks huhn, it is good to know it works with Amd too, like it should in theory
leeperry, so this is DX11 issue, installing platform update may help with it. Why you can't do it ?
leeperry
28th July 2016, 12:55
not sure, same story as this guy and I've tried everything I could think of: http://superuser.com/questions/1055827/why-am-i-not-able-to-apply-the-update-kb2670838-to-my-computer
oh well, NNEDI3 picture viewer be gone then :o
Don't give up too soon, I'll try to put in workaround for this issue anyway. But since you've reported it a bit later (after 8.1 was started) you'll have to wait for 8.1 release to test it
YAP 0.8.5 released. Brief list of changes
New options dialog
Navigator text attributes
Per-display options and UI scaling
madVR fullscreen exclusive mode support
Support for bluray menus and DsLibBluray filter
Support for YouTube links and 3DYD Youtube Source filter
Various changes and bugfixes
madshi
3rd March 2017, 11:16
Support for bluray menus and DsLibBluray filter
Very cool!
I was already wondering why none of the current media players supported that yet...
hubblec4
3rd March 2017, 12:25
Hi Orf
I want try out your player, but after a doublick on the exe (32 or 64 bit) nothing happens. Only a transparent window(only the frame) is shown.
The player window can be moved but you see nothing. In the taskbar is YAP shown and with mouse-right click I have access to the options.
But nothing will work.
(Win7 64 bit ClassicMode)
hubble
nevcairiel
3rd March 2017, 12:28
Very cool!
I was already wondering why none of the current media players supported that yet...
Because its relatively high amount of work to do it perfectly just to view forced trailers and commercials before the movie. :p
madshi
3rd March 2017, 12:38
Well, yes. But many users still want it. It can be useful for series, or for watching extras in an organized manner. I know I want it.
And when using libBluRay, of course nothing is "forced", anymore, but everything can be skipped.
hubblec4
3rd March 2017, 13:02
There are other players with good/full support of BD/DVD menu...
Well, yes. But many users still want it. It can be useful for series, or for watching extras in an organized manner. I know I want it.
Commercial menus are sometimes horrible. Prohibited user options, not skippable trailers or another useless stuff.
Have a look to VLC: it supports Matroska-DVD menu and Matroska Native menu
@hubblec4
Did ClassicMode means desktop composition (Aero) is disabled ?
Very cool!
I was already wondering why none of the current media players supported that yet...
It is a bit raw, have some issues and there's no 64 version of filter, but I agree, still sometimes interesting to glance on how BD menu look likes
Well, yes. But many users still want it. It can be useful for series, or for watching extras in an organized manner. I know I want it.
Actually YAP have it own BDMV parser, and you can switch all available BD playlists after import. So libBluRay is never activated until you execute 'Disc menu' command (Alt+M)
hubblec4
3rd March 2017, 16:20
@hubblec4
Did ClassicMode means desktop composition (Aero) is disabled ?
Yes, Aero id disabled.
@hubblec4
Enabling Aero makes a difference ?
hubblec4
3rd March 2017, 19:21
Mmh, sorry I don't want change my desktop settings, cause many settings have to reset after changing.
I would tested it on my VM Win8, but YAP crashes befor starting.
Mmh, sorry I don't want change my desktop settings, cause many settings have to reset after changing.
I would tested it on my VM Win8, but YAP crashes befor starting.
Thanks for the reports. I think I've found a fix for Win7 issue, but anyway YAP requires desktop composition (Aero) to be enabled to display video correctly. And imho enabling Aero did not change any of your desktop settings, only visual look
About VM Win8, can your post link to screenshot on some external server ? (Picture approval may last long here)
hubblec4
4th March 2017, 12:37
..., but anyway YAP requires desktop composition (Aero) to be enabled to display video correctly.
Ok, thats sounds not so good, other players work well with ClassicMode.
And imho enabling Aero did not change any of your desktop settings, only visual look
In Win7 with ClassicMode, I have never activated AERO, and I'm not sure that is it possible.
About VM Win8, can your post link to screenshot on some external server ? (Picture approval may last long here)
When I click on " YAP_Win8.JPG " an extra tab open with the picture.
Ok, thats sounds not so good, other players work well with ClassicMode.
There's reasons for that
In Win7 with ClassicMode, I have never activated AERO, and I'm not sure that is it possible.
To do that in CP/Personalization simply select 'Windows 7' Aero theme and then 'Classic' theme to go back
When I click on " YAP_Win8.JPG " an extra tab open with the picture.
Probably 'cause you post it. Others see 'Attachment approval' and no link to 'YAP_Win8.JPG' until admins check your picture
leeperry
4th March 2017, 21:06
when I open it on my x86 W7SP1 + HD7850(13.12 drivers) I get http://thumbnails115.imagebam.com/49688/d3f57e496873117.jpg (http://www.imagebam.com/image/d3f57e496873117)
Thanks for the new build but still no workee on the same rig: http://thumbnails117.imagebam.com/53622/bad2d4536213326.jpg (http://www.imagebam.com/image/bad2d4536213326)
leeperry, looks like 'workaround' I've put for your issue didn't work too. Can you redownload and check another one ?
leeperry
5th March 2017, 13:50
Sure thing but still no dice: http://thumbnails117.imagebam.com/53632/e1721a536318819.jpg (http://www.imagebam.com/image/e1721a536318819)
leeperry, definitely your system is not the place where you can run something easily :p
Download updated once again, I expect this build will at least start
leeperry
6th March 2017, 12:34
Mucho Spasibo but still a no-go: http://thumbnails117.imagebam.com/53649/ee142c536484296.jpg (http://www.imagebam.com/image/ee142c536484296)
Hmm, next DirectX/video driver related issue. Do you have latest DirectX/video driver installed on your machine?
p/s Can you try to install this one? (https://www.microsoft.com/en-us/download/details.aspx?id=8109)
leeperry
6th March 2017, 19:04
Already got it installed, just reinstalled it but that didn't change anything.
What I lack is the W7SP1 Platform update as it refuses to install.
Is it a way to check 'W7SP1 Platform update' is installed ? I want to make sure it is the show-stopper
p/s Can you locate the d3d11.dll file inside windows\system32\ folder, right click and report the file version ? It should be in 6.x.xxxx.xxxxx format
leeperry
7th March 2017, 14:10
Sure, it's 6.1.7601.17514
You was right about Platform update. 6.1.7601.17514 is version SP1 installs. On my test Win7 system it's 6.2.9200.16570 and that is version Platform update installs.
Unfortunately, unlike missing interface issue I've solved in my code, there's no way to solve this one. I've updated release once more, but you can only check if it gives your a message about Platform update instead of a crash.
You must somehow find a way to install Platform update.
YAP 0.8.5.65 released. This release fixes broken video preview, EVR CP issues and addresses some other bugs found since previous release
grayson
3rd April 2017, 08:06
I will try this one today with my new DVD.
Thanks.
difficult affiliate marketing (http://magentotarget.weebly.com/blog/how-difficult-is-affiliate-marketing)
magentotarget (http://magentotarget.weebly.com)
Matching_Mole
8th April 2017, 11:05
I tried YAP 0.8.5 (with anydvd hd) to play a blu-ray but unfortunately I failed, whatever I did. But as I'm not used to the interface, maybe I did something wrong. By the way, maybe more straightforward menu entries ("Play a file" and "Play a disc") would be a great addition to the player.
I tried first to import the mpls and the m2ts files of the movie to the playlist of YAP but it didn't work (i used BDinfo to know the correct files). So I used "import folder" to import all the blu-ray files and I succed to have all the mpls in the YAP playlist. I tried to play the main file but I had an error message ("SQLite: unknown error").
http://img4.hostingpics.net/thumbs/mini_85009420170408113906NavWnd.png (http://www.hostingpics.net/viewer.php?id=85009420170408113906NavWnd.png)
I tried also to run the menu disc and after a long time of running, I got a crash of YAP with this message:
http://img4.hostingpics.net/thumbs/mini_25381020170408113808NavWnd.png (http://www.hostingpics.net/viewer.php?id=25381020170408113808NavWnd.png)
Using VLC I have the menus and the playback easily and with MPC I have the playback easily also.
I tried with several blu-ray, I got each time the same result. I'm using Win 7 64x updated, YAP 32bit (because I plan to use reclock if I succed to use YAP) and the last version of LAV filters, Madvr, dsLibBluray and dsLibDVDNav
@Matching_Mole, thanks for reporting back
About the first error, can you show me the error stack trace ? To do so, open message panel (M key), press enter to switch it to debug log view, locate and copy error trace from there (this view shows only last two sessions of YAP so it is mainly useful exactly after error is happens). Or alternative way, press Ctrl+D to open debug log in notepad and locate the error message there
About the second one, I'm not quite sure what can cause it. Did it happen when you click at the scrollbar on a same playlist ?
By the way, maybe more straightforward menu entries ("Play a file" and "Play a disc") would be a great addition to the player
May be, but I'm not sure it will be so. It is not quite like other players, I agree. Actually YAP plays contents of its library (DB). So logically you should import at least once your files to library. Then you can play it without open any files or disc.
And you was right, for BD your should use import folder, this imports all playable BD contents. For most other medias import folder will do too
Matching_Mole
8th April 2017, 19:05
@Orf
Here, as requested, the extract of the debug screen for the first issue(SQL related error):
http://img4.hostingpics.net/thumbs/mini_65590320170408195148NavWnd.png (http://www.hostingpics.net/viewer.php?id=65590320170408195148NavWnd.png)
For the second issue, I just right-clicked and, in "Additional control", I selected "Disc Menu".
Regarding the possible additional menu entries, I understand your view for the video files. But for disc files (DVD and Blu-ray), as they are by nature temporary, a more straightforward way could be very helpful.
Thanks, the bug in #167 and second one from #165 successfully located and fixed. This should fix a native BD playback for you
But I think we got at least two more issues:
1) First one form #165 "SQLite: unknown error" is different from the one in #167 "SQLite: syntax error". Can you locate it stack trace using Ctrl+D and searching for "SQLite: unknown error" in Notepad, so I can fix it as well ?
2) The issue when you can't start Bluray menu is most likely dsLibBluray related. It got nothing to do with YAP native way of playing BD's. Native way uses LAV source which is far more reliable then when dsLibBluray source is used. Did YAP stays in 'Busy' (displays red status icon in taskbar) mode after Disc menu is clicked ? Also, dsLibBluray installation have its own test player, you can check if it can play your BD
Regarding the possible additional menu entries, I understand your view for the video files. But for disc files (DVD and Blu-ray), as they are by nature temporary, a more straightforward way could be very helpful.
If you talking about additional 'Import disc' entry' this is not currently available, but there's some things you can do about it:
Activate 'Autoplay after import' option
Import it into temporary playlist (if you don't want YAP to save it permanently)
Activate explorer context menu and import from there
Drag and drop from explorer will do it too
Matching_Mole
9th April 2017, 15:45
:
1) First one form #165 "SQLite: unknown error" is different from the one in #167 "SQLite: syntax error". Can you locate it stack trace using Ctrl+D and searching for "SQLite: unknown error" in Notepad, so I can fix it as well ?
Here the extract from the log regardint the SQL unknow error:
08.04.2017 11:38:51.001 SQLite: near ",": syntax error
Stack trace:
TPlaylist.CheckMediaFilename 2322
TPlaylist.Play 2890
TPlaylist.PlayPause 2919
TMainWnd.PlayPauseExecute 2495
TNavigatorExecutor.OnWork 6627
08.04.2017 11:39:01.139 FullscreenMode.Execute
08.04.2017 11:39:02.101 Resize(1920, 1200) 947 ms
08.04.2017 11:39:04.592 PlayPause.Execute
08.04.2017 11:39:04.645 SQLite: unknown error
Stack trace:
TPlaylist.CheckMediaFilename 2322
TPlaylist.Play 2890
TPlaylist.PlayPause 2919
TMainWnd.PlayPauseExecute 2495
TNavigatorExecutor.OnWork 6627
It seems related to the previous error (#167). As indicated in the log, I have first the SQL syntax error, I try to click again on a file from the playlist and then I have the SQL unknown message.
:
2) The issue when you can't start Bluray menu is most likely dsLibBluray related.
I used the demo player coming with dsLibBluray and it works instantly with no issue with the same blu-ray. When I try again with YAP, YAP keeps permanently busy.
Thanks, look likes it's not even related, but both are the same error. Strange why SQLite gives different messages for each. And also I can simulate disc menu issue, it not dsLibBluray related as I've thought, it is just consequent to the first error. Even found another related bug, that not happens in your case. All this bugs happens only when BD is played directly from disc drive. Will release updated version soon
Matching_Mole
9th April 2017, 20:15
Great, thank you very much Orf!
Orf
10th April 2017, 13:41
YAP 0.8.5.70 released
Matching_Mole, pls confirm if it fixes all of your issues
p/s If your playlist is not temporary one, do not forget to clear it and reimport your disk
Matching_Mole
10th April 2017, 19:08
YAP 0.8.5.70 released
Matching_Mole, pls confirm if it fixes all of your issues
p/s If your playlist is not temporary one, do not forget to clear it and reimport your disk
Great news, all seems to work now, either the playback and the menu! Thank you very much for that!!!
Just, I noted that if I use the bluray menu feature, YAP switch automatically to EVR even if I selected Madvr as renderer and when I launch the movie, YAP remains in EVR. As Madvr is far better than EVR, this is pretty annoying for me.
And again, maybe it's just me but I feel all the process to import the blu-ray files into the player's playlist should be more transparent and need too many actions for the user.
Please, let me know if I can help you any further. Thank you very much again for your player.
Orf
10th April 2017, 20:04
Great news, all seems to work now, either the playback and the menu! Thank you very much for that!!!
Yes, now I can go further with other things again :)
I noted that if I use the bluray menu feature, YAP switch automatically to EVR even if I selected Madvr as renderer and when I launch the movie, YAP remains in EVR. As Madvr is far better than EVR, this is pretty annoying for me
Even it's not YAP fault, I need to explain why this happens. dsLibBluray requires video renderer to support multiple input pins. Unfortunately current madVR do not support it. As far as I know madshi aware of it, so he may add support for it some day or may not, I don't know. Also YAP should change renderer back to madVR when you leave disc menu (pressing Alt+M again). But if you start movie from bluray menu it is still played using dsLibBluray setup with EVR CP. It is not a native way to play BDs which use LAV source instead of dsLibBluray, supports both renderers and switching between them any time.
So recommended usage for bluray menu feature (and that's why I've implement it) is only to glance on how's menu look like. After that you can leave menu along and play BD using native way. Playlist/chapter navigation and stream switching is built in, so you don't losing much. Also dsLibBluray can't played all BDs correctly, do not have 64bit version, so this feature is limited in many ways
And again, maybe it's just me but I feel all the process to import the blu-ray files into the player's playlist should be more transparent and need too many actions for the user
May be you can suggest on how to do it? Currently I have no ideas. I may add import drive dialog for example, as I've said earlier, but you didn't answer is that what you want or may be your want something else ?
Please, let me know if I can help you any further
Any feedback helps to understand how others use it, so feel free to comment it more ;)
YAP 0.9.0.44 released, finally
This release is mostly about brand-new tree-view style playlist but also includes some other enhancements and fixes. See readme.txt inside .zip for the detailed list of changes
I've recently update Nvidia drivers to 397.64 on my Win10 1803 system, and find out that YAP crashes or hang with it. Rollback to previous 390.77 driver completely solved this for me. Look likes it's related to the fact that MS introduced WDDM 2.4 in 1803 and 397.64 also adds support for it. Does anyone else experience this bug? And may be have found a better workaround?
YAP 0.9.0.50 released
This release adds workaround for Win10 1803 with latest Nvidia drivers crash/hang, broken image slideshow and some other minor fixes
Also, first post images were updated to reflect new playlist look
Orf
7th August 2018, 10:28
The project is now have home page (https://orfsoft.net) and forum (https://orfsoft.net/forum).
suanm
7th August 2018, 13:48
Downloading.....
Anima123
7th August 2018, 19:48
The project is now have home page (https://orfsoft.net) and forum (https://orfsoft.net/forum).
Just registered to your forum but no activation e-mail received yet.
Edit: Never mind, it arrived later.
Orf
8th August 2018, 06:59
@Anima123
Congrats, you're the first! Able to write something?
Anima123
10th August 2018, 02:10
@Anima123
Congrats, you're the first! Able to write something?
I am not be able to write a post in your forum. Tried it yesterday, but it didn't showed yet.
Orf
10th August 2018, 09:17
My bad, you've got it answered now
Anima123
11th August 2018, 07:29
Orf, is this a known issue that I cannot successfully import video file when using YAP under windows 10 64-bit?
If it is, how can I solve it?
Orf
11th August 2018, 09:32
Anima123, no it is not. Import should run just fine in Win10 and any other supported OS. And even if it is not, it should give the error message, you can locate it in Navigator message panel (M key). What do you see there? And also did this happens with all of your videos or only with some specific video format maybe?
Anima123
11th August 2018, 19:40
There's no specific messages. Importing of video just failed silently.
BTW, I am under restricted windows account as I used to be.
Orf
12th August 2018, 07:47
Anima123, I still have not enough info, so I can tell you what exactly happened. Pls do the following: start player, import your file using Ctrl-F. Import your file again using Ctrl-O. Open message panel (M), copy and paste here all the messages. In the message panel press Enter and copy an paste debug log here too.
Anima123
12th August 2018, 20:54
Just tried drag&drop a video to YAP and it worked. However, YAP doesn't respond to neither Ctrl-F nor Ctrl-O importing under windows 10 1803 for me.
Orf
13th August 2018, 08:38
Well, at least something is working for your. I do not understand what 'doesn't respond' means. Did you see file/folder selection dialog when you press Ctrl-F or Ctrl-O ? Did you see it, when your click Import files/folders from right click menu? And if your do, what happened next?
Anima123
13th August 2018, 17:46
Did you see file/folder selection dialog when you press Ctrl-F or Ctrl-O ? Did you see it, when your click Import files/folders from right click menu? And if your do, what happened next?
The files/folders did show up, there's just nothing happened when I press 'import' button.
Orf
13th August 2018, 20:32
Ok, this part works too. After that, did you see at least 'Import started...' and 'Import completed. 0 item(s) were added.' messages in Message panel?
Anima123
13th August 2018, 20:35
Ok, this part works too. After that, did you see at least 'Import started...' and 'Import completed. 0 item(s) were added.' messages in Message panel?
No, just 'Playlist Main Loaded' message there.
Orf
13th August 2018, 20:52
Anima123, as I ask you before, please show me debug log after import fails
Anima123
13th August 2018, 21:20
It 'magically' became normal now. I guess that it's due to the restricted account that I am using.
When I logged as Administrator and re-installed LAV-Filters and returned to the regular account, everything is fine.
Orf
16th August 2018, 11:01
Anima123, just tested import under restricted account, just in case, but everything worked as expected.
I do not think LAV-Filters re-install helped you. Those two thing are not related.
Also there's no magic or myth, you probably change something else in your system setup, something you either didn't noticed or just didn't tell us.
Orf
7th September 2018, 08:47
YAP 0.9.2 is now available. This release adds support for DVB broadcast. Was only being tested with DVB-C system, but might work with DVB-T and DVB-S systems as well.
Anima123
7th September 2018, 22:01
Your site seems offline? I got 502 bad gateway errors when trying to download the new version.
Orf
8th September 2018, 07:47
No, works fine for me. Did anyone else experience problems with site access?
huhn
8th September 2018, 08:44
works fine for me.
Anima123
8th September 2018, 20:22
No, works fine for me. Did anyone else experience problems with site access?
Works after several minutes I wrote the post.
Orf
5th October 2018, 09:52
So, did anyone tried it yet with DVB-T/T2 or DVB-S and what the results are?
Unfortunately, I do not have any providers broadcasting those to test it myself.
Therefore, I'm very interesting in people feedback.
Orf
14th November 2018, 10:46
YAP 0.9.3 is now available. This release is mainly focused on a user interface improvements and fixes.
List of changes (https://orfsoft.net/en/history/#v0-9-3)
Download (https://orfsoft.net/en/download/)
Orf
7th December 2018, 10:00
YAP 0.9.4 is now available.
List of changes (https://orfsoft.net/en/history/#v0-9-4)
Download (https://orfsoft.net/en/download/)
Orf
27th December 2018, 11:15
Installer for YAP 0.9.4 has been added to the download (https://orfsoft.net/en/download/) section.
Installer is recommended for most users, because it contains DirectShow filter pack and allow YAP to play most media formats without any further user actions. Filter pack includes filters like LAV, DirectVobSub, madVR, dsLibDVDNav and is intended for YAP internal use only. Installer do not register any filter from the pack and therefore will not ruin any existing filter registration on your system.
Happy New Year, everybody :)
Orf
12th March 2019, 13:27
YAP 0.9.5 is now available. x32 installer is now available as well.
List of changes (https://orfsoft.net/en/history/#v0-9-5)
Download (https://orfsoft.net/en/download/)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.