X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write.h;h=8816be7314bcd14516afc4e91226f3f3124df6c1;hp=9723977ae4357506ac1c6b64284695577d1e5683;hb=8fbaafaaaea2ec1e3873bdcf5cb2de3a643fc5e6;hpb=e9805263600a69a88e60edd1c8b4ba9e01a79322 diff --git a/write.h b/write.h index 9723977a..8816be73 100644 --- a/write.h +++ b/write.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2008 Andre Noll + * Copyright (C) 2006-2009 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -13,12 +13,10 @@ enum writer_enum {WRITER_ENUM}; * Describes one running instance of a writer. */ struct writer_node { - /** Points to the writer structure associated with this node. */ - struct writer *writer; /* FIXME: Should better be only the number. */ + /** The number of this writer. */ + int writer_num; /** Writer-specific data. */ void *private_data; - /** Send that many bytes in one go. */ - int chunk_bytes; /** Pointer to the group this node belongs to. */ struct writer_node_group *wng; /** The writer-specific configuration of this node. */ @@ -49,7 +47,7 @@ struct writer { * Open one instance of this writer. * * This function should perform any work necessary to write the incoming - * stream. If To this aim, it may allocate its private data structure and store + * stream. To this aim, it may allocate its private data structure and store * a pointer to that structure via the given writer_node parameter. */ int (*open)(struct writer_node *); @@ -84,6 +82,7 @@ struct writer { * This is a optional function pointer used for cleaning up. */ void (*shutdown)(struct writer_node *); + struct ggo_help help; }; /** @@ -94,12 +93,10 @@ struct writer_node_group { unsigned num_writers; /** Array of pointers to the corresponding writer nodes. */ struct writer_node *writer_nodes; - /** The maximum of the chunk_bytes values of the writer nodes in this group. */ - int max_chunk_bytes; /** Non-zero if an error or end of file was encountered by the feeding task. */ int *input_error; /** Current output buffer. */ - char *buf; + char **bufp; /** Number of bytes loaded in the output buffer. */ size_t *loaded; /** Number of audio channels of the current stream. */ @@ -110,6 +107,8 @@ struct writer_node_group { struct task task; /** Whether the group is open, i.e. wng_open() was called. */ int open; + /** Max number of bytes written in the previous post_select() call. */ + int last_written; }; /** Loop over each writer node in a writer group. */