[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[524] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-08 13:28:05
|
Revision: 524 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=524&view=rev Author: nickols_k Date: 2012-12-08 13:27:53 +0000 (Sat, 08 Dec 2012) Log Message: ----------- New classes based on struct Stream. Removed event_handler callback as meaningless Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/dump.h mplayerxp/libmpdemux/demux_aiff.cpp mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_audio.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_bmp.cpp mplayerxp/libmpdemux/demux_demuxers.cpp mplayerxp/libmpdemux/demux_dv.cpp mplayerxp/libmpdemux/demux_film.cpp mplayerxp/libmpdemux/demux_fli.cpp mplayerxp/libmpdemux/demux_lavf.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mov.cpp mplayerxp/libmpdemux/demux_mpg.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/demux_nsv.cpp mplayerxp/libmpdemux/demux_nuv.cpp mplayerxp/libmpdemux/demux_ogg.cpp mplayerxp/libmpdemux/demux_pva.cpp mplayerxp/libmpdemux/demux_rawaudio.cpp mplayerxp/libmpdemux/demux_rawvideo.cpp mplayerxp/libmpdemux/demux_real.cpp mplayerxp/libmpdemux/demux_realaud.cpp mplayerxp/libmpdemux/demux_roq.cpp mplayerxp/libmpdemux/demux_smjpeg.cpp mplayerxp/libmpdemux/demux_ts.cpp mplayerxp/libmpdemux/demux_ty.cpp mplayerxp/libmpdemux/demux_viv.cpp mplayerxp/libmpdemux/demux_vqf.cpp mplayerxp/libmpdemux/demux_y4m.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpdemux/parse_mp4.cpp mplayerxp/libmpdemux/yuv4mpeg.cpp mplayerxp/libmpdemux/yuv4mpeg.h mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/libmpsub/vobsub.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mplayerxp.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/dump.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -43,8 +43,8 @@ FILE *f; const char *ext,*name; MP_UNIT("dumpstream"); - stream_reset(stream); - stream_seek(stream,stream->start_pos()); + stream->reset(); + stream->seek(stream->start_pos()); ext=".ext"; if(!port) { @@ -62,8 +62,8 @@ exit_player(MSGTR_Exit_error); } MSG_INFO("Dumping stream to %s\n",name); - while(!stream_eof(stream)){ - len=stream_read(stream,buf,4096); + while(!stream->eof()){ + len=stream->read(buf,4096); if(len>0) fwrite(buf,len,1,f); } fclose(f); @@ -92,10 +92,6 @@ libinput_t* libinput; }; -void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp) -{ -} - /* returns: 0 - nothing interested -1 - quit Modified: mplayerxp/dump.h =================================================================== --- mplayerxp/dump.h 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/dump.h 2012-12-08 13:27:53 UTC (rev 524) @@ -10,6 +10,5 @@ void dump_mux_init(Demuxer *demuxer,libinput_t*libinput); void dump_mux(Demuxer *demuxer,int use_pts,const char *seek_to_sec,unsigned play_n_frames); void dump_mux_close(Demuxer *demuxer); - void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp); } //namespace #endif Modified: mplayerxp/libmpdemux/demux_aiff.cpp =================================================================== --- mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -45,7 +45,7 @@ char buf[12]; Stream *s; s = demuxer->stream; - stream_read(s,buf,12); + s->read(buf,12); if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return MPXP_Ok; if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return MPXP_Ok; return MPXP_False; @@ -70,16 +70,16 @@ sh_audio->afmt = bps2afmt(2); w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); w->cbSize = 0; - stream_reset(s); - stream_seek(s,8); - if(stream_read(s,preamble,4)!=4) return NULL; + s->reset(); + s->seek(8); + if(s->read(preamble,4)!=4) return NULL; if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','I','F','C')) priv->verc=1; demuxer->movi_start=0; while(1) { unsigned frames=0; int chunk_size; - if(stream_read(s,preamble,8)!=8) break; + if(s->read(preamble,8)!=8) break; chunk_size=be2me_32(*((uint32_t *)&preamble[4])); MSG_V("Got preamble: %c%c%c%c\n",preamble[0],preamble[1],preamble[2],preamble[3]); if(*((uint32_t *)&preamble[0])==mmioFOURCC('F','V','E','R')) @@ -89,7 +89,7 @@ MSG_V("Wrong length of VFER chunk %lu\n",be2me_32(*((uint32_t *)&preamble[4]))); return NULL; } - if(stream_read(s,preamble,4)!=4) return NULL; + if(s->read(preamble,4)!=4) return NULL; if(be2me_32(*((uint32_t *)&preamble[0])) == 0xA2805140) priv->verc=1; else { @@ -107,7 +107,7 @@ MSG_V("Invalid COMM length %u\n",chunk_size); return NULL; } - if(stream_read(s,buf,chunk_size)!=chunk_size) return NULL; + if(s->read(buf,chunk_size)!=chunk_size) return NULL; w->nChannels = sh_audio->nch = be2me_16(*((uint16_t *)&buf[0])); frames=be2me_32(*((uint32_t *)&buf[2])); w->wBitsPerSample = be2me_16(*((uint16_t *)&buf[6])); @@ -128,51 +128,51 @@ if(*((uint32_t *)&preamble[0])==mmioFOURCC('S','S','N','D') || *((uint32_t *)&preamble[0])==mmioFOURCC('A','P','C','M')) { - demuxer->movi_start=stream_tell(s)+8; + demuxer->movi_start=s->tell()+8; demuxer->movi_end=demuxer->movi_start+chunk_size; if(priv->verc && (chunk_size&1)) chunk_size++; - stream_skip(s,chunk_size); + s->skip(chunk_size); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('N','A','M','E')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_NAME, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','U','T','H')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_AUTHOR, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('(','c',')',' ')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_COPYRIGHT, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','N','N','O')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_DESCRIPTION, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else { if(priv->verc && (chunk_size&1)) chunk_size++; - stream_skip(s,chunk_size); /*unknown chunk type */ + s->skip(chunk_size); /*unknown chunk type */ } } if(!w->nAvgBytesPerSec) { MSG_V("COMM chunk not found\n"); return NULL; /* memleak here!!! */} @@ -180,16 +180,16 @@ demuxer->movi_length = (demuxer->movi_end-demuxer->movi_start)/w->nAvgBytesPerSec; demuxer->audio->sh = sh_audio; sh_audio->ds = demuxer->audio; - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); return priv; } static int aiff_demux(Demuxer* demuxer, Demuxer_Stream *ds) { sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); int l = sh_audio->wf->nAvgBytesPerSec; - off_t spos = stream_tell(demuxer->stream); + off_t spos = demuxer->stream->tell(); - if(stream_eof(demuxer->stream)) + if(demuxer->stream->eof()) return 0; Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(l); @@ -197,7 +197,7 @@ dp->pos = spos; dp->flags = DP_NONKEYFRAME; - l=stream_read(demuxer->stream,dp->buffer(),l); + l=demuxer->stream->read(dp->buffer(),l); dp->resize(l); ds->add_packet(dp); @@ -209,10 +209,10 @@ sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); off_t base,pos; - base = (seeka->flags&DEMUX_SEEK_SET) ? demuxer->movi_start : stream_tell(s); + base = (seeka->flags&DEMUX_SEEK_SET) ? demuxer->movi_start : s->tell(); pos=base+(seeka->flags&DEMUX_SEEK_PERCENTS?(demuxer->movi_end - demuxer->movi_start):sh_audio->i_bps)*seeka->secs; pos -= (pos % (sh_audio->nch * afmt2bps(sh_audio->afmt))); - stream_seek(s,pos); + s->seek(pos); } static void aiff_close(Demuxer* demuxer) Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -133,7 +133,7 @@ apriv->asf_packetrate=0; apriv->asf_movielength=0; - stream_read(demuxer->stream,(char*)&apriv->asfh,sizeof(ASF_header_t)); // header obj + demuxer->stream->read((char*)&apriv->asfh,sizeof(ASF_header_t)); // header obj le2me_ASF_header_t(&apriv->asfh); // swap to machine endian if(memcmp(asf2hdrguid,apriv->asfh.objh.guid,16)==0){ MSG_ERR("ASF_check: found ASF v2 guid!\nCurrently is not supported - please report!\n"); @@ -164,16 +164,16 @@ int best_audio = -1; asf_priv_t *apriv=static_cast<asf_priv_t*>(demuxer->priv); -while(!stream_eof(demuxer->stream)){ +while(!demuxer->stream->eof()){ int pos,endpos; - pos=stream_tell(demuxer->stream); - stream_read(demuxer->stream,(char*) &apriv->objh,sizeof(ASF_obj_header_t)); + pos=demuxer->stream->tell(); + demuxer->stream->read((char*) &apriv->objh,sizeof(ASF_obj_header_t)); le2me_ASF_obj_header_t(&apriv->objh); - if(stream_eof(demuxer->stream)) break; // EOF + if(demuxer->stream->eof()) break; // EOF endpos=pos+apriv->objh.size; switch(ASF_LOAD_GUID_PREFIX(apriv->objh.guid)){ case ASF_GUID_PREFIX_stream_header: - stream_read(demuxer->stream,(char*) &apriv->streamh,sizeof(ASF_stream_header_t)); + demuxer->stream->read((char*) &apriv->streamh,sizeof(ASF_stream_header_t)); le2me_ASF_stream_header_t(&apriv->streamh); MSG_V("stream type: %s\n" "stream concealment: %s\n" @@ -184,9 +184,9 @@ ,asf_chunk_type(apriv->streamh.concealment) ,(int)apriv->streamh.type_size,(int)apriv->streamh.stream_size,(int)apriv->streamh.stream_no ,(unsigned long)apriv->streamh.unk1,(unsigned int)apriv->streamh.unk2 - ,stream_tell(demuxer->stream)); + ,demuxer->stream->tell()); // type-specific data: - stream_read(demuxer->stream,(char*) buffer,apriv->streamh.type_size); + demuxer->stream->read((char*) buffer,apriv->streamh.type_size); switch(ASF_LOAD_GUID_PREFIX(apriv->streamh.type)){ case ASF_GUID_PREFIX_audio_stream: { sh_audio_t* sh_audio=demuxer->new_sh_audio(apriv->streamh.stream_no & 0x7F); @@ -196,7 +196,7 @@ le2me_WAVEFORMATEX(sh_audio->wf); if(mp_conf.verbose>=1) print_wave_header(sh_audio->wf,apriv->streamh.type_size); if(ASF_LOAD_GUID_PREFIX(apriv->streamh.concealment)==ASF_GUID_PREFIX_audio_conceal_interleave){ - stream_read(demuxer->stream,(char*) buffer,apriv->streamh.stream_size); + demuxer->stream->read((char*) buffer,apriv->streamh.stream_size); apriv->asf_scrambling_h=buffer[0]; apriv->asf_scrambling_w=(buffer[2]<<8)|buffer[1]; apriv->asf_scrambling_b=(buffer[4]<<8)|buffer[3]; @@ -222,7 +222,7 @@ break; // case ASF_GUID_PREFIX_header_2_0: return "guid_header_2_0"; case ASF_GUID_PREFIX_file_header: // guid_file_header - stream_read(demuxer->stream,(char*) &apriv->fileh,sizeof(ASF_file_header_t)); + demuxer->stream->read((char*) &apriv->fileh,sizeof(ASF_file_header_t)); le2me_ASF_file_header_t(&apriv->fileh); MSG_V("ASF: size: %llu play_duration: %llu send_duration: %llu packets: %d\nflags: %d min_packet_size: %d max_packet_size: %d max_bitrate: %d preroll: %d\n", (uint64_t)apriv->fileh.file_size,(uint64_t)apriv->fileh.play_duration,(uint64_t)apriv->fileh.send_duration, @@ -233,7 +233,7 @@ demuxer->movi_length=apriv->asf_movielength=apriv->fileh.send_duration/10000000LL; break; case ASF_GUID_PREFIX_data_chunk: // guid_data_chunk - demuxer->movi_start=stream_tell(demuxer->stream)+26; + demuxer->movi_start=demuxer->stream->tell()+26; demuxer->movi_end=endpos; MSG_V("Found movie at 0x%X - 0x%X\n",(int)demuxer->movi_start,(int)demuxer->movi_end); break; @@ -243,13 +243,13 @@ case ASF_GUID_PREFIX_content_desc: // Content description { char *string=NULL; - stream_read(demuxer->stream,(char*) &apriv->contenth,sizeof(ASF_content_description_t)); + demuxer->stream->read((char*) &apriv->contenth,sizeof(ASF_content_description_t)); le2me_ASF_content_description_t(&apriv->contenth); MSG_V("\n"); // extract the title if( apriv->contenth.title_size!=0 ) { string=new char[apriv->contenth.title_size]; - stream_read(demuxer->stream, string, apriv->contenth.title_size); + demuxer->stream->read( string, apriv->contenth.title_size); pack_asf_string(string, apriv->contenth.title_size); demuxer->info().add(INFOT_NAME, string); delete string; @@ -257,7 +257,7 @@ // extract the author if( apriv->contenth.author_size!=0 ) { string=new char [apriv->contenth.author_size]; - stream_read(demuxer->stream, string, apriv->contenth.author_size); + demuxer->stream->read( string, apriv->contenth.author_size); pack_asf_string(string, apriv->contenth.author_size); demuxer->info().add(INFOT_AUTHOR, string); delete string; @@ -265,7 +265,7 @@ // extract the copyright if( apriv->contenth.copyright_size!=0 ) { string=new char [apriv->contenth.copyright_size]; - stream_read(demuxer->stream, string, apriv->contenth.copyright_size); + demuxer->stream->read( string, apriv->contenth.copyright_size); pack_asf_string(string, apriv->contenth.copyright_size); demuxer->info().add(INFOT_COPYRIGHT, string); delete string; @@ -273,7 +273,7 @@ // extract the comment if( apriv->contenth.comment_size!=0 ) { string=new char [apriv->contenth.comment_size]; - stream_read(demuxer->stream, string, apriv->contenth.comment_size); + demuxer->stream->read( string, apriv->contenth.comment_size); pack_asf_string(string, apriv->contenth.comment_size); demuxer->info().add(INFOT_COMMENTS, string); delete string; @@ -281,7 +281,7 @@ // extract the rating if( apriv->contenth.rating_size!=0 ) { string=new char [apriv->contenth.rating_size]; - stream_read(demuxer->stream, string, apriv->contenth.rating_size); + demuxer->stream->read( string, apriv->contenth.rating_size); pack_asf_string(string, apriv->contenth.comment_size); demuxer->info().add(INFOT_RATING, string); delete string; @@ -295,13 +295,13 @@ char *object=NULL, *ptr=NULL; MSG_V("============ ASF Stream group == START ===\n"); MSG_V(" object size = %d\n", (int)apriv->objh.size); - object = (char*)mp_malloc(apriv->objh.size); + object = new char[apriv->objh.size]; if( object==NULL ) { MSG_ERR("Memory allocation failed\n"); delete demuxer->priv; return NULL; } - stream_read( demuxer->stream, object, apriv->objh.size ); + demuxer->stream->read(object, apriv->objh.size ); // FIXME: We need some endian handling below... ptr = object; stream_count = le2me_16(*(uint16_t*)ptr); @@ -328,7 +328,7 @@ if(ASF_LOAD_GUID_PREFIX(apriv->objh.guid)==ASF_GUID_PREFIX_data_chunk) break; // movi chunk - if(!stream_seek(demuxer->stream,endpos)) break; + if(!demuxer->stream->seek(endpos)) break; } // while EOF if(streams) { @@ -362,8 +362,8 @@ { Demuxer_Stream *d_video=demuxer->video; Demuxer_Stream *d_audio=demuxer->audio; - stream_reset(demuxer->stream); - stream_seek(demuxer->stream,demuxer->movi_start); + demuxer->stream->reset(); + demuxer->stream->seek(demuxer->movi_start); if(d_video->id != -2) { if(!d_video->fill_buffer()){ MSG_WARN("ASF: " MSGTR_MissingVideoStream); @@ -459,22 +459,22 @@ Demuxer_Packet* dp=ds->asf_packet; if(dp->length()!=unsigned(offs) && offs!=-1) MSG_V("warning! fragment.len=%d BUT next fragment offset=%d \n",dp->length(),offs); dp->resize(dp->length()+len); - stream_seek(demux->stream,dataoff); - stream_read(demux->stream,dp->buffer()+dp->length(),len); + demux->stream->seek(dataoff); + demux->stream->read(dp->buffer()+dp->length(),len); MSG_DBG3("data appended! %d+%d\n",dp->length(),len); // we are ready now. return 1; } } // create new packet: - { + { if(offs>0){ MSG_V("warning! broken fragment or incomplete seeking, %d bytes missing \n",offs); return 0; } Demuxer_Packet* dp=new(zeromem) Demuxer_Packet(len); - stream_seek(demux->stream,dataoff); - len=stream_read(demux->stream,dp->buffer(),len); + demux->stream->seek(dataoff); + len=demux->stream->read(dp->buffer(),len); dp->resize(len); dp->pts=time*0.001f; dp->flags=keyframe?DP_KEYFRAME:DP_NONKEYFRAME; @@ -499,15 +499,15 @@ int done=0; while(!done) { - demux->filepos=stream_tell(demux->stream); + demux->filepos=stream->tell(); // Broadcast stream have movi_start==movi_end // Better test ? if((demux->movi_start != demux->movi_end) && (demux->filepos>=demux->movi_end)){ - stream_set_eof(demux->stream,1); + stream->eof(1); return 0; } - if(stream_eof(demux->stream)) return 0; // EOF + if(stream->eof()) return 0; // EOF { unsigned char ecc_flags; off_t p_start,p_end; unsigned char flags; @@ -521,36 +521,36 @@ unsigned char segsizetype=0x80; int seg=-1; - p_start=stream_tell(stream); + p_start=stream->tell(); p_end = p_start+apriv->asf_packetsize; /* FIXME: parser is not ready for variable packet length */ - ecc_flags=stream_read_char(stream); /* read v82 header */ + ecc_flags=stream->read_char(); /* read v82 header */ MSG_DBG2("ecc=%02X ecc_flags=%u\n",ecc_flags,ecc_flags&0x0F); - stream_skip(stream,ecc_flags&15); - flags=stream_read_char(stream); - segtype=stream_read_char(stream); + stream->skip(ecc_flags&15); + flags=stream->read_char(); + segtype=stream->read_char(); /* Read packet size (plen): */ switch((flags>>5)&3){ - case 3: plen=stream_read_dword_le(stream);break; // dword - case 2: plen=stream_read_word_le(stream);break; // word - case 1: plen=stream_read_char(stream);break; // byte + case 3: plen=stream->read_dword_le();break; // dword + case 2: plen=stream->read_word_le();break; // word + case 1: plen=stream->read_char();break; // byte default: plen=0; /* not present */ // MSG_V("Invalid plen type! assuming plen=0 (flags=%02X)\n",flags); } /* Read sequence: */ switch((flags>>1)&3){ - case 3: sequence=stream_read_dword_le(stream);break;// dword - case 2: sequence=stream_read_word_le(stream);break; // word - case 1: sequence=stream_read_char(stream);break; // byte + case 3: sequence=stream->read_dword_le();break;// dword + case 2: sequence=stream->read_word_le();break; // word + case 1: sequence=stream->read_char();break; // byte default: sequence=0; } /* Read padding size (padding): */ switch((flags>>3)&3){ - case 3: padding=stream_read_dword_le(stream);break; // dword - case 2: padding=stream_read_word_le(stream);break; // word - case 1: padding=stream_read_char(stream);break; // byte + case 3: padding=stream->read_dword_le();break; // dword + case 2: padding=stream->read_word_le();break; // word + case 1: padding=stream->read_char();break; // byte default: padding=0; } @@ -564,12 +564,12 @@ } // Read time & duration: - time = stream_read_dword_le(stream); - duration = stream_read_word_le(stream); + time = stream->read_dword_le(); + duration = stream->read_word_le(); // Read payload flags: if(flags&1){ - unsigned char sf=stream_read_char(stream); + unsigned char sf=stream->read_char(); // multiple sub-packets segsizetype=sf>>6; segs=sf & 0x3F; @@ -589,65 +589,65 @@ unsigned int time2=0; int keyframe=0; - if(stream_tell(stream)>=p_end) MSG_V("Warning! invalid packet 1, sig11 coming soon...\n"); + if(stream->tell()>=p_end) MSG_V("Warning! invalid packet 1, sig11 coming soon...\n"); - st=stream_read_char(stream); + st=stream->read_char(); streamno=st&0x7F; if(st&0x80) keyframe=1; // Read media object number (seq): switch((segtype>>4)&3){ - case 3: seq=stream_read_dword_le(stream);break; // dword - case 2: seq=stream_read_word_le(stream);break; // word - case 1: seq=stream_read_char(stream);break; // byte + case 3: seq=stream->read_dword_le();break;// dword + case 2: seq=stream->read_word_le();break; // word + case 1: seq=stream->read_char();break; // byte default: seq=0; } // Read offset or timestamp: switch((segtype>>2)&3){ - case 3: x=stream_read_dword_le(stream);break; // dword - case 2: x=stream_read_word_le(stream);break; // word - case 1: x=stream_read_char(stream);break; // byte + case 3: x=stream->read_dword_le();break; // dword + case 2: x=stream->read_word_le();break; // word + case 1: x=stream->read_char();break; // byte default: x=0; } // Read replic.data len: switch((segtype)&3){ - case 3: rlen=stream_read_dword_le(stream);break; // dword - case 2: rlen=stream_read_word_le(stream);break; // word - case 1: rlen=stream_read_char(stream);break; // byte + case 3: rlen=stream->read_dword_le();break; // dword + case 2: rlen=stream->read_word_le();break; // word + case 1: rlen=stream->read_char();break; // byte default: rlen=0; } switch(rlen){ case 0x01: // 1 = special, means grouping - stream_skip(stream,1); // skip PTS delta + stream->skip(1); // skip PTS delta break; default: if(rlen>=8){ - stream_skip(stream,4);// skip object size - time2=stream_read_dword_le(stream); // read PTS - stream_skip(stream,rlen-8); + stream->skip(4);// skip object size + time2=stream->read_dword_le(); // read PTS + stream->skip(rlen-8); } else { MSG_V("unknown segment type (rlen): 0x%02X \n",rlen); time2=0; // unknown - stream_skip(stream,rlen); + stream->skip(rlen); } } if(flags&1){ // multiple segments switch(segsizetype){ - case 3: len=stream_read_dword_le(stream);break; // dword - case 2: len=stream_read_word_le(stream);break; // word - case 1: len=stream_read_char(stream);break; // byte - default: len=plen-(stream_tell(stream)-p_start); // ??? + case 3: len=stream->read_dword_le();break; // dword + case 2: len=stream->read_word_le();break; // word + case 1: len=stream->read_char();break; // byte + default: len=plen-(stream->tell()-p_start); // ??? } } else { // single segment - len=plen-(stream_tell(stream)-p_start); + len=plen-(stream->tell()-p_start); } - if(len<0 || (stream_tell(stream)+len)>p_end){ + if(len<0 || (stream->tell()+len)>p_end){ MSG_V("ASF_parser: warning! segment len=%d\n",len); } MSG_DBG2(" seg #%d: streamno=%d seq=%d type=%02X len=%d\n",seg,streamno,seq,rlen,len); @@ -656,9 +656,9 @@ case 0x01: // GROUPING: while(len>0){ - int len2=stream_read_char(stream); + int len2=stream->read_char(); if(len2<0) len2=0; - done=demux_asf_read_packet(demux,stream_tell(stream),len2,streamno,seq,x,duration,-1,keyframe); + done=demux_asf_read_packet(demux,stream->tell(),len2,streamno,seq,x,duration,-1,keyframe); len-=len2+1; ++seq; } @@ -669,12 +669,12 @@ default: // NO GROUPING: if(len<0) len=0; - done=demux_asf_read_packet(demux,stream_tell(stream),len,streamno,seq,time2,duration,x,keyframe); + done=demux_asf_read_packet(demux,stream->tell(),len,streamno,seq,time2,duration,x,keyframe); break; } } // for segs - stream_seek(stream,p_end); + stream->seek(p_end); if(done) return 1; // success } } @@ -697,7 +697,7 @@ off_t newpos; newpos=((seeka->flags&DEMUX_SEEK_SET)?demuxer->movi_start:demuxer->filepos)+rel_seek_bytes; if(newpos<0 || newpos<demuxer->movi_start) newpos=demuxer->movi_start; - stream_seek(demuxer->stream,newpos); + demuxer->stream->seek(newpos); /*!!! FIXME: this loop is too long sometime !!!*/ while(d_video->fill_buffer()) Modified: mplayerxp/libmpdemux/demux_audio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_audio.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_audio.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -414,15 +414,15 @@ static void find_next_mp3_hdr(Demuxer *demuxer,uint8_t *hdr) { int len; off_t spos; - while(!stream_eof(demuxer->stream)) { - spos=stream_tell(demuxer->stream); - stream_read(demuxer->stream,hdr,4); + while(!demuxer->stream->eof()) { + spos=demuxer->stream->tell(); + demuxer->stream->read(hdr,4); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(len < 0) { - stream_skip(demuxer->stream,-3); + demuxer->stream->skip(-3); continue; } - stream_seek(demuxer->stream,spos); + demuxer->stream->seek(spos); break; } } @@ -437,37 +437,37 @@ pos = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(pos < 0) return 0; - stream_skip(s,pos-4); - if(stream_eof(s)) + s->skip(pos-4); + if(s->eof()) return 0; - stream_read(s,hdr,4); - if(stream_eof(s)) + s->read(hdr,4); + if(s->eof()) return 0; } if(s->end_pos()) { char tag[4]; - stream_seek(s,s->end_pos()-128); - stream_read(s,tag,3); + s->seek(s->end_pos()-128); + s->read(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); + demuxer->movi_end = s->tell()-3; + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_NAME,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_AUTHOR,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_ALBUM,buf); - stream_read(s,buf,4); + s->read(buf,4); buf[4] = '\0'; demuxer->info().add(INFOT_DATE,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_COMMENTS,buf); if(buf[28] == 0 && buf[29] != 0) { @@ -475,7 +475,7 @@ sprintf(buf,"%d",trk); demuxer->info().add(INFOT_TRACK,buf); } - g = stream_read_char(s); + g = s->read_char(); demuxer->info().add(INFOT_GENRE,genres[g]); } } @@ -489,18 +489,18 @@ Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); - stream_seek(s,pos+4); - stream_read(s,&b[4],4); + s->seek(pos+4); + s->read(&b[4],4); for(n = 0; n < 5 ; n++) { MSG_DBG2("read_ac3_tags\n"); pos = ac3_decode_header(b,bitrate,samplerate,channels); if(pos < 0) return 0; - stream_skip(s,pos-8); - if(stream_eof(s)) + s->skip(pos-8); + if(s->eof()) return 0; - stream_read(s,b,8); - if(stream_eof(s)) + s->read(b,8); + if(s->eof()) return 0; } return 1; @@ -513,18 +513,18 @@ Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); - stream_seek(s,pos+4); - stream_read(s,&b[4],8); + s->seek(pos+4); + s->read(&b[4],8); for(n = 0; n < 5 ; n++) { MSG_DBG2("read_ddca_tags\n"); pos = ddca_decode_header(b,bitrate,samplerate,channels); if(pos < 0) return 0; - stream_skip(s,pos-12); - if(stream_eof(s)) + s->skip(pos-12); + if(s->eof()) return 0; - stream_read(s,hdr,12); - if(stream_eof(s)) + s->read(hdr,12); + if(s->eof()) return 0; } return 1; @@ -552,7 +552,7 @@ if( flags==ID3V22_ZERO_FLAG || flags==ID3V22_UNSYNCH_FLAG || flags==ID3V22_COMPRESS_FLAG) return 0; - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -560,10 +560,10 @@ unsigned len; unsigned char buf[ID3V22_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V22_FRAME_HEADER_SIZE); + s->read(buf,ID3V22_FRAME_HEADER_SIZE); id=(buf[2] << 16) + (buf[1] << 8) + buf[0]; len=(buf[3] << 14) + (buf[4] << 7) + buf[5]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; switch(id) { @@ -585,7 +585,7 @@ case 0: goto end; default: MSG_WARN("Unhandled frame: %3s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -620,11 +620,11 @@ { char buf[4]; unsigned ehsize; - stream_read(demuxer->stream,buf,4); + demuxer->stream->read(buf,4); ehsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; - stream_skip(demuxer->stream,ehsize); + demuxer->stream->skip(ehsize); } - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -632,10 +632,10 @@ unsigned len; unsigned char buf[ID3V23_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V23_FRAME_HEADER_SIZE); + s->read(buf,ID3V23_FRAME_HEADER_SIZE); id=*((uint32_t *)buf); len=(buf[4] << 21) + (buf[5] << 14) + (buf[6] << 7) + buf[7]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; MSG_V("ID3: %4s len %u\n",buf,len); switch(id) @@ -658,7 +658,7 @@ case 0: goto end; default: MSG_V("Unhandled frame: %4s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -696,11 +696,11 @@ { char buf[4]; unsigned ehsize; - stream_read(demuxer->stream,buf,4); + demuxer->stream->read(buf,4); ehsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; - stream_skip(demuxer->stream,ehsize); + demuxer->stream->skip(ehsize); } - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -708,10 +708,10 @@ unsigned len; unsigned char buf[ID3V23_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V23_FRAME_HEADER_SIZE); + s->read(buf,ID3V23_FRAME_HEADER_SIZE); id=*((uint32_t *)buf); len=(buf[4] << 21) + (buf[5] << 14) + (buf[6] << 7) + buf[7]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; MSG_V("ID3: %4s len %u\n",buf,len); switch(id) @@ -735,7 +735,7 @@ case 0: goto end; default: MSG_V("Unhandled frame: %4s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -746,11 +746,11 @@ char buf[4]; Stream* s=demuxer->stream; unsigned vers,rev,flags,hsize; - stream_seek(s,3); /* skip 'ID3' */ - vers=stream_read_char(s); - rev=stream_read_char(s); - flags=stream_read_char(s); - stream_read(s,buf,4); + s->seek(3); /* skip 'ID3' */ + vers=s->read_char(); + rev=s->read_char(); + flags=s->read_char(); + s->read(buf,4); hsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; MSG_V("Found ID3v2.%d.%d flags %d size %d\n",vers,rev,flags,hsize); if(vers==2) return read_id3v22_tags(demuxer,flags,hsize); @@ -770,12 +770,12 @@ Stream *s; *brate=*samplerate=*channels=0; s = demuxer->stream; - stream_seek(s,fptr); - fcc=fcc1=stream_read_dword(s); + s->seek(fptr); + fcc=fcc1=s->read_dword(); fcc1=me2be_32(fcc1); p = (uint8_t *)&fcc1; - stream_seek(s,fptr); - stream_read(s,b,sizeof(b)); + s->seek(fptr); + s->read(b,sizeof(b)); if(p[0] == 'M' && p[1] == 'P' && p[2] == '+' && (p[3] >= 4 && p[3] <= 0x20)) retval = RAW_MUSEPACK; else if(fcc1 == mmioFOURCC('f','L','a','C')) retval = RAW_FLAC; @@ -796,7 +796,7 @@ if(ddca_decode_header(b,samplerate,brate,channels)>0) retval = RAW_DCA; else if(memcmp(b,"Creative Voice File\x1A",20)==0) retval = RAW_VOC; - stream_seek(s,fptr); + s->seek(fptr); return retval; } @@ -806,13 +806,13 @@ Stream *s; uint8_t *p; s = demuxer->stream; - fcc1=stream_read_dword(s); + fcc1=s->read_dword(); fcc1=me2be_32(fcc1); p = (uint8_t *)&fcc1; if(fcc1 == mmioFOURCC('R','I','F','F')) { - stream_skip(s,4); - fcc2 = stream_read_fourcc(s); + s->skip(4); + fcc2 = s->read_fourcc(); if(fcc2 == mmioFOURCC('W','A','V','E')) return MPXP_Ok; } else @@ -842,24 +842,24 @@ mode = (hdr[3]>>6)&3; if(mpeg1) off=mode!=MPG_MD_MONO?32:17; else off=mode!=MPG_MD_MONO?17:9;/* mpeg2 */ - fpos = stream_tell(s); - stream_skip(s,off); - stream_read(s,buf,4); + fpos = s->tell(); + s->skip(off); + s->read(buf,4); if(memcmp(buf,"Xing",4) == 0 || memcmp(buf,"Info",4) == 0) { priv->is_xing=1; priv->lsf=mpeg1?0:1; priv->srate=sr_table[sr_index&0x3]; - head_flags = stream_read_dword(s); - if(head_flags & FRAMES_FLAG) priv->nframes=stream_read_dword(s); - if(head_flags & BYTES_FLAG) priv->nbytes=stream_read_dword(s); - if(head_flags & TOC_FLAG) stream_read(s,priv->toc,100); - if(head_flags & VBR_SCALE_FLAG) priv->scale = stream_read_dword(s); + head_flags = s->read_dword(); + if(head_flags & FRAMES_FLAG) priv->nframes=s->read_dword(); + if(head_flags & BYTES_FLAG) priv->nbytes=s->read_dword(); + if(head_flags & TOC_FLAG) s->read(priv->toc,100); + if(head_flags & VBR_SCALE_FLAG) priv->scale = s->read_dword(); MSG_DBG2("Found Xing VBR header: flags=%08X nframes=%u nbytes=%u scale=%i srate=%u\n" ,head_flags,priv->nframes,priv->nbytes,priv->scale,priv->srate); - stream_seek(s,fpos); + s->seek(fpos); } - else stream_seek(s,fpos); + else s->seek(fpos); } extern const demuxer_driver_t demux_audio; @@ -881,15 +881,15 @@ priv = new(zeromem) da_priv_t; s = demuxer->stream; - stream_reset(s); - stream_seek(s,s->start_pos()); - while(n < 5 && !stream_eof(s)) + s->reset(); + s->seek(s->start_pos()); + while(n < 5 && !s->eof()) { - st_pos = stream_tell(s); + st_pos = s->tell(); step = 1; if(pos < HDR_SIZE) { - stream_read(s,&hdr[pos],HDR_SIZE-pos); + s->read(&hdr[pos],HDR_SIZE-pos); pos = HDR_SIZE; } @@ -899,25 +899,25 @@ if(fcc == mmioFOURCC('R','I','F','F')) { MSG_DBG2("Found RIFF\n"); - stream_skip(s,4); - if(stream_eof(s)) break; - stream_read(s,hdr,4); - if(stream_eof(s)) break; + s->skip(4); + if(s->eof()) break; + s->read(hdr,4); + if(s->eof()) break; fcc2 = le2me_32(*(uint32_t *)hdr); pfcc= (const unsigned char *)&fcc2; MSG_DBG2("RIFF fcc=%c%c%c%c\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); - if(fcc2!=mmioFOURCC('W','A','V','E')) stream_skip(s,-8); + if(fcc2!=mmioFOURCC('W','A','V','E')) s->skip(-8); else { /* We found wav header. Now we should find 'fmt '*/ off_t fpos; - fpos=stream_tell(s); + fpos=s->tell(); MSG_DBG2("RIFF WAVE found. Start detection from %llu\n",fpos); step = 4; while(1) { unsigned chunk_len; - fcc=stream_read_fourcc(s); + fcc=s->read_fourcc(); pfcc= (const unsigned char *)&fcc; MSG_DBG2("fmt fcc=%c%c%c%c\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); if(fcc==mmioFOURCC('f','m','t',' ')) @@ -926,12 +926,12 @@ frmt = RAW_WAV; break; } - if(stream_eof(s)) break; - chunk_len=stream_read_dword_le(s); - stream_skip(s,chunk_len); + if(s->eof()) break; + chunk_len=s->read_dword_le(); + s->skip(chunk_len); } MSG_DBG2("Restore stream pos %llu\n",fpos); - stream_seek(s,fpos); + s->seek(fpos); if(frmt==RAW_WAV) break; } } @@ -939,11 +939,11 @@ if( hdr[0] == 'I' && hdr[1] == 'D' && hdr[2] == '3' && (hdr[3] >= 2)) { unsigned len,fmt; - stream_skip(s,2); - stream_read(s,hdr,4); + s->skip(2); + s->read(hdr,4); len = (hdr[0]<<21) | (hdr[1]<<14) | (hdr[2]<<7) | hdr[3]; read_id3v2_tags(demuxer); - stream_seek(s,len+10); + s->seek(len+10); find_next_mp3_hdr(demuxer,hdr); Xing_test(s,hdr,priv); mp_decode_mp3_header(hdr,&fmt,&mp3_brate,&mp3_samplerate,&mp3_channels); @@ -982,7 +982,7 @@ break; } memcpy(b,hdr,HDR_SIZE); - stream_read(s,&b[HDR_SIZE],12-HDR_SIZE); + s->read(&b[HDR_SIZE],12-HDR_SIZE); if((n = ac3_decode_header(b,&fmt,&fmt,&fmt)) > 0) { demuxer->movi_start = st_pos; @@ -1013,7 +1013,7 @@ } sh_audio = demuxer->new_sh_audio(); MSG_DBG2("mp3_header off: st_pos=%lu n=%lu HDR_SIZE=%u\n",st_pos,n,HDR_SIZE); - demuxer->movi_start = stream_tell(s); + demuxer->movi_start = s->tell(); demuxer->movi_end = s->end_pos(); switch(frmt) { case RAW_FLAC: @@ -1024,7 +1024,7 @@ /* loop through the metadata blocks; use a do-while construct since there * will always be 1 metadata block */ do { - if(stream_read(s,chunk,4)!=4) return NULL; + if(s->read(chunk,4)!=4) return NULL; block_size=(chunk[1]<<16)|(chunk[2]<<8)|chunk[3]; switch (chunk[0] & 0x7F) { /* STREAMINFO */ @@ -1039,7 +1039,7 @@ MSG_V("expected STREAMINFO chunk of %d bytes\n",block_size); return 0; } - if(stream_read(s,sinfo,block_size)!=(int)block_size) return NULL; + if(s->read(sinfo,block_size)!=(int)block_size) return NULL; sh_audio->rate=be2me_32(*(uint32_t *)&sinfo[10]); sh_audio->nch=w->nChannels=((sh_audio->rate>>9)&0x07)+1; w->wBitsPerSample=((sh_audio->rate>>4)&0x1F)+1; @@ -1069,12 +1069,12 @@ /* APPLICATION */ case 2: MSG_V("metadata %i size %u\n",chunk[0] & 0x7F,block_size); - stream_skip(s,block_size); + s->skip(block_size); break; } } while ((chunk[0] & 0x80) == 0); /* We have reached 1st FRAME_HEADER here. */ - demuxer->movi_start = 0;//stream_tell(s); (ffmpeg.flac requires STREAM_HEADER to be proceed too!!!) + demuxer->movi_start = 0;//s->tell(); (ffmpeg.flac requires STREAM_HEADER to be proceed too!!!) demuxer->movi_end += demuxer->movi_start; break; } @@ -1083,9 +1083,9 @@ uint32_t id; WAVEFORMATEX* w; sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); - hsize=stream_read_dword(s); - dsize=stream_read_dword(s); - id = stream_read_dword(s); + hsize=s->read_dword(); + dsize=s->read_dword(); + id = s->read_dword(); sh_audio->afmt=bps2afmt(2); if(id == 1) id = WAVE_FORMAT_MULAW; else @@ -1095,8 +1095,8 @@ w->wFormatTag = sh_audio->wtag = id; /* Trickly mplayerxp will threat 'raw ' as big-endian */ if(id == 0x1) sh_audio->wtag=mmioFOURCC('r','a','w',' '); - w->nSamplesPerSec = sh_audio->rate = stream_read_dword(s); - w->nChannels = sh_audio->nch = stream_read_dword(s); + w->nSamplesPerSec = sh_audio->rate = s->read_dword(); + w->nChannels = sh_audio->nch = s->read_dword(); w->nAvgBytesPerSec = sh_audio->rate*afmt2bps(sh_audio->afmt)*sh_audio->nch; w->nBlockAlign = sh_audio->nch*afmt2bps(sh_audio->afmt); w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); @@ -1138,10 +1138,10 @@ uint32_t frames; unsigned char bt; sh_audio->wtag = mmioFOURCC('M','P','C',' '); - stream_seek(s,4); - frames = stream_read_dword(s); - stream_skip(s,2); - bt=stream_read_char(s); + s->seek(4); + frames = s->read_dword(); + s->skip(2); + bt=s->read_char(); sh_audio->wf = (WAVEFORMATEX *)mp_malloc(sizeof(WAVEFORMATEX)); sh_audio->wf->wFormatTag = sh_audio->wtag; sh_audio->wf->nChannels = 2; @@ -1171,17 +1171,17 @@ char chunk[4]; unsigned size; WAVEFORMATEX* w; - stream_seek(s,0x14); - stream_read(s,chunk,2); + s->seek(0x14); + s->read(chunk,2); size=le2me_16(*reinterpret_cast<uint16_t*>(&chunk[0])); - stream_seek(s,size); - stream_read(s,chunk,4); + s->seek(size); + s->read(chunk,4); if(chunk[0]!=0x01) { MSG_V("VOC unknown block type %02X\n",chunk[0]); return NULL; } size=chunk[1]|(chunk[2]<<8)|(chunk[3]<<16); sh_audio->wtag = 0x01; /* PCM */ - stream_read(s,chunk,2); + s->read(chunk,2); if(chunk[1]!=0) { MSG_V("VOC unknown compression type %02X\n",chunk[1]); return NULL; } - demuxer->movi_start=stream_tell(s); + demuxer->movi_start=s->tell(); demuxer->movi_end=demuxer->movi_start+size; sh_audio->rate=256-(1000000/chunk[0]); sh_audio->nch=1; @@ -1205,9 +1205,9 @@ sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); do { - chunk_type = stream_read_fourcc(s); - chunk_size = stream_read_dword_le(s); - fpos=stream_tell(s); + chunk_type = s->read_fourcc(); + chunk_size = s->read_dword_le(); + fpos=s->tell(); switch(chunk_type) { case mmioFOURCC('f','m','t',' '): @@ -1219,29 +1219,29 @@ delete sh_audio; return NULL; } - w->wFormatTag = sh_audio->wtag = stream_read_word_le(s); - w->nChannels = sh_audio->nch = stream_read_word_le(s); - w->nSamplesPerSec = sh_audio->rate = stream_read_dword_le(s); - w->nAvgBytesPerSec = stream_read_dword_le(s); - w->nBlockAlign = stream_read_word_le(s); - w->wBitsPerSample = stream_read_word_le(s); + w->wFormatTag = sh_audio->wtag = s->read_word_le(); + w->nChannels = sh_audio->nch = s->read_word_le(); + w->nSamplesPerSec = sh_audio->rate = s->read_dword_le(); + w->nAvgBytesPerSec = s->read_dword_le(); + w->nBlockAlign = s->read_word_le(); + w->wBitsPerSample = s->read_word_le(); sh_audio->afmt = bps2afmt((w->wBitsPerSample+7)/8); w->cbSize = 0; l -= 16; - if(l) stream_skip(s,l); + if(l) s->skip(l); } break; case mmioFOURCC('d', 'a', 't', 'a'): MSG_DBG2("Found data chunk at %llu\n",fpos); data_off=fpos; - stream_skip(s,chunk_size); + s->skip(chunk_size); break; case mmioFOURCC('l', 'i', 's', 't'): { uint32_t cfcc; MSG_DBG2("RIFF 'list' found\n"); - cfcc=stream_read_fourcc(s); - if(cfcc!=mmioFOURCC('a', 'd', 't', 'l')) { stream_seek(s,fpos); break; } + cfcc=s->read_fourcc(); + if(cfcc!=mmioFOURCC('a', 'd', 't', 'l')) { s->seek(fpos); break; } do { unsigned int subchunk_type; @@ -1250,16 +1250,16 @@ unsigned slen,rlen; char note[256]; MSG_DBG2("RIFF 'list' accepted\n"); - subchunk_type = stream_read_fourcc(s); - subchunk_size = stream_read_dword_le(s); - subchunk_id = stream_read_dword_le(s); + subchunk_type = s->read_fourcc(); + subchunk_size = s->read_dword_le(); + subchunk_id = s->read_dword_le(); if(subchunk_type==mmioFOURCC('l','a','b','l')) { slen=subchunk_size-4; rlen=std::min(sizeof(note),size_t(slen)); - stream_read(s,note,rlen); + s->read(note,rlen); note[rlen]=0; - if(slen>rlen) stream_skip(s,slen-rlen); + if(slen>rlen) s->skip(slen-rlen); demuxer->info().add(INFOT_NAME,note); MSG_DBG2("RIFF 'labl' %u %s accepted\n",slen,note); } @@ -1268,31 +1268,31 @@ { slen=subchunk_size-4; rlen=std::min(sizeof(note),size_t(slen)); - stream_read(s,note,rlen); + s->read(note,rlen); note[rlen]=0; - if(slen>rlen) stream_skip(s,slen-rlen); + if(slen>rlen) s->skip(slen-rlen); demuxer->info().add(INFOT_COMMENTS,note); MSG_DBG2("RIFF 'note' %u %s accepted\n",slen,note); } - else stream_skip(s,subchunk_size); - }while(stream_tell(s)<fpos+chunk_size); - stream_seek(s,fpos+chunk_size); + else s->skip(subchunk_size); + }while(s->tell()<fpos+chunk_size); + s->seek(fpos+chunk_size); } break; default: - stream_skip(s, chunk_size); + s->skip( chunk_size); pfcc=(unsigned char *)&chunk_type; MSG_DBG2("RIFF unhandled '%c%c%c%c' chunk skipped\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); break; } - } while (!stream_eof(s)); + } while (!s->eof()); if(data_off==-1) { MSG_ERR("RIFF WAVE - no 'data' chunk found\n"); return NULL; } - stream_seek(s,data_off); - demuxer->movi_start = stream_tell(s); + s->seek(data_off); + demuxer->movi_start = s->tell(); if(w->wFormatTag==0x01) /* PCM */ { int raw_id; @@ -1307,9 +1307,9 @@ case RAW_SND_AU: { unsigned hsize,dsize; uint32_t id; - hsize=stream_read_dword(s); - dsize=stream_read_dword(s); - id = stream_read_dword(s); + hsize=s->read_dword(); + dsize=s->read_dword(); + id = s->read_dword(); if(id == 1) id = WAVE_FORMAT_MULAW; else if(id == 27) id=WAVE_FORMAT_ALAW; @@ -1333,18 +1333,18 @@ if(samplerate) w->nSamplesPerSec = sh_audio->rate = samplerate; } } - stream_seek(s,data_off); + s->seek(data_off); /* id3v1 tags may exist within WAV */ if(sh_audio->wtag==0x50 || sh_audio->wtag==0x55) { - stream_seek(s,data_off); - stream_read(s,hdr,4); + s->seek(data_off); + s->read(hdr,4); MSG_DBG2("Trying id3v1 at %llX\n",data_off); if(!read_mp3v1_tags(demuxer,hdr,data_off)) demuxer->movi_end = s->end_pos(); } else demuxer->movi_end = s->end_pos(); - stream_seek(s,data_off); + s->seek(data_off); } break; } @@ -1366,8 +1366,8 @@ MSG_DBG2("stream length by xing header=%u secs\n",demuxer->movi_length); } MSG_V("demux_audio: audio data 0x%llX - 0x%llX \n",demuxer->movi_start,demuxer->movi_end); - if(stream_tell(s) != demuxer->movi_start) - stream_seek(s,demuxer->movi_start); + if(s->tell() != demuxer->movi_start) + s->seek(demuxer->movi_start); if(mp_conf.verbose && sh_audio->wf) print_wave_header(sh_audio->wf,sizeof(WAVEFORMATEX)); if(demuxer->movi_length==UINT_MAX && sh_audio->i_bps) demuxer->movi_length=(unsigned)(((float)demuxer->movi_end-(float)demuxer->movi_start)/(float)sh_audio->i_bps); @@ -1383,7 +1383,7 @@ out >>= (32 - priv->pos); } else { - stream_read(s, (any_t*)&priv->dword, 4); + s->read( (any_t*)&priv->dword, 4); priv->dword = le2me_32(priv->dword); priv->pos -= 32; if (priv->pos) { @@ -1410,13 +1410,13 @@ priv = static_cast<da_priv_t*>(demux->priv); s = demux->stream; - seof=stream_eof(s); - if(seof || (demux->movi_end && stream_tell(s) >= demux->movi_end)) { + seof=s->eof(); + if(seof || (demux->movi_end && s->tell() >= demux->movi_end)) { MSG_DBG2("audio_demux: EOF due: %s\n", - seof?"stream_eof(s)":"stream_tell(s) >= demux->movi_end"); + seof?"s->eof()":"s->tell() >= demux->movi_end"); if(!seof) { MSG_DBG2("audio_demux: stream_pos=%llu movi_end=%llu\n", - stream_tell(s), + s->tell(), demux->movi_end); } return 0; @@ -1437,88 +1437,88 @@ case RAW_MP1: case RAW_MP2: case RAW_MP3: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[4]; int len; - stream_read(s,hdr,4); + s->read(hdr,4); MSG_DBG2("audio_fillbuffer\n"); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-3)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-3)) below */ if(len < 0) { - stream_skip(s,-3); + s->skip(-3); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>4) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); memcpy(dp->buffer(),hdr,4); dp->resize(len+4); - len=stream_read(s,dp->buffer() + 4,len-4); + len=s->read(dp->buffer() + 4,len-4); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; case RAW_AC3: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[8]; int len; unsigned dummy; - stream_read(s,hdr,8); + s->read(hdr,8); len = ac3_decode_header(hdr,&dummy,&dummy,&dummy); MSG_DBG2("audio_fillbuffer %u bytes\n",len); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-7)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-7)) below */ if(len < 0) { - stream_skip(s,-7); + s->skip(-7); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>8) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); memcpy(dp->buffer(),hdr,8); dp->resize(len+8); - len=stream_read(s,dp->buffer()+8,len-8); + len=s->read(dp->buffer()+8,len-8); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; case RAW_DCA: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[16]; int len; unsigned dummy; - stream_read(s,hdr,16); + s->read(hdr,16); len = ddca_decode_header(hdr,&dummy,&dummy,&dummy); MSG_DBG2("audio_fillbuffer %u bytes\n",len); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-7)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-7)) below */ if(len < 0) { - stream_skip(s,-15); + s->skip(-15); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>16) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); dp->resize(len+16); memcpy(dp->buffer(),hdr,16); - len=stream_read(s,dp->buffer()+16,len-16); + len=s->read(dp->buffer()+16,len-16); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; @@ -1527,7 +1527,7 @@ case RAW_WAV : { int l = sh_audio->wf->nAvgBytesPerSec; Demuxer_Packet* dp =new(zeromem) Demuxer_Packet(l); - l=stream_read(s,dp->buffer(),l); + l=s->read(dp->buffer(),l); dp->resize(l); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; @@ -1538,7 +1538,7 @@ case RAW_VOC : { int l = 65536; Demuxer_Packet* dp =new(zeromem) Demuxer_Packet(l); - l=stream_read(s,dp->buffer(),l); + l=s->read(dp->buffer(),l); dp->resize(l); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; @@ -1585,14 +1585,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,4); + demuxer->stream->read(hdr,4); MSG_DBG2("high_res_mp3_seek\n"); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(len < 0) { - stream_skip(demuxer->stream,-3); + demuxer->stream->skip(-3); continue; } - stream_skip(demuxer->stream,len-4); + demuxer->stream->skip(len-4); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1607,14 +1607,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,8); + demuxer->stream->read(hdr,8); MSG_DBG2("high_res_mp3_seek\n"); len = ac3_decode_header(hdr,&tmp,&tmp,&tmp); if(len < 0) { - stream_skip(demuxer->stream,-7); + demuxer->stream->skip(-7); continue; } - stream_skip(demuxer->stream,len-8); + demuxer->stream->skip(len-8); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1629,14 +1629,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,12); + demuxer->stream->read(hdr,12); MSG_DBG2("high_res_ddca_seek\n"); len = ddca_decode_header(hdr,&tmp,&tmp,&tmp); if(len < 0) { - stream_skip(demuxer->stream,-11); + demuxer->stream->skip(-11); continue; } - stream_skip(demuxer->stream,len-12); + demuxer->stream->skip(len-12); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1659,7 +1659,7 @@ if (seeka->flags & DEMUX_SEEK_PERCENTS) target *= priv->length; if (!(seeka->flags & DEMUX_SEEK_SET)) target += priv->last_pts; if (target < priv->last_pts) { - stream_seek(s, demuxer->movi_start); + s->seek( demuxer->movi_start); priv->pos = 32; // empty bit buffer mpc_get_bits(priv, s, 8); // discard first 8 bits priv->last_pts = 0; @@ -1667,7 +1667,7 @@ while (target > priv->last_pts) { int bit_len = mpc_get_bits(priv, s, 20); if (bit_len > 32) { - stream_skip(s, bit_len / 32 * 4 - 4); + s->skip( bit_len / 32 * 4 - 4); mpc_get_bits(priv, s, 32); // make sure dword is reloaded } mpc_get_bits(priv, s, bit_len % 32); @@ -1682,20 +1682,20 @@ unsigned percents,cpercents,npercents; off_t newpos,spos; percents = (unsigned)(seeka->secs*100.)/(float)demuxer->movi_length; - spos=stream_tell(demuxer->stream); + spos=demuxer->stream->tell(); cpercents=(unsigned)((float)spos*100./(float)priv->nbytes); npercents=(seeka->flags&DEMUX_SEEK_SET)?percents:cpercents+percents; if(npercents>100) npercents=100; newpos=demuxer->movi_start+(off_t)(((float)priv->toc[npercents]/256.0)*priv->nbytes); MSG_DBG2("xing seeking: secs=%f prcnts=%u cprcnts=%u spos=%llu newpos=%llu\n",seeka->secs,npercents,cpercents,spos,newpos); - stream_seek(demuxer->stream,newpos); + demuxer->stream->seek(newpos); priv->last_pts=(((float)demuxer->movi_length*npercents)/100.)*1000.; return; } if((priv->frmt == RAW_MP3 || priv->frmt == RAW_MP2 || priv->frmt == RAW_MP1) && hr_mp3_seek && !(seeka->flags & DEMUX_SEEK_PERCENTS)) { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1705,11 +1705,11 @@ return; } - base = seeka->flags&DEMUX_SEEK_SET ? demuxer->movi_start : stream_tell(s); + base = seeka->flags&DEMUX_SEEK_SET ? demuxer->movi_start : s->tell(); pos=base+(seeka->flags&DEMUX_SEEK_PERCENTS?(demuxer->movi_end - demuxer->movi_start):sh_audio->i_bps)*seeka->secs; if(demuxer->movi_end && pos >= demuxer->movi_end) { - sh_audio->timer = (stream_tell(s) - demuxer->movi_start)/(float)sh_audio->i_bps; + sh_audio->timer = (s->tell() - demuxer->movi_start)/(float)sh_audio->i_bps; return; } else if(pos < demuxer->movi_start) pos = demuxer->movi_start; @@ -1731,7 +1731,7 @@ case RAW_AC3: { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1743,7 +1743,7 @@ case RAW_DCA: { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1761,7 +1761,7 @@ priv->last_pts -= sh_audio->wf->nAvgBytesPerSec/(float)sh_audio->i_bps; break; } - stream_seek(s,pos); + s->seek(pos); } static void audio_close(Demuxer* demuxer) { Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -133,21 +133,21 @@ priv->idx_size=0; priv->audio_streams=0; while(1){ - int id=stream_read_dword_le(demuxer->stream); + int id=demuxer->stream->read_dword_le(); unsigned chunksize,size2; static int last_fccType=0; const char* hdr=NULL; int infot; // - if(stream_eof(demuxer->stream)) break; + if(demuxer->stream->eof()) break; // if(id==mmioFOURCC('L','I','S','T')){ - unsigned len=stream_read_dword_le(demuxer->stream); // list size - id=stream_read_dword_le(demuxer->stream); // list type + unsigned len=demuxer->stream->read_dword_le(); // list size + id=demuxer->stream->read_dword_le(); // list type MSG_DBG2("LIST %.4s len=%u\n",(char *) &id,len); if(len >= 4) { len -= 4; - list_end=stream_tell(demuxer->stream)+((len+1)&(~1)); + list_end=demuxer->stream->tell()+((len+1)&(~1)); } else { MSG_WARN("** empty list?!\n"); list_end = 0; @@ -155,18 +155,18 @@ MSG_DBG2("list_end=0x%X\n",(int)list_end); if(id==listtypeAVIMOVIE){ // found MOVI header - if(!demuxer->movi_start) demuxer->movi_start=stream_tell(demuxer->stream); - demuxer->movi_end=stream_tell(demuxer->stream)+len; + if(!demuxer->movi_start) demuxer->movi_start=demuxer->stream->tell(); + demuxer->movi_end=demuxer->stream->tell()+len; MSG_V("Found movie at 0x%X - 0x%X\n",(int)demuxer->movi_start,(int)demuxer->movi_end); if(demuxer->stream->end_pos()>demuxer->movi_end) demuxer->movi_end=demuxer->stream->end_pos(); if(index_mode==-2 || index_mode==2 || index_mode==0) break; // reading from non-seekable source (stdin) or forced index or no index forced - if(list_end>0) stream_seek(demuxer->stream,list_end); // skip movi + if(list_end>0) demuxer->stream->seek(list_end); // skip movi list_end=0; } continue; } - size2=stream_read_dword_le(demuxer->stream); + size2=demuxer->stream->read_dword_le(); MSG_V("CHUNK %.4s len=%u\n",(char *) &id,size2); chunksize=(size2+1)&(~1); infot=-1; @@ -250,7 +250,7 @@ case mmioFOURCC('I','D','I','T'): hdr="Digitization Time";break; case ckidAVIMAINHDR: // read 'avih' - stream_read(demuxer->stream,(char*) &avih,std::min((unsigned long)size2,sizeof(avih))); + demuxer->stream->read((char*) &avih,std::min((unsigned long)size2,sizeof(avih))); le2me_MainAVIHeader(&avih); // swap to machine endian chunksize-=std::min((unsigned long)size2,sizeof(avih)); demuxer->movi_length=avih.dwTotalFrames; @@ -258,7 +258,7 @@ break; case ckidSTREAMHEADER: { // read 'strh' AVIStreamHeader h; - stream_read(demuxer->stream,(char*) &h,std::min((unsigned long)size2,sizeof(h))); + demuxer->stream->read((char*) &h,std::min((unsigned long)size2,sizeof(h))); le2me_AVIStreamHeader(&h); // swap to machine endian chunksize-=std::min((unsigned long)size2,sizeof(h)); ++stream_id; @@ -290,12 +290,12 @@ chunksize-=24; memcpy(s->fcc, "indx", 4); s->dwSize = size2; - s->wLongsPe... [truncated message content] |