⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swfdec-swfdecbuffer.html

📁 Swfdec is a decoder/renderer for Macromedia Flash animations. The decoding and rendering engine is
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>SwfdecBuffer</title><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Swfdec Reference Manual"><link rel="up" href="ch02.html" title="Swfdec library"><link rel="prev" href="SwfdecAudio.html" title="SwfdecAudio"><link rel="next" href="SwfdecLoader.html" title="SwfdecLoader"><meta name="generator" content="GTK-Doc V1.9 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="chapter" href="ch01.html" title="Swfdec Gtk library"><link rel="chapter" href="ch02.html" title="Swfdec library"><link rel="chapter" href="ch03.html" title="Actionscript interpreter"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="SwfdecAudio.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Swfdec Reference Manual</th><td><a accesskey="n" href="SwfdecLoader.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr><tr><td colspan="5" class="shortcuts"><nobr><a href="#id2587930" class="shortcut">Top</a>                  &#160;|&#160;                  <a href="#id2556493" class="shortcut">Description</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="swfdec-SwfdecBuffer"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><a name="id2587930"></a><span class="refentrytitle">SwfdecBuffer</span></h2><p>SwfdecBuffer &#8212; memory region handling</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">                    <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>;                    <a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a>;<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new">swfdec_buffer_new</a>                   (void);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-and-alloc">swfdec_buffer_new_and_alloc</a>         (guint size);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-and-alloc0">swfdec_buffer_new_and_alloc0</a>        (guint size);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-for-data">swfdec_buffer_new_for_data</a>          (unsigned char *data,                                                         guint size);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-subbuffer">swfdec_buffer_new_subbuffer</a>         (<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a> *buffer,                                                         guint offset,                                                         guint length);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-from-file">swfdec_buffer_new_from_file</a>         (const char *filename,                                                         GError **error);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-ref">swfdec_buffer_ref</a>                   (<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a> *buffer);void                <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-unref">swfdec_buffer_unref</a>                 (<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a> *buffer);<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a>*  <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-new">swfdec_buffer_queue_new</a>             (void);void                <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-clear">swfdec_buffer_queue_clear</a>           (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a>*  <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-ref">swfdec_buffer_queue_ref</a>             (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);void                <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-unref">swfdec_buffer_queue_unref</a>           (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);guint               <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-get-depth">swfdec_buffer_queue_get_depth</a>       (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);guint               <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-get-offset">swfdec_buffer_queue_get_offset</a>      (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);void                <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-push">swfdec_buffer_queue_push</a>            (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue,                                                         <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a> *buffer);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-pull">swfdec_buffer_queue_pull</a>            (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue,                                                         guint length);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-pull-buffer">swfdec_buffer_queue_pull_buffer</a>     (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue);<a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-queue-peek">swfdec_buffer_queue_peek</a>            (<a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue">SwfdecBufferQueue</a> *queue,                                                         guint length);</pre></div><div class="refsect1" lang="en"><a name="id2556493"></a><h2>Description</h2><p>This section describes how memory is to be handled when interacting with the Swfdec library. Memory regions are refcounted and passed using a <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a>. If large memory segments need to be handled that may spanmultiple buffers, Swfdec uses a <a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue"><span class="type">SwfdecBufferQueue</span></a>.</p><p></p></div><div class="refsect1" lang="en"><a name="id2556531"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2556542"></a><h3><a name="SwfdecBuffer"></a>SwfdecBuffer</h3><a class="indexterm" name="id2556554"></a><pre class="programlisting">typedef struct {  unsigned char *data;  guint length;} SwfdecBuffer;</pre><p>To allow for easy sharing of memory regions, <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a> was created. Every buffer refers to a memory region and its size and takes care of freeing that region when the buffer is no longer needed. They are reference countedto make it easy to refer to the same region from variousindependant parts of your code. Buffers also support some advanced functionalities like extracting parts of the buffer using <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-subbuffer"><code class="function">swfdec_buffer_new_subbuffer()</code></a> or using mmapped files with <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-from-file"><code class="function">swfdec_buffer_new_from_file()</code></a> without the need for a different API.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term">unsigned&#160;char&#160;*<em class="structfield"><code>data</code></em>;</span></td><td> the data. read-only</td></tr><tr><td><span class="term">guint&#160;<em class="structfield"><code>length</code></em>;</span></td><td> number of bytes in <em class="parameter"><code>data</code></em>. read-only</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2556659"></a><h3><a name="SwfdecBufferQueue"></a>SwfdecBufferQueue</h3><a class="indexterm" name="id2556671"></a><pre class="programlisting">typedef struct {} SwfdecBufferQueue;</pre><p>A <a href="swfdec-SwfdecBuffer.html#SwfdecBufferQueue"><span class="type">SwfdecBufferQueue</span></a> is a queue of continuous buffers that allows readingits data in chunks of pre-defined sizes. It is used to transform a data stream that was provided by buffers of random sizes to buffers of the rightsize.</p><p></p></div><hr><div class="refsect2" lang="en"><a name="id2556701"></a><h3><a name="swfdec-buffer-new"></a>swfdec_buffer_new ()</h3><a class="indexterm" name="id2556713"></a><pre class="programlisting"><a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       swfdec_buffer_new                   (void);</pre><p>Creates a new <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a> to be filled by the user. Use like this:</p><div class="informalexample"><pre class="programlisting">SwfdecBuffer *buffer = swfdec_buffer_new ();buffer-&gt;data = mydata;buffer-&gt;length = mydata_length;buffer-&gt;free = mydata_freefunc;</pre></div><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td><td> a new <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a> referencing nothing.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2607680"></a><h3><a name="swfdec-buffer-new-and-alloc"></a>swfdec_buffer_new_and_alloc ()</h3><a class="indexterm" name="id2607691"></a><pre class="programlisting"><a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       swfdec_buffer_new_and_alloc         (guint size);</pre><p>Creates a new buffer and allocates new memory of <em class="parameter"><code>size</code></em> bytes to be used with the buffer.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td><td> amount of bytes to allocate</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td><td> a new <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a> with buffer-&gt;data pointing to new data</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2607765"></a><h3><a name="swfdec-buffer-new-and-alloc0"></a>swfdec_buffer_new_and_alloc0 ()</h3><a class="indexterm" name="id2607778"></a><pre class="programlisting"><a href="swfdec-SwfdecBuffer.html#SwfdecBuffer">SwfdecBuffer</a>*       swfdec_buffer_new_and_alloc0        (guint size);</pre><p>Createsa new buffer just like <a href="swfdec-SwfdecBuffer.html#swfdec-buffer-new-and-alloc"><code class="function">swfdec_buffer_new_and_alloc()</code></a>, but ensures that the returned data gets initialized to be 0.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td><td> amount of bytes to allocate</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td><td> a new <a href="swfdec-SwfdecBuffer.html#SwfdecBuffer"><span class="type">SwfdecBuffer</span></a> with buffer-&gt;data pointing to new data</td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -