Mercurial > audlegacy
diff Plugins/Input/mpg123/mpg123.h @ 61:fa848bd484d8 trunk
[svn] Move plugins to Plugins/
author | nenolod |
---|---|
date | Fri, 28 Oct 2005 22:58:11 -0700 |
parents | |
children | 05d824e30afd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/Input/mpg123/mpg123.h Fri Oct 28 22:58:11 2005 -0700 @@ -0,0 +1,303 @@ +/* + * mpg123 defines + * used source: musicout.h from mpegaudio package + */ + +#ifndef __MPG123_H__ +#define __MPG123_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> + + +enum { + SYNTH_AUTO, + SYNTH_FPU, + SYNTH_3DNOW, + SYNTH_MMX, +}; + +enum { + DETECT_EXTENSION, + DETECT_CONTENT, + DETECT_BOTH +}; + +#include <gtk/gtk.h> + +#include "audacious/plugin.h" +#include "dxhead.h" +#include "xmms-id3.h" + +#define real float + +#define SBLIMIT 32 +#define SCALE_BLOCK 12 +#define SSLIMIT 18 + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +#define ENCODING_SEPARATOR " ,:;|/" + +struct id3v1tag_t { + char tag[3]; /* always "TAG": defines ID3v1 tag 128 bytes before EOF */ + char title[30]; + char artist[30]; + char album[30]; + char year[4]; + union { + struct { + char comment[30]; + } v1_0; + struct { + char comment[28]; + char __zero; + unsigned char track_number; + } v1_1; + } u; + unsigned char genre; +}; + +struct id3tag_t { + char title[64]; + char artist[64]; + char album[64]; + char comment[256]; + char genre[256]; + gint year; + gint track_number; +}; + +typedef struct { + int going, num_frames, eof, jump_to_time, eq_active; + int songtime; + double tpf; + float eq_mul[576]; + gboolean output_audio, first_frame, network_stream; + guint32 filesize; /* Filesize without junk */ +} PlayerInfo; + +void mpg123_set_eq(int on, float preamp, float *band); +void mpg123_file_info_box(char *); + +extern PlayerInfo *mpg123_info; +extern InputPlugin mpg123_ip; + +struct al_table { + short bits; + short d; +}; + +struct frame { + struct al_table *alloc; + int (*synth) (real *, int, unsigned char *, int *); + int (*synth_mono) (real *, unsigned char *, int *); +#ifdef USE_SIMD + void (*dct36) (real *, real *, real *, real *, real *); +#endif + int stereo; + int jsbound; + int single; + int II_sblimit; + int down_sample_sblimit; + int lsf; + int mpeg25; + int down_sample; + int header_change; + int lay; + int (*do_layer) (struct frame * fr); + int error_protection; + int bitrate_index; + int sampling_frequency; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + int framesize; /* computed framesize */ + int synth_type; +}; + +void mpg123_configure(void); + +typedef struct { + gint resolution; + gint channels; + gint downsample; + gint http_buffer_size; + gint http_prebuffer; + gboolean use_proxy; + gchar *proxy_host; + gint proxy_port; + gboolean proxy_use_auth; + gchar *proxy_user, *proxy_pass; + gboolean save_http_stream; + gchar *save_http_path; + gboolean use_udp_channel; + gchar *id3_format; + gboolean title_override, disable_id3v2; + gboolean title_encoding_enabled; + gchar *title_encoding; + int detect_by; + int default_synth; +} MPG123Config; + +extern MPG123Config mpg123_cfg; + +struct bitstream_info { + int bitindex; + unsigned char *wordpointer; +}; + +extern struct bitstream_info bsi; + +/* ------ Declarations from "http.c" ------ */ + +extern int mpg123_http_open(char *url); +int mpg123_http_read(gpointer data, gint length); +void mpg123_http_close(void); +char *mpg123_http_get_title(char *url); +int mpg123_http_get_length(void); +void mpg123_http_seek(long pos); + +/* ------ Declarations from "common.c" ------ */ +extern unsigned int mpg123_get1bit(void); +extern unsigned int mpg123_getbits(int); +extern unsigned int mpg123_getbits_fast(int); + +extern void mpg123_open_stream(char *bs_filenam, int fd); +extern int mpg123_head_check(unsigned long); +extern void mpg123_stream_close(void); + +extern void mpg123_set_pointer(long); + +extern unsigned char *mpg123_pcm_sample; +extern int mpg123_pcm_point; + +struct gr_info_s { + int scfsi; + unsigned part2_3_length; + unsigned big_values; + unsigned scalefac_compress; + unsigned block_type; + unsigned mixed_block_flag; + unsigned table_select[3]; + unsigned subblock_gain[3]; + unsigned maxband[3]; + unsigned maxbandl; + unsigned maxb; + unsigned region1start; + unsigned region2start; + unsigned preflag; + unsigned scalefac_scale; + unsigned count1table_select; + real *full_gain[3]; + real *pow2gain; +}; + +struct III_sideinfo { + unsigned main_data_begin; + unsigned private_bits; + struct { + struct gr_info_s gr[2]; + } ch[2]; +}; + +extern void open_stream(char *, int fd); +extern long mpg123_tell_stream(void); +extern void mpg123_read_frame_init(void); +extern int mpg123_read_frame(struct frame *fr); +extern int mpg123_back_frame(struct frame *fr, int num); +int mpg123_stream_jump_to_frame(struct frame *fr, int frame); +int mpg123_stream_jump_to_byte(struct frame *fr, int byte); +int mpg123_stream_check_for_xing_header(struct frame *fr, + xing_header_t * xhead); +int mpg123_calc_numframes(struct frame *fr); + +extern int mpg123_do_layer3(struct frame *fr); +extern int mpg123_do_layer2(struct frame *fr); +extern int mpg123_do_layer1(struct frame *fr); + +extern int mpg123_synth_1to1(real *, int, unsigned char *, int *); +extern int mpg123_synth_1to1_8bit(real *, int, unsigned char *, int *); +extern int mpg123_synth_1to1_mono(real *, unsigned char *, int *); +extern int mpg123_synth_1to1_mono2stereo(real *, unsigned char *, int *); +extern int mpg123_synth_1to1_8bit_mono(real *, unsigned char *, int *); +extern int mpg123_synth_1to1_8bit_mono2stereo(real *, unsigned char *, + int *); + +extern int mpg123_synth_2to1(real *, int, unsigned char *, int *); +extern int mpg123_synth_2to1_8bit(real *, int, unsigned char *, int *); +extern int mpg123_synth_2to1_mono(real *, unsigned char *, int *); +extern int mpg123_synth_2to1_mono2stereo(real *, unsigned char *, int *); +extern int mpg123_synth_2to1_8bit_mono(real *, unsigned char *, int *); +extern int mpg123_synth_2to1_8bit_mono2stereo(real *, unsigned char *, + int *); + +extern int mpg123_synth_4to1(real *, int, unsigned char *, int *); +extern int mpg123_synth_4to1_8bit(real *, int, unsigned char *, int *); +extern int mpg123_synth_4to1_mono(real *, unsigned char *, int *); +extern int mpg123_synth_4to1_mono2stereo(real *, unsigned char *, int *); +extern int mpg123_synth_4to1_8bit_mono(real *, unsigned char *, int *); +extern int mpg123_synth_4to1_8bit_mono2stereo(real *, unsigned char *, + int *); + +extern void mpg123_rewindNbits(int bits); +extern int mpg123_hsstell(void); +extern void mpg123_set_pointer(long); +extern void mpg123_huffman_decoder(int, int *); +extern void mpg123_huffman_count1(int, int *); +extern int mpg123_get_songlen(struct frame *fr, int no); + +#ifdef USE_SIMD +void mpg123_dct64_mmx(real *, real *, real *); +int mpg123_synth_1to1_mmx(real *, int, unsigned char *, int *); + +void mpg123_dct36(real *, real *, real *, real *, real *); +void dct36_3dnow(real *, real *, real *, real *, real *); +int mpg123_synth_1to1_3dnow(real *, int, unsigned char *, int *); + +int mpg123_getcpuflags(guint32 * fflags, guint32 * efflags); +#else +#define mpg123_getcpuflags(a, b) \ +do { \ + *(a) = 0; \ + *(b) = 0; \ +} while (0) +#endif + +void mpg123_init_layer3(int); +void mpg123_init_layer2(gboolean); +void mpg123_make_decode_tables(long scaleval); +void mpg123_make_conv16to8_table(void); +void mpg123_dct64(real *, real *, real *); + +int mpg123_decode_header(struct frame *fr, unsigned long newhead); +double mpg123_compute_bpf(struct frame *fr); +double mpg123_compute_tpf(struct frame *fr); +guint mpg123_strip_spaces(char *src, size_t n); +void mpg123_get_id3v2(struct id3_tag *id3d, struct id3tag_t *tag); +gchar *mpg123_format_song_title(struct id3tag_t *tag, gchar * filename); +double mpg123_relative_pos(void); + + +extern gchar ** mpg123_id3_encoding_list; +extern unsigned char *mpg123_conv16to8; +extern const int mpg123_freqs[9]; +extern real mpg123_muls[27][64]; +extern real mpg123_decwin[512 + 32]; +extern real *mpg123_pnts[5]; + +#define GENRE_MAX 0x94 +extern const char *mpg123_id3_genres[GENRE_MAX]; +extern const int tabsel_123[2][3][16]; + +#endif