Welcome, Guest. Please Login or Register
Home Help Search Login Register
Page Index Toggle Pages: 1
Send Topic Print
Need help: Loading up my own tonemapping dll (Read 7214 times)
srinathh
Junior Member
**
Offline


I love HDR

Posts: 7
Need help: Loading up my own tonemapping dll
01/16/10 at 11:12:41
 
Hi,

I have Been taking the sdk for a spin. The Exposure tonemap example compiles & works perfectly and I've been able to replace the tonemapping code in MExpTmo::onTonemap with other code that works in Picturenaut. Cool!

[b][u]Question 1:[/u][/b]
I've been running into problems in getting a dll file of my own to work with picturenaut. I started out by modifying the MExpTmo project, class & filenames & project properties to generate a different dll file.

However, it simply doesn't show up in Picturenaut Tonemapper's list. To trace what's happening, I added a bunch of printfs that show the function names in the plugin-class functions & captured what it wrote to STDOUT by re-directing to a text file

Here's the output i got in the sequence of functions as my DLL file loaded up in Picturenaut-

[code]
in getPlugInName
Trying to initPlugin
in constructor of tmofactory
Looks ok- tmofactory built
In getTonemapFactoryHandle
In getTonemapClassName
In getTonemapClassName
[/code]
So the dll seems to seems to run ok till it encoutners getTonemapClassName

