CVS: main asfheader.c,1.4,1.5 aviheader.c,1.2,1.3 demux_asf.c,1.2,1.3 demux_avi.c,1.3,1.4 demux_mpg.c,1.3,1.4 mplayer.c,1.60,1.61 stheader.h,1.4,1.5 version.h,1.3,1.4
Update of /cvsroot/mplayer/main In directory usw-pr-cvs1:/tmp/cvs-serv13232 Modified Files: asfheader.c aviheader.c demux_asf.c demux_avi.c demux_mpg.c mplayer.c stheader.h version.h Log Message: new stream selection code Index: asfheader.c =================================================================== RCS file: /cvsroot/mplayer/main/asfheader.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** asfheader.c 2001/04/11 01:38:56 1.4 --- asfheader.c 2001/04/15 03:40:37 1.5 *************** *** 129,133 **** switch(*((unsigned int*)&streamh.type)){ case 0xF8699E40: { // guid_audio_stream ! sh_audio_t *sh_audio=&sh_audio_i; // FIXME! memcpy(&sh_audio->wf,buffer,streamh.type_size<64?streamh.type_size:64); if(verbose>=1) print_wave_header((WAVEFORMATEX*)buffer); --- 129,133 ---- switch(*((unsigned int*)&streamh.type)){ case 0xF8699E40: { // guid_audio_stream ! sh_audio_t* sh_audio=new_sh_audio(streamh.stream_no & 0x7F); memcpy(&sh_audio->wf,buffer,streamh.type_size<64?streamh.type_size:64); if(verbose>=1) print_wave_header((WAVEFORMATEX*)buffer); *************** *** 142,156 **** } printf("ASF: audio scrambling: %d x %d x %d\n",asf_scrambling_h,asf_scrambling_w,asf_scrambling_b); ! if(demuxer->audio->id==-1) demuxer->audio->id=streamh.stream_no & 0x7F; break; } case 0xBC19EFC0: { // guid_video_stream ! sh_video_t *sh_video=&sh_video_i; // FIXME! memcpy(&sh_video->bih,&buffer[4+4+1+2],sizeof(BITMAPINFOHEADER)); ! sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale; ! sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate; if(verbose>=1) print_video_header((BITMAPINFOHEADER*)&buffer[4+4+1+2]); //asf_video_id=streamh.stream_no & 0x7F; ! if(demuxer->video->id==-1) demuxer->video->id=streamh.stream_no & 0x7F; break; } --- 142,156 ---- } printf("ASF: audio scrambling: %d x %d x %d\n",asf_scrambling_h,asf_scrambling_w,asf_scrambling_b); ! //if(demuxer->audio->id==-1) demuxer->audio->id=streamh.stream_no & 0x7F; break; } case 0xBC19EFC0: { // guid_video_stream ! sh_video_t* sh_video=new_sh_video(streamh.stream_no & 0x7F); memcpy(&sh_video->bih,&buffer[4+4+1+2],sizeof(BITMAPINFOHEADER)); ! //sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale; ! //sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate; if(verbose>=1) print_video_header((BITMAPINFOHEADER*)&buffer[4+4+1+2]); //asf_video_id=streamh.stream_no & 0x7F; ! //if(demuxer->video->id==-1) demuxer->video->id=streamh.stream_no & 0x7F; break; } Index: aviheader.c =================================================================== RCS file: /cvsroot/mplayer/main/aviheader.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** aviheader.c 2001/04/06 01:18:59 1.2 --- aviheader.c 2001/04/15 03:40:37 1.3 *************** *** 3,7 **** void read_avi_header(int no_index){ ! int stream_id=-1; --- 3,8 ---- void read_avi_header(int no_index){ ! sh_audio_t *sh_audio=NULL; ! sh_video_t *sh_video=NULL; int stream_id=-1; *************** *** 42,62 **** stream_read(demuxer->stream,(char*) &h,MIN(size2,sizeof(h))); chunksize-=MIN(size2,sizeof(h)); ! if(h.fccType==streamtypeVIDEO) memcpy(&sh_video_i.video,&h,sizeof(h));else ! if(h.fccType==streamtypeAUDIO) memcpy(&sh_audio_i.audio,&h,sizeof(h)); last_fccType=h.fccType; if(verbose>=1) print_strh(&h); - ++stream_id; break; } case ckidSTREAMFORMAT: { // read 'strf' if(last_fccType==streamtypeVIDEO){ - sh_video_t *sh_video=&sh_video_i; // FIXME! stream_read(demuxer->stream,(char*) &sh_video->bih,MIN(size2,sizeof(sh_video->bih))); chunksize-=MIN(size2,sizeof(sh_video->bih)); sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale; sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate; ! if(demuxer->video->id==-1) demuxer->video->id=stream_id; } else if(last_fccType==streamtypeAUDIO){ - sh_audio_t *sh_audio=&sh_audio_i; // FIXME! int z=(chunksize<64)?chunksize:64; if(verbose>=2) printf("found 'wf', %d bytes of %d\n",chunksize,sizeof(WAVEFORMATEX)); --- 43,67 ---- stream_read(demuxer->stream,(char*) &h,MIN(size2,sizeof(h))); chunksize-=MIN(size2,sizeof(h)); ! ++stream_id; ! if(h.fccType==streamtypeVIDEO){ ! sh_video=new_sh_video(stream_id); ! memcpy(&sh_video->video,&h,sizeof(h)); ! } else ! if(h.fccType==streamtypeAUDIO){ ! sh_audio=new_sh_audio(stream_id); ! memcpy(&sh_audio->audio,&h,sizeof(h)); ! } last_fccType=h.fccType; if(verbose>=1) print_strh(&h); break; } case ckidSTREAMFORMAT: { // read 'strf' if(last_fccType==streamtypeVIDEO){ stream_read(demuxer->stream,(char*) &sh_video->bih,MIN(size2,sizeof(sh_video->bih))); chunksize-=MIN(size2,sizeof(sh_video->bih)); sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale; sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate; ! // if(demuxer->video->id==-1) demuxer->video->id=stream_id; } else if(last_fccType==streamtypeAUDIO){ int z=(chunksize<64)?chunksize:64; if(verbose>=2) printf("found 'wf', %d bytes of %d\n",chunksize,sizeof(WAVEFORMATEX)); *************** *** 64,68 **** chunksize-=z; if(verbose>=1) print_wave_header(&sh_audio->wf); ! if(demuxer->audio->id==-1) demuxer->audio->id=stream_id; } break; --- 69,73 ---- chunksize-=z; if(verbose>=1) print_wave_header(&sh_audio->wf); ! // if(demuxer->audio->id==-1) demuxer->audio->id=stream_id; } break; Index: demux_asf.c =================================================================== RCS file: /cvsroot/mplayer/main/demux_asf.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** demux_asf.c 2001/03/15 19:38:34 1.2 --- demux_asf.c 2001/04/15 03:40:37 1.3 *************** *** 22,44 **** if(verbose>=4) printf("demux_asf.read_packet: id=%d seq=%d len=%d\n",id,seq,len); ! #if 0 ! if(demux->video->id==-1) { ! demux->video->id=asf_video_id; ! if(verbose) printf("ASF video ID = %d\n",demux->video->id); ! } if(demux->audio->id==-1) ! if(id!=asf_video_id && id!=demux->video->id){ ! demux->audio->id=id; ! if(verbose) printf("ASF audio ID = %d\n",demux->audio->id); ! } ! #endif if(id==demux->audio->id){ // audio ds=demux->audio; } else if(id==demux->video->id){ // video ds=demux->video; } --- 22,48 ---- if(verbose>=4) printf("demux_asf.read_packet: id=%d seq=%d len=%d\n",id,seq,len); ! if(demux->video->id==-1) ! if(avi_header.v_streams[id]) ! demux->video->id=id; ! if(demux->audio->id==-1) ! if(avi_header.a_streams[id]) ! demux->audio->id=id; if(id==demux->audio->id){ // audio ds=demux->audio; + if(!ds->sh){ + ds->sh=avi_header.a_streams[id]; + if(verbose) printf("Auto-selected ASF audio ID = %d\n",ds->id); + } } else if(id==demux->video->id){ // video ds=demux->video; + if(!ds->sh){ + ds->sh=avi_header.v_streams[id]; + if(verbose) printf("Auto-selected ASF video ID = %d\n",ds->id); + } } Index: demux_avi.c =================================================================== RCS file: /cvsroot/mplayer/main/demux_avi.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** demux_avi.c 2001/04/06 01:18:59 1.3 --- demux_avi.c 2001/04/15 03:40:37 1.4 *************** *** 18,23 **** static inline demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id){ int stream_id=avi_stream_id(id); ! if(stream_id==demux->audio->id) return demux->audio; ! if(stream_id==demux->video->id) return demux->video; if(id!=mmioFOURCC('J','U','N','K')){ // unknown --- 18,47 ---- static inline demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id){ int stream_id=avi_stream_id(id); ! ! // printf("demux_avi_select_stream(%d) {a:%d/v:%d}\n",stream_id, ! // demux->audio->id,demux->video->id); ! ! if(demux->video->id==-1) ! if(avi_header.v_streams[stream_id]) ! demux->video->id=stream_id; ! ! if(demux->audio->id==-1) ! if(avi_header.a_streams[stream_id]) ! demux->audio->id=stream_id; ! ! if(stream_id==demux->audio->id){ ! if(!demux->audio->sh){ ! demux->audio->sh=avi_header.a_streams[stream_id]; ! if(verbose) printf("Auto-selected AVI audio ID = %d\n",demux->audio->id); ! } ! return demux->audio; ! } ! if(stream_id==demux->video->id){ ! if(!demux->video->sh){ ! demux->video->sh=avi_header.v_streams[stream_id]; ! if(verbose) printf("Auto-selected AVI video ID = %d\n",demux->video->id); ! } ! return demux->video; ! } if(id!=mmioFOURCC('J','U','N','K')){ // unknown Index: demux_mpg.c =================================================================== RCS file: /cvsroot/mplayer/main/demux_mpg.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** demux_mpg.c 2001/04/14 03:10:48 1.3 --- demux_mpg.c 2001/04/15 03:40:37 1.4 *************** *** 84,100 **** //============== DVD Audio sub-stream ====================== if(id==0x1BD){ ! int aid=stream_read_char(demux->stream)&0x7F;--len; ! ds=demux->audio; ! if(ds->id==-1) ds->id=aid; ! if(!dvdaudio_table[aid]){ ! dvdaudio_table[aid]=1; ! printf("DVD Audio format: %s ID=%d%s\n", ! ((aid&0x70)==0x20)?"PCM":"AC3",aid,(ds->id==aid)?" CURRENT":""); ! } if(len<3) return -1; // invalid audio packet ! if(ds->id!=aid){ ! // drop packet (not selected channel) ! ds=NULL; ! } else { // READ Packet: Skip additional audio header data: c=stream_read_char(demux->stream); --- 84,96 ---- //============== DVD Audio sub-stream ====================== if(id==0x1BD){ ! int aid=128+(stream_read_char(demux->stream)&0x7F);--len; if(len<3) return -1; // invalid audio packet ! ! if(!avi_header.a_streams[aid]) new_sh_audio(aid); ! if(demux->audio->id==-1) demux->audio->id=aid; ! ! if(demux->audio->id==aid){ ! ds=demux->audio; ! if(!ds->sh) ds->sh=avi_header.a_streams[aid]; // READ Packet: Skip additional audio header data: c=stream_read_char(demux->stream); *************** *** 131,137 **** --- 127,135 ---- // mpeg audio int aid=id-0x1C0; + if(!avi_header.a_streams[aid]) new_sh_audio(aid); if(demux->audio->id==-1) demux->audio->id=aid; if(demux->audio->id==aid){ ds=demux->audio; + if(!ds->sh) ds->sh=avi_header.a_streams[aid]; if(ds->type==-1) ds->type=1; } *************** *** 140,145 **** // mpeg video int aid=id-0x1E0; if(demux->video->id==-1) demux->video->id=aid; ! if(demux->video->id==aid) ds=demux->video; } --- 138,147 ---- // mpeg video int aid=id-0x1E0; + if(!avi_header.v_streams[aid]) new_sh_video(aid); if(demux->video->id==-1) demux->video->id=aid; ! if(demux->video->id==aid){ ! ds=demux->video; ! if(!ds->sh) ds->sh=avi_header.v_streams[aid]; ! } } Index: mplayer.c =================================================================== RCS file: /cvsroot/mplayer/main/mplayer.c,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -r1.60 -r1.61 *** mplayer.c 2001/04/14 22:51:56 1.60 --- mplayer.c 2001/04/15 03:40:37 1.61 *************** *** 155,165 **** static int max_framesize=0; ! static int dbg_es_sent=0; ! static int dbg_es_rcvd=0; //static int show_packets=0; //**************************************************************************// typedef struct { // file: --- 155,173 ---- static int max_framesize=0; ! //static int dbg_es_sent=0; ! //static int dbg_es_rcvd=0; //static int show_packets=0; //**************************************************************************// + //**************************************************************************// + // Input media streaming & demultiplexer: + //**************************************************************************// + + #include "stream.c" + #include "demuxer.c" + #include "stheader.h" + typedef struct { // file: *************** *** 174,177 **** --- 182,188 ---- int idx_pos_v; int idx_offset; // ennyit kell hozzaadni az index offset ertekekhez + // streams: + sh_audio_t* a_streams[256]; + sh_video_t* v_streams[256]; // video: unsigned int bitrate; *************** *** 181,199 **** #include "aviprint.c" - - extern picture_t *picture; - - char* encode_name=NULL; - char* encode_index_name=NULL; - int encode_bitrate=0; ! //**************************************************************************// ! // Input media streaming & demultiplexer: ! //**************************************************************************// ! #include "stream.c" ! #include "demuxer.c" - #include "stheader.h" #include "demux_avi.c" --- 192,218 ---- #include "aviprint.c" ! sh_audio_t* new_sh_audio(int id){ ! if(avi_header.a_streams[id]){ ! printf("Warning! Audio stream header %d redefined!\n",id); ! } else { ! if(verbose) printf("Found audio stream: %d\n",id); ! avi_header.a_streams[id]=malloc(sizeof(sh_audio_t)); ! memset(avi_header.a_streams[id],0,sizeof(sh_audio_t)); ! } ! return avi_header.a_streams[id]; ! } ! sh_video_t* new_sh_video(int id){ ! if(avi_header.v_streams[id]){ ! printf("Warning! video stream header %d redefined!\n",id); ! } else { ! if(verbose) printf("Found video stream: %d\n",id); ! avi_header.v_streams[id]=malloc(sizeof(sh_video_t)); ! memset(avi_header.v_streams[id],0,sizeof(sh_video_t)); ! } ! return avi_header.v_streams[id]; ! } #include "demux_avi.c" *************** *** 204,215 **** demux_stream_t *d_video=NULL; ! sh_audio_t sh_audio_i; // FIXME later! ! sh_video_t sh_video_i; ! sh_audio_t *sh_audio=&sh_audio_i; ! sh_video_t *sh_video=&sh_video_i; // MPEG video stream parser: #include "parse_es.c" static const int frameratecode2framerate[16] = { 0, 24000*10000/1001, 24*10000,25*10000, 30000*10000/1001, 30*10000,50*10000,60000*10000/1001, --- 223,238 ---- demux_stream_t *d_video=NULL; ! sh_audio_t *sh_audio=NULL;//&sh_audio_i; ! sh_video_t *sh_video=NULL;//&sh_video_i; + char* encode_name=NULL; + char* encode_index_name=NULL; + int encode_bitrate=0; + // MPEG video stream parser: #include "parse_es.c" + extern picture_t *picture; + static const int frameratecode2framerate[16] = { 0, 24000*10000/1001, 24*10000,25*10000, 30000*10000/1001, 30*10000,50*10000,60000*10000/1001, *************** *** 350,353 **** --- 373,377 ---- int divx_quality=0; + extern int vo_dbpp; int main(int argc,char* argv[], char *envp[]){ *************** *** 407,411 **** float sub_fps=0; //int user_bpp=0; ! extern int vo_dbpp; #include "cfg-mplayer.h" --- 431,435 ---- float sub_fps=0; //int user_bpp=0; ! #include "cfg-mplayer.h" *************** *** 595,600 **** d_audio=demuxer->audio; d_video=demuxer->video; ! d_audio->sh=sh_audio; sh_audio->ds=d_audio; ! d_video->sh=sh_video; sh_video->ds=d_video; switch(file_format){ --- 619,626 ---- d_audio=demuxer->audio; d_video=demuxer->video; ! //d_audio->sh=sh_audio; ! //d_video->sh=sh_video; ! //sh_audio=d_audio->sh;sh_audio->ds=d_audio; ! //sh_video=d_video->sh;sh_video->ds=d_video; switch(file_format){ *************** *** 663,672 **** exit(1); } if(has_audio){ ! if(verbose) printf("ASF: Searching for audio stream (id:%d)\n",d_audio->id); if(!ds_fill_buffer(d_audio)){ ! printf("ASF: No Audio stream found... ->nosound\n"); has_audio=0; ! } else sh_audio->format=sh_audio->wf.wFormatTag; } // calc. FPS: --- 689,703 ---- exit(1); } + sh_video=d_video->sh;sh_video->ds=d_video; if(has_audio){ ! if(verbose) printf("AVI: Searching for audio stream (id:%d)\n",d_audio->id); if(!ds_fill_buffer(d_audio)){ ! printf("AVI: No Audio stream found... ->nosound\n"); has_audio=0; ! sh_audio=NULL; ! } else { ! sh_audio=d_audio->sh;sh_audio->ds=d_audio; ! sh_audio->format=sh_audio->wf.wFormatTag; ! } } // calc. FPS: *************** *** 699,702 **** --- 730,734 ---- exit(1); } + sh_video=d_video->sh;sh_video->ds=d_video; if(has_audio){ if(verbose) printf("ASF: Searching for audio stream (id:%d)\n",d_audio->id); *************** *** 704,708 **** printf("ASF: No Audio stream found... ->nosound\n"); has_audio=0; ! } else sh_audio->format=sh_audio->wf.wFormatTag; } sh_video->fps=1000.0f; sh_video->frametime=0.001f; // 1ms --- 736,744 ---- printf("ASF: No Audio stream found... ->nosound\n"); has_audio=0; ! sh_audio=NULL; ! } else { ! sh_audio=d_audio->sh;sh_audio->ds=d_audio; ! sh_audio->format=sh_audio->wf.wFormatTag; ! } } sh_video->fps=1000.0f; sh_video->frametime=0.001f; // 1ms *************** *** 715,720 **** } case DEMUXER_TYPE_MPEG_ES: { ! demuxer->audio->type=0; ! has_audio=0; // ES streams has no audio channel break; } --- 751,756 ---- } case DEMUXER_TYPE_MPEG_ES: { ! d_audio->type=0; ! has_audio=0;sh_audio=NULL; // ES streams has no audio channel break; } *************** *** 723,728 **** if(!ds_fill_buffer(d_audio)){ printf("MPEG: No Audio stream found... ->nosound\n"); ! has_audio=0; } else { if(verbose) printf("detected MPG-PS audio format: %d\n",d_audio->type); switch(d_audio->type){ --- 759,765 ---- if(!ds_fill_buffer(d_audio)){ printf("MPEG: No Audio stream found... ->nosound\n"); ! has_audio=0;sh_audio=NULL; } else { + sh_audio=d_audio->sh;sh_audio->ds=d_audio; if(verbose) printf("detected MPG-PS audio format: %d\n",d_audio->type); switch(d_audio->type){ *************** *** 761,764 **** --- 798,802 ---- } if(verbose) printf("OK!\n"); + sh_video=d_video->sh;sh_video->ds=d_video; sh_video->format=1; // mpeg video mpeg2_init(); *************** *** 1441,1450 **** max_pts_correction=default_max_pts_correction; a_frame+=x; c_total+=x; ! printf(" ct:%7.3f %3d %2d%% %2d%% %3.1f%% %d \r",c_total, (int)num_frames, (v_frame>0.5)?(int)(100.0*video_time_usage/(double)v_frame):0, (v_frame>0.5)?(int)(100.0*vout_time_usage/(double)v_frame):0, ! (v_frame>0.5)?(100.0*audio_time_usage/(double)v_frame):0, ! dbg_es_sent-dbg_es_rcvd ); fflush(stdout); --- 1479,1488 ---- max_pts_correction=default_max_pts_correction; a_frame+=x; c_total+=x; ! printf(" ct:%7.3f %3d %2d%% %2d%% %3.1f%% \r",c_total, (int)num_frames, (v_frame>0.5)?(int)(100.0*video_time_usage/(double)v_frame):0, (v_frame>0.5)?(int)(100.0*vout_time_usage/(double)v_frame):0, ! (v_frame>0.5)?(100.0*audio_time_usage/(double)v_frame):0 ! // dbg_es_sent-dbg_es_rcvd ); fflush(stdout); *************** *** 1458,1467 **** if(frame_corr_num==5){ // printf("A: --- V:%6.1f \r",v_pts); ! printf("V:%6.1f %3d %2d%% %2d%% %3.1f%% %d \r",v_pts, (int)num_frames, (v_frame>0.5)?(int)(100.0*video_time_usage/(double)v_frame):0, (v_frame>0.5)?(int)(100.0*vout_time_usage/(double)v_frame):0, ! (v_frame>0.5)?(100.0*audio_time_usage/(double)v_frame):0, ! dbg_es_sent-dbg_es_rcvd); fflush(stdout); --- 1496,1506 ---- if(frame_corr_num==5){ // printf("A: --- V:%6.1f \r",v_pts); ! printf("V:%6.1f %3d %2d%% %2d%% %3.1f%% \r",v_pts, (int)num_frames, (v_frame>0.5)?(int)(100.0*video_time_usage/(double)v_frame):0, (v_frame>0.5)?(int)(100.0*vout_time_usage/(double)v_frame):0, ! (v_frame>0.5)?(100.0*audio_time_usage/(double)v_frame):0 ! // dbg_es_sent-dbg_es_rcvd ! ); fflush(stdout); Index: stheader.h =================================================================== RCS file: /cvsroot/mplayer/main/stheader.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** stheader.h 2001/04/14 03:12:48 1.4 --- stheader.h 2001/04/15 03:40:37 1.5 *************** *** 58,59 **** --- 58,60 ---- } sh_video_t; + Index: version.h =================================================================== RCS file: /cvsroot/mplayer/main/version.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** version.h 2001/02/25 22:51:34 1.3 --- version.h 2001/04/15 03:40:37 1.4 *************** *** 1 **** ! #define VERSION "0.11pre-cvs" --- 1 ---- ! #define VERSION "0.11cvs-010415-00:56" _______________________________________________ Mplayer-cvslog mailing list Mplayer-cvslog@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/mplayer-cvslog
participants (1)
-
GEREOFFY