Wed Jan 8 2020 09:50:12

Asterisk developer's documentation


format_ogg_vorbis.c File Reference

OGG/Vorbis streams. More...

#include "asterisk.h"
#include <vorbis/codec.h>
#include <vorbis/vorbisenc.h>
#include <vorbis/vorbisfile.h>
#include "asterisk/mod_format.h"
#include "asterisk/module.h"

Go to the source code of this file.

Data Structures

struct  ogg_vorbis_desc
 

Macros

#define BLOCK_SIZE   4096 /* used internally in the vorbis routines */
 
#define BUF_SIZE   (2*SAMPLES_MAX)
 
#define SAMPLES_MAX   512
 

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
static int load_module (void)
 
static void ogg_vorbis_close (struct ast_filestream *fs)
 Close a OGG/Vorbis filestream. More...
 
static int ogg_vorbis_open (struct ast_filestream *s)
 Create a new OGG/Vorbis filestream and set it up for reading. More...
 
static struct ast_frameogg_vorbis_read (struct ast_filestream *fs, int *whennext)
 Read a frame full of audio data from the filestream. More...
 
static int ogg_vorbis_rewrite (struct ast_filestream *s, const char *comment)
 Create a new OGG/Vorbis filestream and set it up for writing. More...
 
static int ogg_vorbis_seek (struct ast_filestream *fs, off_t sample_offset, int whence)
 Seek to a specific position in an OGG/Vorbis filestream. More...
 
static off_t ogg_vorbis_tell (struct ast_filestream *fs)
 Tell the current position in OGG/Vorbis filestream measured in pcms. More...
 
static int ogg_vorbis_trunc (struct ast_filestream *fs)
 Trucate an OGG/Vorbis filestream. More...
 
static int ogg_vorbis_write (struct ast_filestream *fs, struct ast_frame *f)
 Write audio data from a frame to an OGG/Vorbis filestream. More...
 
static int unload_module (void)
 
static void write_stream (struct ogg_vorbis_desc *s, FILE *f)
 Write out any pending encoded data. More...
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "OGG/Vorbis audio" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND }
 
static struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_format vorbis_f
 

Detailed Description

OGG/Vorbis streams.

  • File name extension: ogg

Definition in file format_ogg_vorbis.c.

Macro Definition Documentation

#define BLOCK_SIZE   4096 /* used internally in the vorbis routines */

Definition at line 56 of file format_ogg_vorbis.c.

#define BUF_SIZE   (2*SAMPLES_MAX)

Definition at line 54 of file format_ogg_vorbis.c.

Referenced by ogg_vorbis_read().

#define SAMPLES_MAX   512

Definition at line 53 of file format_ogg_vorbis.c.

Function Documentation

static void __reg_module ( void  )
static

Definition at line 453 of file format_ogg_vorbis.c.

static void __unreg_module ( void  )
static

Definition at line 453 of file format_ogg_vorbis.c.

static int load_module ( void  )
static

Definition at line 437 of file format_ogg_vorbis.c.

References ast_format_register, AST_MODULE_LOAD_FAILURE, and AST_MODULE_LOAD_SUCCESS.

438 {
442 }
#define ast_format_register(f)
Definition: mod_format.h:131
static struct ast_format vorbis_f
static void ogg_vorbis_close ( struct ast_filestream fs)
static

Close a OGG/Vorbis filestream.

Parameters
fsA OGG/Vorbis filestream.

Definition at line 278 of file format_ogg_vorbis.c.

References ast_filestream::_private, ast_filestream::f, if(), ogg_vorbis_desc::ov_f, ogg_vorbis_desc::vd, write_stream(), and ogg_vorbis_desc::writing.

