<div dir="ltr"><div>Same result.<br><br></div>The code:<br>

<p style="margin:0px;text-indent:0px"><br></p>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">GDALDriver</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">*</span>poDriver<span style="color:rgb(100,100,130)">  </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>GetGDALDriverManager<span style="color:rgb(207,191,173)">()-></span>GetDriverByName<span style="color:rgb(207,191,173)">(</span><span style="font-weight:600">pszFormat</span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><br></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">if</span><span style="color:rgb(207,191,173)">(!</span>poDriver<span style="color:rgb(207,191,173)">)</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>cerr<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"Driver</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="font-weight:600">pszFormat</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">couldn't</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">be</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">loaded."</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>endl<span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(128,139,237)">return</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">-</span><span style="color:rgb(240,173,109)">4</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">}</span></pre>
<pre style="margin:0px;text-indent:0px"><br></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="font-weight:600">poDstDS</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>poDriver<span style="color:rgb(207,191,173)">-></span>Create<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(100,100,130)"> </span>auxfilepath<span style="color:rgb(207,191,173)">.</span>string<span style="color:rgb(207,191,173)">().</span>c_str<span style="color:rgb(207,191,173)">(),(</span><span style="color:rgb(128,139,237)">int</span><span style="color:rgb(207,191,173)">)</span>width<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(128,139,237)">int</span><span style="color:rgb(207,191,173)">)</span>height<span style="color:rgb(207,191,173)">,</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">                                </span>numbands<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(203,110,203)">GDT_Byte</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span>papszOptions<span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><br></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">if</span><span style="color:rgb(207,191,173)">(</span><span style="font-weight:600">poDstDS</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">==</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">NULL</span><span style="color:rgb(207,191,173)">)</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">{</span></pre><br><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>cerr<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"Failure</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">when</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">creating</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">output</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">orthoimage</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>auxfilepath<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>endl<span style="color:rgb(207,191,173)">;</span>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span><span style="color:rgb(128,139,237)">return</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">-</span><span style="color:rgb(240,173,109)">5</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(207,191,173)">}</span></pre><br><span style="color:rgb(128,139,237)">if</span><span style="color:rgb(207,191,173)">(</span>filepath<span style="color:rgb(207,191,173)">.</span>extension<span style="color:rgb(207,191,173)">()</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">==</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">".jpg"</span><span style="color:rgb(207,191,173)">)</span>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(128,139,237)">char</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">**</span>papszOptions2<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">NULL</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(128,139,237)">for</span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(128,139,237)">unsigned</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(128,139,237)">int</span><span style="color:rgb(100,100,130)"> </span>b<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(240,173,109)">0</span><span style="color:rgb(207,191,173)">;</span><span style="color:rgb(100,100,130)"> </span>b<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">RGBRasterBands</span><span style="color:rgb(207,191,173)">::</span><span style="font-weight:600">NUMBANDS</span><span style="color:rgb(207,191,173)">;</span><span style="color:rgb(100,100,130)"> </span>b<span style="color:rgb(207,191,173)">++)</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span><span style="color:rgb(128,139,237)">char</span><span style="color:rgb(207,191,173)">*</span><span style="color:rgb(100,100,130)"> </span>opts<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(128,139,237)">char</span><span style="color:rgb(207,191,173)">*)</span><span style="color:rgb(100,100,130)"> </span>malloc<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(240,173,109)">1024</span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span>sprintf<span style="color:rgb(207,191,173)">(</span>opts<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"%p"</span><span style="color:rgb(207,191,173)">,&</span><span style="font-weight:600">abyRasters</span><span style="color:rgb(207,191,173)">[</span>b<span style="color:rgb(207,191,173)">]);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span>papszOptions2<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>CSLSetNameValue<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(100,100,130)"> </span>papszOptions2<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"DATAPOINTER"</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span>opts<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span><span style="font-weight:600">poDstDS</span><span style="color:rgb(207,191,173)">-></span><span style="font-style:italic">AddBand</span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(203,110,203)">GDT_Byte</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span>papszOptions2<span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">            </span>free<span style="color:rgb(207,191,173)">(</span>opts<span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(207,191,173)">}</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">}</span></pre>
<pre style="margin:0px;text-indent:0px"><br></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(205,139,0)">//jpeg</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(205,139,0)">write</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(205,139,0)">test:</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">char</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">**</span>papszOptions2<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">NULL</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span>papszOptions2<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>CSLSetNameValue<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(100,100,130)"> </span>papszOptions2<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"QUALITY"</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"40"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>cout<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"Copying</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">to</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>filepath<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>endl<span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">GDALDriver</span><span style="color:rgb(207,191,173)">*</span><span style="color:rgb(100,100,130)"> </span>jpegDriver<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>GetGDALDriverManager<span style="color:rgb(207,191,173)">()-></span>GetDriverByName<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"JPEG"</span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">GDALDataset</span><span style="color:rgb(207,191,173)">*</span><span style="color:rgb(100,100,130)"> </span>jpeg_ds<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>jpegDriver<span style="color:rgb(207,191,173)">-></span>CreateCopy<span style="color:rgb(207,191,173)">(</span>filepath<span style="color:rgb(207,191,173)">.</span>string<span style="color:rgb(207,191,173)">().</span>c_str<span style="color:rgb(207,191,173)">(),</span><span style="color:rgb(100,100,130)"> </span><span style="font-weight:600">poDstDS</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(128,139,237)">false</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span>papszOptions2<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span>GDALDummyProgress<span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">NULL</span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">if</span><span style="color:rgb(207,191,173)">(</span>jpeg_ds<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">==</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">NULL</span><span style="color:rgb(207,191,173)">)</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>cout<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"Failure</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">when</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">creating</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">output</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">orthoimage</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>filepath<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>endl<span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">        </span><span style="color:rgb(128,139,237)">return</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">-</span><span style="color:rgb(240,173,109)">5</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">}</span></pre><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 6, 2016 at 2:58 PM, Even Rouault <span dir="ltr"><<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Monday 06 June 2016 14:53:46 Pol Monsó Purtí wrote:<br>
> Let's jump to particulars, at the end, the code.<br>
><br>
> If I set the DATAPOINTER to NULL the program crashes at CreateCopy with<br>
> access violation. Same if I set it to the datapointer to &abyRaster[0] and<br>
> add the remaining two bands.<br>
<br>
</span>Use the Create() method of GDALDriver with 0 bands and no options. I'm not<br>
sure how Open() and AddBand() play together.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> The abyRasters are initialized to white color with memset. SO this piece of<br>
> code should give me a white jpg square of widthxheight. I could set a<br>
> complete MWE if necessary.<br>
><br>
> And, the code:<br>
><br>
>         char* filename = (char*) malloc(1024);<br>
><br>
>         sprintf(filename, "MEM:::DATAPOINTER=%p,PIXELS=%d,LINES=%d,BANDS=0",<br>
><br>
>                 NULL, width, height);<br>
><br>
>         poDstDS = (GDALDataset *) GDALOpen(filename,GA_Update);<br>
><br>
><br>
>         free(filename);<br>
><br>
><br>
>         for(unsigned int b = 0; b < RGBRasterBands::NUMBANDS; b++)<br>
><br>
>         {<br>
><br>
>             //assert(sizeof(long) == sizeof(void*));<br>
><br>
>             const void * address = static_cast<const void*>(&abyRasters[b]);<br>
><br>
>             std::stringstream ss;<br>
><br>
>             ss << address;<br>
><br>
>             const char * datapointer = ss.str().c_str();<br>
><br>
>             std::cout << "datapointer: " << datapointer << std::endl;<br>
><br>
>             papszOptions = CSLSetNameValue( papszOptions,<br>
> "DATAPOINTER", datapointer );<br>
><br>
>             poDstDS->AddBand(GDT_Byte, papszOptions);<br>
><br>
><br>
>         }<br>
><br>
>         char **papszOptions2 = NULL;<br>
><br>
>         papszOptions2 = CSLSetNameValue( papszOptions2, "QUALITY", "40" );<br>
><br>
><br>
>         std::cout << "Copying to " << filepath << std::endl;<br>
><br>
>         GDALDriver* jpegDriver =<br>
> GetGDALDriverManager()->GetDriverByName("JPEG");<br>
><br>
>         GDALDataset* jpeg_ds =<br>
> jpegDriver->CreateCopy(filepath.string().c_str(), poDstDS, false,<br>
> papszOptions2, GDALDummyProgress, NULL);<br>
><br>
>         if(jpeg_ds == NULL)<br>
><br>
>         {<br>
><br>
>             std::cout << "Failure when creating output orthoimage " <<<br>
> filepath << std::endl;<br>
><br>
>             return -5;<br>
><br>
>         }<br>
><br>
> The abyRasters are allocated with<br>
><br>
>         for(int b = 0; b < RGBRasterBands::NUMBANDS; b++)<br>
>         {<br>
>             abyRasters.push_back(new<br>
> GByte[rasterMemoryDimensions.width*rasterMemoryDimensions.height]());<br>
><br>
> memset(&abyRasters[b][0],QuickDrop::NODATAVALUE,sizeof(GByte)*rasterMemoryD<br>
> imensions.width*rasterMemoryDimensions.height); }<br>
><br>
><br>
> On Mon, Jun 6, 2016 at 12:35 PM, Pol Monsó Purtí <<a href="mailto:lluna.nova@gmail.com">lluna.nova@gmail.com</a>><br>
><br>
> wrote:<br>
> > Just one more question,<br>
> ><br>
> > If i set the option BAND=0, what should the DATAPOINTER be? Does it become<br>
> > optional?<br>
> ><br>
> > Cheers<br>
> ><br>
> > On Mon, Jun 6, 2016 at 10:55 AM, Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>><br>
> ><br>
> > wrote:<br>
> >> On Monday 06 June 2016 10:45:47 Pol Monsó Purtí wrote:<br>
> >> > THanks Mateusz,<br>
> >> ><br>
> >> > You're right. I'm trying it as we speak.<br>
> >> ><br>
> >> > In my case I have a std::vector<GByte*> of the 3 bands, where the<br>
> >> > GByte*<br>
> >> > are allocated in the heap with new GByte[width*height]. I guess that<br>
> >><br>
> >> won't<br>
> >><br>
> >> > work because the three bands have to be one single memory chunk, am I<br>
> >> > right? I guess the only solution is to switch to single band float and<br>
> >> > merge rgb to float. I'd prefer not having to refactor the rest of the<br>
> >><br>
> >> code.<br>
> >><br>
> >> > Is it possible to have a different address for each band?<br>
> >><br>
> >> Yes, create a dataset with 0 band and then add each band with the<br>
> >> GDALDataset::AddBand() method<br>
> >><br>
> >> See <a href="http://gdal.org/frmt_mem.html" rel="noreferrer" target="_blank">http://gdal.org/frmt_mem.html</a> :<br>
> >> """The MEM format is one of the few that supports the AddBand() method.<br>
> >> The<br>
> >> AddBand() method supports DATAPOINTER, PIXELOFFSET and LINEOFFSET options<br>
> >> to<br>
> >> reference an existing memory array."""<br>
> >><br>
> >> > All this is to support jpg as output. All the operations are done in my<br>
> >> > GByte array and it's only at the end that I create the dataset and<br>
> >><br>
> >> image.<br>
> >><br>
> >> > At the moment I create a Tiff and finally createcopy to jpg.<br>
> >> ><br>
> >> > On Fri, Jun 3, 2016 at 9:10 PM, Mateusz Loskot <<a href="mailto:mateusz@loskot.net">mateusz@loskot.net</a>><br>
> >><br>
> >> wrote:<br>
> >> > > On 3 June 2016 at 20:45, Pol Monsó Purtí <<a href="mailto:lluna.nova@gmail.com">lluna.nova@gmail.com</a>><br>
> >><br>
> >> wrote:<br>
> >> > > > I've seen this mysterious article <a href="http://www.gdal.org/frmt_mem.html" rel="noreferrer" target="_blank">http://www.gdal.org/frmt_mem.html</a><br>
> >> > ><br>
> >> > > which<br>
> >> > ><br>
> >> > > > references the `DATAPOINTER` option. I've seen another reference<br>
> >> > > > [here](<br>
> >> > ><br>
> >> > > <a href="https://lists.osgeo.org/pipermail/gdal-dev/2006-November/010583.html" rel="noreferrer" target="_blank">https://lists.osgeo.org/pipermail/gdal-dev/2006-November/010583.html</a>)<br>
> >> > ><br>
> >> > > > which does<br>
> >><br>
> >> sprintf(filename,"MEM:::DATAPOINTER=%d,PIXELS=%d,LINES=%d,BANDS=1,DATATYP<br>
> >> E<br>
> >><br>
> >><br>
> >> =%d,PIXELOFFSET=0,LINEOFFSET=0,BANDOFFSET=0",datpt,pixels,lines,datatype)<br>
> >> ;><br>
> >><br>
> >> > > >     dataset = GDALOpen(filename,GA_Update);<br>
> >> > > ><br>
> >> > > > How would this translate to c++?<br>
> >> > ><br>
> >> > > The line above is valid C++, isn't it.<br>
> >> > > If you followed to Frank's answer [1], you'd see it slightly<br>
> >> > > corrected<br>
> >> > > but the technique remains the same.<br>
> >> > ><br>
> >> > > [1]<br>
> >><br>
> >> <a href="https://lists.osgeo.org/pipermail/gdal-dev/2006-November/010603.html" rel="noreferrer" target="_blank">https://lists.osgeo.org/pipermail/gdal-dev/2006-November/010603.html</a><br>
> >><br>
> >> > > Best regards,<br>
> >> > > --<br>
> >> > > Mateusz Loskot, <a href="http://mateusz.loskot.net" rel="noreferrer" target="_blank">http://mateusz.loskot.net</a><br>
> >><br>
> >> --<br>
> >> Spatialys - Geospatial professional services<br>
> >> <a href="http://www.spatialys.com" rel="noreferrer" target="_blank">http://www.spatialys.com</a><br>
<br>
--<br>
Spatialys - Geospatial professional services<br>
<a href="http://www.spatialys.com" rel="noreferrer" target="_blank">http://www.spatialys.com</a><br>
</div></div></blockquote></div><br></div>