/usr/share/doc/liblzma-doc/html/block__buffer__encoder_8c.html is in liblzma-doc 5.1.1alpha+20120614-2ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>XZ Utils: liblzma/common/block_buffer_encoder.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">XZ Utils
 <span id="projectnumber">5.1.0alpha</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_2e0898c272e1f0f93c8ef15f5da2a912.html">liblzma</a></li><li class="navelem"><a class="el" href="dir_db777975f8e21a5de5f283e04473bf67.html">common</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">block_buffer_encoder.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Single-call .xz Block encoder.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include "<a class="el" href="block__encoder_8h.html">block_encoder.h</a>"</code><br/>
<code>#include "filter_encoder.h"</code><br/>
<code>#include "<a class="el" href="lzma2__encoder_8h.html">lzma2_encoder.h</a>"</code><br/>
<code>#include "check.h"</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a6cf3bc89aed406bb48c785dca58ae9da"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="block__buffer__encoder_8c.html#a6cf3bc89aed406bb48c785dca58ae9da">HEADERS_BOUND</a></td></tr>
<tr class="separator:a6cf3bc89aed406bb48c785dca58ae9da"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad43c9b07a6d8483e90dda120d65ba230"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad43c9b07a6d8483e90dda120d65ba230"></a>
static <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> </td><td class="memItemRight" valign="bottom"><b>lzma2_bound</b> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> uncompressed_size)</td></tr>
<tr class="separator:ad43c9b07a6d8483e90dda120d65ba230"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afcfe5ca83fac7bfbd1a0a7d41e32306d"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="block__buffer__encoder_8c.html#afcfe5ca83fac7bfbd1a0a7d41e32306d">lzma_block_buffer_bound</a> (size_t uncompressed_size)</td></tr>
<tr class="memdesc:afcfe5ca83fac7bfbd1a0a7d41e32306d"><td class="mdescLeft"> </td><td class="mdescRight">Calculate maximum output size for single-call Block encoding. <a href="#afcfe5ca83fac7bfbd1a0a7d41e32306d">More...</a><br/></td></tr>
<tr class="separator:afcfe5ca83fac7bfbd1a0a7d41e32306d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a5295d468fbf2da3a35f458c90b7966c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5295d468fbf2da3a35f458c90b7966c5"></a>
static <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> </td><td class="memItemRight" valign="bottom"><b>block_encode_uncompressed</b> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size)</td></tr>
<tr class="separator:a5295d468fbf2da3a35f458c90b7966c5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6ce26e6630b0d19a7c63988bf8ee59fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ce26e6630b0d19a7c63988bf8ee59fd"></a>
static <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> </td><td class="memItemRight" valign="bottom"><b>block_encode_normal</b> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size)</td></tr>
<tr class="separator:a6ce26e6630b0d19a7c63988bf8ee59fd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a635b4b6ab2edce064de64dbfeba9f5f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="block__buffer__encoder_8c.html#a635b4b6ab2edce064de64dbfeba9f5f5">lzma_block_buffer_encode</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size)</td></tr>
<tr class="memdesc:a635b4b6ab2edce064de64dbfeba9f5f5"><td class="mdescLeft"> </td><td class="mdescRight">Single-call .xz Block encoder. <a href="#a635b4b6ab2edce064de64dbfeba9f5f5">More...</a><br/></td></tr>
<tr class="separator:a635b4b6ab2edce064de64dbfeba9f5f5"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Single-call .xz Block encoder. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a6cf3bc89aed406bb48c785dca58ae9da"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define HEADERS_BOUND</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((1 + 1 + 2 * <a class="code" href="vli_8h.html#a063ecff4133aa2f8899b9fa3fdefd310">LZMA_VLI_BYTES_MAX</a> + 3 + 4 \</div>
<div class="line"> + <a class="code" href="api_2lzma_2check_8h.html#a379e931cf86351ab1d97896cda9abbe0">LZMA_CHECK_SIZE_MAX</a> + 3) & ~3)</div>
<div class="ttc" id="vli_8h_html_a063ecff4133aa2f8899b9fa3fdefd310"><div class="ttname"><a href="vli_8h.html#a063ecff4133aa2f8899b9fa3fdefd310">LZMA_VLI_BYTES_MAX</a></div><div class="ttdeci">#define LZMA_VLI_BYTES_MAX</div><div class="ttdoc">Maximum supported encoded length of variable length integers. </div><div class="ttdef"><b>Definition:</b> vli.h:44</div></div>
<div class="ttc" id="api_2lzma_2check_8h_html_a379e931cf86351ab1d97896cda9abbe0"><div class="ttname"><a href="api_2lzma_2check_8h.html#a379e931cf86351ab1d97896cda9abbe0">LZMA_CHECK_SIZE_MAX</a></div><div class="ttdeci">#define LZMA_CHECK_SIZE_MAX</div><div class="ttdoc">Maximum size of a Check field. </div><div class="ttdef"><b>Definition:</b> check.h:102</div></div>
</div><!-- fragment --><p>Estimate the maximum size of the Block Header and Check fields for a Block that uses LZMA2 uncompressed chunks. We could use <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size. ">lzma_block_header_size()</a> but this is simpler.</p>
<p>Block Header Size + Block Flags + Compressed Size</p>
<ul>
<li>Uncompressed Size + Filter Flags for LZMA2 + CRC32 + Check and round up to the next multiple of four to take Header Padding into account. </li>
</ul>
<p>Referenced by <a class="el" href="block__buffer__encoder_8c.html#afcfe5ca83fac7bfbd1a0a7d41e32306d">lzma_block_buffer_bound()</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="afcfe5ca83fac7bfbd1a0a7d41e32306d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t lzma_block_buffer_bound </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>uncompressed_size</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate maximum output size for single-call Block encoding. </p>
<p>This is equivalent to <a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder. ">lzma_stream_buffer_bound()</a> but for .xz Blocks. See the documentation of <a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder. ">lzma_stream_buffer_bound()</a>. </p>
<p>References <a class="el" href="block__buffer__encoder_8c.html#a6cf3bc89aed406bb48c785dca58ae9da">HEADERS_BOUND</a>, and <a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>.</p>
<p>Referenced by <a class="el" href="stream__buffer__encoder_8c.html#a870286986caa1c0ac6ce6c4074284420">lzma_stream_buffer_bound()</a>.</p>
</div>
</div>
<a class="anchor" id="a635b4b6ab2edce064de64dbfeba9f5f5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_buffer_encode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> * </td>
<td class="paramname"><em>block</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structlzma__allocator.html">lzma_allocator</a> * </td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>out_size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Single-call .xz Block encoder. </p>
<p>In contrast to the multi-call encoder initialized with <a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder. ">lzma_block_encoder()</a>, this function encodes also the Block Header. This is required to make it possible to write appropriate Block Header also in case the data isn't compressible, and different filter chain has to be used to encode the data in uncompressed form using uncompressed chunks of the LZMA2 filter.</p>
<p>When the data isn't compressible, header_size, compressed_size, and uncompressed_size are set just like when the data was compressible, but it is possible that header_size is too small to hold the filter chain specified in block->filters, because that isn't necessarily the filter chain that was actually used to encode the data. <a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size. ">lzma_block_unpadded_size()</a> still works normally, because it doesn't read the filters array.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">block</td><td>Block options: block->version, block->check, and block->filters must have been initialized. </td></tr>
<tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling. ">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
<tr><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
<tr><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
<tr><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
<tr><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
<tr><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>- LZMA_OK: Encoding was successful.<ul>
<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
<li>LZMA_UNSUPPORTED_CHECK</li>
<li>LZMA_OPTIONS_ERROR</li>
<li>LZMA_MEM_ERROR</li>
<li>LZMA_DATA_ERROR</li>
<li>LZMA_PROG_ERROR </li>
</ul>
</dd></dl>
<p>References <a class="el" href="structlzma__check__state.html#a66d54715269b349088561ee800cd2356">lzma_check_state::buffer</a>, <a class="el" href="coder_8c.html#a5c94b0defea7996f245faec2693056cb">check</a>, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5">LZMA_BUF_ERROR</a>, <a class="el" href="check_8c.html#a682bfef0e2be646de63dbcba0eb6a33e">lzma_check_finish()</a>, <a class="el" href="api_2lzma_2check_8h.html#acd221ababe30230d9647aab469ad80cb">LZMA_CHECK_ID_MAX</a>, <a class="el" href="check_8c.html#aeb14796081bbe051ca7a08952c7383e8">lzma_check_init()</a>, <a class="el" href="api_2lzma_2check_8h.html#ae9391ed2acfad0ce9357b68c608f07d8">lzma_check_is_supported()</a>, <a class="el" href="api_2lzma_2check_8h.html#afd3fda19575d9d4f864c626c02b7cb48">lzma_check_size()</a>, <a class="el" href="check_8c.html#aa5e9d54e127d31eda8e4f31cbe69e150">lzma_check_update()</a>, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe">LZMA_OK</a>, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f">LZMA_OPTIONS_ERROR</a>, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2">LZMA_PROG_ERROR</a>, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2">LZMA_UNSUPPORTED_CHECK</a>, and <a class="el" href="common_8h.html#a3e1bf9f33b917e883b886b8a10458d66">return_if_error</a>.</p>
<p>Referenced by <a class="el" href="stream__buffer__encoder_8c.html#a932a602de4f44d8525687698e51ce93d">lzma_stream_buffer_encode()</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Feb 12 2014 15:12:37 for XZ Utils by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
|