279 {
280  struct ogg_vorbis_desc *s = (struct ogg_vorbis_desc *) fs->_private;
281 
282  if (s->writing) {
283  /* Tell the Vorbis encoder that the stream is finished
284  * and write out the rest of the data */
285  vorbis_analysis_wrote(&s->vd, 0);
286  write_stream(s, fs->f);
287  } else {
288  /* clear OggVorbis_File handle */
289  ov_clear(&s->ov_f);
290  }
291 }
static void write_stream(struct ogg_vorbis_desc *s, FILE *f)
Write out any pending encoded data.
vorbis_dsp_state vd
void * _private
Definition: mod_format.h:119
OggVorbis_File ov_f
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
int writing
Indicates whether this filestream is set up for reading or writing.
static int ogg_vorbis_open ( struct ast_filestream s)
static

Create a new OGG/Vorbis filestream and set it up for reading.

Parameters
sFile that points to on disk storage of the OGG/Vorbis data.
Returns
The new filestream.

Definition at line 109 of file format_ogg_vorbis.c.

References ast_filestream::_private, ast_log(), DEFAULT_SAMPLE_RATE, desc, ast_filestream::f, LOG_ERROR, ogg_vorbis_desc::ov_f, and ogg_vorbis_desc::writing.

110 {
111  int result;
112  struct ogg_vorbis_desc *desc = (struct ogg_vorbis_desc *) s->_private;
113 
114  /* initialize private description block */
115  memset(desc, 0, sizeof(struct ogg_vorbis_desc));
116  desc->writing = 0;
117 
118  /* actually open file */
119  result = ov_open_callbacks(s->f, &desc->ov_f, NULL, 0, OV_CALLBACKS_NOCLOSE);
120  if (result != 0) {
121  ast_log(LOG_ERROR, "Error opening Ogg/Vorbis file stream.\n");
122  return -1;
123  }
124 
125  /* check stream(s) type */
126  if (desc->ov_f.vi->channels != 1) {
127  ast_log(LOG_ERROR, "Only monophonic OGG/Vorbis files are currently supported!\n");
128  ov_clear(&desc->ov_f);
129  return -1;
130  }
131 
132  if (desc->ov_f.vi->rate != DEFAULT_SAMPLE_RATE) {
133  ast_log(LOG_ERROR, "Only 8000Hz OGG/Vorbis files are currently supported!\n");
134  ov_clear(&desc->ov_f);
135  return -1;
136  }
137 
138  return 0;
139 }
#define DEFAULT_SAMPLE_RATE
Definition: asterisk.h:41
void * _private
Definition: mod_format.h:119
static const char desc[]
Definition: cdr_radius.c:85
#define LOG_ERROR
Definition: logger.h:155
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
OggVorbis_File ov_f
int writing
Indicates whether this filestream is set up for reading or writing.
static struct ast_frame* ogg_vorbis_read ( struct ast_filestream fs,
int *  whennext 
)
static

Read a frame full of audio data from the filestream.

Parameters
fsThe filestream.
whennextNumber of sample times to schedule the next call.
Returns
A pointer to a frame containing audio data or NULL ifthere is no more audio data.

Definition at line 299 of file format_ogg_vorbis.c.

References __BIG_ENDIAN, ast_filestream::_private, AST_FORMAT_SLINEAR, AST_FRAME_SET_BUFFER, AST_FRAME_VOICE, AST_FRIENDLY_OFFSET, ast_log(), ast_filestream::buf, BUF_SIZE, ast_frame_subclass::codec, ast_frame::data, ast_frame::datalen, desc, ast_filestream::fr, ast_frame::frametype, if(), LOG_WARNING, ast_frame::mallocd, ogg_vorbis_desc::ov_f, ast_frame::ptr, ast_frame::samples, ast_frame::subclass, and ogg_vorbis_desc::writing.

