[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[494] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-11-30 16:29:00
|
Revision: 494 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=494&view=rev Author: nickols_k Date: 2012-11-30 16:28:49 +0000 (Fri, 30 Nov 2012) Log Message: ----------- add private for class Demuxer_Stream Modified Paths: -------------- mplayerxp/libmpcodecs/ad_lavc.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_viv.cpp mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpdemux/demuxer_stream.h mplayerxp/libmpdemux/video.cpp mplayerxp/mplayerxp.cpp Modified: mplayerxp/libmpcodecs/ad_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_lavc.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpcodecs/ad_lavc.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -15,7 +15,7 @@ #include "osdep/bswap.h" #include "libmpconf/codec-cfg.h" -#include "mp_conf_lavc.h"" +#include "mp_conf_lavc.h" #include "codecs_ld.h" typedef struct priv_s { @@ -213,7 +213,7 @@ if(y<0){ MSG_V("lavc_audio: error\n");break; } if(y<x) { - sh_audio->ds->buffer_pos+=y-x; // put back data (HACK!) + sh_audio->ds->buffer_roll_back(x-y); // put back data (HACK!) if(sh_audio->wtag==mmioFOURCC('d','n','e','t')) swab(start+y,start+y,(x-y)&~(1)); } Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -981,7 +981,7 @@ } ds=demux_avi_select_stream(demux,id); if(ds) - if(ds->packs+1>=MAX_PACKS || ds->bytes+len>=MAX_PACK_BYTES){ + if(ds->packs()+1>=MAX_PACKS || ds->bytes()+len>=MAX_PACK_BYTES){ /* this packet will cause a buffer overflow, switch to -ni mode!!! */ MSG_WARN("\nBadly interleaved .AVI detected - switching to -ni mode...\n"); if(priv->idx_size>0){ Modified: mplayerxp/libmpdemux/demux_viv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_viv.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpdemux/demux_viv.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -482,10 +482,10 @@ #define skip_bits1(xxx) x_get_bits(1) /* most is hardcoded. should extend to handle all h263 streams */ -static int h263_decode_picture_header(unsigned char *b_ptr) +static int h263_decode_picture_header(const unsigned char *b_ptr) { // int i; - + const unsigned char *buffer; buffer=b_ptr; bufptr=bitcnt=buf=0; @@ -582,7 +582,7 @@ audio_pos=0; - h263_decode_picture_header(demuxer->video->buffer); + h263_decode_picture_header(demuxer->video->buffer()); if (vivo_param.version != -1) priv->version = '0' + vivo_param.version; Modified: mplayerxp/libmpdemux/demuxer_stream.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpdemux/demuxer_stream.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -17,18 +17,18 @@ { rnd_fill(antiviral_hole,reinterpret_cast<long>(&pin)-reinterpret_cast<long>(&antiviral_hole)); pin=DS_PIN; - buffer_pos=buffer_size=0; - buffer=NULL; + _buffer_pos=_buffer_size=0; + _buffer=NULL; pts=0; - pts_bytes=0; + _pts_bytes=0; eof=0; pos=0; dpos=0; pack_no=0; //--------------- - packs=0; - bytes=0; - first=last=current=NULL; + _packs=0; + _bytes=0; + _first=_last=_current=NULL; id=_id; demuxer=_demuxer; //---------------- @@ -43,38 +43,38 @@ #if 1 int Demuxer_Stream::getch() { return - (buffer_pos<buffer_size) ? buffer[buffer_pos++]: - ((!fill_buffer())? (-1) : buffer[buffer_pos++]); + (_buffer_pos<_buffer_size) ? _buffer[_buffer_pos++]: + ((!fill_buffer())? (-1) : _buffer[_buffer_pos++]); } #else int Demuxer_Stream::getch(){ - if(buffer_pos>=buffer_size){ + if(_buffer_pos>=_buffer_size){ if(!fill_buffer()){ return -1; // EOF } } - return buffer[buffer_pos++]; + return _buffer[_buffer_pos++]; } #endif void Demuxer_Stream::add_packet(Demuxer_Packet* dp){ if(dp->length()>0) { - ++packs; - bytes+=dp->length(); - if(last) { + ++_packs; + _bytes+=dp->length(); + if(_last) { // next packet in stream - last->next=dp; - last=dp; + _last->next=dp; + _last=dp; } else { - // first packet in stream - first=last=dp; + // _first packet in stream + _first=_last=dp; } - MSG_DBG2("DEMUX: Append packet: len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", - dp->length(),dp->pts,(unsigned int)dp->pos,demuxer->audio->packs,demuxer->video->packs); + MSG_DBG2("DEMUX: Append packet: len=%d pts=%5.3f pos=%u [_packs: A=%d V=%d]\n", + dp->length(),dp->pts,(unsigned int)dp->pos,demuxer->audio->_packs,demuxer->video->_packs); } else - MSG_DBG2("DEMUX: Skip packet: len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", - dp->length(),dp->pts,(unsigned int)dp->pos,demuxer->audio->packs,demuxer->video->packs); + MSG_DBG2("DEMUX: Skip packet: len=%d pts=%5.3f pos=%u [_packs: A=%d V=%d]\n", + dp->length(),dp->pts,(unsigned int)dp->pos,demuxer->audio->_packs,demuxer->video->_packs); } void Demuxer_Stream::read_packet(stream_t *stream,int len,float _pts,off_t _pos,dp_flags_e _flags){ @@ -93,7 +93,7 @@ // 0 = EOF // 1 = succesfull int Demuxer_Stream::fill_buffer() { - if (buffer) delete buffer; + if (_buffer) delete _buffer; /* free_packs(ds); */ if(mp_conf.verbose>2) { if(this==demuxer->audio) MSG_DBG3("ds_fill_buffer(d_audio) called\n"); @@ -102,37 +102,37 @@ else MSG_DBG3("ds_fill_buffer(unknown %p) called\n",this); } while(1){ - if(packs){ - Demuxer_Packet *p=first; + if(_packs){ + Demuxer_Packet *p=_first; // copy useful data: - buffer=p->buffer(); - buffer_pos=0; - buffer_size=p->length(); + _buffer=p->buffer(); + _buffer_pos=0; + _buffer_size=p->length(); pos=p->pos; dpos+=p->length(); // !!! ++pack_no; if(p->pts){ pts=p->pts; - pts_bytes=0; + _pts_bytes=0; } - pts_bytes+=p->length(); // !!! + _pts_bytes+=p->length(); // !!! flags=p->flags; // mp_free packet: - bytes-=p->length(); - current=p; - first=p->next; - if(!first) last=NULL; - --packs; + _bytes-=p->length(); + _current=p; + _first=p->next; + if(!_first) _last=NULL; + --_packs; check_pin("demuxer",pin,DS_PIN); - return 1; //ds->buffer_size; + return 1; //ds->_buffer_size; } - if(demuxer->audio->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyAudioInBuffer,demuxer->audio->packs,demuxer->audio->bytes); + if(demuxer->audio->_bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyAudioInBuffer,demuxer->audio->_packs,demuxer->audio->_bytes); MSG_HINT(MSGTR_MaybeNI); break; } - if(demuxer->video->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->packs,demuxer->video->bytes); + if(demuxer->video->_bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->_packs,demuxer->video->_bytes); MSG_HINT(MSGTR_MaybeNI); break; } @@ -145,9 +145,9 @@ break; // EOF } } - buffer_pos=buffer_size=0; - buffer=NULL; - current=NULL; + _buffer_pos=_buffer_size=0; + _buffer=NULL; + _current=NULL; MSG_V("ds_fill_buffer: EOF reached (stream: %s) \n",this==demuxer->audio?"audio":"video"); eof=1; check_pin("demuxer",pin,DS_PIN); @@ -156,23 +156,23 @@ int Demuxer_Stream::read_data(unsigned char* mem,int len) { int x; - int _bytes=0; + int __bytes=0; while(len>0){ - x=buffer_size-buffer_pos; + x=_buffer_size-_buffer_pos; if(x==0){ - if(!fill_buffer()) return _bytes; + if(!fill_buffer()) return __bytes; } else { if(x>len) x=len; - if(x<0) return _bytes; /* BAD!!! sometime happens. Broken stream, driver, gcc ??? */ - if(mem) memcpy(mem+_bytes,&buffer[buffer_pos],x); - _bytes+=x;len-=x;buffer_pos+=x; + if(x<0) return __bytes; /* BAD!!! sometime happens. Broken stream, driver, gcc ??? */ + if(mem) memcpy(mem+__bytes,&_buffer[_buffer_pos],x); + __bytes+=x;len-=x;_buffer_pos+=x; } } - return _bytes; + return __bytes; } void Demuxer_Stream::free_packs() { - Demuxer_Packet *dp=first; + Demuxer_Packet *dp=_first; while(dp) { Demuxer_Packet *dn=dp->next; delete dp; @@ -183,26 +183,26 @@ delete asf_packet; asf_packet=NULL; } - first=last=NULL; - packs=0; // !!!!! - bytes=0; - if(current) delete current; - current=NULL; - buffer=NULL; - buffer_pos=buffer_size; + _first=_last=NULL; + _packs=0; // !!!!! + _bytes=0; + if(_current) delete _current; + _current=NULL; + _buffer=NULL; + _buffer_pos=_buffer_size; pts=0; - pts_bytes=0; + _pts_bytes=0; } void Demuxer_Stream::free_packs_until_pts(float _pts) { - Demuxer_Packet *dp=first; - unsigned _packs,_bytes; - _packs=_bytes=0; + Demuxer_Packet *dp=_first; + unsigned __packs,__bytes; + __packs=__bytes=0; while(dp) { Demuxer_Packet *dn=dp->next; if(dp->pts >= _pts) break; - _packs++; - _bytes+=dp->length(); + __packs++; + __bytes+=dp->length(); delete dp; dp=dn; } @@ -212,36 +212,36 @@ delete asf_packet; asf_packet=NULL; } - first=last=NULL; - packs=0; // !!!!! - bytes=0; + _first=_last=NULL; + _packs=0; // !!!!! + _bytes=0; pts=0; } else { - first=dp; - packs-=_packs; - bytes-=_bytes; + _first=dp; + _packs-=__packs; + _bytes-=__bytes; pts=dp->pts; } - if(current) delete current; - current=NULL; - buffer=NULL; - buffer_pos=buffer_size; - pts_bytes=0; + if(_current) delete _current; + _current=NULL; + _buffer=NULL; + _buffer_pos=_buffer_size; + _pts_bytes=0; } int Demuxer_Stream::get_packet(unsigned char **start){ while(1){ int len; - if(buffer_pos>=buffer_size){ + if(_buffer_pos>=_buffer_size){ if(!fill_buffer()){ // EOF *start = NULL; return -1; } } - len=buffer_size-buffer_pos; - *start = &buffer[buffer_pos]; - buffer_pos+=len; + len=_buffer_size-_buffer_pos; + *start = &_buffer[_buffer_pos]; + _buffer_pos+=len; return len; } } @@ -249,33 +249,35 @@ int Demuxer_Stream::get_packet_sub(unsigned char **start){ while(1){ int len; - if(buffer_pos>=buffer_size){ + if(_buffer_pos>=_buffer_size){ *start = NULL; - if(!packs) return -1; // no sub + if(!_packs) return -1; // no sub if(!fill_buffer()) return -1; // EOF } - len=buffer_size-buffer_pos; - *start = &buffer[buffer_pos]; - buffer_pos+=len; + len=_buffer_size-_buffer_pos; + *start = &_buffer[_buffer_pos]; + _buffer_pos+=len; return len; } } float Demuxer_Stream::get_next_pts() { - while(!first) { - if(demuxer->audio->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyAudioInBuffer,demuxer->audio->packs,demuxer->audio->bytes); + while(!_first) { + if(demuxer->audio->_bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyAudioInBuffer,demuxer->audio->_packs,demuxer->audio->_bytes); MSG_HINT(MSGTR_MaybeNI); return -1; } - if(demuxer->video->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->packs,demuxer->video->bytes); + if(demuxer->video->_bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->_packs,demuxer->video->_bytes); MSG_HINT(MSGTR_MaybeNI); return -1; } if(!demux_fill_buffer(demuxer,this)) return -1; } - return first->pts; + return _first->pts; } -} // namespace mpxp \ No newline at end of file +void Demuxer_Stream::buffer_roll_back(int x) { _buffer_pos-=x; } + +} // namespace mpxp Modified: mplayerxp/libmpdemux/demuxer_stream.h =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.h 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpdemux/demuxer_stream.h 2012-11-30 16:28:49 UTC (rev 494) @@ -3,6 +3,8 @@ #include "mp_config.h" #include "osdep/mplib.h" using namespace mpxp; + +#include <stdint.h> #include "demuxer_packet.h" struct demuxer_t; @@ -23,29 +25,22 @@ float get_next_pts(); int getch(); int fill_buffer(); - off_t tell() const { return (dpos-buffer_size)+buffer_pos; } - int tell_pts() const { return (pts_bytes-buffer_size)+buffer_pos; } + off_t tell() const { return (dpos-_buffer_size)+_buffer_pos; } + int tell_pts() const { return (_pts_bytes-_buffer_size)+_buffer_pos; } + int packs() const { return _packs; } + int bytes() const { return _bytes; } + const uint8_t*buffer() const { return _buffer; } + void buffer_roll_back(int size); // deprecated (added for ad_lavc) int id; /**< stream ID (for multiple audio/video streams) */ char antiviral_hole[RND_CHAR2]; unsigned pin; /**< personal identification number */ - int buffer_pos; /**< current buffer position */ - int buffer_size; /**< current buffer size */ - unsigned char* buffer; /**< current buffer */ float pts; /**< current buffer's PTS */ - int pts_bytes; /**< number of bytes read after last pts stamp */ int eof; /**< end of demuxed stream? (true if all buffer empty) */ off_t pos; /**< position in the input stream (file) */ off_t dpos; /**< position in the demuxed stream */ - int pack_no; /**< serial number of packet */ int flags; /**< flags of current packet (keyframe etc) */ /*---------------*/ - int packs; /**< number of packets in buffer */ - int bytes; /**< total bytes of packets in buffer */ - Demuxer_Packet* first; /**< read to current buffer from here */ - Demuxer_Packet* last; /**< append new packets from input stream to here */ - Demuxer_Packet* current; /**< needed for refcounting of the buffer */ - demuxer_t* demuxer; /**< parent demuxer structure (stream handler) */ /* ---- asf ----- */ Demuxer_Packet* asf_packet; /**< read asf fragments here */ int asf_seq; /**< sequence id associated with asf_packet */ @@ -55,6 +50,18 @@ float prev_pts; /**< PTS of previous packet (DVD's PTS correction) */ float pts_corr; /**< PTS correction (DVD's PTS correction) */ int pts_flags; /**< PTS flags like trigger for correction applying (DVD's PTS correction) */ + demuxer_t* demuxer; /**< parent demuxer structure (stream handler) */ + int pack_no; /**< serial number of packet */ + private: + int _pts_bytes; /**< number of bytes read after last pts stamp */ + int _packs; /**< number of packets in buffer */ + int _bytes; /**< total bytes of packets in buffer */ + Demuxer_Packet* _first; /**< read to current buffer from here */ + Demuxer_Packet* _last; /**< append new packets from input stream to here */ + Demuxer_Packet* _current; /**< needed for refcounting of the buffer */ + int _buffer_pos; /**< current buffer position */ + int _buffer_size; /**< current buffer size */ + uint8_t* _buffer; /**< current buffer */ }; } // namespace mpxp -#endif \ No newline at end of file +#endif Modified: mplayerxp/libmpdemux/video.cpp =================================================================== --- mplayerxp/libmpdemux/video.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/libmpdemux/video.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -119,13 +119,13 @@ /* demuxer pos saving is required for libavcodec mpeg decoder as it's reading the mpeg header self! */ - saved_pos = d_video->buffer_pos; +// saved_pos = d_video->buffer_pos; saved_type = d_video->demuxer->file_format; d_video->demuxer->file_format = DEMUXER_TYPE_MPEG_ES; video_read_properties(sh_video); d_video->demuxer->file_format = saved_type; - d_video->buffer_pos = saved_pos; +// d_video->buffer_pos = saved_pos; // goto mpeg_header_parser; } #endif Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-11-30 15:24:08 UTC (rev 493) +++ mplayerxp/mplayerxp.cpp 2012-11-30 16:28:49 UTC (rev 494) @@ -1976,7 +1976,6 @@ sh_audio->a_pts=HUGE; } else { MSG_INFO(MSGTR_NoSound); - if(mp_conf.verbose) MSG_V("Freeing %d unused audio chunks\n",d_audio->packs); d_audio->free_packs(); // mp_free buffered chunks d_audio->id=-2; // do not read audio chunks if(MPXPSys.ao_inited==MPXP_Ok) MPXPSys.uninit_player(INITED_AO); // close device @@ -1984,7 +1983,6 @@ if(!sh_video){ MSG_INFO("Video: no video!!!\n"); - if(mp_conf.verbose) MSG_V("Freeing %d unused video chunks\n",d_video->packs); d_video->free_packs(); d_video->id=-2; if(MPXPSys.vo_inited) MPXPSys.uninit_player(INITED_VO); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |