Add more helpers to internal streaming framework

This commit is contained in:
Andreas Öman 2008-09-20 06:05:20 +00:00
parent 2cec8a101c
commit 0504a58304
3 changed files with 45 additions and 2 deletions

View file

@ -30,6 +30,18 @@ streaming_pad_init(streaming_pad_t *sp, pthread_mutex_t *mutex)
sp->sp_mutex = mutex;
}
/**
*
*/
void
streaming_target_init(streaming_target_t *st)
{
st->st_status = ST_IDLE;
pthread_mutex_init(&st->st_mutex, NULL);
pthread_cond_init(&st->st_cond, NULL);
TAILQ_INIT(&st->st_queue);
}
/**
*
*/
@ -43,6 +55,27 @@ streaming_target_connect(streaming_pad_t *sp, streaming_target_t *st)
LIST_INSERT_HEAD(&sp->sp_targets, st, st_link);
}
void
streaming_target_disconnect(streaming_target_t *st)
{
streaming_pad_t *sp = st->st_pad;
if(sp == NULL)
return; /* Already disconnected */
pthread_mutex_lock(sp->sp_mutex);
sp->sp_ntargets--;
st->st_pad = NULL;
LIST_REMOVE(st, st_link);
pthread_mutex_unlock(sp->sp_mutex);
pktref_clear_queue(&st->st_queue);
}
/**
*
*/

View file

@ -25,11 +25,13 @@
/**
*
*/
void streaming_pad_init(streaming_pad_t *pd, pthread_mutex_t *mutex);
void streaming_pad_init(streaming_pad_t *sp, pthread_mutex_t *mutex);
void streaming_target_init(streaming_target_t *st);
void streaming_target_connect(streaming_pad_t *pd, streaming_target_t *st);
void streaming_target_connect(streaming_pad_t *sp, streaming_target_t *st);
void streaming_target_disconnect(streaming_target_t *st);
void streaming_pad_deliver_packet(streaming_pad_t *sp, th_pkt_t *pkt);

View file

@ -169,6 +169,14 @@ typedef struct streaming_target {
struct th_pktref_queue st_queue;
enum {
ST_IDLE,
ST_RUNNING,
ST_STOP_REQ,
ST_ZOMBIE,
} st_status;
} streaming_target_t;