301 {
302  struct ogg_vorbis_desc *desc = (struct ogg_vorbis_desc *) fs->_private;
303  int current_bitstream = -10;
304  char *out_buf;
305  long bytes_read;
306 
307  if (desc->writing) {
308  ast_log(LOG_WARNING, "Reading is not suport on OGG/Vorbis on write files.\n");
309  return NULL;
310  }
311 
312  /* initialize frame */
315  fs->fr.mallocd = 0;
317  out_buf = (char *) (fs->fr.data.ptr); /* SLIN data buffer */
318 
319  /* read samples from OV interface */
320  bytes_read = ov_read(
321  &desc->ov_f,
322  out_buf, /* Buffer to write data */
323  BUF_SIZE, /* Size of buffer */
324  (__BYTE_ORDER == __BIG_ENDIAN), /* Endianes (0 for little) */
325  2, /* 1 = 8bit, 2 = 16bit */
326  1, /* 0 = unsigned, 1 = signed */
327  &current_bitstream /* Returns the current bitstream section */
328  );
329 
330  /* check returned data */
331  if (bytes_read <= 0) {
332  /* End of stream */
333  return NULL;
334  }
335 
336  /* Return decoded bytes */
337  fs->fr.datalen = bytes_read;
338  fs->fr.samples = bytes_read / 2;
339  *whennext = fs->fr.samples;
340  return &fs->fr;
341 }
union ast_frame_subclass subclass
Definition: frame.h:146
void * ptr
Definition: frame.h:160
#define LOG_WARNING
Definition: logger.h:144
#define BUF_SIZE
format_t codec
Definition: frame.h:137
#define AST_FRAME_SET_BUFFER(fr, _base, _ofs, _datalen)
Definition: frame.h:183
#define AST_FRIENDLY_OFFSET
Offset into a frame&#39;s data buffer.
Definition: frame.h:204
int datalen
Definition: frame.h:148
struct ast_frame fr
Definition: mod_format.h:117
void * _private
Definition: mod_format.h:119
static const char desc[]
Definition: cdr_radius.c:85
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
OggVorbis_File ov_f
#define __BIG_ENDIAN
Definition: endian.h:49
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
int mallocd
Definition: frame.h:152
#define AST_FORMAT_SLINEAR
Definition: frame.h:254
int writing
Indicates whether this filestream is set up for reading or writing.
enum ast_frame_type frametype
Definition: frame.h:144
union ast_frame::@172 data
int samples
Definition: frame.h:150
static int ogg_vorbis_rewrite ( struct ast_filestream s,
const char *  comment 
)
static

Create a new OGG/Vorbis filestream and set it up for writing.

Parameters
sFile pointer that points to on-disk storage.
commentComment that should be embedded in the OGG/Vorbis file.
Returns
A new filestream.

Definition at line 147 of file format_ogg_vorbis.c.

References ast_filestream::_private, ast_log(), ast_random(), DEFAULT_SAMPLE_RATE, ogg_vorbis_desc::eos, errno, ast_filestream::f, LOG_ERROR, LOG_WARNING, ogg_vorbis_desc::og, ogg_vorbis_desc::os, ogg_vorbis_desc::vb, ogg_vorbis_desc::vc, ogg_vorbis_desc::vd, ogg_vorbis_desc::vi, ogg_vorbis_desc::writing, and ogg_vorbis_desc::writing_pcm_pos.

