view mp3lib/mp3.h @ 18708:9e2b300db17b

Change free_sh_audio() to take demuxer and stream id as parameters (same as new_sh_audio()) instead of sh_audio_t *, use those to remove the pointer from demuxer->a_streams[] before freeing it. Some demuxers use free_sh_audio() to undo the creation of an already-allocated audio stream in case of error. These uses were unsafe since free_sh_audio() freed the data structure but left the pointer in demuxer->a_streams[], leading to double free later in free_demuxer() (and perhaps use of the freed stream before that, I didn't check).
author uau
date Wed, 14 Jun 2006 14:05:59 +0000
parents f580a7755ac5
children e7c989f7a7c9
line wrap: on
line source

/* MP3 Player Library 2.0      (C) 1999 A'rpi/Astral&ESP-team  */

/* decoder level: */
#ifdef USE_FAKE_MONO
extern void MP3_Init(int fakemono);
#else
extern void MP3_Init();
#endif
extern int MP3_Open(char *filename,int buffsize);
extern void MP3_SeekFrame(int num,int dir);
extern void MP3_SeekForward(int num);
extern int MP3_PrintTAG(void);
extern int MP3_DecodeFrame(unsigned char *hova,short single);
extern int MP3_FillBuffers(void);
extern void MP3_PrintHeader(void);
extern void MP3_Close(void);
/* public variables: */
extern int MP3_eof;        // set if EOF reached
extern int MP3_pause;      // lock playing
/* informational: */
extern int MP3_filesize;   // filesize
extern int MP3_frames;     // current frame no
extern int MP3_fpos;       // current file pos
extern int MP3_framesize;  // current framesize in bytes (including header)
extern int MP3_bitrate;    // current bitrate (kbits)
extern int MP3_samplerate; // current sampling freq (Hz)
extern int MP3_channels;
extern int MP3_bps;

/* player level: */
extern int  MP3_OpenDevice(char *devname);  /* devname can be NULL for default) */
extern void MP3_Play(void);
extern void MP3_Stop(void);
extern void MP3_CloseDevice(void);