Home | History | Annotate | Download | only in turbojpeg
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      2 <!-- NewPage -->
      3 <html lang="en">
      4 <head>
      5 <title>YUVImage</title>
      6 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
      7 </head>
      8 <body>
      9 <script type="text/javascript"><!--
     10     try {
     11         if (location.href.indexOf('is-external=true') == -1) {
     12             parent.document.title="YUVImage";
     13         }
     14     }
     15     catch(err) {
     16     }
     17 //-->
     18 </script>
     19 <noscript>
     20 <div>JavaScript is disabled on your browser.</div>
     21 </noscript>
     22 <!-- ========= START OF TOP NAVBAR ======= -->
     23 <div class="topNav"><a name="navbar_top">
     24 <!--   -->
     25 </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
     26 <!--   -->
     27 </a>
     28 <ul class="navList" title="Navigation">
     29 <li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
     30 <li class="navBarCell1Rev">Class</li>
     31 <li><a href="package-tree.html">Tree</a></li>
     32 <li><a href="../../../deprecated-list.html">Deprecated</a></li>
     33 <li><a href="../../../index-all.html">Index</a></li>
     34 <li><a href="../../../help-doc.html">Help</a></li>
     35 </ul>
     36 </div>
     37 <div class="subNav">
     38 <ul class="navList">
     39 <li><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
     40 <li>Next Class</li>
     41 </ul>
     42 <ul class="navList">
     43 <li><a href="../../../index.html?org/libjpegturbo/turbojpeg/YUVImage.html" target="_top">Frames</a></li>
     44 <li><a href="YUVImage.html" target="_top">No Frames</a></li>
     45 </ul>
     46 <ul class="navList" id="allclasses_navbar_top">
     47 <li><a href="../../../allclasses-noframe.html">All Classes</a></li>
     48 </ul>
     49 <div>
     50 <script type="text/javascript"><!--
     51   allClassesLink = document.getElementById("allclasses_navbar_top");
     52   if(window==top) {
     53     allClassesLink.style.display = "block";
     54   }
     55   else {
     56     allClassesLink.style.display = "none";
     57   }
     58   //-->
     59 </script>
     60 </div>
     61 <div>
     62 <ul class="subNavList">
     63 <li>Summary:&nbsp;</li>
     64 <li>Nested&nbsp;|&nbsp;</li>
     65 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
     66 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
     67 <li><a href="#method_summary">Method</a></li>
     68 </ul>
     69 <ul class="subNavList">
     70 <li>Detail:&nbsp;</li>
     71 <li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
     72 <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
     73 <li><a href="#method_detail">Method</a></li>
     74 </ul>
     75 </div>
     76 <a name="skip-navbar_top">
     77 <!--   -->
     78 </a></div>
     79 <!-- ========= END OF TOP NAVBAR ========= -->
     80 <!-- ======== START OF CLASS DATA ======== -->
     81 <div class="header">
     82 <div class="subTitle">org.libjpegturbo.turbojpeg</div>
     83 <h2 title="Class YUVImage" class="title">Class YUVImage</h2>
     84 </div>
     85 <div class="contentContainer">
     86 <ul class="inheritance">
     87 <li>java.lang.Object</li>
     88 <li>
     89 <ul class="inheritance">
     90 <li>org.libjpegturbo.turbojpeg.YUVImage</li>
     91 </ul>
     92 </li>
     93 </ul>
     94 <div class="description">
     95 <ul class="blockList">
     96 <li class="blockList">
     97 <hr>
     98 <br>
     99 <pre>public class <span class="strong">YUVImage</span>
    100 extends java.lang.Object</pre>
    101 <div class="block">This class encapsulates a YUV planar image and the metadata
    102  associated with it.  The TurboJPEG API allows both the JPEG compression and
    103  decompression pipelines to be split into stages:  YUV encode, compress from
    104  YUV, decompress to YUV, and YUV decode.  A <code>YUVImage</code> instance
    105  serves as the destination image for YUV encode and decompress-to-YUV
    106  operations and as the source image for compress-from-YUV and YUV decode
    107  operations.
    108  <p>
    109  Technically, the JPEG format uses the YCbCr colorspace (which technically is
    110  not a "colorspace" but rather a "color transform"), but per the convention
    111  of the digital video community, the TurboJPEG API uses "YUV" to refer to an
    112  image format consisting of Y, Cb, and Cr image planes.
    113  <p>
    114  Each plane is simply a 2D array of bytes, each byte representing the value
    115  of one of the components (Y, Cb, or Cr) at a particular location in the
    116  image.  The width and height of each plane are determined by the image
    117  width, height, and level of chrominance subsampling.  The luminance plane
    118  width is the image width padded to the nearest multiple of the horizontal
    119  subsampling factor (2 in the case of 4:2:0 and 4:2:2, 4 in the case of
    120  4:1:1, 1 in the case of 4:4:4 or grayscale.)  Similarly, the luminance plane
    121  height is the image height padded to the nearest multiple of the vertical
    122  subsampling factor (2 in the case of 4:2:0 or 4:4:0, 1 in the case of 4:4:4
    123  or grayscale.)  The chrominance plane width is equal to the luminance plane
    124  width divided by the horizontal subsampling factor, and the chrominance
    125  plane height is equal to the luminance plane height divided by the vertical
    126  subsampling factor.
    127  <p>
    128  For example, if the source image is 35 x 35 pixels and 4:2:2 subsampling is
    129  used, then the luminance plane would be 36 x 35 bytes, and each of the
    130  chrominance planes would be 18 x 35 bytes.  If you specify a line padding of
    131  4 bytes on top of this, then the luminance plane would be 36 x 35 bytes, and
    132  each of the chrominance planes would be 20 x 35 bytes.</div>
    133 </li>
    134 </ul>
    135 </div>
    136 <div class="summary">
    137 <ul class="blockList">
    138 <li class="blockList">
    139 <!-- =========== FIELD SUMMARY =========== -->
    140 <ul class="blockList">
    141 <li class="blockList"><a name="field_summary">
    142 <!--   -->
    143 </a>
    144 <h3>Field Summary</h3>
    145 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
    146 <caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
    147 <tr>
    148 <th class="colFirst" scope="col">Modifier and Type</th>
    149 <th class="colLast" scope="col">Field and Description</th>
    150 </tr>
    151 <tr class="altColor">
    152 <td class="colFirst"><code>protected long</code></td>
    153 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#handle">handle</a></strong></code>&nbsp;</td>
    154 </tr>
    155 <tr class="rowColor">
    156 <td class="colFirst"><code>protected int</code></td>
    157 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvHeight">yuvHeight</a></strong></code>&nbsp;</td>
    158 </tr>
    159 <tr class="altColor">
    160 <td class="colFirst"><code>protected int[]</code></td>
    161 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvOffsets">yuvOffsets</a></strong></code>&nbsp;</td>
    162 </tr>
    163 <tr class="rowColor">
    164 <td class="colFirst"><code>protected int</code></td>
    165 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvPad">yuvPad</a></strong></code>&nbsp;</td>
    166 </tr>
    167 <tr class="altColor">
    168 <td class="colFirst"><code>protected byte[][]</code></td>
    169 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvPlanes">yuvPlanes</a></strong></code>&nbsp;</td>
    170 </tr>
    171 <tr class="rowColor">
    172 <td class="colFirst"><code>protected int[]</code></td>
    173 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvStrides">yuvStrides</a></strong></code>&nbsp;</td>
    174 </tr>
    175 <tr class="altColor">
    176 <td class="colFirst"><code>protected int</code></td>
    177 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvSubsamp">yuvSubsamp</a></strong></code>&nbsp;</td>
    178 </tr>
    179 <tr class="rowColor">
    180 <td class="colFirst"><code>protected int</code></td>
    181 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#yuvWidth">yuvWidth</a></strong></code>&nbsp;</td>
    182 </tr>
    183 </table>
    184 </li>
    185 </ul>
    186 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
    187 <ul class="blockList">
    188 <li class="blockList"><a name="constructor_summary">
    189 <!--   -->
    190 </a>
    191 <h3>Constructor Summary</h3>
    192 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
    193 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
    194 <tr>
    195 <th class="colOne" scope="col">Constructor and Description</th>
    196 </tr>
    197 <tr class="altColor">
    198 <td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#YUVImage(byte[][],%20int[],%20int,%20int[],%20int,%20int)">YUVImage</a></strong>(byte[][]&nbsp;planes,
    199         int[]&nbsp;offsets,
    200         int&nbsp;width,
    201         int[]&nbsp;strides,
    202         int&nbsp;height,
    203         int&nbsp;subsamp)</code>
    204 <div class="block">Create a new <code>YUVImage</code> instance from a set of existing image
    205  planes.</div>
    206 </td>
    207 </tr>
    208 <tr class="rowColor">
    209 <td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#YUVImage(byte[],%20int,%20int,%20int,%20int)">YUVImage</a></strong>(byte[]&nbsp;yuvImage,
    210         int&nbsp;width,
    211         int&nbsp;pad,
    212         int&nbsp;height,
    213         int&nbsp;subsamp)</code>
    214 <div class="block">Create a new <code>YUVImage</code> instance from an existing unified image
    215  buffer.</div>
    216 </td>
    217 </tr>
    218 <tr class="altColor">
    219 <td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#YUVImage(int,%20int[],%20int,%20int)">YUVImage</a></strong>(int&nbsp;width,
    220         int[]&nbsp;strides,
    221         int&nbsp;height,
    222         int&nbsp;subsamp)</code>
    223 <div class="block">Create a new <code>YUVImage</code> instance backed by separate image
    224  planes, and allocate memory for the image planes.</div>
    225 </td>
    226 </tr>
    227 <tr class="rowColor">
    228 <td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#YUVImage(int,%20int,%20int,%20int)">YUVImage</a></strong>(int&nbsp;width,
    229         int&nbsp;pad,
    230         int&nbsp;height,
    231         int&nbsp;subsamp)</code>
    232 <div class="block">Create a new <code>YUVImage</code> instance backed by a unified image
    233  buffer, and allocate memory for the image buffer.</div>
    234 </td>
    235 </tr>
    236 </table>
    237 </li>
    238 </ul>
    239 <!-- ========== METHOD SUMMARY =========== -->
    240 <ul class="blockList">
    241 <li class="blockList"><a name="method_summary">
    242 <!--   -->
    243 </a>
    244 <h3>Method Summary</h3>
    245 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
    246 <caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
    247 <tr>
    248 <th class="colFirst" scope="col">Modifier and Type</th>
    249 <th class="colLast" scope="col">Method and Description</th>
    250 </tr>
    251 <tr class="altColor">
    252 <td class="colFirst"><code>byte[]</code></td>
    253 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getBuf()">getBuf</a></strong>()</code>
    254 <div class="block">Returns the YUV image buffer (if this image is stored in a unified
    255  buffer rather than separate image planes.)</div>
    256 </td>
    257 </tr>
    258 <tr class="rowColor">
    259 <td class="colFirst"><code>int</code></td>
    260 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getHeight()">getHeight</a></strong>()</code>
    261 <div class="block">Returns the height of the YUV image (or subregion.)</div>
    262 </td>
    263 </tr>
    264 <tr class="altColor">
    265 <td class="colFirst"><code>int[]</code></td>
    266 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getOffsets()">getOffsets</a></strong>()</code>
    267 <div class="block">Returns the offsets (in bytes) of each plane within the planes of a larger
    268  YUV image.</div>
    269 </td>
    270 </tr>
    271 <tr class="rowColor">
    272 <td class="colFirst"><code>int</code></td>
    273 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getPad()">getPad</a></strong>()</code>
    274 <div class="block">Returns the line padding used in the YUV image buffer (if this image is
    275  stored in a unified buffer rather than separate image planes.)</div>
    276 </td>
    277 </tr>
    278 <tr class="altColor">
    279 <td class="colFirst"><code>byte[][]</code></td>
    280 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getPlanes()">getPlanes</a></strong>()</code>
    281 <div class="block">Returns the YUV image planes.</div>
    282 </td>
    283 </tr>
    284 <tr class="rowColor">
    285 <td class="colFirst"><code>int</code></td>
    286 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getSize()">getSize</a></strong>()</code>
    287 <div class="block">Returns the size (in bytes) of the YUV image buffer (if this image is
    288  stored in a unified buffer rather than separate image planes.)</div>
    289 </td>
    290 </tr>
    291 <tr class="altColor">
    292 <td class="colFirst"><code>int[]</code></td>
    293 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getStrides()">getStrides</a></strong>()</code>
    294 <div class="block">Returns the number of bytes per line of each plane in the YUV image.</div>
    295 </td>
    296 </tr>
    297 <tr class="rowColor">
    298 <td class="colFirst"><code>int</code></td>
    299 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getSubsamp()">getSubsamp</a></strong>()</code>
    300 <div class="block">Returns the level of chrominance subsampling used in the YUV image.</div>
    301 </td>
    302 </tr>
    303 <tr class="altColor">
    304 <td class="colFirst"><code>int</code></td>
    305 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#getWidth()">getWidth</a></strong>()</code>
    306 <div class="block">Returns the width of the YUV image (or subregion.)</div>
    307 </td>
    308 </tr>
    309 <tr class="rowColor">
    310 <td class="colFirst"><code>void</code></td>
    311 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#setBuf(byte[][],%20int[],%20int,%20int[],%20int,%20int)">setBuf</a></strong>(byte[][]&nbsp;planes,
    312       int[]&nbsp;offsets,
    313       int&nbsp;width,
    314       int[]&nbsp;strides,
    315       int&nbsp;height,
    316       int&nbsp;subsamp)</code>
    317 <div class="block">Assign a set of image planes to this <code>YUVImage</code> instance.</div>
    318 </td>
    319 </tr>
    320 <tr class="altColor">
    321 <td class="colFirst"><code>void</code></td>
    322 <td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html#setBuf(byte[],%20int,%20int,%20int,%20int)">setBuf</a></strong>(byte[]&nbsp;yuvImage,
    323       int&nbsp;width,
    324       int&nbsp;pad,
    325       int&nbsp;height,
    326       int&nbsp;subsamp)</code>
    327 <div class="block">Assign a unified image buffer to this <code>YUVImage</code> instance.</div>
    328 </td>
    329 </tr>
    330 </table>
    331 <ul class="blockList">
    332 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
    333 <!--   -->
    334 </a>
    335 <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
    336 <code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
    337 </ul>
    338 </li>
    339 </ul>
    340 </li>
    341 </ul>
    342 </div>
    343 <div class="details">
    344 <ul class="blockList">
    345 <li class="blockList">
    346 <!-- ============ FIELD DETAIL =========== -->
    347 <ul class="blockList">
    348 <li class="blockList"><a name="field_detail">
    349 <!--   -->
    350 </a>
    351 <h3>Field Detail</h3>
    352 <a name="handle">
    353 <!--   -->
    354 </a>
    355 <ul class="blockList">
    356 <li class="blockList">
    357 <h4>handle</h4>
    358 <pre>protected&nbsp;long handle</pre>
    359 </li>
    360 </ul>
    361 <a name="yuvPlanes">
    362 <!--   -->
    363 </a>
    364 <ul class="blockList">
    365 <li class="blockList">
    366 <h4>yuvPlanes</h4>
    367 <pre>protected&nbsp;byte[][] yuvPlanes</pre>
    368 </li>
    369 </ul>
    370 <a name="yuvOffsets">
    371 <!--   -->
    372 </a>
    373 <ul class="blockList">
    374 <li class="blockList">
    375 <h4>yuvOffsets</h4>
    376 <pre>protected&nbsp;int[] yuvOffsets</pre>
    377 </li>
    378 </ul>
    379 <a name="yuvStrides">
    380 <!--   -->
    381 </a>
    382 <ul class="blockList">
    383 <li class="blockList">
    384 <h4>yuvStrides</h4>
    385 <pre>protected&nbsp;int[] yuvStrides</pre>
    386 </li>
    387 </ul>
    388 <a name="yuvPad">
    389 <!--   -->
    390 </a>
    391 <ul class="blockList">
    392 <li class="blockList">
    393 <h4>yuvPad</h4>
    394 <pre>protected&nbsp;int yuvPad</pre>
    395 </li>
    396 </ul>
    397 <a name="yuvWidth">
    398 <!--   -->
    399 </a>
    400 <ul class="blockList">
    401 <li class="blockList">
    402 <h4>yuvWidth</h4>
    403 <pre>protected&nbsp;int yuvWidth</pre>
    404 </li>
    405 </ul>
    406 <a name="yuvHeight">
    407 <!--   -->
    408 </a>
    409 <ul class="blockList">
    410 <li class="blockList">
    411 <h4>yuvHeight</h4>
    412 <pre>protected&nbsp;int yuvHeight</pre>
    413 </li>
    414 </ul>
    415 <a name="yuvSubsamp">
    416 <!--   -->
    417 </a>
    418 <ul class="blockListLast">
    419 <li class="blockList">
    420 <h4>yuvSubsamp</h4>
    421 <pre>protected&nbsp;int yuvSubsamp</pre>
    422 </li>
    423 </ul>
    424 </li>
    425 </ul>
    426 <!-- ========= CONSTRUCTOR DETAIL ======== -->
    427 <ul class="blockList">
    428 <li class="blockList"><a name="constructor_detail">
    429 <!--   -->
    430 </a>
    431 <h3>Constructor Detail</h3>
    432 <a name="YUVImage(int, int[], int, int)">
    433 <!--   -->
    434 </a>
    435 <ul class="blockList">
    436 <li class="blockList">
    437 <h4>YUVImage</h4>
    438 <pre>public&nbsp;YUVImage(int&nbsp;width,
    439         int[]&nbsp;strides,
    440         int&nbsp;height,
    441         int&nbsp;subsamp)</pre>
    442 <div class="block">Create a new <code>YUVImage</code> instance backed by separate image
    443  planes, and allocate memory for the image planes.</div>
    444 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>width</code> - width (in pixels) of the YUV image</dd><dd><code>strides</code> - an array of integers, each specifying the number of bytes
    445  per line in the corresponding plane of the YUV image.  Setting the stride
    446  for any plane to 0 is the same as setting it to the plane width (see
    447  <a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><code>above</code></a>.)  If <code>strides</code> is null, then the
    448  strides for all planes will be set to their respective plane widths.  When
    449  using this constructor, the stride for each plane must be equal to or
    450  greater than the plane width.</dd><dd><code>height</code> - height (in pixels) of the YUV image</dd><dd><code>subsamp</code> - the level of chrominance subsampling to be used in the YUV
    451  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    452 </li>
    453 </ul>
    454 <a name="YUVImage(int, int, int, int)">
    455 <!--   -->
    456 </a>
    457 <ul class="blockList">
    458 <li class="blockList">
    459 <h4>YUVImage</h4>
    460 <pre>public&nbsp;YUVImage(int&nbsp;width,
    461         int&nbsp;pad,
    462         int&nbsp;height,
    463         int&nbsp;subsamp)</pre>
    464 <div class="block">Create a new <code>YUVImage</code> instance backed by a unified image
    465  buffer, and allocate memory for the image buffer.</div>
    466 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>width</code> - width (in pixels) of the YUV image</dd><dd><code>pad</code> - Each line of each plane in the YUV image buffer will be padded
    467  to this number of bytes (must be a power of 2.)</dd><dd><code>height</code> - height (in pixels) of the YUV image</dd><dd><code>subsamp</code> - the level of chrominance subsampling to be used in the YUV
    468  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    469 </li>
    470 </ul>
    471 <a name="YUVImage(byte[][], int[], int, int[], int, int)">
    472 <!--   -->
    473 </a>
    474 <ul class="blockList">
    475 <li class="blockList">
    476 <h4>YUVImage</h4>
    477 <pre>public&nbsp;YUVImage(byte[][]&nbsp;planes,
    478         int[]&nbsp;offsets,
    479         int&nbsp;width,
    480         int[]&nbsp;strides,
    481         int&nbsp;height,
    482         int&nbsp;subsamp)</pre>
    483 <div class="block">Create a new <code>YUVImage</code> instance from a set of existing image
    484  planes.</div>
    485 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>planes</code> - an array of buffers representing the Y, U (Cb), and V (Cr)
    486  image planes (or just the Y plane, if the image is grayscale.)   These
    487  planes can be contiguous or non-contiguous in memory.  Plane
    488  <code>i</code> should be at least <code>offsets[i] +
    489  <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#planeSizeYUV(int,%20int,%20int,%20int,%20int)"><code>TJ.planeSizeYUV</code></a>(i, width, strides[i], height, subsamp)</code>
    490  bytes in size.</dd><dd><code>offsets</code> - If this <code>YUVImage</code> instance represents a
    491  subregion of a larger image, then <code>offsets[i]</code> specifies the
    492  offset (in bytes) of the subregion within plane <code>i</code> of the
    493  larger image.  Setting this to null is the same as setting the offsets for
    494  all planes to 0.</dd><dd><code>width</code> - width (in pixels) of the new YUV image (or subregion)</dd><dd><code>strides</code> - an array of integers, each specifying the number of bytes
    495  per line in the corresponding plane of the YUV image.  Setting the stride
    496  for any plane to 0 is the same as setting it to the plane width (see
    497  <a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><code>above</code></a>.)  If <code>strides</code> is null, then the
    498  strides for all planes will be set to their respective plane widths.  You
    499  can adjust the strides in order to add an arbitrary amount of line padding
    500  to each plane or to specify that this <code>YUVImage</code> instance is a
    501  subregion of a larger image (in which case, <code>strides[i]</code> should
    502  be set to the plane width of plane <code>i</code> in the larger image.)</dd><dd><code>height</code> - height (in pixels) of the new YUV image (or subregion)</dd><dd><code>subsamp</code> - the level of chrominance subsampling used in the YUV
    503  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    504 </li>
    505 </ul>
    506 <a name="YUVImage(byte[], int, int, int, int)">
    507 <!--   -->
    508 </a>
    509 <ul class="blockListLast">
    510 <li class="blockList">
    511 <h4>YUVImage</h4>
    512 <pre>public&nbsp;YUVImage(byte[]&nbsp;yuvImage,
    513         int&nbsp;width,
    514         int&nbsp;pad,
    515         int&nbsp;height,
    516         int&nbsp;subsamp)</pre>
    517 <div class="block">Create a new <code>YUVImage</code> instance from an existing unified image
    518  buffer.</div>
    519 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>yuvImage</code> - image buffer that contains or will contain YUV planar
    520  image data.  Use <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#bufSizeYUV(int,%20int,%20int,%20int)"><code>TJ.bufSizeYUV(int, int, int, int)</code></a> to determine the minimum size for
    521  this buffer.  The Y, U (Cb), and V (Cr) image planes are stored
    522  sequentially in the buffer (see <a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><code>above</code></a> for a description
    523  of the image format.)</dd><dd><code>width</code> - width (in pixels) of the YUV image</dd><dd><code>pad</code> - the line padding used in the YUV image buffer.  For
    524  instance, if each line in each plane of the buffer is padded to the
    525  nearest multiple of 4 bytes, then <code>pad</code> should be set to 4.</dd><dd><code>height</code> - height (in pixels) of the YUV image</dd><dd><code>subsamp</code> - the level of chrominance subsampling used in the YUV
    526  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    527 </li>
    528 </ul>
    529 </li>
    530 </ul>
    531 <!-- ============ METHOD DETAIL ========== -->
    532 <ul class="blockList">
    533 <li class="blockList"><a name="method_detail">
    534 <!--   -->
    535 </a>
    536 <h3>Method Detail</h3>
    537 <a name="setBuf(byte[][], int[], int, int[], int, int)">
    538 <!--   -->
    539 </a>
    540 <ul class="blockList">
    541 <li class="blockList">
    542 <h4>setBuf</h4>
    543 <pre>public&nbsp;void&nbsp;setBuf(byte[][]&nbsp;planes,
    544           int[]&nbsp;offsets,
    545           int&nbsp;width,
    546           int[]&nbsp;strides,
    547           int&nbsp;height,
    548           int&nbsp;subsamp)</pre>
    549 <div class="block">Assign a set of image planes to this <code>YUVImage</code> instance.</div>
    550 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>planes</code> - an array of buffers representing the Y, U (Cb), and V (Cr)
    551  image planes (or just the Y plane, if the image is grayscale.)  These
    552  planes can be contiguous or non-contiguous in memory.  Plane
    553  <code>i</code> should be at least <code>offsets[i] +
    554  <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#planeSizeYUV(int,%20int,%20int,%20int,%20int)"><code>TJ.planeSizeYUV</code></a>(i, width, strides[i], height, subsamp)</code>
    555  bytes in size.</dd><dd><code>offsets</code> - If this <code>YUVImage</code> instance represents a
    556  subregion of a larger image, then <code>offsets[i]</code> specifies the
    557  offset (in bytes) of the subregion within plane <code>i</code> of the
    558  larger image.  Setting this to null is the same as setting the offsets for
    559  all planes to 0.</dd><dd><code>width</code> - width (in pixels) of the YUV image (or subregion)</dd><dd><code>strides</code> - an array of integers, each specifying the number of bytes
    560  per line in the corresponding plane of the YUV image.  Setting the stride
    561  for any plane to 0 is the same as setting it to the plane width (see
    562  <a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><code>above</code></a>.)  If <code>strides</code> is null, then the
    563  strides for all planes will be set to their respective plane widths.  You
    564  can adjust the strides in order to add an arbitrary amount of line padding
    565  to each plane or to specify that this <code>YUVImage</code> image is a
    566  subregion of a larger image (in which case, <code>strides[i]</code> should
    567  be set to the plane width of plane <code>i</code> in the larger image.)</dd><dd><code>height</code> - height (in pixels) of the YUV image (or subregion)</dd><dd><code>subsamp</code> - the level of chrominance subsampling used in the YUV
    568  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    569 </li>
    570 </ul>
    571 <a name="setBuf(byte[], int, int, int, int)">
    572 <!--   -->
    573 </a>
    574 <ul class="blockList">
    575 <li class="blockList">
    576 <h4>setBuf</h4>
    577 <pre>public&nbsp;void&nbsp;setBuf(byte[]&nbsp;yuvImage,
    578           int&nbsp;width,
    579           int&nbsp;pad,
    580           int&nbsp;height,
    581           int&nbsp;subsamp)</pre>
    582 <div class="block">Assign a unified image buffer to this <code>YUVImage</code> instance.</div>
    583 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>yuvImage</code> - image buffer that contains or will contain YUV planar
    584  image data.  Use <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#bufSizeYUV(int,%20int,%20int,%20int)"><code>TJ.bufSizeYUV(int, int, int, int)</code></a> to determine the minimum size for
    585  this buffer.  The Y, U (Cb), and V (Cr) image planes are stored
    586  sequentially in the buffer (see <a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><code>above</code></a> for a description
    587  of the image format.)</dd><dd><code>width</code> - width (in pixels) of the YUV image</dd><dd><code>pad</code> - the line padding used in the YUV image buffer.  For
    588  instance, if each line in each plane of the buffer is padded to the
    589  nearest multiple of 4 bytes, then <code>pad</code> should be set to 4.</dd><dd><code>height</code> - height (in pixels) of the YUV image</dd><dd><code>subsamp</code> - the level of chrominance subsampling used in the YUV
    590  image (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>)</dd></dl>
    591 </li>
    592 </ul>
    593 <a name="getWidth()">
    594 <!--   -->
    595 </a>
    596 <ul class="blockList">
    597 <li class="blockList">
    598 <h4>getWidth</h4>
    599 <pre>public&nbsp;int&nbsp;getWidth()</pre>
    600 <div class="block">Returns the width of the YUV image (or subregion.)</div>
    601 <dl><dt><span class="strong">Returns:</span></dt><dd>the width of the YUV image (or subregion)</dd></dl>
    602 </li>
    603 </ul>
    604 <a name="getHeight()">
    605 <!--   -->
    606 </a>
    607 <ul class="blockList">
    608 <li class="blockList">
    609 <h4>getHeight</h4>
    610 <pre>public&nbsp;int&nbsp;getHeight()</pre>
    611 <div class="block">Returns the height of the YUV image (or subregion.)</div>
    612 <dl><dt><span class="strong">Returns:</span></dt><dd>the height of the YUV image (or subregion)</dd></dl>
    613 </li>
    614 </ul>
    615 <a name="getPad()">
    616 <!--   -->
    617 </a>
    618 <ul class="blockList">
    619 <li class="blockList">
    620 <h4>getPad</h4>
    621 <pre>public&nbsp;int&nbsp;getPad()</pre>
    622 <div class="block">Returns the line padding used in the YUV image buffer (if this image is
    623  stored in a unified buffer rather than separate image planes.)</div>
    624 <dl><dt><span class="strong">Returns:</span></dt><dd>the line padding used in the YUV image buffer</dd></dl>
    625 </li>
    626 </ul>
    627 <a name="getStrides()">
    628 <!--   -->
    629 </a>
    630 <ul class="blockList">
    631 <li class="blockList">
    632 <h4>getStrides</h4>
    633 <pre>public&nbsp;int[]&nbsp;getStrides()</pre>
    634 <div class="block">Returns the number of bytes per line of each plane in the YUV image.</div>
    635 <dl><dt><span class="strong">Returns:</span></dt><dd>the number of bytes per line of each plane in the YUV image</dd></dl>
    636 </li>
    637 </ul>
    638 <a name="getOffsets()">
    639 <!--   -->
    640 </a>
    641 <ul class="blockList">
    642 <li class="blockList">
    643 <h4>getOffsets</h4>
    644 <pre>public&nbsp;int[]&nbsp;getOffsets()</pre>
    645 <div class="block">Returns the offsets (in bytes) of each plane within the planes of a larger
    646  YUV image.</div>
    647 <dl><dt><span class="strong">Returns:</span></dt><dd>the offsets (in bytes) of each plane within the planes of a larger
    648  YUV image</dd></dl>
    649 </li>
    650 </ul>
    651 <a name="getSubsamp()">
    652 <!--   -->
    653 </a>
    654 <ul class="blockList">
    655 <li class="blockList">
    656 <h4>getSubsamp</h4>
    657 <pre>public&nbsp;int&nbsp;getSubsamp()</pre>
    658 <div class="block">Returns the level of chrominance subsampling used in the YUV image.  See
    659  <a href="../../../org/libjpegturbo/turbojpeg/TJ.html#SAMP_444"><code>TJ.SAMP_*</code></a>.</div>
    660 <dl><dt><span class="strong">Returns:</span></dt><dd>the level of chrominance subsampling used in the YUV image</dd></dl>
    661 </li>
    662 </ul>
    663 <a name="getPlanes()">
    664 <!--   -->
    665 </a>
    666 <ul class="blockList">
    667 <li class="blockList">
    668 <h4>getPlanes</h4>
    669 <pre>public&nbsp;byte[][]&nbsp;getPlanes()</pre>
    670 <div class="block">Returns the YUV image planes.  If the image is stored in a unified buffer,
    671  then all image planes will point to that buffer.</div>
    672 <dl><dt><span class="strong">Returns:</span></dt><dd>the YUV image planes</dd></dl>
    673 </li>
    674 </ul>
    675 <a name="getBuf()">
    676 <!--   -->
    677 </a>
    678 <ul class="blockList">
    679 <li class="blockList">
    680 <h4>getBuf</h4>
    681 <pre>public&nbsp;byte[]&nbsp;getBuf()</pre>
    682 <div class="block">Returns the YUV image buffer (if this image is stored in a unified
    683  buffer rather than separate image planes.)</div>
    684 <dl><dt><span class="strong">Returns:</span></dt><dd>the YUV image buffer</dd></dl>
    685 </li>
    686 </ul>
    687 <a name="getSize()">
    688 <!--   -->
    689 </a>
    690 <ul class="blockListLast">
    691 <li class="blockList">
    692 <h4>getSize</h4>
    693 <pre>public&nbsp;int&nbsp;getSize()</pre>
    694 <div class="block">Returns the size (in bytes) of the YUV image buffer (if this image is
    695  stored in a unified buffer rather than separate image planes.)</div>
    696 <dl><dt><span class="strong">Returns:</span></dt><dd>the size (in bytes) of the YUV image buffer</dd></dl>
    697 </li>
    698 </ul>
    699 </li>
    700 </ul>
    701 </li>
    702 </ul>
    703 </div>
    704 </div>
    705 <!-- ========= END OF CLASS DATA ========= -->
    706 <!-- ======= START OF BOTTOM NAVBAR ====== -->
    707 <div class="bottomNav"><a name="navbar_bottom">
    708 <!--   -->
    709 </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
    710 <!--   -->
    711 </a>
    712 <ul class="navList" title="Navigation">
    713 <li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
    714 <li class="navBarCell1Rev">Class</li>
    715 <li><a href="package-tree.html">Tree</a></li>
    716 <li><a href="../../../deprecated-list.html">Deprecated</a></li>
    717 <li><a href="../../../index-all.html">Index</a></li>
    718 <li><a href="../../../help-doc.html">Help</a></li>
    719 </ul>
    720 </div>
    721 <div class="subNav">
    722 <ul class="navList">
    723 <li><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
    724 <li>Next Class</li>
    725 </ul>
    726 <ul class="navList">
    727 <li><a href="../../../index.html?org/libjpegturbo/turbojpeg/YUVImage.html" target="_top">Frames</a></li>
    728 <li><a href="YUVImage.html" target="_top">No Frames</a></li>
    729 </ul>
    730 <ul class="navList" id="allclasses_navbar_bottom">
    731 <li><a href="../../../allclasses-noframe.html">All Classes</a></li>
    732 </ul>
    733 <div>
    734 <script type="text/javascript"><!--
    735   allClassesLink = document.getElementById("allclasses_navbar_bottom");
    736   if(window==top) {
    737     allClassesLink.style.display = "block";
    738   }
    739   else {
    740     allClassesLink.style.display = "none";
    741   }
    742   //-->
    743 </script>
    744 </div>
    745 <div>
    746 <ul class="subNavList">
    747 <li>Summary:&nbsp;</li>
    748 <li>Nested&nbsp;|&nbsp;</li>
    749 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
    750 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
    751 <li><a href="#method_summary">Method</a></li>
    752 </ul>
    753 <ul class="subNavList">
    754 <li>Detail:&nbsp;</li>
    755 <li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
    756 <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
    757 <li><a href="#method_detail">Method</a></li>
    758 </ul>
    759 </div>
    760 <a name="skip-navbar_bottom">
    761 <!--   -->
    762 </a></div>
    763 <!-- ======== END OF BOTTOM NAVBAR ======= -->
    764 </body>
    765 </html>
    766