Mercurial > mplayer.hg
changeset 1410:eda16e490ae7
using AFM_/VFM_ macros instead of hardcoded constants (idea by al3x)
author | arpi |
---|---|
date | Sun, 29 Jul 2001 02:08:27 +0000 |
parents | 65058a94df3b |
children | db849cee5777 |
files | codec-cfg.h dec_audio.c dec_video.c mplayer.c |
diffstat | 4 files changed, 71 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- a/codec-cfg.h Sun Jul 29 01:28:07 2001 +0000 +++ b/codec-cfg.h Sun Jul 29 02:08:27 2001 +0000 @@ -17,6 +17,23 @@ #define CODECS_STATUS_PROBLEMS 1 #define CODECS_STATUS_WORKING 2 +// Codec family/driver: +#define AFM_MPEG 1 +#define AFM_PCM 2 +#define AFM_AC3 3 +#define AFM_ACM 4 +#define AFM_ALAW 5 +#define AFM_GSM 6 +#define AFM_DSHOW 7 +#define AFM_DVDPCM 8 + +#define VFM_MPEG 1 +#define VFM_VFW 2 +#define VFM_ODIVX 3 +#define VFM_DSHOW 4 +#define VFM_FFMPEG 5 +#define VFM_VFWEX 6 +#define VFM_DIVX4 7 typedef struct { unsigned long f1;
--- a/dec_audio.c Sun Jul 29 01:28:07 2001 +0000 +++ b/dec_audio.c Sun Jul 29 02:08:27 2001 +0000 @@ -76,7 +76,7 @@ sh_audio->audio_out_minsize=8192;// default size, maybe not enough for Win32/ACM switch(driver){ -case 4: +case AFM_ACM: #ifndef ARCH_X86 printf("Win32/ACM audio codec unavailable on non-x86 CPU -> force nosound :(\n"); driver=0; @@ -96,7 +96,7 @@ } #endif break; -case 7: +case AFM_DSHOW: #ifndef USE_DIRECTSHOW printf("Compiled without DirectShow support -> force nosound :(\n"); driver=0; @@ -119,21 +119,21 @@ } #endif break; -case 2: -case 8: -case 5: +case AFM_PCM: +case AFM_DVDPCM: +case AFM_ALAW: // PCM, aLaw sh_audio->audio_out_minsize=2048; break; -case 3: +case AFM_AC3: // Dolby AC3 audio: sh_audio->audio_out_minsize=4*256*6; break; -case 6: +case AFM_GSM: // MS-GSM audio codec: sh_audio->audio_out_minsize=4*320; break; -case 1: +case AFM_MPEG: // MPEG Audio: sh_audio->audio_out_minsize=4608; break; @@ -157,7 +157,7 @@ switch(driver){ #ifdef ARCH_X86 -case 4: { +case AFM_ACM: { int ret=acm_decode_audio(sh_audio,sh_audio->a_buffer,4096,sh_audio->a_buffer_size); if(ret<0){ printf("ACM decoding error: %d\n",ret); @@ -167,7 +167,7 @@ break; } #endif -case 2: { +case AFM_PCM: { // AVI PCM Audio: WAVEFORMATEX *h=sh_audio->wf; sh_audio->i_bps=h->nAvgBytesPerSec; @@ -184,7 +184,7 @@ } break; } -case 8: { +case AFM_DVDPCM: { // DVD PCM Audio: sh_audio->channels=2; sh_audio->samplerate=48000; @@ -192,7 +192,7 @@ // sh_audio->pcm_bswap=1; break; } -case 3: { +case AFM_AC3: { // Dolby AC3 audio: dec_audio_sh=sh_audio; // save sh_audio for the callback: ac3_config.fill_buffer_callback = ac3_fill_buffer; @@ -218,14 +218,14 @@ } break; } -case 5: { +case AFM_ALAW: { // aLaw audio codec: sh_audio->channels=sh_audio->wf->nChannels; sh_audio->samplerate=sh_audio->wf->nSamplesPerSec; sh_audio->i_bps=sh_audio->channels*sh_audio->samplerate; break; } -case 6: { +case AFM_GSM: { // MS-GSM audio codec: GSM_Init(); sh_audio->channels=sh_audio->wf->nChannels; @@ -236,7 +236,7 @@ sh_audio->i_bps=65*(sh_audio->channels*sh_audio->samplerate)/320; // 1:10 break; } -case 1: { +case AFM_MPEG: { // MPEG Audio: dec_audio_sh=sh_audio; // save sh_audio for the callback: #ifdef USE_FAKE_MONO @@ -279,13 +279,13 @@ int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen){ int len=-1; switch(sh_audio->codec->driver){ - case 1: // MPEG layer 2 or 3 + case AFM_MPEG: // MPEG layer 2 or 3 len=MP3_DecodeFrame(buf,-1); break; - case 2: // AVI PCM + case AFM_PCM: // AVI PCM len=demux_read_data(sh_audio->ds,buf,minlen); break; - case 8: // DVD PCM + case AFM_DVDPCM: // DVD PCM { int j; len=demux_read_data(sh_audio->ds,buf,minlen); //if(i&1){ printf("Warning! pcm_audio_size&1 !=0 (%d)\n",i);i&=~1; } @@ -297,7 +297,7 @@ } break; } - case 5: // aLaw decoder + case AFM_ALAW: // aLaw decoder { int l=demux_read_data(sh_audio->ds,buf,minlen/2); unsigned short *d=(unsigned short *) buf; unsigned char *s=buf; @@ -311,7 +311,7 @@ } break; } - case 6: // MS-GSM decoder + case AFM_GSM: // MS-GSM decoder { unsigned char buf[65]; // 65 bytes / frame if(demux_read_data(sh_audio->ds,buf,65)!=65) break; // EOF XA_MSGSM_Decoder(buf,(unsigned short *) buf); // decodes 65 byte -> 320 short @@ -319,7 +319,7 @@ len=2*320; break; } - case 3: // AC3 decoder + case AFM_AC3: // AC3 decoder //printf("{1:%d}",avi_header.idx_pos);fflush(stdout); if(!sh_audio->ac3_frame) sh_audio->ac3_frame=ac3_decode_frame(); //printf("{2:%d}",avi_header.idx_pos);fflush(stdout); @@ -331,7 +331,7 @@ //printf("{3:%d}",avi_header.idx_pos);fflush(stdout); break; #ifdef ARCH_X86 - case 4: + case AFM_ACM: // len=sh_audio->audio_out_minsize; // optimal decoded fragment size // if(len<minlen) len=minlen; else // if(len>maxlen) len=maxlen; @@ -341,7 +341,7 @@ #endif #ifdef USE_DIRECTSHOW - case 7: // DirectShow + case AFM_DSHOW: // DirectShow { int size_in=0; int size_out=0; int srcsize=DS_AudioDecoder_GetSrcSize(maxlen); @@ -372,19 +372,19 @@ void resync_audio_stream(sh_audio_t *sh_audio){ switch(sh_audio->codec->driver){ - case 1: // MPEG + case AFM_MPEG: MP3_DecodeFrame(NULL,-2); // resync MP3_DecodeFrame(NULL,-2); // resync MP3_DecodeFrame(NULL,-2); // resync break; - case 3: // AC3 + case AFM_AC3: ac3_bitstream_reset(); // reset AC3 bitstream buffer // if(verbose){ printf("Resyncing AC3 audio...");fflush(stdout);} sh_audio->ac3_frame=ac3_decode_frame(); // resync // if(verbose) printf(" OK!\n"); break; - case 4: // ACM - case 7: // DShow + case AFM_ACM: + case AFM_DSHOW: sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer break; } @@ -393,10 +393,10 @@ void skip_audio_frame(sh_audio_t *sh_audio){ switch(sh_audio->codec->driver){ - case 1: MP3_DecodeFrame(NULL,-2);break; // skip MPEG frame - case 3: sh_audio->ac3_frame=ac3_decode_frame();break; // skip AC3 frame - case 4: - case 7: { + case AFM_MPEG: MP3_DecodeFrame(NULL,-2);break; // skip MPEG frame + case AFM_AC3: sh_audio->ac3_frame=ac3_decode_frame();break; // skip AC3 frame + case AFM_ACM: + case AFM_DSHOW: { int skip=sh_audio->wf->nBlockAlign; if(skip<16){ skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); @@ -405,9 +405,9 @@ demux_read_data(sh_audio->ds,NULL,skip); break; } - case 2: // AVI PCM - case 8: // DVD PCM - case 5: {// aLaw + case AFM_PCM: + case AFM_DVDPCM: + case AFM_ALAW: { int skip=sh_audio->i_bps/16; skip=skip&(~3); demux_read_data(sh_audio->ds,NULL,skip);
--- a/dec_video.c Sun Jul 29 01:28:07 2001 +0000 +++ b/dec_video.c Sun Jul 29 02:08:27 2001 +0000 @@ -86,7 +86,7 @@ switch(sh_video->codec->driver){ #ifdef ARCH_X86 - case 2: { + case VFM_VFW: { if(!init_video_codec(sh_video,0)) { // GUI_MSG( mplUnknowError ) // exit(1); @@ -95,7 +95,7 @@ if(verbose) printf("INFO: Win32 video codec init OK!\n"); break; } - case 6: { + case VFM_VFWEX: { if(!init_video_codec(sh_video,1)) { // GUI_MSG( mplUnknowError ) // exit(1); @@ -104,7 +104,7 @@ if(verbose) printf("INFO: Win32Ex video codec init OK!\n"); break; } - case 4: { // Win32/DirectShow + case VFM_DSHOW: { // Win32/DirectShow #ifndef USE_DIRECTSHOW fprintf(stderr,"MPlayer was compiled WITHOUT directshow support!\n"); return 0; @@ -153,13 +153,13 @@ #endif } #else /* !ARCH_X86 */ - case 2: - case 4: - case 6: + case VFM_VFW: + case VFM_DSHOW: + case VFM_VFWEX: fprintf(stderr,"MPlayer does not support win32 codecs on non-x86 platforms!\n"); return 0; #endif /* !ARCH_X86 */ - case 3: { // OpenDivX + case VFM_ODIVX: { // OpenDivX if(verbose) printf("OpenDivX video codec\n"); { DEC_PARAM dec_param; DEC_SET dec_set; @@ -178,7 +178,7 @@ if(verbose) printf("INFO: OpenDivX video codec init OK!\n"); break; } - case 7: { // DivX4Linux + case VFM_DIVX4: { // DivX4Linux #ifndef NEW_DECORE fprintf(stderr,"MPlayer was compiled WITHOUT DivX4Linux (libdivxdecore.so) support!\n"); return 0; //exit(1); @@ -213,7 +213,7 @@ break; #endif } - case 5: { // FFmpeg's libavcodec + case VFM_FFMPEG: { // FFmpeg's libavcodec #ifndef USE_LIBAVCODEC fprintf(stderr,"MPlayer was compiled WITHOUT libavcodec support!\n"); return 0; //exit(1); @@ -241,7 +241,7 @@ #endif } - case 1: { + case VFM_MPEG: { // init libmpeg2: #ifdef MPEG12_POSTPROC picture->pp_options=divx_quality; @@ -275,7 +275,7 @@ //-------------------- Decode a frame: ----------------------- switch(sh_video->codec->driver){ - case 3: { + case VFM_ODIVX: { // OpenDivX DEC_FRAME dec_frame; #ifdef NEW_DECORE @@ -317,7 +317,7 @@ break; } #ifdef NEW_DECORE - case 7: { + case VFM_DIVX4: { // DivX4Linux DEC_FRAME dec_frame; // let's decode @@ -333,14 +333,14 @@ } #endif #ifdef USE_DIRECTSHOW - case 4: { // W32/DirectShow + case VFM_DSHOW: { // W32/DirectShow if(drop_frame<2) DS_VideoDecoder_DecodeFrame(start, in_size, 0, !drop_frame); if(!drop_frame && sh_video->our_out_buffer) blit_frame=3; break; } #endif #ifdef USE_LIBAVCODEC - case 5: { // libavcodec + case VFM_FFMPEG: { // libavcodec int got_picture=0; if(drop_frame<2 && in_size>0){ int ret = avcodec_decode_video(&lavc_context, &lavc_picture, @@ -356,8 +356,8 @@ } #endif #ifdef ARCH_X86 - case 6: - case 2: + case VFM_VFWEX: + case VFM_VFW: { HRESULT ret; @@ -369,7 +369,7 @@ // sh_video->o_bih.biWidth = 1280; // ret = ICDecompress(avi_header.hic, ICDECOMPRESS_NOTKEYFRAME|(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL), -if(sh_video->codec->driver==6) +if(sh_video->codec->driver==VFM_VFWEX) ret = ICDecompressEx(sh_video->hic, ( (sh_video->ds->flags&1) ? 0 : ICDECOMPRESS_NOTKEYFRAME ) | ( (drop_frame==2 && !(sh_video->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ) , @@ -390,7 +390,7 @@ break; } #endif - case 1: + case VFM_MPEG: mpeg2_decode_data(video_out, start, start+in_size,drop_frame); if(!drop_frame) blit_frame=1; break;
--- a/mplayer.c Sun Jul 29 01:28:07 2001 +0000 +++ b/mplayer.c Sun Jul 29 02:08:27 2001 +0000 @@ -800,7 +800,7 @@ exit(1); } // is next line needed anymore? - atmos :: - if(!allow_dshow && sh_video->codec->driver==4) continue; // skip DShow + if(!allow_dshow && sh_video->codec->driver==VFM_DSHOW) continue; // skip DShow else if(video_codec && strcmp(sh_video->codec->name,video_codec)) continue; else if(video_family!=-1 && sh_video->codec->driver!=video_family) continue; break; @@ -1177,7 +1177,7 @@ if(grab_frames==2 && (i==0x1B3 || i==0x1B8)) grab_frames=1; if(!read_video_packet(d_video)){ eof=1; break;} // EOF //printf("read packet 0x%X, len=%d\n",i,videobuf_len); - if(sh_video->codec->driver!=1){ + if(sh_video->codec->driver!=VFM_MPEG){ // if not libmpeg2: switch(i){ case 0x1B3: header_process_sequence_header (picture, buffer);break;