/usr/include/pjmedia/vid_tee.h is in libpjproject-dev 2.1.0.0.ast20130823-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | /* $Id: vid_tee.h 3664 2011-07-19 03:42:28Z nanang $ */
/*
* Copyright (C) 2011 Teluu Inc. (http://www.teluu.com)
*
* 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_VID_TEE_H__
#define __PJMEDIA_VID_TEE_H__
/**
* @file vid_tee.h
* @brief Video tee (source duplicator).
*/
#include <pjmedia/port.h>
/**
* @addtogroup PJMEDIA_VID_TEE Video source duplicator
* @ingroup PJMEDIA_PORT
* @brief Duplicate video data from a media port into multiple media port
* destinations
* @{
*
* This section describes media port to duplicate video data in the stream.
*
* A video tee branches video stream flow from one source port to multiple
* destination ports by simply duplicating the video data supplied by the
* source port and delivering the copy to all registered destinations.
*
* The video tee is a unidirectional port, i.e: data flows from source port
* to destination ports only. Also, the video source port MUST actively call
* pjmedia_port_put_frame() to the video tee and the video destination ports
* MUST NEVER call pjmedia_port_get_frame() to the video tee. Please note that
* there is no specific order of which destination port will receive a frame
* from the video tee.
*
* The video tee is not thread-safe, so it is application responsibility
* to synchronize video tee operations, e.g: make sure the source port is
* paused during adding or removing a destination port.
*/
PJ_BEGIN_DECL
/**
* Enumeration of video tee flags.
*/
typedef enum pjmedia_vid_tee_flag
{
/**
* Tell the video tee that the destination port will do in-place
* processing, so the delivered data may be modified by this port.
* If this flag is used, buffer will be copied before being given to
* the destination port.
*/
PJMEDIA_VID_TEE_DST_DO_IN_PLACE_PROC = 4,
} pjmedia_vid_tee_flag;
/**
* Create a video tee port with the specified source media port. Application
* should destroy the tee with pjmedia_port_destroy() as usual. Note that
* destroying the tee does not destroy its destination ports.
*
* @param pool The pool.
* @param fmt The source media port's format.
* @param max_dst_cnt The maximum number of destination ports supported.
* @param p_vid_tee Pointer to receive the video tee port.
*
* @return PJ_SUCCESS on success, or the appropriate
* error code.
*/
PJ_DECL(pj_status_t) pjmedia_vid_tee_create(pj_pool_t *pool,
const pjmedia_format *fmt,
unsigned max_dst_cnt,
pjmedia_port **p_vid_tee);
/**
* Add a destination media port to the video tee. For this function, the
* destination port's media format must match the source format.
*
* @param vid_tee The video tee.
* @param option Video tee option, see @pjmedia_vid_tee_flag.
* @param port The destination media port.
*
* @return PJ_SUCCESS on success, or the appropriate error
* code.
*/
PJ_DECL(pj_status_t) pjmedia_vid_tee_add_dst_port(pjmedia_port *vid_tee,
unsigned option,
pjmedia_port *port);
/**
* Add a destination media port to the video tee. This function will also
* create a converter if the destination port's media format does not match
* the source format.
*
* @param vid_tee The video tee.
* @param option Video tee option, see @pjmedia_vid_tee_flag.
* @param port The destination media port.
*
* @return PJ_SUCCESS on success, or the appropriate error
* code.
*/
PJ_DECL(pj_status_t) pjmedia_vid_tee_add_dst_port2(pjmedia_port *vid_tee,
unsigned option,
pjmedia_port *port);
/**
* Remove a destination media port from the video tee.
*
* @param vid_tee The video tee.
* @param port The destination media port to be removed.
*
* @return PJ_SUCCESS on success, or the appropriate error
* code.
*/
PJ_DECL(pj_status_t) pjmedia_vid_tee_remove_dst_port(pjmedia_port *vid_tee,
pjmedia_port *port);
PJ_END_DECL
/**
* @}
*/
#endif /* __PJMEDIA_VID_TEE_H__ */
|