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;
|
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);
|
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_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);
|
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;
|
struct th_pktref_queue st_queue;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ST_IDLE,
|
||||||
|
ST_RUNNING,
|
||||||
|
ST_STOP_REQ,
|
||||||
|
ST_ZOMBIE,
|
||||||
|
} st_status;
|
||||||
|
|
||||||
|
|
||||||
} streaming_target_t;
|
} streaming_target_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue