]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - fecdec_filter.c
alsa: Close writer in post_select() on errors/eof.
[paraslash.git] / fecdec_filter.c
index 8cb17ad642098e81621e2be6f6c0643ac6de4038..901a91694b3f22c71e3ead710da95d0faed0391b 100644 (file)
@@ -6,12 +6,16 @@
 
 /** \file fecdec_filter.c A filter that fec-decodes an audio stream. */
 
+#include <regex.h>
+#include <stdbool.h>
+
 #include <dirent.h>
 #include "para.h"
 #include "error.h"
 #include "list.h"
 #include "sched.h"
 #include "ggo.h"
+#include "buffer_tree.h"
 #include "filter.h"
 #include "string.h"
 #include "portable_io.h"
@@ -38,7 +42,7 @@ struct fec_header {
        uint8_t slices_per_group;
        /** Number of slices needed to start decoding. */
        uint8_t data_slices_per_group;
-       /** Size of the ogg vorbis header (zero for mp3, aac). */
+       /** Size of the ogg vorbis/wma header (zero for mp3, aac). */
        uint32_t audio_header_size;
        /** Number of the FEC group this slice belongs to. */
        uint32_t group_num;
@@ -243,10 +247,21 @@ static int add_slice(char *buf, struct fecdec_group *fg)
        return 1;
 }
 
+/**
+ * The different states of a complete FEC group.
+ *
+ * Even if a FEC group has been received successfully, it probably can not be
+ * used right away because some streams (ogg, wma) need to receive an audio
+ * file header before decoding can start.
+ */
 enum fec_group_usability {
+       /** Drop the group (because we did not receive the header yet). */
        FEC_GROUP_UNUSABLE,
+       /** Use all data in the group. */
        FEC_GROUP_USABLE,
+       /** Use the group, but drop its audio file header. */
        FEC_GROUP_USABLE_SKIP_HEADER,
+       /** Use the group, including its header. */
        FEC_GROUP_USABLE_WITH_HEADER
 };