149 {
150  ogg_packet header;
151  ogg_packet header_comm;
152  ogg_packet header_code;
153  struct ogg_vorbis_desc *tmp = (struct ogg_vorbis_desc *) s->_private;
154 
155  tmp->writing = 1;
156  tmp->writing_pcm_pos = 0;
157 
158  vorbis_info_init(&tmp->vi);
159 
160  if (vorbis_encode_init_vbr(&tmp->vi, 1, DEFAULT_SAMPLE_RATE, 0.4)) {
161  ast_log(LOG_ERROR, "Unable to initialize Vorbis encoder!\n");
162  return -1;
163  }
164 
165  vorbis_comment_init(&tmp->vc);
166  vorbis_comment_add_tag(&tmp->vc, "ENCODER", "Asterisk PBX");
167  if (comment)
168  vorbis_comment_add_tag(&tmp->vc, "COMMENT", (char *) comment);
169 
170  vorbis_analysis_init(&tmp->vd, &tmp->vi);
171  vorbis_block_init(&tmp->vd, &tmp->vb);
172 
173  ogg_stream_init(&tmp->os, ast_random());
174 
175  vorbis_analysis_headerout(&tmp->vd, &tmp->vc, &header, &header_comm,
176  &header_code);
177  ogg_stream_packetin(&tmp->os, &header);
178  ogg_stream_packetin(&tmp->os, &header_comm);
179  ogg_stream_packetin(&tmp->os, &header_code);
180 
181  while (!tmp->eos) {
182  if (ogg_stream_flush(&tmp->os, &tmp->og) == 0)
183  break;
184  if (!fwrite(tmp->og.header, 1, tmp->og.header_len, s->f)) {
185  ast_log(LOG_WARNING, "fwrite() failed: %s\n", strerror(errno));
186  }
187  if (!fwrite(tmp->og.body, 1, tmp->og.body_len, s->f)) {
188  ast_log(LOG_WARNING, "fwrite() failed: %s\n", strerror(errno));
189  }
190  if (ogg_page_eos(&tmp->og))
191  tmp->eos = 1;
192  }
193 
194  return 0;
195 }
int eos
Indicates whether an End of Stream condition has been detected.
#define DEFAULT_SAMPLE_RATE
Definition: asterisk.h:41
#define LOG_WARNING
Definition: logger.h:144
vorbis_comment vc
off_t writing_pcm_pos
Stores the current pcm position to support tell() on writing mode.
long int ast_random(void)
Definition: utils.c:1640
vorbis_dsp_state vd
void * _private
Definition: mod_format.h:119
#define LOG_ERROR
Definition: logger.h:155
#define comment
Definition: ael_lex.c:961
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
int errno
int writing
Indicates whether this filestream is set up for reading or writing.
ogg_stream_state os
static int ogg_vorbis_seek ( struct ast_filestream fs,
off_t  sample_offset,
int  whence 
)
static

Seek to a specific position in an OGG/Vorbis filestream.

Parameters
sThe filestream to take action on.
sample_offsetNew position for the filestream, measured in 8KHz samples.
whenceLocation to measure
Returns
0 on success, -1 on failure.

Definition at line 382 of file format_ogg_vorbis.c.

References ast_filestream::_private, ast_log(), desc, if(), LOG_WARNING, ogg_vorbis_tell(), ogg_vorbis_desc::ov_f, and ogg_vorbis_desc::writing.

383 {
384  int seek_result = -1;
385  off_t relative_pcm_pos;
386  struct ogg_vorbis_desc *desc = (struct ogg_vorbis_desc *) fs->_private;
387 
388  if (desc->writing) {
389  ast_log(LOG_WARNING, "Seeking is not supported on OGG/Vorbis streams in writing mode!\n");
390  return -1;
391  }
392 
393  /* ov_pcm_seek support seeking only from begining (SEEK_SET), the rest must be emulated */
394  switch (whence) {
395  case SEEK_SET:
396  seek_result = ov_pcm_seek(&desc->ov_f, sample_offset);
397  break;
398  case SEEK_CUR:
399  if ((relative_pcm_pos = ogg_vorbis_tell(fs)) < 0) {
400  seek_result = -1;
401  break;
402  }
403  seek_result = ov_pcm_seek(&desc->ov_f, relative_pcm_pos + sample_offset);
404  break;
405  case SEEK_END:
406  if ((relative_pcm_pos = ov_pcm_total(&desc->ov_f, -1)) < 0) {
407  seek_result = -1;
408  break;
409  }
410  seek_result = ov_pcm_seek(&desc->ov_f, relative_pcm_pos - sample_offset);
411  break;
412  default:
413  ast_log(LOG_WARNING, "Unknown *whence* to seek on OGG/Vorbis streams!\n");
414  break;
415  }
416 
417  /* normalize error value to -1,0 */
418  return (seek_result == 0) ? 0 : -1;
419 }
#define LOG_WARNING
Definition: logger.h:144
void * _private
Definition: mod_format.h:119
static const char desc[]
Definition: cdr_radius.c:85
static off_t ogg_vorbis_tell(struct ast_filestream *fs)
Tell the current position in OGG/Vorbis filestream measured in pcms.
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
OggVorbis_File ov_f
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
int writing
Indicates whether this filestream is set up for reading or writing.
static off_t ogg_vorbis_tell ( struct ast_filestream fs)
static

