clock.h
来自「基于sip协议的网络电话源码」· C头文件 代码 · 共 173 行
H
173 行
/* $Id: clock.h 974 2007-02-19 01:13:53Z bennylp $ *//* * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#ifndef __PJMEDIA_CLOCK_H__#define __PJMEDIA_CLOCK_H__/** * @file clock.h * @brief Media clock. */#include <pjmedia/types.h>/** * @addtogroup PJMEDIA_CLOCK Clock Generator * @ingroup PJMEDIA_PORT_CLOCK * @brief Interface for generating clock. * @{ * * The clock generator provides the application with media timing, * and it is used by the @ref PJMEDIA_MASTER_PORT for its sound clock. * * The clock generator may be configured to run <b>asynchronously</b> * (the default behavior) or <b>synchronously</b>. When it is run * asynchronously, it will call the application's callback every time * the clock <b>tick</b> expires. When it is run synchronously, * application must continuously polls the clock generator to synchronize * the timing. */PJ_BEGIN_DECL/** * Opaque declaration for media clock. */typedef struct pjmedia_clock pjmedia_clock;/** * Options when creating the clock. */enum pjmedia_clock_options{ /** * Prevents the clock from running asynchronously. In this case, * application must poll the clock continuously by calling * #pjmedia_clock_wait() in order to synchronize timing. */ PJMEDIA_CLOCK_NO_ASYNC = 1};/** * Type of media clock callback. * * @param ts Current timestamp, in samples. * @param user_data Application data that is passed when * the clock was created. */typedef void pjmedia_clock_callback(const pj_timestamp *ts, void *user_data);/** * Create media clock. * * @param pool Pool to allocate memory. * @param clock_rate Number of samples per second. * @param samples_per_frame Number of samples per frame. This argument * along with clock_rate, specifies the interval * of each clock run (or clock ticks). * @param options By default, the callback will be called * asynchronously (depending on the clock * implementation backend, a thread may be * created). If PJMEDIA_CLOCK_NO_ASYNC is set, * application must poll the clock with * #pjmedia_clock_wait() to let the clock runs. * @param cb Callback to be called for each clock tick. * @param user_data User data, which will be passed to the callback. * @param p_clock Pointer to receive the clock instance. * * @return PJ_SUCCESS on success, or the appropriate error * code. */PJ_DECL(pj_status_t) pjmedia_clock_create( pj_pool_t *pool, unsigned clock_rate, unsigned samples_per_frame, unsigned options, pjmedia_clock_callback *cb, void *user_data, pjmedia_clock **p_clock);/** * Start the clock. For clock created with asynchronous flag set to TRUE, * this may start a worker thread for the clock (depending on the * backend clock implementation being used). * * @param clock The media clock. * * @return PJ_SUCCES on success. */PJ_DECL(pj_status_t) pjmedia_clock_start(pjmedia_clock *clock);/** * Stop the clock. * * @param clock The media clock. * * @return PJ_SUCCES on success. */PJ_DECL(pj_status_t) pjmedia_clock_stop(pjmedia_clock *clock);/** * Poll the media clock, and execute the callback when the clock tick has * elapsed. This operation is only valid if the clock is created with async * flag set to FALSE. * * @param clock The media clock. * @param wait If non-zero, then the function will block until * a clock tick elapsed and callback has been called. * @param ts Optional argument to receive the current * timestamp. * * @return Non-zero if clock tick has elapsed, or FALSE if * the function returns before a clock tick has * elapsed. */PJ_DECL(pj_bool_t) pjmedia_clock_wait(pjmedia_clock *clock, pj_bool_t wait, pj_timestamp *ts);/** * Destroy the clock. * * @param clock The media clock. * * @return PJ_SUCCES on success. */PJ_DECL(pj_status_t) pjmedia_clock_destroy(pjmedia_clock *clock);PJ_END_DECL/** * @} */#endif /* __PJMEDIA_CLOCK_H__ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?