[PD-cvs] externals/pdogg/oggcast~ HISTORY,1.2,1.3 codec.h,1.2,1.3 help-oggcast~.pd,1.2,1.3 oggcast~.c,1.5,1.6 readme,1.2,1.3 vorbisenc.h,1.2,1.3

x75 at users.sourceforge.net x75 at users.sourceforge.net
Sun Jan 4 13:16:10 CET 2004


Update of /cvsroot/pure-data/externals/pdogg/oggcast~
In directory sc8-pr-cvs1:/tmp/cvs-serv17605/oggcast~

Modified Files:
	HISTORY codec.h help-oggcast~.pd oggcast~.c readme vorbisenc.h 
Log Message:
recommitting olaf's sources from 0.25


Index: HISTORY
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/HISTORY,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** HISTORY	23 Apr 2003 10:36:25 -0000	1.2
--- HISTORY	4 Jan 2004 12:16:07 -0000	1.3
***************
*** 1,70 ****
! Version history of oggcast~ external for pure-data
! 
! v 0.2h (27th March 2003):
! - added HTTP base auth login for (alpha) Icecast2 server:
!   message 'server 1' switches to Icecast2, 'server 0' back
!   top JRoar and PeerCast compatibility (which is the default)
! 
! v 0.2g (3rd August 2002):
! - finally fixed the bug that made oggcast~ crash after a 
!   while. seems to be realted with output from child thread
!   using t_clocks but couldn't proove that
! 
! v 0.2f (20st july 2002):
! - recompiled with the final 1.0 release of Ogg Vorbis
! - changed the URL to the new akustische-kunst.org domain
! 
! v 0.2e (5th july 2002):
! - added simple downsampling to stream at lower sample rates
! 
! v 0.2d (21st june 2002 - stable release!):
! - cleaned up code a bit
! - now clean disconnect in case server dies or closes
!   socket
! 
! v 0.2c (13th june 2002):
! - fixed some small bugs
! - buffer size now in kbytes per channel
! - some more info-printout
! 
! v 0.2b (12th june 2002):
! - completetly rewritten multithreaded version, first
!   sort-of-stable release
! - KNOWN BUG: eats too much CPU power
! 
! v 0.1g (23rd feb. 2002, not for public use!):
! - added multithreading functionality: now sending data
!   to server in a second thread
! - now included the static ogg vorbis libraries - no dll's
!   needed under win any longer
! - fixed a bug that sometimes made pd crash
! 
! v 0.1f (11th feb. 2002):
! - converted ringbuffer to simple buffer of fixed size
! 
! v 0.1e (10th feb. 2002):
! - now really fixed the bug that made pd die when server
!   disconnected 
! 
! v 0.1d (9th feb. 2002):
! - fixed a bug in the "vorbis" setting that made on-the-run
!   changes impossible 
! - introduced a function to check writeability of the socket
! - fixed the bug that crashed pd due to an access violation
!   in vorbis.dll when send() returned an error (more of a 
!   fast workaround) 
! - corrected bitrate setting, now it really is _k_bps
!   
! 
! v 0.1c (9th feb. 2002):
! - added support for setting / changing the comment tags in 
!   the ogg/vorbis header, spaces have to be replaced by '='
! - fixed a bug in oggcast_stream() that made Pd crash - now
!   it's vorbis.dll that makes Pd crash... ;-(
! 
! v 0.1b (not released):
! - added support for changing encoder settings when stream 
!   is running (no need to disconnect), seems to be unstable 
!   on linux (with JRoar)
! 
  v 0.1: first public release
--- 1,83 ----
! Version history of oggcast~ external for pure-data
! 
! v 0.2k (29th Sept. 2003):
! - fixed a bug in multichannel support
! - fixed a memory leak in Icecast2 login
! 
! v 0.2i (13th September 2003):
! - updated login scheme to work with latest Icecast2 server 
!   from CVS (tested on Windows and Debian Linux)
! - changed handling of comment tags: it's no longer necessarry
!   to replace spaces with underscores! Just use spaces for spaces.
! - fixed (no: avoided!) the bug that deleted underscores from 
!   the Pd patch
! - made Icecast2 login the default scheme
! 
! v 0.2h (27th March 2003):
! - added HTTP base auth login for (alpha) Icecast2 server:
!   message 'server 1' switches to Icecast2, 'server 0' back
!   top JRoar and PeerCast compatibility (which is the default)
! 
! v 0.2g (3rd August 2002):
! - finally fixed the bug that made oggcast~ crash after a 
!   while. seems to be realted with output from child thread
!   using t_clocks but couldn't proove that
! 
! v 0.2f (20st july 2002):
! - recompiled with the final 1.0 release of Ogg Vorbis
! - changed the URL to the new akustische-kunst.org domain
! 
! v 0.2e (5th july 2002):
! - added simple downsampling to stream at lower sample rates
! 
! v 0.2d (21st june 2002 - stable release!):
! - cleaned up code a bit
! - now clean disconnect in case server dies or closes
!   socket
! 
! v 0.2c (13th june 2002):
! - fixed some small bugs
! - buffer size now in kbytes per channel
! - some more info-printout
! 
! v 0.2b (12th june 2002):
! - completetly rewritten multithreaded version, first
!   sort-of-stable release
! - KNOWN BUG: eats too much CPU power
! 
! v 0.1g (23rd feb. 2002, not for public use!):
! - added multithreading functionality: now sending data
!   to server in a second thread
! - now included the static ogg vorbis libraries - no dll's
!   needed under win any longer
! - fixed a bug that sometimes made pd crash
! 
! v 0.1f (11th feb. 2002):
! - converted ringbuffer to simple buffer of fixed size
! 
! v 0.1e (10th feb. 2002):
! - now really fixed the bug that made pd die when server
!   disconnected 
! 
! v 0.1d (9th feb. 2002):
! - fixed a bug in the "vorbis" setting that made on-the-run
!   changes impossible 
! - introduced a function to check writeability of the socket
! - fixed the bug that crashed pd due to an access violation
!   in vorbis.dll when send() returned an error (more of a 
!   fast workaround) 
! - corrected bitrate setting, now it really is _k_bps
!   
! 
! v 0.1c (9th feb. 2002):
! - added support for setting / changing the comment tags in 
!   the ogg/vorbis header, spaces have to be replaced by '='
! - fixed a bug in oggcast_stream() that made Pd crash - now
!   it's vorbis.dll that makes Pd crash... ;-(
! 
! v 0.1b (not released):
! - added support for changing encoder settings when stream 
!   is running (no need to disconnect), seems to be unstable 
!   on linux (with JRoar)
! 
  v 0.1: first public release