Tell the current position in OGG/Vorbis filestream measured in pcms.

Parameters
sThe filestream to take action on.
Returns
0 or greater with the position measured in samples, or -1 for false.

Definition at line 360 of file format_ogg_vorbis.c.

References ast_filestream::_private, desc, if(), ogg_vorbis_desc::ov_f, ogg_vorbis_desc::writing, and ogg_vorbis_desc::writing_pcm_pos.

Referenced by ogg_vorbis_seek().

361 {
362  off_t pos;
363  struct ogg_vorbis_desc *desc = (struct ogg_vorbis_desc *) fs->_private;
364 
365  if (desc->writing) {
366  return desc->writing_pcm_pos;
367  }
368 
369  if ((pos = ov_pcm_tell(&desc->ov_f)) < 0) {
370  return -1;
371  }
372  return pos;
373 }
off_t writing_pcm_pos
Stores the current pcm position to support tell() on writing mode.
void * _private
Definition: mod_format.h:119
static const char desc[]
Definition: cdr_radius.c:85
OggVorbis_File ov_f
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
int writing
Indicates whether this filestream is set up for reading or writing.
static int ogg_vorbis_trunc ( struct ast_filestream fs)
static

Trucate an OGG/Vorbis filestream.

Parameters
sThe filestream to truncate.
Returns
0 on success, -1 on failure.

Definition at line 349 of file format_ogg_vorbis.c.

References ast_log(), and LOG_WARNING.

350 {
351  ast_log(LOG_WARNING, "Truncation is not supported on OGG/Vorbis streams!\n");
352  return -1;
353 }
#define LOG_WARNING
Definition: logger.h:144
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
static int ogg_vorbis_write ( struct ast_filestream fs,
struct ast_frame f 
)
static

Write audio data from a frame to an OGG/Vorbis filestream.

Parameters
fsAn OGG/Vorbis filestream.
fA frame containing audio to be written to the filestream.
Returns
-1 if there was an error, 0 on success.

Definition at line 234 of file format_ogg_vorbis.c.

References ast_filestream::_private, AST_FORMAT_SLINEAR, AST_FRAME_VOICE, ast_getformatname(), ast_log(), ast_frame_subclass::codec, ast_frame::data, ast_frame::datalen, ast_filestream::f, ast_frame::frametype, if(), LOG_ERROR, LOG_WARNING, ast_frame::ptr, ast_frame::samples, ast_frame::subclass, ogg_vorbis_desc::vd, write_stream(), ogg_vorbis_desc::writing, and ogg_vorbis_desc::writing_pcm_pos.