Now - looking @ the example MExpTmo code - here's this function returns as the tonemap class name "pn::PNExpTMO".  I couldn't find this function name referred to anywhere else in the code :-(

so what is the function & what should go in here in a customized tonemap dll? My guess is this is where i'm getting stuck.

Here's the full function -
[code]pn_pcchar
MExpTmoPlugIn::getTonemapClassName() const {
  return pn_text("pn::PNExpTmo");
} // MExpTmoPlugIn::getPlugInName
[/code]


[b][u]Question 2:[/u] [/b]
In the plugin code, I found a static global tonemapping plugin object called expTmoPlugIn getting created that doesn't seem to be referred to anywhere else in the code.
Could you tell me what role does this object play & could it be related in any way to not being able to load a different dll? Here's the code...
[code]
static MExpTmoPlugIn expTmoPlugIn;
[/code]

[b][u]Question 3:[/u][/b]
In the poster, it's mentioned that "unless specified" picturenaut serves imagebuffers in tiles to enable multithreaded operation. Is there a way to turn this off & get the full image at a go?

[b][u]Potential addition to Documentatio[/u]n[/b]
While compiling my dll, i found that the MExpTmo by default has the exported functions at these ordinals while mine didn't for some reason.

Specifying it in the def file like this seemed to solve the problem of having the functions at the right ordinals.
[code]
  getPlugInHandles @1
  getPlugInClass @3
  getPlugInVersion @2
[/code]

[b][u]Tonemap dialog feature request:[/u] [/b]
It would be great to have a way for a tonemap plugin to specify default settings for things like "Automatic lum", "Automatic contrast" and "Gamma" that work best for the plugin. This would give a good "initial" picture to the user who could change it as he wants. I've seen this affect the "initial" picture from some of the existing plugins as well

Regards
Srinath
Back to top
« Last Edit: 01/19/10 at 11:27:34 by srinathh »  
 
IP Logged
 
srinathh
Junior Member
**
Offline


I love HDR

Posts: 7
Re: Need help: Loading up my own tonemapping dll
Reply #1 - 01/16/10 at 11:16:15
 
sorry - the forum software seems to be changing "colon P" to a smiley - where ever there's a tounge sticking out smiley in the code - it's "colon P"

Smiley
Back to top
 
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1716
Hollywood
Re: Need help: Loading up my own tonemapping dll
Reply #2 - 01/19/10 at 08:57:19
 
Only Marc can give you the answer, but if you use the forum's code tag it will not smilify anything. That's the # symbol in the posting toolbar.
Back to top
 
WWW  
IP Logged
 
srinathh
Junior Member
**
Offline


I love HDR

Posts: 7
Re: Need help: Loading up my own tonemapping dll
Reply #3 - 01/19/10 at 11:23:33
 
Thanks for the tip! Cleaned up my question Smiley

I also found there's a small check box which says "Check this if you'll be adding code (or don't like smilies)." - checking it also seems to prevent the forum software from adding smileys
Back to top
 
 
IP Logged
 
srinathh
Junior Member
**
Offline


I love HDR

Posts: 7
Figured out answer to Question 3
Reply #4 - 01/20/10 at 06:57:39
 
Hi,

Have figured out the answer to question 3 - on how to serve the full image as a go to the tonemapper rather than as Tiles.

Essentially we need to over-ride the SetupActionPipeline function in the Tonemapper class and make it specify the dimensions of the whole image as size of the tile.

Here's the code in case anyone needs it -
Code:
bool MExpTmo::setupActionPipeline(pn::PNActionPipeline &actionPipeline,
int imageIndex,
pn::PPNImageBuffer pInputImage,
pn::PPNImageBuffer pOutputImage,
void *pUserParam,
pn_pcchar pGroupName,
pn::PFNACTION finalAction) {
int options = pOutputImage ? pn::AEO_DEFAULT :pn::AEO_PROVIDE_OUTPUT_BUFFER;
  pn::PNImageBufferList images;

  images.resize(pOutputImage ? 2 : 1);
  images[0] = *pInputImage;
  if (pOutputImage) {
    images[1] = *pOutputImage;
  } // if

  pnt::_PNSIZE pTileSize;

  pTileSize.cx = pInputImage->getWidth();
  pTileSize.cy = pInputImage->getHeight();

  actionPipeline.addDrawingAction(images, finalAction,
                                  pUserParam, pGroupName,
                                  options,0,0,&pTileSize);
  return true;
} // PNTonemap::setupActionPipeline
 



Wonder if there's a way to do this on the fly - ie a slider in the tonemap dialog that can vary tile size & overlap in realtime Smiley

cheers
srinath
Back to top
 
 
IP Logged
 
Blochi
Administrator
*****
Offline



Posts: 1716
Hollywood
Re: Need help: Loading up my own tonemapping dll
Reply #5 - 01/20/10 at 08:40:54
 
Well, but for a local tonmapper you should definitely consider the tiles on the opposite left/right edge. That way a seamless 360 panorama can stay seamless.

I'm glad you're hacking away. Looks like you intimidated Marc with that list of questions. Wink
Back to top
 
WWW  
IP Logged
 
Marc
Moderator
*****
Offline


Curious Apprentice

Posts: 100
Hamburg
Re: Need help: Loading up my own tonemapping dll
Reply #6 - 01/24/10 at 14:07:14
 
Hi srinathh,

thank you for using the Picturenaut SDK.

I'll try to answer all your questions.

1. The class name, for example 'PNExpTMO', is a unique name for a tonemap plug-in. If you build your own plug-in, you must specify a different name. Thats all.

I'll explain later in the SDK documentation the backgrounds.

2. Look in the file 'pnplugin.cpp' and the the 171 of the CTOR. All plug-ins are derived from 'PNPlugIn'. The CTOR connects 'this' to a list of plug-in instances. A plug-in list is local for one DLL. You can also see that it is possible to create multiple plug-ins for one DLL.

3. Yes, you can do it in this way Wink
But remember that the multi-core support is practically turned off when the whole image is given as a tile. In addition, support for large images is also disabled. Unless you have a 64-bit version of Picturenaut. But the 64-bit version is not yet there.

I hope I could help a little.

Marc

Back to top
 
WWW  
IP Logged
 
davidb
Senior Member
****
Offline


Irritant

Posts: 264
UK
Re: Need help: Loading up my own tonemapping dll
Reply #7 - 12/09/10 at 21:21:24
 
I thought I would hijack this thread rather than start a new one, as it already contains some of the information I'm after Smiley

I started playing with the tone mapping example last week.

What I am thinking of doing is porting a version of my bilateral filter/contrast enhancement algorithm to picturenaut.  This takes HDR tiles as input and produces HDR output. 

I'm not interested in tone mapping as such, as the output of the contrast enhancement process is passed to a global TM algorithm and you already have the main ones covered.  You get more flexibility by just doing the contrast step.

I guess my question is which class do I derive from?  The output of tone mapping plugins seem to be normalised after processing*, but I haven't found where yet.

Any tips, or maybe a general purpose filter example?

*determined by passing out some absurd values and seeing what happened.
Back to top
 
WWW davidb  
IP Logged
 
Marc
Moderator
*****
Offline


Curious Apprentice

Posts: 100
Hamburg
Re: Need help: Loading up my own tonemapping dll
Reply #8 - 12/09/10 at 23:09:06
 
You must derive from StandardPlugIn. Then the method 'getPlugInTypeName' must return the string "tonemap" or "filter". Sorry that I haven't any example code for now. The reason is that the actual SDK is too new to bring out many examples that do not work any more in the next SDK version.

For the comming SDK several things have changed. In particular the names of the classes have changed. They don't have any prefixes and there is only one namespace 'pnsdk'. Unicode 16 support was discarded. Because it's a Windows (tm) relict and has a lot of disadvantages I don't want list them all. The new SDK only supports UTF-8 because it is most flexible and most portable. To port existing code to the new SDK, it usually takes only a global name change for the SDK classes. And with the new SDK, there will be more examples.
Back to top
 
WWW  
IP Logged
 
davidb
Senior Member
****
Offline


Irritant

Posts: 264
UK
Re: Need help: Loading up my own tonemapping dll
Reply #9 - 12/10/10 at 08:43:17
 
How close is the new SDK?  Would it be better for me to wait?
Back to top
 
WWW davidb  
IP Logged
 
Page Index Toggle Pages: 1
Send Topic Print