Index: codec.h
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/codec.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** codec.h	23 Apr 2003 10:36:25 -0000	1.2
--- codec.h	4 Jan 2004 12:16:07 -0000	1.3
***************
*** 1,233 ****
! /********************************************************************
!  *                                                                  *
!  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
!  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
!  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
!  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
!  *                                                                  *
!  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
!  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
! 
!  ********************************************************************
! 
!  function: libvorbis codec headers
!  last mod: $Id$
! 
!  ********************************************************************/
! 
! #ifndef _vorbis_codec_h_
! #define _vorbis_codec_h_
! 
! #ifdef __cplusplus
! extern "C"
! {
! #endif /* __cplusplus */
! 
! #include <ogg/ogg.h>
! 
! typedef struct vorbis_info{
!   int version;
!   int channels;
!   long rate;
! 
!   /* The below bitrate declarations are *hints*.
!      Combinations of the three values carry the following implications:
!      
!      all three set to the same value: 
!        implies a fixed rate bitstream
!      only nominal set: 
!        implies a VBR stream that averages the nominal bitrate.  No hard 
!        upper/lower limit
!      upper and or lower set: 
!        implies a VBR bitstream that obeys the bitrate limits. nominal 
!        may also be set to give a nominal rate.
!      none set:
!        the coder does not care to speculate.
!   */
! 
!   long bitrate_upper;
!   long bitrate_nominal;
!   long bitrate_lower;
!   long bitrate_window;
! 
!   void *codec_setup;
! } vorbis_info;
! 
! /* vorbis_dsp_state buffers the current vorbis audio
!    analysis/synthesis state.  The DSP state belongs to a specific
!    logical bitstream ****************************************************/
! typedef struct vorbis_dsp_state{
!   int analysisp;
!   vorbis_info *vi;
! 
!   float **pcm;
!   float **pcmret;
!   int      pcm_storage;
!   int      pcm_current;
!   int      pcm_returned;
! 
!   int  preextrapolate;
!   int  eofflag;
! 
!   long lW;
!   long W;
!   long nW;
!   long centerW;
! 
!   ogg_int64_t granulepos;
!   ogg_int64_t sequence;
! 
!   ogg_int64_t glue_bits;
!   ogg_int64_t time_bits;
!   ogg_int64_t floor_bits;
!   ogg_int64_t res_bits;
! 
!   void       *backend_state;
! } vorbis_dsp_state;
! 
! typedef struct vorbis_block{
!   /* necessary stream state for linking to the framing abstraction */
!   float  **pcm;       /* this is a pointer into local storage */ 
!   oggpack_buffer opb;
!   
!   long  lW;
!   long  W;
!   long  nW;
!   int   pcmend;
!   int   mode;
! 
!   int         eofflag;
!   ogg_int64_t granulepos;
!   ogg_int64_t sequence;
!   vorbis_dsp_state *vd; /* For read-only access of configuration */
! 
!   /* local storage to avoid remallocing; it's up to the mapping to
!      structure it */
!   void               *localstore;
!   long                localtop;
!   long                localalloc;
!   long                totaluse;
!   struct alloc_chain *reap;
! 
!   /* bitmetrics for the frame */
!   long glue_bits;
!   long time_bits;
!   long floor_bits;
!   long res_bits;
! 
!   void *internal;
! 
! } vorbis_block;
! 
! /* vorbis_block is a single block of data to be processed as part of
! the analysis/synthesis stream; it belongs to a specific logical
! bitstream, but is independant from other vorbis_blocks belonging to
! that logical bitstream. *************************************************/
! 
! struct alloc_chain{
!   void *ptr;
!   struct alloc_chain *next;
! };
! 
! /* vorbis_info contains all the setup information specific to the
!    specific compression/decompression mode in progress (eg,
!    psychoacoustic settings, channel setup, options, codebook
!    etc). vorbis_info and substructures are in backends.h.
! *********************************************************************/
! 
! /* the comments are not part of vorbis_info so that vorbis_info can be
!    static storage */
! typedef struct vorbis_comment{
!   /* unlimited user comment fields.  libvorbis writes 'libvorbis'
!      whatever vendor is set to in encode */
!   char **user_comments;
!   int   *comment_lengths;
!   int    comments;
!   char  *vendor;
! 
! } vorbis_comment;
! 
! 
! /* libvorbis encodes in two abstraction layers; first we perform DSP
!    and produce a packet (see docs/analysis.txt).  The packet is then
!    coded into a framed OggSquish bitstream by the second layer (see
!    docs/framing.txt).  Decode is the reverse process; we sync/frame
!    the bitstream and extract individual packets, then decode the
!    packet back into PCM audio.
! 
!    The extra framing/packetizing is used in streaming formats, such as
!    files.  Over the net (such as with UDP), the framing and
!    packetization aren't necessary as they're provided by the transport
!    and the streaming layer is not used */
! 
! /* Vorbis PRIMITIVES: general ***************************************/
! 
! extern void     vorbis_info_init(vorbis_info *vi);
! extern void     vorbis_info_clear(vorbis_info *vi);
! extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
! extern void     vorbis_comment_init(vorbis_comment *vc);
! extern void     vorbis_comment_add(vorbis_comment *vc, char *comment); 
! extern void     vorbis_comment_add_tag(vorbis_comment *vc, 
! 				       char *tag, char *contents);
! extern char    *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
! extern int      vorbis_comment_query_count(vorbis_comment *vc, char *tag);
! extern void     vorbis_comment_clear(vorbis_comment *vc);
! 
! extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
! extern int      vorbis_block_clear(vorbis_block *vb);
! extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
! 
! /* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
! 
! extern int      vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
! extern int      vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
! extern int      vorbis_analysis_headerout(vorbis_dsp_state *v,
! 					  vorbis_comment *vc,
! 					  ogg_packet *op,
! 					  ogg_packet *op_comm,
! 					  ogg_packet *op_code);
! extern float  **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
! extern int      vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
! extern int      vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
! extern int      vorbis_analysis(vorbis_block *vb,ogg_packet *op);
! 
! extern int      vorbis_bitrate_addblock(vorbis_block *vb);
! extern int      vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
! 					   ogg_packet *op);
! 
! /* Vorbis PRIMITIVES: synthesis layer *******************************/
! extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
! 					  ogg_packet *op);
! 
! extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
! extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
! extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
! extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
! extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
! extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
! extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
! 
! /* Vorbis ERRORS and return codes ***********************************/
! 
! #define OV_FALSE      -1  
! #define OV_EOF        -2
! #define OV_HOLE       -3
! 
! #define OV_EREAD      -128
! #define OV_EFAULT     -129
! #define OV_EIMPL      -130
! #define OV_EINVAL     -131
! #define OV_ENOTVORBIS -132
! #define OV_EBADHEADER -133
! #define OV_EVERSION   -134
! #define OV_ENOTAUDIO  -135
! #define OV_EBADPACKET -136
! #define OV_EBADLINK   -137
! #define OV_ENOSEEK    -138
! 
! #ifdef __cplusplus
! }
! #endif /* __cplusplus */
! 
! #endif
! 
--- 1,233 ----
! /********************************************************************
!  *                                                                  *
!  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
!  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
!  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
!  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
!  *                                                                  *
!  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
!  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
! 
!  ********************************************************************
! 
!  function: libvorbis codec headers
!  last mod: $Id$
! 
!  ********************************************************************/
! 
! #ifndef _vorbis_codec_h_
! #define _vorbis_codec_h_
! 
! #ifdef __cplusplus
! extern "C"
! {
! #endif /* __cplusplus */
! 
! #include <ogg/ogg.h>
! 
! typedef struct vorbis_info{
!   int version;
!   int channels;
!   long rate;
! 
!   /* The below bitrate declarations are *hints*.
!      Combinations of the three values carry the following implications:
!      
!      all three set to the same value: 
!        implies a fixed rate bitstream
!      only nominal set: 
!        implies a VBR stream that averages the nominal bitrate.  No hard 
!        upper/lower limit
!      upper and or lower set: 
!        implies a VBR bitstream that obeys the bitrate limits. nominal 
!        may also be set to give a nominal rate.
!      none set:
!        the coder does not care to speculate.
!   */
! 
!   long bitrate_upper;
!   long bitrate_nominal;
!   long bitrate_lower;
!   long bitrate_window;
! 
!   void *codec_setup;
! } vorbis_info;
! 
! /* vorbis_dsp_state buffers the current vorbis audio
!    analysis/synthesis state.  The DSP state belongs to a specific
!    logical bitstream ****************************************************/
! typedef struct vorbis_dsp_state{
!   int analysisp;
!   vorbis_info *vi;
! 
!   float **pcm;
!   float **pcmret;
!   int      pcm_storage;
!   int      pcm_current;
!   int      pcm_returned;
! 
!   int  preextrapolate;
!   int  eofflag;
! 
!   long lW;
!   long W;
!   long nW;
!   long centerW;
! 
!   ogg_int64_t granulepos;
!   ogg_int64_t sequence;
! 
!   ogg_int64_t glue_bits;
!   ogg_int64_t time_bits;
!   ogg_int64_t floor_bits;
!   ogg_int64_t res_bits;
! 
!   void       *backend_state;
! } vorbis_dsp_state;
! 
! typedef struct vorbis_block{
!   /* necessary stream state for linking to the framing abstraction */
!   float  **pcm;       /* this is a pointer into local storage */ 
!   oggpack_buffer opb;
!   
!   long  lW;
!   long  W;
!   long  nW;
!   int   pcmend;
!   int   mode;
! 
!   int         eofflag;
!   ogg_int64_t granulepos;
!   ogg_int64_t sequence;
!   vorbis_dsp_state *vd; /* For read-only access of configuration */
! 
!   /* local storage to avoid remallocing; it's up to the mapping to
!      structure it */
!   void               *localstore;
!   long                localtop;
!   long                localalloc;
!   long                totaluse;
!   struct alloc_chain *reap;
! 
!   /* bitmetrics for the frame */
!   long glue_bits;
!   long time_bits;
!   long floor_bits;
!   long res_bits;
! 
!   void *internal;
! 
! } vorbis_block;
! 
! /* vorbis_block is a single block of data to be processed as part of
! the analysis/synthesis stream; it belongs to a specific logical
! bitstream, but is independant from other vorbis_blocks belonging to
! that logical bitstream. *************************************************/
! 
! struct alloc_chain{
!   void *ptr;
!   struct alloc_chain *next;
! };
! 
! /* vorbis_info contains all the setup information specific to the
!    specific compression/decompression mode in progress (eg,
!    psychoacoustic settings, channel setup, options, codebook
!    etc). vorbis_info and substructures are in backends.h.
! *********************************************************************/
! 
! /* the comments are not part of vorbis_info so that vorbis_info can be
!    static storage */
! typedef struct vorbis_comment{
!   /* unlimited user comment fields.  libvorbis writes 'libvorbis'
!      whatever vendor is set to in encode */
!   char **user_comments;
!   int   *comment_lengths;
!   int    comments;
!   char  *vendor;
! 
! } vorbis_comment;
! 
! 
! /* libvorbis encodes in two abstraction layers; first we perform DSP
!    and produce a packet (see docs/analysis.txt).  The packet is then
!    coded into a framed OggSquish bitstream by the second layer (see
!    docs/framing.txt).  Decode is the reverse process; we sync/frame
!    the bitstream and extract individual packets, then decode the
!    packet back into PCM audio.
! 
!    The extra framing/packetizing is used in streaming formats, such as
!    files.  Over the net (such as with UDP), the framing and
!    packetization aren't necessary as they're provided by the transport
!    and the streaming layer is not used */
! 
! /* Vorbis PRIMITIVES: general ***************************************/
! 
! extern void     vorbis_info_init(vorbis_info *vi);
! extern void     vorbis_info_clear(vorbis_info *vi);
! extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
! extern void     vorbis_comment_init(vorbis_comment *vc);
! extern void     vorbis_comment_add(vorbis_comment *vc, char *comment); 
! extern void     vorbis_comment_add_tag(vorbis_comment *vc, 
! 				       char *tag, char *contents);
! extern char    *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
! extern int      vorbis_comment_query_count(vorbis_comment *vc, char *tag);
! extern void     vorbis_comment_clear(vorbis_comment *vc);
! 
! extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
! extern int      vorbis_block_clear(vorbis_block *vb);
! extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
! 
! /* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
! 
! extern int      vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
! extern int      vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
! extern int      vorbis_analysis_headerout(vorbis_dsp_state *v,
! 					  vorbis_comment *vc,
! 					  ogg_packet *op,
! 					  ogg_packet *op_comm,
! 					  ogg_packet *op_code);
! extern float  **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
! extern int      vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
! extern int      vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
! extern int      vorbis_analysis(vorbis_block *vb,ogg_packet *op);
! 
! extern int      vorbis_bitrate_addblock(vorbis_block *vb);
! extern int      vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
! 					   ogg_packet *op);
! 
! /* Vorbis PRIMITIVES: synthesis layer *******************************/
! extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
! 					  ogg_packet *op);
! 
! extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
! extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
! extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
! extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
! extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
! extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
! extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
! 
! /* Vorbis ERRORS and return codes ***********************************/
! 
! #define OV_FALSE      -1  
! #define OV_EOF        -2
! #define OV_HOLE       -3
! 
! #define OV_EREAD      -128
! #define OV_EFAULT     -129
! #define OV_EIMPL      -130
! #define OV_EINVAL     -131
! #define OV_ENOTVORBIS -132
! #define OV_EBADHEADER -133
! #define OV_EVERSION   -134
! #define OV_ENOTAUDIO  -135
! #define OV_EBADPACKET -136
! #define OV_EBADLINK   -137
! #define OV_ENOSEEK    -138
! 
! #ifdef __cplusplus
! }
! #endif /* __cplusplus */
! 
! #endif
! 

