![]() |
![]() |
![]() |
Swfdec Reference Manual | ![]() |
---|---|---|---|---|
SwfdecBuffer; SwfdecBufferQueue; SwfdecBuffer* swfdec_buffer_new (void); SwfdecBuffer* swfdec_buffer_new_and_alloc (unsigned int size); SwfdecBuffer* swfdec_buffer_new_and_alloc0 (unsigned int size); SwfdecBuffer* swfdec_buffer_new_subbuffer (SwfdecBuffer *buffer, unsigned int offset, unsigned int length); SwfdecBuffer* swfdec_buffer_new_from_file (const char *filename, GError **error); SwfdecBuffer* swfdec_buffer_ref (SwfdecBuffer *buffer); void swfdec_buffer_unref (SwfdecBuffer *buffer); SwfdecBufferQueue* swfdec_buffer_queue_new (void); void swfdec_buffer_queue_clear (SwfdecBufferQueue *queue); void swfdec_buffer_queue_free (SwfdecBufferQueue *queue); int swfdec_buffer_queue_get_depth (SwfdecBufferQueue *queue); int swfdec_buffer_queue_get_offset (SwfdecBufferQueue *queue); void swfdec_buffer_queue_push (SwfdecBufferQueue *queue, SwfdecBuffer *buffer); SwfdecBuffer* swfdec_buffer_queue_pull (SwfdecBufferQueue *queue, unsigned int length); SwfdecBuffer* swfdec_buffer_queue_pull_buffer (SwfdecBufferQueue *queue); SwfdecBuffer* swfdec_buffer_queue_peek (SwfdecBufferQueue *queue, unsigned int length);
To allow for easy sharing of memory regions, SwfdecBuffer 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 various
independant parts of your code. Buffers also support some advanced
functionalities like extracting parts of the buffer using
swfdec_buffer_new_subbuffer()
or using mmapped files with
swfdec_buffer_new_from_file()
without the need for a different API.
A SwfdecBufferQueue is a queue of continuous buffers that allows reading its 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 right size.
typedef struct { unsigned char *data; unsigned int length; int ref_count; SwfdecBuffer *parent; void (*free) (SwfdecBuffer *, void *); void *priv; } SwfdecBuffer;
typedef struct { GList *buffers; unsigned int depth; unsigned int offset; } SwfdecBufferQueue;
SwfdecBuffer* swfdec_buffer_new (void);
Creates a new SwfdecBuffer to be filled by the user. Use like this:
SwfdecBuffer *buffer = swfdec_buffer_new (); buffer->data = mydata; buffer->length = mydata_length; buffer->free = mydata_freefunc;
Returns : | a new SwfdecBuffer referencing nothing. |
SwfdecBuffer* swfdec_buffer_new_and_alloc (unsigned int size);
Creates a new buffer and allocates new memory of size
bytes to be used with
the buffer.
size : |
amount of bytes to allocate |
Returns : | a new SwfdecBuffer with buffer->data pointing to new data |
SwfdecBuffer* swfdec_buffer_new_and_alloc0 (unsigned int size);
Createsa new buffer just like swfdec_buffer_new_and_alloc()
, but ensures
that the returned data gets initialized to be 0.
size : |
amount of bytes to allocate |
Returns : | a new SwfdecBuffer with buffer->data pointing to new data |
SwfdecBuffer* swfdec_buffer_new_subbuffer (SwfdecBuffer *buffer, unsigned int offset, unsigned int length);
Creates a SwfdecBuffer for managing a partial section of the memory pointed
to by buffer
.
buffer : |
SwfdecBuffer managing the region of memory |
offset : |
starting offset into data |
length : |
amount of bytes to manage |
Returns : | a new SwfdecBuffer managing the indicated region. |
SwfdecBuffer* swfdec_buffer_new_from_file (const char *filename, GError **error);
Tries to create a buffer for the given filename
using a GMappedFile. If
the creation fails, NULL
is returned and error
is set. The error can be
any of the errors that are valid from g_mapped_file_new()
.
filename : |
file to read |
error : |
return location for a GError or NULL
|
Returns : | a new SwfdecBuffer or NULL on failure
|
SwfdecBuffer* swfdec_buffer_ref (SwfdecBuffer *buffer);
increases the reference count of buffer
by one.
buffer : |
a SwfdecBuffer |
Returns : | The passed in buffer .
|
void swfdec_buffer_unref (SwfdecBuffer *buffer);
Decreases the reference count of buffer
by one. If no reference to this
buffer exists anymore, the buffer and the memory it manages are freed.
buffer : |
a SwfdecBuffer |
int swfdec_buffer_queue_get_depth (SwfdecBufferQueue *queue);
queue : |
|
Returns : |
int swfdec_buffer_queue_get_offset (SwfdecBufferQueue *queue);
queue : |
|
Returns : |
void swfdec_buffer_queue_push (SwfdecBufferQueue *queue, SwfdecBuffer *buffer);
queue : |
|
buffer : |
SwfdecBuffer* swfdec_buffer_queue_pull (SwfdecBufferQueue *queue, unsigned int length);
queue : |
|
length : |
|
Returns : |
SwfdecBuffer* swfdec_buffer_queue_pull_buffer (SwfdecBufferQueue *queue);
queue : |
|
Returns : |
SwfdecBuffer* swfdec_buffer_queue_peek (SwfdecBufferQueue *queue, unsigned int length);
Creates a new buffer with the first length
bytes from queue
, but unlike
swfdec_buffer_queue_pull()
, does not remove them from queue
.
queue : |
a SwfdecBufferQueue to read from |
length : |
amount of bytes to peek |
Returns : | NULL if the requested amount of data wasn't available or a new
readonly SwfdecBuffer. Use swfdec_buffer_unref() after use.
|