[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[513] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-06 13:54:07
|
Revision: 513 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=513&view=rev Author: nickols_k Date: 2012-12-06 13:53:54 +0000 (Thu, 06 Dec 2012) Log Message: ----------- convert struct stream_driver_t into class Stream_Interface note: many stream drivers became untested. Many other sources were modified to not be depended from struct stream_t Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/libmpdemux/asf.h mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_audio.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_dv.cpp mplayerxp/libmpdemux/demux_film.cpp mplayerxp/libmpdemux/demux_lavf.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mpg.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_roq.cpp mplayerxp/libmpdemux/demux_ty.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_r.cpp mplayerxp/libmpdemux/demuxer_stream.h mplayerxp/libmpdemux/stheader.cpp mplayerxp/libmpstream/Makefile mplayerxp/libmpstream/asf_mmst_streaming.cpp mplayerxp/libmpstream/asf_streaming.cpp mplayerxp/libmpstream/asf_streaming.h mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/cdd.h mplayerxp/libmpstream/cdda.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/mrl.cpp mplayerxp/libmpstream/mrl.h mplayerxp/libmpstream/network.cpp mplayerxp/libmpstream/network.h mplayerxp/libmpstream/pnm.cpp mplayerxp/libmpstream/pnm.h mplayerxp/libmpstream/rtp.cpp mplayerxp/libmpstream/rtp.h mplayerxp/libmpstream/s_cdd.cpp mplayerxp/libmpstream/s_dvdnav.cpp mplayerxp/libmpstream/s_dvdread.cpp mplayerxp/libmpstream/s_file.cpp mplayerxp/libmpstream/s_ftp.cpp mplayerxp/libmpstream/s_lavc.cpp mplayerxp/libmpstream/s_network.cpp mplayerxp/libmpstream/s_null.cpp mplayerxp/libmpstream/s_oss.cpp mplayerxp/libmpstream/s_rtsp.cpp mplayerxp/libmpstream/s_tv.cpp mplayerxp/libmpstream/s_udp.cpp mplayerxp/libmpstream/s_vcdnav.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/libmpstream/stream_internal.h mplayerxp/libmpstream/tcp.cpp mplayerxp/libmpstream/tcp.h mplayerxp/libmpstream/tvi/frequencies.cpp mplayerxp/libmpstream/tvi/frequencies.h mplayerxp/libmpstream/tvi/tv.h mplayerxp/libmpstream/tvi/tvi_def.h mplayerxp/libmpstream/tvi/tvi_dummy.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mp-opt-reg.cpp mplayerxp/mplayerxp.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/dump.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -44,7 +44,7 @@ const char *ext,*name; MP_UNIT("dumpstream"); stream_reset(stream); - stream_seek(stream,stream->start_pos); + stream_seek(stream,stream->start_pos()); ext=".ext"; if(!port) { Modified: mplayerxp/libmpdemux/asf.h =================================================================== --- mplayerxp/libmpdemux/asf.h 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/asf.h 2012-12-06 13:53:54 UTC (rev 513) @@ -134,12 +134,12 @@ } ASF_StreamType_e; typedef struct { - ASF_StreamType_e streaming_type; + ASF_StreamType_e networking_type; int request; int packet_size; int *audio_streams,n_audio,*video_streams,n_video; int audio_id, video_id; -} asf_http_streaming_ctrl_t; +} asf_http_networking_t; /* Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -334,10 +334,10 @@ if(streams) { uint32_t vr = 0, ar = 0,i; #ifdef HAVE_STREAMING - if( demuxer->stream->streaming_ctrl!=NULL ) { - if( demuxer->stream->streaming_ctrl->bandwidth!=0 && demuxer->stream->streaming_ctrl->data!=NULL ) { - best_audio = ((asf_http_streaming_ctrl_t*)demuxer->stream->streaming_ctrl->data)->audio_id; - best_video = ((asf_http_streaming_ctrl_t*)demuxer->stream->streaming_ctrl->data)->video_id; + if( demuxer->stream->networking!=NULL ) { + if( demuxer->stream->networking->bandwidth!=0 && demuxer->stream->networking->data!=NULL ) { + best_audio = ((asf_http_networking_t*)demuxer->stream->networking->data)->audio_id; + best_video = ((asf_http_networking_t*)demuxer->stream->networking->data)->video_id; } } else #endif Modified: mplayerxp/libmpdemux/demux_audio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_audio.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_audio.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -444,13 +444,13 @@ if(stream_eof(s)) return 0; } - if(s->end_pos) { + if(s->end_pos()) { char tag[4]; - stream_seek(s,s->end_pos-128); + 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; + demuxer->movi_end = s->end_pos(); else { char buf[31]; uint8_t g; @@ -487,7 +487,7 @@ uint8_t b[8]; unsigned n; stream_t *s=demuxer->stream; - demuxer->movi_end = s->end_pos; + demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); stream_seek(s,pos+4); stream_read(s,&b[4],4); @@ -511,7 +511,7 @@ uint8_t b[12]; unsigned n; stream_t *s=demuxer->stream; - demuxer->movi_end = s->end_pos; + demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); stream_seek(s,pos+4); stream_read(s,&b[4],8); @@ -882,7 +882,7 @@ priv = new(zeromem) da_priv_t; s = demuxer->stream; stream_reset(s); - stream_seek(s,s->start_pos); + stream_seek(s,s->start_pos()); while(n < 5 && !stream_eof(s)) { st_pos = stream_tell(s); @@ -1014,7 +1014,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_end = s->end_pos; + demuxer->movi_end = s->end_pos(); switch(frmt) { case RAW_FLAC: { @@ -1101,7 +1101,7 @@ w->nBlockAlign = sh_audio->nch*afmt2bps(sh_audio->afmt); w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); w->cbSize = 0; - demuxer->movi_start = demuxer->stream->start_pos+hsize; + demuxer->movi_start = demuxer->stream->start_pos()+hsize; demuxer->movi_end = demuxer->movi_start+hsize+dsize; demuxer->movi_length = (demuxer->movi_end-demuxer->movi_start)/w->nAvgBytesPerSec; } @@ -1158,7 +1158,7 @@ priv->pos = 32; // empty bit buffer priv->length = 1152 * frames / (float)sh_audio->wf->nSamplesPerSec; demuxer->movi_start = 24; /* skip header */ - demuxer->movi_end = s->end_pos; + demuxer->movi_end = s->end_pos(); if (demuxer->movi_end > demuxer->movi_start && priv->length > 1) sh_audio->wf->nAvgBytesPerSec = (demuxer->movi_end - demuxer->movi_start) / priv->length; else @@ -1340,10 +1340,10 @@ stream_seek(s,data_off); stream_read(s,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; + if(!read_mp3v1_tags(demuxer,hdr,data_off)) demuxer->movi_end = s->end_pos(); } else - demuxer->movi_end = s->end_pos; + demuxer->movi_end = s->end_pos(); stream_seek(s,data_off); } break; } Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -158,7 +158,7 @@ if(!demuxer->movi_start) demuxer->movi_start=stream_tell(demuxer->stream); demuxer->movi_end=stream_tell(demuxer->stream)+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(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 @@ -609,7 +609,7 @@ if (mp_conf.verbose>=2) print_index(priv->idx, priv->idx_size); - demuxer->movi_end=demuxer->stream->end_pos; + demuxer->movi_end=demuxer->stream->end_pos(); freeout: @@ -1141,7 +1141,7 @@ demuxer->priv=priv; //---- AVI header: - read_avi_header(demuxer,(demuxer->stream->type&STREAMTYPE_SEEKABLE)?index_mode:-2); + read_avi_header(demuxer,(demuxer->stream->type()&STREAMTYPE_SEEKABLE)?index_mode:-2); if(demuxer->audio->id>=0 && !demuxer->get_sh_audio(demuxer->audio->id)){ MSG_WARN("AVI: invalid audio stream ID: %d - ignoring (nosound)\n",demuxer->audio->id); Modified: mplayerxp/libmpdemux/demux_dv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_dv.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_dv.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -142,7 +142,7 @@ rawdv_frames_t *frames = new rawdv_frames_t; dv_decoder_t *dv_decoder=NULL; - MSG_V("demux_open_rawdv() end_pos %" PRId64"\n",(int64_t)demuxer->stream->end_pos); + MSG_V("demux_open_rawdv() end_pos %" PRId64"\n",(int64_t)demuxer->stream->end_pos()); // go back to the beginning stream_reset(demuxer->stream); @@ -197,7 +197,7 @@ frames->current_filepos=0; frames->current_frame=0; frames->frame_size=dv_decoder->frame_size; - frames->frame_number=demuxer->stream->end_pos/frames->frame_size; + frames->frame_number=demuxer->stream->end_pos()/frames->frame_size; MSG_V("demux_open_rawdv() seek to %qu, size: %d, dv_dec->frame_size: %d\n",frames->current_filepos,frames->frame_size, dv_decoder->frame_size); if (dv_decoder->audio != NULL && demuxer->audio->id>=-1){ Modified: mplayerxp/libmpdemux/demux_film.cpp =================================================================== --- mplayerxp/libmpdemux/demux_film.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_film.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -228,7 +228,7 @@ // go back to the beginning stream_reset(demuxer->stream); - stream_seek(demuxer->stream, demuxer->stream->start_pos); + stream_seek(demuxer->stream, demuxer->stream->start_pos()); // read the master chunk type chunk_type = stream_read_fourcc(demuxer->stream); @@ -245,7 +245,7 @@ header_size = stream_read_dword(demuxer->stream); film_data->film_version = stream_read_fourcc(demuxer->stream); demuxer->movi_start = header_size; - demuxer->movi_end = demuxer->stream->end_pos; + demuxer->movi_end = demuxer->stream->end_pos(); header_size -= 16; MSG_HINT( "FILM version %.4s\n", Modified: mplayerxp/libmpdemux/demux_lavf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -146,11 +146,11 @@ if(whence == SEEK_CUR) pos +=stream_tell(stream); else if(whence == SEEK_END) - pos += stream->end_pos; + pos += stream->end_pos(); else if(whence != SEEK_SET) return -1; - if(pos<stream->end_pos && stream->eof) + if(pos<stream->end_pos() && stream->eof) stream_reset(stream); if(stream_seek(stream, pos)==0) return -1; Modified: mplayerxp/libmpdemux/demux_mkv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -2791,7 +2791,7 @@ stream_t *s = demuxer->stream; int version; char *str; - stream_seek(s, s->start_pos); + stream_seek(s, s->start_pos()); str = ebml_read_header (s, &version); if (str == NULL || strcmp (str, "matroska") || version > 1) { MSG_DBG2( "[mkv] no head found\n"); @@ -2809,7 +2809,7 @@ int i, version, cont = 0; char *str; - stream_seek(s, s->start_pos); + stream_seek(s, s->start_pos()); str = ebml_read_header (s, &version); if (str == NULL || strcmp (str, "matroska") || version > 2) { MSG_DBG2( "[mkv] no head found\n"); @@ -3045,12 +3045,12 @@ } } - if (s->end_pos == 0 || (mkv_d->indexes == NULL && index_mode < 0)) + if (s->end_pos() == 0 || (mkv_d->indexes == NULL && index_mode < 0)) demuxer->flags &= ~(Demuxer::Seekable); else { - demuxer->movi_start = s->start_pos; - demuxer->movi_end = s->end_pos; + demuxer->movi_start = s->start_pos(); + demuxer->movi_end = s->end_pos(); demuxer->flags |= Demuxer::Seekable; if (mkv_d->chapters && dvd_chapter>1 && dvd_chapter<=mkv_d->num_chapters) { Modified: mplayerxp/libmpdemux/demux_mpg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -561,7 +561,7 @@ } if(newpos<demuxer->movi_start){ - if(!(demuxer->stream->type&STREAMTYPE_PROGRAM)) demuxer->movi_start=0; // for VCD + if(!(demuxer->stream->type()&STREAMTYPE_PROGRAM)) demuxer->movi_start=0; // for VCD if(newpos<demuxer->movi_start) newpos=demuxer->movi_start; } @@ -673,7 +673,7 @@ code = bswap_32(code); /* test stream only if stream is started from 0000001XX */ if ((code & 0xffffff00) == 0x100) { - stream_seek(demuxer->stream,demuxer->stream->start_pos); + stream_seek(demuxer->stream,demuxer->stream->start_pos()); memset(&mpg_stat,0,sizeof(struct mpg_stat_s)); while(pes>=0){ @@ -763,7 +763,7 @@ if(!demuxer->get_sh_video()) demuxer->new_sh_video(); if(demuxer->video->id==-1) demuxer->video->id=0; demuxer->video->sh=demuxer->get_sh_video(); - stream_seek(demuxer->stream,demuxer->stream->start_pos); + stream_seek(demuxer->stream,demuxer->stream->start_pos()); return mpges_demux(demuxer,demuxer->video)?MPXP_Ok:MPXP_False; } else { /* Modified: mplayerxp/libmpdemux/demux_nsv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_nsv.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_nsv.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -334,7 +334,7 @@ return MPXP_False; // not an NSV file stream_reset(demuxer->stream); // clear EOF - stream_seek(demuxer->stream,demuxer->stream->start_pos); + stream_seek(demuxer->stream,demuxer->stream->start_pos()); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/demux_nuv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_nuv.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_nuv.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -225,7 +225,7 @@ /* Go to the start */ stream_reset(demuxer->stream); - stream_seek(demuxer->stream, demuxer->stream->start_pos); + stream_seek(demuxer->stream, demuxer->stream->start_pos()); stream_read ( demuxer->stream, (char*)& rtjpeg_fileheader, sizeof(rtjpeg_fileheader) ); le2me_rtfileheader(&rtjpeg_fileheader); Modified: mplayerxp/libmpdemux/demux_ogg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -668,7 +668,7 @@ if(p > 1 || (p == 1 && ! ogg_page_continued(page))) last_pos = pos; pos += np; - if(index_mode == 2) MSG_V("Building syncpoint table %d%%\r",(int)(pos*100/s->end_pos)); + if(index_mode == 2) MSG_V("Building syncpoint table %d%%\r",(int)(pos*100/s->end_pos())); } if(index_mode == 2) MSG_V("\n"); @@ -1033,7 +1033,7 @@ } } /// Add the header packets if the stream isn't seekable - if(ds && !s->end_pos) { + if(ds && !s->end_pos()) { /// Finish the page, otherwise packets will be lost do { demux_ogg_add_packet(ds,&ogg_d->subs[ogg_d->num_sub],ogg_d->num_sub,&pack); @@ -1069,11 +1069,11 @@ } ogg_d->final_granulepos=0; - if(!s->end_pos) + if(!s->end_pos()) demuxer->flags &= ~(Demuxer::Seekable); else { - demuxer->movi_start = s->start_pos; // Needed for XCD (Ogg written in MODE2) - demuxer->movi_end = s->end_pos; + demuxer->movi_start = s->start_pos(); // Needed for XCD (Ogg written in MODE2) + demuxer->movi_end = s->end_pos(); demuxer->flags |= Demuxer::Seekable; demux_ogg_scan_stream(demuxer); } Modified: mplayerxp/libmpdemux/demux_pva.cpp =================================================================== --- mplayerxp/libmpdemux/demux_pva.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_pva.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -174,7 +174,7 @@ sh_audio->ds=demuxer->audio; demuxer->movi_start=0; - demuxer->movi_end=demuxer->stream->end_pos; + demuxer->movi_end=demuxer->stream->end_pos(); priv->last_video_pts=-1; priv->last_audio_pts=-1; Modified: mplayerxp/libmpdemux/demux_rawaudio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -36,7 +36,7 @@ static MPXP_Rc rawaudio_probe(Demuxer* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWAUDIO || use_rawaudio) { + if(demuxer->stream->type() & STREAMTYPE_RAWAUDIO || use_rawaudio) { demuxer->file_format=Demuxer::Type_RAWAUDIO; return MPXP_Ok; } @@ -64,14 +64,14 @@ w->wBitsPerSample = samplesize*8; w->cbSize = 0; print_wave_header(w,sizeof(WAVEFORMATEX)); - demuxer->movi_start = demuxer->stream->start_pos; - demuxer->movi_end = demuxer->stream->end_pos; + demuxer->movi_start = demuxer->stream->start_pos(); + demuxer->movi_end = demuxer->stream->end_pos(); demuxer->movi_length = (demuxer->movi_end-demuxer->movi_start)/w->nAvgBytesPerSec; demuxer->audio->sh = sh_audio; demuxer->audio->id = 0; sh_audio->ds = demuxer->audio; - if(!(demuxer->stream->type & STREAMTYPE_SEEKABLE)) demuxer->flags &= ~Demuxer::Seekable; + if(!(demuxer->stream->type() & STREAMTYPE_SEEKABLE)) demuxer->flags &= ~Demuxer::Seekable; check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_rawvideo.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -60,7 +60,7 @@ static MPXP_Rc rawvideo_probe(Demuxer* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { + if(demuxer->stream->type() & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { priv.fps=25; demuxer->file_format=Demuxer::Type_RAWVIDEO; return MPXP_Ok; @@ -110,8 +110,8 @@ sh_video->src_w=priv.width; sh_video->src_h=priv.height; - demuxer->movi_start = demuxer->stream->start_pos; - demuxer->movi_end = demuxer->stream->end_pos; + demuxer->movi_start = demuxer->stream->start_pos(); + demuxer->movi_end = demuxer->stream->end_pos(); demuxer->movi_length = (demuxer->movi_end-demuxer->movi_start)/(priv.fps*priv.imgsize); demuxer->video->sh = sh_video; Modified: mplayerxp/libmpdemux/demux_roq.cpp =================================================================== --- mplayerxp/libmpdemux/demux_roq.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_roq.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -60,7 +60,7 @@ static MPXP_Rc roq_probe(Demuxer *demuxer) { stream_reset(demuxer->stream); - stream_seek(demuxer->stream, demuxer->stream->start_pos); + stream_seek(demuxer->stream, demuxer->stream->start_pos()); if ((stream_read_dword(demuxer->stream) == 0x8410FFFF) && ((stream_read_dword(demuxer->stream) & 0xFFFF0000) == 0xFFFF0000)) { @@ -118,7 +118,7 @@ roq_data->chunks = NULL; // position the stream and start traversing - stream_seek(demuxer->stream, demuxer->stream->start_pos+6); + stream_seek(demuxer->stream, demuxer->stream->start_pos()+6); fps = stream_read_word_le(demuxer->stream); while (!stream_eof(demuxer->stream)) { Modified: mplayerxp/libmpdemux/demux_ty.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ty.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demux_ty.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -408,13 +408,13 @@ { off_t offset; - numberParts = demux->stream->end_pos / TIVO_PART_LENGTH; + numberParts = demux->stream->end_pos() / TIVO_PART_LENGTH; offset = numberParts * TIVO_PART_LENGTH; MSG_DBG3( "ty:ty/ty+Number Parts %"PRId64"\n", (int64_t)numberParts ); - if ( offset + CHUNKSIZE < demux->stream->end_pos ) + if ( offset + CHUNKSIZE < demux->stream->end_pos() ) { stream_seek( demux->stream, offset ); readSize = stream_read( demux->stream, chunk, CHUNKSIZE ); @@ -441,8 +441,8 @@ } } - if ( demux->stream->start_pos > 0 ) - filePos = demux->stream->start_pos; + if ( demux->stream->start_pos() > 0 ) + filePos = demux->stream->start_pos(); stream_seek( demux->stream, filePos ); demux->filepos = stream_tell( demux->stream ); tivo->whichChunk = filePos / CHUNKSIZE; @@ -459,7 +459,7 @@ MSG_DBG3( "ty:ty which Chunk %d\n", tivo->whichChunk ); MSG_DBG3( - "ty:file end_pos %"PRIx64"\n", (int64_t)demux->stream->end_pos ); + "ty:file end_pos %"PRIx64"\n", (int64_t)demux->stream->end_pos()); MSG_DBG3( "\nty:wanted current offset %"PRIx64"\n", (int64_t)stream_tell( demux->stream ) ); Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -117,8 +117,8 @@ void Demuxer::_init(stream_t *_stream,int a_id,int v_id,int s_id) { stream=_stream; - movi_start=_stream->start_pos; - movi_end=_stream->end_pos; + movi_start=_stream->start_pos(); + movi_end=_stream->end_pos(); movi_length=UINT_MAX; flags|=Seekable; synced=0; @@ -127,7 +127,7 @@ video=new(zeromem) Demuxer_Stream(this,v_id); sub=new(zeromem) Demuxer_Stream(this,s_id); stream_reset(_stream); - stream_seek(_stream,stream->start_pos); + stream_seek(_stream,stream->start_pos()); } Demuxer::Demuxer() @@ -318,7 +318,7 @@ MSG_V("Forcing %s ... ",drv->name); /* don't remove it from loop!!! (for initializing) */ stream_reset(stream); - stream_seek(stream,stream->start_pos); + stream_seek(stream,stream->start_pos()); if(drv->probe(this)!=MPXP_Ok) { MSG_ERR("Can't probe stream with driver: '%s'\n",demux_conf.type); goto err_exit; @@ -331,7 +331,7 @@ MSG_V("Probing %s ... ",ddrivers[i]->name); /* don't remove it from loop!!! (for initializing) */ stream_reset(stream); - stream_seek(stream,stream->start_pos); + stream_seek(stream,stream->start_pos()); if(ddrivers[i]->probe(this)==MPXP_Ok) { MSG_V("OK\n"); dpriv.driver = ddrivers[i]; @@ -423,7 +423,7 @@ demuxer_priv_t& dpriv = static_cast<demuxer_priv_t&>(*demuxer_priv); sh_audio_t *sh_audio=reinterpret_cast<sh_audio_t*>(audio->sh); - if(!(stream->type&STREAMTYPE_SEEKABLE)) + if(!(stream->type()&STREAMTYPE_SEEKABLE)) { MSG_WARN("Stream is not seekable\n"); return 0; Modified: mplayerxp/libmpdemux/demuxer_r.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -52,7 +52,7 @@ if(ds->pts_flags && ds->pts < 1.0 && ds->prev_pts > 2.0) { float spts; - spts=ds->demuxer->stream->stream_pts; + spts=ds->demuxer->stream->stream_pts(); ds->pts_corr=spts>0?spts:ds->prev_pts; ds->pts_flags=0; MSG_V("***PTS discontinuity happens*** correct audio %f pts as %f\n",ds->pts,ds->pts_corr); Modified: mplayerxp/libmpdemux/demuxer_stream.h =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.h 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/demuxer_stream.h 2012-12-06 13:53:54 UTC (rev 513) @@ -7,9 +7,9 @@ #include <stdint.h> #include "demuxer_packet.h" -struct stream_t; namespace mpxp { struct Demuxer; + struct stream_t; class Demuxer_Stream : public Opaque { public: Demuxer_Stream(Demuxer *demuxer,int id); Modified: mplayerxp/libmpdemux/stheader.cpp =================================================================== --- mplayerxp/libmpdemux/stheader.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpdemux/stheader.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -580,7 +580,7 @@ if(d_video.pts_flags && d_video.pts < 1.0 && d_video.prev_pts > 2.0) { float spts; - spts=d_video.demuxer->stream->stream_pts; + spts=d_video.demuxer->stream->stream_pts(); d_video.pts_corr=spts>0?spts:d_video.prev_pts; d_video.pts_flags=0; MSG_V("***PTS discontinuity happens*** correcting video %f pts as %f\n",d_video.pts,d_video.pts_corr); Modified: mplayerxp/libmpstream/Makefile =================================================================== --- mplayerxp/libmpstream/Makefile 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/Makefile 2012-12-06 13:53:54 UTC (rev 513) @@ -7,7 +7,7 @@ DO_ALL = @ for i in $(SUBDIRS); do $(MAKE) -C $$i all || exit; done CXXSRCS= s_file.cpp s_lavc.cpp s_null.cpp s_tv.cpp -CXXSRCS+= cache2.cpp mrl.cpp stream.cpp url.cpp +CXXSRCS+= mrl.cpp stream.cpp url.cpp cache2.cpp ifeq ($(HAVE_LIBCDIO_CDDA),yes) CXXSRCS += s_cdd.cpp CXXSRCS += cdda.cpp Modified: mplayerxp/libmpstream/asf_mmst_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -205,7 +205,7 @@ } -static int get_header (int s, uint8_t *header, streaming_ctrl_t *streaming_ctrl) +static int get_header (int s, uint8_t *header, networking_t *networking) { unsigned char pre_header[8]; int header_len; @@ -240,7 +240,7 @@ if ( (header[header_len-1] == 1) && (header[header_len-2]==1)) { - if( streaming_bufferize( streaming_ctrl, header, header_len )<0 ) { + if( networking_bufferize( networking, header, header_len )<0 ) { return -1; } @@ -363,7 +363,7 @@ } -static int get_media_packet (int s, int padding, streaming_ctrl_t *stream_ctrl) { +static int get_media_packet (int s, int padding, networking_t *stream_ctrl) { unsigned char pre_header[8]; unsigned char data[BUF_SIZE]; @@ -394,7 +394,7 @@ return 0; } - streaming_bufferize(stream_ctrl, data, padding); + networking_bufferize(stream_ctrl, data, padding); } else { @@ -454,7 +454,7 @@ static int packet_length1; -static int asf_mmst_streaming_read( int fd, char *buffer, int size, streaming_ctrl_t *stream_ctrl ) +static int asf_mmst_networking_read( int fd, char *buffer, int size, networking_t *stream_ctrl ) { int len; @@ -482,16 +482,16 @@ } -static int asf_mmst_streaming_seek( int fd, off_t pos, streaming_ctrl_t *streaming_ctrl ) +static int asf_mmst_networking_seek( int fd, off_t pos, networking_t *networking ) { return -1; // Shut up gcc warning fd++; pos++; - streaming_ctrl=NULL; + networking=NULL; } -int asf_mmst_streaming_start(libinput_t* libinput,stream_t *stream) +int asf_mmst_networking_start(net_fd_t* fd, networking_t *networking) { char str[1024]; unsigned char data[BUF_SIZE]; @@ -499,12 +499,12 @@ int asf_header_len; int len, i, packet_length; char *path, *unescpath; - URL_t *url1 = stream->streaming_ctrl->url; - int s = stream->fd; + URL_t *url1 = networking->url; + net_fd_t s = *fd; if( s>0 ) { - closesocket( stream->fd ); - stream->fd = -1; + closesocket( *fd ); + *fd = -1; } /* parse url */ @@ -524,7 +524,7 @@ if( url1->port==0 ) { url1->port=1755; } - s = tcp_connect2Server(libinput, url1->hostname, url1->port, 0); + s = tcp_connect2Server(networking->libinput, url1->hostname, url1->port, 0); if( s<0 ) { delete path; return s; @@ -592,7 +592,7 @@ num_stream_ids = 0; /* get_headers(s, asf_header); */ - asf_header_len = get_header (s, asf_header, stream->streaming_ctrl); + asf_header_len = get_header (s, asf_header, networking); // printf("---------------------------------- asf_header %d\n",asf_header); if (asf_header_len==0) { //error reading header closesocket(s); @@ -646,11 +646,11 @@ send_command (s, 0x07, 1, 0xFFFF | stream_ids[0] << 16, 24, data); - stream->fd = s; - stream->streaming_ctrl->streaming_read = asf_mmst_streaming_read; - stream->streaming_ctrl->streaming_seek = asf_mmst_streaming_seek; - stream->streaming_ctrl->buffering = 1; - stream->streaming_ctrl->status = streaming_playing_e; + *fd = s; + networking->networking_read = asf_mmst_networking_read; + networking->networking_seek = asf_mmst_networking_seek; + networking->buffering = 1; + networking->status = networking_playing_e; packet_length1 = packet_length; MSG_V("mmst packet_length = %d\n",packet_length); Modified: mplayerxp/libmpstream/asf_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_streaming.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/asf_streaming.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -34,12 +34,12 @@ ((guid)[3] << 24 | (guid)[2] << 16 | (guid)[1] << 8 | (guid)[0]) #endif -// ASF streaming support several network protocol. +// ASF networking support several network protocol. // One use UDP, not known, yet! // Another is HTTP, this one is known. // So for now, we use the HTTP protocol. // -// We can try several protocol for asf streaming +// We can try several protocol for asf networking // * first the UDP protcol, if there is a firewall, UDP // packets will not come back, so the mmsu will failed. // * Then we can try TCP, but if there is a proxy for @@ -52,15 +52,15 @@ // WMP sequence is MMSU then MMST and then HTTP. // In MPlayer case since HTTP support is more reliable, // we are doing HTTP first then we try MMST if HTTP fail. -static int asf_http_streaming_start(libinput_t*,stream_t *stream, int *demuxer_type ); +static int asf_http_networking_start(net_fd_t* fd, networking_t *networking ); /* - ASF streaming support several network protocol. + ASF networking support several network protocol. One use UDP, not known, yet! Another is HTTP, this one is known. So for now, we use the HTTP protocol. - We can try several protocol for asf streaming + We can try several protocol for asf networking * first the UDP protcol, if there is a firewall, UDP packets will not come back, so the mmsu will failed. * Then we can try TCP, but if there is a proxy for @@ -74,59 +74,54 @@ In MPlayer case since HTTP support is more reliable, we are doing HTTP first then we try MMST if HTTP fail. */ -int asf_streaming_start(libinput_t* libinput, stream_t *stream, int *demuxer_type) { - char *proto = stream->streaming_ctrl->url->protocol; - int fd = -1; - int port = stream->streaming_ctrl->url->port; +int asf_networking_start(net_fd_t* fd, networking_t *networking) { + char *proto = networking->url->protocol; + *fd = -1; + int port = networking->url->port; // Is protocol even valid mms,mmsu,mmst,http,http_proxy? if (!(!strncasecmp(proto, "mmst", 4) || !strncasecmp(proto, "mmsu", 4) || !strncasecmp(proto, "http_proxy", 10) || !strncasecmp(proto, "mms", 3) || - !strncasecmp(proto, "http", 4))) - { + !strncasecmp(proto, "http", 4))) { MSG_ERR("Unknown protocol: %s\n", proto ); return -1; } // Is protocol mms or mmsu? - if (!strncasecmp(proto, "mmsu", 4) || !strncasecmp(proto, "mms", 3)) - { - MSG_V("Trying ASF/UDP...\n"); - //fd = asf_mmsu_streaming_start( stream ); - if( fd>-1 ) return fd; //mmsu support is not implemented yet - using this code - MSG_V(" ===> ASF/UDP failed\n"); - if( fd==-2 ) return -1; - } + if (!strncasecmp(proto, "mmsu", 4) || !strncasecmp(proto, "mms", 3)) { + MSG_V("Trying ASF/UDP...\n"); + //fd = asf_mmsu_networking_start( stream ); + if( *fd>-1 ) return 0; //mmsu support is not implemented yet - using this code + MSG_V(" ===> ASF/UDP failed\n"); + if( *fd==-2 ) return -1; + } //Is protocol mms or mmst? - if (!strncasecmp(proto, "mmst", 4) || !strncasecmp(proto, "mms", 3)) - { - MSG_V("Trying ASF/TCP...\n"); - fd = asf_mmst_streaming_start(libinput, stream ); - stream->streaming_ctrl->url->port = port; - if( fd>-1 ) return fd; - MSG_V(" ===> ASF/TCP failed\n"); - if( fd==-2 ) return -1; - } + if (!strncasecmp(proto, "mmst", 4) || !strncasecmp(proto, "mms", 3)) { + MSG_V("Trying ASF/TCP...\n"); + *fd = asf_mmst_networking_start(fd,networking); + networking->url->port = port; + if( *fd>-1 ) return 0; + MSG_V(" ===> ASF/TCP failed\n"); + if( *fd==-2 ) return -1; + } //Is protocol http, http_proxy, or mms? if (!strncasecmp(proto, "http_proxy", 10) || !strncasecmp(proto, "http", 4) || - !strncasecmp(proto, "mms", 3)) - { - MSG_V("Trying ASF/HTTP...\n"); - fd = asf_http_streaming_start(libinput, stream, demuxer_type ); - stream->streaming_ctrl->url->port = port; - if( fd>-1 ) return fd; - MSG_V(" ===> ASF/HTTP failed\n"); - if( fd==-2 ) return -1; - } - + !strncasecmp(proto, "mms", 3)) { + MSG_V("Trying ASF/HTTP...\n"); + *fd = asf_http_networking_start(fd,networking); + networking->url->port = port; + if( *fd>-1 ) return 0; + MSG_V(" ===> ASF/HTTP failed\n"); + if( *fd==-2 ) return -1; + } //everything failed - return -1; + return -1; } static int -asf_streaming(ASF_stream_chunck_t *stream_chunck, int *drop_packet ) { +asf_networking(ASF_stream_chunck_t *stream_chunck, int *drop_packet ) { if( drop_packet!=NULL ) *drop_packet = 0; if( stream_chunck->size<8 ) { @@ -191,16 +186,16 @@ } static int -asf_streaming_parse_header(int fd, streaming_ctrl_t* streaming_ctrl) { +asf_networking_parse_header(int fd, networking_t* networking) { ASF_header_t asfh; ASF_stream_chunck_t chunk; - asf_http_streaming_ctrl_t* asf_ctrl = (asf_http_streaming_ctrl_t*) streaming_ctrl->data; + asf_http_networking_t* asf_ctrl = (asf_http_networking_t*) networking->data; char* buffer=NULL, *chunk_buffer=NULL; int i,r,size,pos = 0; int start; int buffer_size = 0; int chunk_size2read = 0; - int bw = streaming_ctrl->bandwidth; + int bw = networking->bandwidth; int *v_rates = NULL, *a_rates = NULL; int v_rate = 0, a_rate = 0, a_idx = -1, v_idx = -1; @@ -211,13 +206,13 @@ // So we need to retrieve all the chunk before starting to parse the header. do { for( r=0; r < (int)sizeof(ASF_stream_chunck_t) ; ) { - i = nop_streaming_read(fd,((char*)&chunk)+r,sizeof(ASF_stream_chunck_t) - r,streaming_ctrl); + i = nop_networking_read(fd,((char*)&chunk)+r,sizeof(ASF_stream_chunck_t) - r,networking); if(i <= 0) return -1; r += i; } // Endian handling of the stream chunk le2me_ASF_stream_chunck_t(&chunk); - size = asf_streaming( &chunk, &r) - sizeof(ASF_stream_chunck_t); + size = asf_networking( &chunk, &r) - sizeof(ASF_stream_chunck_t); if(r) MSG_WARN("Warning : drop header ????\n"); if(size < 0){ MSG_ERR("Error while parsing chunk header\n"); @@ -244,7 +239,7 @@ buffer_size += size; for(r = 0; r < size;) { - i = nop_streaming_read(fd,buffer+r,size-r,streaming_ctrl); + i = nop_networking_read(fd,buffer+r,size-r,networking); if(i < 0) { MSG_ERR("Error while reading network stream\n"); return -1; @@ -288,7 +283,7 @@ asf_ctrl->packet_size = fileh->max_packet_size; // before playing. // preroll: time in ms to bufferize before playing - streaming_ctrl->prebuffer_size = (unsigned int)(((double)fileh->preroll/1000.0)*((double)fileh->max_bitrate/8.0)); + networking->prebuffer_size = (unsigned int)(((double)fileh->preroll/1000.0)*((double)fileh->max_bitrate/8.0)); } pos = start; @@ -443,19 +438,19 @@ } static int -asf_http_streaming_read( int fd, char *buffer, int size, streaming_ctrl_t *streaming_ctrl ) { +asf_http_networking_read( int fd, char *buffer, int size, networking_t *networking ) { static ASF_stream_chunck_t chunk; int read,chunk_size = 0; static int rest = 0, drop_chunk = 0, waiting = 0; - asf_http_streaming_ctrl_t *asf_http_ctrl = (asf_http_streaming_ctrl_t*)streaming_ctrl->data; + asf_http_networking_t *asf_http_ctrl = (asf_http_networking_t*)networking->data; while(1) { if (rest == 0 && waiting == 0) { read = 0; while(read < (int)sizeof(ASF_stream_chunck_t)){ - int r = nop_streaming_read( fd, ((char*)&chunk) + read, + int r = nop_networking_read( fd, ((char*)&chunk) + read, sizeof(ASF_stream_chunck_t)-read, - streaming_ctrl ); + networking ); if(r <= 0){ if( r < 0) MSG_ERR("Error while reading chunk header\n"); @@ -466,7 +461,7 @@ // Endian handling of the stream chunk le2me_ASF_stream_chunck_t(&chunk); - chunk_size = asf_streaming( &chunk, &drop_chunk ); + chunk_size = asf_networking( &chunk, &drop_chunk ); if(chunk_size < 0) { MSG_ERR("Error while parsing chunk header\n"); return -1; @@ -495,7 +490,7 @@ chunk_size = size; } while(read < chunk_size) { - int got = nop_streaming_read( fd,buffer+read,chunk_size-read,streaming_ctrl ); + int got = nop_networking_read( fd,buffer+read,chunk_size-read,networking ); if(got <= 0) { if(got < 0) MSG_ERR("Error while reading chunk\n"); @@ -519,12 +514,12 @@ } static int -asf_http_streaming_seek( int fd, off_t pos, streaming_ctrl_t *streaming_ctrl ) { +asf_http_networking_seek( int fd, off_t pos, networking_t *networking ) { return -1; // to shut up gcc warning fd++; pos++; - streaming_ctrl=NULL; + networking=NULL; } static int @@ -539,7 +534,7 @@ } static ASF_StreamType_e -asf_http_streaming_type(char *content_type, char *features, HTTP_header_t *http_hdr ) { +asf_http_networking_type(char *content_type, char *features, HTTP_header_t *http_hdr ) { if( content_type==NULL ) return ASF_Unknown_e; if( !strcasecmp(content_type, "application/octet-stream") || !strcasecmp(content_type, "application/vnd.ms.wms-hdr.asfv1") || // New in Corona, first request @@ -592,11 +587,11 @@ } static HTTP_header_t * -asf_http_request(streaming_ctrl_t *streaming_ctrl) { +asf_http_request(networking_t *networking) { HTTP_header_t *http_hdr; URL_t *url = NULL; URL_t *server_url = NULL; - asf_http_streaming_ctrl_t *asf_http_ctrl; + asf_http_networking_t *asf_http_ctrl; char str[250]; char *ptr; int i, enable; @@ -605,9 +600,9 @@ int asf_nb_stream=0, stream_id; // Sanity check - if( streaming_ctrl==NULL ) return NULL; - url = streaming_ctrl->url; - asf_http_ctrl = (asf_http_streaming_ctrl_t*)streaming_ctrl->data; + if( networking==NULL ) return NULL; + url = networking->url; + asf_http_ctrl = (asf_http_networking_t*)networking->data; if( url==NULL || asf_http_ctrl==NULL ) return NULL; // Common header for all requests. @@ -639,7 +634,7 @@ offset_hi, offset_lo, asf_http_ctrl->request, length ); http_set_field( http_hdr, str ); - switch( asf_http_ctrl->streaming_type ) { + switch( asf_http_ctrl->networking_type ) { case ASF_Live_e: case ASF_Prerecorded_e: http_set_field( http_hdr, "Pragma: xPlayStrm=1" ); @@ -691,7 +686,7 @@ } static int -asf_http_parse_response(asf_http_streaming_ctrl_t *asf_http_ctrl, HTTP_header_t *http_hdr ) { +asf_http_parse_response(asf_http_networking_t *asf_http_ctrl, HTTP_header_t *http_hdr ) { char *content_type, *pragma; char features[64] = "\0"; size_t len; @@ -744,47 +739,46 @@ } while( comma_ptr!=NULL ); pragma = http_get_next_field( http_hdr ); } - asf_http_ctrl->streaming_type = asf_http_streaming_type( content_type, features, http_hdr ); + asf_http_ctrl->networking_type = asf_http_networking_type( content_type, features, http_hdr ); return 0; } -static int asf_http_streaming_start(libinput_t*libinput, stream_t *stream, int *demuxer_type ) { +static int asf_http_networking_start(net_fd_t* fd, networking_t *networking) { HTTP_header_t *http_hdr=NULL; - URL_t *url = stream->streaming_ctrl->url; - asf_http_streaming_ctrl_t *asf_http_ctrl; + URL_t *url = networking->url; + asf_http_networking_t *asf_http_ctrl; char buffer[BUFFER_SIZE]; int i, ret; - int fd = stream->fd; int done; int auth_retry = 0; - asf_http_ctrl = (asf_http_streaming_ctrl_t*)mp_malloc(sizeof(asf_http_streaming_ctrl_t)); + asf_http_ctrl = new(zeromem) asf_http_networking_t; if( asf_http_ctrl==NULL ) { MSG_FATAL("Memory allocation failed\n"); return -1; } - asf_http_ctrl->streaming_type = ASF_Unknown_e; + asf_http_ctrl->networking_type = ASF_Unknown_e; asf_http_ctrl->request = 1; asf_http_ctrl->audio_streams = asf_http_ctrl->video_streams = NULL; asf_http_ctrl->n_audio = asf_http_ctrl->n_video = 0; - stream->streaming_ctrl->data = (any_t*)asf_http_ctrl; + networking->data = (any_t*)asf_http_ctrl; do { done = 1; - if( fd>0 ) closesocket( fd ); + if( *fd>0 ) closesocket( *fd ); if( !strcasecmp( url->protocol, "http_proxy" ) ) { if( url->port==0 ) url->port = 8080; } else { if( url->port==0 ) url->port = 80; } - fd = tcp_connect2Server(libinput, url->hostname, url->port, 0); - if( fd<0 ) return fd; + *fd = tcp_connect2Server(networking->libinput, url->hostname, url->port, 0); + if( *fd<0 ) return 0; - http_hdr = asf_http_request( stream->streaming_ctrl ); + http_hdr = asf_http_request( networking ); MSG_DBG2("Request [%s]\n", http_hdr->buffer ); for(i=0; i < (int)http_hdr->buffer_size ; ) { - int r = send( fd, http_hdr->buffer+i, http_hdr->buffer_size-i, 0); + int r = send( *fd, http_hdr->buffer+i, http_hdr->buffer_size-i, 0); if(r <0) { MSG_ERR("Socket write error : %s\n",strerror(errno)); return -1; @@ -794,7 +788,7 @@ http_free( http_hdr ); http_hdr = http_new_header(); do { - i = recv( fd, buffer, BUFFER_SIZE, 0); + i = recv( *fd, buffer, BUFFER_SIZE, 0); if( i<=0 ) { perror("read"); http_free( http_hdr ); @@ -812,20 +806,20 @@ http_free( http_hdr ); return -1; } - switch( asf_http_ctrl->streaming_type ) { + switch( asf_http_ctrl->networking_type ) { case ASF_Live_e: case ASF_Prerecorded_e: case ASF_PlainText_e: if( http_hdr->body_size>0 ) { - if( streaming_bufferize( stream->streaming_ctrl, http_hdr->body, http_hdr->body_size )<0 ) { + if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { http_free( http_hdr ); return -1; } } if( asf_http_ctrl->request==1 ) { - if( asf_http_ctrl->streaming_type!=ASF_PlainText_e ) { + if( asf_http_ctrl->networking_type!=ASF_PlainText_e ) { // First request, we only got the ASF header. - ret = asf_streaming_parse_header(fd,stream->streaming_ctrl); + ret = asf_networking_parse_header(*fd,networking); if(ret < 0) return -1; if(asf_http_ctrl->n_audio == 0 && asf_http_ctrl->n_video == 0) { MSG_ERR("No stream found\n"); @@ -840,39 +834,39 @@ break; case ASF_Redirector_e: if( http_hdr->body_size>0 ) { - if( streaming_bufferize( stream->streaming_ctrl, http_hdr->body, http_hdr->body_size )<0 ) { + if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { http_free( http_hdr ); return -1; } } - stream->type |= STREAMTYPE_TEXT; +// type |= STREAMTYPE_TEXT; done = 1; break; case ASF_Authenticate_e: if( http_authenticate( http_hdr, url, &auth_retry)<0 ) return -1; - asf_http_ctrl->streaming_type = ASF_Unknown_e; + asf_http_ctrl->networking_type = ASF_Unknown_e; done = 0; break; case ASF_Unknown_e: default: - MSG_ERR("Unknown ASF streaming type\n"); - closesocket(fd); + MSG_ERR("Unknown ASF networking type\n"); + closesocket(*fd); http_free( http_hdr ); return -1; } // Check if we got a redirect. } while(!done); - stream->fd = fd; - if( asf_http_ctrl->streaming_type==ASF_PlainText_e || asf_http_ctrl->streaming_type==ASF_Redirector_e ) { - stream->streaming_ctrl->streaming_read = nop_streaming_read; - stream->streaming_ctrl->streaming_seek = nop_streaming_seek; + fd = fd; + if( asf_http_ctrl->networking_type==ASF_PlainText_e || asf_http_ctrl->networking_type==ASF_Redirector_e ) { + networking->networking_read = nop_networking_read; + networking->networking_seek = nop_networking_seek; } else { - stream->streaming_ctrl->streaming_read = asf_http_streaming_read; - stream->streaming_ctrl->streaming_seek = asf_http_streaming_seek; - stream->streaming_ctrl->buffering = 1; + networking->networking_read = asf_http_networking_read; + networking->networking_seek = asf_http_networking_seek; + networking->buffering = 1; } - stream->streaming_ctrl->status = streaming_playing_e; + networking->status = networking_playing_e; http_free( http_hdr ); return 0; Modified: mplayerxp/libmpstream/asf_streaming.h =================================================================== --- mplayerxp/libmpstream/asf_streaming.h 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/asf_streaming.h 2012-12-06 13:53:54 UTC (rev 513) @@ -2,7 +2,8 @@ #define __ASF_STEAMING_H_INCLUDED 1 #include "stream.h" -extern int asf_streaming_start(libinput_t* libinput, stream_t *stream, int *demuxer_type); -extern int asf_mmst_streaming_start(libinput_t* libinput,stream_t *stream); +typedef int net_fd_t; +extern int asf_networking_start(net_fd_t* fd, networking_t *networking); +extern int asf_mmst_networking_start(net_fd_t* fd, networking_t *networking); #endif Modified: mplayerxp/libmpstream/cache2.cpp =================================================================== --- mplayerxp/libmpstream/cache2.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/cache2.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -29,6 +29,7 @@ #include "mplayerxp.h" #include "stream_msg.h" +namespace mpxp { #define CPF_EMPTY 0x00000001UL #define CPF_EOF 0x80000000UL #define CPF_DONE 0x40000000UL /* special case for dvd packets to exclude them from sending again */ @@ -104,18 +105,18 @@ readpos=c->read_filepos; in_cache=(readpos>=START_FILEPOS(c)&&readpos<END_FILEPOS(c)); new_start = readpos - c->back_size; - if(new_start<c->stream->start_pos) new_start=c->stream->start_pos; + if(new_start<c->stream->start_pos()) new_start=c->stream->start_pos(); seek_eof=0; - if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) { + if(!in_cache && c->stream->type()&STREAMTYPE_SEEKABLE) { /* seeking... */ MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); if(c->stream->eof || c->eof) nc_stream_reset(c->stream); - c->stream->driver->seek(c->stream,new_start); - if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } - if((c->packets[c->first].filepos=c->stream->driver->tell(c->stream))<0) seek_eof=1; + c->stream->driver->seek(new_start); + if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } + if((c->packets[c->first].filepos=c->stream->driver->tell())<0) seek_eof=1; c->last=c->first; - if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size) + if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size()) MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(c)); } else { @@ -143,8 +144,8 @@ { CACHE2_PACKET_TLOCK(cidx); c->packets[cidx].sp.len=c->sector_size; - c->packets[cidx].filepos = c->stream->driver->tell(c->stream); - c->stream->driver->read(c->stream,&c->packets[cidx].sp); + c->packets[cidx].filepos = c->stream->driver->tell(); + c->stream->driver->read(&c->packets[cidx].sp); MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); if(mp_conf.verbose>1) if(c->packets[cidx].sp.len>8) { @@ -162,7 +163,7 @@ c->eof=1; c->packets[cidx].state&=~CPF_EMPTY; c->packets[cidx].state&=~CPF_DONE; - if(errno) { MSG_WARN("c2_fill_buffer(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } + if(errno) { MSG_WARN("c2_fill_buffer(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } CACHE2_PACKET_TUNLOCK(cidx); break; } @@ -267,10 +268,10 @@ } int stream_enable_cache(stream_t *stream,libinput_t* libinput,int size,int _min,int prefill){ - int ss=stream->sector_size>1?stream->sector_size:STREAM_BUFFER_SIZE; + int ss=stream->sector_size()>1?stream->sector_size():STREAM_BUFFER_SIZE; cache_vars_t* c; - if (!(stream->type&STREAMTYPE_SEEKABLE) && stream->fd < 0) { + if (!(stream->type()&STREAMTYPE_SEEKABLE) && stream->fd < 0) { // The stream has no 'fd' behind it, so is non-cacheable MSG_WARN("\rThis stream is non-cacheable\n"); return 1; @@ -282,7 +283,7 @@ if(!c) return 0; c->stream=stream; c->prefill=size*prefill; - c->read_filepos=stream->start_pos; + c->read_filepos=stream->start_pos(); unsigned rc; if((rc=xmp_register_thread(NULL,sig_cache2,cache2_routine,"cache2"))==UINT_MAX) return 0; @@ -292,7 +293,7 @@ START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),_min,c->eof,ss); while((c->read_filepos<START_FILEPOS(c) || END_FILEPOS(c)-c->read_filepos<_min) && !c->eof && CP_NEXT(c,c->last)!=c->first){ - if(!(stream->type&STREAMTYPE_SEEKABLE)) + if(!(stream->type()&STREAMTYPE_SEEKABLE)) MSG_STATUS("\rCache fill: %5.2f%% (%d bytes) ", 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), END_FILEPOS(c)-c->read_filepos); @@ -352,8 +353,8 @@ cidx=c->first; do{ c->packets[cidx].state|=CPF_EMPTY; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); c->last=c->first; - c->read_filepos=c->stream->start_pos; - c->stream->driver->seek(c->stream,c->read_filepos); + c->read_filepos=c->stream->start_pos(); + c->stream->driver->seek(c->read_filepos); } } @@ -364,7 +365,7 @@ while(c->in_fill) yield_timeslice(); CACHE2_LOCK(c); if(c->eof) c2_stream_reset(c); - C2_ASSERT(pos < c->stream->start_pos); + C2_ASSERT(pos < c->stream->start_pos()); c->read_filepos=pos; CACHE2_UNLOCK(c); c2_stream_fill_buffer(c); @@ -672,4 +673,4 @@ y=(y<<8)|stream_read_char(s); return y; } - +} // namespace mpxp Modified: mplayerxp/libmpstream/cdd.h =================================================================== --- mplayerxp/libmpstream/cdd.h 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/cdd.h 2012-12-06 13:53:54 UTC (rev 513) @@ -5,9 +5,8 @@ namespace mpxp { struct libinput_t; -} -typedef struct { + struct cddb_data_t { char cddb_hello[1024]; unsigned long disc_id; unsigned int tracks; @@ -20,13 +19,13 @@ size_t xmcd_file_size; any_t*user_data; libinput_t*libinput; -} cddb_data_t; + }; -typedef struct { + struct cd_toc_t { unsigned int min, sec, frame; -} cd_toc_t; + }; -typedef struct cd_track { + struct cd_track_t { char *name; unsigned int track_nb; unsigned int min; @@ -34,11 +33,11 @@ unsigned int msec; unsigned long frame_begin; unsigned long frame_length; - struct cd_track *prev; - struct cd_track *next; -} cd_track_t; + cd_track_t *prev; + cd_track_t *next; + }; -typedef struct { + struct cd_info_t { char *artist; char *album; char *genre; @@ -49,39 +48,42 @@ cd_track_t *first; cd_track_t *last; cd_track_t *current; -} cd_info_t; + }; -typedef struct my_track_s { + struct my_track_t { int play; lsn_t start_sector; lsn_t end_sector; -}my_track_t; + }; -struct cdda_priv : public Opaque { - public: - cdda_priv(); - virtual ~cdda_priv(); + struct cdda_priv : public Opaque { + public: + cdda_priv(); + virtual ~cdda_priv(); - cdrom_drive_t* cd; - my_track_t tracks[256]; /* hope that's enough */ - unsigned min; - unsigned sec; - unsigned msec; - lsn_t sector; - lsn_t start_sector; - lsn_t end_sector; -}; + cdrom_drive_t* cd; + my_track_t tracks[256]; /* hope that's enough */ + unsigned min; + unsigned sec; + unsigned msec; + lsn_t sector; + lsn_t start_sector; + lsn_t end_sector; + }; -cd_info_t* __FASTCALL__ cd_info_new(); -void __FASTCALL__ cd_info_free(cd_info_t *cd_info); -cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); -cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb); + cd_info_t* __FASTCALL__ cd_info_new(); + void __FASTCALL__ cd_info_free(cd_info_t *cd_info); + cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); + cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb); -MPXP_Rc __FASTCALL__ open_cdda(stream_t*,const char* dev,const char* track); -MPXP_Rc __FASTCALL__ open_cddb(stream_t*,const char* dev,const char* track); -int __FASTCALL__ read_cdda(const stream_t* s,char *buf,track_t* trackidx); -void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *trackidx); -off_t __FASTCALL__ tell_cdda(const stream_t* s); -void __FASTCALL__ close_cdda(stream_t* s); -void cdda_register_options(m_config_t* cfg); + cdda_priv* __FASTCALL__ open_cdda(const char* dev,const char* track); + cdda_priv* __FASTCALL__ open_cddb(libinput_t*,const char* dev,const char* track); + int __FASTCALL__ read_cdda(cdda_priv* s,char *buf,track_t* trackidx); + void __FASTCALL__ seek_cdda(cdda_priv* s,off_t pos,track_t *trackidx); + off_t __FASTCALL__ tell_cdda(const cdda_priv* s); + void __FASTCALL__ close_cdda(cdda_priv*); + off_t __FASTCALL__ cdda_start(cdda_priv*); + off_t __FASTCALL__ cdda_size(cdda_priv*); + void cdda_register_options(m_config_t* cfg); +} // namespace mpxp #endif // __CDD_H__ Modified: mplayerxp/libmpstream/cdda.cpp =================================================================== --- mplayerxp/libmpstream/cdda.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/cdda.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -15,6 +15,7 @@ #include "cdd.h" #include "stream_msg.h" +namespace mpxp { static int speed = -1; static int search_overlap = -1; static int no_skip = 0; @@ -74,7 +75,7 @@ return rval; } -MPXP_Rc __FASTCALL__ open_cdda(stream_t *st,const char* dev,const char* arg) { +cdda_priv* __FASTCALL__ open_cdda(const char* dev,const char* arg) { unsigned cd_tracks; cdda_priv* priv; unsigned int audiolen=0; @@ -89,7 +90,7 @@ if(!priv->cd) { MSG_ERR("Can't open cdda device: %s\n",dev); delete priv; - return MPXP_False; + return NULL; } cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); @@ -98,7 +99,7 @@ MSG_ERR("Can't open disc\n"); cdda_close(priv->cd); delete priv; - return MPXP_False; + return NULL; } cd_tracks=cdio_cddap_tracks(priv->cd); @@ -129,13 +130,12 @@ if(speed) cdio_cddap_speed_set(priv->cd,speed); priv->sector = priv->start_sector; - st->type = STREAMTYPE_SEEKABLE|STREAMTYPE_RAWAUDIO; - st->priv = priv; - st->start_pos = priv->start_sector*CDIO_CD_FRAMESIZE_RAW; - st->end_pos = priv->end_sector*CDIO_CD_FRAMESIZE_RAW; - return MPXP_Ok; + return priv; } +off_t __FASTCALL__ cdda_start(cdda_priv* priv) { return priv->start_sector*CDIO_CD_FRAMESIZE_RAW; } +off_t __FASTCALL__ cdda_size(cdda_priv* priv) { return priv->end_sector*CDIO_CD_FRAMESIZE_RAW; } + static lsn_t map_sector(cdda_priv*p,lsn_t sector,track_t *tr) { unsigned i,j; @@ -171,8 +171,7 @@ return 0; } -int __FASTCALL__ read_cdda(const stream_t* s,char *buf,track_t *tr) { - cdda_priv* p = static_cast<cdda_priv*>(s->priv); +int __FASTCALL__ read_cdda(cdda_priv* p,char *buf,track_t *tr) { track_t i=255; if(cdio_cddap_read(p->cd, buf, p->sector, 1)==0) { @@ -195,8 +194,7 @@ return CDIO_CD_FRAMESIZE_RAW; } -void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *tr) { - cdda_priv* p = static_cast<cdda_priv*>(s->priv); +void __FASTCALL__ seek_cdda(cdda_priv* p,off_t pos,track_t *tr) { long sec; long seeked_track=0; track_t j=255; @@ -212,13 +210,11 @@ p->sector=seeked_track; } -off_t __FASTCALL__ tell_cdda(const stream_t* s) { - const cdda_priv* p = static_cast<const cdda_priv*>(s->priv); +off_t __FASTCALL__ tell_cdda(const cdda_priv* p) { return p->sector*CDIO_CD_FRAMESIZE_RAW; } -void __FASTCALL__ close_cdda(stream_t* s) { - cdda_priv* p = static_cast<cdda_priv*>(s->priv); +void __FASTCALL__ close_cdda(cdda_priv* p) { delete p; } @@ -226,5 +222,5 @@ cdda_priv::~cdda_priv() { cdio_cddap_close(cd); } - +} // namespace mpxp #endif Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -43,12 +43,13 @@ #include "stream.h" #include "libmpconf/cfgparser.h" - #include "cdd.h" #include "version.h" #include "network.h" #include "stream_msg.h" +namespace mpxp { + #define DEFAULT_FREEDB_SERVER "freedb.freedb.org" #define DEFAULT_CACHE_DIR "/.cddb/" @@ -780,19 +781,19 @@ return cd_info; } -MPXP_Rc __FASTCALL__ open_cddb(stream_t *stream,const char *dev, const char *track) { +cdda_priv* __FASTCALL__ open_cddb(libinput_t *libinput,const char *dev, const char *track) { cd_info_t *cd_info = NULL; char *xmcd_file = NULL; MPXP_Rc ret; - ret = cddb_resolve(stream->streaming_ctrl->libinput,&xmcd_file); + ret = cddb_resolve(libinput,&xmcd_file); if( ret==MPXP_False ) { cd_info = cddb_parse_xmcd(xmcd_file); delete xmcd_file; cd_info_debug( cd_info ); + return NULL; } - ret = open_cdda(stream, dev, track); - - return ret; + return open_cdda(dev, track); } +} // namespace mpxp #endif Modified: mplayerxp/libmpstream/mrl.cpp =================================================================== --- mplayerxp/libmpstream/mrl.cpp 2012-12-06 06:45:48 UTC (rev 512) +++ mplayerxp/libmpstream/mrl.cpp 2012-12-06 13:53:54 UTC (rev 513) @@ -12,7 +12,7 @@ #ifdef TEST_MRL #include <stdio.h> #endif - +namespace mpxp { const char *mrl_parse_line(const char *line,char **user,char **pass,char **ms,char **port) { unsigned ssize; @@ -180,3 +180,5 @@ if(value) delete value; return param; } +} // namespace mpxp + Modified: mplayerxp/libmpstream/mrl.h =================================================================== --- mpl... [truncated message content] |