Index: help-oggcast~.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/help-oggcast~.pd,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** help-oggcast~.pd	23 Apr 2003 10:36:25 -0000	1.2
--- help-oggcast~.pd	4 Jan 2004 12:16:07 -0000	1.3
***************
*** 1,65 ****
! #N canvas 298 121 629 593 10;
! #X floatatom 18 36 0 40 16000 0 - - -;
! #X msg 468 508 \; pd dsp 1;
! #X floatatom 18 524 0 0 0 0 - - -;
! #X msg 185 250 disconnect;
! #X msg 213 352 print;
! #X msg 534 508 \; pd dsp 0;
! #X obj 468 482 loadbang;
! #X floatatom 97 502 10 0 0 0 - - -;
! #X text 131 154 connect <host> <mountpoint> <port>;
! #X text 272 45 get latest version at;
! #X text 168 502 ogg pages;
! #X text 48 527 connection state;
! #X text 378 337 channels: 1 or 2 (default);
! #X text 210 304 vbr <samplerate> <channels> <quality>;
! #X msg 100 57 passwd letmein;
! #X obj 18 63 osc~ 440;
! #X text 330 326 quality settings: 0 - 1 (low - hi);
! #X text 227 412 possible tags: TITLE \, ARTIST \, PERFORMER \, DESCRIPTION
! \,;
! #X text 316 425 GENRE \, LOCATION \, COPYRIGHT \, CONTACT \, DATE;
! #X msg 163 194 connect 141.53.196.149 puredata.ogg 8000;
! #X msg 133 172 connect localhost puredata.ogg 8000;
! #X msg 170 220 connect 141.53.3.18 musicforfilms.ogg 8100;
! #X obj 18 475 oggcast~ 2 512;
! #X text 273 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
! #X text 252 353 print current settings to console window;
! #X text 225 373 comment: <TAG> <content>;
! #X msg 225 390 ARTIST your_name;
! #X text 228 444 '_' (underline) or '=' (equal sign) will get replaced
! with spaces!;
! #X text 240 493 default is 2 channels and 512k;
! #X text 241 505 bytes buffer size;
! #X text 119 475 creation arguments: oggcast~ <channels> <buffer size>
! ;
! #X msg 195 285 vorbis 44100 2 144 128 96;
! #X obj 33 110 noise~;
! #X text 19 6 oggcast~ 0.2f - send Ogg Vorbis stream to IceCast2 or
! JRoar;
! #X text 274 59 http://www.akustische-kunst.org/puredata/;
! #X text 195 268 vorbis <samplerate> <channels> <max.br> <nom.br> <min.br>
! ;
! #X msg 210 320 vbr 44100 2 0.6;
! #X msg 117 95 server 0;
! #X msg 129 120 server 1;
! #X text 175 94 choose JRoar or old Icecast2 as server type (default)
! ;
! #X text 188 121 choose new Icecast2 (final) as server type;
! #X connect 0 0 15 0;
! #X connect 3 0 22 0;
! #X connect 4 0 22 0;
! #X connect 6 0 1 0;
! #X connect 14 0 22 0;
! #X connect 15 0 22 0;
! #X connect 19 0 22 0;
! #X connect 20 0 22 0;
! #X connect 21 0 22 0;
! #X connect 22 0 2 0;
! #X connect 22 1 7 0;
! #X connect 26 0 22 0;
! #X connect 31 0 22 0;
! #X connect 32 0 22 1;
! #X connect 36 0 22 0;
! #X connect 37 0 22 0;
! #X connect 38 0 22 0;
--- 1,65 ----
! #N canvas 298 121 629 593 10;
! #X floatatom 18 36 0 40 16000 0 - - -;
! #X msg 468 508 \; pd dsp 1;
! #X floatatom 18 524 0 0 0 0 - - -;
! #X msg 185 250 disconnect;
! #X msg 213 352 print;
! #X msg 534 508 \; pd dsp 0;
! #X obj 468 482 loadbang;
! #X floatatom 97 502 10 0 0 0 - - -;
! #X text 131 154 connect <host> <mountpoint> <port>;
! #X text 272 45 get latest version at;
! #X text 168 502 ogg pages;
! #X text 48 527 connection state;
! #X text 378 337 channels: 1 or 2 (default);
! #X text 210 304 vbr <samplerate> <channels> <quality>;
! #X msg 100 57 passwd letmein;
! #X obj 18 63 osc~ 440;
! #X text 330 326 quality settings: 0 - 1 (low - hi);
! #X text 227 412 possible tags: TITLE \, ARTIST \, PERFORMER \, DESCRIPTION
! \,;
! #X text 316 425 GENRE \, LOCATION \, COPYRIGHT \, CONTACT \, DATE;
! #X msg 163 194 connect 141.53.196.149 puredata.ogg 8000;
! #X msg 133 172 connect localhost puredata.ogg 8000;
! #X msg 170 220 connect 141.53.3.18 musicforfilms.ogg 8100;
! #X obj 18 475 oggcast~ 2 512;
! #X text 273 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
! #X text 252 353 print current settings to console window;
! #X text 225 373 comment: <TAG> <content>;
! #X msg 225 390 ARTIST your_name;
! #X text 228 444 '_' (underline) or '=' (equal sign) will get replaced
! with spaces!;
! #X text 240 493 default is 2 channels and 512k;
! #X text 241 505 bytes buffer size;
! #X text 119 475 creation arguments: oggcast~ <channels> <buffer size>
! ;
! #X msg 195 285 vorbis 44100 2 144 128 96;
! #X obj 33 110 noise~;
! #X text 19 6 oggcast~ 0.2f - send Ogg Vorbis stream to IceCast2 or
! JRoar;
! #X text 274 59 http://www.akustische-kunst.org/puredata/;
! #X text 195 268 vorbis <samplerate> <channels> <max.br> <nom.br> <min.br>
! ;
! #X msg 210 320 vbr 44100 2 0.6;
! #X msg 117 95 server 0;
! #X msg 129 120 server 1;
! #X text 175 94 choose JRoar or old Icecast2 as server type (default)
! ;
! #X text 188 121 choose new Icecast2 (final) as server type;
! #X connect 0 0 15 0;
! #X connect 3 0 22 0;
! #X connect 4 0 22 0;
! #X connect 6 0 1 0;
! #X connect 14 0 22 0;
! #X connect 15 0 22 0;
! #X connect 19 0 22 0;
! #X connect 20 0 22 0;
! #X connect 21 0 22 0;
! #X connect 22 0 2 0;
! #X connect 22 1 7 0;
! #X connect 26 0 22 0;
! #X connect 31 0 22 0;
! #X connect 32 0 22 1;
! #X connect 36 0 22 0;
! #X connect 37 0 22 0;
! #X connect 38 0 22 0;

