diff options
author | Christophe Massiot <cmassiot@openheadend.tv> | 2014-01-30 23:04:55 +0100 |
---|---|---|
committer | Christophe Massiot <cmassiot@openheadend.tv> | 2014-01-30 23:04:55 +0100 |
commit | 590e4bac4abed785b661824da41504576218faa8 (patch) | |
tree | e26ab50550dc685d61bf1bb14670744cf8d30f62 | |
parent | eb7a209b0bad740ba749508a89a29a723d80ba89 (diff) |
code simplicationv0.2
-rw-r--r-- | doc/rules.mkdoc | 2 | ||||
-rw-r--r-- | examples/glxplay.c | 15 |
2 files changed, 8 insertions, 9 deletions
diff --git a/doc/rules.mkdoc b/doc/rules.mkdoc index 50855dd..c03b967 100644 --- a/doc/rules.mkdoc +++ b/doc/rules.mkdoc @@ -33,6 +33,8 @@ @item A pipe may send an empty uref (pointing to a NULL ubuf) to indicate minor flow definition changes (such as change of language). However it may not be the first packet output by the pipe. Reversely, a pipe is not required to deal with an empty uref if it is the first packet it receives. + @item A pipe shall not throw a @ref UPROBE_NEED_UPUMP_MGR event before receiving its first buffer. An exception is allowed for source pipes, but it is legal for the application to not give a upump_mgr right away, and the source pipe should not throw a fatal error if that happens. + @end list @end section diff --git a/examples/glxplay.c b/examples/glxplay.c index e9aae91..321c795 100644 --- a/examples/glxplay.c +++ b/examples/glxplay.c @@ -152,7 +152,6 @@ struct upipe_glxplayer { bool upipe_ts; /* managers */ - struct uclock *uclock; struct upipe_mgr *upipe_filter_blend_mgr; struct upipe_mgr *upipe_sws_mgr; struct upipe_mgr *upipe_qsink_mgr; @@ -616,10 +615,6 @@ struct upipe_glxplayer *upipe_glxplayer_alloc(enum uprobe_log_level loglevel) glxplayer->upipe_ts = false; glxplayer->paused = false; - glxplayer->uclock = uclock_std_alloc(0); - if (unlikely(glxplayer->uclock == NULL)) - goto fail_uclock; - struct umem_mgr *umem_mgr = umem_pool_mgr_alloc_simple(UMEM_POOL); if (unlikely(umem_mgr == NULL)) goto fail_umem_mgr; @@ -634,6 +629,10 @@ struct upipe_glxplayer *upipe_glxplayer_alloc(enum uprobe_log_level loglevel) if (unlikely(uref_mgr == NULL)) goto fail_uref_mgr; + struct uclock *uclock = uclock_std_alloc(0); + if (unlikely(uclock == NULL)) + goto fail_probe_logger; + /* probes common to all threads */ glxplayer->uprobe_logger = uprobe_pthread_upump_mgr_alloc( @@ -641,8 +640,9 @@ struct upipe_glxplayer *upipe_glxplayer_alloc(enum uprobe_log_level loglevel) uprobe_uclock_alloc( uprobe_uref_mgr_alloc( uprobe_stdio_alloc(NULL, stderr, glxplayer->loglevel), - uref_mgr), glxplayer->uclock), + uref_mgr), uclock), umem_mgr, UBUF_POOL_DEPTH, UBUF_POOL_DEPTH)); + uclock_release(uclock); if (unlikely(glxplayer->uprobe_logger == NULL)) goto fail_probe_logger; @@ -755,8 +755,6 @@ fail_uref_mgr: fail_udict_mgr: umem_mgr_release(umem_mgr); fail_umem_mgr: - uclock_release(glxplayer->uclock); -fail_uclock: free(glxplayer); return NULL; } @@ -953,7 +951,6 @@ void upipe_glxplayer_free(struct upipe_glxplayer *glxplayer) upipe_mgr_release(glxplayer->upipe_null_mgr); upipe_av_clean(); uprobe_release(glxplayer->uprobe_logger); - uclock_release(glxplayer->uclock); free(glxplayer); } |