paraslash Paraslash Audio Streaming
About   News   Download   Documentation   Development

Macros | Enumerations | Variables
fecdec_filter.c File Reference

A filter that fec-decodes an audio stream. More...

#include <regex.h>
#include "para.h"
#include "error.h"
#include "list.h"
#include "sched.h"
#include "buffer_tree.h"
#include "filter.h"
#include "string.h"
#include "portable_io.h"
#include "fec.h"
#include "fd.h"

Macros

#define NUM_FEC_GROUPS   3
 How many FEC groups to store in memory. More...
 
#define FOR_EACH_FECDEC_GROUP(g, d)
 Iterate over all fecdec groups. More...
 

Enumerations

enum  fec_group_usability { FEC_GROUP_UNUSABLE, FEC_GROUP_USABLE, FEC_GROUP_USABLE_SKIP_HEADER, FEC_GROUP_USABLE_WITH_HEADER }
 The different states of a complete FEC group. More...
 

Variables

const struct filter lsg_filter_cmd_com_fecdec_user_data
 

Detailed Description

A filter that fec-decodes an audio stream.

Macro Definition Documentation

◆ NUM_FEC_GROUPS

#define NUM_FEC_GROUPS   3

How many FEC groups to store in memory.

Packet reordering requires to keep more than one FEC group in memory because slices belonging to the next FEC group may arrive before the current FEC group is complete.

◆ FOR_EACH_FECDEC_GROUP

#define FOR_EACH_FECDEC_GROUP (   g,
 
)
Value:
for (g = (d)->groups; \
(g) < (d)->groups + NUM_FEC_GROUPS; (g)++)

Iterate over all fecdec groups.

Enumeration Type Documentation

◆ fec_group_usability

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.

Enumerator
FEC_GROUP_UNUSABLE 

Drop the group (because we did not receive the header yet).

FEC_GROUP_USABLE 

Use all data in the group.

FEC_GROUP_USABLE_SKIP_HEADER 

Use the group, but drop its audio file header.

FEC_GROUP_USABLE_WITH_HEADER 

Use the group, including its header.

Variable Documentation

◆ lsg_filter_cmd_com_fecdec_user_data

const struct filter lsg_filter_cmd_com_fecdec_user_data
Initial value:
= {
.open = fecdec_open,
.post_monitor = fecdec_post_monitor,
.close = fecdec_close,
}
generic_filter_pre_monitor
void generic_filter_pre_monitor(struct sched *s, void *context)
Request a minimal timeout if not idle.
Definition: filter_common.c:181
NUM_FEC_GROUPS
#define NUM_FEC_GROUPS
How many FEC groups to store in memory.
Definition: fecdec_filter.c:25