Index: oggcast~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/oggcast~.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** oggcast~.c	13 Sep 2003 23:04:26 -0000	1.5
--- oggcast~.c	4 Jan 2004 12:16:07 -0000	1.6
***************
*** 1,1435 ****
! /* ------------------------- oggcast~ ----------------------------------------- */
! /*                                                                              */
! /* Tilde object to send an Ogg Vorbis stream from to IceCast2 server.           */
! /* Written by Olaf Matthes (olaf.matthes at gmx.de)                                */
! /* Get source at http://www.akustische-kunst.org/puredata/pdogg/                */
! /*                                                                              */
! /* This library is free software; you can redistribute it and/or                */
! /* modify it under the terms of the GNU Lesser General Public                   */
! /* License as published by the Free Software Foundation; either                 */
! /* version 2 of the License, or (at your option) any later version.             */
[...2851 lines suppressed...]
! }
! 
! void oggcast_tilde_setup(void)
! {
!     oggcast_class = class_new(gensym("oggcast~"), (t_newmethod)oggcast_new, 
!     	(t_method)oggcast_free, sizeof(t_oggcast), 0, A_DEFFLOAT, A_DEFFLOAT, 0);
!     CLASS_MAINSIGNALIN(oggcast_class, t_oggcast, x_f );
!     class_addfloat(oggcast_class, (t_method)oggcast_float);
!     class_addmethod(oggcast_class, (t_method)oggcast_disconnect, gensym("disconnect"), 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_dsp, gensym("dsp"), 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_connect, gensym("connect"), A_GIMME, 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_print, gensym("print"), 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_password, gensym("passwd"), A_SYMBOL, 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_vorbis, gensym("vorbis"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_vbr, gensym("vbr"), A_FLOAT, A_FLOAT, A_FLOAT, 0);
!     class_addmethod(oggcast_class, (t_method)oggcast_server, gensym("server"), A_FLOAT, 0);
!     class_addanything(oggcast_class, oggcast_comment);
!     class_sethelpsymbol(oggcast_class, gensym("help-oggcast~.pd"));
! }
\ No newline at end of file

Index: readme
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/readme,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** readme	23 Apr 2003 10:36:25 -0000	1.2
--- readme	4 Jan 2004 12:16:07 -0000	1.3
***************
*** 1,116 ****
! Version 0.2
! copyright (c) 2002 by Olaf Matthes
! 
! oggcast~ is a ogg/vorbis streaming external for pd (by Miller 
! Puckette) that connects to an IceCast2 server.
! 
! 
! To run oggcast~ place the file oggcast~.dll for win or oggcast~.pd_linux 
! in the directory of our patch or start pd with '-lib oggcast~' flag. 
! 
! To compile oggcast~ on Linux get the ogg/vorbice library from 
! http://www.vorbis.com/.
! You have to modify the makefile to make it point to the place where the
! ogg/vorbis library is.
! 
! 
! This software is published under LGPL terms.
! 
! This is software with ABSOLUTELY NO WARRANTY.
! Use it at your OWN RISK. It's possible to damage e.g. hardware or your hearing
! due to a bug or for other reasons. 
! 
! *****************************************************************************
! 
! oggcast~ uses the ogg/vorbice library to encode audio data.
! The latest version of ogg/vorbis can be found at http://www.vorbice.com/
! 
! Below is the original copyright information taken from the ogg/vorbis library:
! 
! 
! Copyright (c) 2001, Xiphophorus
! 
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions
! are met:
! 
! - Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
! 
! - Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
! 
! - Neither the name of the Xiphophorus nor the names of its contributors
! may be used to endorse or promote products derived from this software
! without specific prior written permission.
! 
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
! A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
! *****************************************************************************
! 
! Usage:
! 
! Use message "vbr <samplerate> <channels> <quality>" to set the vorbis
! encoding parameters. Resampling is currently not supported, so 'samplerate' 
! should be the one pd is running at. 'channels' specyfies the number of channels 
! to stream. This can be set to 2 (default) or 1 which means mono stream taking
! the leftmost audio input only. 'quality' can be a value between 0.0 and 1.0 
! giving the quality of the stream. 0.4 (default) results in a stream that's 
! about 128kbps. 
! 
! Since Vorbis uses VBR encoding, bitrates vary depending on the type of audio
! signal to be encoded. A pure sine [osc~] results in the smalest stream, com-
! plex audio signals will increase this value significantly. To test the maximum 
! bitrate that might occur for a quality setting use noise~ as signal input.
! 
! Use message "vorbis <samplerate> <channels> <maximum bitrate> <nominal bit-
! rate> <minimal bitrate>" to set encoding quality on the basis of bitrates.
! When setting all three bitrate parameters to the same value one gets a
! constant bitrate stream. Values are in kbps!
! 
! Message "connect <host> <mountpoint> <port>" connects to the IceCast2 server.
! Note that no response about succesfull connection is send by the server. All
! messages in the pd console window about connection status depend on the ability
! to send data to the server.
! The mountpoint should end with '.ogg' to indiocate to the player/client that 
! it is an ogg/vorbis encoded stream.
! 
! Use "passwd <passwort>" to set your password (default is 'letmein') and 
! "disconnect" to disconnect from the server. "print" prints out the current
! vorbis encoder settings.
! 
! To set the comment tags in the ogg/vorbis header (which can be displayed by
! the receiving client) use message "<NAMEOFTAG> <comment>". Supported tags are:
! TITLE, ARTIST, GENRE, PERFORMER, LOCATION, COPYRIGHT, CONTACT, DESCRIPTION and
! DATE (which is automatically set to the date/time the broadcast started). To
! get spaces use '=' or '_' instead. Note that under Win2k '=' sometimes get lost 
! from the patch after saving!!!
! 
! 
! Listening to it:
! 
! To listen to ogg/vorbis encoded livestreams many player need an extra plug-in.
! Have a look at http://www.vorbis.com/ to find the appropiate plug-in for your
! player.
! To play back the stream just open lacation http://<server>:<port>/<mountpoint>.
! 
! Note that changing encoding parameters or header comments while oggcast~ is
! streaming to the server might result in audible dropouts.
! 
! 
! 
! Latest version can be found at:
! http://www.akustische-kunst.de/puredata/
! 
  Please report any bugs to olaf.matthes at gmx.de!
--- 1,116 ----
! Version 0.2
! copyright (c) 2002 by Olaf Matthes
! 
! oggcast~ is a ogg/vorbis streaming external for pd (by Miller 
! Puckette) that connects to an IceCast2 server.
! 
! 
! To run oggcast~ place the file oggcast~.dll for win or oggcast~.pd_linux 
! in the directory of our patch or start pd with '-lib oggcast~' flag. 
! 
! To compile oggcast~ on Linux get the ogg/vorbice library from 
! http://www.vorbis.com/.
! You have to modify the makefile to make it point to the place where the
! ogg/vorbis library is.
! 
! 
! This software is published under LGPL terms.
! 
! This is software with ABSOLUTELY NO WARRANTY.
! Use it at your OWN RISK. It's possible to damage e.g. hardware or your hearing
! due to a bug or for other reasons. 
! 
! *****************************************************************************
! 
! oggcast~ uses the ogg/vorbice library to encode audio data.
! The latest version of ogg/vorbis can be found at http://www.vorbice.com/
! 
! Below is the original copyright information taken from the ogg/vorbis library:
! 
! 
! Copyright (c) 2001, Xiphophorus
! 
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions
! are met:
! 
! - Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
! 
! - Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
! 
! - Neither the name of the Xiphophorus nor the names of its contributors
! may be used to endorse or promote products derived from this software
! without specific prior written permission.
! 
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
! A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
! *****************************************************************************
! 
! Usage:
! 
! Use message "vbr <samplerate> <channels> <quality>" to set the vorbis
! encoding parameters. Resampling is currently not supported, so 'samplerate' 
! should be the one pd is running at. 'channels' specyfies the number of channels 
! to stream. This can be set to 2 (default) or 1 which means mono stream taking
! the leftmost audio input only. 'quality' can be a value between 0.0 and 1.0 
! giving the quality of the stream. 0.4 (default) results in a stream that's 
! about 128kbps. 
! 
! Since Vorbis uses VBR encoding, bitrates vary depending on the type of audio
! signal to be encoded. A pure sine [osc~] results in the smalest stream, com-
! plex audio signals will increase this value significantly. To test the maximum 
! bitrate that might occur for a quality setting use noise~ as signal input.
! 
! Use message "vorbis <samplerate> <channels> <maximum bitrate> <nominal bit-
! rate> <minimal bitrate>" to set encoding quality on the basis of bitrates.
! When setting all three bitrate parameters to the same value one gets a
! constant bitrate stream. Values are in kbps!
! 
! Message "connect <host> <mountpoint> <port>" connects to the IceCast2 server.
! Note that no response about succesfull connection is send by the server. All
! messages in the pd console window about connection status depend on the ability
! to send data to the server.
! The mountpoint should end with '.ogg' to indiocate to the player/client that 
! it is an ogg/vorbis encoded stream.
! 
! Use "passwd <passwort>" to set your password (default is 'letmein') and 
! "disconnect" to disconnect from the server. "print" prints out the current
! vorbis encoder settings.
! 
! To set the comment tags in the ogg/vorbis header (which can be displayed by
! the receiving client) use message "<NAMEOFTAG> <comment>". Supported tags are:
! TITLE, ARTIST, GENRE, PERFORMER, LOCATION, COPYRIGHT, CONTACT, DESCRIPTION and
! DATE (which is automatically set to the date/time the broadcast started). To
! get spaces use '=' or '_' instead. Note that under Win2k '=' sometimes get lost 
! from the patch after saving!!!
! 
! 
! Listening to it:
! 
! To listen to ogg/vorbis encoded livestreams many player need an extra plug-in.
! Have a look at http://www.vorbis.com/ to find the appropiate plug-in for your
! player.
! To play back the stream just open lacation http://<server>:<port>/<mountpoint>.
! 
! Note that changing encoding parameters or header comments while oggcast~ is
! streaming to the server might result in audible dropouts.
! 
! 
! 
! Latest version can be found at:
! http://www.akustische-kunst.de/puredata/
! 
  Please report any bugs to olaf.matthes at gmx.de!

Index: vorbisenc.h
===================================================================
RCS file: /cvsroot/pure-data/externals/pdogg/oggcast~/vorbisenc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** vorbisenc.h	23 Apr 2003 10:36:25 -0000	1.2
--- vorbisenc.h	4 Jan 2004 12:16:07 -0000	1.3
***************
*** 1,93 ****
! /********************************************************************
!  *                                                                  *
!  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
!  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
!  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
!  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
!  *                                                                  *
!  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
!  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
!  *                                                                  *
!  ********************************************************************
! 
!  function: vorbis encode-engine setup
!  last mod: $Id$
! 
!  ********************************************************************/
! 
! #ifndef _OV_ENC_H_
! #define _OV_ENC_H_
! 
! #ifdef __cplusplus
! extern "C"
! {
! #endif /* __cplusplus */
! 
! #include "codec.h"
! 
! extern int vorbis_encode_init(vorbis_info *vi,
! 			      long channels,
! 			      long rate,
! 			      
! 			      long max_bitrate,
! 			      long nominal_bitrate,
! 			      long min_bitrate);
! 
! extern int vorbis_encode_setup_managed(vorbis_info *vi,
! 				       long channels,
! 				       long rate,
! 				       
! 				       long max_bitrate,
! 				       long nominal_bitrate,
! 				       long min_bitrate);
!   
! extern int vorbis_encode_setup_vbr(vorbis_info *vi,
! 				  long channels,
! 				  long rate,
! 				  
! 				  float /* quality level from 0. (lo) to 1. (hi) */
! 				  );
! 
! extern int vorbis_encode_init_vbr(vorbis_info *vi,
! 				  long channels,
! 				  long rate,
! 				  
! 				  float base_quality /* quality level from 0. (lo) to 1. (hi) */
! 				  );
! 
! extern int vorbis_encode_setup_init(vorbis_info *vi);
! 
! extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
! 
! #define OV_ECTL_RATEMANAGE_GET       0x10
! 
! #define OV_ECTL_RATEMANAGE_SET       0x11
! #define OV_ECTL_RATEMANAGE_AVG       0x12
! #define OV_ECTL_RATEMANAGE_HARD      0x13
! 
! #define OV_ECTL_LOWPASS_GET          0x20
! #define OV_ECTL_LOWPASS_SET          0x21
! 
! #define OV_ECTL_IBLOCK_GET           0x30
! #define OV_ECTL_IBLOCK_SET           0x31
! 
! struct ovectl_ratemanage_arg {
!   int    management_active;
! 
!   long   bitrate_hard_min;
!   long   bitrate_hard_max;
!   double bitrate_hard_window;
! 
!   long   bitrate_av_lo;
!   long   bitrate_av_hi;
!   double bitrate_av_window;
!   double bitrate_av_window_center;
! };
! 
! #ifdef __cplusplus
! }
! #endif /* __cplusplus */
! 
! #endif
! 
! 
--- 1,93 ----
! /********************************************************************
!  *                                                                  *
!  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
!  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
!  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
!  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
!  *                                                                  *
!  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
!  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
!  *                                                                  *
!  ********************************************************************
! 
!  function: vorbis encode-engine setup
!  last mod: $Id$
! 
!  ********************************************************************/
! 
! #ifndef _OV_ENC_H_
! #define _OV_ENC_H_
! 
! #ifdef __cplusplus
! extern "C"
! {
! #endif /* __cplusplus */
! 
! #include "codec.h"
! 
! extern int vorbis_encode_init(vorbis_info *vi,
! 			      long channels,
! 			      long rate,
! 			      
! 			      long max_bitrate,
! 			      long nominal_bitrate,
! 			      long min_bitrate);
! 
! extern int vorbis_encode_setup_managed(vorbis_info *vi,
! 				       long channels,
! 				       long rate,
! 				       
! 				       long max_bitrate,
! 				       long nominal_bitrate,
! 				       long min_bitrate);
!   
! extern int vorbis_encode_setup_vbr(vorbis_info *vi,
! 				  long channels,
! 				  long rate,
! 				  
! 				  float /* quality level from 0. (lo) to 1. (hi) */
! 				  );
! 
! extern int vorbis_encode_init_vbr(vorbis_info *vi,
! 				  long channels,
! 				  long rate,
! 				  
! 				  float base_quality /* quality level from 0. (lo) to 1. (hi) */
! 				  );
! 
! extern int vorbis_encode_setup_init(vorbis_info *vi);
! 
! extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
! 
! #define OV_ECTL_RATEMANAGE_GET       0x10
! 
! #define OV_ECTL_RATEMANAGE_SET       0x11
! #define OV_ECTL_RATEMANAGE_AVG       0x12
! #define OV_ECTL_RATEMANAGE_HARD      0x13
! 
! #define OV_ECTL_LOWPASS_GET          0x20
! #define OV_ECTL_LOWPASS_SET          0x21
! 
! #define OV_ECTL_IBLOCK_GET           0x30
! #define OV_ECTL_IBLOCK_SET           0x31
! 
! struct ovectl_ratemanage_arg {
!   int    management_active;
! 
!   long   bitrate_hard_min;
!   long   bitrate_hard_max;
!   double bitrate_hard_window;
! 
!   long   bitrate_av_lo;
!   long   bitrate_av_hi;
!   double bitrate_av_window;
!   double bitrate_av_window_center;
! };
! 
! #ifdef __cplusplus
! }
! #endif /* __cplusplus */
! 
! #endif
! 
! 






More information about the Pd-cvs mailing list