CVS: main/libmpdemux demux_audio.c,NONE,1.1 genres.h,NONE,1.1 demuxer.h,1.29,1.30 demuxer.c,1.74,1.75 Makefile,1.19,1.20 mp3_hdr.c,1.2,1.3
Update of /cvsroot/mplayer/main/libmpdemux In directory mplayer:/var/tmp.root/cvs-serv10761/libmpdemux Modified Files: demuxer.h demuxer.c Makefile mp3_hdr.c Added Files: demux_audio.c genres.h Log Message: Audio file demuxer. Extended version for demuxer info. genres.h come from id3edit of servex@servex.yi.org found at http://id3edit.sourceforge.net/ --- NEW FILE --- #include "config.h" #include <stdlib.h> #include <stdio.h> #include "stream.h" #include "demuxer.h" #include "stheader.h" #include "genres.h" #include <string.h> #ifdef MP_DEBUG #include <assert.h> #endif #define MP3 1 #define WAV 2 #define HDR_SIZE 4 typedef struct da_priv { int frmt; } da_priv_t; extern int mp_decode_mp3_header(unsigned char* hbuf); extern void free_sh_audio(sh_audio_t* sh); int demux_audio_open(demuxer_t* demuxer) { stream_t *s; sh_audio_t* sh_audio; uint8_t hdr[HDR_SIZE]; int st_pos = 0,frmt = 0, n = 0, pos = 0, step; da_priv_t* priv; #ifdef MP_DEBUG assert(demuxer != NULL); assert(demuxer->stream != NULL); #endif s = demuxer->stream; while(n < 5 && ! s->eof) { st_pos = stream_tell(s); step = 1; if(pos < HDR_SIZE) { stream_read(s,&hdr[pos],HDR_SIZE-pos); pos = HDR_SIZE; } if( hdr[0] == 'R' && hdr[1] == 'I' && hdr[2] == 'F' && hdr[3] == 'F' ) { stream_skip(s,4); if(s->eof) break; stream_read(s,hdr,4); if(s->eof) break; if(hdr[0] != 'W' || hdr[1] != 'A' || hdr[2] != 'V' || hdr[3] != 'E' ) stream_skip(s,-8); else // We found wav header. Now we can have 'fmt ' or a mp3 header // empty the buffer step = 4; } else if( hdr[0] == 'f' && hdr[1] == 'm' && hdr[2] == 't' && hdr[3] == ' ' ) { frmt = WAV; break; } else if(mp_decode_mp3_header(hdr) > 0) { frmt = MP3; break; } // Add here some other audio format detection if(step < HDR_SIZE) memmove(hdr,&hdr[step],HDR_SIZE-step); pos -= step; } if(!frmt) return 0; sh_audio = new_sh_audio(demuxer,0); switch(frmt) { case MP3: sh_audio->format = 0x55; stream_seek(s,st_pos); demuxer->movi_start = st_pos; if(s->end_pos) { char tag[4]; stream_seek(s,s->end_pos-128); stream_read(s,tag,3); tag[3] = '\0'; if(strcmp(tag,"TAG")) demuxer->movi_end = s->end_pos; else { char buf[31]; uint8_t g; demuxer->movi_end = stream_tell(s)-3; stream_read(s,buf,30); buf[30] = '\0'; demux_info_add(demuxer,"Title",buf); stream_read(s,buf,30); buf[30] = '\0'; demux_info_add(demuxer,"Artist",buf); stream_read(s,buf,30); buf[30] = '\0'; demux_info_add(demuxer,"Album",buf); stream_read(s,buf,4); buf[5] = '\0'; demux_info_add(demuxer,"Year",buf); stream_read(s,buf,30); buf[30] = '\0'; demux_info_add(demuxer,"Comment",buf); if(buf[28] == 0 && buf[29] != 0) { uint8_t trk = (uint8_t)buf[29]; sprintf(buf,"%d",trk); demux_info_add(demuxer,"Track",buf); } g = stream_read_char(s); demux_info_add(demuxer,"Genre",genres[g]); } } break; case WAV: { WAVEFORMATEX* w; int l; sh_audio->wf = w = (WAVEFORMATEX*)malloc(sizeof(WAVEFORMATEX)); l = stream_read_dword_le(s); if(l < 16) { printf("Bad wav header length : too short !!!\n"); free_sh_audio(sh_audio); return 0; } w->wFormatTag = sh_audio->format = stream_read_word_le(s); w->nChannels = sh_audio->channels = stream_read_word_le(s); w->nSamplesPerSec = sh_audio->samplerate = stream_read_dword_le(s); w->nAvgBytesPerSec = stream_read_dword_le(s); w->nBlockAlign = stream_read_word_le(s); w->wBitsPerSample = sh_audio->samplesize = stream_read_word_le(s); w->cbSize = 0; l -= 16; if(l) stream_skip(s,l); demuxer->movi_start = stream_tell(s); demuxer->movi_end = s->end_pos; } break; } priv = (da_priv_t*)malloc(sizeof(da_priv_t)); priv->frmt = frmt; demuxer->priv = priv; demuxer->movi_start = st_pos; demuxer->audio->id = 0; demuxer->audio->sh = sh_audio; sh_audio->ds = demuxer->audio; if(stream_tell(s) != demuxer->movi_start) stream_seek(s,demuxer->movi_start); return 1; } int demux_audio_fill_buffer(demux_stream_t *ds) { sh_audio_t* sh_audio; demuxer_t* demux; da_priv_t* priv; stream_t* s; #ifdef MP_DEBUG assert(ds != NULL); assert(ds->sh != NULL); assert(ds->demuxer != NULL); #endif sh_audio = ds->sh; demux = ds->demuxer; priv = demux->priv; s = demux->stream; if(s->eof || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) return 0; switch(priv->frmt) { case MP3 : while(! s->eof || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { uint8_t hdr[4]; int len; stream_read(s,hdr,4); len = mp_decode_mp3_header(hdr); if(len < 0) { stream_skip(s,-3); } else { demux_packet_t* dp; if(s->eof || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) return 0; dp = new_demux_packet(len); memcpy(dp->buffer,hdr,4); stream_read(s,dp->buffer + 4,len-4); ds_add_packet(ds,dp); return 1; } } case WAV : { int l = sh_audio->wf->nAvgBytesPerSec; demux_packet_t* dp = new_demux_packet(l); stream_read(s,dp->buffer,l); ds_add_packet(ds,dp); return 1; } default: printf("Audio demuxer : unknow format %d\n",priv->frmt); } return 0; } void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ sh_audio_t* sh_audio; stream_t* s; int base,pos; float len; da_priv_t* priv; sh_audio = demuxer->audio->sh; s = demuxer->stream; priv = demuxer->priv; base = flags&1 ? demuxer->movi_start : stream_tell(s) ; len = (demuxer->movi_end && flags&2) ? (demuxer->movi_end - demuxer->movi_start)*rel_seek_secs : rel_seek_secs; pos = base+(len*sh_audio->i_bps); if(demuxer->movi_end && pos >= demuxer->movi_end) { sh_audio->timer = (stream_tell(s) - demuxer->movi_start)/sh_audio->i_bps; return; } else if(pos < demuxer->movi_start) pos = demuxer->movi_start; sh_audio->timer = flags&1 ? rel_seek_secs : (pos-demuxer->movi_start)/sh_audio->i_bps; switch(priv->frmt) { case WAV: pos += (pos % (sh_audio->channels * sh_audio->samplesize) ); break; } stream_seek(s,pos); } --- NEW FILE --- /*********************************** * Copyright (C) 2001 Jason Carter * See the file "LICENSE" for details *********************************** * FILE: GENRES.H * NAME: ID3EDIT - ID3 tag v 1.1 editor * DESCRIPTION: Genres character array * AUTHOR: Jason Carter *********************************** */ #ifndef _GENRES_H #define _GENRES_H char *genres[] = { "Blues", /* 0 */ "Classic Rock", /* 1 */ "Country", /* 2 */ "Dance", /* 3 */ "Disco", /* 4 */ "Funk", /* 5 */ "Grunge", /* 6 */ "Hip-Hop", /* 7 */ "Jazz", /* 8 */ "Metal", /* 9 */ "New Age", /* 10 */ "Oldies", /* 11 */ "Other", /* 12 */ "Pop", /* 13 */ "R&B", /* 14 */ "Rap", /* 15 */ "Reggae", /* 16 */ "Rock", /* 17 */ "Techno", /* 18 */ "Industrial", /* 19 */ "Alternative", /* 20 */ "Ska", /* 21 */ "Death Metal", /* 22 */ "Pranks", /* 23 */ "Soundtrack", /* 24 */ "Eurotechno", /* 25 */ "Ambient", /* 26 */ "Trip-Hop", /* 27 */ "Vocal", /* 28 */ "Jazz+Funk", /* 29 */ "Fusion", /* 30 */ "Trance", /* 31 */ "Classical", /* 32 */ "Instrumental", /* 33 */ "Acid", /* 34 */ "House", /* 35 */ "Game", /* 36 */ "Sound Clip", /* 37 */ "Gospel", /* 38 */ "Noise", /* 39 */ "Alternative Rock", /* 40 */ "Bass", /* 41 */ "Soul", /* 42 */ "Punk", /* 43 */ "Space", /* 44 */ "Meditative", /* 45 */ "Instrumental Pop", /* 46 */ "Instrumental Rock", /* 47 */ "Ethnic", /* 48 */ "Gothic", /* 49 */ "Darkwave", /* 50 */ "Techno-Industrial", /* 51 */ "Electronic", /* 52 */ "Jungle", /* 53 */ "Pop-Folk", /* 54 */ "Eurodance", /* 55 */ "Dream", /* 56 */ "Southern Rock", /* 57 */ "Comedy", /* 58 */ "Cult", /* 59 */ "Gangsta", /* 60 */ "Top 40", /* 61 */ "Christian Rap", /* 62 */ "Pop/Funk", /* 63 */ "Native American", /* 64 */ "Cabaret", /* 65 */ "New Wave", /* 66 */ "Psychadelic", /* 67 */ "Rave", /* 68 */ "Show Tunes", /* 69 */ "Trailer", /* 70 */ "Lo-Fi", /* 71 */ "Tribal", /* 72 */ "Acid Punk", /* 73 */ "Acid Jazz", /* 74 */ "Polka", /* 75 */ "Retro", /* 76 */ "Musical", /* 77 */ "Rock & Roll", /* 78 */ "Hard Rock", /* 79 */ "Folk", /* 80 */ "Folk/Rock", /* 81 */ "National Folk", /* 82 */ "Swing", /* 83 */ "Fast-Fusion", /* 84 */ "Bebop", /* 85 */ "Latin", /* 86 */ "Revival", /* 87 */ "Celtic", /* 88 */ "Bluegrass", /* 89 */ "Avantgarde", /* 90 */ "Gothic Rock", /* 91 */ "Progressive Rock", /* 92 */ "Psychedelic Rock", /* 93 */ "Symphonic Rock", /* 94 */ "Slow Rock", /* 95 */ "Big Band", /* 96 */ "Chorus", /* 97 */ "Easy Listening", /* 98 */ "Acoustic", /* 99 */ "Humour", /* 100 */ "Speech", /* 101 */ "Chanson", /* 102 */ "Opera", /* 103 */ "Chamber Music", /* 104 */ "Sonata", /* 105 */ "Symphony", /* 106 */ "Booty Bass", /* 107 */ "Primus", /* 108 */ "Porn Groove", /* 109 */ "Satire", /* 110 */ "Slow Jam", /* 111 */ "Club", /* 112 */ "Tango", /* 113 */ "Samba", /* 114 */ "Folklore", /* 115 */ "Ballad", /* 116 */ "Power Ballad", /* 117 */ "Rhytmic Soul", /* 118 */ "Freestyle", /* 119 */ "Duet", /* 120 */ "Punk Rock", /* 121 */ "Drum Solo", /* 122 */ "Acapella", /* 123 */ "Euro-House", /* 124 */ "Dance Hall", /* 125 */ "Goa", /* 126 */ "Drum & Bass", /* 127 */ "Club-House", /* 128 */ "Hardcore", /* 129 */ "Terror", /* 130 */ "Indie", /* 131 */ "BritPop", /* 132 */ "Negerpunk", /* 133 */ "Polsk Punk", /* 134 */ "Beat", /* 135 */ "Christian Gangsta Rap", /* 136 */ "Heavy Metal", /* 137 */ "Black Metal", /* 138 */ "Crossover", /* 139 */ "Contemporary Christian", /* 140 */ "Christian Rock", /* 141 */ "Unknown", /* 142 */ "Unknown", /* 143 */ "Unknown", /* 144 */ "Unknown", /* 145 */ "Unknown", /* 146 */ "Unknown", /* 147 */ "Unknown", /* 148 */ "Unknown", /* 149 */ "Unknown", /* 150 */ "Unknown", /* 151 */ "Unknown", /* 152 */ "Unknown", /* 153 */ "Unknown", /* 154 */ "Unknown", /* 155 */ "Unknown", /* 156 */ "Unknown", /* 157 */ "Unknown", /* 158 */ "Unknown", /* 159 */ "Unknown", /* 160 */ "Unknown", /* 161 */ "Unknown", /* 162 */ "Unknown", /* 163 */ "Unknown", /* 164 */ "Unknown", /* 165 */ "Unknown", /* 166 */ "Unknown", /* 167 */ "Unknown", /* 168 */ "Unknown", /* 169 */ "Unknown", /* 170 */ "Unknown", /* 171 */ "Unknown", /* 172 */ "Unknown", /* 173 */ "Unknown", /* 174 */ "Unknown", /* 175 */ "Unknown", /* 176 */ "Unknown", /* 177 */ "Unknown", /* 178 */ "Unknown", /* 179 */ "Unknown", /* 180 */ "Unknown", /* 181 */ "Unknown", /* 182 */ "Unknown", /* 183 */ "Unknown", /* 184 */ "Unknown", /* 185 */ "Unknown", /* 186 */ "Unknown", /* 187 */ "Unknown", /* 188 */ "Unknown", /* 189 */ "Unknown", /* 190 */ "Unknown", /* 191 */ "Unknown", /* 192 */ "Unknown", /* 193 */ "Unknown", /* 194 */ "Unknown", /* 195 */ "Unknown", /* 196 */ "Unknown", /* 197 */ "Unknown", /* 198 */ "Unknown", /* 199 */ "Unknown", /* 200 */ "Unknown", /* 201 */ "Unknown", /* 202 */ "Unknown", /* 203 */ "Unknown", /* 204 */ "Unknown", /* 205 */ "Unknown", /* 206 */ "Unknown", /* 207 */ "Unknown", /* 208 */ "Unknown", /* 209 */ "Unknown", /* 210 */ "Unknown", /* 211 */ "Unknown", /* 212 */ "Unknown", /* 213 */ "Unknown", /* 214 */ "Unknown", /* 215 */ "Unknown", /* 216 */ "Unknown", /* 217 */ "Unknown", /* 218 */ "Unknown", /* 219 */ "Unknown", /* 220 */ "Unknown", /* 221 */ "Unknown", /* 222 */ "Unknown", /* 223 */ "Unknown", /* 224 */ "Unknown", /* 225 */ "Unknown", /* 226 */ "Unknown", /* 227 */ "Unknown", /* 228 */ "Unknown", /* 229 */ "Unknown", /* 230 */ "Unknown", /* 231 */ "Unknown", /* 232 */ "Unknown", /* 233 */ "Unknown", /* 234 */ "Unknown", /* 235 */ "Unknown", /* 236 */ "Unknown", /* 237 */ "Unknown", /* 238 */ "Unknown", /* 239 */ "Unknown", /* 240 */ "Unknown", /* 241 */ "Unknown", /* 242 */ "Unknown", /* 243 */ "Unknown", /* 244 */ "Unknown", /* 245 */ "Unknown", /* 246 */ "Unknown", /* 247 */ "Unknown", /* 248 */ "Unknown", /* 249 */ "Unknown", /* 250 */ "Unknown", /* 251 */ "Unknown", /* 252 */ "Unknown", /* 253 */ "Unknown", /* 254 */ "Unknown", /* 255 */ }; #endif /* _GENRES_H */ Index: demuxer.h =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/demuxer.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- demuxer.h 10 Feb 2002 18:09:20 -0000 1.29 +++ demuxer.h 14 Feb 2002 13:04:35 -0000 1.30 @@ -19,6 +19,7 @@ #define DEMUXER_TYPE_FILM 14 #define DEMUXER_TYPE_ROQ 15 #define DEMUXER_TYPE_MF 16 +#define DEMUXER_TYPE_AUDIO 17 #define DEMUXER_TIME_NONE 0 #define DEMUXER_TIME_PTS 1 @@ -94,7 +95,7 @@ char s_streams[32]; // dvd subtitles (flag) void* priv; // fileformat-dependent data - demuxer_info_t info; + char** info; } demuxer_t; inline static demux_packet_t* new_demux_packet(int len){ Index: demuxer.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/demuxer.c,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- demuxer.c 11 Feb 2002 12:11:48 -0000 1.74 +++ demuxer.c 14 Feb 2002 13:04:35 -0000 1.75 @@ -125,6 +125,11 @@ // free demuxers: free_demuxer_stream(demuxer->audio); free_demuxer_stream(demuxer->video); + if(demuxer->info) { + for(i=0;demuxer->info[i] != NULL; i++) + free(demuxer->info[i]); + free(demuxer->info); + } free(demuxer); } @@ -186,6 +191,7 @@ extern int demux_open_tv(demuxer_t *demuxer, tvi_handle_t *tvh); #endif int demux_y4m_fill_buffer(demuxer_t *demux); +int demux_audio_fill_buffer(demux_stream_t *ds); int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ // Note: parameter 'ds' can be NULL! @@ -209,6 +215,7 @@ case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, tv_handler); #endif case DEMUXER_TYPE_Y4M: return demux_y4m_fill_buffer(demux); + case DEMUXER_TYPE_AUDIO: return demux_audio_fill_buffer(ds); } return 0; } @@ -398,6 +405,7 @@ extern int nuv_check_file(demuxer_t *demuxer); extern void demux_open_nuv(demuxer_t *demuxer); +extern int demux_audio_open(demuxer_t* demuxer); demuxer_t* demux_open(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id){ @@ -535,6 +543,15 @@ } else free_demuxer(demuxer); } +//=============== Try to open as audio file: ================= +if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_AUDIO){ + demuxer=new_demuxer(stream,DEMUXER_TYPE_AUDIO,audio_id,video_id,dvdsub_id); + if(demux_audio_open(demuxer)){ + mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected audio file\n"); + file_format=DEMUXER_TYPE_AUDIO; + } else + free_demuxer(demuxer); +} //=============== Try to open as MPEG-PS file: ================= if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_PS){ int pes=1; @@ -749,6 +766,7 @@ int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags); int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags); void demux_seek_mov(demuxer_t *demuxer,float pts,int flags); +extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ demux_stream_t *d_audio=demuxer->audio; @@ -808,6 +826,8 @@ demux_seek_fli(demuxer,rel_seek_secs,flags); break; case DEMUXER_TYPE_NUV: demux_seek_nuv(demuxer,rel_seek_secs,flags); break; + case DEMUXER_TYPE_AUDIO: + demux_audio_seek(demuxer,rel_seek_secs,flags); break; } // switch(demuxer->file_format) @@ -817,86 +837,38 @@ int demux_info_add(demuxer_t *demuxer, char *opt, char *param) { - demuxer_info_t *info = &demuxer->info; - - if (!strcasecmp(opt, "name")) - { - if (info->name) - { - mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info->name already present\n!"); - return(0); - } - info->name = strdup(param); - return(1); - } - - if (!strcasecmp(opt, "author")) - { - if (info->author) - { - mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info->author already present\n!"); - return(0); - } - info->author = strdup(param); - return(1); - } - - if (!strcasecmp(opt, "encoder") || !strcasecmp(opt, "software")) - { - if (info->encoder) - { - mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info->encoder already present\n!"); - return(0); - } - info->encoder = strdup(param); - return(1); - } + char **info = demuxer->info; + int n = 0; - if (!strcasecmp(opt, "comment") || !strcasecmp(opt, "comments")) - { - if (info->comments) - { - mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info->comments already present\n!"); - return(0); - } - info->comments = strdup(param); - return(1); - } - if (!strcasecmp(opt, "copyright")) - { - if (info->copyright) - { - mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info->copyright already present\n!"); - return(0); - } - info->copyright = strdup(param); - return(1); - } + for(n = 0; info && info[2*n] != NULL; n++) + { + if(!strcasecmp(opt,info[2*n])) + { + mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info %s already present\n!",opt); + return 0; + } + } + + info = demuxer->info = (char**)realloc(info,(2*(n+2))*sizeof(char*)); + info[2*n] = strdup(opt); + info[2*n+1] = strdup(param); + memset(&info[2*(n+1)],0,2*sizeof(char*)); - mp_msg(MSGT_DEMUX, MSGL_DBG2, "Unknown demuxer info->%s (=%s)!\n", - opt, param); - return(1); + return 1; } int demux_info_print(demuxer_t *demuxer) { - demuxer_info_t *info = &demuxer->info; + char **info = demuxer->info; + int n; - if (info->name || info->author || info->encoder || info->comments || info->copyright) - { - mp_msg(MSGT_DEMUX, MSGL_INFO, "Clip info: \n"); - if (info->name) - mp_msg(MSGT_DEMUX, MSGL_INFO, " Name: %s\n", info->name); - if (info->author) - mp_msg(MSGT_DEMUX, MSGL_INFO, " Author: %s\n", info->author); - if (info->copyright) - mp_msg(MSGT_DEMUX, MSGL_INFO, " Copyright: %s\n", info->copyright); - if (info->comments) - mp_msg(MSGT_DEMUX, MSGL_INFO, " Comments: %s\n", info->comments); - if (info->encoder) - mp_msg(MSGT_DEMUX, MSGL_INFO, " Encoder: %s\n", info->encoder); - } + if(!info) + return 0; + + mp_msg(MSGT_DEMUX, MSGL_INFO, "Clip info: \n"); + for(n = 0; info[2*n] != NULL ; n++) + mp_msg(MSGT_DEMUX, MSGL_INFO, " %s: %s\n",info[2*n],info[2*n+1]); return 0; } Index: Makefile =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/Makefile,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- Makefile 6 Feb 2002 20:16:35 -0000 1.19 +++ Makefile 14 Feb 2002 13:04:35 -0000 1.20 @@ -3,7 +3,7 @@ include ../config.mak -SRCS = mp3_hdr.c video.c mpeg_hdr.c cache2.c asfheader.c aviheader.c aviprint.c aviwrite.c demux_asf.c demux_avi.c demux_mov.c demux_mpg.c demux_viv.c demuxer.c dvdauth.c open.c parse_es.c stream.c tv.c tvi_dummy.c tvi_v4l.c frequencies.c demux_fli.c demux_real.c demux_y4m.c yuv4mpeg.c yuv4mpeg_ratio.c demux_nuv.c demux_film.c demux_roq.c mf.c demux_mf.c +SRCS = mp3_hdr.c video.c mpeg_hdr.c cache2.c asfheader.c aviheader.c aviprint.c aviwrite.c demux_asf.c demux_avi.c demux_mov.c demux_mpg.c demux_viv.c demuxer.c dvdauth.c open.c parse_es.c stream.c tv.c tvi_dummy.c tvi_v4l.c frequencies.c demux_fli.c demux_real.c demux_y4m.c yuv4mpeg.c yuv4mpeg_ratio.c demux_nuv.c demux_film.c demux_roq.c mf.c demux_mf.c demux_audio.c ifeq ($(STREAMING),yes) SRCS += asf_streaming.c url.c http.c network.c rtp.c endif Index: mp3_hdr.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/mp3_hdr.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mp3_hdr.c 31 Oct 2001 14:42:32 -0000 1.2 +++ mp3_hdr.c 14 Feb 2002 13:04:35 -0000 1.3 @@ -1,6 +1,7 @@ #include <stdio.h> #include "config.h" +#include "../mp_msg.h" //----------------------- mp3 audio frame header parser ----------------------- @@ -32,12 +33,15 @@ // head_check: if( (newhead & 0xffe00000) != 0xffe00000 || (newhead & 0x0000fc00) == 0x0000fc00){ - printf("head_check failed\n"); + mp_msg(MSGT_DEMUXER,MSGL_DBG2,"head_check failed\n"); return -1; } #endif - if((4-((newhead>>17)&3))!=3){ printf("not layer-3\n"); return -1;} + if((4-((newhead>>17)&3))!=3){ + mp_msg(MSGT_DEMUXER,MSGL_DBG2,"not layer-3\n"); + return -1; + } if( newhead & ((long)1<<20) ) { lsf = (newhead & ((long)1<<19)) ? 0x0 : 0x1; @@ -53,7 +57,7 @@ sampling_frequency = ((newhead>>10)&0x3) + (lsf*3); if(sampling_frequency>8){ - printf("invalid sampling_frequency\n"); + mp_msg(MSGT_DEMUXER,MSGL_DBG2,"invalid sampling_frequency\n"); return -1; // valid: 0..8 } @@ -70,7 +74,7 @@ stereo = ( (((newhead>>6)&0x3)) == 3) ? 1 : 2; if(!bitrate_index){ - fprintf(stderr,"Free format not supported.\n"); + mp_msg(MSGT_DEMUXER,MSGL_DBG2,"Free format not supported.\n"); return -1; }
participants (1)
-
Alban Bedel CVS