235 {
236  int i;
237  float **buffer;
238  short *data;
239  struct ogg_vorbis_desc *s = (struct ogg_vorbis_desc *) fs->_private;
240 
241  if (!s->writing) {
242  ast_log(LOG_ERROR, "This stream is not set up for writing!\n");
243  return -1;
244  }
245 
246  if (f->frametype != AST_FRAME_VOICE) {
247  ast_log(LOG_WARNING, "Asked to write non-voice frame!\n");
248  return -1;
249  }
250  if (f->subclass.codec != AST_FORMAT_SLINEAR) {
251  ast_log(LOG_WARNING, "Asked to write non-SLINEAR frame (%s)!\n",
253  return -1;
254  }
255  if (!f->datalen)
256  return -1;
257 
258  data = (short *) f->data.ptr;
259 
260  buffer = vorbis_analysis_buffer(&s->vd, f->samples);
261 
262  for (i = 0; i < f->samples; i++)
263  buffer[0][i] = (double)data[i] / 32768.0;
264 
265  vorbis_analysis_wrote(&s->vd, f->samples);
266 
267  write_stream(s, fs->f);
268 
269  s->writing_pcm_pos += f->samples;
270 
271  return 0;
272 }
union ast_frame_subclass subclass
Definition: frame.h:146
void * ptr
Definition: frame.h:160
#define LOG_WARNING
Definition: logger.h:144
static void write_stream(struct ogg_vorbis_desc *s, FILE *f)
Write out any pending encoded data.
format_t codec
Definition: frame.h:137
off_t writing_pcm_pos
Stores the current pcm position to support tell() on writing mode.
int datalen
Definition: frame.h:148
vorbis_dsp_state vd
void * _private
Definition: mod_format.h:119
char * ast_getformatname(format_t format)
Get the name of a format.
Definition: frame.c:578
#define LOG_ERROR
Definition: logger.h:155
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
#define AST_FORMAT_SLINEAR
Definition: frame.h:254
int writing
Indicates whether this filestream is set up for reading or writing.
enum ast_frame_type frametype
Definition: frame.h:144
union ast_frame::@172 data
int samples
Definition: frame.h:150
static int unload_module ( void  )
static

Definition at line 444 of file format_ogg_vorbis.c.

References ast_format_unregister(), and ast_format::name.

445 {
447 }
static struct ast_format vorbis_f
int ast_format_unregister(const char *name)
Unregisters a file format.
Definition: file.c:104
char name[80]
Definition: mod_format.h:44
static void write_stream ( struct ogg_vorbis_desc s,
FILE *  f 
)
static

Write out any pending encoded data.

Parameters
sAn OGG/Vorbis filestream.
fThe file to write to.

Definition at line 202 of file format_ogg_vorbis.c.

References ast_log(), ogg_vorbis_desc::eos, errno, LOG_WARNING, ogg_vorbis_desc::og, ogg_vorbis_desc::op, ogg_vorbis_desc::os, ogg_vorbis_desc::vb, and ogg_vorbis_desc::vd.

Referenced by ogg_vorbis_close(), and ogg_vorbis_write().

203 {
204  while (vorbis_analysis_blockout(&s->vd, &s->vb) == 1) {
205  vorbis_analysis(&s->vb, NULL);
206  vorbis_bitrate_addblock(&s->vb);
207 
208  while (vorbis_bitrate_flushpacket(&s->vd, &s->op)) {
209  ogg_stream_packetin(&s->os, &s->op);
210  while (!s->eos) {
211  if (ogg_stream_pageout(&s->os, &s->og) == 0) {
212  break;
213  }
214  if (!fwrite(s->og.header, 1, s->og.header_len, f)) {
215  ast_log(LOG_WARNING, "fwrite() failed: %s\n", strerror(errno));
216  }
217  if (!fwrite(s->og.body, 1, s->og.body_len, f)) {
218  ast_log(LOG_WARNING, "fwrite() failed: %s\n", strerror(errno));
219  }
220  if (ogg_page_eos(&s->og)) {
221  s->eos = 1;
222  }
223  }
224  }
225  }
226 }
int eos
Indicates whether an End of Stream condition has been detected.
#define LOG_WARNING
Definition: logger.h:144
vorbis_dsp_state vd
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
Definition: logger.c:1207
int errno
static struct ast_format f[]
Definition: format_g726.c:181
ogg_stream_state os

Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "OGG/Vorbis audio" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND }
static

Definition at line 453 of file format_ogg_vorbis.c.

Definition at line 453 of file format_ogg_vorbis.c.

struct ast_format vorbis_f
static

Definition at line 421 of file format_ogg_vorbis.c.