mp3_port.h

来自「基于sip协议的网络电话源码」· C头文件 代码 · 共 148 行

H
148
字号
/* $Id: mp3_port.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  *//* * Contributed by: *  Toni < buldozer at aufbix dot org > */#ifndef __PJMEDIA_MP3_PORT_H__#define __PJMEDIA_MP3_PORT_H__/** * @file mp3_port.h * @brief MP3 writer */#include <pjmedia/port.h>/** * @defgroup PJMEDIA_MP3_FILE_REC MP3 Audio File Writer (Recorder) * @ingroup PJMEDIA_PORT * @brief MP3 Audio File Writer (Recorder) * @{ * * This section describes MP3 file writer. Currently it only works on Windows * using BladeEncDLL of the LAME MP3 encoder. <b>Note that the LAME_ENC.DLL  * file must exist in the PATH so that the encoder can work properly.</b> * * The MP3 file writer is created with #pjmedia_mp3_writer_port_create() which * among other things specifies the desired file name and audio properties. * It then takes PCM input when #pjmedia_port_put_frame() is called and encode * the PCM input into MP3 streams before writing it to the .mp3 file. */PJ_BEGIN_DECL/** * This structure contains encoding options that can be specified during * MP3 writer port creation. Application should always zero the structure * before setting some value to make sure that default options will be used. */typedef struct pjmedia_mp3_encoder_option{    /** Specify whether variable bit rate should be used. Variable bitrate     *  would normally produce better quality at the expense of probably     *  larger file.     */    pj_bool_t	vbr;    /** Target bitrate, in bps. If VBR is enabled, this settings specifies      *  the  average bit-rate requested, and will make the encoder ignore      *  the quality setting. For CBR, this specifies the actual bitrate,     *  and if this option is zero, it will be set to the sampling rate     *  multiplied by number of channels.     */    unsigned	bit_rate;    /** Encoding quality, 0-9, with 0 is the highest quality. For VBR, the      *  quality setting will only take effect when bit_rate setting is zero.     */    unsigned	quality;} pjmedia_mp3_encoder_option;/** * Create a media port to record PCM media to a MP3 file. After the port * is created, application can call #pjmedia_port_put_frame() to feed the * port with PCM frames. The port then will encode the PCM frame into MP3 * stream, and store it to MP3 file specified in the argument. * * When application has finished with writing MP3 file, it must destroy the * media port with #pjmedia_port_destroy() so that the MP3 file can be * closed properly. * * @param pool		    Pool to create memory buffers for this port. * @param filename	    File name. * @param clock_rate	    The sampling rate. * @param channel_count	    Number of channels. * @param samples_per_frame Number of samples per frame. * @param bits_per_sample   Number of bits per sample (eg 16). * @param option	    Optional option to set encoding parameters. * @param p_port	    Pointer to receive the file port instance. * * @return		    PJ_SUCCESS on success. */PJ_DECL(pj_status_t) pjmedia_mp3_writer_port_create(pj_pool_t *pool,			       const char *filename,			       unsigned clock_rate,			       unsigned channel_count,			       unsigned samples_per_frame,			       unsigned bits_per_sample,			       const pjmedia_mp3_encoder_option *option,			       pjmedia_port **p_port );/** * Register the callback to be called when the file writing has reached * certain size. Application can use this callback, for example, to limit * the size of the output file. * * @param port		The file writer port. * @param pos		The file position on which the callback will be called. * @param user_data	User data to be specified in the callback, and will be *			given on the callback. * @param cb		Callback to be called. If the callback returns non- *			PJ_SUCCESS, the writing will stop. Note that if  *			application destroys the port in the callback, it must *			return non-PJ_SUCCESS here. * * @return		PJ_SUCCESS on success. */PJ_DECL(pj_status_t) pjmedia_mp3_writer_port_set_cb( pjmedia_port *port,				pj_size_t pos,				void *user_data,				pj_status_t (*cb)(pjmedia_port *port,							void *usr_data));/** * @} */PJ_END_DECL#endif	/* __PJMEDIA_MP3_PORT_H__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?