Add more helpers to internal streaming framework
This commit is contained in:
parent
2cec8a101c
commit
0504a58304
3 changed files with 45 additions and 2 deletions
33
streaming.c
33
streaming.c
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
8
tvhead.h
8
tvhead.h
|
@ -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;
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue