mplayerxp-cvslog Mailing List for MplayerXP-mplayer with extra performance (Page 3)
Brought to you by:
olov
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(53) |
Apr
(142) |
May
(129) |
Jun
(160) |
Jul
(102) |
Aug
(14) |
Sep
(50) |
Oct
(27) |
Nov
(52) |
Dec
(41) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(136) |
Feb
(170) |
Mar
(103) |
Apr
(102) |
May
(44) |
Jun
(25) |
Jul
(2) |
Aug
|
Sep
(6) |
Oct
(1) |
Nov
|
Dec
(4) |
2004 |
Jan
|
Feb
(21) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(12) |
Oct
(160) |
Nov
(63) |
Dec
(5) |
2005 |
Jan
(10) |
Feb
(14) |
Mar
(18) |
Apr
(74) |
May
(72) |
Jun
(22) |
Jul
(28) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(91) |
Feb
(71) |
Mar
(1) |
Apr
|
May
|
Jun
(4) |
Jul
(3) |
Aug
(4) |
Sep
(21) |
Oct
(42) |
Nov
(9) |
Dec
(26) |
2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
(17) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(134) |
Dec
(72) |
2008 |
Jan
(6) |
Feb
(1) |
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
(1) |
Oct
(21) |
Nov
(41) |
Dec
(12) |
2009 |
Jan
(57) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(25) |
Oct
(1) |
Nov
(46) |
Dec
(59) |
2010 |
Jan
(84) |
Feb
(5) |
Mar
|
Apr
(2) |
May
|
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(122) |
Nov
(223) |
Dec
(132) |
2013 |
Jan
|
Feb
|
Mar
|
Apr
(8) |
May
(13) |
Jun
(10) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <nic...@us...> - 2012-12-27 16:37:35
|
Revision: 608 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=608&view=rev Author: nickols_k Date: 2012-12-27 16:37:25 +0000 (Thu, 27 Dec 2012) Log Message: ----------- convert struct play_tree_t into class PlayTree Modified Paths: -------------- TODO mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/asxparser.h mplayerxp/libplaytree/playtree.cpp mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/libplaytree/playtreeparser.h mplayerxp/mplayerxp.cpp mplayerxp/postproc/libmenu/menu_pt.cpp Modified: TODO =================================================================== --- TODO 2012-12-27 14:05:33 UTC (rev 607) +++ TODO 2012-12-27 16:37:25 UTC (rev 608) @@ -1,5 +1,6 @@ TODO for mplayerxp: +- remove m_config_t from libplaytree: implement config independed container - Implement libmpdemux3: class Demuxer_Driver { Demuxer_Driver(Demuxer& parent); Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -193,7 +193,7 @@ return ret; } -m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput) { +m_config_t& m_config_new(PlayTree* pt,libinput_t&libinput) { m_config_t& config = *new(zeromem) m_config_t(libinput); config.config_stack = (config_save_t**)mp_calloc(1,sizeof(config_save_t*)); SET_GLOBAL(config); // We always start with global options @@ -228,13 +228,13 @@ } static int config_is_entry_option(m_config_t& config,const std::string& opt,const std::string& param) { - play_tree_t* entry = NULL; + PlayTree* entry = NULL; std::string lopt=opt; std::transform(lopt.begin(),lopt.end(),lopt.begin(), ::tolower); if(lopt=="playlist") { // We handle playlist here if(param.empty()) return ERR_MISSING_PARAM; - entry = parse_playlist_file(config.libinput,param); + entry = PlayTree::parse_playlist_file(config.libinput,param); if(!entry) { mpxp_err<<"Playlist parsing failed: "<<param<<std::endl; return 1; @@ -242,8 +242,8 @@ } if(entry) { - if(config.last_entry) play_tree_append_entry(config.last_entry,entry); - else play_tree_set_child(config.pt,entry); + if(config.last_entry) config.last_entry->append_entry(entry); + else config.pt->set_child(entry); config.last_entry = entry; if(config.parser_mode == COMMAND_LINE) UNSET_GLOBAL(config); return 1; @@ -449,15 +449,15 @@ } out: if(ret >= 0 && ! IS_RUNNING(config) && ! IS_GLOBAL(config) && ! (conf[i].flags & CONF_GLOBAL) && conf[i].type != CONF_TYPE_SUBCONFIG ) { - play_tree_t* dest = config.last_entry ? config.last_entry : config.last_parent; + PlayTree* dest = config.last_entry ? config.last_entry : config.last_parent; std::string o; if(config.sub_conf) o=std::string(config.sub_conf)+":"+opt; else o=opt; if(ret == 0) - play_tree_set_param(dest,o,""); + dest->set_param(o,""); else if(ret > 0) - play_tree_set_param(dest,o,param); + dest->set_param(o,param); m_config_pop(config); } return ret; @@ -728,12 +728,12 @@ continue; } if(opt[0] == '{' && opt[1] == '\0') { - play_tree_t* entry = play_tree_new(); + PlayTree* entry = new(zeromem) PlayTree; UNSET_GLOBAL(config); if(config.last_entry == NULL) { - play_tree_set_child(config.last_parent,entry); + config.last_parent->set_child(entry); } else { - play_tree_append_entry(config.last_entry,entry); + config.last_entry->append_entry(entry); config.last_entry = NULL; } config.last_parent = entry; @@ -741,12 +741,12 @@ } if(opt[0] == '}' && opt[1] == '\0') { - if( ! config.last_parent || ! config.last_parent->parent) { + if( ! config.last_parent || ! config.last_parent->get_parent()) { mpxp_err<<"too much }-"<<std::endl; goto err_out; } config.last_entry = config.last_parent; - config.last_parent = config.last_entry->parent; + config.last_parent = config.last_entry->get_parent(); continue; } @@ -788,14 +788,14 @@ break; } } else /* filename */ { - play_tree_t* entry = play_tree_new(); + PlayTree* entry = new(zeromem) PlayTree; mpxp_dbg2<<"Adding file "<<argv[i]<<std::endl; - play_tree_add_file(entry,argv[i]); + entry->add_file(argv[i]); if(argv[i]=="-") m_config_set_option(config,"use-stdin",NULL); /* opt is not an option -> treat it as a filename */ UNSET_GLOBAL(config); // We start entry specific options - if(config.last_entry == NULL) play_tree_set_child(config.last_parent,entry); - else play_tree_append_entry(config.last_entry,entry); + if(config.last_entry == NULL) config.last_parent->set_child(entry); + else config.last_entry->append_entry(entry); config.last_entry = entry; } } Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-27 16:37:25 UTC (rev 608) @@ -10,8 +10,8 @@ namespace mpxp { struct libinput_t; + struct PlayTree; } -struct play_tree_t; /* config types */ enum { CONF_TYPE_FLAG =0, @@ -64,9 +64,9 @@ int parser_mode; /* COMMAND_LINE or CONFIG_FILE */ int flags; const char* sub_conf; // When we save a subconfig - play_tree_t* pt; // play tree we use for playlist option, etc - play_tree_t* last_entry; // last added entry - play_tree_t* last_parent; // if last_entry is NULL we must create child of this + PlayTree* pt; // play tree we use for playlist option, etc + PlayTree* last_entry; // last added entry + PlayTree* last_parent; // if last_entry is NULL we must create child of this int recursion_depth; libinput_t& libinput; }; @@ -96,7 +96,7 @@ MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv,const std::map<std::string,std::string>& envm); } -m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput); +m_config_t& m_config_new(PlayTree* pt,libinput_t&libinput); void m_config_free(m_config_t* config); Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -295,7 +295,7 @@ return 1; } -void ASX_Parser::param(ASX_Attrib& cattribs, play_tree_t* pt) const { +void ASX_Parser::param(ASX_Attrib& cattribs, PlayTree* pt) const { std::string name,val; name = cattribs.get("NAME"); @@ -310,10 +310,10 @@ else mpxp_warn<<std::endl; return; } - play_tree_set_param(pt,name,val); + pt->set_param(name,val); } -void ASX_Parser::ref(ASX_Attrib& cattribs, play_tree_t* pt) const { +void ASX_Parser::ref(ASX_Attrib& cattribs, PlayTree* pt) const { std::string href; href = cattribs.get("HREF"); @@ -325,12 +325,12 @@ if (href.substr(0,7)=="http://") { href = "mms"+href; } - play_tree_add_file(pt,href); + pt->add_file(href); mpxp_v<<"Adding file "<<href<<" to element entry"<<std::endl; } -play_tree_t* ASX_Parser::entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const { - play_tree_t* pt; +PlayTree* ASX_Parser::entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const { + PlayTree* pt; std::string href; Stream* stream; play_tree_parser_t* ptp; @@ -363,13 +363,13 @@ return pt; } -play_tree_t* ASX_Parser::entry(const char* buffer,ASX_Attrib& _attribs) { +PlayTree* ASX_Parser::entry(const char* buffer,ASX_Attrib& _attribs) { ASX_Element element; int r,nref=0; - play_tree_t *pt_ref; + PlayTree *pt_ref; UNUSED(_attribs); - pt_ref = play_tree_new(); + pt_ref = new(zeromem) PlayTree; while(buffer && buffer[0] != '\0') { r = get_element(&buffer,element); @@ -386,28 +386,29 @@ } else mpxp_dbg2<<"Ignoring element "<<element.name()<<std::endl; } if(nref <= 0) { - play_tree_free(pt_ref,1); + pt_ref->free(1); + delete pt_ref; return NULL; } return pt_ref; } -play_tree_t* ASX_Parser::repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs) { +PlayTree* ASX_Parser::repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs) { ASX_Element element; - play_tree_t *pt_repeat, *list=NULL, *pt_entry; + PlayTree *pt_repeat, *list=NULL, *pt_entry; std::string count; int r; - pt_repeat = play_tree_new(); + pt_repeat = new(zeromem) PlayTree; count = _attribs.get("COUNT"); if(count.empty()) { mpxp_dbg2<<"Setting element repeat loop to infinit"<<std::endl; - pt_repeat->loop = -1; // Infinit + pt_repeat->set_loop(-1); // Infinit } else { - pt_repeat->loop = ::atoi(count.c_str()); - if(pt_repeat->loop == 0) pt_repeat->loop = 1; - mpxp_dbg2<<"Setting element repeat loop to "<<pt_repeat->loop<<std::endl; + pt_repeat->set_loop(::atoi(count.c_str())); + if(pt_repeat->get_loop() == 0) pt_repeat->set_loop(1); + mpxp_dbg2<<"Setting element repeat loop to "<<pt_repeat->get_loop()<<std::endl; } while(buffer && buffer[0] != '\0') { @@ -422,21 +423,21 @@ pt_entry = entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } } else if(uname=="ENTRYREF") { pt_entry = entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } } else if(uname=="REPEAT") { pt_entry = repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } } else if(uname=="PARAM") { @@ -445,17 +446,18 @@ } if(!list) { - play_tree_free(pt_repeat,1); + pt_repeat->free(1); + delete pt_repeat; return NULL; } - play_tree_set_child(pt_repeat,list); + pt_repeat->set_child(list); return pt_repeat; } -play_tree_t* ASX_Parser::build_tree(libinput_t&libinput,const char* buffer,int deep) { +PlayTree* ASX_Parser::build_tree(libinput_t&libinput,const char* buffer,int deep) { ASX_Element asx_element,element; int r; - play_tree_t *asx,*pt_entry,*list = NULL; + PlayTree *asx,*pt_entry,*list = NULL; ASX_Parser& parser = *new(zeromem) ASX_Parser; parser.line = 1; @@ -486,7 +488,7 @@ return NULL; } - asx = play_tree_new(); + asx = new(zeromem) PlayTree; buffer = asx_element.body().c_str(); while(buffer && buffer[0] != '\0') { r = parser.get_element(&buffer,element); @@ -501,21 +503,21 @@ pt_entry = parser.entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to asx"<<std::endl; } } else if(uname=="ENTRYREF") { pt_entry = parser.entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to asx"<<std::endl; } } else if(uname=="REPEAT") { pt_entry = parser.repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; - else play_tree_append_entry(list,pt_entry); + else list->append_entry(pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to asx"<<std::endl; } } else mpxp_dbg2<<"Ignoring element "<<element.name()<<std::endl; @@ -524,10 +526,11 @@ delete &parser; if(!list) { - play_tree_free(asx,1); + asx->free(1); + delete asx; return NULL; } - play_tree_set_child(asx,list); + asx->set_child(list); return asx; } } // namespace mpxp Modified: mplayerxp/libplaytree/asxparser.h =================================================================== --- mplayerxp/libplaytree/asxparser.h 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/asxparser.h 2012-12-27 16:37:25 UTC (rev 608) @@ -51,7 +51,7 @@ ASX_Parser(); virtual ~ASX_Parser(); - static play_tree_t* build_tree(libinput_t& libinput,const char* buffer, int ref); + static PlayTree* build_tree(libinput_t& libinput,const char* buffer, int ref); virtual int parse_attribs(const char* buffer,ASX_Attrib& _attribs) const; /* @@ -60,13 +60,13 @@ virtual int get_element(const char** _buffer,ASX_Element& _attribs); int get_line() const { return line; } private: - play_tree_t* repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs); + PlayTree* repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs); void warning_attrib_required(const char *elem, const char *attr) const; void warning_body_parse_error(const char *elem) const; - void param(ASX_Attrib& attribs, play_tree_t* pt) const; - void ref(ASX_Attrib& attribs, play_tree_t* pt) const; - play_tree_t* entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const; - play_tree_t* entry(const char* buffer,ASX_Attrib& _attribs); + void param(ASX_Attrib& attribs, PlayTree* pt) const; + void ref(ASX_Attrib& attribs, PlayTree* pt) const; + PlayTree* entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const; + PlayTree* entry(const char* buffer,ASX_Attrib& _attribs); int line; // Curent line ASX_LineSave_t* ret_stack; Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -13,168 +13,133 @@ #include "playtree.h" #include "playtree_msg.h" -static int -play_tree_is_valid(play_tree_t* pt); +namespace mpxp { -play_tree_t* -play_tree_new(void) { - play_tree_t* r = (play_tree_t*)mp_calloc(1,sizeof(play_tree_t)); - if(r == NULL) - mpxp_err<<"Can't allocate memory"<<std::endl; - r->entry_type = PLAY_TREE_ENTRY_NODE; - return r; -} +PlayTree::PlayTree() + :entry_type(PLAY_TREE_ENTRY_NODE) {} +PlayTree::~PlayTree() {} -void -play_tree_free(play_tree_t* pt, int childs) { - play_tree_t* iter; +void PlayTree::free(int childs) { + PlayTree* iter; - if(childs) { - for(iter = pt->child; iter != NULL; ) { - play_tree_t* nxt=iter->next; - play_tree_free(iter,1); - iter = nxt; + if(childs) { + for(iter = child; iter != NULL; ) { + PlayTree* nxt=iter->next; + iter->free(1); + delete iter; + iter = nxt; + } + child = NULL; } - pt->child = NULL; - } + remove(0,0); + for(iter = child ; iter != NULL ; iter = iter->next) iter->parent = NULL; +} - play_tree_remove(pt,0,0); +void PlayTree::free_list(int childs) { + PlayTree* iter; - for(iter = pt->child ; iter != NULL ; iter = iter->next) - iter->parent = NULL; - - delete pt; + for(iter = this ; iter->prev != NULL ; iter = iter->prev) /* NOTHING */; + while(iter) { + PlayTree* nxt = iter->next; + iter->free(childs); + delete iter; + iter = nxt; + } } -void -play_tree_free_list(play_tree_t* pt, int childs) { - play_tree_t* iter; +MPXP_Rc PlayTree::is_valid() const { + PlayTree* iter; - for(iter = pt ; iter->prev != NULL ; iter = iter->prev) - /* NOTHING */; - - while(iter) { - play_tree_t* nxt = iter->next; - play_tree_free(iter, childs); - iter = nxt; - } - + if(entry_type != PLAY_TREE_ENTRY_NODE) return MPXP_Ok; + else if (child != NULL) { + for(iter = child ; iter != NULL ; iter = iter->next) { + if(iter->is_valid()) return MPXP_Ok; + } + } + return MPXP_False; } -void -play_tree_append_entry(play_tree_t* pt, play_tree_t* entry) { - play_tree_t* iter; +void PlayTree::append_entry(PlayTree* entry) { + PlayTree* iter; - if(pt == entry) - return; + if(this == entry) return; - for(iter = pt ; iter->next != NULL ; iter = iter->next) - /* NOTHING */; + for(iter = this; iter->next != NULL ; iter = iter->next) /* NOTHING */; - entry->parent = iter->parent; - entry->prev = iter; - entry->next = NULL; - iter->next = entry; + entry->parent = iter->parent; + entry->prev = iter; + entry->next = NULL; + iter->next = entry; } -void -play_tree_prepend_entry(play_tree_t* pt, play_tree_t* entry) { - play_tree_t* iter; +void PlayTree::prepend_entry(PlayTree* entry) { + PlayTree* iter; - for(iter = pt ; iter->prev != NULL; iter = iter->prev) - /* NOTHING */; + for(iter = this ; iter->prev != NULL; iter = iter->prev) /* NOTHING */; - entry->prev = NULL; - entry->next = iter; - entry->parent = iter->parent; + entry->prev = NULL; + entry->next = iter; + entry->parent = iter->parent; - iter->prev = entry; - if(entry->parent) { - entry->parent->child = entry; - } + iter->prev = entry; + if(entry->parent) entry->parent->child = entry; } -void -play_tree_insert_entry(play_tree_t* pt, play_tree_t* entry) { - - entry->parent = pt->parent; - entry->prev = pt; - if(pt->next) { - entry->next = pt->next; - entry->next->prev = entry; - } else - entry->next = NULL; - pt->next = entry; - +void PlayTree::insert_entry(PlayTree* entry) { + entry->parent = parent; + entry->prev = this; + if(next) { + entry->next = next; + entry->next->prev = entry; + } else entry->next = NULL; + next = entry; } -void -play_tree_remove(play_tree_t* pt, int free_it,int with_childs) { - - // Middle of list - if(pt->prev && pt->next) { - pt->prev->next = pt->next; - pt->next->prev = pt->prev; - } // End of list - else if(pt->prev) { - pt->prev->next = NULL; - } // Begining of list - else if(pt->next) { - pt->next->prev = NULL; - if(pt->parent) { - pt->parent->child = pt->next; +void PlayTree::remove(int free_it,int with_childs) { + // Middle of list + if(prev && next) { + prev->next = next; + next->prev = prev; + } // End of list + else if(prev) { + prev->next = NULL; + } // Begining of list + else if(next) { + next->prev = NULL; + if(parent) parent->child = next; + } // The only one + else if(parent) { + parent->child = NULL; } - } // The only one - else if(pt->parent) { - pt->parent->child = NULL; - } - - pt->prev = pt->next = pt->parent = NULL; - if(free_it) - play_tree_free(pt,with_childs); - + prev = next = parent = NULL; + if(free_it) free(with_childs); } -void -play_tree_set_child(play_tree_t* pt, play_tree_t* child) { - play_tree_t* iter; +void PlayTree::set_child(PlayTree* _child) { + PlayTree* iter; - for(iter = pt->child ; iter != NULL ; iter = iter->next) - iter->parent = NULL; - - // Go back to first one - for(iter = child ; iter->prev != NULL ; iter = iter->prev) - /* NOTHING */; - - pt->child = iter; - - for( ; iter != NULL ; iter= iter->next) - iter->parent = pt; - + for(iter = _child ; iter != NULL ; iter = iter->next) iter->parent = NULL; + // Go back to first one + for(iter = _child ; iter->prev != NULL ; iter = iter->prev) /* NOTHING */; + child = iter; + for( ; iter != NULL ; iter= iter->next) iter->parent = this; } -void -play_tree_set_parent(play_tree_t* pt, play_tree_t* parent) { - play_tree_t* iter; +void PlayTree::set_parent(PlayTree* _parent) { + PlayTree* iter; - if(pt->parent) - pt->parent->child = NULL; - - for(iter = pt ; iter != NULL ; iter = iter->next) - iter->parent = parent; - - if(pt->prev) { - for(iter = pt->prev ; iter->prev != NULL ; iter = iter->prev) - iter->parent = parent; - iter->parent = parent; - parent->child = iter; - } else - parent->child = pt; + if(_parent) _parent->child = NULL; + for(iter = this ; iter != NULL ; iter = iter->next) iter->parent = _parent; + if(prev) { + for(iter = prev ; iter->prev != NULL ; iter = iter->prev) iter->parent = _parent; + iter->parent=_parent; + _parent->child=iter; + } else _parent->child = this; } -void play_tree_add_file(play_tree_t* pt,const std::string& file) { - if(pt->entry_type != PLAY_TREE_ENTRY_NODE && - pt->entry_type != PLAY_TREE_ENTRY_FILE) +void PlayTree::add_file(const std::string& file) { + if(entry_type != PLAY_TREE_ENTRY_NODE && + entry_type != PLAY_TREE_ENTRY_FILE) return; size_t pos; @@ -182,131 +147,156 @@ std::transform(lf.begin(),lf.end(),lf.begin(), ::tolower); if(lf.substr(0,6)=="vcd://") { - pt->entry_type = PLAY_TREE_ENTRY_VCD; + entry_type = PLAY_TREE_ENTRY_VCD; pos=6; } else if(lf.substr(0,6)=="dvd://") { - pt->entry_type = PLAY_TREE_ENTRY_DVD; + entry_type = PLAY_TREE_ENTRY_DVD; pos=6; } else if(lf.substr(0,5)=="tv://") { - pt->entry_type = PLAY_TREE_ENTRY_TV; + entry_type = PLAY_TREE_ENTRY_TV; pos=5; } else { - pt->entry_type = PLAY_TREE_ENTRY_FILE; + entry_type = PLAY_TREE_ENTRY_FILE; pos=0; } tail=file.substr(pos); - pt->files.push_back(tail); + files.push_back(tail); } -MPXP_Rc play_tree_remove_file(play_tree_t* pt,const std::string& file) { +MPXP_Rc PlayTree::remove_file(const std::string& file) { int f = -1; - size_t n,sz=pt->files.size(); + size_t n,sz=files.size(); - for(n=0; n<sz; n++) if(file==pt->files[n]) f = n; + for(n=0; n<sz; n++) if(file==files[n]) f = n; if(f < 0) return MPXP_False; // Not found - pt->files.erase(pt->files.begin()+f); + files.erase(files.begin()+f); return MPXP_Ok; } -void play_tree_set_param(play_tree_t* pt,const std::string& name,const std::string& val) { +void PlayTree::set_param(const std::string& name,const std::string& val) { int ni = -1; - size_t n,sz=pt->params.size(); + size_t n,sz=params.size(); std::string lname=name; std::transform(lname.begin(),lname.end(),lname.begin(), ::tolower); - if(!pt->params.empty()) { + if(!params.empty()) { for(n=0; n<sz; n++) { - std::string lparm=pt->params[n].name; + std::string lparm=params[n].name; std::transform(lparm.begin(),lparm.end(),lparm.begin(), ::tolower); if(lname==lparm) ni = n; } } if(ni > 0) { - pt->params[ni].value = val; + params[ni].value = val; return; } play_tree_param_t param; param.name=name; param.value=val; - pt->params.push_back(param); + params.push_back(param); } -MPXP_Rc play_tree_unset_param(play_tree_t* pt,const std::string& name) { +MPXP_Rc PlayTree::unset_param(const std::string& name) { int ni = -1; - size_t n,sz=pt->params.size(); + size_t n,sz=params.size(); std::string lname=name; std::transform(lname.begin(),lname.end(),lname.begin(), ::tolower); for(n=0;n<sz;n++) { - std::string lparm=pt->params[n].name; + std::string lparm=params[n].name; std::transform(lparm.begin(),lparm.end(),lparm.begin(), ::tolower); if(lname==lparm) ni = n; } if(ni < 0) return MPXP_False; - if(n > 1) pt->params.erase(pt->params.begin()+ni); - else pt->params.clear(); + if(n > 1) params.erase(params.begin()+ni); + else params.clear(); return MPXP_Ok; } -void play_tree_set_params_from(play_tree_t* dest,const play_tree_t* src) { - size_t i,sz=src->params.size(); +void PlayTree::set_params_from(const PlayTree& src) { + size_t i,sz=src.params.size(); - if(src->params.empty()) return; + if(src.params.empty()) return; for(i=0;i<sz; i++) - play_tree_set_param(dest,src->params[i].name,src->params[i].value); - if(src->flags & PLAY_TREE_RND) // pass the random flag too - dest->flags |= PLAY_TREE_RND; + set_param(src.params[i].name,src.params[i].value); + if(src.flags & PLAY_TREE_RND) // pass the random flag too + flags |= PLAY_TREE_RND; } // all children if deep < 0 -void play_tree_set_flag(play_tree_t* pt, int flags , int deep) { - play_tree_t* i; +void PlayTree::set_flag(int _flags, int deep) { + PlayTree* i; - pt->flags |= flags; + flags |= _flags; - if(deep && pt->child) { - if(deep > 0) deep--; - for(i = pt->child ; i ; i = i->next) - play_tree_set_flag(i,flags,deep); - } + if(deep && child) { + if(deep > 0) deep--; + for(i = child ; i ; i = i->get_next()) i->set_flag(_flags,deep); + } } -void play_tree_unset_flag(play_tree_t* pt, int flags , int deep) { - play_tree_t* i; +void PlayTree::unset_flag(int _flags, int deep) { + PlayTree* i; - pt->flags &= ~flags; + flags &= ~_flags; - if(deep && pt->child) { - if(deep > 0) deep--; - for(i = pt->child ; i ; i = i->next) - play_tree_unset_flag(i,flags,deep); - } + if(deep && child) { + if(deep > 0) deep--; + for(i = child ; i ; i = i->get_next()) i->unset_flag(_flags,deep); + } } -static play_tree_t* -play_tree_rnd_step(play_tree_t* pt) { +MPXP_Rc PlayTree::cleanup() { + PlayTree* iter, *tmp, *first; + + if( ! is_valid()) { + remove(1,1); + return MPXP_False; + } + + first = child; + + for(iter = child ; iter != NULL ; ) { + tmp = iter; + iter = iter->next; + if(! tmp->is_valid()) { + tmp->remove(1,1); + if(tmp == first) first = iter; + } + } + + for(iter = first ; iter != NULL ; ) { + tmp = iter; + iter = iter->next; + tmp->cleanup(); + } + return MPXP_Ok; +} + +static PlayTree* +play_tree_rnd_step(PlayTree* pt) { int count = 0; int r,rnd; time_t tim; - play_tree_t *i,*head; + PlayTree *i,*head; // Count how many mp_free choice we have - for(i = pt ; i->prev ; i = i->prev) - if(!(i->flags & PLAY_TREE_RND_PLAYED)) count++; + for(i = pt ; i->get_prev() ; i = i->get_prev()) + if(!(i->get_flags() & PLAY_TREE_RND_PLAYED)) count++; head = i; - if(!(i->flags & PLAY_TREE_RND_PLAYED)) count++; - if(pt->next) - for(i = pt->next ; i ; i = i->next) - if(!(i->flags & PLAY_TREE_RND_PLAYED)) count++; + if(!(i->get_flags() & PLAY_TREE_RND_PLAYED)) count++; + if(pt->get_next()) + for(i = pt->get_next() ; i ; i = i->get_next()) + if(!(i->get_flags() & PLAY_TREE_RND_PLAYED)) count++; if(!count) return NULL; /* make it time depended */ @@ -316,24 +306,23 @@ r = (int)(((float)(count) * rnd) / (RAND_MAX + 1.0)); if(r) rnd = r = count - (tim%r); - for(i = head ; i ; i=i->next) { - if(!(i->flags & PLAY_TREE_RND_PLAYED)) r--; + for(i = head ; i ; i=i->get_next()) { + if(!(i->get_flags() & PLAY_TREE_RND_PLAYED)) r--; if(r < 0) return i; } - for(i = head ; i ; i=i->next) { - if(!(i->flags & PLAY_TREE_RND_PLAYED)) return i; + for(i = head ; i ; i=i->get_next()) { + if(!(i->get_flags() & PLAY_TREE_RND_PLAYED)) return i; } mpxp_err<<"Random stepping error r="<<rnd<<std::endl; return NULL; } -namespace mpxp { -_PlayTree_Iter::_PlayTree_Iter(play_tree_t* pt,m_config_t& _config) +_PlayTree_Iter::_PlayTree_Iter(PlayTree* pt,m_config_t& _config) :root(pt), tree(NULL), config(_config) { - if(pt->parent) loop = pt->parent->loop; + if(pt->get_parent()) loop = pt->get_parent()->get_loop(); } _PlayTree_Iter::_PlayTree_Iter(const _PlayTree_Iter& old) @@ -348,7 +337,7 @@ _PlayTree_Iter::~_PlayTree_Iter() {} void _PlayTree_Iter::push_params() { - play_tree_t* pt; + PlayTree* pt; pt = tree; @@ -356,21 +345,21 @@ // while playing m_config_push(config); - if(pt->params.empty()) return; - size_t n,sz=pt->params.size(); + if(pt->get_params().empty()) return; + size_t n,sz=pt->get_params().size(); for(n=0; n<sz; n++) { int e; - if((e = m_config_set_option(config,pt->params[n].name,pt->params[n].value)) < 0) - mpxp_err<<"Error "<<e<<" while setting option '"<<pt->params[n].name<<"' with value '"<<pt->params[n].value<<"'"<<std::endl; + if((e = m_config_set_option(config,pt->get_param(n).name,pt->get_param(n).value)) < 0) + mpxp_err<<"Error "<<e<<" while setting option '"<<pt->get_param(n).name<<"' with value '"<<pt->get_param(n).value<<"'"<<std::endl; } - if(!pt->child) entry_pushed = 1; + if(!pt->get_child()) entry_pushed = 1; return; } int _PlayTree_Iter::step(int d,int with_nodes) { - play_tree_t* pt; + PlayTree* pt; int rnd; if(tree == NULL) { @@ -383,7 +372,7 @@ m_config_pop(config); } - if(tree->parent && (tree->parent->flags & PLAY_TREE_RND)) + if(tree->get_parent() && (tree->get_parent()->get_flags() & PLAY_TREE_RND)) rnd=mode = PLAY_TREE_ITER_RND; else rnd=mode = PLAY_TREE_ITER_NORMAL; @@ -393,30 +382,30 @@ else if( d > 0 ) { int i; pt = tree; - for(i = d ; i > 0 && pt ; i--) pt = pt->next; + for(i = d ; i > 0 && pt ; i--) pt = pt->get_next(); d = i ? i : 1; } else if(d < 0) { int i; pt = tree; - for(i = d ; i < 0 && pt ; i++) pt = pt->prev; + for(i = d ; i < 0 && pt ; i++) pt = pt->get_prev(); d = i ? i : -1; } else pt = tree; if(pt == NULL) { // No next // Must we loop? if (mode == PLAY_TREE_ITER_RND) { - if (root->loop == 0) return PLAY_TREE_ITER_END; - play_tree_unset_flag(root, PLAY_TREE_RND_PLAYED, -1); - if (root->loop > 0) root->loop--; + if (root->get_loop() == 0) return PLAY_TREE_ITER_END; + root->unset_flag(PLAY_TREE_RND_PLAYED, -1); + if (root->get_loop() > 0) root->set_loop(root->get_loop()-1); // try again return step(0, with_nodes); - } else if(tree->parent && tree->parent->loop != 0 && ((d > 0 && loop != 0) || ( d < 0 && (loop < 0 || loop < tree->parent->loop)))) { + } else if(tree->get_parent() && tree->get_parent()->get_loop() != 0 && ((d > 0 && loop != 0) || ( d < 0 && (loop < 0 || loop < tree->get_parent()->get_loop())))) { if(d > 0) { // Go back to the first one - for(pt = tree ; pt->prev != NULL; pt = pt->prev) /* NOTHNG */; + for(pt = tree ; pt->get_prev() != NULL; pt = pt->get_prev()) /* NOTHNG */; if(loop > 0) loop--; } else if( d < 0 ) { // Or the last one - for(pt = tree ; pt->next != NULL; pt = pt->next) /* NOTHNG */; - if(loop >= 0 && loop < tree->parent->loop) loop++; + for(pt = tree ; pt->get_next() != NULL; pt = pt->get_next()) /* NOTHNG */; + if(loop >= 0 && loop < tree->get_parent()->get_loop()) loop++; } tree = pt; return step(0,with_nodes); @@ -425,7 +414,7 @@ return up_step(d,with_nodes); } // Is there any valid child? - if(pt->child && play_tree_is_valid(pt->child)) { + if(pt->get_child() && pt->get_child()->is_valid()) { tree = pt; if(with_nodes) { // Stop on the node return PLAY_TREE_ITER_NODE; @@ -433,7 +422,7 @@ return down_step(d,with_nodes); } // Is it a valid entry? - if(! play_tree_is_valid(pt)) { + if(! pt->is_valid()) { if(d == 0 && rnd==PLAY_TREE_ITER_NORMAL) { // Can this happen ? FF: Yes! mpxp_err<<"What to do now ???? Infinite loop if we continue"<<std::endl; return PLAY_TREE_ITER_ERROR; @@ -443,25 +432,25 @@ tree = pt; - num_files = tree->files.size(); + num_files = tree->get_files().size(); push_params(); entry_pushed = 1; - if(mode == PLAY_TREE_ITER_RND) pt->flags |= PLAY_TREE_RND_PLAYED; + if(mode == PLAY_TREE_ITER_RND) pt->set_flags(pt->get_flags()|PLAY_TREE_RND_PLAYED); return PLAY_TREE_ITER_ENTRY; } int _PlayTree_Iter::up_step(int d,int with_nodes) { file = -1; - if(tree->parent == root->parent) return PLAY_TREE_ITER_END; + if(tree->get_parent() == root->get_parent()) return PLAY_TREE_ITER_END; loop = status_stack.top(); status_stack.pop(); - tree = tree->parent; + tree = tree->get_parent(); // Pop subtree params m_config_pop(config); - if(mode == PLAY_TREE_ITER_RND) tree->flags |= PLAY_TREE_RND_PLAYED; + if(mode == PLAY_TREE_ITER_RND) tree->set_flags(tree->get_flags()|PLAY_TREE_RND_PLAYED); return step(d,with_nodes); } @@ -473,11 +462,11 @@ status_stack.push(loop); // Set new status - loop = tree->loop-1; - if(d >= 0) tree = tree->child; + loop = tree->get_loop()-1; + if(d >= 0) tree = tree->get_child(); else { - play_tree_t* pt; - for(pt = tree->child ; pt->next != NULL ; pt = pt->next) /*NOTING*/; + PlayTree* pt; + for(pt = tree->get_child() ; pt->get_next() != NULL ; pt = pt->get_next()) /*NOTING*/; tree = pt; } return step(0,with_nodes); @@ -486,7 +475,7 @@ std::string _PlayTree_Iter::get_file(int d) { std::string entry; - if(tree->files.empty()) return ""; + if(tree->get_files().empty()) return ""; if(file >= num_files-1 || file < -1) return ""; if(d > 0) { if(file >= num_files - 1) file = 0; @@ -495,9 +484,9 @@ if(file <= 0) file = num_files - 1; else file--; } - entry = tree->files[file]; + entry = tree->get_file(file); - switch(tree->entry_type) { + switch(tree->get_entry_type()) { case PLAY_TREE_ENTRY_DVD : if(entry.length() == 0) entry = "1"; m_config_set_option(config,"dvd",entry); @@ -531,73 +520,6 @@ } // namespace mpxp - -static int -play_tree_is_valid(play_tree_t* pt) { - play_tree_t* iter; - - if(pt->entry_type != PLAY_TREE_ENTRY_NODE) { - return 1; - } - else if (pt->child != NULL) { - for(iter = pt->child ; iter != NULL ; iter = iter->next) { - if(play_tree_is_valid(iter)) - return 1; - } - } - return 0; -} - -play_tree_t* -play_tree_cleanup(play_tree_t* pt) { - play_tree_t* iter, *tmp, *first; - - if( ! play_tree_is_valid(pt)) { - play_tree_remove(pt,1,1); - return NULL; - } - - first = pt->child; - - for(iter = pt->child ; iter != NULL ; ) { - tmp = iter; - iter = iter->next; - if(! play_tree_is_valid(tmp)) { - play_tree_remove(tmp,1,1); - if(tmp == first) first = iter; - } - } - - for(iter = first ; iter != NULL ; ) { - tmp = iter; - iter = iter->next; - play_tree_cleanup(tmp); - } - - return pt; - -} - -// HIGH Level API, by Fabian Franz (mp...@fa...) -// -_PlayTree_Iter* pt_iter_create(play_tree_t** ppt, m_config_t& config) -{ - _PlayTree_Iter* r=NULL; - - *ppt=play_tree_cleanup(*ppt); - - if(*ppt) { - r = new _PlayTree_Iter(*ppt,config); - if (r && r->step(0,0) != PLAY_TREE_ITER_ENTRY) - { - delete r; - r = NULL; - } - } - - return r; -} - void pt_iter_destroy(_PlayTree_Iter** iter) { if (iter && *iter) @@ -627,40 +549,40 @@ return r; } -void pt_iter_insert_entry(_PlayTree_Iter* iter, play_tree_t* entry) +void pt_iter_insert_entry(_PlayTree_Iter* iter, PlayTree* entry) { - play_tree_t *pt = iter->get_tree(); + PlayTree *pt = iter->get_tree(); - play_tree_insert_entry(pt, entry); - play_tree_set_params_from(entry,pt); + pt->insert_entry(entry); + entry->set_params_from(*pt); } -void pt_iter_replace_entry(_PlayTree_Iter* iter, play_tree_t* entry) +void pt_iter_replace_entry(_PlayTree_Iter* iter, PlayTree* entry) { - play_tree_t *pt = iter->get_tree(); + PlayTree *pt = iter->get_tree(); pt_iter_insert_entry(iter, entry); - play_tree_remove(pt, 1, 1); + pt->remove(1, 1); iter->set_tree(entry); } //Add a new file as a new entry -void pt_add_file(play_tree_t** ppt,const std::string& filename) +void pt_add_file(PlayTree** ppt,const std::string& filename) { - play_tree_t *pt = *ppt, *entry = play_tree_new(); + PlayTree *pt = *ppt, *entry = new(zeromem) PlayTree; - play_tree_add_file(entry, filename); + entry->add_file(filename); if (pt) - play_tree_append_entry(pt, entry); + pt->append_entry(entry); else { pt=entry; *ppt=pt; } - play_tree_set_params_from(entry,pt); + entry->set_params_from(*pt); } -void pt_add_gui_file(play_tree_t** ppt,const std::string& path,const std::string& file) +void pt_add_gui_file(PlayTree** ppt,const std::string& path,const std::string& file) { std::string wholename; Modified: mplayerxp/libplaytree/playtree.h =================================================================== --- mplayerxp/libplaytree/playtree.h 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/playtree.h 2012-12-27 16:37:25 UTC (rev 608) @@ -44,29 +44,75 @@ /// \defgroup Playtree ///@{ -struct play_tree_param_t { - std::string name; - std::string value; -}; +namespace mpxp { + struct play_tree_param_t { + std::string name; + std::string value; + }; -struct play_tree_t { - play_tree_t* parent; - play_tree_t* child; - play_tree_t* next; - play_tree_t* prev; + class PlayTree : public Opaque { + public: + PlayTree(); + virtual ~PlayTree(); - //play_tree_info_t info; - std::vector<play_tree_param_t> params; - int loop; - std::vector<std::string> files; - int entry_type; - int flags; -}; + static PlayTree* parse_playtree(libinput_t& libinput,Stream* stream); + static PlayTree* parse_playlist_file(libinput_t&libinput,const std::string& file); + virtual MPXP_Rc cleanup(); + // If childs is true mp_free also the childs + virtual void free(int childs); + virtual void free_list(int childs); -namespace mpxp { + virtual void set_child(PlayTree* child); + virtual void set_parent(PlayTree* parent); + // Add at end + virtual void append_entry(PlayTree* entry); + // And on begining + virtual void prepend_entry(PlayTree* entry); + // Insert after + virtual void insert_entry(PlayTree* entry); + // Detach from the tree + virtual void remove(int free_it,int with_childs); + virtual void add_file(const std::string& file); + virtual MPXP_Rc remove_file(const std::string& file); + virtual void set_param(const std::string& name,const std::string& val); + virtual MPXP_Rc unset_param(const std::string& name); + /// Copy the config parameters from one item to another. + virtual void set_params_from(const PlayTree& src); + virtual void set_flag(int flags, int deep); + virtual void unset_flag(int flags, int deep); + virtual MPXP_Rc is_valid() const; + + PlayTree* get_parent() const { return parent; } + PlayTree* get_child() const { return child; } + PlayTree* get_prev() const { return prev; } + PlayTree* get_next() const { return next; } + void set_prev(PlayTree* p) { prev=p; } + void set_next(PlayTree* p) { next=p; } + const std::string& get_file(size_t idx) const { return files[idx]; } + const std::vector<std::string>& get_files() const { return files; } + const play_tree_param_t& get_param(size_t idx) const { return params[idx]; } + const std::vector<play_tree_param_t>&get_params() const { return params; } + int get_entry_type() const { return entry_type; } + int get_loop() const { return loop; } + void set_loop(int l) { loop=l; } + int get_flags() const { return flags; } + void set_flags(int f) { flags=f; } + private: + PlayTree* parent; + PlayTree* child; + PlayTree* next; + PlayTree* prev; + + std::vector<play_tree_param_t> params; + int loop; + std::vector<std::string> files; + int entry_type; + int flags; + }; + struct _PlayTree_Iter : public Opaque { public: - _PlayTree_Iter(play_tree_t* parent,m_config_t& config); + _PlayTree_Iter(PlayTree* parent,m_config_t& config); _PlayTree_Iter(const _PlayTree_Iter& old); virtual ~_PlayTree_Iter(); @@ -79,16 +125,16 @@ virtual int down_step(int d,int with_nodes); virtual std::string get_file(int d); - play_tree_t* get_root() const { return root; } - play_tree_t* get_tree() const { return tree; } - void set_tree(play_tree_t* _tree) { tree=_tree; } + PlayTree* get_root() const { return root; } + PlayTree* get_tree() const { return tree; } + void set_tree(PlayTree* _tree) { tree=_tree; } void reset_tree() { tree=root; } int get_file() const { return file; } int get_num_files() const { return num_files; } private: void push_params(); - play_tree_t* root; // Iter root tree - play_tree_t* tree; // Current tree + PlayTree* root; // Iter root tree + PlayTree* tree; // Current tree m_config_t& config; int loop; // Looping status int file; @@ -99,72 +145,13 @@ std::stack<int> status_stack; }; } // namespace mpxp -play_tree_t* parse_playtree(libinput_t& libinput,Stream* stream); -play_tree_t* play_tree_cleanup(play_tree_t* pt); - -play_tree_t* parse_playlist_file(libinput_t&libinput,const std::string& file); - -play_tree_t* play_tree_new(void); - -// If childs is true mp_free also the childs -void -play_tree_free(play_tree_t* pt, int childs); - - -void -play_tree_free_list(play_tree_t* pt, int childs); - - -// Childs -void -play_tree_set_child(play_tree_t* pt, play_tree_t* child); -// Or parent -void -play_tree_set_parent(play_tree_t* pt, play_tree_t* parent); - - -// Add at end -void -play_tree_append_entry(play_tree_t* pt, play_tree_t* entry); - -// And on begining -void -play_tree_prepend_entry(play_tree_t* pt, play_tree_t* entry); - -// Insert after -void -play_tree_insert_entry(play_tree_t* pt, play_tree_t* entry); - -// Detach from the tree -void -play_tree_remove(play_tree_t* pt, int free_it,int with_childs); - - -void -play_tree_add_file(play_tree_t* pt,const std::string& file); - -MPXP_Rc play_tree_remove_file(play_tree_t* pt,const std::string& file); - -// Val can be NULL -void -play_tree_set_param(play_tree_t* pt,const std::string& name,const std::string& val); - -MPXP_Rc play_tree_unset_param(play_tree_t* pt,const std::string& name); -/// Copy the config parameters from one item to another. -void -play_tree_set_params_from(play_tree_t* dest,const play_tree_t* src); - - /// \defgroup PtAPI Playtree highlevel API /// \ingroup Playtree /// Highlevel API with pt-suffix to different from low-level API /// by Fabian Franz (mp...@fa...). ///@{ -// Cleans up pt and creates a new iter. -_PlayTree_Iter* pt_iter_create(play_tree_t** pt, struct m_config* config); - /// Frees the iter. void pt_iter_destroy(_PlayTree_Iter** iter); @@ -176,21 +163,21 @@ static inline std::string pt_iter_get_prev_file(_PlayTree_Iter* iter) { return pt_iter_get_file(iter, -1); } /// Inserts entry into the playtree. -void pt_iter_insert_entry(_PlayTree_Iter* iter, play_tree_t* entry); +void pt_iter_insert_entry(_PlayTree_Iter* iter, PlayTree* entry); /// Replaces current entry in playtree with entry by doing insert and remove. -void pt_iter_replace_entry(_PlayTree_Iter* iter, play_tree_t* entry); +void pt_iter_replace_entry(_PlayTree_Iter* iter, PlayTree* entry); /// Adds a new file to the playtree, if it is not valid it is created. -void pt_add_file(play_tree_t** ppt,const std::string& filename); +void pt_add_file(PlayTree** ppt,const std::string& filename); /// \brief Performs a convert to playtree-syntax, by concat path/file /// and performs pt_add_file -void pt_add_gui_file(play_tree_t** ppt,const std::string& path,const std::string& file); +void pt_add_gui_file(PlayTree** ppt,const std::string& path,const std::string& file); // Two macros to use only the iter and not the other things. -static inline void pt_iter_add_file(_PlayTree_Iter* iter, const std::string& filename) { play_tree_t* tree=iter->get_tree(); pt_add_file(&tree, filename); } -static inline void pt_iter_add_gui_file(_PlayTree_Iter* iter,const std::string& path,const std::string& name) { play_tree_t* tree=iter->get_tree(); pt_add_gui_file(&tree, path, name); } +static inline void pt_iter_add_file(_PlayTree_Iter* iter, const std::string& filename) { PlayTree* tree=iter->get_tree(); pt_add_file(&tree, filename); } +static inline void pt_iter_add_gui_file(_PlayTree_Iter* iter,const std::string& path,const std::string& name) { PlayTree* tree=iter->get_tree(); pt_add_gui_file(&tree, path, name); } /// Resets the iter and goes back to head. void pt_iter_goto_head(_PlayTree_Iter* iter); Modified: mplayerxp/libplaytree/playtreeparser.cpp =================================================================== --- mplayerxp/libplaytree/playtreeparser.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/playtreeparser.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -116,7 +116,7 @@ } -static play_tree_t* parse_asx(libinput_t& libinput,play_tree_parser_t* p) { +static PlayTree* parse_asx(libinput_t& libinput,play_tree_parser_t* p) { int comments = 0,get_line = 1; char* line = NULL; @@ -224,12 +224,12 @@ } -play_tree_t* +PlayTree* parse_pls(play_tree_parser_t* p) { char *line,*v; pls_entry_t* entries = NULL; int n_entries = 0,max_entry=0,num; - play_tree_t *list = NULL, *entry = NULL; + PlayTree *list = NULL, *entry = NULL; mpxp_v<<"Trying winamp playlist..."<<std::endl; line = play_tree_parser_get_line(p); @@ -286,11 +286,11 @@ mpxp_err<<"Entry "<<(num+1)<<" don't have a file !!!!"<<std::endl; else { mpxp_dbg2<<"Adding entry "<<entries[num].file<<std::endl; - entry = play_tree_new(); - play_tree_add_file(entry,entries[num].file); + entry = new(zeromem) PlayTree; + entry->add_file(entries[num].file); delete entries[num].file; if(list) - play_tree_append_entry(list,entry); + list->append_entry(entry); else list = entry; } @@ -306,15 +306,15 @@ delete entries; - entry = play_tree_new(); - play_tree_set_child(entry,list); + entry = new(zeromem) PlayTree; + entry->set_child(list); return entry; } -play_tree_t* +PlayTree* parse_textplain(play_tree_parser_t* p) { char* line; - play_tree_t *list = NULL, *entry = NULL; + PlayTree *list = NULL, *entry = NULL; mpxp_v<<"Trying plaintext..."<<std::endl; play_tree_parser_stop_keeping(p); @@ -323,23 +323,24 @@ strstrip(line); if(line[0] == '\0') continue; - entry = play_tree_new(); - play_tree_add_file(entry,line); + entry = new(zeromem) PlayTree; + entry->add_file(line); if(!list) list = entry; else - play_tree_append_entry(list,entry); + list->append_entry(entry); } if(!list) return NULL; - entry = play_tree_new(); - play_tree_set_child(entry,list); + entry = new(zeromem) PlayTree; + entry->set_child(list); return entry; } -play_tree_t* parse_playtree(libinput_t&libinput,Stream* stream) { +namespace mpxp { +PlayTree* PlayTree::parse_playtree(libinput_t&libinput,Stream* stream) { play_tree_parser_t* p; - play_tree_t* ret; + PlayTree* ret; p = play_tree_parser_new(stream,0); if(!p) @@ -351,9 +352,9 @@ return ret; } -play_tree_t* parse_playlist_file(libinput_t&libinput,const std::string& file) { +PlayTree* PlayTree::parse_playlist_file(libinput_t&libinput,const std::string& file) { Stream *stream; - play_tree_t* ret; + PlayTree* ret; int ff; mpxp_v<<"Parsing playlist file "<<file<<"..."<<std::endl; @@ -361,12 +362,12 @@ stream = new(zeromem) Stream; stream->open(libinput,file,&ff); stream->type(Stream::Type_Text); - ret = parse_playtree(libinput,stream); + ret = PlayTree::parse_playtree(libinput,stream); delete stream; return ret; - } +} // namespace mpxp play_tree_parser_t* play_tree_parser_new(Stream* stream,int deep) { play_tree_parser_t* p; @@ -390,9 +391,9 @@ delete p; } -play_tree_t* +PlayTree* play_tree_parser_get_play_tree(libinput_t& libinput,play_tree_parser_t* p) { - play_tree_t* tree = NULL; + PlayTree* tree = NULL; while(play_tree_parser_get_line(p) != NULL) { play_tree_parser_reset(p); @@ -415,10 +416,7 @@ mpxp_v<<"Playlist succefully parsed"<<std::endl; else mpxp_err<<"Error while parsing playlist"<<std::endl; - if(tree) - tree = play_tree_cleanup(tree); + if(tree->cleanup()!=MPXP_Ok) mpxp_warn<<"Warning empty playlist"<<std::endl; - if(!tree) mpxp_warn<<"Warning empty playlist"<<std::endl; - return tree; } Modified: mplayerxp/libplaytree/playtreeparser.h =================================================================== --- mplayerxp/libplaytree/playtreeparser.h 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/libplaytree/playtreeparser.h 2012-12-27 16:37:25 UTC (rev 608) @@ -14,6 +14,6 @@ void play_tree_parser_free(play_tree_parser_t* p); -play_tree_t* play_tree_parser_get_play_tree(libinput_t&libinput,play_tree_parser_t* p); +PlayTree* play_tree_parser_get_play_tree(libinput_t&libinput,play_tree_parser_t* p); #endif Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/mplayerxp.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -154,7 +154,7 @@ MPXP_Rc ao_inited; int osd_show_framedrop; int osd_function; - play_tree_t* playtree; + PlayTree* playtree; // for multifile support: _PlayTree_Iter* playtree_iter; private: @@ -935,11 +935,11 @@ int MPXPSystem::handle_playlist(const std::string& filename) const { Stream* stream=static_cast<Stream*>(_demuxer->stream); int eof=0; - play_tree_t* entry; + PlayTree* entry; // Handle playlist MP_UNIT("handle_playlist"); mpxp_v<<"Parsing playlist "<<filename<<"..."<<std::endl; - entry = parse_playtree(_libinput,stream); + entry = PlayTree::parse_playtree(_libinput,stream); if(!entry) { entry = playtree_iter->get_tree(); if(playtree_iter->step(1,0) != PLAY_TREE_ITER_ENTRY) { @@ -952,17 +952,17 @@ return eof; } } - play_tree_remove(entry,1,1); + entry->remove(1,1); eof = PT_NEXT_SRC; return eof; } - play_tree_insert_entry(playtree_iter->get_tree(),entry); + playtree_iter->get_tree()->insert_entry(entry); entry = playtree_iter->get_tree(); if(playtree_iter->step(1,0) != PLAY_TREE_ITER_ENTRY) { eof = PT_NEXT_ENTRY; return eof; } - play_tree_remove(entry,1,1); + entry->remove(1,1); eof = PT_NEXT_SRC; return eof; } @@ -1681,7 +1681,7 @@ MPXPSystem& MPXPSys=*mpxp_context().engine().MPXPSys; MPXPSys.init_keyboard_fifo(); - MPXPSys.playtree = play_tree_new(); + MPXPSys.playtree = new(zeromem) PlayTree; m_config_t& m_config=m_config_new(MPXPSys.playtree,MPXPSys.libinput()); mpxp_context().mconfig = &m_config; @@ -1708,10 +1708,10 @@ #if defined( ARCH_X86 ) || defined(ARCH_X86_64) get_mmx_optimizations(); #endif - if(mp_conf.shuffle_playback) MPXPSys.playtree->flags|=PLAY_TREE_RND; - else MPXPSys.playtree->flags&=~PLAY_TREE_RND; + if(mp_conf.shuffle_playback) MPXPSys.playtree->set_flags(MPXPSys.playtree->get_flags()|PLAY_TREE_RND); + else MPXPSys.playtree->set_flags(MPXPSys.playtree->get_flags()&~PLAY_TREE_RND); - MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); +// MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); if(MPXPSys.playtree) { MPXPSys.playtree_iter = new _PlayTree_Iter(MPXPSys.playtree,m_config); if(MPXPSys.playtree_iter) { Modified: mplayerxp/postproc/libmenu/menu_pt.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_pt.cpp 2012-12-27 14:05:33 UTC (rev 607) +++ mplayerxp/postproc/libmenu/menu_pt.cpp 2012-12-27 16:37:25 UTC (rev 608) @@ -27,7 +27,7 @@ struct list_entry_s { struct list_entry p; - play_tree_t* pt; + PlayTree* pt; }; @@ -57,24 +57,24 @@ case MENU_CMD_OK: { int d = 1; char str[15]; - play_tree_t* i; + PlayTree* i; mp_cmd_t* c; _PlayTree_Iter* _playtree_iter =mpxp_get_playtree_iter(); if(_playtree_iter->get_tree() == mpriv->p.current->pt) break; - if(_playtree_iter->get_tree()->parent && mpriv->p.current->pt == _playtree_iter->get_tree()->parent) + if(_playtree_iter->get_tree()->get_parent() && mpriv->p.current->pt == _playtree_iter->get_tree()->get_parent()) snprintf(str,15,"pt_up_step 1"); else { - for(i = _playtree_iter->get_tree()->next; i != NULL ; i = i->next) { + for(i = _playtree_iter->get_tree()->get_next(); i != NULL ; i = i->get_next()) { if(i == mpriv->p.current->pt) break; d++; } if(i == NULL) { d = -1; - for(i = _playtree_iter->get_tree()->prev; i != NULL ; i = i->prev) { + for(i = _playtree_iter->get_tree()->get_prev(); i != NULL ; i = i->get_prev()) { if(i == mpriv->p.current->pt) break; d--; @@ -106,7 +106,7 @@ } static int op(menu_t* menu,const char* args) { - play_tree_t* i; + PlayTree* i; list_entry_t* e; _PlayTree_Iter* _playtree_iter = mpxp_get_playtree_iter(); @@ -121,19 +121,19 @@ mpriv->p.title = mpriv->title; - if(_playtree_iter->get_tree()->parent != _playtree_iter->get_root()) { + if(_playtree_iter->get_tree()->get_parent() != _playtree_iter->get_root()) { e = new(zeromem) list_entry_t; e->p.txt = ".."; - e->pt = _playtree_iter->get_tree()->parent; + e->pt = _playtree_iter->get_tree()->get_parent(); menu_list_add_entry(menu,e); } - for(i = _playtree_iter->get_tree() ; i->prev != NULL ; i = i->prev) + for(i = _playtree_iter->get_tree() ; i->get_prev() != NULL ; i = i->get_prev()) /* NOP */; - for( ; i != NULL ; i = i->next ) { + for( ; i != NULL ; i = i->get_next() ) { e = new(zeromem) list_entry_t; - if(!i->files.empty()) - e->p.txt = mp_basename(i->files[0]); + if(!i->get_files().empty()) + e->p.txt = mp_basename(i->get_file(0)); else e->p.txt = "Group ..."; e->pt = i; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-27 14:05:41
|
Revision: 607 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=607&view=rev Author: nickols_k Date: 2012-12-27 14:05:33 +0000 (Thu, 27 Dec 2012) Log Message: ----------- segfaults--: when i perform stepping or breakpoint into functions with using of gdb then i'm able to catch segfaults and fix meeted logic errors. Well, it seems that context substitution doesn't exist when gdb does stepping or breakpoint Modified Paths: -------------- mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/mplayerxp.cpp mplayerxp/xmpcore/xmp_context.cpp mplayerxp/xmpcore/xmp_context.h Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 09:50:31 UTC (rev 606) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 14:05:33 UTC (rev 607) @@ -213,7 +213,6 @@ for(i=0;i<config->dynasize;i++) delete config->dynamics[i]; delete config->dynamics; config->dynasize=0; - delete config->opt_list; delete config->config_stack; delete config; } @@ -258,7 +257,7 @@ static int cfg_inc_int(int value){ return ++value; } -static int config_read_option(m_config_t& config,const config_t** conf_list,const std::string& opt,const std::string& param) +static int config_read_option(m_config_t& config,const std::vector<const config_t*>& conf_list,const std::string& opt,const std::string& param) { int i=0,nconf = 0; long tmp_int; @@ -430,7 +429,7 @@ break; case CONF_TYPE_INC: *((int *) conf[i].p) = cfg_inc_int(*((int *) conf[i].p)); - ret = 1; + ret = 0; break; case CONF_TYPE_INCLUDE: if (param.empty()) @@ -468,11 +467,11 @@ goto out; } -static const config_t* m_config_find_option(const config_t**list,const std::string& name); +static const config_t* m_config_find_option(const std::vector<const config_t*>& list,const std::string& name); int m_config_set_option(m_config_t& config,const std::string& _opt,const std::string& param) { size_t e; - const config_t**clist=config.opt_list; + std::vector<const config_t*> clist=config.opt_list; std::string opt=_opt; std::string s; mpxp_dbg2<<"Setting option "<<opt<<"="<<param<<std::endl; @@ -482,23 +481,22 @@ if(e!=std::string::npos) { int flg,ret; const config_t *subconf=NULL; - const config_t* olist[] = { NULL, NULL }; mpxp_dbg2<<"Parsing "<<opt<<" as subconfig"<<std::endl; do { if((e = opt.find('.'))==std::string::npos) break; s=opt.substr(0,e); mpxp_dbg2<<"Treat "<<s<<" as subconfig name"<<std::endl; - subconf = m_config_find_option(clist?clist:olist,s); - clist=NULL; + subconf = m_config_find_option(clist,s); + clist.clear(); if(!subconf) return ERR_NO_SUBCONF; if(subconf->type!=CONF_TYPE_SUBCONFIG) return ERR_NO_SUBCONF; - olist[0] = reinterpret_cast<const config_t*>(subconf->p); + clist.push_back(reinterpret_cast<const config_t*>(subconf->p)); opt = opt.substr(e+1); mpxp_dbg2<<"switching next subconf="<<subconf->name<<std::endl; }while(1); flg=config.flags; config.flags|=CONFIG_GLOBAL; - ret=config_read_option(config,olist,opt,param); + ret=config_read_option(config,clist,opt,param); config.flags=flg; return ret; } @@ -506,13 +504,15 @@ e = opt.find(':'); if(e!=std::string::npos && e<(opt.length()-1)) { int ret; - const config_t* opt_list[] = { NULL, NULL }; + const config_t* m_opt; + std::vector<const config_t*> opt_list; s=opt.substr(0,e); - opt_list[0] = (const config_t*)m_config_get_option_ptr(config,s); - if(!opt_list[0]) { + m_opt=(const config_t*)m_config_get_option_ptr(config,s); + if(!m_opt) { mpxp_err<<"m_config_set_option "<<opt<<"="<<param<<" : no "<<s<<" subconfig"<<std::endl; return ERR_NOT_AN_OPTION; } + opt_list.push_back(m_opt); s=opt.substr(e+1); ret = config_read_option(config,opt_list,s,param); return ret; @@ -757,7 +757,7 @@ pos=1; mpxp_dbg2<<"this_option: "<<opt<<std::endl; - parm = argv[i+1]; + parm = ((i+1)<siz)?argv[i+1]:""; item=opt.substr(pos); pos = item.find('='); if(pos!=std::string::npos) { @@ -784,7 +784,7 @@ <<"' while parsing option: '"<<opt<<"'"<<std::endl; goto err_out; default: - if(pos==std::string::npos) i++; + if(tmp) i++; break; } } else /* filename */ { @@ -813,31 +813,16 @@ } // namespace mpxp int m_config_register_options(m_config_t& config,const config_t *args) { - int list_len = 0; - const config_t** conf_list = config.opt_list; + std::vector<const config_t*>& conf_list = config.opt_list; + conf_list.push_back(args); - if(conf_list) { - for ( ; conf_list[list_len] != NULL; list_len++) - /* NOTHING */; - } - - conf_list = (const config_t**)mp_realloc(conf_list,sizeof(struct conf*)*(list_len+2)); - if(conf_list == NULL) { - mpxp_err<<"Can't allocate memory"<<std::endl; - return 0; - } - conf_list[list_len] = args; - conf_list[list_len+1] = NULL; - - config.opt_list = conf_list; - return 1; } -static const config_t* m_config_find_option(const config_t **list,const std::string& name) { +static const config_t* m_config_find_option(const std::vector<const config_t*>& list,const std::string& name) { unsigned i,j; const config_t *conf; - if(list) { + if(!list.empty()) { std::string ln=name; std::transform(ln.begin(),ln.end(),ln.begin(), ::tolower); for(j = 0; list[j] != NULL ; j++) { @@ -854,18 +839,18 @@ const config_t* m_config_get_option(const m_config_t& config,const std::string& arg) { size_t e; - const config_t **conf_list; - const config_t* cl[] = { NULL, NULL }; e = arg.find(':'); - if(e!=std::string::npos) { + std::vector<const config_t*> cl; + const config_t* opt; std::string s; s=arg.substr(0,e); - cl[0] = m_config_get_option(config,s); - conf_list = cl; - } else conf_list = config.opt_list; - return m_config_find_option(conf_list,arg); + opt = m_config_get_option(config,s); + cl.push_back(opt); + return m_config_find_option(cl,arg); + } + return m_config_find_option(config.opt_list,arg); } any_t* m_config_get_option_ptr(const m_config_t& config,const std::string& arg) { Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-27 09:50:31 UTC (rev 606) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-27 14:05:33 UTC (rev 607) @@ -56,7 +56,7 @@ m_config_t(libinput_t& _libinput):libinput(_libinput) {} ~m_config_t() {} - const config_t** opt_list; + std::vector<const config_t*> opt_list; config_save_t** config_stack; any_t**dynamics; unsigned dynasize; Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-27 09:50:31 UTC (rev 606) +++ mplayerxp/mplayerxp.cpp 2012-12-27 14:05:33 UTC (rev 607) @@ -1685,7 +1685,7 @@ m_config_t& m_config=m_config_new(MPXPSys.playtree,MPXPSys.libinput()); mpxp_context().mconfig = &m_config; - m_config_register_options(m_config,mplayer_opts); + m_config_register_options(m_config,mplayerxp_opts); // TODO : add something to let modules register their options mp_register_options(m_config); parse_cfgfiles(envm,m_config); Modified: mplayerxp/xmpcore/xmp_context.cpp =================================================================== --- mplayerxp/xmpcore/xmp_context.cpp 2012-12-27 09:50:31 UTC (rev 606) +++ mplayerxp/xmpcore/xmp_context.cpp 2012-12-27 14:05:33 UTC (rev 607) @@ -232,7 +232,7 @@ {NULL, NULL, 0, 0, 0, 0, NULL}, }; -static const config_t mplayer_options[]={ +static const config_t mplayerxp_options[]={ /* name, pointer, type, flags, min, max, help */ {"include", NULL, CONF_TYPE_INCLUDE, CONF_NOSAVE, 0, 0, ""}, /* this don't need anymore to be the first!!! */ @@ -269,7 +269,7 @@ // ------------------------- codec/pp options -------------------- {NULL, NULL, 0, 0, 0, 0, NULL} }; -const config_t* mplayer_opts=mplayer_options; +const config_t* mplayerxp_opts=mplayerxp_options; } // namespace mpxp extern void libmpcodecs_ad_register_options(m_config_t& cfg); Modified: mplayerxp/xmpcore/xmp_context.h =================================================================== --- mplayerxp/xmpcore/xmp_context.h 2012-12-27 09:50:31 UTC (rev 606) +++ mplayerxp/xmpcore/xmp_context.h 2012-12-27 14:05:33 UTC (rev 607) @@ -3,7 +3,7 @@ struct config_t; namespace mpxp { - extern const config_t* mplayer_opts; + extern const config_t* mplayerxp_opts; } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-27 09:50:39
|
Revision: 606 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=606&view=rev Author: nickols_k Date: 2012-12-27 09:50:31 +0000 (Thu, 27 Dec 2012) Log Message: ----------- use std::map as environment source. Note about illegal patch: i cannot find records like: 'get_path' in output of mplayerxp. It seems that malefactor(s) hacked namespace mpxp {}. Well, i'll think about renameing this namespace on configure stage. Most probably illegal-patch contains own version of this function or malefactor(s) already have hacked new mpxp_ostream system. Gdb shows that illegal-patch still continue substitutions of mpxp::mpxp_parse_command_line and _PlayTree_Iter::get_file(int) methods. I have doubts that malefactor(s) in addition substitute every #define within of this project. Btw, with new changes illegal-patch decreases verbosity level upto 1: $gdb --args ./ffmpeg -ao alsa:hw:1 -vo x11 M/l.avi -vf menu=main -v -v -v -v GNU gdb (GDB) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/ffmpeg...done. (gdb) break mplayerxp.cpp:1693 Breakpoint 1 at 0x455bad: file mplayerxp.cpp, line 1693. (gdb) run Starting program: /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/ffmpeg -ao alsa:hw:1 -vo x11 M/l.avi -vf menu=main -v -v -v -v warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". *** Antiviral protection was inited ***!!! MPlayerXP svn.598 2002 Nickols_K 2000-2002 Arpad Gereoffy (?\209?\129?\208?\188. DOCS!) Can't open input config file /root/.ffmpeg/input.conf : No such file or directory Can't open input config file /usr/local/share/mplayerxp/input.conf : No such file or directory Falling back on default (hardcoded) input config Opening joystick device:/dev/input/js0 Can't open joystick device: /dev/input/js0 : No such file or directory Can't init input joystick with using: /dev/input/js0 ?\208?\163?\209?\129?\209?\130?\208?\176?\208?\189?\208?\190?\208?\178?\208?\186?\208?\176 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc... mplayer: could not connect to socket mplayer: No such file or directory ?\208?\157?\208?\181?\209?\131?\208?\180?\208?\176?\209?\135?\208?\189?\208?\190?\208?\181 ?\208?\190?\209?\130?\208?\186?\209?\128?\209?\139?\209?\130?\208?\184?\208?\181 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc! ?\208?\146?\209?\139 ?\208?\189?\208?\181 ?\209?\129?\208?\188?\208?\190?\208?\182?\208?\181?\209?\130?\208?\181 ?\208?\184?\209?\129?\208?\191?\208?\190?\208?\187?\209?\140?\208?\183?\208?\190?\208?\178?\208?\176?\209?\130?\209?\140 ?\208?\146?\208?\176?\209?\136?\208?\181 ?\209?\131?\208?\180?\208?\176?\208?\187?\209?\145?\208?\189?\208?\189?\208?\190?\208?\181 ?\209?\131?\208?\191?\209?\128?\208?\176?\208?\178?\208?\187?\208?\181?\208?\189?\208?\184?\208?\181 Breakpoint 1, mpxp::MPlayerXP (argv=..., envm=...) at mplayerxp.cpp:1693 1693 if(mpxp_parse_command_line(m_config, argv,envm)!=MPXP_Ok) (gdb) print mp_conf $1 = {has_video = 1, has_audio = 1, has_dvdsub = 1, msg_filter = 4294967295, test_av = 0, malloc_debug = 0, max_trace = 10, xp = 4, gomp = 0, stream_dump = 0x0, s_cache_size = 0, autoq = 0, verbose = 0, benchmark = 0, playbackspeed_factor = 1, frame_dropping = 0, av_sync_pts = -1, av_force_pts_fix = 0, av_force_pts_fix2 = -1, frame_reorder = 1, force_fps = 0, softsleep = 0, nortc = 0, audio_id = -1, video_id = -1, dvdsub_id = -1, vobsub_id = -1, audio_lang = 0xe2f42a "ru", dvdsub_lang = 0xe2f42a "ru", spudec_ifo = 0x0, force_srate = 0, seek_to_sec = 0x0, seek_to_byte = 0, loop_times = -1, shuffle_playback = 0, play_n_frames = -1, audio_codec = 0x0, video_codec = 0x0, audio_family = 0x0, video_family = 0x0, video_driver = 0x0, audio_driver = 0x0, osd_level = 2, font_name = 0x0, font_factor = 0.75, sub_name = 0x0, sub_fps = 0, sub_auto = 1, vobsub_name = 0x0, subcc_enabled = 0, npp_options = 0x0, ao_channels = 2, z_compression = 0, monitor_pixel_aspect = 1, x86 = {simd = -1, mmx = -1, mmx2 = -1, _3dnow = -1, _3dnow2 = -1, sse = -1, sse2 = -1, sse3 = -1, ssse3 = -1, sse41 = -1, sse42 = -1, aes = -1, avx = -1, fma = -1}} (gdb) n 1696 if(!mp_conf.xp) { (gdb) print mp_conf.verbose $2 = 0 (gdb) n 1701 if(mp_conf.test_av) { (gdb) n 1707 xp_num_cpu=get_number_cpu(); (gdb) n 1709 get_mmx_optimizations(); (gdb) n 1707 xp_num_cpu=get_number_cpu(); (gdb) n 1709 get_mmx_optimizations(); (gdb) print mp_conf.verbose $3 = 0 (gdb) n 1711 if(mp_conf.shuffle_playback) MPXPSys.playtree->flags|=PLAY_TREE_RND; (gdb) n 1712 else MPXPSys.playtree->flags&=~PLAY_TREE_RND; (gdb) n 1714 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) n 1715 if(MPXPSys.playtree) { (gdb) print mp_conf.verbose $4 = 0 (gdb) n 1714 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) n 1715 if(MPXPSys.playtree) { (gdb) n 1716 MPXPSys.playtree_iter = new _PlayTree_Iter(MPXPSys.playtree,m_config); (gdb) n 1717 if(MPXPSys.playtree_iter) { (gdb) n 1716 MPXPSys.playtree_iter = new _PlayTree_Iter(MPXPSys.playtree,m_config); (gdb) n 1717 if(MPXPSys.playtree_iter) { (gdb) n 1718 if(MPXPSys.playtree_iter->step(0,0) != PLAY_TREE_ITER_ENTRY) { (gdb) n 1722 filename = MPXPSys.playtree_iter->get_file(1); (gdb) n 1726 mpxp_context().engine().xp_core->num_a_buffs = vo_conf.xp_buffs; (gdb) print mp_conf.verbose $5 = 1 More or less typical output of this project: *** Antiviral protection was inited ***!!! MPlayerXP svn.598 2002 Nickols_K 2000-2002 Arpad Gereoffy (?\209?\129?\208?\188. DOCS!) Can't open input config file /root/.ffmpeg/input.conf : No such file or directory Can't open input config file /usr/local/share/mplayerxp/input.conf : No such file or directory Falling back on default (hardcoded) input config Opening joystick device:/dev/input/js0 Can't open joystick device: /dev/input/js0 : No such file or directory Can't init input joystick with using: /dev/input/js0 ?\208?\163?\209?\129?\209?\130?\208?\176?\208?\189?\208?\190?\208?\178?\208?\186?\208?\176 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc... mplayer: could not connect to socket mplayer: No such file or directory ?\208?\157?\208?\181?\209?\131?\208?\180?\208?\176?\209?\135?\208?\189?\208?\190?\208?\181 ?\208?\190?\209?\130?\208?\186?\209?\128?\209?\139?\209?\130?\208?\184?\208?\181 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc! ?\208?\146?\209?\139 ?\208?\189?\208?\181 ?\209?\129?\208?\188?\208?\190?\208?\182?\208?\181?\209?\130?\208?\181 ?\208?\184?\209?\129?\208?\191?\208?\190?\208?\187?\209?\140?\208?\183?\208?\190?\208?\178?\208?\176?\209?\130?\209?\140 ?\208?\146?\208?\176?\209?\136?\208?\181 ?\209?\131?\208?\180?\208?\176?\208?\187?\209?\145?\208?\189?\208?\189?\208?\190?\208?\181 ?\209?\131?\208?\191?\209?\128?\208?\176?\208?\178?\208?\187?\208?\181?\208?\189?\208?\184?\208?\181 Environment: BROWSER => /usr/bin/www-browser COLORTERM => DBUS_SESSION_BUS_ADDRESS => unix:abstract=/root/tmp/dbus-46t91eE7b8,guid=42beb05839d357dbdb063dfc0000002f DESKTOP_SESSION => 03WindowMaker DISPLAY => :0.0 ENV => /root/.bashrc GCONF_TMPDIR => /tmp GDMSESSION => 03WindowMaker GDM_LANG => ru_RU.UTF8 GDM_XSERVER_LOCATION => local G_FILENAME_ENCODING => @locale HISTCONTROL => ignorespace HISTSIZE => 1000 HOME => /root HOSTNAME => kas-wifi.ap INPUTRC => /etc/inputrc KONSOLE_DCOP => DCOPRef(konsole-7511,konsole) KONSOLE_DCOP_SESSION => DCOPRef(konsole-7511,session-1) LANG => ru_RU.UTF-8 LC_SOURCED => 1 LD_LIBRARY_PATH => /usr/X11/lib:/usr/X11/lib64:/opt/qt4/lib:/usr/X11/lib:/usr/X11/lib64:/opt/qt4/lib LESS => -MM LESSCHARSET => utf-8 LESSKEY => /etc/.less LESSOPEN => |/usr/bin/lesspipe.sh %s LIBGL_DRIVERS_PATH => /usr/lib/dri:/usr/lib64/dri:/usr/X11/lib/dri:/usr/X11/lib64/dri:/usr/X11/lib/dri:/usr/X11/lib64/dri:/usr/X11/lib/dri:/usr/X11/lib64/dri:/usr/X11/lib/dri:/usr/X11/lib64/dri:/usr/X11/lib/dri:/usr/X11/lib64/dri LOGNAME => guru LS_COLORS => no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.lzma=01;31:*.tlz=01;31:*.deb=01;31:*.rpm=01;31:*.cpio=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.iso=01;31:*.jpg=01;35:*.jpeg=01;35:*.JPG=01;35:*.JPEG=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.divx=01;35:*.xvid=01;35:*.asf=01;35:*.wmv=01;35:*.mp4=01;35:*.3gp=01;35:*.flv=01;35:*.ico=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.mp2=00;36:*.mod=00;36:*.xm=00;36:*.s3m=00;36:*.it=00;36:*.wma=00;36:*~=47;30:*.bak=47;30:*.swp=47;30:*.bck=47;30:*.bk=47;30:*.old=47;30:*.tmp=47;30:*.save=47;30:*.rpmsave=47;30:*.rpmnew=47;30: MAIL => /var/spool/mail/guru MC_SID => 11047 MC_TMPDIR => /root/tmp/mc-root MDV_MENU_STYLE => mandriva META_CLASS => powerpack OLDPWD => /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/libmpconf PATH => /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/X11/bin:/opt/qt4/bin:/opt/kde4/bin:/opt/kde3/bin:/opt/qt4//bin:/opt/real/RealPlayer PKG32_CONFIG_PATH => /usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig:/opt/qt4/lib/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig PKG64_CONFIG_PATH => /usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/X11/lib64/pkgconfig:/opt/qt4/lib64/pkgconfig:/opt/kde4/lib/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig PKG_CONFIG_PATH => /usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig:/usr/lib/qt4/lib64/pkgconfig PWD => /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp PYTHONPATH => :/usr/lib/ooo-2.1/program:/usr/lib/ooo-2.1/program:/usr/lib/ooo-2.1/program:/usr/lib/ooo-2.1/program:/usr/lib/ooo-2.1/program PYTHONSTARTUP => /etc/pythonrc.py QT4DOCDIR => /usr/share/doc/qt4/doc QTDIR => /opt/qt4/ QTINC => /opt/qt3/include QTLIB => /opt/qt3/lib SCREENDIR => /home/guru/tmp SECURE_LEVEL => 3 SHELL => /bin/bash SHLVL => 4 SSH_AGENT_PID => 5974 SSH_ASKPASS => /usr/lib64/ssh/ssh-askpass SSH_AUTH_SOCK => /tmp/ssh-tJygbg5939/agent.5939 TERM => xterm TMP => /root/tmp TMPDIR => /root/tmp TZ => Europe/Moscow USER => guru USERNAME => root WINDOWID => 44040324 WINDOWPATH => 7 WMAKER_BIN_NAME => /usr/X11/bin/wmaker WRASTER_COLOR_RESOLUTION0 => 4 XAUTHORITY => /root/.xauthKLw4Xe XCURSOR_DITHER => diffuse XCURSOR_PATH => /usr/X11R6/share:/usr/X11R6/share/icons XCURSOR_SIZE => 48 XCURSOR_THEME => Gold XDG_DATA_DIRS => /usr/local/share/:/usr/share/:/usr/share/gdm/ XDG_SESSION_COOKIE => 4bfa5d308775c9aba49e220048fa837c-1356596574.689001-222484848 XMODIFIERS => @im=none _ => ./ffmpeg CommandLine: '-ao' 'alsa:hw:1' '-vo' 'x11' 'M/l.avi' '-vf' 'menu=main' '-v' '-v' '-v' '-v' font: can't open file: /root/.ffmpeg/font/font.desc font: Reading section: [info] font: Reading section: [files] RAW: /usr/local/share/mplayerxp/font//koi8-r-a.raw 4216 x 30, 256 colors RAW: /usr/local/share/mplayerxp/font//koi8-r-b.raw 4216 x 30, 256 colors font: Reading section: [characters] font: Reading section: [files] RAW: /usr/local/share/mplayerxp/font//osd-mplayer-a.raw 544 x 38, 256 colors RAW: /usr/local/share/mplayerxp/font//osd-mplayer-b.raw 544 x 38, 256 colors font: Reading section: [characters] font: resampling alpha by factor 0.75 (192) DONE! font: resampling alpha by factor 0.75 (192) DONE! Font /usr/local/share/mplayerxp/font/font.desc loaded successfully! (205 chars) At line 61 : value of attribute ptr isn't finished At line 87 : value of attribute ptr isn't finished Menu initialized: /root/.ffmpeg/menu.conf X11 opening display: :0.0 X11_System: color mask: ffffff (R:ff0000 G:ff00 B:ff) X11_System: running 1400x1050 with depth 32 bits/pixel (":0.0" => local display) Disabling DPMS stat: 1 ?\208?\146?\208?\190?\209?\129?\208?\191?\209?\128?\208?\190?\208?\184?\208?\183?\208?\178?\208?\181?\208?\180?\208?\181?\208?\189?\208?\184?\208?\181 M/l.avi Filename for url is now M/l.avi Not an URL! [Stream]: Opening *:// ... False [Demuxer]: Probing RAW audio parser ...:False [Demuxer]: Probing RAW video parser ...:False [Demuxer]: Probing AVI - Audio Video Interleaved parser ...:Ok CHUNK 'avih' len=56 ======= AVI Header ======= us/frame: 40000 (fps=25.000) max bytes/sec: 0 padding: 0 MainAVIHeader.dwFlags: (272) HAS_INDEX IS_INTERLEAVED frames total: 6056 initial: 0 streams: 2 Suggested BufferSize: 0 Size: 720 x 432 CHUNK 'strh' len=56 [Demuxer]: ==> Found video stream: 0 [Demuxer]: ID_VIDEO_ID=0 ======= STREAM Header ======= Type: vids FCC: xvid (64697678) Flags: 0 Priority: 0 Language: 0 InitialFrames: 0 Rate: 25/1 = 25.000 Start: 0 Len: 6056 Suggested BufferSize: 84858 Quality 10000 Sample size: 0 CHUNK 'strf' len=40 found 'bih', 40 bytes of 40 ======= VIDEO Format (chunk size: 40 )====== biSize 40 biWidth 720 biHeight 432 biPlanes 1 biBitCount 12 biCompression 44495658='XVID' biSizeImage 1866240 biXPelPerMeter 0 biYPelPerMeter 0 biClrUsed 0 biClrIpmortant 0 ======= End of Video Format ======= Regenerating keyframe table for DIVX 4 video CHUNK 'JUNK' len=4120 CHUNK 'strh' len=56 avi: Found audio stream Demuxer: ==> Found audio stream: 1 Demuxer: ID_AUDIO_ID=1 ======= STREAM Header ======= Type: auds FCC: (0) Flags: 0 Priority: 0 Language: 0 InitialFrames: 1 Rate: 48000/1152 = 41.667 Start: 0 Len: 10093 Suggested BufferSize: 960 Quality -1 Sample size: 0 CHUNK 'strf' len=30 found 'wf', 30 bytes of 18 ======= WAVE Format (chunk size: 30 )======= Format Tag: 85 (0x55) Channels: 2 Samplerate: 48000 avg byte/sec: 14907 Block align: 1152 bits/sample: 0 cbSize: 12 mp3.wID=1 mp3.fdwFlags=0x0 mp3.nBlockSize=358 mp3.nFramesPerBlock=1 mp3.nCodecDelay=0 ======= End of WAVE Format ======= CHUNK 'JUNK' len=4120 CHUNK 'dmlh' len=248 Found ODML header 248 frames 6056 CHUNK 'ISFT' len=43 Software : VirtualDubMod 1.5.4.1 (build 2178/release) CHUNK 'JUNK' len=1318 Broken chunk? chunksize=0 (id=JUNK) CHUNK 'JUNK' len=1318 Found movie at 0x280C - 0x65C9BBE CHUNK 'idx1' len=258384 Reading INDEX block, 16149 chunks for 6056 frames CHUNK 'JUNK' len=738 AVI index offset: 0x2808 (movi=0x280C idx0=0x4 idx1=0x18C) Auto-selected AVI audio ID = 1 Auto-selected AVI video ID = 0 AVI: Searching for audio stream (id:1) AVI video size=102978663 (6056) audio size=3611280 (10093) VIDEO: [XVID] 720x432 12bpp 25.00 fps [Demuxer]: Using: AVI - Audio Video Interleaved parser [Stream]:Video=XVID Audio=00000055 Probing: mp3lib [codec_ld] ?\208?\145?\208?\184?\208?\177?\208?\187?\208?\184?\208?\190?\209?\130?\208?\181?\208?\186?\208?\176 ?\208?\183?\208?\176?\208?\179?\209?\128?\209?\131?\208?\182?\208?\181?\208?\189?\208?\176 ?\209?\131?\209?\129?\208?\191?\208?\181?\209?\136?\208?\189?\208?\190:libmpg123.so Driver: mp3lib supports these outfmt for 00000055 100000 10 0 Using SSE2 optimized memcpy [codec_ld] ?\208?\145?\208?\184?\208?\177?\208?\187?\208?\184?\208?\190?\209?\130?\208?\181?\208?\186?\208?\176 ?\208?\183?\208?\176?\208?\179?\209?\128?\209?\131?\208?\182?\208?\181?\208?\189?\208?\176 ?\209?\131?\209?\129?\208?\191?\208?\181?\209?\136?\208?\189?\208?\190:libmpg123.so dec_audio: Allocating 8192 + 65536 = 73728 bytes for output buffer mpg123_init: MPEG-1.0 [Layer:III (ABR)], Hz=48000 128-kbit Joint-Stereo, BPF=96 Out=32-bit mpg123_init: Copyrght=No Orig=Yes CRC=No Priv=No Emphas=0 Optimiz=x86-64 [AC] Selecting decoder: [libmpg123.so] drv:mp3lib.libmpg123.so ratio 16000->384000 alsa-init: compiled for ALSA-1.0.26 alsa-init: soundcard set to hw:1 alsa-init: Testing & bugs are welcome. Found 1 cards, use: hw:1 alsa-init: pcm opend in block-mode Attach filter menu menu(NULL, vo2) vo2(menu, NULL) Probing: raw Probing: nuv Probing: mpeg2 Probing: xvid [codec_ld] ?\208?\145?\208?\184?\208?\177?\208?\187?\208?\184?\208?\190?\209?\130?\208?\181?\208?\186?\208?\176 ?\208?\183?\208?\176?\208?\179?\209?\128?\209?\131?\208?\182?\208?\181?\208?\189?\208?\176 ?\209?\131?\209?\129?\208?\191?\208?\181?\209?\136?\208?\189?\208?\190:libxvidcore.so Driver: xvid supports these outfmt for XVID fourcc: YV12 (flg=0) I420 (flg=0) YUY2 (flg=0) UYVY (flg=0) YVYU (flg=0) RGB (flg=0) 42475218 (flg=0) 4247520f (flg=0) 42475210 (flg=0) 00000000 (flg=0) [codec_ld] ?\208?\145?\208?\184?\208?\177?\208?\187?\208?\184?\208?\190?\209?\130?\208?\181?\208?\186?\208?\176 ?\208?\183?\208?\176?\208?\179?\209?\128?\209?\131?\208?\182?\208?\181?\208?\189?\208?\176 ?\209?\131?\209?\129?\208?\191?\208?\181?\209?\136?\208?\189?\208?\190:libxvidcore.so [XVID] using library version 1.3.2 (build xvid-1.3.2) [XVID] using 4 cpus/threads. Flags: 000001FF VDec: vo config request - 720 x 432 dri_vo: request for Planar YV12 fourcc: 0 dri_vo: request for Planar I420 fourcc: 0 dri_vo: request for Packed YUY2 fourcc: 0 dri_vo: request for Packed UYVY fourcc: 0 dri_vo: request for Packed YVYU fourcc: 0 dri_vo: request for BGRA fourcc: 0 dri_vo: request for BGR 24-bit fourcc: 0 dri_vo: request for BGR 15-bit fourcc: 0 dri_vo: request for BGR 16-bit fourcc: 0 Can't find colorspace for: 'Planar YV12' 'Planar I420' 'Packed YUY2' 'Packed UYVY' 'Packed YVYU' 'BGRA' 'BGR 24-bit' 'BGR 15-bit' 'BGR 16-bit' Trying -vf fmtcvt Open video filter: [fmtcvt] <720x432 Planar YV12> SwScale params: -1 x -1 (-1=no scaling) dri_vo: request for Planar 444P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 444P 16-bit big-endian fourcc: 0 dri_vo: request for Planar 422P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 422P 16-bit big-endian fourcc: 0 dri_vo: request for Planar 420P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 420P 16-bit big-endian fourcc: 0 dri_vo: request for Planar YV12 with alpha fourcc: 0 dri_vo: request for Planar 444P fourcc: 0 dri_vo: request for Planar 422P fourcc: 0 dri_vo: request for Planar YV12 fourcc: 0 dri_vo: request for Planar I420 fourcc: 0 dri_vo: request for Planar IYUV fourcc: 0 dri_vo: request for Planar YVU9 fourcc: 0 dri_vo: request for Planar IF09 fourcc: 0 dri_vo: request for Planar 411P fourcc: 0 dri_vo: request for Packed YUY2 fourcc: 0 dri_vo: request for Packed UYVY fourcc: 0 dri_vo: request for RGB 48-bit fourcc: 0 dri_vo: request for BGR 48-bit fourcc: 0 dri_vo: request for BGRA fourcc: 0 dri_vo: request for RGBA fourcc: 1 dri_vo: request for BGR 24-bit fourcc: 0 dri_vo: request for RGB 24-bit fourcc: 1 dri_vo: request for BGR 16-bit fourcc: 0 dri_vo: request for RGB 16-bit fourcc: 1 dri_vo: request for BGR 15-bit fourcc: 0 dri_vo: request for RGB 15-bit fourcc: 1 dri_vo: request for Planar Y800 fourcc: 0 dri_vo: request for Planar Y8 fourcc: 0 dri_vo: request for BGR 8-bit fourcc: 0 dri_vo: request for RGB 8-bit fourcc: 0 dri_vo: request for BGR 4-bit fourcc: 0 dri_vo: request for RGB 4-bit fourcc: 1 dri_vo: request for BGR 4-bit per byte fourcc: 0 dri_vo: request for RGB 4-bit per byte fourcc: 1 dri_vo: request for BGR 1-bit fourcc: 0 dri_vo: request for RGB 1-bit fourcc: 0 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 dri_vo: request for RGBA fourcc: 1 Movie-Aspect is undefined - no prescaling applied. vf->config(720x432->720x432,flags=0x0,'MPlayerXP',Planar YV12) dri_vo: request for RGBA fourcc: 1 [swscaler @ 0x2fbc660] using unscaled yuv420p -> bgra special converter dri_vo: request for RGBA fourcc: 1 REQ: flags=0x401 req=0x0 [libvf] Using video filters chain: [vf_fmtcvt]: video[720x432] in[Planar YV12] -> out[RGBA] [vf_menu] Internal filter for libmenu [720x432,Unknown XVID] VO-CONF: [x11] 0x0 => 0x0 Unknown 0x0000 VO: Description: X11 ( XImage/Shm ) (with x11:vidix subdevice) VO: Author: Aaron Holtzman <aho...@es...> dri_vo: request for RGBA fourcc: 1 REQ: flags=0x401 req=0x0 [libvf] Using video filters chain: [vf_menu] Internal filter for libmenu [720x432,Unknown XVID] VO-CONF: [x11] 0x0 => 0x0 Unknown 0x0000 VO: Description: X11 ( XImage/Shm ) (with x11:vidix subdevice) VO: Author: Aaron Holtzman <aho...@es...> dri_vo: request for RGBA fourcc: 1 priv.video_out->config(720,432,720,432, 0x0,'MPlayerXP',RGBA) Sharing memory. [stream: vf_reinit_vo]: 0x2fbbac0 Call vf_reinit_vo <fmtcvt: 720x432@Planar YV12> -> <vo: 720x432@BGRA> vf->first: 720x432@Planar YV12 [720x432@Planar YV12](NULL<-fmtcvt->menu) [720x432@Unknown XVID](fmtcvt<-menu->vo2) [720x432@RGBA](menu<-vo2->NULL) Using(menu) 720x432@Unknown XVID vf_reinit->config_vf 720 432 Unknown XVID=> 720 432 BGRA Open video filter: [fmtcvt] <720x432 Planar YV12> SwScale params: -1 x -1 (-1=no scaling) dri_vo: request for Planar 444P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 444P 16-bit big-endian fourcc: 0 dri_vo: request for Planar 422P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 422P 16-bit big-endian fourcc: 0 dri_vo: request for Planar 420P 16-bit little-endian fourcc: 0 dri_vo: request for Planar 420P 16-bit big-endian fourcc: 0 dri_vo: request for Planar YV12 with alpha fourcc: 0 dri_vo: request for Planar 444P fourcc: 0 dri_vo: request for Planar 422P fourcc: 0 dri_vo: request for Planar YV12 fourcc: 0 dri_vo: request for Planar I420 fourcc: 0 dri_vo: request for Planar IYUV fourcc: 0 dri_vo: request for Planar YVU9 fourcc: 0 dri_vo: request for Planar IF09 fourcc: 0 dri_vo: request for Planar 411P fourcc: 0 dri_vo: request for Packed YUY2 fourcc: 0 dri_vo: request for Packed UYVY fourcc: 0 dri_vo: request for RGB 48-bit fourcc: 0 dri_vo: request for BGR 48-bit fourcc: 0 dri_vo: request for BGRA fourcc: 0 dri_vo: request for RGBA fourcc: 1 dri_vo: request for BGR 24-bit fourcc: 0 dri_vo: request for RGB 24-bit fourcc: 1 dri_vo: request for BGR 16-bit fourcc: 0 dri_vo: request for RGB 16-bit fourcc: 1 dri_vo: request for BGR 15-bit fourcc: 0 dri_vo: request for RGB 15-bit fourcc: 1 dri_vo: request for Planar Y800 fourcc: 0 dri_vo: request for Planar Y8 fourcc: 0 dri_vo: request for BGR 8-bit fourcc: 0 dri_vo: request for RGB 8-bit fourcc: 0 dri_vo: request for BGR 4-bit fourcc: 0 dri_vo: request for RGB 4-bit fourcc: 1 dri_vo: request for BGR 4-bit per byte fourcc: 0 dri_vo: request for RGB 4-bit per byte fourcc: 1 dri_vo: request for BGR 1-bit fourcc: 0 dri_vo: request for RGB 1-bit fourcc: 0 dri_vo: request for RGBA fourcc: 1 [swscaler @ 0x2fd5e80] (null) is not supported as input pixel format Couldn't init SwScaler for this setup (nil) FATAL: ?\208?\157?\208?\181 ?\208?\188?\208?\190?\208?\179?\209?\131 ?\208?\191?\209?\128?\208?\190?\208?\184?\208?\189?\208?\184?\209?\134?\208?\184?\208?\176?\208?\187?\208?\184?\208?\183?\208?\184?\209?\128?\208?\190?\208?\178?\208?\176?\209?\130?\209?\140 ?\208?\178?\208?\184?\208?\180?\208?\181?\208?\190 ?\208?\180?\209?\128?\208?\176?\208?\185?\208?\178?\208?\181?\209?\128! vf->first: 720x432@Planar YV12 [720x432@Planar YV12](NULL<-fmtcvt->menu) [720x432@Unknown XVID](fmtcvt<-menu->vo2) [720x432@RGBA](fmtcvt<-vo2->NULL) dri_vo_caps: driver does support DRI dri_vo_caps: caps=00000000 fourcc=42475220(BGRA) x,y,w,h(0 0 2d0 1b0) dri_vo_caps: width,height(2d0,1b0) strides(b40000) priv.dri.bpp=20 dri_vo_src: w,h(2d0,1b0) d_w,d_h(2d0,1b0 dri_vo_src: flags=00000000 fourcc=52474220(RGBA) [libvf] Using video filters chain: [vf_fmtcvt]: video[720x432] in[Planar YV12] -> out[RGBA] [vf_menu] Internal filter for libmenu [720x432,Unknown XVID] VO-CONF: [x11] 720x432 => 720x432 RGBA VO: Description: X11 ( XImage/Shm ) (with x11:vidix subdevice) VO: Author: Aaron Holtzman <aho...@es...> [VC] Selected decoder: [libxvidcore.so] drv:xvid.libxvidcore.so (720x432 (aspect 0) 25.00fps Checking audio filter chain for 48000Hz/2ch/32bit... [libaf] Adding filter ao3 [libaf] Adding filter resample [libaf] Adding filter format AF_pre: af format: 2 ch, 44100 hz, S32LE af_bps=352800 alsa-conf: requested format: 44100 Hz, 2 channels, Signed 32-bit (Little-Endian) alsa-init: buffer_time: 500045, period_time :124988 alsa-conf: got buffersize=176416 alsa-conf: bits per sample (bps)=32, bits per frame (bpf)=64, chunk_bytes=0 alsa-conf: 44100 Hz/2 channels/8 bpf/176416 bytes buffer/Signed 32 bit Little Endian Building audio filter chain for 48000Hz/2ch/32bit (Float32) -> 44100Hz/2ch/32bit (Signed 32-bit (Little-Endian))... AF_init: af format: 2 ch, 44100 hz, S32LE af_bps=352800 [libaf] Using audio filters chain: [af_resample] New filter designed (48000 -> 44100 Hz) [af_format] Changing sample format FLOAT32LE -> S32LE AO-CONF: [alsa] 44100Hz nch=2 S32LE (2822.4-kbit) Using Linux's hardware RTC timing (1024Hz) CLIP INFO (M/l.avi): Encoder: VirtualDubMod 1.5.4.1 (build 2178/release) Using audio buffer 911368 bytes (min reserve = 8200, indices 210) XXX initial v_pts=0.000 a_pos=2448 (0.164) Using SSE2 optimized agpcpy Using generic optimized agpcpy Using DECODING AHEAD mplayer's core with 64 video buffers alsa-space: mp_free space = 176416, status=2, 1 -- alsa-space: mp_free space = 176416, status=2, 1 -- Using SSE3 Optimized OnScreenDisplay Using the next 5 threads: [0] main (id=13837 pth_id=140640945727488) [1] audio decoder (id=13837 pth_id=140640713684736) [2] video decoder (id=13837 pth_id=140640703194880) [3] audio player (id=13837 pth_id=140640692705024) [4] video player (id=13837 pth_id=140640682215168) ?\208?\146?\208?\190?\209?\129?\208?\191?\209?\128?\208?\190?\208?\184?\208?\183?\208?\178?\208?\181?\208?\180?\208?\181?\208?\189?\208?\184?\208?\181... X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) X11_common: event_type = 2 (KeyPress) X11_common: event_type = 4d (Unknown) X11_common: event_type = 4d (Unknown) *** stop thread: [1] audio decoder *** stop thread: [2] video decoder *** stop thread: [3] audio player *** stop thread: [4] video player uninit video ... Successfully enabled DPMS Uninit audio filters... [libaf] Removing filter resample [libaf] Removing filter format [libaf] Removing filter ao3 uninit audio: ... alsa-uninit: pcm closed [Demuxer]: freeing demuxer at 0x2ee7ea0 DEMUXER: freeing sh_audio at 0x2eeec20 DEMUXER: freeing sh_video at 0x2eee430 *** free_stream(drv:file://) called [errno: Inappropriate ioctl for device]*** ?\208?\146?\209?\139?\209?\133?\208?\190?\208?\180?\208?\184?\208?\188...(?\208?\146?\209?\139?\209?\133?\208?\190?\208?\180) Modified Paths: -------------- mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/postproc/af_export.cpp mplayerxp/postproc/af_internal.h Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 09:50:31 UTC (rev 606) @@ -695,7 +695,7 @@ } namespace mpxp { -MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv) +MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv,const std::map<std::string,std::string>& envm) { size_t i,siz=argv.size(); int tmp; @@ -715,7 +715,7 @@ exit(0); } if(opt=="--long-help") { - show_long_help(); + show_long_help(envm); exit(0); } /* check for -- (no more options id.) except --help! */ Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-27 09:50:31 UTC (rev 606) @@ -6,6 +6,7 @@ #include "xmpcore/xmp_enums.h" #include <vector> #include <string> +#include <map> namespace mpxp { struct libinput_t; @@ -92,7 +93,7 @@ * 1 otherwise */ namespace mpxp { - MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv); + MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv,const std::map<std::string,std::string>& envm); } m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput); Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/mplayerxp.cpp 2012-12-27 09:50:31 UTC (rev 606) @@ -5,6 +5,7 @@ #include <algorithm> #include <iostream> #include <iomanip> +#include <map> #include <ctype.h> #include <stdio.h> @@ -134,12 +135,12 @@ void print_stream_formats() const; void print_audio_status() const; void read_video_properties() const; - void read_subtitles(const std::string& filename,int forced_subs_only,int stream_dump_type); + void read_subtitles(const std::map<std::string,std::string>& envm,const std::string& filename,int forced_subs_only,int stream_dump_type); - void find_acodec(const char *ao_subdevice); + void find_acodec(const std::map<std::string,std::string>& envm,const char *ao_subdevice); int configure_audio(); - MPXP_Rc find_vcodec(); + MPXP_Rc find_vcodec(const std::map<std::string,std::string>& envm); void run_ahead_engine(); @@ -199,6 +200,21 @@ } MP_Config mp_conf; +__always_inline std::string get_path(const std::map<std::string,std::string>& envm,const std::string& filename="") { + std::map<std::string,std::string>::const_iterator it; + it = envm.find("HOME"); + const std::string homedir = (*it).second; + std::string rs; + std::string config_dir = std::string("/.")+PROGNAME; + + if (homedir.empty()) throw "No 'HOME' environment found"; + rs=homedir+config_dir; + if (!filename.empty()) rs+="/"+filename; + mpxp_v<<"get_path('"<<homedir<<":"<<filename<<"') -> "<<rs<<std::endl; + return rs; +} + + MPXPContext::MPXPContext() :_engine(new(zeromem) mpxp_engine_t), _audio(new(zeromem) audio_processing_t), @@ -426,15 +442,15 @@ //"nosound=nein" "\n"; -void parse_cfgfiles( m_config_t& conf ) +void parse_cfgfiles(const std::map<std::string,std::string>& envm, m_config_t& conf ) { std::string conffile; int conffile_fd; - conffile = get_path(); + conffile = get_path(envm); if (conffile.empty()) mpxp_warn<<MSGTR_NoHomeDir<<std::endl; else { ::mkdir(conffile.c_str(), 0777); - conffile = get_path("config"); + conffile = get_path(envm,"config"); if (conffile.empty()) { mpxp_err<<MSGTR_GetpathProblem<<std::endl; conffile="config"; @@ -532,7 +548,7 @@ #endif -static void init_player( void ) +static void init_player(const std::map<std::string,std::string>& envm) { if(mp_conf.video_driver && strcmp(mp_conf.video_driver,"help")==0) { mpxp_context().video().output->print_help(); @@ -567,7 +583,7 @@ #ifdef ENABLE_WIN32LOADER /* check codec.conf*/ - if(!parse_codec_cfg(get_path("win32codecs.conf").c_str())) { + if(!parse_codec_cfg(get_path(envm,"win32codecs.conf").c_str())) { if(!parse_codec_cfg(CONFDIR"/win32codecs.conf")) { mpxp_hint<<MSGTR_CopyCodecsConf<<std::endl; mpxp_uninit_structs(); @@ -600,7 +616,7 @@ mpxp_info<<"Use --long-help option for full help"<<std::endl; } -void show_long_help(void) { +void show_long_help(const std::map<std::string,std::string>& envm) { MPXPSystem& MPXPSys=*mpxp_context().engine().MPXPSys; m_config_show_options(*mpxp_context().mconfig); mp_input_print_binds(MPXPSys.libinput()); @@ -613,7 +629,7 @@ afm_help(); #ifdef ENABLE_WIN32LOADER /* check codec.conf*/ - if(!parse_codec_cfg(get_path("win32codecs.conf").c_str())){ + if(!parse_codec_cfg(get_path(envm,"win32codecs.conf").c_str())){ if(!parse_codec_cfg(CONFDIR"/win32codecs.conf")){ mpxp_hint<<MSGTR_CopyCodecsConf<<std::endl; mpxp_uninit_structs(); @@ -829,7 +845,7 @@ } -static void mpxp_init_osd(void) { +static void mpxp_init_osd(const std::map<std::string,std::string>& envm) { // check font #ifdef USE_OSD if(mp_conf.font_name){ @@ -838,7 +854,7 @@ mpxp_err<<MSGTR_CantLoadFont<<": "<<mp_conf.font_name<<std::endl; } else { // try default: - mpxp_context().video().output->font=read_font_desc(get_path("font/font.desc").c_str(),mp_conf.font_factor,mp_conf.verbose>1); + mpxp_context().video().output->font=read_font_desc(get_path(envm,"font/font.desc").c_str(),mp_conf.font_factor,mp_conf.verbose>1); if(!mpxp_context().video().output->font) mpxp_context().video().output->font=read_font_desc(DATADIR"/font/font.desc",mp_conf.font_factor,mp_conf.verbose>1); } @@ -846,7 +862,7 @@ /* Configure menu here */ { std::string menu_cfg; - menu_cfg = get_path("menu.conf"); + menu_cfg = get_path(envm,"menu.conf"); if(menu_init(NULL, menu_cfg.c_str())) mpxp_info<<"Menu initialized: "<<menu_cfg<<std::endl; else { @@ -1021,7 +1037,7 @@ } } -void MPXPSystem::read_subtitles(const std::string& filename,int forced_subs_only,int stream_dump_type) { +void MPXPSystem::read_subtitles(const std::map<std::string,std::string>& envm,const std::string& filename,int forced_subs_only,int stream_dump_type) { sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(_demuxer->video->sh); Stream* stream=static_cast<Stream*>(_demuxer->stream); if (mp_conf.spudec_ifo) { @@ -1060,7 +1076,7 @@ mpxp_context().subtitles=sub_read_file(mp_conf.sub_name, sh_video->fps); if(!mpxp_context().subtitles) mpxp_err<<MSGTR_CantLoadSub<<": "<<mp_conf.sub_name<<std::endl; } else if(mp_conf.sub_auto) { // auto load sub file ... - mpxp_context().subtitles=sub_read_file( !filename.empty() ? sub_filename(get_path("sub/").c_str(), filename.c_str() ) + mpxp_context().subtitles=sub_read_file( !filename.empty() ? sub_filename(get_path(envm,"sub/").c_str(), filename.c_str() ) : "default.sub", sh_video->fps ); } if(mpxp_context().subtitles) { @@ -1070,7 +1086,7 @@ #endif } -void MPXPSystem::find_acodec(const char *ao_subdevice) { +void MPXPSystem::find_acodec(const std::map<std::string,std::string>& envm,const char *ao_subdevice) { int found=0; audio_decoder_t* mpca=0; sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(_demuxer->audio->sh); @@ -1113,7 +1129,7 @@ if(!found) { mpxp_err<<MSGTR_CantFindAudioCodec<<std::endl; fourcc(mpxp_err,sh_audio->wtag); - mpxp_hint<<get_path("win32codecs.conf")<<":"<<MSGTR_TryUpgradeCodecsConfOrRTFM<<std::endl; + mpxp_hint<<get_path(envm,"win32codecs.conf")<<":"<<MSGTR_TryUpgradeCodecsConfOrRTFM<<std::endl; d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); } else { @@ -1131,7 +1147,7 @@ } } -MPXP_Rc MPXPSystem::find_vcodec(void) { +MPXP_Rc MPXPSystem::find_vcodec(const std::map<std::string,std::string>& envm) { Demuxer_Stream *d_video=_demuxer->video; sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(_demuxer->video->sh); MPXP_Rc rc=MPXP_Ok; @@ -1170,7 +1186,7 @@ if(!sh_video->inited) { mpxp_err<<MSGTR_CantFindVideoCodec<<std::endl; fourcc(mpxp_err,sh_video->fourcc); - mpxp_hint<<get_path("win32codecs.conf")<<":"<<MSGTR_TryUpgradeCodecsConfOrRTFM<<std::endl; + mpxp_hint<<get_path(envm,"win32codecs.conf")<<":"<<MSGTR_TryUpgradeCodecsConfOrRTFM<<std::endl; d_video->sh = NULL; sh_video = reinterpret_cast<sh_video_t*>(d_video->sh); rc=MPXP_False; @@ -1627,10 +1643,9 @@ /******************************************\ * MAIN MPLAYERXP FUNCTION !!! * \******************************************/ -int MPlayerXP(const std::vector<std::string>& argv){ +int MPlayerXP(const std::vector<std::string>& argv, const std::map<std::string,std::string>& envm){ mpxp_init_antiviral_protection(1); // mpxp_test_backtrace(); - int i; Stream* stream=NULL; int stream_dump_type=0; input_state_t input_state = { 0, 0, 0 }; @@ -1673,9 +1688,9 @@ m_config_register_options(m_config,mplayer_opts); // TODO : add something to let modules register their options mp_register_options(m_config); - parse_cfgfiles(m_config); + parse_cfgfiles(envm,m_config); - if(mpxp_parse_command_line(m_config, argv)!=MPXP_Ok) + if(mpxp_parse_command_line(m_config, argv,envm)!=MPXP_Ok) exit_player("Error parse command line"); // error parsing cmdline if(!mp_conf.xp) { @@ -1710,7 +1725,7 @@ mpxp_context().engine().xp_core->num_a_buffs = vo_conf.xp_buffs; - init_player(); + init_player(envm); if(filename.empty()){ show_help(); @@ -1719,14 +1734,18 @@ // Many users forget to include command line in bugreports... if(mp_conf.verbose){ - size_t sz=argv.size(); + std::map<std::string,std::string>::const_iterator it; + mpxp_info<<"Environment:"<<std::endl; + for(it=envm.begin();it!=envm.end();it++) + mpxp_info<<(*it).first<<" => "<<(*it).second<<std::endl; + size_t i,sz=argv.size(); mpxp_info<<"CommandLine:"; for(i=1;i<sz;i++) mpxp_info<<" '"<<argv[i]<<"'"; mpxp_info<<std::endl; } //------ load global data first ------ - mpxp_init_osd(); + mpxp_init_osd(envm); // ========== Init keyboard FIFO (connection to libvo) ============ MP_UNIT(NULL); @@ -1829,12 +1848,12 @@ } //================== Read SUBTITLES (DVD & TEXT) ========================== - if(sh_video) MPXPSys.read_subtitles(filename,forced_subs_only,stream_dump_type); + if(sh_video) MPXPSys.read_subtitles(envm,filename,forced_subs_only,stream_dump_type); //================== Init AUDIO (codec) ========================== MP_UNIT("init_audio_codec"); - if(sh_audio) MPXPSys.find_acodec(ao_subdevice); + if(sh_audio) MPXPSys.find_acodec(envm,ao_subdevice); sh_audio=reinterpret_cast<sh_audio_t*>(MPXPSys.demuxer()->audio->sh); if(stream_dump_type>1) { @@ -1871,7 +1890,7 @@ /*================== Init VIDEO (codec & libvo) ==========================*/ if(!sh_video) goto main; - if((MPXPSys.find_vcodec())!=MPXP_Ok) { + if((MPXPSys.find_vcodec(envm))!=MPXP_Ok) { sh_video=reinterpret_cast<sh_video_t*>(MPXPSys.demuxer()->video->sh); if(!sh_audio) goto goto_next_file; goto main; @@ -2132,15 +2151,25 @@ int main(int argc,char* args[], char *envp[]) { - UNUSED(envp); try { std::vector<std::string> argv; - std::string str; + std::string str,stmp; for(int i=0;i<argc;i++) { str=args[i]; argv.push_back(str); } - return MPlayerXP(argv); + std::map<std::string,std::string> envm; + unsigned j=0; + size_t pos; + while(envp[j]) { + str=envp[j++]; + pos=str.find('='); + if(pos==std::string::npos) throw "Broken environment variable: "+str; + stmp=str.substr(pos+1); + str=str.substr(0,pos); + envm[str]=stmp; + } + return MPlayerXP(argv,envm); } catch(const std::string& what) { std::cout<<"Exception '"<<what<<"'caught in module: MPlayerXP"<<std::endl; } catch(...) { Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/mplayerxp.h 2012-12-27 09:50:31 UTC (rev 606) @@ -197,7 +197,7 @@ unsigned get_number_cpu(void); void show_help(void); - void show_long_help(void); + void show_long_help(const std::map<std::string,std::string>& envm); void update_osd( float v_pts ); Modified: mplayerxp/postproc/af_export.cpp =================================================================== --- mplayerxp/postproc/af_export.cpp 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/postproc/af_export.cpp 2012-12-27 09:50:31 UTC (rev 606) @@ -30,12 +30,10 @@ #include "osdep/get_path.h" #include "pp_msg.h" -#define DEF_SZ 512 // default buffer size (in samples) -#define SHARED_FILE "mplayer-af_export" /* default file name - (relative to ~/.mplayer/ */ +static const int DEF_SZ=512; // default buffer size (in samples) +static const char* SHARED_FILE="mplayer-af_export"; /* default file name (relative to ~/.mplayer/ */ +static const int SIZE_HEADER=(2 * sizeof(int) + sizeof(unsigned long long)); -#define SIZE_HEADER (2 * sizeof(int) + sizeof(unsigned long long)) - // Data for specific instances of this filter struct af_export_t { Modified: mplayerxp/postproc/af_internal.h =================================================================== --- mplayerxp/postproc/af_internal.h 2012-12-27 09:50:00 UTC (rev 605) +++ mplayerxp/postproc/af_internal.h 2012-12-27 09:50:31 UTC (rev 606) @@ -18,5 +18,5 @@ double delay; // Delay caused by the filter [ms] frac_t mul; /* length multiplier: how much does this instance change the length of the buffer. */ -}__attribute__ ((packed)); +}; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-27 09:50:10
|
Revision: 605 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=605&view=rev Author: nickols_k Date: 2012-12-27 09:50:00 +0000 (Thu, 27 Dec 2012) Log Message: ----------- fix pseudo-random filler Modified Paths: -------------- mplayerxp/osdep/get_path.cpp mplayerxp/osdep/mplib.cpp Modified: mplayerxp/osdep/get_path.cpp =================================================================== --- mplayerxp/osdep/get_path.cpp 2012-12-27 08:38:19 UTC (rev 604) +++ mplayerxp/osdep/get_path.cpp 2012-12-27 09:50:00 UTC (rev 605) @@ -9,11 +9,11 @@ #include "osdep_msg.h" namespace mpxp { std::string get_path(const std::string& filename){ - char *homedir; + const char *homedir; std::string rs; std::string config_dir = std::string("/.")+PROGNAME; - if ((homedir = ::getenv("HOME")) == NULL) return ""; + if ((homedir = ::getenv("HOME")) == NULL) throw "No 'HOME' environment found"; rs=std::string(homedir)+config_dir; if (!filename.empty()) rs+="/"+filename; mpxp_v<<"get_path('"<<filename<<"') -> "<<rs<<std::endl; Modified: mplayerxp/osdep/mplib.cpp =================================================================== --- mplayerxp/osdep/mplib.cpp 2012-12-27 08:38:19 UTC (rev 604) +++ mplayerxp/osdep/mplib.cpp 2012-12-27 09:50:00 UTC (rev 605) @@ -35,7 +35,7 @@ long filler; for(i=0;i<psize/sizeof(long);i++) { filler=::rand()&lo_mask; - filler=(reinterpret_cast<long>(buffer)&hi_mask)|lo_mask; + filler|=(reinterpret_cast<long>(buffer)&hi_mask); ((long *)buffer)[i]=::rand()%2?filler:0; } ::memset(&((char *)buffer)[psize],0,size-psize); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-27 08:38:31
|
Revision: 604 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=604&view=rev Author: nickols_k Date: 2012-12-27 08:38:19 +0000 (Thu, 27 Dec 2012) Log Message: ----------- anti-illegal patch commit: limit malefactor(s) by list of officially known command line arguments and don't pass envp into illegal-patch Modified Paths: -------------- mplayerxp/libao3/audio_out.cpp mplayerxp/libao3/audio_out.h mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libplaytree/playtree.cpp mplayerxp/mplayerxp.cpp mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/mplib.h Modified: mplayerxp/libao3/audio_out.cpp =================================================================== --- mplayerxp/libao3/audio_out.cpp 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/libao3/audio_out.cpp 2012-12-27 08:38:19 UTC (rev 604) @@ -205,23 +205,23 @@ mpxp_info<<std::endl; } -MPXP_Rc Audio_Output::_register(const char *driver_name,unsigned flags) const { +MPXP_Rc Audio_Output::_register(const std::string& driver_name,unsigned flags) const { priv_t& priv=static_cast<priv_t&>(opaque); unsigned i; - if(!driver_name) { + if(driver_name.empty()) { priv.info=audio_out_drivers[0]; priv.driver=audio_out_drivers[0]->query_interface(subdevice?subdevice:""); } else for (i=0; audio_out_drivers[i] != &audio_out_null; i++) { const ao_info_t *info = audio_out_drivers[i]; - if(strcmp(info->short_name,driver_name) == 0){ + if(info->short_name==driver_name){ priv.info = audio_out_drivers[i]; priv.driver = audio_out_drivers[i]->query_interface(subdevice?subdevice:""); break; } } - if(priv.driver->open(flags)==MPXP_Ok) return MPXP_Ok; + if(priv.driver) { if(priv.driver->open(flags)==MPXP_Ok) return MPXP_Ok; } return MPXP_False; } Modified: mplayerxp/libao3/audio_out.h =================================================================== --- mplayerxp/libao3/audio_out.h 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/libao3/audio_out.h 2012-12-27 08:38:19 UTC (rev 604) @@ -34,7 +34,7 @@ virtual ~Audio_Output(); static void print_help(); - virtual MPXP_Rc _register(const char *driver_name,unsigned flags) const; + virtual MPXP_Rc _register(const std::string& driver_name,unsigned flags) const; virtual const ao_info_t* get_info() const; virtual MPXP_Rc configure(unsigned rate,unsigned channels,unsigned format) const; virtual unsigned buffersize() const; Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-27 08:38:19 UTC (rev 604) @@ -695,40 +695,39 @@ } namespace mpxp { -MPXP_Rc mpxp_parse_command_line(m_config_t& config, int argc, char **argv, char **envp) +MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv) { - int i; + size_t i,siz=argv.size(); int tmp; - char *opt; + std::string opt; int no_more_opts = 0; - UNUSED(envp); if (init_conf(config, COMMAND_LINE) == -1) return MPXP_False; if(config.last_parent == NULL) config.last_parent = config.pt; /* in order to work recursion detection properly in parse_config_file */ ++config.recursion_depth; - for (i = 1; i < argc; i++) { + for (i = 1; i < siz; i++) { //next: opt = argv[i]; - if(strcmp(opt,"--help")==0) { + if(opt=="--help") { show_help(); exit(0); } - if(strcmp(opt,"--long-help")==0) { + if(opt=="--long-help") { show_long_help(); exit(0); } /* check for -- (no more options id.) except --help! */ - if ((*opt == '-') && (*(opt+1) == '-')) { + if (opt[0] == '-' && opt[1] == '-') { no_more_opts = 1; - if (i+1 >= argc) { + if (i+1 >= siz) { mpxp_err<<"You added '--' but no filenames presented!"<<std::endl; goto err_out; } continue; } - if((opt[0] == '{') && (opt[1] == '\0')) { + if(opt[0] == '{' && opt[1] == '\0') { play_tree_t* entry = play_tree_new(); UNSET_GLOBAL(config); if(config.last_entry == NULL) { @@ -741,7 +740,7 @@ continue; } - if((opt[0] == '}') && (opt[1] == '\0')) { + if(opt[0] == '}' && opt[1] == '\0') { if( ! config.last_parent || ! config.last_parent->parent) { mpxp_err<<"too much }-"<<std::endl; goto err_out; @@ -751,30 +750,25 @@ continue; } - if ((no_more_opts == 0) && (*opt == '-') && (*(opt+1) != 0)) /* option */ { + if (no_more_opts == 0 && opt[0] == '-' && opt.length()>1) /* option */ { /* remove leading '-' */ - char *assign,*item,*parm; - unsigned sz; - opt++; + size_t pos; + std::string item,parm; + pos=1; mpxp_dbg2<<"this_option: "<<opt<<std::endl; parm = argv[i+1]; - item=opt; - assign = strchr(opt,'='); - if(assign) { - sz=assign-opt; - item = new char [sz+1]; - memcpy(item,opt,sz); - item[sz]='\0'; - parm = mp_strdup(assign+1); + item=opt.substr(pos); + pos = item.find('='); + if(pos!=std::string::npos) { + parm=item.substr(pos+1); + item=item.substr(0,pos); } - tmp = m_config_set_option(config, std::string(item?item:""), std::string(parm?parm:"")); - if(!tmp && assign) mpxp_err<<"Option '"<<item<<"' doesn't require arguments"<<std::endl; - if(assign) { - delete item; - delete parm; + tmp = m_config_set_option(config, item, parm); + if(!tmp && pos!=std::string::npos) { + mpxp_err<<"Option '"<<item<<"' doesn't require arguments"<<std::endl; + goto err_out; } - if(!tmp && assign) goto err_out; switch (tmp) { case ERR_NOT_AN_OPTION: @@ -790,15 +784,14 @@ <<"' while parsing option: '"<<opt<<"'"<<std::endl; goto err_out; default: - i += tmp; - if(assign) i--; + if(pos==std::string::npos) i++; break; } } else /* filename */ { play_tree_t* entry = play_tree_new(); mpxp_dbg2<<"Adding file "<<argv[i]<<std::endl; play_tree_add_file(entry,argv[i]); - if(strcasecmp(argv[i],"-") == 0) m_config_set_option(config,"use-stdin",NULL); + if(argv[i]=="-") m_config_set_option(config,"use-stdin",NULL); /* opt is not an option -> treat it as a filename */ UNSET_GLOBAL(config); // We start entry specific options if(config.last_entry == NULL) play_tree_set_child(config.last_parent,entry); Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-27 08:38:19 UTC (rev 604) @@ -4,6 +4,8 @@ #ifndef __CFG_PARSER_H #define __CFG_PARSER_H 1 #include "xmpcore/xmp_enums.h" +#include <vector> +#include <string> namespace mpxp { struct libinput_t; @@ -90,7 +92,7 @@ * 1 otherwise */ namespace mpxp { - MPXP_Rc mpxp_parse_command_line(m_config_t& config, int argc, char **argv, char **envp); + MPXP_Rc mpxp_parse_command_line(m_config_t& config, const std::vector<std::string>& argv); } m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput); Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-27 08:38:19 UTC (rev 604) @@ -226,7 +226,7 @@ } if(ni > 0) { - pt->params[n].value = val; + pt->params[ni].value = val; return; } Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/mplayerxp.cpp 2012-12-27 08:38:19 UTC (rev 604) @@ -395,7 +395,7 @@ if(mpxp_context().mconfig) m_config_free(mpxp_context().mconfig); mpxp_print_uninit(); mpxp_uninit_structs(); - if(!why.empty()) exit(0); + if(!why.empty()) ::exit(0); return; /* Still try coredump!!!*/ } @@ -1598,16 +1598,17 @@ return eof; } -static void mpxp_config_malloc(int argc,char *argv[]) +static void mpxp_config_malloc(const std::vector<std::string>& argv) { - int i; + size_t i,sz=argv.size(); mp_conf.malloc_debug=0; mp_malloc_e flg=MPA_FLG_RANDOMIZER; - for(i=0;i<argc;i++) { - if(strncmp(argv[i],"-core.malloc-debug",18)==0) { - char *p; - if((p=strchr(argv[i],'='))!=NULL) { - mp_conf.malloc_debug=atoi(p+1); + for(i=0;i<sz;i++) { + std::string s=argv[i]; + if(s.substr(0,18)=="-core.malloc-debug") { + size_t pos; + if((pos=s.find('='))!=std::string::npos) { + mp_conf.malloc_debug=::atoi(s.substr(pos+1).c_str()); } switch(mp_conf.malloc_debug) { default: @@ -1626,7 +1627,7 @@ /******************************************\ * MAIN MPLAYERXP FUNCTION !!! * \******************************************/ -int MPlayerXP(int argc,char* argv[], char *envp[]){ +int MPlayerXP(const std::vector<std::string>& argv){ mpxp_init_antiviral_protection(1); // mpxp_test_backtrace(); int i; @@ -1643,7 +1644,7 @@ int forced_subs_only=0; seek_args_t seek_args = { 0, DEMUX_SEEK_CUR|DEMUX_SEEK_SECONDS }; - mpxp_config_malloc(argc,argv); + mpxp_config_malloc(argv); // Yes, it really must be placed in stack or in very secret place PointerProtector<MPXPSecureKeys> ptr_protector; @@ -1674,7 +1675,7 @@ mp_register_options(m_config); parse_cfgfiles(m_config); - if(mpxp_parse_command_line(m_config, argc, argv, envp)!=MPXP_Ok) + if(mpxp_parse_command_line(m_config, argv)!=MPXP_Ok) exit_player("Error parse command line"); // error parsing cmdline if(!mp_conf.xp) { @@ -1718,8 +1719,9 @@ // Many users forget to include command line in bugreports... if(mp_conf.verbose){ + size_t sz=argv.size(); mpxp_info<<"CommandLine:"; - for(i=1;i<argc;i++) mpxp_info<<" '"<<argv[i]<<"'"; + for(i=1;i<sz;i++) mpxp_info<<" '"<<argv[i]<<"'"; mpxp_info<<std::endl; } @@ -2128,10 +2130,19 @@ } } // namespace mpxp -int main(int argc,char* argv[], char *envp[]) +int main(int argc,char* args[], char *envp[]) { + UNUSED(envp); try { - return MPlayerXP(argc,argv,envp); + std::vector<std::string> argv; + std::string str; + for(int i=0;i<argc;i++) { + str=args[i]; + argv.push_back(str); + } + return MPlayerXP(argv); + } catch(const std::string& what) { + std::cout<<"Exception '"<<what<<"'caught in module: MPlayerXP"<<std::endl; } catch(...) { std::cout<<"Exception caught in module: MPlayerXP"<<std::endl; } Modified: mplayerxp/osdep/mp_malloc.cpp =================================================================== --- mplayerxp/osdep/mp_malloc.cpp 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/osdep/mp_malloc.cpp 2012-12-27 08:38:19 UTC (rev 604) @@ -19,20 +19,20 @@ enum { Max_BackTraces=13 }; -typedef struct mp_slot_s { +struct mp_slot_t { any_t* page_ptr; size_t size; size_t ncalls; any_t* calls[Max_BackTraces]; -}mp_slot_t; +}; -typedef struct mp_slot_container_s { +struct mp_slot_container_t { mp_slot_t* slots; size_t nslots; size_t size; -}mp_slot_container_t; +}; -typedef struct priv_s { +struct priv_t { const char* argv0; unsigned rnd_limit; unsigned every_nth_call; @@ -43,7 +43,7 @@ mp_slot_container_t mallocs;/* not freed mallocs */ mp_slot_container_t reallocs; /* suspect reallocs */ mp_slot_container_t frees; /* suspect free */ -}priv_t; +}; static priv_t* priv=NULL; static any_t* prot_page_align(any_t *ptr) { return (any_t*)(((unsigned long)ptr)&(~(__VM_PAGE_SIZE__-1))); } @@ -403,12 +403,12 @@ } } /* ================== HEAD FUNCTIONS ======================= */ -void mp_init_malloc(const char *argv0,unsigned rnd_limit,unsigned every_nth_call,enum mp_malloc_e flags) +void mp_init_malloc(const std::string& argv0,unsigned rnd_limit,unsigned every_nth_call,enum mp_malloc_e flags) { ::srand(::time(0)); if(!priv) priv=(priv_t*)::malloc(sizeof(priv_t)); ::memset(priv,0,sizeof(priv_t)); - priv->argv0=argv0; + priv->argv0=::strdup(argv0.c_str()); priv->rnd_limit=rnd_limit; priv->every_nth_call=every_nth_call; priv->flags=flags; @@ -450,6 +450,7 @@ } if(done) mpxp_hint<<std::endl<<"For source lines you may also print in (gdb): list *0xADDRESS"<<std::endl; uninit_bt_cache(cache); + if(priv->argv0) ::free((void*)priv->argv0); ::free(priv); priv=NULL; } @@ -457,7 +458,7 @@ any_t* mp_malloc(size_t __size) { any_t* rb,*rnd_buff=NULL; - if(!priv) mp_init_malloc(NULL,1000,10,MPA_FLG_RANDOMIZER); + if(!priv) mp_init_malloc("",1000,10,MPA_FLG_RANDOMIZER); if(priv->every_nth_call && priv->rnd_limit && !priv->flags) { if(priv->total_calls%priv->every_nth_call==0) { rnd_buff=::malloc(::rand()%priv->rnd_limit); @@ -475,7 +476,7 @@ any_t* __FASTCALL__ mp_memalign (size_t boundary, size_t __size) { any_t* rb; - if(!priv) mp_init_malloc(NULL,1000,10,MPA_FLG_RANDOMIZER); + if(!priv) mp_init_malloc("",1000,10,MPA_FLG_RANDOMIZER); if(priv->flags&(MPA_FLG_BOUNDS_CHECK|MPA_FLG_BEFORE_CHECK)) rb=prot_memalign(boundary,__size); else if(priv->flags&MPA_FLG_BACKTRACE) rb=bt_memalign(boundary,__size); else rb=memalign(boundary,__size); @@ -492,15 +493,18 @@ void mp_free(any_t*__ptr) { - if(!priv) mp_init_malloc(NULL,1000,10,MPA_FLG_RANDOMIZER); - if(__ptr) { - if(priv->flags&(MPA_FLG_BOUNDS_CHECK|MPA_FLG_BEFORE_CHECK)) - prot_free(__ptr); - else if(priv->flags&MPA_FLG_BACKTRACE) - bt_free(__ptr); - else - ::free(__ptr); - } + // we really may have some number of pointers malloced before mp_init_malloc() + // example: global constructors with using of overloaded operator new() + if(priv) { + if(__ptr) { + if(priv->flags&(MPA_FLG_BOUNDS_CHECK|MPA_FLG_BEFORE_CHECK)) + prot_free(__ptr); + else if(priv->flags&MPA_FLG_BACKTRACE) + bt_free(__ptr); + else + ::free(__ptr); + } + } else ::free(__ptr); } /* ================ APPENDIX ==================== */ Modified: mplayerxp/osdep/mplib.h =================================================================== --- mplayerxp/osdep/mplib.h 2012-12-26 17:16:39 UTC (rev 603) +++ mplayerxp/osdep/mplib.h 2012-12-27 08:38:19 UTC (rev 604) @@ -46,7 +46,7 @@ MPA_FLG_BEFORE_CHECK = 0x00000002, MPA_FLG_BACKTRACE = 0x00000004 }; - void __FASTCALL__ mp_init_malloc(const char *argv0,unsigned rnd_limit,unsigned every_nth_call,enum mp_malloc_e flags); + void __FASTCALL__ mp_init_malloc(const std::string& argv0,unsigned rnd_limit,unsigned every_nth_call,enum mp_malloc_e flags); void __FASTCALL__ mp_uninit_malloc(int verbose); any_t* __FASTCALL__ mp_malloc(size_t __size); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-26 17:16:50
|
Revision: 603 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=603&view=rev Author: nickols_k Date: 2012-12-26 17:16:39 +0000 (Wed, 26 Dec 2012) Log Message: ----------- more classes Modified Paths: -------------- mplayerxp/input2/input.cpp mplayerxp/input2/input.h mplayerxp/libmpcodecs/ad.cpp mplayerxp/libmpcodecs/vd.cpp mplayerxp/libmpcodecs/vd_divx4.cpp mplayerxp/libmpcodecs/vd_lavc.cpp mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtree.cpp mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtree_msg.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mplayerxp.cpp mplayerxp/mpxp_msg.h mplayerxp/postproc/libmenu/menu.cpp mplayerxp/postproc/libmenu/menu.h mplayerxp/postproc/libmenu/menu_cmdlist.cpp mplayerxp/postproc/libmenu/menu_console.cpp mplayerxp/postproc/libmenu/menu_filesel.cpp mplayerxp/postproc/libmenu/menu_list.h mplayerxp/postproc/libmenu/menu_param.cpp mplayerxp/postproc/libmenu/menu_pt.cpp mplayerxp/postproc/libmenu/menu_txt.cpp Modified: mplayerxp/input2/input.cpp =================================================================== --- mplayerxp/input2/input.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/input2/input.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -523,12 +523,12 @@ return MPXP_Ok; } -mp_cmd_t* mp_input_parse_cmd(const char* _str) { +mp_cmd_t* mp_input_parse_cmd(const std::string& _str) { int i,l; char *ptr,*e; mp_cmd_t *cmd; const mp_cmd_t *cmd_def; - char *str=mp_strdup(_str); + char *str=mp_strdup(_str.c_str()); #ifdef MP_DEBUG assert(str != NULL); @@ -776,7 +776,7 @@ mp_cmd_t* ret; if(priv.cmd_binds) cmd = mp_input_find_bind_for_key(priv.cmd_binds,n,keys); - if(cmd == NULL) cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); + if(cmd == NULL) cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); if(cmd == NULL) { mpxp_warn<<"No bind found for key: "<<mp_input_get_key_name(priv,keys[0]); if(n > 1) { @@ -943,7 +943,7 @@ else if(r == MP_INPUT_DEAD) priv.cmd_fds[i].flags |= MP_FD_DEAD; continue; } - ret = mp_input_parse_cmd(cmd); + ret = mp_input_parse_cmd(cmd?cmd:""); delete cmd; if(!ret) continue; last_loop = i; Modified: mplayerxp/input2/input.h =================================================================== --- mplayerxp/input2/input.h 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/input2/input.h 2012-12-26 17:16:39 UTC (rev 603) @@ -145,7 +145,7 @@ // If pause is true, the next input will always return a pause command. extern mp_cmd_t* mp_input_get_cmd(libinput_t& handle,int time, int paused, int peek_only); - extern mp_cmd_t* mp_input_parse_cmd(const char* str); + extern mp_cmd_t* mp_input_parse_cmd(const std::string& str); /// These filter allow you to process the command before mplayer /// If a filter return a true value mp_input_get_cmd will return NULL Modified: mplayerxp/libmpcodecs/ad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpcodecs/ad.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -91,16 +91,17 @@ unsigned i; const audio_probe_t* probe; for (i=0; mpcodecs_ad_drivers[i] != &mpcodecs_ad_null; i++) { - MSG_V("Probing: %s\n",mpcodecs_ad_drivers[i]->info->driver_name); + mpxp_v<<"Probing: "<<mpcodecs_ad_drivers[i]->info->driver_name<<std::endl; if((probe=mpcodecs_ad_drivers[i]->probe(sh->wtag))!=NULL) { Opaque* priv=mpcodecs_ad_drivers[i]->preinit(*probe,sh,afi); - MSG_V("Driver: %s supports these outfmt for 0x%X wtag:\n" - ,mpcodecs_ad_drivers[i]->info->driver_name,sh->wtag); + mpxp_v<<"Driver: "<<mpcodecs_ad_drivers[i]->info->driver_name<<" supports these outfmt for "; + fourcc(mpxp_v,sh->wtag); + mpxp_v<<std::endl; for(i=0;i<Audio_MaxOutSample;i++) { - MSG_V("%X ",probe->sample_fmt[i]); + mpxp_v<<std::hex<<probe->sample_fmt[i]<<" "; if(probe->sample_fmt[i]==-1||probe->sample_fmt[i]==0) break; } - MSG_V("\n"); + mpxp_v<<std::endl; mpcodecs_ad_drivers[i]->uninit(*priv); delete priv; return probe; @@ -111,11 +112,11 @@ void afm_help(void) { unsigned i; - MSG_INFO("Available audio codec families/drivers:\n"); + mpxp_info<<"Available audio codec families/drivers:"<<std::endl; for(i=0;i<nddrivers;i++) { if(mpcodecs_ad_drivers[i]) if(mpcodecs_ad_drivers[i]->options) - MSG_INFO("\t%-10s %s\n",mpcodecs_ad_drivers[i]->info->driver_name,mpcodecs_ad_drivers[i]->info->descr); + mpxp_info<<"\t"<<std::left<<std::setw(10)<<mpcodecs_ad_drivers[i]->info->driver_name<<" "<<mpcodecs_ad_drivers[i]->info->descr<<std::endl; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } Modified: mplayerxp/libmpcodecs/vd.cpp =================================================================== --- mplayerxp/libmpcodecs/vd.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpcodecs/vd.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -97,20 +97,19 @@ unsigned i; const video_probe_t* probe; for (i=0; mpcodecs_vd_drivers[i] != &mpcodecs_vd_null; i++) { - MSG_V("Probing: %s\n",mpcodecs_vd_drivers[i]->info->driver_name); + mpxp_v<<"Probing: "<<mpcodecs_vd_drivers[i]->info->driver_name<<std::endl; if((probe=mpcodecs_vd_drivers[i]->probe(sh->fourcc))!=NULL) { Opaque* priv=mpcodecs_vd_drivers[i]->preinit(*probe,sh,psi); if(priv) { - const char* pfcc = reinterpret_cast<const char*>(&sh->fourcc); - MSG_V("Driver: %s supports these outfmt for %c%c%c%c fourcc:\n" - ,mpcodecs_vd_drivers[i]->info->driver_name - ,pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); + mpxp_v<<"Driver: "<<mpcodecs_vd_drivers[i]->info->driver_name<<" supports these outfmt for "; + fourcc(mpxp_v,sh->fourcc); + mpxp_v<<" fourcc:"<<std::endl; for(i=0;i<Video_MaxOutFmt;i++) { - pfcc = reinterpret_cast<const char*>(&probe->pix_fmt[i]); - MSG_V("%c%c%c%c (flg=%X) ",pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); + fourcc(mpxp_v,probe->pix_fmt[i]); + mpxp_v<<" (flg="<<probe->flags[i]<<")"<<std::endl; if(probe->pix_fmt[i]==0||probe->pix_fmt[i]==-1) break; } - MSG_V("\n"); + mpxp_v<<std::endl; mpcodecs_vd_drivers[i]->uninit(*priv); delete priv; return probe; @@ -122,11 +121,11 @@ void vfm_help(void) { unsigned i; - MSG_INFO("Available video codec families/drivers:\n"); + mpxp_info<<"Available video codec families/drivers:"<<std::endl; for(i=0;i<nddrivers;i++) { if(mpcodecs_vd_drivers[i]) if(mpcodecs_vd_drivers[i]->options) - MSG_INFO("\t%-10s %s\n",mpcodecs_vd_drivers[i]->info->driver_name,mpcodecs_vd_drivers[i]->info->descr); + mpxp_info<<"\t"<<std::setw(10)<<std::left<<mpcodecs_vd_drivers[i]->info->driver_name<<" "<<mpcodecs_vd_drivers[i]->info->descr<<std::endl; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } Modified: mplayerxp/libmpcodecs/vd_divx4.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -242,12 +242,13 @@ case IMGFMT_I420: case IMGFMT_IYUV: break; default: - MSG_ERR("Unsupported out_fmt: 0x%X\n",sh->codec->outfmt[sh->outfmtidx]); + mpxp_err<<"Unsupported out_fmt: "; fourcc(mpxp_err,sh->codec->outfmt[sh->outfmtidx]); + mpxp_err<<std::endl; return MPXP_False; } if(!(priv.decoder=priv.getDecore_ptr(sh->fourcc))) { - char *fcc=(char *)&(sh->fourcc); - MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",fcc[0],fcc[1],fcc[2],fcc[3]); + mpxp_err<<"Can't find decoder for "; fourcc(mpxp_err,sh->fourcc); + mpxp_err<<" fourcc"<<std::endl; return MPXP_False; } dinit.formatOut.fourCC=sh->codec->outfmt[sh->outfmtidx]; @@ -260,8 +261,8 @@ dinit.formatIn.fourCC=sh->fourcc; dinit.formatIn.framePeriod=sh->fps; if(priv.decoder(NULL, DEC_OPT_INIT, (any_t*) &priv.pHandle, &dinit)!=DEC_OK) { - char *fcc=(char *)&(dinit.formatOut); - MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",fcc[0],fcc[1],fcc[2],fcc[3]); + mpxp_err<<"Can't find decoder for "; fourcc(mpxp_err,dinit.formatOut.fourCC); + mpxp_err<<" fourcc"<<std::endl; } MSG_V("INFO: DivX4Linux (libdivx.so) video codec init OK!\n"); fflush(stdout); Modified: mplayerxp/libmpcodecs/vd_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -443,10 +443,8 @@ default: { const char *fmt; fmt = (const char *)&sh->codec->outfmt[sh->outfmtidx]; - MSG_WARN("Can't apply postprocessing for"); - if(isprint(fmt[0]) && isprint(fmt[1]) && isprint(fmt[2]) && isprint(fmt[3])) - MSG_WARN(" '%c%c%c%c'!\n",fmt[0],fmt[1],fmt[2],fmt[3]); - else MSG_ERR(" 0x%08X!\n",sh->codec->outfmt[sh->outfmtidx]); + mpxp_warn<<"Can't apply postprocessing for"; + fourcc(mpxp_warn,sh->codec->outfmt[sh->outfmtidx]); break; } } Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -8,9 +8,8 @@ * * subconfig support by alex */ +#include <algorithm> -//#define DEBUG - #include <stdlib.h> #include <stdio.h> #include <ctype.h> @@ -39,12 +38,12 @@ inline void SET_RUNNING(m_config_t& c) { c.flags |= CONFIG_RUNNING; } inline int IS_RUNNING(const m_config_t& c) { return c.flags & CONFIG_RUNNING; } -typedef int (*cfg_func_arg_param_t)(const config_t *,const char *,const char *); -typedef int (*cfg_func_param_t)(const config_t *,const char *); +typedef int (*cfg_func_arg_param_t)(const config_t *,const std::string& ,const std::string& ); +typedef int (*cfg_func_param_t)(const config_t *,const std::string& ); typedef int (*cfg_func_t)(const config_t *); static void -m_config_save_option(m_config_t& config,const config_t* conf,const char* opt,const char *param) { +m_config_save_option(m_config_t& config,const config_t* conf,const std::string& opt,const std::string& param) { config_save_t* save; int sl=0; @@ -56,14 +55,16 @@ ; } - MSG_DBG2("Saving option %s\n",opt); + mpxp_dbg2<<"Saving option "<<opt<<std::endl; save = config.config_stack[config.cs_level]; if(save) { + std::string lopt=opt; + std::transform(lopt.begin(),lopt.end(),lopt.begin(), ::tolower); for(sl = 0; save[sl].opt != NULL; sl++){ // Check to not save the same arg two times - if(save[sl].opt == conf && (save[sl].opt_name == NULL || strcasecmp(save[sl].opt_name,opt) == 0)) + if(save[sl].opt == conf && (save[sl].opt_name == NULL || lopt==save[sl].opt_name)) break; } if(save[sl].opt) @@ -72,7 +73,7 @@ save = (config_save_t*)mp_realloc(save,(sl+2)*sizeof(config_save_t)); if(save == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",(sl+2)*sizeof(config_save_t),strerror(errno)); + mpxp_err<<"Can't allocate "<<((sl+2)*sizeof(config_save_t))<<" bytes of memory : "<<strerror(errno)<<std::endl; return; } memset(&save[sl],0,2*sizeof(config_save_t)); @@ -91,10 +92,10 @@ save[sl].param.as_pointer = *((char**)conf->p); break; case CONF_TYPE_INCLUDE : - if(param) - save->param.as_pointer = mp_strdup(param); + if(!param.empty()) + save->param.as_pointer = mp_strdup(param.c_str()); default : - MSG_ERR("Should never append in m_config_save_option : conf->type=%d\n",conf->type); + mpxp_err<<"Should never append in m_config_save_option : conf->type="<<conf->type<<std::endl; } config.config_stack[config.cs_level] = save; @@ -106,7 +107,7 @@ int i=-1; arg = save->opt_name ? save->opt_name : save->opt->name; - MSG_DBG2("Reverting option %s\n",arg); + mpxp_dbg2<<"Reverting option: "<<arg<<std::endl; switch(save->opt->type) { case CONF_TYPE_FLAG: @@ -141,7 +142,7 @@ switch(iter->opt->type) { case CONF_TYPE_INCLUDE : if (iter->param.as_pointer == NULL) { - MSG_ERR("We lost param for option %s?\n",iter->opt->name); + mpxp_err<<"We lost param for option "<<iter->opt->name<<"?"<<std::endl; return -1; } if ((((cfg_func_param_t) iter->opt->p)(iter->opt, (char*)iter->param.as_pointer)) < 0) @@ -150,7 +151,7 @@ } break; default : - MSG_ERR("Why do we reverse this : name=%s type=%d ?\n",save->opt->name,save->opt->type); + mpxp_err<<"Why do we reverse this : name="<<save->opt->name<<" type="<<save->opt->type<<" ?"<<std::endl; } return 1; @@ -161,12 +162,12 @@ config.cs_level++; config.config_stack = (config_save_t**)mp_realloc(config.config_stack ,sizeof(config_save_t*)*(config.cs_level+1)); if(config.config_stack == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*(config.cs_level+1),strerror(errno)); + mpxp_err<<"Can't allocate "<<(sizeof(config_save_t*)*(config.cs_level+1))<<" bytes of memory : "<<strerror(errno)<<std::endl; config.cs_level = -1; return; } config.config_stack[config.cs_level] = NULL; - MSG_DBG2("Config pushed level=%d\n",config.cs_level); + mpxp_dbg2<<"Config pushed level="<<config.cs_level<<std::endl; } int m_config_pop(m_config_t& config) { @@ -184,11 +185,11 @@ config.config_stack = (config_save_t**)mp_realloc(config.config_stack ,sizeof(config_save_t*)*config.cs_level); config.cs_level--; if(config.cs_level > 0 && config.config_stack == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*config.cs_level,strerror(errno)); + mpxp_err<<"Can't allocate memory"<<std::endl; config.cs_level = -1; return -1; } - MSG_DBG2("Config poped level=%d\n",config.cs_level); + mpxp_dbg2<<"Config poped level="<<config.cs_level<<std::endl; return ret; } @@ -227,39 +228,37 @@ return 1; } -static int config_is_entry_option(m_config_t& config,const char *opt,const char *param) { - play_tree_t* entry = NULL; +static int config_is_entry_option(m_config_t& config,const std::string& opt,const std::string& param) { + play_tree_t* entry = NULL; - if(strcasecmp(opt,"playlist") == 0) { // We handle playlist here - if(!param) - return ERR_MISSING_PARAM; - entry = parse_playlist_file(config.libinput,param); - if(!entry) { - MSG_ERR( "Playlist parsing failed: %s\n",param); - return 1; + std::string lopt=opt; + std::transform(lopt.begin(),lopt.end(),lopt.begin(), ::tolower); + if(lopt=="playlist") { // We handle playlist here + if(param.empty()) return ERR_MISSING_PARAM; + entry = parse_playlist_file(config.libinput,param); + if(!entry) { + mpxp_err<<"Playlist parsing failed: "<<param<<std::endl; + return 1; + } } - } - if(entry) { - if(config.last_entry) - play_tree_append_entry(config.last_entry,entry); - else - play_tree_set_child(config.pt,entry); - config.last_entry = entry; - if(config.parser_mode == COMMAND_LINE) - UNSET_GLOBAL(config); - return 1; - } else + if(entry) { + if(config.last_entry) play_tree_append_entry(config.last_entry,entry); + else play_tree_set_child(config.pt,entry); + config.last_entry = entry; + if(config.parser_mode == COMMAND_LINE) UNSET_GLOBAL(config); + return 1; + } return 0; } -static MPXP_Rc cfg_include(m_config_t& conf,const char *filename){ +static MPXP_Rc cfg_include(m_config_t& conf,const std::string& filename){ return m_config_parse_config_file(conf, filename); } static int cfg_inc_int(int value){ return ++value; } -static int config_read_option(m_config_t& config,const config_t** conf_list,const char *opt,const char *param) +static int config_read_option(m_config_t& config,const config_t** conf_list,const std::string& opt,const std::string& param) { int i=0,nconf = 0; long tmp_int; @@ -268,36 +267,36 @@ char *endptr; const config_t* conf=NULL; - MSG_DBG3( "read_option: conf=%p opt='%s' param='%s'\n", - conf, opt, param); + mpxp_dbg3<<"read_option: opt='"<<opt<<"' param='"<<param<<"'"<<std::endl; + std::string lopt=opt; + std::transform(lopt.begin(),lopt.end(),lopt.begin(), ::tolower); for(nconf = 0 ; conf_list[nconf] != NULL; nconf++) { conf = conf_list[nconf]; for (i = 0; conf[i].name != NULL; i++) { + std::string lname=conf[i].name; + std::transform(lname.begin(),lname.end(),lname.begin(), ::tolower); int namelength; /* allow 'aa*' in config.name */ -// MSG_DBG3( "cmp_option: conf=%s opt='%s'\n",conf[i].name,opt); namelength=strlen(conf[i].name); if ( (conf[i].name[namelength-1]=='*') && - !memcmp(opt, conf[i].name, namelength-1)) + !memcmp(opt.c_str(), conf[i].name, namelength-1)) goto option_found; - if (!strcasecmp(opt, conf[i].name)) - goto option_found; + if (lopt==lname) goto option_found; } } - MSG_ERR( "invalid option: %s\n",opt); + mpxp_err<<"invalid option: "<<opt<<std::endl; ret = ERR_NOT_AN_OPTION; goto out; option_found : - MSG_DBG3( "read_option: name='%s' p=%p type=%d\n", - conf[i].name, conf[i].p, conf[i].type); + mpxp_dbg3<<"read_option: name='"<<conf[i].name<<"' type="<<conf[i].type<<std::endl; if (conf[i].flags & CONF_NOCFG && config.parser_mode == CONFIG_FILE) { - MSG_ERR( "this option can only be used on command line:\n", opt); + mpxp_err<<"this option can only be used on command line:"<<opt<<std::endl; ret = ERR_NOT_AN_OPTION; goto out; } if (conf[i].flags & CONF_NOCMD && config.parser_mode == COMMAND_LINE) { - MSG_ERR( "this option can only be used in config file:\n", opt); + mpxp_err<<"this option can only be used in config file:"<<opt<<std::endl; ret = ERR_NOT_AN_OPTION; goto out; } @@ -315,119 +314,118 @@ case CONF_TYPE_FLAG: /* flags need a parameter in config file */ if (config.parser_mode == CONFIG_FILE) { - if (!strcasecmp(param, "yes") || /* any other language? */ - !strcasecmp(param, "ja") || - !strcasecmp(param, "si") || - !strcasecmp(param, "igen") || - !strcasecmp(param, "y") || - !strcasecmp(param, "j") || - !strcasecmp(param, "i") || - !strcmp(param, "1")) + std::string lparm=param; + std::transform(lparm.begin(),lparm.end(),lparm.begin(), ::tolower); + if (lparm=="yes" || /* any other language? */ + lparm=="ja" || + lparm=="si" || + lparm=="igen" || + lparm=="y" || + lparm=="j" || + lparm=="i" || + lparm=="1") *((int *) conf[i].p) = conf[i].max; - else if (!strcasecmp(param, "no") || - !strcasecmp(param, "nein") || - !strcasecmp(param, "nicht") || - !strcasecmp(param, "nem") || - !strcasecmp(param, "n") || - !strcmp(param, "0")) + else if (lparm=="no" || + lparm=="nein" || + lparm=="nicht" || + lparm=="nem" || + lparm=="n" || + lparm=="0") *((int *) conf[i].p) = conf[i].min; else { - MSG_ERR( "invalid parameter for flag: %s\n", param); + mpxp_err<<"invalid parameter for flag: "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } ret = 1; } else { /* parser_mode == COMMAND_LINE */ *((int *) conf[i].p) = conf[i].max; - MSG_DBG3("assigning %s=%i as flag value\n",conf[i].name,conf[i].max); + mpxp_dbg3<<"assigning "<<conf[i].name<<"="<<conf[i].max<<" as flag value"<<std::endl; ret = 0; } break; case CONF_TYPE_INT: - if (param == NULL) + if (param.empty()) goto err_missing_param; - tmp_int = strtol(param, &endptr, 0); + tmp_int = ::strtol(param.c_str(), &endptr, 0); if (*endptr) { - MSG_ERR( "parameter must be an integer: %s\n", param); + mpxp_err<<"parameter must be an integer: "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } if (conf[i].flags & CONF_MIN) if (tmp_int < conf[i].min) { - MSG_ERR( "parameter must be >= %d: %s\n", (int) conf[i].min, param); + mpxp_err<<"parameter must be >= "<<(int) conf[i].min<<": "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } if (conf[i].flags & CONF_MAX) if (tmp_int > conf[i].max) { - MSG_ERR( "parameter must be <= %d: %s\n", (int) conf[i].max, param); + mpxp_err<<"parameter must be <= "<<(int) conf[i].max<<": "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } *((int *) conf[i].p) = tmp_int; - MSG_DBG3("assigning %s=%i as int value\n",conf[i].name,tmp_int); + mpxp_dbg3<<"assigning "<<conf[i].name<<"="<<tmp_int<<" as int value"<<std::endl; ret = 1; break; case CONF_TYPE_FLOAT: - if (param == NULL) + if (param.empty()) goto err_missing_param; - tmp_float = strtod(param, &endptr); + tmp_float = ::strtod(param.c_str(), &endptr); if ((*endptr == ':') || (*endptr == '/')) - tmp_float /= strtod(endptr+1, &endptr); + tmp_float /= ::strtod(endptr+1, &endptr); if (*endptr) { - MSG_ERR( "parameter must be a floating point number" - " or a ratio (numerator[:/]denominator): %s\n", param); + mpxp_err<<"parameter must be a floating point number or a ratio (numerator[:/]denominator): "<<param<<std::endl; ret = ERR_MISSING_PARAM; goto out; } if (conf[i].flags & CONF_MIN) if (tmp_float < conf[i].min) { - MSG_ERR( "parameter must be >= %f: %s\n", conf[i].min, param); + mpxp_err<<"parameter must be >= "<<(float)conf[i].min<<": "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } if (conf[i].flags & CONF_MAX) if (tmp_float > conf[i].max) { - MSG_ERR( "parameter must be <= %f: %s\n", conf[i].max, param); + mpxp_err<<"parameter must be <= "<<(float)conf[i].max<<": "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } *((float *) conf[i].p) = tmp_float; - MSG_DBG3("assigning %s=%f as float value\n",conf[i].name,tmp_float); + mpxp_dbg3<<"assigning "<<conf[i].name<<"="<<tmp_float<<" as float value"<<std::endl; ret = 1; break; case CONF_TYPE_STRING: - if (param == NULL) + if (param.empty()) goto err_missing_param; if (conf[i].flags & CONF_MIN) - if (strlen(param) < conf[i].min) { - MSG_ERR( "parameter must be >= %d chars: %s\n", - (int) conf[i].min, param); + if (param.length() < conf[i].min) { + mpxp_err<<"parameter must be >= "<<(int) conf[i].min<<" chars: "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } if (conf[i].flags & CONF_MAX) - if (strlen(param) > conf[i].max) { - MSG_ERR( "parameter must be <= %d chars: %s\n", - (int) conf[i].max, param); + if (param.length() > conf[i].max) { + mpxp_err<<"parameter must be <= "<<(int) conf[i].max<<" chars: "<<param<<std::endl; ret = ERR_OUT_OF_RANGE; goto out; } - *((char **) conf[i].p) = mp_strdup(param); + *((char **) conf[i].p) = mp_strdup(param.c_str()); m_config_add_dynamic(config,*((char **) conf[i].p)); - MSG_DBG3("assigning %s=%s as string value\n",conf[i].name,param); + mpxp_dbg3<<"assigning "<<conf[i].name<<"="<<param<<" as string value"<<std::endl; ret = 1; break; case CONF_TYPE_INC: @@ -435,7 +433,7 @@ ret = 1; break; case CONF_TYPE_INCLUDE: - if (param == NULL) + if (param.empty()) goto err_missing_param; if (cfg_include(config, param) < 0) { ret = ERR_FUNC_ERR; @@ -444,103 +442,89 @@ ret = 1; break; case CONF_TYPE_PRINT: - MSG_INFO("%s", (char *) conf[i].p); + mpxp_info<<(char *)conf[i].p; exit(1); default: - MSG_ERR( "Unknown config type specified in conf-mplayerxp.h!\n"); + mpxp_err<<"Unknown config type specified in conf-mplayerxp.h!"<<std::endl; break; } out: if(ret >= 0 && ! IS_RUNNING(config) && ! IS_GLOBAL(config) && ! (conf[i].flags & CONF_GLOBAL) && conf[i].type != CONF_TYPE_SUBCONFIG ) { play_tree_t* dest = config.last_entry ? config.last_entry : config.last_parent; - char* o; - if(config.sub_conf) { - o = new char [(strlen(config.sub_conf) + 1 + strlen(opt) + 1)]; - sprintf(o,"%s:%s",config.sub_conf,opt); - } else - o =mp_strdup(opt); + std::string o; + if(config.sub_conf) o=std::string(config.sub_conf)+":"+opt; + else o=opt; if(ret == 0) - play_tree_set_param(dest,o,NULL); + play_tree_set_param(dest,o,""); else if(ret > 0) play_tree_set_param(dest,o,param); - delete o; m_config_pop(config); } return ret; err_missing_param: - MSG_ERR( "missing parameter for option: %s\n", opt); + mpxp_err<<"missing parameter for option: "<<opt<<std::endl; ret = ERR_MISSING_PARAM; goto out; } -static const config_t* m_config_find_option(const config_t**list,const char *name); +static const config_t* m_config_find_option(const config_t**list,const std::string& name); -int m_config_set_option(m_config_t& config,const char *opt,const char *param) { - const char *e; - const config_t**clist=config.opt_list; - MSG_DBG2( "Setting option %s=%s\n",opt,param); - clist = config.opt_list; +int m_config_set_option(m_config_t& config,const std::string& _opt,const std::string& param) { + size_t e; + const config_t**clist=config.opt_list; + std::string opt=_opt; + std::string s; + mpxp_dbg2<<"Setting option "<<opt<<"="<<param<<std::endl; + clist = config.opt_list; - if(strchr(opt,'.')) { - int flg,ret; - const config_t *subconf=NULL; - const config_t* olist[] = { NULL, NULL }; - MSG_DBG2("Parsing %s as subconfig\n",opt); - do { - if(!(e = strchr(opt,'.'))) break; - if((e-opt)>0) { - char* s = new char [e-opt+1]; - strncpy(s,opt,e-opt); - s[e-opt] = '\0'; - MSG_DBG2("Treat %s as subconfig name\n",s); + e=opt.find('.'); + if(e!=std::string::npos) { + int flg,ret; + const config_t *subconf=NULL; + const config_t* olist[] = { NULL, NULL }; + mpxp_dbg2<<"Parsing "<<opt<<" as subconfig"<<std::endl; + do { + if((e = opt.find('.'))==std::string::npos) break; + s=opt.substr(0,e); + mpxp_dbg2<<"Treat "<<s<<" as subconfig name"<<std::endl; subconf = m_config_find_option(clist?clist:olist,s); clist=NULL; - delete s; - MSG_DBG2("returned %p as subconfig name\n",subconf); if(!subconf) return ERR_NO_SUBCONF; if(subconf->type!=CONF_TYPE_SUBCONFIG) return ERR_NO_SUBCONF; olist[0] = reinterpret_cast<const config_t*>(subconf->p); - opt = e+1; - MSG_DBG2("switching next subconf=%s\n",subconf->name); - } - }while(1); - flg=config.flags; - config.flags|=CONFIG_GLOBAL; - ret=config_read_option(config,olist,opt,param); - config.flags=flg; - return ret; - } - - e = strchr(opt,':'); - if(e && e[1] != '\0') { - int ret; - const config_t* opt_list[] = { NULL, NULL }; - char* s = new char [e-opt+1]; - strncpy(s,opt,e-opt); - s[e-opt] = '\0'; - opt_list[0] = (const config_t*)m_config_get_option_ptr(config,s); - if(!opt_list[0]) { - MSG_ERR("m_config_set_option %s=%s : no %s subconfig\n",opt,param,s); - delete s; - return ERR_NOT_AN_OPTION; + opt = opt.substr(e+1); + mpxp_dbg2<<"switching next subconf="<<subconf->name<<std::endl; + }while(1); + flg=config.flags; + config.flags|=CONFIG_GLOBAL; + ret=config_read_option(config,olist,opt,param); + config.flags=flg; + return ret; } - e++; - s = (char*)mp_realloc(s,strlen(e) + 1); - strcpy(s,e); - ret = config_read_option(config,opt_list,s,param); - delete s; - return ret; - } - return config_read_option(config,config.opt_list,opt,param); + e = opt.find(':'); + if(e!=std::string::npos && e<(opt.length()-1)) { + int ret; + const config_t* opt_list[] = { NULL, NULL }; + s=opt.substr(0,e); + opt_list[0] = (const config_t*)m_config_get_option_ptr(config,s); + if(!opt_list[0]) { + mpxp_err<<"m_config_set_option "<<opt<<"="<<param<<" : no "<<s<<" subconfig"<<std::endl; + return ERR_NOT_AN_OPTION; + } + s=opt.substr(e+1); + ret = config_read_option(config,opt_list,s,param); + return ret; + } + return config_read_option(config,config.opt_list,opt,param); } static void PRINT_LINENUM(const std::string& conffile,int line_num) { mpxp_err<<conffile<<"("<<line_num<<")"<<std::endl; } static const int MAX_LINE_LEN=1000; static const int MAX_OPT_LEN=100; static const int MAX_PARAM_LEN=100; -MPXP_Rc m_config_parse_config_file(m_config_t& config,const char *conffile) +MPXP_Rc m_config_parse_config_file(m_config_t& config,const std::string& conffile) { FILE *fp; char *line; @@ -555,10 +539,10 @@ MPXP_Rc ret = MPXP_Ok; int errors = 0; - if (++config.recursion_depth > 1) MSG_INFO("Reading config file: %s", conffile); + if (++config.recursion_depth > 1) mpxp_info<<"Reading config file: "<<conffile<<std::endl; if (config.recursion_depth > MAX_RECURSION_DEPTH) { - MSG_FATAL(": too deep 'include'. check your configfiles\n"); + mpxp_fatal<<": too deep 'include'. check your configfiles"<<std::endl; ret = MPXP_False; goto out; } @@ -569,22 +553,22 @@ } if ((line = new char [MAX_LINE_LEN + 1]) == NULL) { - MSG_FATAL("\ncan't get memory for 'line': %s", strerror(errno)); + mpxp_fatal<<"can't get memory for 'line': "<<strerror(errno)<<std::endl; ret = MPXP_False; goto out; } - if ((fp = fopen(conffile, "r")) == NULL) { - if (config.recursion_depth > 1) MSG_ERR(": %s\n", strerror(errno)); + if ((fp = ::fopen(conffile.c_str(), "r")) == NULL) { + if (config.recursion_depth > 1) mpxp_err<<": "<<strerror(errno)<<std::endl; delete line; ret = MPXP_Ok; goto out; } - if (config.recursion_depth > 1) MSG_FATAL("\n"); + if (config.recursion_depth > 1) mpxp_fatal<<std::endl; while (fgets(line, MAX_LINE_LEN, fp)) { if (errors >= 16) { - MSG_FATAL("too many errors\n"); + mpxp_fatal<<"too many errors"<<std::endl; goto out; } @@ -739,7 +723,7 @@ if ((*opt == '-') && (*(opt+1) == '-')) { no_more_opts = 1; if (i+1 >= argc) { - MSG_ERR( "You added '--' but no filenames presented!\n"); + mpxp_err<<"You added '--' but no filenames presented!"<<std::endl; goto err_out; } continue; @@ -759,7 +743,7 @@ if((opt[0] == '}') && (opt[1] == '\0')) { if( ! config.last_parent || ! config.last_parent->parent) { - MSG_ERR( "too much }-\n"); + mpxp_err<<"too much }-"<<std::endl; goto err_out; } config.last_entry = config.last_parent; @@ -773,7 +757,7 @@ unsigned sz; opt++; - MSG_DBG2( "this_option: %s\n", opt); + mpxp_dbg2<<"this_option: "<<opt<<std::endl; parm = argv[i+1]; item=opt; assign = strchr(opt,'='); @@ -784,8 +768,8 @@ item[sz]='\0'; parm = mp_strdup(assign+1); } - tmp = m_config_set_option(config, item, parm); - if(!tmp && assign) MSG_ERR("Option '%s' doesn't require arguments\n",item); + tmp = m_config_set_option(config, std::string(item?item:""), std::string(parm?parm:"")); + if(!tmp && assign) mpxp_err<<"Option '"<<item<<"' doesn't require arguments"<<std::endl; if(assign) { delete item; delete parm; @@ -798,13 +782,12 @@ case ERR_OUT_OF_RANGE: case ERR_NO_SUBCONF: case ERR_FUNC_ERR: - MSG_ERR( "Error '%s' while parsing option: '%s'!\n" - ,tmp==ERR_NOT_AN_OPTION?"no-option": + mpxp_err<<"Error '"<< + (tmp==ERR_NOT_AN_OPTION?"no-option": tmp==ERR_MISSING_PARAM?"missing-param": tmp==ERR_OUT_OF_RANGE?"out-of-range": - tmp==ERR_NO_SUBCONF?"no-subconfig": - "func-error" - ,opt); + tmp==ERR_NO_SUBCONF?"no-subconfig":"func-error") + <<"' while parsing option: '"<<opt<<"'"<<std::endl; goto err_out; default: i += tmp; @@ -813,7 +796,7 @@ } } else /* filename */ { play_tree_t* entry = play_tree_new(); - MSG_DBG2("Adding file %s\n",argv[i]); + mpxp_dbg2<<"Adding file "<<argv[i]<<std::endl; play_tree_add_file(entry,argv[i]); if(strcasecmp(argv[i],"-") == 0) m_config_set_option(config,"use-stdin",NULL); /* opt is not an option -> treat it as a filename */ @@ -825,13 +808,13 @@ } --config.recursion_depth; - if(config.last_parent != config.pt) MSG_ERR("Missing }- ?\n"); + if(config.last_parent != config.pt) mpxp_err<<"Missing }- ?"<<std::endl; UNSET_GLOBAL(config); SET_RUNNING(config); return MPXP_Ok; err_out: --config.recursion_depth; - MSG_ERR( "command line: %s\n", argv[i]); + mpxp_err<<"command line: "<<argv[i]<<std::endl; return MPXP_False; } } // namespace mpxp @@ -847,7 +830,7 @@ conf_list = (const config_t**)mp_realloc(conf_list,sizeof(struct conf*)*(list_len+2)); if(conf_list == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(struct conf*)*(list_len+2),strerror(errno)); + mpxp_err<<"Can't allocate memory"<<std::endl; return 0; } conf_list[list_len] = args; @@ -858,42 +841,41 @@ return 1; } -static const config_t* m_config_find_option(const config_t **list,const char *name) { - unsigned i,j; - const config_t *conf; - if(list) { - for(j = 0; list[j] != NULL ; j++) { - conf = list[j]; - for(i=0; conf[i].name != NULL; i++) { - if(strcasecmp(conf[i].name,name) == 0) - return &conf[i]; - } +static const config_t* m_config_find_option(const config_t **list,const std::string& name) { + unsigned i,j; + const config_t *conf; + if(list) { + std::string ln=name; + std::transform(ln.begin(),ln.end(),ln.begin(), ::tolower); + for(j = 0; list[j] != NULL ; j++) { + conf = list[j]; + for(i=0; conf[i].name != NULL; i++) { + std::string lcn=conf[i].name; + std::transform(lcn.begin(),lcn.end(),lcn.begin(), ::tolower); + if(lcn==ln) return &conf[i]; + } + } } - } - return NULL; + return NULL; } -const config_t* m_config_get_option(const m_config_t& config,const char* arg) { - const char *e; - const config_t **conf_list; - const config_t* cl[] = { NULL, NULL }; +const config_t* m_config_get_option(const m_config_t& config,const std::string& arg) { + size_t e; + const config_t **conf_list; + const config_t* cl[] = { NULL, NULL }; - e = strchr(arg,':'); + e = arg.find(':'); - if(e) { - char *s; - s = new char [e-arg+1]; - strncpy(s,arg,e-arg); - s[e-arg] = '\0'; - cl[0] = m_config_get_option(config,s); - conf_list = cl; - delete s; - } else - conf_list = config.opt_list; - return m_config_find_option(conf_list,arg); + if(e!=std::string::npos) { + std::string s; + s=arg.substr(0,e); + cl[0] = m_config_get_option(config,s); + conf_list = cl; + } else conf_list = config.opt_list; + return m_config_find_option(conf_list,arg); } -any_t* m_config_get_option_ptr(const m_config_t& config,const char* arg) { +any_t* m_config_get_option_ptr(const m_config_t& config,const std::string& arg) { const config_t* conf; conf = m_config_get_option(config,arg); @@ -901,38 +883,34 @@ return conf->p; } -int m_config_get_int (const m_config_t& config,const char* arg,int* err_ret) { - int *ret; +int m_config_get_int (const m_config_t& config,const std::string& arg,int& err_ret) { + int *ret; - ret = (int*)m_config_get_option_ptr(config,arg); - if(err_ret) - *err_ret = 0; - if(!ret) { - if(err_ret) - *err_ret = 1; - return -1; - } else - return (*ret); + ret = (int*)m_config_get_option_ptr(config,arg); + err_ret = 0; + if(!ret) { + err_ret = 1; + return -1; + } + return *ret; } -float m_config_get_float (const m_config_t& config,const char* arg,int* err_ret) { - float *ret; +float m_config_get_float (const m_config_t& config,const std::string& arg,int& err_ret) { + float *ret; - ret = (float*)m_config_get_option_ptr(config,arg); - if(err_ret) - *err_ret = 0; - if(!ret) { - if(err_ret) - *err_ret = 1; - return -1; - } else - return (*ret); + ret = (float*)m_config_get_option_ptr(config,arg); + err_ret = 0; + if(!ret) { + err_ret = 1; + return -1; + } + return *ret; } inline int AS_INT(const config_t* c) { return *((int*)c->p); } inline void AS_INT(const config_t* c,int val) { *((int*)c->p)=val; } -int m_config_set_int(m_config_t& config,const char* arg,int val) { +int m_config_set_int(m_config_t& config,const std::string& arg,int val) { const config_t* opt; opt = m_config_get_option(config,arg); @@ -951,7 +929,7 @@ return 1; } -int m_config_set_float(m_config_t& config,const char* arg,float val) { +int m_config_set_float(m_config_t& config,const std::string& arg,float val) { const config_t* opt; opt = m_config_get_option(config,arg); @@ -971,7 +949,7 @@ } -int m_config_switch_flag(m_config_t& config,const char* opt) { +int m_config_switch_flag(m_config_t& config,const std::string& opt) { const config_t *conf; conf = m_config_get_option(config,opt); @@ -983,7 +961,7 @@ return 1; } -int m_config_set_flag(m_config_t& config,const char* opt, int state) { +int m_config_set_flag(m_config_t& config,const std::string& opt, int state) { const config_t *conf; conf = m_config_get_option(config,opt); @@ -993,7 +971,7 @@ return 1; } -int m_config_get_flag(const m_config_t& config,const char* opt) { +int m_config_get_flag(const m_config_t& config,const std::string& opt) { const config_t* conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return -1; @@ -1002,7 +980,7 @@ return -1; } -int m_config_is_option_set(const m_config_t& config,const char* arg) { +int m_config_is_option_set(const m_config_t& config,const std::string& arg) { const config_t* opt; config_save_t* save; int l,i; @@ -1025,90 +1003,88 @@ return 0; } -static void __m_config_show_options(unsigned ntabs,const char *pfx,const config_t *opts) { +static void __m_config_show_options(unsigned ntabs,const std::string& pfx,const config_t* opts) { unsigned i,n; i=0; while(opts[i].name) { if(opts[i].type==CONF_TYPE_SUBCONFIG && opts[i].p) { - char *newpfx; + std::string newpfx; unsigned pfxlen; - for(n=0;n<ntabs;n++) MSG_INFO(" "); - MSG_INFO("%s:\n",opts[i].help); + for(n=0;n<ntabs;n++) mpxp_info<<" "; + mpxp_info<<opts[i].help<<":"<<std::endl; pfxlen=strlen(opts[i].name)+1; - if(pfx) pfxlen+=strlen(pfx); - newpfx=new char [pfxlen+1]; - if(pfx) strcpy(newpfx,pfx); - else newpfx[0]='\0'; - strcat(newpfx,opts[i].name); - strcat(newpfx,"."); + if(!pfx.empty()) pfxlen+=pfx.length(); + if(!pfx.empty()) newpfx=pfx; + else newpfx=""; + newpfx+=opts[i].name; + newpfx+="."; __m_config_show_options(ntabs+2,newpfx,(const config_t *)opts[i].p); - delete newpfx; } else if(opts[i].type<=CONF_TYPE_PRINT) { - for(n=0;n<ntabs;n++) MSG_INFO(" "); - if(pfx) MSG_INFO("-%-s",pfx); - else MSG_INFO("-"); - MSG_INFO("%-11s %s" - ,opts[i].name - ,(opts[i].type==CONF_TYPE_PRINT && strcmp(opts[i].help,"show help")!=0)?opts[i].p:opts[i].help); + for(n=0;n<ntabs;n++) mpxp_info<<" "; + if(!pfx.empty()) mpxp_info<<std::left<<pfx<<std::endl; + else mpxp_info<<"-"<<std::endl; + mpxp_info<<std::left<<opts[i].name<<" " + <<((opts[i].type==CONF_TYPE_PRINT && strcmp(opts[i].help,"show help")!=0)?opts[i].p:opts[i].help) + <<std::endl; if((opts[i].flags&CONF_NOCFG)==0) { - MSG_INFO(" {%s=", - opts[i].type==CONF_TYPE_FLAG?"flg": + mpxp_info<<" {"<< + (opts[i].type==CONF_TYPE_FLAG?"flg": opts[i].type==CONF_TYPE_INT?"int": opts[i].type==CONF_TYPE_FLOAT?"flt": - opts[i].type==CONF_TYPE_STRING?"str":""); + opts[i].type==CONF_TYPE_STRING?"str":"")<<"="; switch(opts[i].type) { case CONF_TYPE_FLAG: { int defv = (*((int*)(opts[i].p)))?1:0; int max = opts[i].max ? 1:0; int res = !(defv^max); - MSG_INFO("%s",res?"ON":"OFF"); + mpxp_info<<(res?"ON":"OFF"); } break; case CONF_TYPE_STRING: { const char **defv = (const char**)(opts[i].p); - if(defv) MSG_INFO("\"%s\"",*defv); + if(defv) mpxp_info<<"\""<<*defv<<"\""; } break; case CONF_TYPE_INT: { int defv = *((int*)(opts[i].p)); - MSG_INFO("%i",defv); + mpxp_info<<defv; if((opts[i].flags&CONF_RANGE)==CONF_RANGE) { - MSG_INFO(" [%i...%i]",(int)opts[i].min,(int)opts[i].max); + mpxp_info<<" ["<<(int)opts[i].min<<"..."<<(int)opts[i].max<<"]"; } else if((opts[i].flags&CONF_MIN)==CONF_MIN) { - MSG_INFO(" <min=%i>",(int)opts[i].min); + mpxp_info<<" <min="<<(int)opts[i].min<<">"; } else if((opts[i].flags&CONF_MAX)==CONF_MAX) { - MSG_INFO(" <max=%i>",(int)opts[i].max); + mpxp_info<<" <max="<<(int)opts[i].max<<">"; } } break; case CONF_TYPE_FLOAT: { float defv = *((float*)(opts[i].p)); - MSG_INFO("%f",defv); + mpxp_info<<defv; if((opts[i].flags&CONF_RANGE)==CONF_RANGE) { - MSG_INFO(" [%f...%f]",(float)opts[i].min,(float)opts[i].max); + mpxp_info<<" ["<<(float)opts[i].min<<"..."<<(float)opts[i].max<<"]"; } else if((opts[i].flags&CONF_MIN)==CONF_MIN) { - MSG_INFO(" <min=%f>",(float)opts[i].min); + mpxp_info<<" <min="<<(float)opts[i].min<<">"; } else if((opts[i].flags&CONF_MAX)==CONF_MAX) { - MSG_INFO(" <max=%f>",(float)opts[i].max); + mpxp_info<<" <max="<<(float)opts[i].max<<">"; } } break; default: break; } - MSG_INFO("}"); + mpxp_info<<"}"; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } i++; }; @@ -1118,7 +1094,7 @@ unsigned j; const config_t *opts; j=0; - MSG_INFO("List of available command-line options:\n"); + mpxp_info<<"List of available command-line options:"<<std::endl; while((opts=args.opt_list[j])!=NULL) { __m_config_show_options(2,NULL,opts); j++; Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-26 17:16:39 UTC (rev 603) @@ -46,10 +46,10 @@ float min,max; const char *help; }; -typedef void (*cfg_default_func_t)(config_t*,const char*); +typedef void (*cfg_default_func_t)(config_t*,const std::string&); struct config_save_t; -struct m_config_t { +struct m_config_t : public Opaque { m_config_t(libinput_t& _libinput):libinput(_libinput) {} ~m_config_t() {} @@ -83,7 +83,7 @@ * 0 if can't open configfile * 1 on success */ -MPXP_Rc m_config_parse_config_file(m_config_t& config,const char *conffile); +MPXP_Rc m_config_parse_config_file(m_config_t& config,const std::string& conffile); /* parse_command_line returns: * -1 on error (invalid option...) @@ -119,55 +119,55 @@ /** Return 1 on sucess 0 on failure **/ -int m_config_set_option(m_config_t& config,const char *opt,const char *param); +int m_config_set_option(m_config_t& config,const std::string& opt,const std::string& param); /** Get the config struct defining an option * @return NULL on error **/ -const config_t* m_config_get_option(const m_config_t& config,const char* arg); +const config_t* m_config_get_option(const m_config_t& config,const std::string& arg); /** Get the p field of the struct defining an option * @return NULL on error **/ -any_t* m_config_get_option_ptr(const m_config_t& config,const char* arg); +any_t* m_config_get_option_ptr(const m_config_t& config,const std::string& arg); /** Tell is an option is alredy set or not * @return -1 one error (requested option arg exist) otherwise 0 or 1 **/ -int m_config_is_option_set(const m_config_t& config,const char* arg); +int m_config_is_option_set(const m_config_t& config,const std::string& arg); /** Return 0 on error 1 on success **/ -int m_config_switch_flag(m_config_t& config,const char* opt); +int m_config_switch_flag(m_config_t& config,const std::string& opt); /** Return 0 on error 1 on success **/ -int m_config_set_flag(m_config_t& config,const char* opt, int max); +int m_config_set_flag(m_config_t& config,const std::string& opt, int max); /** Return the value of a flag (O or 1) and -1 on error **/ -int m_config_get_flag(const m_config_t& config,const char* opt); +int m_config_get_flag(const m_config_t& config,const std::string& opt); /** Set the value of an int option * @return 0 on error 1 on success **/ -int m_config_set_int(m_config_t& config,const char* arg,int val); +int m_config_set_int(m_config_t& config,const std::string& arg,int val); /** Get the value of an int option * @param err_ret If it is not NULL it's set to 1 on error * @return the option value or -1 on error **/ -int m_config_get_int (const m_config_t&,const char* arg,int* err_ret); +int m_config_get_int (const m_config_t&,const std::string& arg,int& err_ret); /** Set the value of a float option * @return 0 on error 1 on success **/ -int m_config_set_float(m_config_t& config,const char* arg,float val); +int m_config_set_float(m_config_t& config,const std::string& arg,float val); /** Get the value of a float option * @param err_ret If it is not NULL it's set to 1 on error * @return the option value or -1 on error **/ -float m_config_get_float (const m_config_t&,const char* arg,int* err_ret); +float m_config_get_float (const m_config_t&,const std::string& arg,int& err_ret); #endif /* __CONFIG_H */ Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -1,6 +1,8 @@ #include "mpxp_config.h" #include "osdep/mplib.h" using namespace mpxp; +#include <algorithm> + #include <ctype.h> #include <stdlib.h> #include <stdio.h> @@ -302,13 +304,13 @@ return; } val = cattribs.get("VALUE"); - if(m_config_get_option(*mpxp_context().mconfig,name.c_str()) == NULL) { + if(m_config_get_option(*mpxp_context().mconfig,name) == NULL) { mpxp_warn<<"Found unknow param in asx: "<<name<<std::endl; if(!val.empty())mpxp_warn<<"="<<val<<std::endl; else mpxp_warn<<std::endl; return; } - play_tree_set_param(pt,mp_strdup(name.c_str()),mp_strdup(val.c_str())); + play_tree_set_param(pt,name,val); } void ASX_Parser::ref(ASX_Attrib& cattribs, play_tree_t* pt) const { @@ -323,7 +325,7 @@ if (href.substr(0,7)=="http://") { href = "mms"+href; } - play_tree_add_file(pt,mp_strdup(href.c_str())); + play_tree_add_file(pt,href); mpxp_v<<"Adding file "<<href<<" to element entry"<<std::endl; } @@ -375,7 +377,9 @@ warning_body_parse_error("ENTRY"); return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(element.name().c_str(),"REF") == 0) { + std::string uname=element.name(); + std::transform(uname.begin(),uname.end(),uname.begin(), ::toupper); + if(uname=="REF") { ref(element.attribs(),pt_ref); mpxp_dbg2<<"Adding element "<<element.name()<<" to entry"<<std::endl; nref++; @@ -412,28 +416,30 @@ warning_body_parse_error("REPEAT"); return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(element.name().c_str(),"ENTRY") == 0) { + std::string uname=element.name(); + std::transform(uname.begin(),uname.end(),uname.begin(), ::toupper); + if(uname=="ENTRY") { pt_entry = entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } - } else if(strcasecmp(element.name().c_str(),"ENTRYREF") == 0) { + } else if(uname=="ENTRYREF") { pt_entry = entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } - } else if(strcasecmp(element.name().c_str(),"REPEAT") == 0) { + } else if(uname=="REPEAT") { pt_entry = repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to repeat"<<std::endl; } - } else if(strcasecmp(element.name().c_str(),"PARAM") == 0) { + } else if(uname=="PARAM") { param(element.attribs(),pt_repeat); } else mpxp_dbg2<<"Ignoring element "<<element.name()<<std::endl; } @@ -466,7 +472,9 @@ return NULL; } - if(strcasecmp(element.name().c_str(),"ASX") != 0) { + std::string uname=element.name(); + std::transform(uname.begin(),uname.end(),uname.begin(), ::toupper); + if(uname=="ASX") { mpxp_err<<"first element isn't ASX, it's "<<element.name()<<std::endl; delete &parser; return NULL; @@ -487,21 +495,23 @@ delete &parser; return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(element.name().c_str(),"ENTRY") == 0) { + uname=element.name(); + std::transform(uname.begin(),uname.end(),uname.begin(), ::toupper); + if(uname=="ENTRY") { pt_entry = parser.entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to asx"<<std::endl; } - } else if(strcasecmp(element.name().c_str(),"ENTRYREF") == 0) { + } else if(uname=="ENTRYREF") { pt_entry = parser.entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); mpxp_dbg2<<"Adding element "<<element.name()<<" to asx"<<std::endl; } - } else if(strcasecmp(element.name().c_str(),"REPEAT") == 0) { + } else if(uname=="REPEAT") { pt_entry = parser.repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-26 11:39:18 UTC (rev 602) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-26 17:16:39 UTC (rev 603) @@ -1,6 +1,7 @@ #include "mpxp_config.h" #include "osdep/mplib.h" using namespace mpxp; +#include <algorithm> #include <stdlib.h> #include <string.h> @@ -19,7 +20,7 @@ play_tree_new(void) { play_tree_t* r = (play_tree_t*)mp_calloc(1,sizeof(play_tree_t)); if(r == NULL) - MSG_ERR("Can't allocate %d bytes of memory\n",sizeof(play_tree_t)); + mpxp_err<<"Can't allocate memory"<<std::endl; r->entry_type = PLAY_TREE_ENTRY_NODE; return r; } @@ -42,14 +43,6 @@ for(iter = pt->child ; iter != NULL ; iter = iter->next) iter->parent = NULL; - //if(pt->params) delete pt->params; - if(pt->files) { - int i; - for(i = 0 ; pt->files[i] != NULL ; i++) - delete pt->files[i]; - delete pt->files; - } - delete pt; } @@ -177,144 +170,101 @@ parent->child = iter; } else parent->child = pt; - } +void play_tree_add_file(play_tree_t* pt,const std::string& file) { + if(pt->entry_type != PLAY_TREE_ENTRY_NODE && + pt->entry_type != PLAY_TREE_ENTRY_FILE) + return; -void -play_tree_add_file(play_tree_t* pt,const char* file) { - int n = 0; - char* e; + size_t pos; + std::string tail,lf=file; + std::transform(lf.begin(),lf.end(),lf.begin(), ::tolower); - if(pt->entry_type != PLAY_TREE_ENTRY_NODE && - pt->entry_type != PLAY_TREE_ENTRY_FILE) - return; - - if(pt->files) { - for(n = 0 ; pt->files[n] != NULL ; n++) - /* NOTHING */; - } - pt->files = (char**)mp_realloc((any_t*)pt->files,(n+2)*sizeof(char*)); - if(pt->files ==NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",(n+2)*sizeof(char*)); - return; - } - - e = pt->files[n] = mp_strdup(file); - pt->files[n+1] = NULL; - - if(strncasecmp(e,"vcd://",6) == 0) { - pt->entry_type = PLAY_TREE_ENTRY_VCD; - memmove(e,e + 6,strlen(&e[6])+1); - } else if(strncasecmp(e,"dvd://",6) == 0) { - pt->entry_type = PLAY_TREE_ENTRY_DVD; - memmove(e,&e[6],strlen(&e[6])+1); - } else if(strncasecmp(e,"tv://",5) == 0) { - pt->entry_type = PLAY_TREE_ENTRY_TV; - memmove(e,&e[5],strlen(&e[5])+1); - } else - pt->entry_type = PLAY_TREE_ENTRY_FILE; - + if(lf.substr(0,6)=="vcd://") { + pt->entry_type = PLAY_TREE_ENTRY_VCD; + pos=6; + } else if(lf.substr(0,6)=="dvd://") { + pt->entry_type = PLAY_TREE_ENTRY_DVD; + pos=6; + } else if(lf.substr(0,5)=="tv://") { + pt->entry_type = PLAY_TREE_ENTRY_TV; + pos=5; + } else { + pt->entry_type = PLAY_TREE_ENTRY_FILE; + pos=0; + } + tail=file.substr(pos); + pt->files.push_back(tail); } -int -play_tree_remove_file(play_tree_t* pt,const char* file) { - int n,f = -1; +MPXP_Rc play_tree_remove_file(play_tree_t* pt,const std::string& file) { + int f = -1; + size_t n,sz=pt->files.size(); - for(n=0 ; pt->files[n] != NULL ; n++) { - if(strcmp(file,pt->files[n]) == 0) - f = n; - } + for(n=0; n<sz; n++) if(file==pt->files[n]) f = n; - if(f < 0) // Not found - return 0; + if(f < 0) return MPXP_False; // Not found - delete pt->files[f]; + pt->files.erase(pt->files.begin()+f); - if(n > 1) { - memmove(&pt->files[f],&pt->files[f+1],(n-f)*sizeof(char*)); - pt->files = (char**)mp_realloc((any_t*)pt->files,n*sizeof(char*)); - if(pt->files == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",(n+2)*sizeof(char*)); - return -1; - } - } else { - delete pt->files; - pt->files = NULL; - } - - return 1; + return MPXP_Ok; } -void play_tree_set_param(play_tree_t* pt,const char* name,const char* val) { - int n = 0,ni = -1; +void play_tree_set_param(play_tree_t* pt,const std::string& name,const std::string& val) { + int ni = -1; + size_t n,sz=pt->params.size(); - if(pt->params) { - for( ; pt->params[n].name != NULL ; n++) { - if(strcasecmp(pt->params[n].name,name) == 0) - ni = n; + std::string lname=name; + std::transform(lname.begin(),lname.end(),lname.begin(), ::tolower); + if(!pt->params.empty()) { + for(n=0; n<sz; n++) { + std::string lparm=pt->params[n].name; + std::transform(lparm.begin(),lparm.end(),lparm.begin(), ::tolower); + if(lname==lparm) ni = n; + } } - } - if(ni > 0) { - if(pt->params[n].value != NULL) delete pt->params[n].value; - pt->params[n].value = val != NULL ? mp_strdup(val) : NULL; - return; - } + if(ni > 0) { + pt->params[n].value = val; + return; + } - pt->params = (play_tree_param_t*)mp_realloc(pt->params,(n+2)*sizeof(play_tree_param_t)); - if(pt->params == NULL) - { - MSG_FATAL("Can't mp_realloc params\n"); - return; - } - pt->params[n].name = mp_strdup(name); - pt->params[n].value = val != NULL ? mp_strdup(val) : NULL; - memset(&pt->params[n+1],0,sizeof(play_tree_param_t)); - - return; + play_tree_param_t param; + param.name=name; + param.value=val; + pt->params.push_back(param); } -int play_tree_unset_param(play_tree_t* pt,const char* name) { - int n,ni = -1; +MPXP_Rc play_tree_unset_param(play_tree_t* pt,const std::string& name) { + int ni = -1; + size_t n,sz=pt->params.size(); - for(n = 0 ; pt->params[n].name != NULL ; n++) { - if(strcasecmp(pt->params[n].name,name) == 0) - ni = n; - } + std::string lname=name; + std::transform(lname.begin(),lname.end(),lname.begin(), ::tolower); + for(n=0;n<sz;n++) { + std::string lparm=pt->params[n].name; + std::transform(lparm.begin(),lparm.end(),lparm.begin(), ::tolower); + if(lname==lparm) ni = n; + } - if(ni < 0) - return 0; + if(ni < 0) return MPXP_False; - if(pt->params[ni].name) delete pt->params[ni].name; - if(pt->params[ni].value) delete pt->params[ni].value; + if(n > 1) pt->params.erase(pt->params.begin()+ni); + else pt->params.clear(); - if(n > 1) { - memmove(&pt->params[ni],&pt->params[ni+1],(n-ni)*sizeof(play_tree_param_t)); - pt->params = (play_tree_param_t*)mp_realloc(pt->params,n*sizeof(play_tree_param_t)); - if(pt->params == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",n*sizeof(play_tree_param_t)); - return -1; - } - } else { - delete pt->params; - pt->params = NULL; - } - - return 1; + return MPXP_Ok; } void play_tree_set_params_from(play_tree_t* dest,const play_tree_t* src) { - int i; + size_t i,sz=src->params.size(); - if(!src->params) - return; + if(src->params.empty()) return; - for(i = 0; src->params[i].name != NULL ; i++) - play_tree_set_param(dest,src->params[i].name,src->params[i].value); - if(src->flags & PLAY_TREE_RND) // pass the random flag too - dest->flags |= PLAY_TREE_RND; - + for(i=0;i<sz; i++) + play_tree_set_param(dest,src->params[i].name,src->params[i].value); + if(src->flags & PLAY_TREE_RND) // pass the random flag too + dest->flags |= PLAY_TREE_RND; } // all children if deep < 0 @@ -374,7 +324,7 @@ if(!(i->flags & PLAY_TREE_RND_PLAYED)) return i; } - MSG_ERR("Random stepping error r=%i\n",rnd); + mpxp_err<<"Random stepping error r="<<rnd<<std::endl; return NULL; } @@ -398,7 +348,6 @@ _PlayTree_Iter::~_PlayTree_Iter() {} void _PlayTree_Iter::push_params() { - int n; play_tree_t* pt; pt = tree; @@ -407,9 +356,10 @@ // while playing m_config_push(config); - if(pt->params == NULL) return; + if(pt->params.empty()) return; + size_t n,sz=pt->params.size(); - for(n = 0; pt->params[n].name != NULL ; n++) { + for(n=0; n<sz; n++) { int e; if((e = m_config_set_option(config,pt->params[n].name,pt->params[n].value)) < 0) mpxp_err<<"Error "<<e<<" while setting option '"<<pt->params[n].name<<"' with value '"<<pt->params[n].value<<"'"<<std::endl; @@ -493,8 +443,7 @@ tree = pt; - for(d = 0 ; tree->files[d] != NULL ; d++) /* NOTHING */; - num_files = d; + num_files = tree->files.size(); push_params(); entry_pushed = 1; @@ -535,9 +484,9 @@ } std::string _PlayTree_Iter::get_file(int d) { - const char* entry; + std::string entry; - if(tree->files == NULL) return ""; + if(tree->files.empty()) return ""; if(file >= num_files-1 || file < -1) return ""; if(d > 0) { if(file >= num_files - 1) file = 0; @@ -550,28 +499,27 @@ switch(tree->entry_type) { case PLAY_TREE_ENTRY_DVD : - if(strlen(entry) == 0) entry = "1"; + if(entry.length() == 0) entry = "1"; m_config_set_option(config,"dvd",entry); return std::string("DVD title ")+entry; case PLAY_TREE_ENTRY_VCD : - if(strlen(entry) == 0) entry = "1"; + if(entry.length() == 0) entry = "1"; m_config_set_option(config,"vcd",entry); return std::string("vcd://")+entry; case PLAY_TREE_ENTRY_TV: { - if(strlen(entry) != 0) { - char *val = new char [strlen(entry) + 11 + 1]; - const char* e; + if(entry.length() != 0) { + std::string val; + size_t e; std::string rs; - sprintf(val,"on:channel=%s",entry); + val="on:channel="+entry; m_config_set_option(config,"tv",val); rs="TV channel "; - e = strchr(entry,':'); - if(!e) rs+=std::string(entry).substr(0,255-11); + e = entry.find(':'); + if(e==std::string::npos) rs+=entry.substr(0,255-11); else { - if(entry-e > 255) e = entry+255; - rs+=std::string(entry).substr(0,val-e); + if(e > 255) e = 255; + rs+=entry.substr(0,e); } - delete val; return rs; } else m_config_set_option(config,"tv","on"); return "TV"; @@ -697,7 +645,7 @@ } //Add a new file as a new entry -void pt_add_file(play_tree_t** ppt,const char* filename) +void pt_add_file(play_tree_t** ppt,const std::string& filename) { play_tree_t *pt = *ppt, *entry = play_tree_new(); @@ -712,18 +660,12 @@ play_tree_set_params_from(entry,pt); } -void pt_add_gui_file(play_tree_t** ppt,const char* path,const char* file) +void pt_add_gui_file(play_tree_t** ppt,const std::string& path,const std::string& file) { - char* wholename = new char [strlen(path)+strlen(file)+... [truncated message content] |
From: <nic...@us...> - 2012-12-26 11:39:28
|
Revision: 602 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=602&view=rev Author: nickols_k Date: 2012-12-26 11:39:18 +0000 (Wed, 26 Dec 2012) Log Message: ----------- First attempt to remove illegal-patch! Note: gdb shows that malefactor(s) didn't stop destructive attacks on my project and substituted justly coded class. Well, according on sources this class doesn't work with mp_conf at all. Starting program: /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/ffmpeg -ao alsa:hw:1 -vo x11 M/l.avi -v -v -v -v ... Breakpoint 1, mpxp::MPlayerXP (argc=10, argv=0x7fffffffda88, envp= 0x7fffffffdae0) at mplayerxp.cpp:1699 1699 if(!mp_conf.xp) { (gdb) n 1704 if(mp_conf.test_av) { (gdb) print mp_conf.verbose $6 = 0 (gdb) n 1710 xp_num_cpu=get_number_cpu(); (gdb) n 1712 get_mmx_optimizations(); (gdb) n 1714 if(mp_conf.shuffle_playback) MPXPSys.playtree->flags|=PLAY_TREE_RND; (gdb) n 1715 else MPXPSys.playtree->flags&=~PLAY_TREE_RND; (gdb) n 1717 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) print mp_conf.verbose $7 = 0 (gdb) n 1718 if(MPXPSys.playtree) { (gdb) print mp_conf.verbose $8 = 0 (gdb) n 1717 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) print mp_conf.verbose $9 = 0 (gdb) n 1718 if(MPXPSys.playtree) { (gdb) print mp_conf.verbose $10 = 0 (gdb) n 1719 MPXPSys.playtree_iter = new _PlayTree_Iter(MPXPSys.playtree,m_config); (gdb) print mp_conf.verbose $11 = 0 (gdb) n 1720 if(MPXPSys.playtree_iter) { (gdb) print mp_conf.verbose $12 = 0 (gdb) n 1719 MPXPSys.playtree_iter = new _PlayTree_Iter(MPXPSys.playtree,m_config); (gdb) print mp_conf.verbose $13 = 0 (gdb) n 1720 if(MPXPSys.playtree_iter) { (gdb) print mp_conf.verbose $14 = 0 (gdb) print mp_conf.verbose $15 = 0 (gdb) n 1721 if(MPXPSys.playtree_iter->step(0,0) != PLAY_TREE_ITER_ENTRY) { (gdb) print mp_conf.verbose $16 = 0 (gdb) n 1725 filename = MPXPSys.playtree_iter->get_file(1); (gdb) print mp_conf.verbose $17 = 2 (gdb) print filename $18 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1126058 <_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4+24> ""}} (gdb) n 1729 mpxp_context().engine().xp_core->num_a_buffs = vo_conf.xp_buffs; (gdb) print filename $19 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x26770e8 "M/l.avi"}} (gdb) Modified Paths: -------------- mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libmpconf/codec-cfg.cpp mplayerxp/libmpconf/subopt-helper.cpp mplayerxp/libmpsub/vobsub.cpp mplayerxp/libmpsub/vobsub.h mplayerxp/libplaytree/playtree.cpp mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/postproc/libmenu/menu_pt.cpp Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-26 11:39:18 UTC (rev 602) @@ -19,18 +19,15 @@ #include <string.h> #include <errno.h> -#define COMMAND_LINE 0 -#define CONFIG_FILE 1 +enum { + COMMAND_LINE=0, + CONFIG_FILE=1, -#define CONFIG_GLOBAL (1<<0) -#define CONFIG_RUNNING (1<<1) + CONFIG_GLOBAL=(1<<0), + CONFIG_RUNNING=(1<<1), -#define MAX_RECURSION_DEPTH 8 - -#ifdef MP_DEBUG -#include <assert.h> -#endif - + MAX_RECURSION_DEPTH=8 +}; #include "mplayerxp.h" #include "cfgparser.h" #include "libplaytree/playtree.h" @@ -51,14 +48,6 @@ config_save_t* save; int sl=0; -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.cs_level >= 0); - assert(conf != NULL); - assert(opt != NULL); - assert( ! (conf->flags & CONF_NOSAVE)); -#endif - switch(conf->type) { case CONF_TYPE_PRINT : case CONF_TYPE_SUBCONFIG : @@ -116,13 +105,6 @@ config_save_t* iter=NULL; int i=-1; -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.cs_level >= 0); - assert(save != NULL); -#endif - - arg = save->opt_name ? save->opt_name : save->opt->name; MSG_DBG2("Reverting option %s\n",arg); @@ -176,11 +158,6 @@ void m_config_push(m_config_t& config) { -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.cs_level >= 0); -#endif - config.cs_level++; config.config_stack = (config_save_t**)mp_realloc(config.config_stack ,sizeof(config_save_t*)*(config.cs_level+1)); if(config.config_stack == NULL) { @@ -196,11 +173,6 @@ int i,ret= 1; config_save_t* cs; -#ifdef MP_DEBUG - assert(config != NULL); - //assert(config.cs_level > 0); -#endif - if(config.config_stack[config.cs_level] != NULL) { cs = config.config_stack[config.cs_level]; for(i=0; cs[i].opt != NULL ; i++ ) { @@ -221,9 +193,6 @@ } m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput) { -#ifdef MP_DEBUG - assert(pt != NULL); -#endif m_config_t& config = *new(zeromem) m_config_t(libinput); config.config_stack = (config_save_t**)mp_calloc(1,sizeof(config_save_t*)); SET_GLOBAL(config); // We always start with global options @@ -240,9 +209,6 @@ void m_config_free(m_config_t* config) { unsigned i; -#ifdef MP_DEBUG - assert(config != NULL); -#endif for(i=0;i<config->dynasize;i++) delete config->dynamics[i]; delete config->dynamics; config->dynasize=0; @@ -254,16 +220,6 @@ static int init_conf(m_config_t& config, int mode) { -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.pt != NULL); - assert(config.last_entry == NULL || config.last_entry->parent == config.pt); - - if (mode != COMMAND_LINE && mode != CONFIG_FILE) { - MSG_ERR( "init_conf: wrong mode!\n"); - return -1; - } -#endif config.parser_mode = mode; config.dynamics=NULL; config.dynasize=0; @@ -274,10 +230,6 @@ static int config_is_entry_option(m_config_t& config,const char *opt,const char *param) { play_tree_t* entry = NULL; -#ifdef MP_DEBUG - assert(config.pt != NULL); -#endif - if(strcasecmp(opt,"playlist") == 0) { // We handle playlist here if(!param) return ERR_MISSING_PARAM; @@ -316,11 +268,6 @@ char *endptr; const config_t* conf=NULL; -#ifdef MP_DEBUG - assert(config != NULL); - assert(conf_list != NULL); - assert(opt != NULL); -#endif MSG_DBG3( "read_option: conf=%p opt='%s' param='%s'\n", conf, opt, param); for(nconf = 0 ; conf_list[nconf] != NULL; nconf++) { @@ -496,67 +443,6 @@ } ret = 1; break; -#if 0 -// we have handled it in other function - case CONF_TYPE_SUBCONFIG: - { - char *subparam; - char *subopt; - int subconf_optnr; - config_t *subconf; - config_t *sublist[] = { NULL , NULL }; - char *token; - char *p; - - if (param == NULL) - goto err_missing_param; - - subparam = new char [strlen(param)+1]; - subopt = new char [strlen(param)+1]; - p = mp_strdup(param); // In case that param is a static string (cf man strtok) - - subconf = conf[i].p; - sublist[0] = subconf; - for (subconf_optnr = 0; subconf[subconf_optnr].name != NULL; subconf_optnr++) - /* NOTHING */; - config.sub_conf = opt; - token = strtok(p, (char *)&(":")); - while(token) - { - int sscanf_ret; - /* clear out */ - subopt[0] = subparam[0] = 0; - - sscanf_ret = sscanf(token, "%[^=]=%s", subopt, subparam); - - MSG_DBG3( "token: '%s', i=%d, subopt='%s', subparam='%s' (ret: %d)\n", token, i, subopt, subparam, sscanf_ret); - switch(sscanf_ret) - { - case 1: - subparam[0] = 0; - case 2: - if ((ret = config_read_option(config,sublist, subopt, subparam)) < 0) - { - MSG_ERR( "Subconfig parsing returned error: %d in token: %s\n", - ret, token); - goto out; - } - break; - default: - MSG_ERR( "Invalid subconfig argument! ('%s')\n", token); - ret = ERR_NOT_AN_OPTION; - goto out; - } - token = strtok(NULL, (char *)&(":")); - } - config.sub_conf = NULL; - delete subparam; - delete subopt; - delete p; - ret = 1; - break; - } -#endif case CONF_TYPE_PRINT: MSG_INFO("%s", (char *) conf[i].p); exit(1); @@ -568,9 +454,6 @@ if(ret >= 0 && ! IS_RUNNING(config) && ! IS_GLOBAL(config) && ! (conf[i].flags & CONF_GLOBAL) && conf[i].type != CONF_TYPE_SUBCONFIG ) { play_tree_t* dest = config.last_entry ? config.last_entry : config.last_parent; char* o; -#ifdef MP_DEBUG - assert(dest != NULL); -#endif if(config.sub_conf) { o = new char [(strlen(config.sub_conf) + 1 + strlen(opt) + 1)]; sprintf(o,"%s:%s",config.sub_conf,opt); @@ -596,14 +479,9 @@ int m_config_set_option(m_config_t& config,const char *opt,const char *param) { const char *e; const config_t**clist=config.opt_list; -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.opt_list != NULL); - assert(opt != NULL); -#endif MSG_DBG2( "Setting option %s=%s\n",opt,param); clist = config.opt_list; -#if 1 + if(strchr(opt,'.')) { int flg,ret; const config_t *subconf=NULL; @@ -633,7 +511,7 @@ config.flags=flg; return ret; } -#endif + e = strchr(opt,':'); if(e && e[1] != '\0') { int ret; @@ -658,12 +536,12 @@ return config_read_option(config,config.opt_list,opt,param); } +static void PRINT_LINENUM(const std::string& conffile,int line_num) { mpxp_err<<conffile<<"("<<line_num<<")"<<std::endl; } +static const int MAX_LINE_LEN=1000; +static const int MAX_OPT_LEN=100; +static const int MAX_PARAM_LEN=100; MPXP_Rc m_config_parse_config_file(m_config_t& config,const char *conffile) { -#define PRINT_LINENUM MSG_ERR("%s(%d): ", conffile, line_num) -#define MAX_LINE_LEN 1000 -#define MAX_OPT_LEN 100 -#define MAX_PARAM_LEN 100 FILE *fp; char *line; char opt[MAX_OPT_LEN + 1]; @@ -677,10 +555,6 @@ MPXP_Rc ret = MPXP_Ok; int errors = 0; -#ifdef MP_DEBUG - assert(config != NULL); - // assert(conf_list != NULL); -#endif if (++config.recursion_depth > 1) MSG_INFO("Reading config file: %s", conffile); if (config.recursion_depth > MAX_RECURSION_DEPTH) { @@ -730,34 +604,29 @@ line[line_pos] != '='; /* NOTHING */) { opt[opt_pos++] = line[line_pos++]; if (opt_pos >= MAX_OPT_LEN) { - PRINT_LINENUM; - MSG_ERR("too long option\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"too long option"<<std::endl; errors++; ret = MPXP_False; goto nextline; } } if (opt_pos == 0) { - PRINT_LINENUM; - MSG_ERR("parse error\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"parse error"<<std::endl; ret = MPXP_False; errors++; continue; } opt[opt_pos] = '\0'; -#ifdef MP_DEBUG - PRINT_LINENUM; - MSG_DBG2("option: %s\n", opt); -#endif - /* skip whitespaces */ while (isspace(line[line_pos])) ++line_pos; /* check '=' */ if (line[line_pos++] != '=') { - PRINT_LINENUM; - MSG_ERR("option without parameter\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"option without parameter"<<std::endl; ret = MPXP_False; errors++; continue; @@ -773,8 +642,8 @@ for (param_pos = 0; line[line_pos] != c; /* NOTHING */) { param[param_pos++] = line[line_pos++]; if (param_pos >= MAX_PARAM_LEN) { - PRINT_LINENUM; - MSG_ERR("too long parameter\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"too long parameter"<<std::endl; ret = MPXP_False; errors++; goto nextline; @@ -786,8 +655,8 @@ && line[line_pos] != '#'; /* NOTHING */) { param[param_pos++] = line[line_pos++]; if (param_pos >= MAX_PARAM_LEN) { - PRINT_LINENUM; - MSG_ERR("too long parameter\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"too long parameter"<<std::endl; ret = MPXP_False; errors++; goto nextline; @@ -798,26 +667,21 @@ /* did we read a parameter? */ if (param_pos == 0) { - PRINT_LINENUM; - MSG_ERR("option without parameter\n"); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"option without parameter"<<std::endl; ret = MPXP_False; errors++; continue; } -#ifdef MP_DEBUG - PRINT_LINENUM; - MSG_DBG2("parameter: %s\n", param); -#endif - /* now, check if we have some more chars on the line */ /* whitespace... */ while (isspace(line[line_pos])) ++line_pos; /* EOL / comment */ if (line[line_pos] != '\0' && line[line_pos] != '#') { - PRINT_LINENUM; - MSG_ERR("extra characters on line: %s\n", line+line_pos); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<"extra characters on line: "<<line+line_pos<<std::endl; ret = MPXP_False; } @@ -828,8 +692,8 @@ case ERR_OUT_OF_RANGE: case ERR_NO_SUBCONF: case ERR_FUNC_ERR: - PRINT_LINENUM; - MSG_ERR("%s\n", opt); + PRINT_LINENUM(conffile,line_num); + mpxp_err<<opt<<std::endl; ret = MPXP_False; errors++; continue; @@ -846,7 +710,8 @@ return ret; } -MPXP_Rc m_config_parse_command_line(m_config_t& config, int argc, char **argv, char **envp) +namespace mpxp { +MPXP_Rc mpxp_parse_command_line(m_config_t& config, int argc, char **argv, char **envp) { int i; int tmp; @@ -854,14 +719,6 @@ int no_more_opts = 0; UNUSED(envp); -#ifdef MP_DEBUG - assert(config != NULL); - assert(config.pt != NULL); - assert(argv != NULL); - assert(envp != NULL); - assert(argc >= 1); -#endif - if (init_conf(config, COMMAND_LINE) == -1) return MPXP_False; if(config.last_parent == NULL) config.last_parent = config.pt; /* in order to work recursion detection properly in parse_config_file */ @@ -972,25 +829,17 @@ UNSET_GLOBAL(config); SET_RUNNING(config); return MPXP_Ok; -#if 0 -err_out_mem: - MSG_ERR( "can't allocate memory for filenames (%s)\n", strerror(errno)); -#endif err_out: --config.recursion_depth; MSG_ERR( "command line: %s\n", argv[i]); return MPXP_False; } +} // namespace mpxp int m_config_register_options(m_config_t& config,const config_t *args) { int list_len = 0; const config_t** conf_list = config.opt_list; -#ifdef MP_DEBUG - assert(config != NULL); - assert(args != NULL); -#endif - if(conf_list) { for ( ; conf_list[list_len] != NULL; list_len++) /* NOTHING */; @@ -1029,11 +878,6 @@ const config_t **conf_list; const config_t* cl[] = { NULL, NULL }; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - e = strchr(arg,':'); if(e) { @@ -1052,11 +896,6 @@ any_t* m_config_get_option_ptr(const m_config_t& config,const char* arg) { const config_t* conf; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - conf = m_config_get_option(config,arg); if(!conf) return NULL; return conf->p; @@ -1065,11 +904,6 @@ int m_config_get_int (const m_config_t& config,const char* arg,int* err_ret) { int *ret; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - ret = (int*)m_config_get_option_ptr(config,arg); if(err_ret) *err_ret = 0; @@ -1084,11 +918,6 @@ float m_config_get_float (const m_config_t& config,const char* arg,int* err_ret) { float *ret; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - ret = (float*)m_config_get_option_ptr(config,arg); if(err_ret) *err_ret = 0; @@ -1106,11 +935,6 @@ int m_config_set_int(m_config_t& config,const char* arg,int val) { const config_t* opt; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - opt = m_config_get_option(config,arg); if(!opt || opt->type != CONF_TYPE_INT) @@ -1130,11 +954,6 @@ int m_config_set_float(m_config_t& config,const char* arg,float val) { const config_t* opt; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - opt = m_config_get_option(config,arg); if(!opt || opt->type != CONF_TYPE_FLOAT) @@ -1155,11 +974,6 @@ int m_config_switch_flag(m_config_t& config,const char* opt) { const config_t *conf; -#ifdef MP_DEBUG - assert(config != NULL); - assert(opt != NULL); -#endif - conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return 0; if( AS_INT(conf) == conf->min) AS_INT(conf,conf->max); @@ -1172,11 +986,6 @@ int m_config_set_flag(m_config_t& config,const char* opt, int state) { const config_t *conf; -#ifdef MP_DEBUG - assert(config != NULL); - assert(opt != NULL); -#endif - conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return 0; if(state) AS_INT(conf,conf->max); @@ -1186,11 +995,6 @@ int m_config_get_flag(const m_config_t& config,const char* opt) { -#ifdef MP_DEBUG - assert(config != NULL); - assert(opt != NULL); -#endif - const config_t* conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return -1; if(AS_INT(conf) == conf->max) return 1; @@ -1203,11 +1007,6 @@ config_save_t* save; int l,i; -#ifdef MP_DEBUG - assert(config != NULL); - assert(arg != NULL); -#endif - opt = m_config_get_option(config,arg); if(!opt) @@ -1325,5 +1124,3 @@ j++; }; } - -#undef AS_INT Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-26 11:39:18 UTC (rev 602) @@ -89,7 +89,9 @@ * -1 on error (invalid option...) * 1 otherwise */ -MPXP_Rc m_config_parse_command_line(m_config_t& config, int argc, char **argv, char **envp); +namespace mpxp { + MPXP_Rc mpxp_parse_command_line(m_config_t& config, int argc, char **argv, char **envp); +} m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput); Modified: mplayerxp/libmpconf/codec-cfg.cpp =================================================================== --- mplayerxp/libmpconf/codec-cfg.cpp 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpconf/codec-cfg.cpp 2012-12-26 11:39:18 UTC (rev 602) @@ -18,7 +18,6 @@ #include <unistd.h> #include <errno.h> #include <ctype.h> -#include <assert.h> #include <string.h> // for mmioFOURCC: Modified: mplayerxp/libmpconf/subopt-helper.cpp =================================================================== --- mplayerxp/libmpconf/subopt-helper.cpp 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpconf/subopt-helper.cpp 2012-12-26 11:39:18 UTC (rev 602) @@ -22,15 +22,10 @@ #include <stdlib.h> #include <string.h> #include <limits.h> -#include <assert.h> #include "subopt-helper.h" #include "global_msg.h" -#ifndef MP_DEBUG - #define NDEBUG -#endif - /* prototypes for argument parsing */ static char const * parse_int( char const * const str, int * const valp ); static char const * parse_str( char const * const str, strarg_t * const valp ); @@ -99,8 +94,6 @@ /* option was found */ next = 1; - assert( opts[idx].valp && "Need a pointer to store the arg!" ); - /* type specific code */ if ( opts[idx].type == OPT_ARG_BOOL ) { @@ -164,7 +157,6 @@ (float *)opts[idx].valp ); break; default: - assert( 0 && "Arg type of suboption doesn't exist!" ); last = NULL; // break parsing! } @@ -238,8 +230,6 @@ { char * endp; - assert( str && "parse_int(): str == NULL" ); - *valp = (int)strtol( str, &endp, 0 ); /* nothing was converted */ @@ -252,8 +242,6 @@ { char * endp; - assert( str && "parse_float(): str == NULL" ); - *valp = strtod( str, &endp ); /* nothing was converted */ @@ -262,7 +250,7 @@ return endp; } -#define QUOTE_CHAR '%' +static const char QUOTE_CHAR='%'; static char const * parse_str( char const * str, strarg_t * const valp ) { char const * match = strchr( str, ':' ); Modified: mplayerxp/libmpsub/vobsub.cpp =================================================================== --- mplayerxp/libmpsub/vobsub.cpp 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpsub/vobsub.cpp 2012-12-26 11:39:18 UTC (rev 602) @@ -82,7 +82,7 @@ int fd; }; -static mpeg_t * __FASTCALL__ mpeg_open(const char *filename) +static mpeg_t * __FASTCALL__ mpeg_open(const std::string& filename) { mpeg_t *res = new(zeromem) mpeg_t; int err = res == NULL; @@ -93,7 +93,7 @@ res->packet = NULL; res->packet_size = 0; res->packet_reserve = 0; - fd = open(filename, O_RDONLY); + fd = ::open(filename.c_str(), O_RDONLY); err = fd < 0; if (!err) { res->stream = new(zeromem) Stream(Stream::Type_Seekable); @@ -297,7 +297,7 @@ }; struct packet_queue_t { - char *id; + std::string id; packet_t *packets; unsigned int packets_reserve; unsigned int packets_size; @@ -320,7 +320,7 @@ static void __FASTCALL__ packet_queue_construct(packet_queue_t *queue) { - queue->id = NULL; + queue->id = ""; queue->packets = NULL; queue->packets_reserve = 0; queue->packets_size = 0; @@ -439,25 +439,16 @@ return 0; } -static int __FASTCALL__ vobsub_add_id(vobsub_t *vob, const char *id, size_t idlen, const unsigned int _index) +static int __FASTCALL__ vobsub_add_id(vobsub_t *vob, const std::string& id, const unsigned int _index) { if (vobsub_ensure_spu_stream(vob, _index) < 0) return -1; - if (id && idlen) { - if (vob->spu_streams[_index].id) - delete vob->spu_streams[_index].id; - vob->spu_streams[_index].id = new char [idlen + 1]; - if (vob->spu_streams[_index].id == NULL) { - MSG_ERR("vobsub_add_id: mp_malloc failure"); - return -1; - } - vob->spu_streams[_index].id[idlen] = 0; - memcpy(vob->spu_streams[_index].id, id, idlen); + if (!id.empty()) { + vob->spu_streams[_index].id=id; } vob->spu_streams_current = _index; if (mp_conf.verbose) - MSG_ERR( "[vobsub] subtitle (vobsubid): %d language %s\n", - _index, vob->spu_streams[_index].id); + mpxp_err<<"[vobsub] subtitle (vobsubid): "<<_index<<" language "<<vob->spu_streams[_index].id<<std::endl; return 0; } @@ -503,7 +494,7 @@ ++q; if (!isdigit(*q)) return -1; - return vobsub_add_id(vob, p, idlen, atoi(q)); + return vobsub_add_id(vob, p, atoi(q)); } static int __FASTCALL__ vobsub_parse_timestamp(vobsub_t *vob, const char *line) @@ -778,23 +769,23 @@ return res; } -int __FASTCALL__ vobsub_parse_ifo(any_t* _vob, const char *const name, unsigned int *palette, unsigned int *width, unsigned int *height, int force, int sid, char *langid) +int __FASTCALL__ vobsub_parse_ifo(any_t* _vob, const std::string& name, unsigned int *palette, unsigned int *width, unsigned int *height, int force, int sid, std::string& langid) { vobsub_t *vob = (vobsub_t*)_vob; int res = -1; - FILE *fd = fopen(name, "rb"); + FILE *fd = ::fopen(name.c_str(), "rb"); if (fd == NULL) { if (force) - MSG_WARN("VobSub: Can't open IFO file\n"); + mpxp_warn<<"VobSub: Can't open IFO file"<<std::endl; } else { // parse IFO header unsigned char block[0x800]; const char *const ifo_magic = "DVDVIDEO-VTS"; if (fread(block, sizeof(block), 1, fd) != 1) { if (force) - MSG_ERR("VobSub: Can't read IFO header\n"); + mpxp_err<<"VobSub: Can't read IFO header"<<std::endl; } else if (memcmp(block, ifo_magic, strlen(ifo_magic) + 1)) - MSG_ERR("VobSub: Bad magic in IFO header\n"); + mpxp_err<<"VobSub: Bad magic in IFO header"<<std::endl; else { unsigned long pgci_sector = block[0xcc] << 24 | block[0xcd] << 16 | block[0xce] << 8 | block[0xcf]; @@ -817,17 +808,15 @@ *height /= 2; break; default: - MSG_WARN("Vobsub: Unknown resolution %d \n", resolution); + mpxp_warn<<"Vobsub: Unknown resolution "<<resolution<<std::endl; } - if (langid && 0 <= sid && sid < 32) { - unsigned char *tmp = block + 0x256 + sid * 6 + 2; - langid[0] = tmp[0]; - langid[1] = tmp[1]; - langid[2] = 0; + if (!langid.empty() && 0 <= sid && sid < 32) { + char *tmp = (char *)block + 0x256 + sid * 6 + 2; + langid.assign(tmp,2); } if (fseek(fd, pgci_sector * sizeof(block), SEEK_SET) || fread(block, sizeof(block), 1, fd) != 1) - MSG_ERR("VobSub: Can't read IFO PGCI\n"); + mpxp_err<<"VobSub: Can't read IFO PGCI"<<std::endl; else { unsigned long idx; unsigned long pgc_offset = block[0xc] << 24 | block[0xd] << 16 @@ -846,13 +835,12 @@ return res; } -any_t* __FASTCALL__ vobsub_open(const char *const name,const char *const ifo,const int force,any_t** spu) +any_t* __FASTCALL__ vobsub_open(const std::string& name,const char *const ifo,const int force,any_t** spu) { vobsub_t *vob = new(zeromem) vobsub_t; if(spu) *spu = NULL; if (vob) { - char *buf; vob->custom = 0; vob->have_palette = 0; vob->orig_frame_width = 0; @@ -862,107 +850,95 @@ vob->spu_streams_current = 0; vob->delay = 0; vob->forced_subs=0; - buf = new char [strlen(name) + 5]; - if (buf) { - FILE *fd; - mpeg_t *mpg; - /* read in the info file */ - if(!ifo) { - strcpy(buf, name); - strcat(buf, ".ifo"); - vobsub_parse_ifo(vob,buf, vob->palette, &vob->orig_frame_width, &vob->orig_frame_height, force, -1, NULL); - } else - vobsub_parse_ifo(vob,ifo, vob->palette, &vob->orig_frame_width, &vob->orig_frame_height, force, -1, NULL); - /* read in the index */ - strcpy(buf, name); - strcat(buf, ".idx"); - fd = fopen(buf, "rb"); - if (fd == NULL) { - if(force) - MSG_ERR("VobSub: Can't open IDX file\n"); - else { - delete buf; - delete vob; - return NULL; - } - } else { - while (vobsub_parse_one_line(vob, fd) >= 0) - /* NOOP */ ; - fclose(fd); + std::string buf; + FILE *fd; + mpeg_t *mpg; + /* read in the info file */ + std::string stmp=""; + if(!ifo) { + buf=name+".ifo"; + vobsub_parse_ifo(vob,buf, vob->palette, &vob->orig_frame_width, &vob->orig_frame_height, force, -1, stmp); + } else + vobsub_parse_ifo(vob,ifo, vob->palette, &vob->orig_frame_width, &vob->orig_frame_height, force, -1, stmp); + /* read in the index */ + buf=name+".idx"; + fd = ::fopen(buf.c_str(), "rb"); + if (fd == NULL) { + if(force) + mpxp_err<<"VobSub: Can't open IDX file"<<std::endl; + else { + delete vob; + return NULL; } - /* if no palette in .idx then use custom colors */ - if ((vob->custom == 0)&&(vob->have_palette!=1)) - vob->custom = 1; - if (spu && vob->orig_frame_width && vob->orig_frame_height) - *spu = spudec_new_scaled_vobsub(vob->palette, vob->cuspal, vob->custom, vob->orig_frame_width, vob->orig_frame_height); + } else { + while (vobsub_parse_one_line(vob, fd) >= 0) /* NOOP */ ; + ::fclose(fd); + } + /* if no palette in .idx then use custom colors */ + if ((vob->custom == 0)&&(vob->have_palette!=1)) + vob->custom = 1; + if (spu && vob->orig_frame_width && vob->orig_frame_height) + *spu = spudec_new_scaled_vobsub(vob->palette, vob->cuspal, vob->custom, vob->orig_frame_width, vob->orig_frame_height); - /* read the indexed mpeg_stream */ - strcpy(buf, name); - strcat(buf, ".sub"); - mpg = mpeg_open(buf); - if (mpg == NULL) { - if(force) - MSG_ERR("VobSub: Can't open SUB file\n"); - else { - - delete buf; + /* read the indexed mpeg_stream */ + buf=name+".sub"; + mpg = mpeg_open(buf); + if (mpg == NULL) { + if(force) mpxp_err<<"VobSub: Can't open SUB file"<<std::endl; + else { delete vob; return NULL; - } - } else { - long last_pts_diff = 0; - while (!mpeg_eof(mpg)) { - off_t pos = mpeg_tell(mpg); - if (mpeg_run(mpg) < 0) { - if (!mpeg_eof(mpg)) - MSG_ERR("VobSub: mpeg_run error\n"); - break; - } - if (mpg->packet_size) { - if ((mpg->aid & 0xe0) == 0x20) { - unsigned int sid = mpg->aid & 0x1f; - if (vobsub_ensure_spu_stream(vob, sid) >= 0) { - packet_queue_t *queue = vob->spu_streams + sid; - /* get the packet to fill */ - if (queue->packets_size == 0 && packet_queue_grow(queue) < 0) - abort(); - while (queue->current_index + 1 < queue->packets_size - && queue->packets[queue->current_index + 1].filepos <= pos) - ++queue->current_index; - if (queue->current_index < queue->packets_size) { - packet_t *pkt; - if (queue->packets[queue->current_index].data) { - /* insert a new packet and fix the PTS ! */ - packet_queue_insert(queue); - queue->packets[queue->current_index].pts100 = - mpg->pts + last_pts_diff; - } - pkt = queue->packets + queue->current_index; - if (pkt->pts100 != UINT_MAX) { - if (queue->packets_size > 1) - last_pts_diff = pkt->pts100 - mpg->pts; - else - pkt->pts100 = mpg->pts; - /* FIXME: should not use mpg_sub internal informations, make a copy */ - pkt->data = mpg->packet; - pkt->size = mpg->packet_size; - mpg->packet = NULL; - mpg->packet_reserve = 0; - mpg->packet_size = 0; - } + } + } else { + long last_pts_diff = 0; + while (!mpeg_eof(mpg)) { + off_t pos = mpeg_tell(mpg); + if (mpeg_run(mpg) < 0) { + if (!mpeg_eof(mpg)) mpxp_err<<"VobSub: mpeg_run error"<<std::endl; + break; + } + if (mpg->packet_size) { + if ((mpg->aid & 0xe0) == 0x20) { + unsigned int sid = mpg->aid & 0x1f; + if (vobsub_ensure_spu_stream(vob, sid) >= 0) { + packet_queue_t *queue = vob->spu_streams + sid; + /* get the packet to fill */ + if (queue->packets_size == 0 && packet_queue_grow(queue) < 0) + abort(); + while (queue->current_index + 1 < queue->packets_size + && queue->packets[queue->current_index + 1].filepos <= pos) + ++queue->current_index; + if (queue->current_index < queue->packets_size) { + packet_t *pkt; + if (queue->packets[queue->current_index].data) { + /* insert a new packet and fix the PTS ! */ + packet_queue_insert(queue); + queue->packets[queue->current_index].pts100 = + mpg->pts + last_pts_diff; } + pkt = queue->packets + queue->current_index; + if (pkt->pts100 != UINT_MAX) { + if (queue->packets_size > 1) + last_pts_diff = pkt->pts100 - mpg->pts; + else + pkt->pts100 = mpg->pts; + /* FIXME: should not use mpg_sub internal informations, make a copy */ + pkt->data = mpg->packet; + pkt->size = mpg->packet_size; + mpg->packet = NULL; + mpg->packet_reserve = 0; + mpg->packet_size = 0; + } } - else - MSG_WARN("don't know what to do with subtitle #%u\n", sid); } + else mpxp_warn<<"don't know what to do with subtitle #"<<sid<<std::endl; } } - vob->spu_streams_current = vob->spu_streams_size; - while (vob->spu_streams_current-- > 0) - vob->spu_streams[vob->spu_streams_current].current_index = 0; - mpeg_free(mpg); } - delete buf; + vob->spu_streams_current = vob->spu_streams_size; + while (vob->spu_streams_current-- > 0) + vob->spu_streams[vob->spu_streams_current].current_index = 0; + mpeg_free(mpg); } } return vob; @@ -989,10 +965,10 @@ } } -char * __FASTCALL__ vobsub_get_id(any_t*vobhandle, unsigned int _index) +std::string __FASTCALL__ vobsub_get_id(any_t*vobhandle, unsigned int _index) { vobsub_t *vob = (vobsub_t *) vobhandle; - return (_index < vob->spu_streams_size) ? vob->spu_streams[_index].id : NULL; + return (_index < vob->spu_streams_size) ? vob->spu_streams[_index].id : ""; } unsigned int __FASTCALL__ vobsub_get_forced_subs_flag(void const * const vobhandle) @@ -1003,21 +979,22 @@ return 0; } -int __FASTCALL__ vobsub_set_from_lang(any_t*vobhandle,const char * lang) +int __FASTCALL__ vobsub_set_from_lang(any_t*vobhandle,const std::string& lang) { unsigned i; + size_t pos=0; vobsub_t *vob= (vobsub_t *) vobhandle; - while(lang && strlen(lang) >= 2){ + while(!lang.empty() && lang.length() >= 2){ for(i=0; i < vob->spu_streams_size; i++) - if (vob->spu_streams[i].id) - if ((strncmp(vob->spu_streams[i].id, lang, 2)==0)){ + if (!vob->spu_streams[i].id.empty()) + if (vob->spu_streams[i].id==lang.substr(pos,2)){ mp_conf.vobsub_id=i; - MSG_INFO("Selected VOBSUB language: %d language: %s\n", i, vob->spu_streams[i].id); + mpxp_info<<"Selected VOBSUB language: "<<i<<" language: "<<vob->spu_streams[i].id<<std::endl; return 0; } - lang+=2;while (lang[0]==',' || lang[0]==' ') ++lang; + pos+=2;while (lang[pos]==',' || lang[pos]==' ') ++pos; } - MSG_WARN("No matching VOBSUB language found!\n"); + mpxp_warn<<"No matching VOBSUB language found!"<<std::endl; return -1; } @@ -1035,7 +1012,7 @@ } if (vob->spu_streams && 0 <= mp_conf.vobsub_id && (unsigned) mp_conf.vobsub_id < vob->spu_streams_size) { /* do not seek if we don't know the id */ - if (vobsub_get_id(vob, mp_conf.vobsub_id) == NULL) return; + if (vobsub_get_id(vob, mp_conf.vobsub_id).empty()) return; queue = vob->spu_streams + mp_conf.vobsub_id; queue->current_index = 0; while (queue->current_index < queue->packets_size Modified: mplayerxp/libmpsub/vobsub.h =================================================================== --- mplayerxp/libmpsub/vobsub.h 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libmpsub/vobsub.h 2012-12-26 11:39:18 UTC (rev 602) @@ -3,13 +3,13 @@ #include "libmpdemux/demuxer.h" // for seek_args_t -extern any_t* __FASTCALL__ vobsub_open(const char *subname, const char *const ifo, const int force, any_t** spu); +extern any_t* __FASTCALL__ vobsub_open(const std::string& subname, const char *const ifo, const int force, any_t** spu); extern void __FASTCALL__ vobsub_close(any_t*__self); extern void __FASTCALL__ vobsub_reset(any_t*vob); extern int __FASTCALL__ vobsub_get_packet(any_t*vobhandle, float pts,any_t** data, int* timestamp); -extern int __FASTCALL__ vobsub_parse_ifo(any_t* vob, const char *const name, unsigned int *palette, unsigned int *width, unsigned int *height, int force, int sid, char *langid); -extern char * __FASTCALL__ vobsub_get_id(any_t* vob, unsigned int index); -extern int __FASTCALL__ vobsub_set_from_lang(any_t*vobhandle,const char * lang); +extern int __FASTCALL__ vobsub_parse_ifo(any_t* vob, const std::string& name, unsigned int *palette, unsigned int *width, unsigned int *height, int force, int sid, std::string& langid); +extern std::string __FASTCALL__ vobsub_get_id(any_t* vob, unsigned int index); +extern int __FASTCALL__ vobsub_set_from_lang(any_t*vobhandle,const std::string& lang); extern unsigned int __FASTCALL__ vobsub_get_forced_subs_flag(void const * const vobhandle); extern void __FASTCALL__ vobsub_seek(any_t* vob,const seek_args_t* seek); /// Convert palette value in idx file to yuv. Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-26 11:39:18 UTC (rev 602) @@ -8,9 +8,6 @@ #include <unistd.h> #include <errno.h> #include <time.h> -#ifdef MP_DEBUG -#include <assert.h> -#endif #include "libmpstream2/stream.h" #include "playtree.h" #include "playtree_msg.h" @@ -31,10 +28,6 @@ play_tree_free(play_tree_t* pt, int childs) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); -#endif - if(childs) { for(iter = pt->child; iter != NULL; ) { play_tree_t* nxt=iter->next; @@ -64,10 +57,6 @@ play_tree_free_list(play_tree_t* pt, int childs) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); -#endif - for(iter = pt ; iter->prev != NULL ; iter = iter->prev) /* NOTHING */; @@ -83,11 +72,6 @@ play_tree_append_entry(play_tree_t* pt, play_tree_t* entry) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(entry != NULL); -#endif - if(pt == entry) return; @@ -104,11 +88,6 @@ play_tree_prepend_entry(play_tree_t* pt, play_tree_t* entry) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(entry != NULL); -#endif - for(iter = pt ; iter->prev != NULL; iter = iter->prev) /* NOTHING */; @@ -118,9 +97,6 @@ iter->prev = entry; if(entry->parent) { -#ifdef MP_DEBUG - assert(entry->parent->child == iter); -#endif entry->parent->child = entry; } } @@ -128,17 +104,9 @@ void play_tree_insert_entry(play_tree_t* pt, play_tree_t* entry) { -#ifdef MP_DEBUG - assert(pt != NULL); - assert(entry != NULL); -#endif - entry->parent = pt->parent; entry->prev = pt; if(pt->next) { -#ifdef MP_DEBUG - assert(pt->next->prev == pt); -#endif entry->next = pt->next; entry->next->prev = entry; } else @@ -150,41 +118,21 @@ void play_tree_remove(play_tree_t* pt, int free_it,int with_childs) { -#ifdef MP_DEBUG - assert(pt != NULL); -#endif - // Middle of list if(pt->prev && pt->next) { -#ifdef MP_DEBUG - assert(pt->prev->next == pt); - assert(pt->next->prev == pt); -#endif pt->prev->next = pt->next; pt->next->prev = pt->prev; } // End of list else if(pt->prev) { -#ifdef MP_DEBUG - assert(pt->prev->next == pt); -#endif pt->prev->next = NULL; } // Begining of list else if(pt->next) { -#ifdef MP_DEBUG - assert(pt->next->prev == pt); -#endif pt->next->prev = NULL; if(pt->parent) { -#ifdef MP_DEBUG - assert(pt->parent->child == pt); -#endif pt->parent->child = pt->next; } } // The only one else if(pt->parent) { -#ifdef MP_DEBUG - assert(pt->parent->child == pt); -#endif pt->parent->child = NULL; } @@ -198,11 +146,6 @@ play_tree_set_child(play_tree_t* pt, play_tree_t* child) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(pt->entry_type == PLAY_TREE_ENTRY_NODE); -#endif - for(iter = pt->child ; iter != NULL ; iter = iter->next) iter->parent = NULL; @@ -221,10 +164,6 @@ play_tree_set_parent(play_tree_t* pt, play_tree_t* parent) { play_tree_t* iter; -#ifdef MP_DEBUG - assert(pt != NULL); -#endif - if(pt->parent) pt->parent->child = NULL; @@ -247,12 +186,6 @@ int n = 0; char* e; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(pt->child == NULL); - assert(file != NULL); -#endif - if(pt->entry_type != PLAY_TREE_ENTRY_NODE && pt->entry_type != PLAY_TREE_ENTRY_FILE) return; @@ -261,7 +194,7 @@ for(n = 0 ; pt->files[n] != NULL ; n++) /* NOTHING */; } - pt->files = (char**)mp_realloc(pt->files,(n+2)*sizeof(char*)); + pt->files = (char**)mp_realloc((any_t*)pt->files,(n+2)*sizeof(char*)); if(pt->files ==NULL) { MSG_ERR("Can't allocate %d bytes of memory\n",(n+2)*sizeof(char*)); return; @@ -288,12 +221,6 @@ play_tree_remove_file(play_tree_t* pt,const char* file) { int n,f = -1; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(file != NULL); - assert(pt->entry_type != PLAY_TREE_ENTRY_NODE); -#endif - for(n=0 ; pt->files[n] != NULL ; n++) { if(strcmp(file,pt->files[n]) == 0) f = n; @@ -302,15 +229,11 @@ if(f < 0) // Not found return 0; -#ifdef MP_DEBUG - assert(n > f); -#endif - delete pt->files[f]; if(n > 1) { memmove(&pt->files[f],&pt->files[f+1],(n-f)*sizeof(char*)); - pt->files = (char**)mp_realloc(pt->files,n*sizeof(char*)); + pt->files = (char**)mp_realloc((any_t*)pt->files,n*sizeof(char*)); if(pt->files == NULL) { MSG_ERR("Can't allocate %d bytes of memory\n",(n+2)*sizeof(char*)); return -1; @@ -326,11 +249,6 @@ void play_tree_set_param(play_tree_t* pt,const char* name,const char* val) { int n = 0,ni = -1; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(name != NULL); -#endif - if(pt->params) { for( ; pt->params[n].name != NULL ; n++) { if(strcasecmp(pt->params[n].name,name) == 0) @@ -360,12 +278,6 @@ int play_tree_unset_param(play_tree_t* pt,const char* name) { int n,ni = -1; -#ifdef MP_DEBUG - assert(pt != NULL); - assert(name != NULL); - assert(pt->params != NULL); -#endif - for(n = 0 ; pt->params[n].name != NULL ; n++) { if(strcasecmp(pt->params[n].name,name) == 0) ni = n; @@ -395,11 +307,6 @@ void play_tree_set_params_from(play_tree_t* dest,const play_tree_t* src) { int i; -#ifdef MP_DEBUG - assert(dest != NULL); - assert(src != NULL); -#endif - if(!src->params) return; @@ -435,80 +342,6 @@ } } -static void -play_tree_iter_push_params(play_tree_iter_t* iter) { - int n; - play_tree_t* pt; -#ifdef MP_DEBUG - assert(iter != NULL); - assert(*iter->config != NULL); - assert(iter->tree != NULL); -#endif - - pt = iter->tree; - - // We always push a config because we can set some option - // while playing - m_config_push(*iter->config); - - if(pt->params == NULL) - return; - - - for(n = 0; pt->params[n].name != NULL ; n++) { - int e; - if((e = m_config_set_option(*iter->config,pt->params[n].name,pt->params[n].value)) < 0) { - MSG_ERR("Error %d while setting option '%s' with value '%s'\n",e, - pt->params[n].name,pt->params[n].value); - } - } - - if(!pt->child) - iter->entry_pushed = 1; - return; -} - -play_tree_iter_t* -play_tree_iter_new(play_tree_t* pt,m_config_t& config) { - play_tree_iter_t* iter; - -#ifdef MP_DEBUG - assert(pt != NULL); - assert(config != NULL); -#endif - - if( ! play_tree_is_valid(pt)) - return NULL; - - iter = (play_tree_iter_t*)mp_calloc(1,sizeof(play_tree_iter_t)); - if(! iter) return NULL; - iter->root = pt; - iter->tree = NULL; - iter->config = &config; - - if(pt->parent) - iter->loop = pt->parent->loop; - - return iter; -} - -void -play_tree_iter_free(play_tree_iter_t* iter) { - -#ifdef MP_DEBUG - assert(iter != NULL); -#endif - - if(iter->status_stack) { -#ifdef MP_DEBUG - assert(iter->stack_size > 0); -#endif - delete iter->status_stack; - } - - delete iter; -} - static play_tree_t* play_tree_rnd_step(play_tree_t* pt) { int count = 0; @@ -545,300 +378,232 @@ return NULL; } -int -play_tree_iter_step(play_tree_iter_t* iter, int d,int with_nodes) { - play_tree_t* pt; - int rnd; -#ifdef MP_DEBUG - assert(iter != NULL); - assert(iter->root != NULL); -#endif +namespace mpxp { +_PlayTree_Iter::_PlayTree_Iter(play_tree_t* pt,m_config_t& _config) + :root(pt), + tree(NULL), + config(_config) { + if(pt->parent) loop = pt->parent->loop; +} - if(iter->tree == NULL) { - iter->tree = iter->root; - return play_tree_iter_step(iter,0,with_nodes); - } +_PlayTree_Iter::_PlayTree_Iter(const _PlayTree_Iter& old) + :root(old.root), + tree(old.tree), + config(old.config), + loop(old.loop), + file(old.file), + num_files(old.num_files), + mode(old.mode) {} - if(iter->config && iter->entry_pushed > 0) { - iter->entry_pushed = 0; - m_config_pop(*iter->config); - } +_PlayTree_Iter::~_PlayTree_Iter() {} - if(iter->tree->parent && (iter->tree->parent->flags & PLAY_TREE_RND)) - rnd=iter->mode = PLAY_TREE_ITER_RND; - else - rnd=iter->mode = PLAY_TREE_ITER_NORMAL; +void _PlayTree_Iter::push_params() { + int n; + play_tree_t* pt; - iter->file = -1; - if(iter->mode == PLAY_TREE_ITER_RND) - pt = play_tree_rnd_step(iter->tree); - else if( d > 0 ) { - int i; - pt = iter->tree; - for(i = d ; i > 0 && pt ; i--) - pt = pt->next; - d = i ? i : 1; - } else if(d < 0) { - int i; - pt = iter->tree; - for(i = d ; i < 0 && pt ; i++) - pt = pt->prev; - d = i ? i : -1; - } else - pt = iter->tree; + pt = tree; - if(pt == NULL) { // No next - // Must we loop? - if (iter->mode == PLAY_TREE_ITER_RND) { - if (iter->root->loop == 0) - return PLAY_TREE_ITER_END; - play_tree_unset_flag(iter->root, PLAY_TREE_RND_PLAYED, -1); - if (iter->root->loop > 0) iter->root->loop--; - // try again - return play_tree_iter_step(iter, 0, with_nodes); - } else - if(iter->tree->parent && iter->tree->parent->loop != 0 && ((d > 0 && iter->loop != 0) || ( d < 0 && (iter->loop < 0 || iter->loop < iter->tree->parent->loop) ) ) ) { - if(d > 0) { // Go back to the first one - for(pt = iter->tree ; pt->prev != NULL; pt = pt->prev) - /* NOTHNG */; - if(iter->loop > 0) iter->loop--; - } else if( d < 0 ) { // Or the last one - for(pt = iter->tree ; pt->next != NULL; pt = pt->next) - /* NOTHNG */; - if(iter->loop >= 0 && iter->loop < iter->tree->parent->loop) iter->loop++; - } - iter->tree = pt; - return play_tree_iter_step(iter,0,with_nodes); - } - // Go up one level - return play_tree_iter_up_step(iter,d,with_nodes); + // We always push a config because we can set some option + // while playing + m_config_push(config); - } + if(pt->params == NULL) return; - // Is there any valid child? - if(pt->child && play_tree_is_valid(pt->child)) { - iter->tree = pt; - if(with_nodes) { // Stop on the node - return PLAY_TREE_ITER_NODE; - } else // Or follow it - return play_tree_iter_down_step(iter,d,with_nodes); - } + for(n = 0; pt->params[n].name != NULL ; n++) { + int e; + if((e = m_config_set_option(config,pt->params[n].name,pt->params[n].value)) < 0) + mpxp_err<<"Error "<<e<<" while setting option '"<<pt->params[n].name<<"' with value '"<<pt->params[n].value<<"'"<<std::endl; + } - // Is it a valid entry? - if(! play_tree_is_valid(pt)) { - if(d == 0 && rnd==PLAY_TREE_ITER_NORMAL) { // Can this happen ? FF: Yes! - MSG_ERR("What to do now ???? Infinite loop if we continue\n"); - return PLAY_TREE_ITER_ERROR; - } // Not a valid entry : go to next one - return play_tree_iter_step(iter,d,with_nodes); - } - -#ifdef MP_DEBUG - assert(pt->files != NULL); -#endif - - iter->tree = pt; - - for(d = 0 ; iter->tree->files[d] != NULL ; d++) - /* NOTHING */; - iter->num_files = d; - - if(iter->config) { - play_tree_iter_push_params(iter); - iter->entry_pushed = 1; - if(iter->mode == PLAY_TREE_ITER_RND) - pt->flags |= PLAY_TREE_RND_PLAYED; - } - - return PLAY_TREE_ITER_ENTRY; - + if(!pt->child) entry_pushed = 1; + return; } -static int -play_tree_is_valid(play_tree_t* pt) { - play_tree_t* iter; +int _PlayTree_Iter::step(int d,int with_nodes) { + play_tree_t* pt; + int rnd; -#ifdef MP_DEBUG - assert(pt != NULL); -#endif + if(tree == NULL) { + tree = root; + return step(0,with_nodes); + } - if(pt->entry_type != PLAY_TREE_ENTRY_NODE) { -#ifdef MP_DEBUG - assert(pt->child == NULL); -#endif - return 1; - } - else if (pt->child != NULL) { - for(iter = pt->child ; iter != NULL ; iter = iter->next) { - if(play_tree_is_valid(iter)) - return 1; + if(entry_pushed > 0) { + entry_pushed = 0; + m_config_pop(config); } - } - return 0; -} -int -play_tree_iter_up_step(play_tree_iter_t* iter, int d,int with_nodes) { + if(tree->parent && (tree->parent->flags & PLAY_TREE_RND)) + rnd=mode = PLAY_TREE_ITER_RND; + else + rnd=mode = PLAY_TREE_ITER_NORMAL; -#ifdef MP_DEBUG - assert(iter != NULL); - assert(iter->tree != NULL); -#endif + file = -1; + if(mode == PLAY_TREE_ITER_RND) pt = play_tree_rnd_step(tree); + else if( d > 0 ) { + int i; + pt = tree; + for(i = d ; i > 0 && pt ; i--) pt = pt->next; + d = i ? i : 1; + } else if(d < 0) { + int i; + pt = tree; + for(i = d ; i < 0 && pt ; i++) pt = pt->prev; + d = i ? i : -1; + } else pt = tree; - iter->file = -1; - if(iter->tree->parent == iter->root->parent) - return PLAY_TREE_ITER_END; + if(pt == NULL) { // No next + // Must we loop? + if (mode == PLAY_TREE_ITER_RND) { + if (root->loop == 0) return PLAY_TREE_ITER_END; + play_tree_unset_flag(root, PLAY_TREE_RND_PLAYED, -1); + if (root->loop > 0) root->loop--; + // try again + return step(0, with_nodes); + } else if(tree->parent && tree->parent->loop != 0 && ((d > 0 && loop != 0) || ( d < 0 && (loop < 0 || loop < tree->parent->loop)))) { + if(d > 0) { // Go back to the first one + for(pt = tree ; pt->prev != NULL; pt = pt->prev) /* NOTHNG */; + if(loop > 0) loop--; + } else if( d < 0 ) { // Or the last one + for(pt = tree ; pt->next != NULL; pt = pt->next) /* NOTHNG */; + if(loop >= 0 && loop < tree->parent->loop) loop++; + } + tree = pt; + return step(0,with_nodes); + } + // Go up one level + return up_step(d,with_nodes); + } + // Is there any valid child? + if(pt->child && play_tree_is_valid(pt->child)) { + tree = pt; + if(with_nodes) { // Stop on the node + return PLAY_TREE_ITER_NODE; + } else // Or follow it + return down_step(d,with_nodes); + } + // Is it a valid entry? + if(! play_tree_is_valid(pt)) { + if(d == 0 && rnd==PLAY_TREE_ITER_NORMAL) { // Can this happen ? FF: Yes! + mpxp_err<<"What to do now ???? Infinite loop if we continue"<<std::endl; + return PLAY_TREE_ITER_ERROR; + } // Not a valid entry : go to next one + return step(d,with_nodes); + } -#ifdef MP_DEBUG - assert(iter->tree->parent != NULL); - assert(iter->stack_size > 0); - assert(iter->status_stack != NULL); -#endif + tree = pt; - iter->stack_size--; - iter->loop = iter->status_stack[iter->stack_size]; - if(iter->stack_size > 0) - iter->status_stack = (int*)mp_realloc(iter->status_stack,iter->stack_size*sizeof(int)); - else { - delete iter->status_stack; - iter->status_stack = NULL; - } - if(iter->stack_size > 0 && iter->status_stack == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",iter->stack_size*sizeof(char*)); - return PLAY_TREE_ITER_ERROR; - } - iter->tree = iter->tree->parent; + for(d = 0 ; tree->files[d] != NULL ; d++) /* NOTHING */; + num_files = d; - // Pop subtree params - if(iter->config) { - m_config_pop(*iter->config); - if(iter->mode == PLAY_TREE_ITER_RND) - iter->tree->flags |= PLAY_TREE_RND_PLAYED; - } + push_params(); + entry_pushed = 1; + if(mode == PLAY_TREE_ITER_RND) pt->flags |= PLAY_TREE_RND_PLAYED; - return play_tree_iter_step(iter,d,with_nodes); + return PLAY_TREE_ITER_ENTRY; } -int -play_tree_iter_down_step(play_tree_iter_t* iter, int d,int with_nodes) { +int _PlayTree_Iter::up_step(int d,int with_nodes) { + file = -1; + if(tree->parent == root->parent) return PLAY_TREE_ITER_END; -#ifdef MP_DEBUG - assert(iter->tree->files == NULL); - assert(iter->tree->child != NULL); - assert(iter->tree->child->parent == iter->tree); -#endif + loop = status_stack.top(); status_stack.pop(); + tree = tree->parent; - iter->file = -1; + // Pop subtree params + m_config_pop(config); + if(mode == PLAY_TREE_ITER_RND) tree->flags |= PLAY_TREE_RND_PLAYED; + return step(d,with_nodes); +} - // Push subtree params - if(iter->config) - play_tree_iter_push_params(iter); +int _PlayTree_Iter::down_step(int d,int with_nodes) { + file = -1; - iter->stack_size++; - iter->status_stack = (int*)mp_realloc(iter->status_stack,iter->stack_size*sizeof(int)); - if(iter->status_stack == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",iter->stack_size*sizeof(int)); - return PLAY_TREE_ITER_ERROR; - } - iter->status_stack[iter->stack_size-1] = iter->loop; - // Set new status - iter->loop = iter->tree->loop-1; - if(d >= 0) - iter->tree = iter->tree->child; - else { - play_tree_t* pt; - for(pt = iter->tree->child ; pt->next != NULL ; pt = pt->next) - /*NOTING*/; - iter->tree = pt; - } + // Push subtree params + push_params(); - return play_tree_iter_step(iter,0,with_nodes); + status_stack.push(loop); + // Set new status + loop = tree->loop-1; + if(d >= 0) tree = tree->child; + else { + play_tree_t* pt; + for(pt = tree->child ; pt->next != NULL ; pt = pt->next) /*NOTING*/; + tree = pt; + } + return step(0,with_nodes); } -// This is used as a file name for vcd/tv/dvd -char playtree_ret_filename[256]; +std::string _PlayTree_Iter::get_file(int d) { + const char* entry; -const char* -play_tree_iter_get_file(play_tree_iter_t* iter, int d) { - const char* entry; -#ifdef MP_DEBUG - assert(iter != NULL); - assert(iter->tree->child == NULL); -#endif + if(tree->files == NULL) return ""; + if(file >= num_files-1 || file < -1) return ""; + if(d > 0) { + if(file >= num_files - 1) file = 0; + else file++; + } else if(d < 0) { + if(file <= 0) file = num_files - 1; + else file--; + } + entry = tree->files[file]; - if(iter->tree->files == NULL) - return NULL; + switch(tree->entry_type) { + case PLAY_TREE_ENTRY_DVD : + if(strlen(entry) == 0) entry = "1"; + m_config_set_option(config,"dvd",entry); + return std::string("DVD title ")+entry; + case PLAY_TREE_ENTRY_VCD : + if(strlen(entry) == 0) entry = "1"; + m_config_set_option(config,"vcd",entry); + return std::string("vcd://")+entry; + case PLAY_TREE_ENTRY_TV: { + if(strlen(entry) != 0) { + char *val = new char [strlen(entry) + 11 + 1]; + const char* e; + std::string rs; + sprintf(val,"on:channel=%s",entry); + m_config_set_option(config,"tv",val); + rs="TV channel "; + e = strchr(entry,':'); + if(!e) rs+=std::string(entry).substr(0,255-11); + else { + if(entry-e > 255) e = entry+255; + rs+=std::string(entry).substr(0,val-e); + } + delete val; + return rs; + } else m_config_set_option(config,"tv","on"); + return "TV"; + } + default: break; + } + return entry; +} -#ifdef MP_DEBUG - assert(iter->num_files > 0); -#endif +} // namespace mpxp - if(iter->file >= iter->num_files-1 || iter->file < -1) - return NULL; - if(d > 0) { - if(iter->file >= iter->num_files - 1) - iter->file = 0; - else - iter->file++; - } else if(d < 0) { - if(iter->file <= 0) - iter->file = iter->num_files - 1; - else - iter->file--; - } - entry = iter->tree->files[iter->file]; +static int +play_tree_is_valid(play_tree_t* pt) { + play_tree_t* iter; - switch(iter->tree->entry_type) { - case PLAY_TREE_ENTRY_DVD : - if(strlen(entry) == 0) entry = "1"; - if(iter->config) - m_config_set_option(*iter->config,"dvd",entry); - snprintf(playtree_ret_filename,255,"DVD title %s",entry); - return playtree_ret_filename; - case PLAY_TREE_ENTRY_VCD : - if(strlen(entry) == 0) entry = "1"; - if(iter->config) - m_config_set_option(*iter->config,"vcd",entry); - snprintf(playtree_ret_filename,255,"vcd://%s",entry); - return playtree_ret_filename; - case PLAY_TREE_ENTRY_TV : - { - if(strlen(entry) != 0) { - char *s,*val = (char*)mp_malloc(strlen(entry) + 11 + 1); - const char* e; - sprintf(val,"on:channel=%s",entry); - if(iter->config) - m_config_set_option(*iter->config,"tv",val); - s = playtree_ret_filename + sprintf(playtree_ret_filename,"TV channel "); - e = strchr(entry,':'); - if(!e) strncpy(s,entry,255-11); - else { - if(entry-e > 255) e = entry+255; - strncpy(s,entry,val-e); - s[val-e] = '\0'; - } - delete val; - return playtree_ret_filename; - } else { - if(iter->config) - m_config_set_option(*iter->config,"tv","on"); - return "TV"; - } + if(pt->entry_type != PLAY_TREE_ENTRY_NODE) { + return 1; + } + else if (pt->child != NULL) { + for(iter = pt->child ; iter != NULL ; iter = iter->next) { + if(play_tree_is_valid(iter)) + return 1; } } - - return entry; + return 0; } play_tree_t* play_tree_cleanup(play_tree_t* pt) { play_tree_t* iter, *tmp, *first; -#ifdef MP_DEBUG - assert(pt != NULL); -#endif - if( ! play_tree_is_valid(pt)) { play_tree_remove(pt,1,1); return NULL; @@ -865,50 +630,19 @@ } -play_tree_iter_t* play_tree_iter_new_copy(play_tree_iter_t const* old) { - play_tree_iter_t* iter; - -#ifdef MP_DEBUG - assert(old != NULL); -#endif - - iter = (play_tree_iter_t*)mp_malloc(sizeof(play_tree_iter_t)); - if(iter == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",sizeof(play_tree_iter_t)); - return NULL; - } - - memcpy(iter,old,sizeof(play_tree_iter_t)); - if(old->status_stack) { - iter->status_stack = (int*)mp_malloc(old->stack_size * sizeof(int)); - if(iter->status_stack == NULL) { - MSG_ERR("Can't allocate %d bytes of memory\n",old->stack_size * sizeof(int)); - delete iter; - return NULL; - } - memcpy(iter->status_stack,old->status_stack,iter->stack_size*sizeof(int)); - } - iter->config = NULL; - - return iter; -} - // HIGH Level API, by Fabian Franz (mp...@fa...) // -play_tree_iter_t* pt_iter_create(play_tree_t** ppt, m_config_t& config) +_PlayTree_Iter* pt_iter_create(play_tree_t** ppt, m_config_t& config) { - play_tree_iter_t* r=NULL; -#ifdef MP_DEBUG - assert(*ppt!=NULL); -#endif + _PlayTree_Iter* r=NULL; *ppt=play_tree_cleanup(*ppt); if(*ppt) { - r = play_tree_iter_new(*ppt,config); - if (r && play_tree_iter_step(r,0,0) != PLAY_TREE_ITER_ENTRY) + r = new _PlayTree_Iter(*ppt,config); + if (r && r->step(0,0) != PLAY_TREE_ITER_ENTRY) { - play_tree_iter_free(r); + delete r; r = NULL; } } @@ -916,7 +650,7 @@ return r; } -void pt_iter_destroy(play_tree_iter_t** iter) +void pt_iter_destroy(_PlayTree_Iter** iter) { if (iter && *iter) { @@ -925,56 +659,47 @@ } } -const char* pt_iter_get_file(play_tree_iter_t* iter, int d) +std::string pt_iter_get_file(_PlayTree_Iter* iter, int d) { int i=0; - const char* r; + std::string r; if (iter==NULL) return NULL; - r = play_tree_iter_get_file(iter,d); + r = iter->get_file(d); - while (!r && d!=0) + while (r.empty() && d!=0) { - if (play_tree_iter_step(iter,d,0) != PLAY_TREE_ITER_ENTRY) - break; - r=play_tree_iter_get_file(iter,d); + if (iter->step(d,0) != PLAY_TREE_ITER_ENTRY) break; + r=iter->get_file(d); i++; } return r; } -void pt_iter_insert_entry(play_tree_iter_t* iter, play_tree_t* entry) +void pt_iter_insert_entry(_PlayTree_Iter* iter, play_tree_t* entry) { - play_tree_t *pt = iter->tree; -#ifdef MP_DEBUG - assert(pt!=NULL); - assert(entry!=NULL); - assert(entry!=pt); -#endif + play_tree_t *pt = iter->get_tree(); play_tree_insert_entry(pt, entry); play_tree_set_params_from(entry,pt); } -void pt_iter_replace_entry(play_tree_iter_t* iter, play_tree_t* entry) +void pt_iter_replace_entry(_PlayTree_Iter* iter, play_tree_t* entry) { - play_tree_t *pt = iter->tree; + play_tree_t *pt = iter->get_tree(); pt_iter_insert_entry(iter, entry); play_tree_remove(pt, 1, 1); - iter->tree=entry; + iter->set_tree(entry); } //Add a new file as a new entry void pt_add_file(play_tree_t** ppt,const char* filename) { play_tree_t *pt = *ppt, *entry = play_tree_new(); -#ifdef MP_DEBUG - assert(entry!=NULL); -#endif play_tree_add_file(entry, filename); if (pt) @@ -1001,8 +726,8 @@ } } -void pt_iter_goto_head(play_tree_iter_t* iter) +void pt_iter_goto_head(_PlayTree_Iter* iter) { - iter->tree=iter->root; - play_tree_iter_step(iter, 0, 0); + iter->reset_tree(); + iter->step(0, 0); } Modified: mplayerxp/libplaytree/playtree.h =================================================================== --- mplayerxp/libplaytree/playtree.h 2012-12-25 16:17:37 UTC (rev 601) +++ mplayerxp/libplaytree/playtree.h 2012-12-26 11:39:18 UTC (rev 602) @@ -1,6 +1,9 @@ #ifndef __PLAYTREE_H #define __PLAYTREE_H +#include "osdep/mplib.h" +#include <stack> + struct m_config_t; namespace mpxp { struct Stream; @@ -40,38 +43,66 @@ ///@{ struct play_tree_param_t { - char* name; - char* value; + const char* name; + const char* value; }; struct play_tree_t { - play_tree_t* parent; - play_tree_t* child; - play_tree_t* next; - play_tree_t* prev; + play_tree_t* parent; + play_tree_t* child; + play_tree_t* next; + play_tree_t* prev; //play_tree_info_t info; - play_tree_param_t* params; - int loop; - char** files; - int entry_type; - int flags; + play_tree_param_t* params; + int loop; + char** files; + int entry_type; + int flags; }; -struct play_tree_iter_t { - play_tree_t* root; // Iter root tree - play_tree_t* tree; // Current tree - m_config_t* config; - int loop; // Looping status - int file; - int num_files; - int entry_pushed; - int mode; +namespace mpxp { + struct _PlayTree_Iter : public Opaque { + public: + _PlayTree_Iter(play_tree... [truncated message content] |
From: <nic...@us...> - 2012-12-25 16:17:47
|
Revision: 601 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=601&view=rev Author: nickols_k Date: 2012-12-25 16:17:37 +0000 (Tue, 25 Dec 2012) Log Message: ----------- minor security patches Modified Paths: -------------- mplayerxp/libmpcodecs/ad_faad.cpp mplayerxp/libmpcodecs/ad_mp3.cpp mplayerxp/libmpcodecs/ad_real.cpp mplayerxp/libmpcodecs/codecs_ld.cpp mplayerxp/libmpcodecs/codecs_ld.h mplayerxp/libmpcodecs/vd_divx4.cpp mplayerxp/libmpcodecs/vd_libmpeg2.cpp mplayerxp/libmpcodecs/vd_real.cpp mplayerxp/libmpcodecs/vd_xanim.cpp mplayerxp/libmpcodecs/vd_xvid.cpp mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h Modified: mplayerxp/libmpcodecs/ad_faad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -35,17 +35,7 @@ LIBAD_EXTERN(faad) -struct faad_private_t : public Opaque { - faad_private_t(); - virtual ~faad_private_t(); - float pts; - sh_audio_t* sh; - audio_filter_info_t* afi; -}; -faad_private_t::faad_private_t() {} -faad_private_t::~faad_private_t() {} - static const audio_probe_t probes[] = { { "faad", "libfaad"SLIBSUFFIX, 0xFF, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, { "faad", "libfaad"SLIBSUFFIX, 0x4143, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, @@ -124,62 +114,64 @@ #endif #endif /* library output formats */ -#define FAAD_FMT_16BIT 1 -#define FAAD_FMT_24BIT 2 -#define FAAD_FMT_32BIT 3 -#define FAAD_FMT_FLOAT 4 -#define FAAD_FMT_FIXED FAAD_FMT_FLOAT -#define FAAD_FMT_DOUBLE 5 +enum { + FAAD_FMT_16BIT=1, + FAAD_FMT_24BIT=2, + FAAD_FMT_32BIT=3, + FAAD_FMT_FLOAT=4, + FAAD_FMT_FIXED=FAAD_FMT_FLOAT, + FAAD_FMT_DOUBLE=5 +}; +struct faad_private_t : public Opaque { + faad_private_t(); + virtual ~faad_private_t(); -static NeAACDecHandle (*NEAACDECAPI NeAACDecOpen_ptr)(unsigned); -#define NeAACDecOpen(a) (*NeAACDecOpen_ptr)(a) -static NeAACDecConfigurationPtr (*NEAACDECAPI NeAACDecGetCurrentConfiguration_ptr)(NeAACDecHandle hDecoder); -#define NeAACDecGetCurrentConfiguration(a) (*NeAACDecGetCurrentConfiguration_ptr)(a) -static unsigned char NEAACDECAPI (*NeAACDecSetConfiguration_ptr)(NeAACDecHandle hDecoder, + float pts; + sh_audio_t* sh; + audio_filter_info_t* afi; + any_t* dll_handle; + NeAACDecHandle (*NEAACDECAPI NeAACDecOpen_ptr)(unsigned); + NeAACDecConfigurationPtr (*NEAACDECAPI NeAACDecGetCurrentConfiguration_ptr)(NeAACDecHandle hDecoder); + unsigned char NEAACDECAPI (*NeAACDecSetConfiguration_ptr)(NeAACDecHandle hDecoder, NeAACDecConfigurationPtr config); -#define NeAACDecSetConfiguration(a,b) (*NeAACDecSetConfiguration_ptr)(a,b) -static long (*NEAACDECAPI NeAACDecInit_ptr)(NeAACDecHandle hDecoder, + long (*NEAACDECAPI NeAACDecInit_ptr)(NeAACDecHandle hDecoder, unsigned char *buffer, unsigned long buffer_size, unsigned long *samplerate, unsigned char *channels); -#define NeAACDecInit(a,b,c,d,e) (*NeAACDecInit_ptr)(a,b,c,d,e) -static char (*NEAACDECAPI NeAACDecInit2_ptr)(NeAACDecHandle hDecoder, unsigned char *pBuffer, + char (*NEAACDECAPI NeAACDecInit2_ptr)(NeAACDecHandle hDecoder, unsigned char *pBuffer, unsigned long SizeOfDecoderSpecificInfo, unsigned long *samplerate, unsigned char *channels); -#define NeAACDecInit2(a,b,c,d,e) (*NeAACDecInit2_ptr)(a,b,c,d,e) -static void (*NEAACDECAPI NeAACDecClose_ptr)(NeAACDecHandle hDecoder); -#define NeAACDecClose(a) (*NeAACDecClose_ptr)(a) -static any_t* (*NEAACDECAPI NeAACDecDecode_ptr)(NeAACDecHandle hDecoder, + void (*NEAACDECAPI NeAACDecClose_ptr)(NeAACDecHandle hDecoder); + any_t* (*NEAACDECAPI NeAACDecDecode_ptr)(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, unsigned char *buffer, unsigned long buffer_size); -#define NeAACDecDecode(a,b,c,d) (*NeAACDecDecode_ptr)(a,b,c,d) -static char* (*NEAACDECAPI NeAACDecGetErrorMessage_ptr)(unsigned char errcode); -#define NeAACDecGetErrorMessage(a) (*NeAACDecGetErrorMessage_ptr)(a) + char* (*NEAACDECAPI NeAACDecGetErrorMessage_ptr)(unsigned char errcode); + NeAACDecHandle NeAAC_hdec; + NeAACDecFrameInfo NeAAC_finfo; +}; +faad_private_t::faad_private_t() {} +faad_private_t::~faad_private_t() { + (*NeAACDecClose_ptr)(NeAAC_hdec); +} -//#define AAC_DUMP_COMPRESSED - -static NeAACDecHandle NeAAC_hdec; -static NeAACDecFrameInfo NeAAC_finfo; - -static any_t*dll_handle; -static MPXP_Rc load_dll(const char *libname) +static MPXP_Rc load_dll(faad_private_t& priv,const char *libname) { - if(!(dll_handle=ld_codec(libname,mpcodecs_ad_faad.info->url))) return MPXP_False; - NeAACDecOpen_ptr = (any_t* (*)(unsigned))ld_sym(dll_handle,"NeAACDecOpen"); - NeAACDecGetCurrentConfiguration_ptr = (NeAACDecConfiguration* (*)(any_t*))ld_sym(dll_handle,"NeAACDecGetCurrentConfiguration"); - NeAACDecSetConfiguration_ptr = (unsigned char (*)(any_t*,NeAACDecConfiguration*))ld_sym(dll_handle,"NeAACDecSetConfiguration"); - NeAACDecInit_ptr = (long (*)(any_t*,unsigned char*,unsigned long,unsigned long*,unsigned char*))ld_sym(dll_handle,"NeAACDecInit"); - NeAACDecInit2_ptr = (char (*)(any_t*,unsigned char *,unsigned long,unsigned long*,unsigned char*))ld_sym(dll_handle,"NeAACDecInit2"); - NeAACDecClose_ptr = (void (*)(any_t*))ld_sym(dll_handle,"NeAACDecClose"); - NeAACDecDecode_ptr = (any_t* (*)(any_t*,NeAACDecFrameInfo*,unsigned char *,unsigned long))ld_sym(dll_handle,"NeAACDecDecode"); - NeAACDecGetErrorMessage_ptr = (char* (*)(unsigned char))ld_sym(dll_handle,"NeAACDecGetErrorMessage"); - return (NeAACDecOpen_ptr && NeAACDecGetCurrentConfiguration_ptr && - NeAACDecInit_ptr && NeAACDecInit2_ptr && NeAACDecGetCurrentConfiguration_ptr && - NeAACDecClose_ptr && NeAACDecDecode_ptr && NeAACDecGetErrorMessage_ptr)? + if(!(priv.dll_handle=ld_codec(libname,mpcodecs_ad_faad.info->url))) return MPXP_False; + priv.NeAACDecOpen_ptr = (any_t* (*)(unsigned))ld_sym(priv.dll_handle,"NeAACDecOpen"); + priv.NeAACDecGetCurrentConfiguration_ptr = (NeAACDecConfiguration* (*)(any_t*))ld_sym(priv.dll_handle,"NeAACDecGetCurrentConfiguration"); + priv.NeAACDecSetConfiguration_ptr = (unsigned char (*)(any_t*,NeAACDecConfiguration*))ld_sym(priv.dll_handle,"NeAACDecSetConfiguration"); + priv.NeAACDecInit_ptr = (long (*)(any_t*,unsigned char*,unsigned long,unsigned long*,unsigned char*))ld_sym(priv.dll_handle,"NeAACDecInit"); + priv.NeAACDecInit2_ptr = (char (*)(any_t*,unsigned char *,unsigned long,unsigned long*,unsigned char*))ld_sym(priv.dll_handle,"NeAACDecInit2"); + priv.NeAACDecClose_ptr = (void (*)(any_t*))ld_sym(priv.dll_handle,"NeAACDecClose"); + priv.NeAACDecDecode_ptr = (any_t* (*)(any_t*,NeAACDecFrameInfo*,unsigned char *,unsigned long))ld_sym(priv.dll_handle,"NeAACDecDecode"); + priv.NeAACDecGetErrorMessage_ptr = (char* (*)(unsigned char))ld_sym(priv.dll_handle,"NeAACDecGetErrorMessage"); + return (priv.NeAACDecOpen_ptr && priv.NeAACDecGetCurrentConfiguration_ptr && + priv.NeAACDecInit_ptr && priv.NeAACDecInit2_ptr && priv.NeAACDecGetCurrentConfiguration_ptr && + priv.NeAACDecClose_ptr && priv.NeAACDecDecode_ptr && priv.NeAACDecGetErrorMessage_ptr)? MPXP_Ok:MPXP_False; } @@ -191,7 +183,7 @@ faad_private_t* priv = new(zeromem) faad_private_t; priv->sh = sh; priv->afi = &afi; - if(load_dll(probe.codec_dll)!=MPXP_Ok) { + if(load_dll(*priv,probe.codec_dll)!=MPXP_Ok) { delete priv; return NULL; } @@ -207,7 +199,7 @@ float pts; int NeAAC_init; NeAACDecConfigurationPtr NeAAC_conf; - if(!(NeAAC_hdec = NeAACDecOpen(mpxp_context().mplayer_accel))) { + if(!(priv.NeAAC_hdec = (*priv.NeAACDecOpen_ptr)(mpxp_context().mplayer_accel))) { MSG_WARN("FAAD: Failed to open the decoder!\n"); // XXX: deal with cleanup! return MPXP_False; } @@ -217,7 +209,7 @@ sh->codecdata = (unsigned char*)(sh->wf+1); MSG_DBG2("FAAD: codecdata extracted from WAVEFORMATEX\n"); } - NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); + NeAAC_conf = (*priv.NeAACDecGetCurrentConfiguration_ptr)(priv.NeAAC_hdec); if(sh->rate) NeAAC_conf->defSampleRate = sh->rate; #ifdef WORDS_BIGENDIAN #define NeAAC_FMT32 AFMT_S32_BE @@ -240,28 +232,28 @@ NeAAC_conf->outputFormat=FAAD_FMT_16BIT; } /* Set the default object type and samplerate */ - NeAACDecSetConfiguration(NeAAC_hdec, NeAAC_conf); + (*priv.NeAACDecSetConfiguration_ptr)(priv.NeAAC_hdec, NeAAC_conf); if(!sh->codecdata_len) { sh->a_in_buffer_len = demux_read_data_r(*sh->ds, reinterpret_cast<unsigned char*>(sh->a_in_buffer), sh->a_in_buffer_size,pts); /* init the codec */ - NeAAC_init = NeAACDecInit(NeAAC_hdec, reinterpret_cast<unsigned char*>(sh->a_in_buffer), + NeAAC_init = (*priv.NeAACDecInit_ptr)(priv.NeAAC_hdec, reinterpret_cast<unsigned char*>(sh->a_in_buffer), sh->a_in_buffer_len, &NeAAC_samplerate, &NeAAC_channels); sh->a_in_buffer_len -= (NeAAC_init > 0)?NeAAC_init:0; // how many bytes init consumed // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi } else { // We have ES DS in codecdata - NeAAC_init = NeAACDecInit2(NeAAC_hdec, sh->codecdata, + NeAAC_init = (*priv.NeAACDecInit2_ptr)(priv.NeAAC_hdec, sh->codecdata, sh->codecdata_len, &NeAAC_samplerate, &NeAAC_channels); } if(NeAAC_init < 0) { MSG_WARN("FAAD: Failed to initialize the decoder!\n"); // XXX: deal with cleanup! - NeAACDecClose(NeAAC_hdec); + (*priv.NeAACDecClose_ptr)(priv.NeAAC_hdec); // XXX: mp_free a_in_buffer here or in uninit? return MPXP_False; } else { - NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); + NeAAC_conf = (*priv.NeAACDecGetCurrentConfiguration_ptr)(priv.NeAAC_hdec); sh->nch = NeAAC_channels; sh->rate = NeAAC_samplerate; switch(NeAAC_conf->outputFormat){ @@ -282,12 +274,7 @@ return MPXP_Ok; } -static void uninit(Opaque& ctx) -{ - UNUSED(ctx); - MSG_V("FAAD: Closing decoder!\n"); - NeAACDecClose(NeAAC_hdec); -} +static void uninit(Opaque& ctx) { UNUSED(ctx); } static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { @@ -328,20 +315,20 @@ if(!sh->codecdata_len){ // raw aac stream: do { - NeAAC_sample_buffer = NeAACDecDecode(NeAAC_hdec, &NeAAC_finfo, reinterpret_cast<unsigned char *>(sh->a_in_buffer+j), sh->a_in_buffer_len); + NeAAC_sample_buffer = (*priv.NeAACDecDecode_ptr)(priv.NeAAC_hdec, &priv.NeAAC_finfo, reinterpret_cast<unsigned char *>(sh->a_in_buffer+j), sh->a_in_buffer_len); /* update buffer index after NeAACDecDecode */ - if(NeAAC_finfo.bytesconsumed >= (unsigned)sh->a_in_buffer_len) { + if(priv.NeAAC_finfo.bytesconsumed >= (unsigned)sh->a_in_buffer_len) { sh->a_in_buffer_len=0; } else { - sh->a_in_buffer_len-=NeAAC_finfo.bytesconsumed; - memcpy(sh->a_in_buffer,&sh->a_in_buffer[NeAAC_finfo.bytesconsumed],sh->a_in_buffer_len); - priv.pts=FIX_APTS(sh,priv.pts,NeAAC_finfo.bytesconsumed); + sh->a_in_buffer_len-=priv.NeAAC_finfo.bytesconsumed; + memcpy(sh->a_in_buffer,&sh->a_in_buffer[priv.NeAAC_finfo.bytesconsumed],sh->a_in_buffer_len); + priv.pts=FIX_APTS(sh,priv.pts,priv.NeAAC_finfo.bytesconsumed); } - if(NeAAC_finfo.error > 0) { + if(priv.NeAAC_finfo.error > 0) { MSG_WARN("FAAD: error: %s, trying to resync!\n", - NeAACDecGetErrorMessage(NeAAC_finfo.error)); + (*priv.NeAACDecGetErrorMessage_ptr)(priv.NeAAC_finfo.error)); j++; } else break; @@ -351,21 +338,21 @@ unsigned char* bufptr=NULL; int buflen=ds_get_packet_r(*sh->ds, &bufptr,pts); if(buflen<=0) break; - NeAAC_sample_buffer = NeAACDecDecode(NeAAC_hdec, &NeAAC_finfo, bufptr, buflen); + NeAAC_sample_buffer = (*priv.NeAACDecDecode_ptr)(priv.NeAAC_hdec, &priv.NeAAC_finfo, bufptr, buflen); // printf("NeAAC decoded %d of %d (err: %d) \n",NeAAC_finfo.bytesconsumed,buflen,NeAAC_finfo.error); } - if(NeAAC_finfo.error > 0) { + if(priv.NeAAC_finfo.error > 0) { MSG_WARN("FAAD: Failed to decode frame: %s \n", - NeAACDecGetErrorMessage(NeAAC_finfo.error)); - } else if (NeAAC_finfo.samples == 0) { + (*priv.NeAACDecGetErrorMessage_ptr)(priv.NeAAC_finfo.error)); + } else if (priv.NeAAC_finfo.samples == 0) { MSG_DBG2("FAAD: Decoded zero samples!\n"); } else { /* XXX: samples already multiplied by channels! */ MSG_DBG2("FAAD: Successfully decoded frame (%d Bytes)!\n", - afmt2bps(sh->afmt)*NeAAC_finfo.samples); - memcpy(buf+len,NeAAC_sample_buffer, afmt2bps(sh->afmt)*NeAAC_finfo.samples); - len += afmt2bps(sh->afmt)*NeAAC_finfo.samples; + afmt2bps(sh->afmt)*priv.NeAAC_finfo.samples); + memcpy(buf+len,NeAAC_sample_buffer, afmt2bps(sh->afmt)*priv.NeAAC_finfo.samples); + len += afmt2bps(sh->afmt)*priv.NeAAC_finfo.samples; //printf("FAAD: buffer: %d bytes consumed: %d \n", k, NeAAC_finfo.bytesconsumed); } } Modified: mplayerxp/libmpcodecs/ad_mp3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -176,68 +176,7 @@ MPG123_LSEEK_FAILED /**< Low-level seek failed. */ }; -static void (*mpg123_init_ptr)(void); -#define mpg123_init() (*mpg123_init_ptr)() -static void (*mpg123_exit_ptr)(void); -#define mpg123_exit() (*mpg123_exit_ptr)() -static mpg123_handle * (*mpg123_new_ptr)(const char* decoder, int *error); -#define mpg123_new(a,b) (*mpg123_new_ptr)(a,b) -static void (*mpg123_delete_ptr)(mpg123_handle *mh); -#define mpg123_delete(a) (*mpg123_delete_ptr)(a) -static const char* (*mpg123_plain_strerror_ptr)(int errcode); -#define mpg123_plain_strerror(a) (*mpg123_plain_strerror_ptr)(a) -static int (*mpg123_open_feed_ptr)(mpg123_handle *mh); -#define mpg123_open_feed(a) (*mpg123_open_feed_ptr)(a) -static int (*mpg123_close_ptr)(mpg123_handle *mh); -#define mpg123_close(a) (*mpg123_close_ptr)(a) -static int (*mpg123_read_ptr)(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done); -#define mpg123_read(a,b,c,d) (*mpg123_read_ptr)(a,b,c,d) -static int (*mpg123_feed_ptr)(mpg123_handle *mh, const unsigned char *in, size_t size); -#define mpg123_feed(a,b,c) (*mpg123_feed_ptr)(a,b,c) -static int (*mpg123_decode_ptr)(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, - unsigned char *outmemory, size_t outmemsize, size_t *done); -#define mpg123_decode(a,b,c,d,e,f) (*mpg123_decode_ptr)(a,b,c,d,e,f) -static int (*mpg123_getformat_ptr)(mpg123_handle *mh, long *rate, int *channels, int *encoding); -#define mpg123_getformat(a,b,c,d) (*mpg123_getformat_ptr)(a,b,c,d) -static int (*mpg123_param_ptr)(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue); -#define mpg123_param(a,b,c,d) (*mpg123_param_ptr)(a,b,c,d) -static int (*mpg123_info_ptr)(mpg123_handle *mh, struct mpg123_frameinfo *mi); -#define mpg123_info(a,b) (*mpg123_info_ptr)(a,b) -static const char* (*mpg123_current_decoder_ptr)(mpg123_handle *mh); -#define mpg123_current_decoder(a) (*mpg123_current_decoder_ptr)(a) -static int (*mpg123_decode_frame_ptr)(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); -#define mpg123_decode_frame(a,b,c,d) (*mpg123_decode_frame_ptr)(a,b,c,d) -static off_t (*mpg123_tell_stream_ptr)(mpg123_handle *mh); -#define mpg123_tell_stream(a) (*mpg123_tell_stream_ptr)(a) - -static any_t*dll_handle; -static MPXP_Rc load_dll(const char *libname) { - if(!(dll_handle=ld_codec(libname,mpcodecs_ad_mp3.info->url))) return MPXP_False; - mpg123_init_ptr = (void (*)())ld_aliased_sym(dll_handle,"mpg123_init","mpg123_init_64"); - mpg123_exit_ptr = (void (*)())ld_aliased_sym(dll_handle,"mpg123_exit","mpg123_exit_64"); - mpg123_new_ptr = (mpg123_handle* (*)(const char*,int*))ld_aliased_sym(dll_handle,"mpg123_new","mpg123_new_64"); - mpg123_delete_ptr = (void (*)(mpg123_handle*))ld_aliased_sym(dll_handle,"mpg123_delete","mpg123_delete_64"); - mpg123_plain_strerror_ptr = (const char* (*)(int))ld_aliased_sym(dll_handle,"mpg123_plain_strerror","mpg123_plain_strerror_64"); - mpg123_open_feed_ptr = (int (*)(mpg123_handle*))ld_aliased_sym(dll_handle,"mpg123_open_feed","mpg123_open_feed_64"); - mpg123_close_ptr = (int (*)(mpg123_handle*))ld_aliased_sym(dll_handle,"mpg123_close","mpg123_close_64"); - mpg123_getformat_ptr = (int (*)(mpg123_handle*,long*,int*,int*))ld_aliased_sym(dll_handle,"mpg123_getformat","mpg123_getformat_64"); - mpg123_param_ptr = (int (*)(mpg123_handle*,mpg123_parms,long,double))ld_aliased_sym(dll_handle,"mpg123_param","mpg123_param_64"); - mpg123_info_ptr = (int (*)(mpg123_handle*,mpg123_frameinfo*))ld_aliased_sym(dll_handle,"mpg123_info","mpg123_info_64"); - mpg123_current_decoder_ptr = (const char* (*)(mpg123_handle*))ld_aliased_sym(dll_handle,"mpg123_current_decoder","mpg123_current_decoder_64"); - mpg123_decode_ptr = (int (*)(mpg123_handle*,const unsigned char*,size_t,unsigned char*,size_t,size_t*))ld_aliased_sym(dll_handle,"mpg123_decode","mpg123_decode_64"); - mpg123_read_ptr = (int (*)(mpg123_handle*,unsigned char*,size_t,size_t*))ld_aliased_sym(dll_handle,"mpg123_read","mpg123_read_64"); - mpg123_feed_ptr = (int (*)(mpg123_handle*,const unsigned char*,size_t))ld_aliased_sym(dll_handle,"mpg123_feed","mpg123_feed_64"); - mpg123_tell_stream_ptr = (off_t (*)(mpg123_handle*))ld_aliased_sym(dll_handle,"mpg123_tell_stream","mpg123_tell_stream_64"); - mpg123_decode_frame_ptr = (int (*)(mpg123_handle*,off_t*,unsigned char**,size_t*))ld_aliased_sym(dll_handle,"mpg123_decode_frame","mpg123_decode_frame_64"); - return (mpg123_decode_ptr && mpg123_init_ptr && mpg123_exit_ptr && - mpg123_new_ptr && mpg123_delete_ptr && mpg123_plain_strerror_ptr && - mpg123_open_feed_ptr && mpg123_close_ptr && mpg123_getformat_ptr && - mpg123_param_ptr && mpg123_info_ptr && mpg123_current_decoder_ptr && - mpg123_read_ptr && mpg123_feed_ptr && mpg123_decode_frame_ptr && mpg123_tell_stream_ptr)? - MPXP_Ok:MPXP_False; -} - struct mp3_private_t : public Opaque { mp3_private_t(); virtual ~mp3_private_t(); @@ -246,16 +185,62 @@ off_t pos; float pts; sh_audio_t* sh; + any_t* dll_handle; + void (*mpg123_init_ptr)(void); + void (*mpg123_exit_ptr)(void); + mpg123_handle * (*mpg123_new_ptr)(const char* decoder, int *error); + void (*mpg123_delete_ptr)(mpg123_handle *mh); + + const char* (*mpg123_plain_strerror_ptr)(int errcode); + int (*mpg123_open_feed_ptr)(mpg123_handle *mh); + int (*mpg123_close_ptr)(mpg123_handle *mh); + int (*mpg123_read_ptr)(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done); + int (*mpg123_feed_ptr)(mpg123_handle *mh, const unsigned char *in, size_t size); + int (*mpg123_decode_ptr)(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, + unsigned char *outmemory, size_t outmemsize, size_t *done); + int (*mpg123_getformat_ptr)(mpg123_handle *mh, long *rate, int *channels, int *encoding); + int (*mpg123_param_ptr)(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue); + int (*mpg123_info_ptr)(mpg123_handle *mh, struct mpg123_frameinfo *mi); + const char* (*mpg123_current_decoder_ptr)(mpg123_handle *mh); + int (*mpg123_decode_frame_ptr)(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); + off_t (*mpg123_tell_stream_ptr)(mpg123_handle *mh); }; mp3_private_t::mp3_private_t() {} mp3_private_t::~mp3_private_t() { if(mh) { - mpg123_close(mh); - mpg123_delete(mh); - mpg123_exit(); + (*mpg123_close_ptr)(mh); + (*mpg123_delete_ptr)(mh); + (*mpg123_exit_ptr)(); } + if(dll_handle) ::dlclose(dll_handle); } +static MPXP_Rc load_dll(mp3_private_t& priv,const char *libname) { + if(!(priv.dll_handle=ld_codec(libname,mpcodecs_ad_mp3.info->url))) return MPXP_False; + priv.mpg123_init_ptr = (void (*)())ld_aliased_sym(priv.dll_handle,"mpg123_init","mpg123_init_64"); + priv.mpg123_exit_ptr = (void (*)())ld_aliased_sym(priv.dll_handle,"mpg123_exit","mpg123_exit_64"); + priv.mpg123_new_ptr = (mpg123_handle* (*)(const char*,int*))ld_aliased_sym(priv.dll_handle,"mpg123_new","mpg123_new_64"); + priv.mpg123_delete_ptr = (void (*)(mpg123_handle*))ld_aliased_sym(priv.dll_handle,"mpg123_delete","mpg123_delete_64"); + priv.mpg123_plain_strerror_ptr = (const char* (*)(int))ld_aliased_sym(priv.dll_handle,"mpg123_plain_strerror","mpg123_plain_strerror_64"); + priv.mpg123_open_feed_ptr = (int (*)(mpg123_handle*))ld_aliased_sym(priv.dll_handle,"mpg123_open_feed","mpg123_open_feed_64"); + priv.mpg123_close_ptr = (int (*)(mpg123_handle*))ld_aliased_sym(priv.dll_handle,"mpg123_close","mpg123_close_64"); + priv.mpg123_getformat_ptr = (int (*)(mpg123_handle*,long*,int*,int*))ld_aliased_sym(priv.dll_handle,"mpg123_getformat","mpg123_getformat_64"); + priv.mpg123_param_ptr = (int (*)(mpg123_handle*,mpg123_parms,long,double))ld_aliased_sym(priv.dll_handle,"mpg123_param","mpg123_param_64"); + priv.mpg123_info_ptr = (int (*)(mpg123_handle*,mpg123_frameinfo*))ld_aliased_sym(priv.dll_handle,"mpg123_info","mpg123_info_64"); + priv.mpg123_current_decoder_ptr = (const char* (*)(mpg123_handle*))ld_aliased_sym(priv.dll_handle,"mpg123_current_decoder","mpg123_current_decoder_64"); + priv.mpg123_decode_ptr = (int (*)(mpg123_handle*,const unsigned char*,size_t,unsigned char*,size_t,size_t*))ld_aliased_sym(priv.dll_handle,"mpg123_decode","mpg123_decode_64"); + priv.mpg123_read_ptr = (int (*)(mpg123_handle*,unsigned char*,size_t,size_t*))ld_aliased_sym(priv.dll_handle,"mpg123_read","mpg123_read_64"); + priv.mpg123_feed_ptr = (int (*)(mpg123_handle*,const unsigned char*,size_t))ld_aliased_sym(priv.dll_handle,"mpg123_feed","mpg123_feed_64"); + priv.mpg123_tell_stream_ptr = (off_t (*)(mpg123_handle*))ld_aliased_sym(priv.dll_handle,"mpg123_tell_stream","mpg123_tell_stream_64"); + priv.mpg123_decode_frame_ptr = (int (*)(mpg123_handle*,off_t*,unsigned char**,size_t*))ld_aliased_sym(priv.dll_handle,"mpg123_decode_frame","mpg123_decode_frame_64"); + return (priv.mpg123_decode_ptr && priv.mpg123_init_ptr && priv.mpg123_exit_ptr && + priv.mpg123_new_ptr && priv.mpg123_delete_ptr && priv.mpg123_plain_strerror_ptr && + priv.mpg123_open_feed_ptr && priv.mpg123_close_ptr && priv.mpg123_getformat_ptr && + priv.mpg123_param_ptr && priv.mpg123_info_ptr && priv.mpg123_current_decoder_ptr && + priv.mpg123_read_ptr && priv.mpg123_feed_ptr && priv.mpg123_decode_frame_ptr && priv.mpg123_tell_stream_ptr)? + MPXP_Ok:MPXP_False; +} + static const audio_probe_t probes[] = { { "mp3lib", "libmpg123"SLIBSUFFIX, 0x50, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, { "mp3lib", "libmpg123"SLIBSUFFIX, 0x55, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, @@ -280,8 +265,8 @@ { UNUSED(afi); sh->audio_out_minsize=9216; - if(load_dll(probe.codec_dll)!=MPXP_Ok) return NULL; mp3_private_t* priv = new(zeromem) mp3_private_t; + if(load_dll(*priv,probe.codec_dll)!=MPXP_Ok) { delete priv; return NULL; } priv->sh = sh; return priv; } @@ -298,40 +283,40 @@ struct mpg123_frameinfo fi; sh_audio_t* sh = priv.sh; sh->afmt=AFMT_FLOAT32; - mpg123_init(); - priv.mh = mpg123_new(NULL,&err); + (*priv.mpg123_init_ptr)(); + priv.mh = (*priv.mpg123_new_ptr)(NULL,&err); if(err) { err_exit: - MSG_ERR("mpg123_init: %s\n",mpg123_plain_strerror(err)); - if(priv.mh) mpg123_delete(priv.mh); - mpg123_exit(); + MSG_ERR("mpg123_init: %s\n",(*priv.mpg123_plain_strerror_ptr)(err)); + if(priv.mh) (*priv.mpg123_delete_ptr)(priv.mh); + (*priv.mpg123_exit_ptr)(); return MPXP_False; } - if((err=mpg123_open_feed(priv.mh))!=0) goto err_exit; + if((err=(*priv.mpg123_open_feed_ptr)(priv.mh))!=0) goto err_exit; param = MPG123_FORCE_STEREO|MPG123_FORCE_FLOAT; if(!mp_conf.verbose) param|=MPG123_QUIET; - mpg123_param(priv.mh,MPG123_FLAGS,param,0); + (*priv.mpg123_param_ptr)(priv.mh,MPG123_FLAGS,param,0); // Decode first frame (to get header filled) err=MPG123_NEED_MORE; len=0; while(err==MPG123_NEED_MORE) { indata_size=ds_get_packet_r(*sh->ds,&indata,pts); - mpg123_feed(priv.mh,indata,indata_size); - err=mpg123_read(priv.mh,reinterpret_cast<unsigned char*>(sh->a_buffer),sh->a_buffer_size,&done); + (*priv.mpg123_feed_ptr)(priv.mh,indata,indata_size); + err=(*priv.mpg123_read_ptr)(priv.mh,reinterpret_cast<unsigned char*>(sh->a_buffer),sh->a_buffer_size,&done); len+=done; } sh->a_buffer_len=len; if(err!=MPG123_NEW_FORMAT) { - MSG_ERR("mpg123_init: within [%d] can't retrieve stream property: %s\n",indata_size,mpg123_plain_strerror(err)); - mpg123_close(priv.mh); - mpg123_delete(priv.mh); - mpg123_exit(); + MSG_ERR("mpg123_init: within [%d] can't retrieve stream property: %s\n",indata_size,(*priv.mpg123_plain_strerror_ptr)(err)); + (*priv.mpg123_close_ptr)(priv.mh); + (*priv.mpg123_delete_ptr)(priv.mh); + (*priv.mpg123_exit_ptr)(); return MPXP_False; } - mpg123_getformat(priv.mh, &rate, &nch, &enc); + (*priv.mpg123_getformat_ptr)(priv.mh, &rate, &nch, &enc); sh->rate = rate; sh->nch = nch; - mpg123_info(priv.mh,&fi); + (*priv.mpg123_info_ptr)(priv.mh,&fi); sh->i_bps=((fi.abr_rate?fi.abr_rate:fi.bitrate)/8)*1000; // Prints first frame header in ascii. static const char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Mono" }; @@ -352,16 +337,11 @@ ,fi.flags&MPG123_ORIGINAL?"Yes":"No" ,fi.flags&MPG123_CRC?"Yes":"No" ,fi.flags&MPG123_PRIVATE?"Yes":"No" - ,fi.emphasis,mpg123_current_decoder(priv.mh)); + ,fi.emphasis,(*priv.mpg123_current_decoder_ptr)(priv.mh)); return MPXP_Ok; } -void uninit(Opaque& ctx) -{ - UNUSED(ctx); - if(dll_handle) dlclose(dll_handle); - dll_handle=NULL; -} +void uninit(Opaque& ctx) { UNUSED(ctx); } MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { @@ -395,11 +375,11 @@ */ MSG_DBG2("mp3_decode start: pts=%f\n",pts); do { - cpos = mpg123_tell_stream(priv.mh); + cpos = (*priv.mpg123_tell_stream_ptr)(priv.mh); pts = priv.pts+((float)(cpos-priv.pos)/sh->i_bps); - err=mpg123_decode_frame(priv.mh,&offset,&outdata,&done); + err=(*priv.mpg123_decode_frame_ptr)(priv.mh,&offset,&outdata,&done); if(!((err==MPG123_OK)||(err==MPG123_NEED_MORE))) { - MSG_ERR("mpg123_read = %s done = %u minlen = %u\n",mpg123_plain_strerror(err),done,minlen); + MSG_ERR("mpg123_read = %s done = %u minlen = %u\n",(*priv.mpg123_plain_strerror_ptr)(err),done,minlen); } if(err==MPG123_OK) { MSG_DBG2("ad_mp3.decode: copy %u bytes from %p\n",done,outdata); @@ -409,9 +389,9 @@ float apts=0.; indata_size=ds_get_packet_r(*sh->ds,&indata,apts); if(indata_size<0) return 0; - priv.pos = mpg123_tell_stream(priv.mh); + priv.pos = (*priv.mpg123_tell_stream_ptr)(priv.mh); priv.pts = apts; - mpg123_feed(priv.mh,indata,indata_size); + (*priv.mpg123_feed_ptr)(priv.mh,indata,indata_size); } }while(err==MPG123_NEED_MORE); MSG_DBG2("mp3_decode: %i->%i [%i...%i] pts=%f\n",indata_size,done,minlen,maxlen,pts); Modified: mplayerxp/libmpcodecs/ad_real.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_real.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/ad_real.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -28,34 +28,6 @@ LIBAD_EXTERN(real) - -static any_t*handle=NULL; - -any_t*__builtin_new(unsigned long size) { - return mp_malloc(size); -} - -/* required for cook's uninit: */ -void __builtin_delete(any_t* ize) { - delete ize; -} - -#if defined(__FreeBSD__) || defined(__NetBSD__) -any_t* __ctype_b=NULL; -#endif - -static uint32_t (*raCloseCodec)(uint32_t); -static uint32_t (*raDecode)(any_t*,any_t*,uint32_t,any_t*,any_t*,uint32_t); -static uint32_t (*raFreeDecoder)(uint32_t); -static any_t* (*raGetFlavorProperty)(any_t*,uint32_t,uint32_t,any_t*); -//static uint32_t (*raGetNumberOfFlavors2)(void); -static uint32_t (*raInitDecoder)(any_t*,any_t*); -static uint32_t (*raOpenCodec2)(any_t*,any_t*); -static uint32_t (*raOpenCodec)(any_t*); -static uint32_t (*raSetFlavor)(any_t*,uint32_t); -static void (*raSetDLLAccessPath)(uint32_t); -static void (*raSetPwd)(char*,char*); - typedef struct { int samplerate; short bits; @@ -75,11 +47,23 @@ any_t*internal; float pts; sh_audio_t* sh; + any_t* handle; + uint32_t (*raCloseCodec)(uint32_t); + uint32_t (*raDecode)(any_t*,any_t*,uint32_t,any_t*,any_t*,uint32_t); + uint32_t (*raFreeDecoder)(uint32_t); + any_t* (*raGetFlavorProperty)(any_t*,uint32_t,uint32_t,any_t*); + uint32_t (*raInitDecoder)(any_t*,any_t*); + uint32_t (*raOpenCodec2)(any_t*,any_t*); + uint32_t (*raOpenCodec)(any_t*); + uint32_t (*raSetFlavor)(any_t*,uint32_t); + void (*raSetDLLAccessPath)(uint32_t); + void (*raSetPwd)(char*,char*); }; areal_private_t::areal_private_t() {} areal_private_t::~areal_private_t() { if (raFreeDecoder) raFreeDecoder(long(internal)); if (raCloseCodec) raCloseCodec(long(internal)); + if(handle) ::dlclose(handle); } static const audio_probe_t probes[] = { @@ -99,24 +83,24 @@ return NULL; } -static MPXP_Rc load_dll(const char* name) +static MPXP_Rc load_dll(areal_private_t& priv,const char* name) { - if(!(handle = dlopen (name, RTLD_LAZY))) return MPXP_False; + if(!(priv.handle = ::dlopen (name, RTLD_LAZY))) return MPXP_False; - raCloseCodec = (uint32_t (*)(uint32_t))ld_sym(handle, "RACloseCodec"); - raDecode = (uint32_t (*)(any_t*,any_t*,uint32_t,any_t*,any_t*,uint32_t))ld_sym(handle, "RADecode"); - raFreeDecoder = (uint32_t (*)(uint32_t))ld_sym(handle, "RAFreeDecoder"); - raGetFlavorProperty = (any_t* (*)(any_t*,uint32_t,uint32_t,any_t*))ld_sym(handle, "RAGetFlavorProperty"); - raOpenCodec = (uint32_t (*)(any_t*))ld_sym(handle, "RAOpenCodec"); - raOpenCodec2 = (uint32_t (*)(any_t*,any_t*))ld_sym(handle, "RAOpenCodec2"); - raInitDecoder = (uint32_t (*)(any_t*,any_t*))ld_sym(handle, "RAInitDecoder"); - raSetFlavor = (uint32_t (*)(any_t*,uint32_t))ld_sym(handle, "RASetFlavor"); - raSetDLLAccessPath = (void (*)(uint32_t))ld_sym(handle, "SetDLLAccessPath"); - raSetPwd = (void (*)(char*,char*))ld_sym(handle, "RASetPwd"); /* optional, used by SIPR */ + priv.raCloseCodec = (uint32_t (*)(uint32_t))ld_sym(priv.handle, "RACloseCodec"); + priv.raDecode = (uint32_t (*)(any_t*,any_t*,uint32_t,any_t*,any_t*,uint32_t))ld_sym(priv.handle, "RADecode"); + priv.raFreeDecoder = (uint32_t (*)(uint32_t))ld_sym(priv.handle, "RAFreeDecoder"); + priv.raGetFlavorProperty = (any_t* (*)(any_t*,uint32_t,uint32_t,any_t*))ld_sym(priv.handle, "RAGetFlavorProperty"); + priv.raOpenCodec = (uint32_t (*)(any_t*))ld_sym(priv.handle, "RAOpenCodec"); + priv.raOpenCodec2 = (uint32_t (*)(any_t*,any_t*))ld_sym(priv.handle, "RAOpenCodec2"); + priv.raInitDecoder = (uint32_t (*)(any_t*,any_t*))ld_sym(priv.handle, "RAInitDecoder"); + priv.raSetFlavor = (uint32_t (*)(any_t*,uint32_t))ld_sym(priv.handle, "RASetFlavor"); + priv.raSetDLLAccessPath = (void (*)(uint32_t))ld_sym(priv.handle, "SetDLLAccessPath"); + priv.raSetPwd = (void (*)(char*,char*))ld_sym(priv.handle, "RASetPwd"); /* optional, used by SIPR */ - return (raCloseCodec && raDecode && raFreeDecoder && - raGetFlavorProperty && (raOpenCodec2||raOpenCodec) && raSetFlavor && - raInitDecoder)?MPXP_Ok:MPXP_False; + return (priv.raCloseCodec && priv.raDecode && priv.raFreeDecoder && + priv.raGetFlavorProperty && (priv.raOpenCodec2||priv.raOpenCodec) && priv.raSetFlavor && + priv.raInitDecoder)?MPXP_Ok:MPXP_False; } static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi){ @@ -128,9 +112,8 @@ any_t* prop; char path[4096]; char cpath[4096]; - areal_private_t *priv; - if(load_dll(probe.codec_dll)!=MPXP_Ok) return NULL; - priv=new(zeromem) areal_private_t; + areal_private_t *priv=new(zeromem) areal_private_t; + if(load_dll(*priv,probe.codec_dll)!=MPXP_Ok) { delete priv; return NULL; } priv->sh = sh; char *end; @@ -145,14 +128,14 @@ } path[strlen(path)+1]=0; - if(raSetDLLAccessPath) - raSetDLLAccessPath(long(path)); + if(priv->raSetDLLAccessPath) + (*priv->raSetDLLAccessPath)(long(path)); - if(raOpenCodec2) { + if(priv->raOpenCodec2) { strcat(cpath,"/"); - result=raOpenCodec2(&priv->internal,cpath); + result=(*priv->raOpenCodec2)(&priv->internal,cpath); } - else result=raOpenCodec(&priv->internal); + else result=(*priv->raOpenCodec)(&priv->internal); if(result){ MSG_WARN("Decoder open failed, error code: 0x%X\n",result); delete priv; @@ -173,35 +156,35 @@ ((short*)(sh->wf+1))[4], // codec data length ((char*)(sh->wf+1))+10 // extras }; - result=raInitDecoder(priv->internal,&init_data); + result=(*priv->raInitDecoder)(priv->internal,&init_data); if(result){ MSG_WARN("Decoder init failed, error code: 0x%X\n",result); delete priv; return NULL; } - if(raSetPwd){ + if(priv->raSetPwd){ // used by 'SIPR' - raSetPwd(reinterpret_cast<char*>(priv->internal),const_cast<char*>("Ardubancel Quazanga")); // set password... lol. + (*priv->raSetPwd)(reinterpret_cast<char*>(priv->internal),const_cast<char*>("Ardubancel Quazanga")); // set password... lol. } - result=raSetFlavor(priv->internal,((short*)(sh->wf+1))[2]); + result=(*priv->raSetFlavor)(priv->internal,((short*)(sh->wf+1))[2]); if(result){ MSG_WARN("Decoder flavor setup failed, error code: 0x%X\n",result); delete priv; return NULL; } - prop=raGetFlavorProperty(priv->internal,((short*)(sh->wf+1))[2],0,&len); + prop=(*priv->raGetFlavorProperty)(priv->internal,((short*)(sh->wf+1))[2],0,&len); MSG_INFO("Audio codec: [%d] %s\n",((short*)(sh->wf+1))[2],prop); - prop=raGetFlavorProperty(priv->internal,((short*)(sh->wf+1))[2],1,&len); + prop=(*priv->raGetFlavorProperty)(priv->internal,((short*)(sh->wf+1))[2],1,&len); if(prop){ sh->i_bps=((*((int*)prop))+4)/8; MSG_INFO("Audio bitrate: %5.3f kbit/s (%d bps) \n",(*((int*)prop))*0.001f,sh->i_bps); } else sh->i_bps=sh->wf->nAvgBytesPerSec; -// prop=raGetFlavorProperty(priv->internal,((short*)(sh->wf+1))[2],0x13,&len); +// prop=(*priv->raGetFlavorProperty)(priv->internal,((short*)(sh->wf+1))[2],0x13,&len); // MSG_INFO("Samples/block?: %d \n",(*((int*)prop))); sh->audio_out_minsize=128000; // no idea how to get... :( @@ -292,7 +275,7 @@ } else pts=priv.pts; - result=raDecode(priv.internal, sh->a_in_buffer+sh->a_in_buffer_size-sh->a_in_buffer_len, sh->wf->nBlockAlign, + result=(*priv.raDecode)(priv.internal, sh->a_in_buffer+sh->a_in_buffer_size-sh->a_in_buffer_len, sh->wf->nBlockAlign, buf, &len, -1); if((int)len<0) len=0; sh->a_in_buffer_len-=sh->wf->nBlockAlign; Modified: mplayerxp/libmpcodecs/codecs_ld.cpp =================================================================== --- mplayerxp/libmpcodecs/codecs_ld.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/codecs_ld.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -13,17 +13,17 @@ #include "mpxp_help.h" #include "global_msg.h" -any_t* ld_codec(const char *name,const char *url_hint) +namespace mpxp { +any_t* ld_codec(const std::string& name,const std::string& url_hint) { - any_t*dll_handle; - if(!(dll_handle=dlopen(name,RTLD_LAZY|RTLD_GLOBAL))) - { - MSG_FATAL(MSGTR_CODEC_CANT_LOAD_DLL,name,dlerror()); - if(url_hint) MSG_HINT(MSGTR_CODEC_DLL_HINT,url_hint); - return NULL; - } - MSG_V(MSGTR_CODEC_DLL_OK,name); - return dll_handle; + any_t*dll_handle; + if(!(dll_handle=::dlopen(name.c_str(),RTLD_LAZY|RTLD_GLOBAL))) { + mpxp_fatal<<"[codec_ld] "<<MSGTR_CODEC_CANT_LOAD_DLL<<":"<<name<<" {"<<dlerror()<<"}"<<std::endl; + if(!url_hint.empty()) mpxp_hint<<"[codec_ld] "<<MSGTR_CODEC_DLL_HINT<<":"<<url_hint<<std::endl; + return NULL; + } + mpxp_v<<"[codec_ld] "<<MSGTR_CODEC_DLL_OK<<":"<<name<<std::endl; + return dll_handle; } #if 0 @@ -37,29 +37,30 @@ } #endif -any_t* ld_sym(any_t*handle,const char *sym_name) +any_t* ld_sym(any_t*handle,const std::string& sym_name) { - any_t*rval; - if(!(rval=dlsym(handle,sym_name))) { - MSG_ERR(MSGTR_CODEC_DLL_SYM_ERR,sym_name); - } - return rval; + any_t*rval; + if(!(rval=::dlsym(handle,sym_name.c_str()))) { + mpxp_err<<"[codec_ld] "<<MSGTR_CODEC_DLL_SYM_ERR<<":"<<sym_name<<std::endl; + } + return rval; } -any_t* ld_aliased_sym(any_t*handle,const char *sym_name,...) +any_t* ld_aliased_sym(any_t*handle,const std::string& sym_name,...) { - any_t*rval=dlsym(handle,sym_name); - if(!rval) { - const char *alias; - va_list list; - va_start( list, sym_name ); - do { - alias = va_arg(list, const char *); - if(alias) rval = dlsym(handle,alias); - if(rval) break; - }while(alias); - va_end( list ); - } - if(!rval) MSG_ERR(MSGTR_CODEC_DLL_SYM_ERR,sym_name); - return rval; + any_t*rval=::dlsym(handle,sym_name.c_str()); + if(!rval) { + const char *alias; + va_list list; + va_start( list, sym_name ); + do { + alias = va_arg(list, const char *); + if(alias) rval = ::dlsym(handle,alias); + if(rval) break; + }while(alias); + va_end( list ); + } + if(!rval) mpxp_err<<"[codec_ld] "<<MSGTR_CODEC_DLL_SYM_ERR<<":"<<sym_name<<std::endl; + return rval; } +} // namespace mpxp Modified: mplayerxp/libmpcodecs/codecs_ld.h =================================================================== --- mplayerxp/libmpcodecs/codecs_ld.h 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/codecs_ld.h 2012-12-25 16:17:37 UTC (rev 601) @@ -1,18 +1,15 @@ /* codecs_ld - light interface to codec loader */ - #ifndef __CODECS_LD #define __CODECS_LD - #include "mpxp_config.h" +#include <string> -extern any_t* ld_codec(const char *name,const char *url_hint); -/*extern char * codec_name( const char *name );*/ - -extern any_t* ld_sym(any_t*handle,const char *sym_name); -extern any_t* ld_aliased_sym(any_t*handle,const char *sym_name,...); -#if defined(__OpenBSD__) && !defined(__ELF__) -#define dlsym(h,s) ld_sym(h, "_" s) +namespace mpxp { + extern any_t* ld_codec(const std::string& name,const std::string& url_hint); +/* extern char * codec_name( const char *name );*/ + extern any_t* ld_sym(any_t*handle,const std::string& sym_name); + extern any_t* ld_aliased_sym(any_t*handle,const std::string& sym_name,...); +} // namespace mpxp #endif -#endif Modified: mplayerxp/libmpcodecs/vd_divx4.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -142,15 +142,15 @@ int resync; sh_video_t* sh; video_decoder_t* parent; + any_t* dll_handle; + LibQDecoreFunction* (*getDecore_ptr)(unsigned long format); }; divx4_private_t::divx4_private_t() {} divx4_private_t::~divx4_private_t() { - decoder(pHandle, DEC_OPT_RELEASE, 0, 0); + if(pHandle) decoder(pHandle, DEC_OPT_RELEASE, 0, 0); + if(dll_handle) ::dlclose(dll_handle); } -static LibQDecoreFunction* (*getDecore_ptr)(unsigned long format); -static any_t*dll_handle; - static const video_probe_t probes[] = { { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','Y','U','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, @@ -174,7 +174,6 @@ // to set/get/query special features/parameters static MPXP_Rc control_vd(Opaque& ctx,int cmd,any_t* arg,...){ divx4_private_t& priv=static_cast<divx4_private_t&>(ctx); - sh_video_t* sh = priv.sh; switch(cmd){ case VDCTRL_QUERY_MAX_PP_LEVEL: *((unsigned*)arg)=100; @@ -215,17 +214,17 @@ } -static int load_lib( const char *libname ) +static int load_lib(divx4_private_t& priv, const char *libname ) { - if(!(dll_handle=ld_codec(libname,mpcodecs_vd_divx4.info->url))) return 0; - getDecore_ptr = (LibQDecoreFunction* (*)(unsigned long))ld_sym(dll_handle,"getDecore"); - return getDecore_ptr != NULL; + if(!(priv.dll_handle=ld_codec(libname,mpcodecs_vd_divx4.info->url))) return 0; + priv.getDecore_ptr = (LibQDecoreFunction* (*)(unsigned long))ld_sym(priv.dll_handle,"getDecore"); + return priv.getDecore_ptr != NULL; } static Opaque* preinit(const video_probe_t& probe,sh_video_t *sh,put_slice_info_t& psi){ UNUSED(psi); - if(!load_lib(probe.codec_dll)) return NULL; divx4_private_t* priv = new(zeromem) divx4_private_t; + if(!load_lib(*priv,probe.codec_dll)) { delete priv; return NULL; } priv->sh=sh; return priv; } @@ -246,7 +245,7 @@ MSG_ERR("Unsupported out_fmt: 0x%X\n",sh->codec->outfmt[sh->outfmtidx]); return MPXP_False; } - if(!(priv.decoder=getDecore_ptr(sh->fourcc))) { + if(!(priv.decoder=priv.getDecore_ptr(sh->fourcc))) { char *fcc=(char *)&(sh->fourcc); MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",fcc[0],fcc[1],fcc[2],fcc[3]); return MPXP_False; @@ -270,10 +269,7 @@ } // uninit driver -static void uninit(Opaque& ctx){ - UNUSED(ctx); - dlclose(dll_handle); -} +static void uninit(Opaque& ctx){ UNUSED(ctx); } // decode a frame static mp_image_t* decode(Opaque& ctx,const enc_frame_t& frame){ Modified: mplayerxp/libmpcodecs/vd_libmpeg2.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -205,23 +205,6 @@ STATE_SEQUENCE_MODIFIED = 11 } mpeg2_state_t; -static mpeg2dec_t* (*mpeg2_init_ptr) (unsigned); -#define mpeg2_init(a) (*mpeg2_init_ptr)(a) -static void (*mpeg2_close_ptr) (mpeg2dec_t * mpeg2dec); -#define mpeg2_close(a) (*mpeg2_close_ptr)(a) -static const mpeg2_info_t * (*mpeg2_info_ptr) (mpeg2dec_t * mpeg2dec); -#define mpeg2_info(a) (*mpeg2_info_ptr)(a) -static int (*mpeg2_parse_ptr) (mpeg2dec_t * mpeg2dec); -#define mpeg2_parse(a) (*mpeg2_parse_ptr)(a) -static void (*mpeg2_buffer_ptr) (mpeg2dec_t * mpeg2dec, uint8_t * start, uint8_t * end); -#define mpeg2_buffer(a,b,c) (*mpeg2_buffer_ptr)(a,b,c) -static void (*mpeg2_set_buf_ptr) (mpeg2dec_t * mpeg2dec, uint8_t * buf[3], any_t* id); -#define mpeg2_set_buf(a,b,c) (*mpeg2_set_buf_ptr)(a,b,c) -static int (*mpeg2_stride_ptr) (mpeg2dec_t * mpeg2dec, int stride); -#define mpeg2_stride(a,b) (*mpeg2_stride_ptr)(a,b) -static void (*mpeg2_reset_ptr) (mpeg2dec_t * mpeg2dec, int full_reset); -#define mpeg2_reset(a,b) (*mpeg2_reset_ptr)(a,b) - struct libmpeg2_private_t : public Opaque { libmpeg2_private_t(); virtual ~libmpeg2_private_t(); @@ -229,27 +212,36 @@ sh_video_t* sh; video_decoder_t* parent; mpeg2dec_t* mpeg2dec; + any_t* dll_handle; + mpeg2dec_t* (*mpeg2_init_ptr) (unsigned); + void (*mpeg2_close_ptr) (mpeg2dec_t * mpeg2dec); + const mpeg2_info_t * (*mpeg2_info_ptr) (mpeg2dec_t * mpeg2dec); + int (*mpeg2_parse_ptr) (mpeg2dec_t * mpeg2dec); + void (*mpeg2_buffer_ptr) (mpeg2dec_t * mpeg2dec, uint8_t * start, uint8_t * end); + void (*mpeg2_set_buf_ptr) (mpeg2dec_t * mpeg2dec, uint8_t * buf[3], any_t* id); + int (*mpeg2_stride_ptr) (mpeg2dec_t * mpeg2dec, int stride); + void (*mpeg2_reset_ptr) (mpeg2dec_t * mpeg2dec, int full_reset); }; libmpeg2_private_t::libmpeg2_private_t() {} libmpeg2_private_t::~libmpeg2_private_t() { - if(mpeg2dec) mpeg2_close(mpeg2dec); + if(mpeg2dec) (*mpeg2_close_ptr)(mpeg2dec); + if(dll_handle) ::dlclose(dll_handle); } -static any_t*dll_handle; -static MPXP_Rc load_lib( const char *libname ) +static MPXP_Rc load_lib(libmpeg2_private_t& priv, const char *libname ) { - if(!(dll_handle=ld_codec(libname,mpcodecs_vd_libmpeg2.info->url))) return MPXP_False; - mpeg2_init_ptr = (mpeg2dec_t* (*)(unsigned int))ld_sym(dll_handle,"mpeg2_init"); - mpeg2_close_ptr = (void (*)(mpeg2dec_t*))ld_sym(dll_handle,"mpeg2_close"); - mpeg2_info_ptr = (const mpeg2_info_t* (*)(mpeg2dec_t*))ld_sym(dll_handle,"mpeg2_info"); - mpeg2_parse_ptr = (int (*)(mpeg2dec_t*))ld_sym(dll_handle,"mpeg2_parse"); - mpeg2_buffer_ptr = (void (*)(mpeg2dec_t*,uint8_t*,uint8_t*))ld_sym(dll_handle,"mpeg2_buffer"); - mpeg2_set_buf_ptr = (void (*)(mpeg2dec_t*,uint8_t**,any_t*))ld_sym(dll_handle,"mpeg2_set_buf"); - mpeg2_stride_ptr = (int (*)(mpeg2dec_t*,int))ld_sym(dll_handle,"mpeg2_stride"); - mpeg2_reset_ptr = (void (*)(mpeg2dec_t*,int))ld_sym(dll_handle,"mpeg2_reset"); - return (mpeg2_init_ptr && mpeg2_close_ptr && mpeg2_info_ptr && - mpeg2_parse_ptr && mpeg2_buffer_ptr && mpeg2_set_buf_ptr && - mpeg2_stride_ptr && mpeg2_reset_ptr)?MPXP_Ok:MPXP_False; + if(!(priv.dll_handle=ld_codec(libname,mpcodecs_vd_libmpeg2.info->url))) return MPXP_False; + priv.mpeg2_init_ptr = (mpeg2dec_t* (*)(unsigned int))ld_sym(priv.dll_handle,"mpeg2_init"); + priv.mpeg2_close_ptr = (void (*)(mpeg2dec_t*))ld_sym(priv.dll_handle,"mpeg2_close"); + priv.mpeg2_info_ptr = (const mpeg2_info_t* (*)(mpeg2dec_t*))ld_sym(priv.dll_handle,"mpeg2_info"); + priv.mpeg2_parse_ptr = (int (*)(mpeg2dec_t*))ld_sym(priv.dll_handle,"mpeg2_parse"); + priv.mpeg2_buffer_ptr = (void (*)(mpeg2dec_t*,uint8_t*,uint8_t*))ld_sym(priv.dll_handle,"mpeg2_buffer"); + priv.mpeg2_set_buf_ptr = (void (*)(mpeg2dec_t*,uint8_t**,any_t*))ld_sym(priv.dll_handle,"mpeg2_set_buf"); + priv.mpeg2_stride_ptr = (int (*)(mpeg2dec_t*,int))ld_sym(priv.dll_handle,"mpeg2_stride"); + priv.mpeg2_reset_ptr = (void (*)(mpeg2dec_t*,int))ld_sym(priv.dll_handle,"mpeg2_reset"); + return (priv.mpeg2_init_ptr && priv.mpeg2_close_ptr && priv.mpeg2_info_ptr && + priv.mpeg2_parse_ptr && priv.mpeg2_buffer_ptr && priv.mpeg2_set_buf_ptr && + priv.mpeg2_stride_ptr && priv.mpeg2_reset_ptr)?MPXP_Ok:MPXP_False; } // to set/get/query special features/parameters @@ -258,7 +250,7 @@ switch(cmd) { case VDCTRL_RESYNC_STREAM: /*lib starts looking for the next sequence header.*/ - mpeg2_reset(priv.mpeg2dec,1); + (*priv.mpeg2_reset_ptr)(priv.mpeg2dec,1); return MPXP_True; case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12) @@ -271,8 +263,8 @@ static Opaque* preinit(const video_probe_t& probe,sh_video_t *sh,put_slice_info_t& psi){ UNUSED(psi); - if(!load_lib(probe.codec_dll)) return NULL; libmpeg2_private_t* priv = new(zeromem) libmpeg2_private_t; + if(!load_lib(*priv,probe.codec_dll)) { delete priv; return NULL; } priv->sh=sh; return priv; } @@ -281,17 +273,14 @@ libmpeg2_private_t& priv=static_cast<libmpeg2_private_t&>(ctx); sh_video_t* sh = priv.sh; priv.parent=&opaque; - if(!(priv.mpeg2dec=mpeg2_init(mpxp_context().mplayer_accel))) { + if(!(priv.mpeg2dec=(*priv.mpeg2_init_ptr)(mpxp_context().mplayer_accel))) { return MPXP_False; } return mpcodecs_config_vf(opaque,sh->src_w,sh->src_h); } // uninit driver -static void uninit(Opaque& ctx){ - UNUSED(ctx); - dlclose(dll_handle); -} +static void uninit(Opaque& ctx){ UNUSED(ctx); } static void draw_frame(mp_image_t *mpi,video_decoder_t& sh,unsigned w,const mpeg2_fbuf_t *src) { @@ -313,18 +302,18 @@ int state,buf; if(frame.len<=0) return NULL; // skipped null frame - _info=mpeg2_info(priv.mpeg2dec); + _info=(*priv.mpeg2_info_ptr)(priv.mpeg2dec); mpi=NULL; buf=0; MSG_DBG2("len=%u ***mpeg2_info***\n",frame.len); while(1) { - state=mpeg2_parse(priv.mpeg2dec); + state=(*priv.mpeg2_parse_ptr)(priv.mpeg2dec); MSG_DBG2("%i=mpeg2_parse\n",state); switch(state) { case STATE_BUFFER: - mpeg2_buffer(priv.mpeg2dec,reinterpret_cast<uint8_t*>(frame.data),reinterpret_cast<uint8_t*>(frame.data)+frame.len); + (*priv.mpeg2_buffer_ptr)(priv.mpeg2dec,reinterpret_cast<uint8_t*>(frame.data),reinterpret_cast<uint8_t*>(frame.data)+frame.len); buf++; if(buf>2) return NULL; /* parsing of the passed buffer finished, return. */ break; @@ -338,7 +327,7 @@ #endif mpi=mpcodecs_get_image(*priv.parent,MP_IMGTYPE_EXPORT, MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_DRAW_CALLBACK ,_info->sequence->width,_info->sequence->height); - mpeg2_stride(priv.mpeg2dec,mpi->stride[0]); + (*priv.mpeg2_stride_ptr)(priv.mpeg2dec,mpi->stride[0]); break; case STATE_SLICE: case STATE_END: @@ -347,7 +336,7 @@ MSG_DBG2("display=%X discard=%X current=%X mpi=%X\n",_info->display_fbuf,_info->discard_fbuf,_info->current_fbuf,mpi); /* Workaround for broken (badly demuxed) streams. Reset libmpeg2 to start decoding at the next picture. */ - if(state==STATE_END) mpeg2_reset(priv.mpeg2dec,0); + if(state==STATE_END) (*priv.mpeg2_reset_ptr)(priv.mpeg2dec,0); if (_info->display_fbuf && mpi) { mpi->pict_type=_info->current_picture->flags&PIC_MASK_CODING_TYPE; Modified: mplayerxp/libmpcodecs/vd_real.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_real.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/vd_real.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -72,12 +72,6 @@ uint32_t timestamp; }; -uint32_t (*rvyuv_custom_message)(cmsg_data_t*,any_t*); -uint32_t (*rvyuv_free)(any_t*); -uint32_t (*rvyuv_hive_message)(uint32_t,uint32_t); -uint32_t (*rvyuv_init)(any_t*,any_t*); -uint32_t (*rvyuv_transform)(char*, char*,transform_in_t*,unsigned int*,any_t*); - #if 0 any_t*__builtin_vec_new(unsigned long size) { return mp_malloc(size); @@ -101,11 +95,16 @@ sh_video_t* sh; video_decoder_t* parent; any_t* rv_handle; + uint32_t (*rvyuv_custom_message)(cmsg_data_t*,any_t*); + uint32_t (*rvyuv_free)(any_t*); + uint32_t (*rvyuv_hive_message)(uint32_t,uint32_t); + uint32_t (*rvyuv_init)(any_t*,any_t*); + uint32_t (*rvyuv_transform)(char*, char*,transform_in_t*,unsigned int*,any_t*); }; vreal_private_t::vreal_private_t() {} vreal_private_t::~vreal_private_t() { if(rvyuv_free) rvyuv_free(handle); - if(rv_handle) dlclose(rv_handle); + if(rv_handle) ::dlclose(rv_handle); } // to set/get/query special features/parameters @@ -132,34 +131,34 @@ any_t*handle; char *error; - priv.rv_handle = handle = dlopen (path, RTLD_LAZY); + priv.rv_handle = handle = ::dlopen (path, RTLD_LAZY); if (!handle) { MSG_ERR("DLError: %s\n",dlerror()); return 0; } - rvyuv_custom_message = (uint32_t (*)(cmsg_data_t*,any_t*))ld_sym(handle, "RV20toYUV420CustomMessage"); - if ((error = dlerror()) != NULL) { + priv.rvyuv_custom_message = (uint32_t (*)(cmsg_data_t*,any_t*))ld_sym(handle, "RV20toYUV420CustomMessage"); + if ((error = ::dlerror()) != NULL) { MSG_ERR( "ld_sym(rvyuvCustomMessage): %s\n", error); return 0; } - rvyuv_free = (uint32_t (*)(any_t*))ld_sym(handle, "RV20toYUV420Free"); - if ((error = dlerror()) != NULL) { + priv.rvyuv_free = (uint32_t (*)(any_t*))ld_sym(handle, "RV20toYUV420Free"); + if ((error = ::dlerror()) != NULL) { MSG_ERR( "ld_sym(rvyuvFree): %s\n", error); return 0; } - rvyuv_hive_message = (uint32_t (*)(uint32_t,uint32_t))ld_sym(handle, "RV20toYUV420HiveMessage"); - if ((error = dlerror()) != NULL) { + priv.rvyuv_hive_message = (uint32_t (*)(uint32_t,uint32_t))ld_sym(handle, "RV20toYUV420HiveMessage"); + if ((error = ::dlerror()) != NULL) { MSG_ERR( "ld_sym(rvyuvHiveMessage): %s\n", error); return 0; } - rvyuv_init = (uint32_t (*)(any_t*,any_t*))ld_sym(handle, "RV20toYUV420Init"); - if ((error = dlerror()) != NULL) { + priv.rvyuv_init = (uint32_t (*)(any_t*,any_t*))ld_sym(handle, "RV20toYUV420Init"); + if ((error = ::dlerror()) != NULL) { MSG_ERR( "ld_sym(rvyuvInit): %s\n", error); return 0; } - rvyuv_transform = (uint32_t (*)(char*,char*,transform_in_t*,unsigned int*,any_t*))ld_sym(handle, "RV20toYUV420Transform"); - if ((error = dlerror()) != NULL) { + priv.rvyuv_transform = (uint32_t (*)(char*,char*,transform_in_t*,unsigned int*,any_t*))ld_sym(handle, "RV20toYUV420Transform"); + if ((error = ::dlerror()) != NULL) { MSG_ERR( "ld_sym(rvyuvTransform): %s\n", error); return 0; } @@ -205,7 +204,7 @@ // only I420 supported if(!mpcodecs_config_vf(opaque,sh->src_w,sh->src_h)) return MPXP_False; // init codec: - result=(*rvyuv_init)(&init_data, &priv.handle); + result=(*priv.rvyuv_init)(&init_data, &priv.handle); if (result){ MSG_ERR("Couldn't open RealVideo codec, error code: 0x%X \n",result); return MPXP_False; @@ -215,7 +214,7 @@ uint32_t cmsg24[4]={sh->src_w,sh->src_h,sh->src_w,sh->src_h}; /* FIXME: Broken for 64-bit pointers */ cmsg_data_t cmsg_data={0x24,1+(extrahdr[1]&7), &cmsg24[0]}; - (*rvyuv_custom_message)(&cmsg_data,priv.handle); + (*priv.rvyuv_custom_message)(&cmsg_data,priv.handle); } MSG_V("INFO: RealVideo codec init OK!\n"); return MPXP_Ok; @@ -250,7 +249,7 @@ sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - result=(*rvyuv_transform)(const_cast<char *>(dp_data), reinterpret_cast<char*>(mpi->planes[0]), &transform_in, + result=(*priv.rvyuv_transform)(const_cast<char *>(dp_data), reinterpret_cast<char*>(mpi->planes[0]), &transform_in, transform_out, priv.handle); return (result?NULL:mpi); Modified: mplayerxp/libmpcodecs/vd_xanim.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-25 14:21:19 UTC (rev 600) +++ mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-25 16:17:37 UTC (rev 601) @@ -192,9 +192,8 @@ }; static const int XA_CLOSE_FUNCS=5; -int xa_close_func = 0; -typedef struct xacodec_driver { +struct xacodec_driver_t { XA_DEC_INFO* decinfo; any_t* file_handler; long (*iq_func)(XA_CODEC_HDR *codec_hdr); @@ -202,16 +201,16 @@ unsigned int dsize, XA_DEC_INFO *dec_info); any_t* close_func[XA_CLOSE_FUNCS]; xacodec_image_t image; -} xacodec_driver_t; +}; -xacodec_driver_t *xacodec_driver = NULL; - struct xa_private_t : public Opaque { xa_private_t(); virtual ~xa_private_t(); sh_video_t* sh; video_decoder_t* parent; + xacodec_driver_t* xacodec_driver; + int xa_close_func; }; xa_private_t::xa_private_t() {} xa_private_t::~xa_private_t() {} @@ -233,39 +232,39 @@ /* 0 is no debug (needed by 3ivX) */ long xa_debug = 0; -int xacodec_exit(void); -void TheEnd1(char *err_mess) +int xacodec_exit(xa_private_t&); +void TheEnd1(xa_private_t& priv,const char *err_mess) { XA_Print("error: %s - exiting\n", err_mess); - xacodec_exit(); + xacodec_exit(priv); return; } -void XA_Add_Func_To_Free_Chain(XA_ANIM_HDR *anim_hdr, void (*function)()) +void XA_Add_Func_To_Free_Chain(xa_private_t& priv,XA_ANIM_HDR *anim_hdr, void (*function)()) { // XA_Print("XA_Add_Func_To_Free_Chain('anim_hdr: %08x', 'function: %08x')", // anim_hdr, function); - xacodec_driver->close_func[xa_close_func] = (any_t*)function; - if (xa_close_func+1 < XA_CLOSE_FUNCS) - xa_close_func++; + priv.xacodec_driver->close_func[priv.xa_close_func] = (any_t*)function; + if (priv.xa_close_func+1 < XA_CLOSE_FUNCS) + priv.xa_close_func++; return; } /* end of crap */ /* load, init and query */ -int xacodec_init(char *filename, xacodec_driver_t *codec_driver) +int xacodec_init(const char *filename, xacodec_driver_t *codec_driver) { any_t*(*what_the)(); - char *error; + const char *error; XAVID_MOD_HDR *mod_hdr; XAVID_FUNC_HDR *func; unsigned int i; - codec_driver->file_handler = dlopen(filename, RTLD_NOW|RTLD_GLOBAL); + codec_driver->file_handler = ::dlopen(filename, RTLD_NOW|RTLD_GLOBAL); if (!codec_driver->file_handler) { - error = dlerror(); + error = ::dlerror(); if (error) MSG_FATAL( "xacodec: failed to dlopen %s while %s\n", filename, error); else @@ -274,7 +273,7 @@ } what_the = (any_t* (*)())ld_sym(codec_driver->file_handler, "What_The"); - if ((error = dlerror()) != NULL) { + if ((error = ::dlerror()) != NULL) { MSG_FATAL( "xacodec: failed to init %s while %s\n", filename, error); dlclose(codec_driver->file_handler); return 0; @@ -368,39 +367,40 @@ const char *xacodec_def_path = "/usr/lib/xanim/mods"; -int xacodec_init_video(sh_video_t *vidinfo, int out_format) +static int xacodec_init_video(xa_private_t& priv, int out_format) { char dll[1024]; XA_CODEC_HDR codec_hdr; int i; + sh_video_t* sh_video = priv.sh; - xacodec_driver = (xacodec_driver_t*)mp_realloc(xacodec_driver, sizeof(struct xacodec_driver)); - if (xacodec_driver == NULL) { + priv.xacodec_driver = (xacodec_driver_t*)mp_realloc(priv.xacodec_driver, sizeof(struct xacodec_driver_t)); + if (priv.xacodec_driver == NULL) { MSG_FATAL( "xacodec: memory allocation error: %s\n", strerror(errno)); return 0; } - xacodec_driver->iq_func = NULL; - xacodec_driver->dec_func = NULL; + priv.xacodec_driver->iq_func = NULL; + priv.xacodec_driver->dec_func = NULL; for (i=0; i < XA_CLOSE_FUNCS; i++) - xacodec_driver->close_func[i] = NULL; + priv.xacodec_driver->close_func[i] = NULL; if (getenv("XANIM_MOD_DIR")) - xacodec_def_path = getenv("XANIM_MOD_DIR"); + xacodec_def_path = ::getenv("XANIM_MOD_DIR"); - snprintf(dll, 1024, "%s/%s", xacodec_def_path, vidinfo->codec->dll_name); - if (xacodec_init(dll, xacodec_driver) == 0) + snprintf(dll, 1024, "%s/%s", xacodec_def_path, sh_video->codec->dll_name); + if (xacodec_init(dll, priv.xacodec_driver) == 0) return 0; codec_hdr.xapi_rev = XAVID_API_REV; codec_hdr.anim_hdr = mp_malloc(4096); - codec_hdr.description = vidinfo->codec->s_info; - codec_hdr.compression = bswap_32(vidinfo->bih->biCompression); + codec_hdr.description = sh_video->codec->s_info; + codec_hdr.compression = bswap_32(sh_video->bih->biCompression); codec_hdr.decoder = NULL; - codec_hdr.x = vidinfo->bih->biWidth; /* ->src_w */ - codec_hdr.y = vidinfo->bih->biHeight; /* ->src_h */ + codec_hdr.x = sh_video->bih->biWidth; /* ->src_w */ + codec_hdr.y = sh_video->bih->biHeight; /* ->src_h */ /* extra fields to store palette */ codec_hdr.avi_ctab_flag = 0; codec_hdr.avi_read_ext = NULL; @@ -450,38 +450,38 @@ MSG_INFO( "xacodec: querying for input %dx%d %dbit [fourcc: %4x] (%s)...\n", codec_hdr.x, codec_hdr.y, codec_hdr.depth, codec_hdr.compression, codec_hdr.description); - if (xacodec_query(xacodec_driver, &codec_hdr) == 0) + if (xacodec_query(priv.xacodec_driver, &codec_hdr) == 0) return 0; // delete codec_hdr.anim_hdr; - xacodec_driver->decinfo = new(zeromem) XA_DEC_INFO; - if (xacodec_driver->decinfo == NULL) { + priv.xacodec_driver->decinfo = new(zeromem) XA_DEC_INFO; + if (priv.xacodec_driver->decinfo == NULL) { MSG_FATAL( "xacodec: memory allocation error: %s\n", strerror(errno)); return 0; } - xacodec_driver->decinfo->cmd = 0; - xacodec_driver->decinfo->skip_flag = 0; - xacodec_driver->decinfo->imagex = xacodec_driver->decinfo->xe = codec_hdr.x; - xacodec_driver->decinfo->imagey = xacodec_driver->decinfo->ye = codec_hdr.y; - xacodec_driver->decinfo->imaged = codec_hdr.depth; - xacodec_driver->decinfo->chdr = NULL; - xacodec_driver->decinfo->map_flag = 0; /* xaFALSE */ - xacodec_driver->decinfo->map = NULL; - xacodec_driver->decinfo->xs = xacodec_driver->decinfo->ys = 0; - xacodec_driver->decinfo->special = 0; - xacodec_driver->decinfo->extra = codec_hdr.extra; + priv.xacodec_driver->decinfo->cmd = 0; + priv.xacodec_driver->decinfo->skip_flag = 0; + priv.xacodec_driver->decinfo->imagex = priv.xacodec_driver->decinfo->xe = codec_hdr.x; + priv.xacodec_driver->decinfo->imagey = priv.xacodec_driver->decinfo->ye = codec_hdr.y; + priv.xacodec_driver->decinfo->imaged = codec_hdr.depth; + priv.xacodec_driver->decinfo->chdr = NULL; + priv.xacodec_driver->decinfo->map_flag = 0; /* xaFALSE */ + priv.xacodec_driver->decinfo->map = NULL; + priv.xacodec_driver->decinfo... [truncated message content] |
From: <nic...@us...> - 2012-12-25 14:21:31
|
Revision: 600 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=600&view=rev Author: nickols_k Date: 2012-12-25 14:21:19 +0000 (Tue, 25 Dec 2012) Log Message: ----------- use references instead of pointer + minor redesign architecture of libmpcodecs Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/libmpcodecs/ad.cpp mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_a52.cpp mplayerxp/libmpcodecs/ad_acm.cpp mplayerxp/libmpcodecs/ad_dca.cpp mplayerxp/libmpcodecs/ad_dmo.cpp mplayerxp/libmpcodecs/ad_dshow.cpp mplayerxp/libmpcodecs/ad_dvdpcm.cpp mplayerxp/libmpcodecs/ad_faad.cpp mplayerxp/libmpcodecs/ad_hwac3.cpp mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_lavc.cpp mplayerxp/libmpcodecs/ad_libdv.cpp mplayerxp/libmpcodecs/ad_mp3.cpp mplayerxp/libmpcodecs/ad_null.cpp mplayerxp/libmpcodecs/ad_pcm.cpp mplayerxp/libmpcodecs/ad_qtaudio.cpp mplayerxp/libmpcodecs/ad_real.cpp mplayerxp/libmpcodecs/ad_twin.cpp mplayerxp/libmpcodecs/ad_vorbis.cpp mplayerxp/libmpcodecs/dec_audio.cpp mplayerxp/libmpcodecs/dec_audio.h mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpcodecs/vd.cpp mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.cpp mplayerxp/libmpcodecs/vd_dmo.cpp mplayerxp/libmpcodecs/vd_dshow.cpp mplayerxp/libmpcodecs/vd_huffyuv.cpp mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_lavc.cpp mplayerxp/libmpcodecs/vd_libdv.cpp mplayerxp/libmpcodecs/vd_libmpeg2.cpp mplayerxp/libmpcodecs/vd_mpegpes.cpp mplayerxp/libmpcodecs/vd_null.cpp mplayerxp/libmpcodecs/vd_nuv.cpp mplayerxp/libmpcodecs/vd_qtvideo.cpp mplayerxp/libmpcodecs/vd_raw.cpp mplayerxp/libmpcodecs/vd_real.cpp mplayerxp/libmpcodecs/vd_theora.cpp mplayerxp/libmpcodecs/vd_vfw.cpp mplayerxp/libmpcodecs/vd_xanim.cpp mplayerxp/libmpcodecs/vd_xvid.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demuxer_r.cpp mplayerxp/libmpdemux/demuxer_r.h mplayerxp/libmpstream2/network_asf.cpp mplayerxp/loader/afl.c mplayerxp/loader/dmo/DMO_AudioDecoder.c mplayerxp/loader/dmo/DMO_VideoDecoder.c mplayerxp/loader/dmo/Makefile mplayerxp/loader/dmo/buffer.c mplayerxp/loader/dmo/dmo.c mplayerxp/loader/driver.c mplayerxp/loader/dshow/DS_AudioDecoder.c mplayerxp/loader/dshow/DS_Filter.c mplayerxp/loader/dshow/DS_VideoDecoder.c mplayerxp/loader/dshow/Makefile mplayerxp/loader/dshow/allocator.c mplayerxp/loader/dshow/cmediasample.c mplayerxp/loader/dshow/inputpin.c mplayerxp/loader/dshow/outputpin.c mplayerxp/loader/ext.c mplayerxp/loader/ldt_keeper.c mplayerxp/loader/module.c mplayerxp/loader/pe_image.c mplayerxp/loader/registry.c mplayerxp/loader/vfl.c mplayerxp/loader/win32.c mplayerxp/mplayerxp.cpp mplayerxp/osdep/cpudetect.h mplayerxp/postproc/vf.cpp mplayerxp/xmpcore/xmp_adecoder.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_vdecoder.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/dump.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -338,7 +338,7 @@ seek_to_sec = NULL; MSG_INFO("seeking to %u seconds\n"); seek_p.secs=rel_seek_secs; - demux_seek_r(demuxer,&seek_p); + demux_seek_r(*demuxer,&seek_p); } aeof=sha?0:1; veof=shv?0:1; @@ -355,7 +355,7 @@ and don't generate badly interlaved stream. The ideal case is: type=read_packet(ANY_TYPE); put_packet(type); */ - in_size=ds_get_packet_r(sha->ds,&start,&a_pts); + in_size=ds_get_packet_r(*sha->ds,&start,a_pts); cmd = check_cmd(priv); if(cmd == -1) goto done; else @@ -420,7 +420,7 @@ float s_pts=0; while(s_pts < (shv?priv->vtimer:HUGE) || !shv || veof) /* autolimitation of sub reading */ { - in_size=ds_get_packet_r(demuxer->sub,&start,&s_pts); + in_size=ds_get_packet_r(*demuxer->sub,&start,s_pts); seof=demuxer->sub->eof; if(seof) break; cmd = check_cmd(priv); Modified: mplayerxp/libmpcodecs/ad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -77,23 +77,23 @@ } } -const ad_functions_t* afm_find_driver(const char *name) { +const ad_functions_t* afm_find_driver(const std::string& name) { unsigned i; for (i=0; mpcodecs_ad_drivers[i] != &mpcodecs_ad_null; i++) { - if(strcmp(mpcodecs_ad_drivers[i]->info->driver_name,name)==0){ + if(name==mpcodecs_ad_drivers[i]->info->driver_name){ return mpcodecs_ad_drivers[i]; } } return NULL; } -const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t *sh,audio_filter_info_t* afi) { +const audio_probe_t* afm_probe_driver(Opaque& ctx,sh_audio_t *sh,audio_filter_info_t& afi) { unsigned i; const audio_probe_t* probe; for (i=0; mpcodecs_ad_drivers[i] != &mpcodecs_ad_null; i++) { MSG_V("Probing: %s\n",mpcodecs_ad_drivers[i]->info->driver_name); if((probe=mpcodecs_ad_drivers[i]->probe(sh->wtag))!=NULL) { - ad_private_t* priv=mpcodecs_ad_drivers[i]->preinit(probe,sh,afi); + Opaque* priv=mpcodecs_ad_drivers[i]->preinit(*probe,sh,afi); MSG_V("Driver: %s supports these outfmt for 0x%X wtag:\n" ,mpcodecs_ad_drivers[i]->info->driver_name,sh->wtag); for(i=0;i<Audio_MaxOutSample;i++) { @@ -101,7 +101,8 @@ if(probe->sample_fmt[i]==-1||probe->sample_fmt[i]==0) break; } MSG_V("\n"); - mpcodecs_ad_drivers[i]->uninit(priv); + mpcodecs_ad_drivers[i]->uninit(*priv); + delete priv; return probe; } } Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad.h 2012-12-25 14:21:19 UTC (rev 600) @@ -45,21 +45,20 @@ }; /* interface of video decoder drivers */ -struct ad_private_t; struct ad_functions_t { const ad_info_t* info; const config_t* options;/**< Optional: MPlayerXP's option related */ const audio_probe_t*(* __FASTCALL__ probe)(uint32_t wtag); - ad_private_t* (* __FASTCALL__ preinit)(const audio_probe_t*,sh_audio_t *,audio_filter_info_t*); - MPXP_Rc (* __FASTCALL__ init)(ad_private_t *ctx); - void (* __FASTCALL__ uninit)(ad_private_t *ctx); - MPXP_Rc (*control_ad)(ad_private_t *ctx,int cmd,any_t* arg, ...); - unsigned (* __FASTCALL__ decode)(ad_private_t *ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); + Opaque* (* __FASTCALL__ preinit)(const audio_probe_t&,sh_audio_t*,audio_filter_info_t&); + MPXP_Rc (* __FASTCALL__ init)(Opaque& ctx); + void (* __FASTCALL__ uninit)(Opaque& ctx); + MPXP_Rc (*control_ad)(Opaque& ctx,int cmd,any_t* arg, ...); + unsigned (* __FASTCALL__ decode)(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts); }; -extern const ad_functions_t* afm_find_driver(const char *name); -extern const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t*sh,audio_filter_info_t* afi); -#define FIX_APTS(sh_audio,pts,in_size) (sh_audio->i_bps?((float)(pts)+(float)(in_size)/(float)sh_audio->i_bps):((float)(pts))) +extern const ad_functions_t* afm_find_driver(const std::string& name); +extern const audio_probe_t* afm_probe_driver(Opaque& ctx,sh_audio_t*sh,audio_filter_info_t& afi); +inline float FIX_APTS(sh_audio_t* sh_audio,float& pts,unsigned in_size) { return sh_audio->i_bps?(pts+float(in_size))/float(sh_audio->i_bps):pts; } #endif Modified: mplayerxp/libmpcodecs/ad_a52.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -22,12 +22,17 @@ #include "libao3/audio_out.h" #include "postproc/af.h" -struct ad_private_t { +struct a52_private_t : public Opaque { + a52_private_t(); + virtual ~a52_private_t(); + sh_audio_t* sh; float last_pts; }; +a52_private_t::a52_private_t() {} +a52_private_t::~a52_private_t() {} -#define MAX_AC3_FRAME 3840 +static const int MAX_AC3_FRAME=3840; a52_state_t* mpxp_a52_state; uint32_t mpxp_a52_accel=0; @@ -64,20 +69,20 @@ return NULL; } -int a52_fillbuff(ad_private_t *priv,float *pts){ +int a52_fillbuff(a52_private_t& priv,float& pts){ int length=0; int flags=0; int sample_rate=0; int bit_rate=0; float apts=0.,null_pts; - sh_audio_t* sh_audio = priv->sh; + sh_audio_t* sh_audio = priv.sh; sh_audio->a_in_buffer_len=0; /* sync frame:*/ while(1){ while(sh_audio->a_in_buffer_len<8){ - int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); - if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ + int c=demux_getc_r(*sh_audio->ds,apts?null_pts:apts); + if(c<0) { priv.last_pts=pts=apts; return -1; } /* EOF*/ sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; } if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer,sh_audio->a_in_buffer,8); @@ -92,9 +97,9 @@ MSG_DBG2("a52: len=%d flags=0x%X %d Hz %d bit/s\n",length,flags,sample_rate,bit_rate); sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; - demux_read_data_r(sh_audio->ds,(uint8_t*)sh_audio->a_in_buffer+8,length-8,apts?&null_pts:&apts); + demux_read_data_r(*sh_audio->ds,(uint8_t*)sh_audio->a_in_buffer+8,length-8,apts?null_pts:apts); if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer+8,sh_audio->a_in_buffer+8,length-8); - priv->last_pts=*pts=apts; + priv.last_pts=pts=apts; if(crc16_block((uint8_t*)sh_audio->a_in_buffer+2,length-2)!=0) MSG_STATUS("a52: CRC check failed! \n"); return length; @@ -127,10 +132,10 @@ return (flags&A52_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { UNUSED(probe); - ad_private_t* ctx=new(zeromem) ad_private_t; + a52_private_t* ctx=new(zeromem) a52_private_t; /* Dolby AC3 audio: */ /* however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ #ifdef WORDS_BIGENDIAN @@ -141,9 +146,9 @@ #define A52_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if(af_query_fmt(afi->afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| - af_query_fmt(afi->afilter,mpaf_format_e(A52_FMT32)) == MPXP_Ok || - af_query_fmt(afi->afilter,mpaf_format_e(A52_FMT24)) == MPXP_Ok) { + if(af_query_fmt(afi.afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| + af_query_fmt(afi.afilter,mpaf_format_e(A52_FMT32)) == MPXP_Ok || + af_query_fmt(afi.afilter,mpaf_format_e(A52_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*6; @@ -152,9 +157,10 @@ return ctx; } -MPXP_Rc init(ad_private_t *ctx) +MPXP_Rc init(Opaque& ctx) { - sh_audio_t* sh_audio = ctx->sh; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; sample_t level=1, bias=384; float pts; int flags=0; @@ -165,12 +171,12 @@ MSG_ERR("A52 init failed\n"); return MPXP_False; } - if(a52_fillbuff(ctx,&pts)<0){ + if(a52_fillbuff(priv,pts)<0){ MSG_ERR("A52 sync failed\n"); return MPXP_False; } /* 'a52 cannot upmix' hotfix:*/ - a52_printinfo(ctx->sh); + a52_printinfo(priv.sh); sh_audio->nch=mp_conf.ao_channels; while(sh_audio->nch>0){ switch(sh_audio->nch){ @@ -206,14 +212,12 @@ return MPXP_Ok; } -void uninit(ad_private_t *ctx) -{ - delete ctx; -} +void uninit(Opaque& ctx) { UNUSED(ctx); } -MPXP_Rc control_ad(ad_private_t *ctx,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh = ctx->sh; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh = priv.sh; UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: @@ -221,7 +225,7 @@ return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; - a52_fillbuff(ctx,&pts); // skip AC3 frame + a52_fillbuff(priv,pts); // skip AC3 frame return MPXP_True; } default: @@ -230,9 +234,10 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = ctx->sh; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; sample_t level=1, bias=384; int flags=mpxp_a52_flags|A52_ADJUST_LEVEL; unsigned i; @@ -240,8 +245,8 @@ UNUSED(minlen); UNUSED(maxlen); if(!sh_audio->a_in_buffer_len) { - if(a52_fillbuff(ctx,pts)<0) return len; /* EOF */ - } else *pts=ctx->last_pts; + if(a52_fillbuff(priv,pts)<0) return len; /* EOF */ + } else pts=priv.last_pts; sh_audio->a_in_buffer_len=0; if (a52_frame (mpxp_a52_state, (uint8_t*)sh_audio->a_in_buffer, &flags, &level, bias)){ MSG_WARN("a52: error decoding frame\n"); Modified: mplayerxp/libmpcodecs/ad_acm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -26,55 +26,60 @@ LIBAD_EXTERN(msacm) -struct ad_private_t { - float pts; - WAVEFORMATEX o_wf; // out format - HACMSTREAM srcstream; // handle - sh_audio_t* sh; +struct acm_private_t : public Opaque { + acm_private_t(); + virtual ~acm_private_t(); + + float pts; + WAVEFORMATEX o_wf; // out format + HACMSTREAM srcstream; // handle + sh_audio_t* sh; }; +acm_private_t::acm_private_t() {} +acm_private_t::~acm_private_t() {} static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } -static int init_acm_audio_codec(ad_private_t *priv){ - sh_audio_t* sh_audio = priv->sh; +static int init_acm_audio_codec(acm_private_t& priv){ + sh_audio_t* sh_audio = priv.sh; HRESULT ret; WAVEFORMATEX *in_fmt=sh_audio->wf; unsigned int srcsize=0; MSG_V("======= Win32 (ACM) AUDIO Codec init =======\n"); - priv->srcstream=0; + priv.srcstream=0; - priv->o_wf.nChannels=sh_audio->nch; - priv->o_wf.nSamplesPerSec=sh_audio->rate; - priv->o_wf.nAvgBytesPerSec=2*priv->o_wf.nSamplesPerSec*priv->o_wf.nChannels; - priv->o_wf.wFormatTag=WAVE_FORMAT_PCM; - priv->o_wf.nBlockAlign=2*sh_audio->nch; - priv->o_wf.wBitsPerSample=sh_audio->afmt?afmt2bps(sh_audio->afmt)*8:16; - priv->o_wf.cbSize=0; + priv.o_wf.nChannels=sh_audio->nch; + priv.o_wf.nSamplesPerSec=sh_audio->rate; + priv.o_wf.nAvgBytesPerSec=2*priv.o_wf.nSamplesPerSec*priv.o_wf.nChannels; + priv.o_wf.wFormatTag=WAVE_FORMAT_PCM; + priv.o_wf.nBlockAlign=2*sh_audio->nch; + priv.o_wf.wBitsPerSample=sh_audio->afmt?afmt2bps(sh_audio->afmt)*8:16; + priv.o_wf.cbSize=0; if(!in_fmt) { in_fmt=sh_audio->wf=new(zeromem) WAVEFORMATEX; - memcpy(in_fmt,&priv->o_wf,sizeof(WAVEFORMATEX)); + memcpy(in_fmt,&priv.o_wf,sizeof(WAVEFORMATEX)); in_fmt->wFormatTag=sh_audio->wtag; } if(mp_conf.verbose) { MSG_V("Output fmt:\n"); - print_wave_header(&priv->o_wf,sizeof(WAVEFORMATEX)); + print_wave_header(&priv.o_wf,sizeof(WAVEFORMATEX)); } MSACM_RegisterDriver((const char *)sh_audio->codec->dll_name, sh_audio->wtag, 0); - ret=acmStreamOpen(&priv->srcstream,(HACMDRIVER)NULL,in_fmt,&priv->o_wf,NULL,0,0,0); + ret=acmStreamOpen(&priv.srcstream,(HACMDRIVER)NULL,in_fmt,&priv.o_wf,NULL,0,0,0); if(ret){ if(ret==ACMERR_NOTPOSSIBLE) MSG_ERR("ACM_Decoder: Unappropriate audio format\n"); else MSG_ERR("ACM_Decoder: acmStreamOpen error: %d", (int)ret); - priv->srcstream=0; + priv.srcstream=0; return 0; } MSG_V("Audio codec opened OK! ;-)\n"); - acmStreamSize(priv->srcstream, in_fmt->nBlockAlign, (LPDWORD)&srcsize, ACM_STREAMSIZEF_SOURCE); + acmStreamSize(priv.srcstream, in_fmt->nBlockAlign, (LPDWORD)&srcsize, ACM_STREAMSIZEF_SOURCE); srcsize*=2; //if(srcsize<MAX_OUTBURST) srcsize=MAX_OUTBURST; if(!srcsize){ @@ -87,14 +92,14 @@ sh_audio->audio_out_minsize=srcsize; // audio output min. size MSG_V("Audio ACM output buffer min. size: %ld\n",srcsize); - acmStreamSize(priv->srcstream, srcsize, (LPDWORD)&srcsize, ACM_STREAMSIZEF_DESTINATION); + acmStreamSize(priv.srcstream, srcsize, (LPDWORD)&srcsize, ACM_STREAMSIZEF_DESTINATION); if(srcsize<in_fmt->nBlockAlign) srcsize=2*in_fmt->nBlockAlign; sh_audio->audio_in_minsize=srcsize; // audio input min. size MSG_V("Audio ACM input buffer min. size: %ld\n",srcsize); sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; - sh_audio->nch=priv->o_wf.nChannels; - sh_audio->rate=priv->o_wf.nSamplesPerSec; - sh_audio->afmt=bps2afmt((priv->o_wf.wBitsPerSample+7)/8); + sh_audio->nch=priv.o_wf.nChannels; + sh_audio->rate=priv.o_wf.nSamplesPerSec; + sh_audio->afmt=bps2afmt((priv.o_wf.wBitsPerSample+7)/8); sh_audio->a_in_buffer_size=2*sh_audio->audio_in_minsize; sh_audio->a_in_buffer=new char [sh_audio->a_in_buffer_size]; sh_audio->a_in_buffer_len=0; @@ -102,12 +107,11 @@ return 1; } -static int close_acm_audio_codec(ad_private_t *priv) +static int close_acm_audio_codec(acm_private_t& priv) { - sh_audio_t* sh_audio = priv->sh; HRESULT ret; - ret = acmStreamClose(priv->srcstream, 0); + ret = acmStreamClose(priv.srcstream, 0); if (ret) switch(ret) @@ -128,11 +132,12 @@ return 1; } -MPXP_Rc init(ad_private_t *priv) +MPXP_Rc init(Opaque& ctx) { - sh_audio_t* sh_audio = priv->sh; + acm_private_t& priv=static_cast<acm_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; float pts; - int ret=decode(priv,reinterpret_cast<unsigned char*>(sh_audio->a_buffer),4096,sh_audio->a_buffer_size,&pts); + int ret=decode(priv,reinterpret_cast<unsigned char*>(sh_audio->a_buffer),4096,sh_audio->a_buffer_size,pts); if(ret<0){ MSG_INFO("ACM decoding error: %d\n",ret); return MPXP_False; @@ -141,15 +146,15 @@ return MPXP_Ok; } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi) { UNUSED(probe); UNUSED(afi); /* Win32 ACM audio codec: */ - ad_private_t *priv; - if(!(priv=new(zeromem) ad_private_t)) return NULL; + acm_private_t *priv; + if(!(priv=new(zeromem) acm_private_t)) return NULL; priv->sh = sh_audio; - if(!init_acm_audio_codec(priv)){ + if(!init_acm_audio_codec(*priv)){ MSG_ERR(MSGTR_ACMiniterror); delete priv; return NULL; @@ -158,16 +163,18 @@ return priv; } -void uninit(ad_private_t *p) +void uninit(Opaque& ctx) { - close_acm_audio_codec(p); - delete p; + acm_private_t& priv=static_cast<acm_private_t&>(ctx); + close_acm_audio_codec(priv); } -MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh_audio = priv->sh; + acm_private_t& priv=static_cast<acm_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; int skip; + UNUSED(arg); switch(cmd) { // case ADCTRL_RESYNC_STREAM: // sh_audio->a_in_buffer_len=0;/* reset ACM/DShow audio buffer */ @@ -179,7 +186,7 @@ skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); if(skip<16) skip=16; } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + demux_read_data_r(*sh_audio->ds,NULL,skip,pts); return MPXP_True; } default: @@ -188,36 +195,37 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = priv->sh; + acm_private_t& priv=static_cast<acm_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; ACMSTREAMHEADER ash; HRESULT hr; DWORD srcsize=0; DWORD len=minlen; - acmStreamSize(priv->srcstream,len , &srcsize, ACM_STREAMSIZEF_DESTINATION); + acmStreamSize(priv.srcstream,len , &srcsize, ACM_STREAMSIZEF_DESTINATION); MSG_V("acm says: srcsize=%ld (bufflen=%d size=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,len); if(srcsize<sh_audio->wf->nBlockAlign){ srcsize=sh_audio->wf->nBlockAlign; - acmStreamSize(priv->srcstream, srcsize, &len, ACM_STREAMSIZEF_SOURCE); + acmStreamSize(priv.srcstream, srcsize, &len, ACM_STREAMSIZEF_SOURCE); MSG_V("acm says: srcsize=%ld (bufflen=%d size=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,len); if(len>maxlen) len=maxlen; } - //if(srcsize==0) srcsize=priv->o_wf.nBlockAlign; + //if(srcsize==0) srcsize=priv.o_wf.nBlockAlign; if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!! if(sh_audio->a_in_buffer_len<srcsize){ int l; - l = demux_read_data_r(sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), + l = demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), srcsize-sh_audio->a_in_buffer_len,pts); - *pts=FIX_APTS(sh_audio,*pts,-sh_audio->a_in_buffer_len); + pts=FIX_APTS(sh_audio,pts,-sh_audio->a_in_buffer_len); sh_audio->a_in_buffer_len+=l; - priv->pts=*pts; + priv.pts=pts; } - else *pts=priv->pts; + else pts=priv.pts; /* !!! NK: FINALY WE MUST KNOW size of output buffer after a_in_buffer_len modifying !!!! */ - acmStreamSize(priv->srcstream,sh_audio->a_in_buffer_len, &len, ACM_STREAMSIZEF_SOURCE); + acmStreamSize(priv.srcstream,sh_audio->a_in_buffer_len, &len, ACM_STREAMSIZEF_SOURCE); MSG_DBG2("acm convert %d -> %d bytes\n",sh_audio->a_in_buffer_len,len); memset(&ash, 0, sizeof(ash)); @@ -228,12 +236,12 @@ ash.cbSrcLength=sh_audio->a_in_buffer_len; ash.pbDst=buf; ash.cbDstLength=len; - hr=acmStreamPrepareHeader(priv->srcstream,&ash,0); + hr=acmStreamPrepareHeader(priv.srcstream,&ash,0); if(hr){ MSG_V("ACM_Decoder: acmStreamPrepareHeader error %d\n",(int)hr); return -1; } - hr=acmStreamConvert(priv->srcstream,&ash,0); + hr=acmStreamConvert(priv.srcstream,&ash,0); if(hr){ MSG_DBG2("ACM_Decoder: acmStreamConvert error %d\n",(int)hr); switch(hr) @@ -249,10 +257,10 @@ } else { sh_audio->a_in_buffer_len-=ash.cbSrcLengthUsed; memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[ash.cbSrcLengthUsed],sh_audio->a_in_buffer_len); - priv->pts=FIX_APTS(sh_audio,priv->pts,ash.cbSrcLengthUsed); + priv.pts=FIX_APTS(sh_audio,priv.pts,ash.cbSrcLengthUsed); } len=ash.cbDstLengthUsed; - hr=acmStreamUnprepareHeader(priv->srcstream,&ash,0); + hr=acmStreamUnprepareHeader(priv.srcstream,&ash,0); if(hr){ MSG_V("ACM_Decoder: acmStreamUnprepareHeader error %d\n",(int)hr); } Modified: mplayerxp/libmpcodecs/ad_dca.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -22,16 +22,21 @@ #include "libao3/audio_out.h" #include "postproc/af.h" -#define MAX_AC5_FRAME 4096 +static const unsigned MAX_AC5_FRAME=4096; dca_state_t* mpxp_dca_state; uint32_t mpxp_dca_accel=0; uint32_t mpxp_dca_flags=0; -struct ad_private_t { +struct dca_private_t : public Opaque { + dca_private_t(); + virtual ~dca_private_t(); + float last_pts; sh_audio_t* sh; }; +dca_private_t::dca_private_t() {} +dca_private_t::~dca_private_t() {} static const ad_info_t info = { "DTS Coherent Acoustics", @@ -66,20 +71,19 @@ return NULL; } -int dca_fillbuff(ad_private_t *priv,float *pts){ +int dca_fillbuff(dca_private_t& priv,float& pts){ int length=0,flen=0; int flags=0; int sample_rate=0; int bit_rate=0; float apts=0.,null_pts; - sh_audio_t* sh_audio = priv->sh; - + sh_audio_t* sh_audio=priv.sh; sh_audio->a_in_buffer_len=0; /* sync frame:*/ while(1){ while(sh_audio->a_in_buffer_len<16){ - int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); - if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ + int c=demux_getc_r(*sh_audio->ds,apts?null_pts:apts); + if(c<0) { priv.last_pts=pts=apts; return -1; } /* EOF*/ sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; } length = dca_syncinfo (mpxp_dca_state,reinterpret_cast<uint8_t*>(sh_audio->a_in_buffer), reinterpret_cast<int *>(&flags), &sample_rate, &bit_rate, &flen); @@ -92,8 +96,8 @@ MSG_DBG2("dca[%08X]: len=%d flags=0x%X %d Hz %d bit/s frame=%u\n",*((long *)sh_audio->a_in_buffer),length,flags,sample_rate,bit_rate,flen); sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; - demux_read_data_r(sh_audio->ds,reinterpret_cast<unsigned char*>(sh_audio->a_in_buffer+16),length-16,apts?&null_pts:&apts); - priv->last_pts=*pts=apts; + demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(sh_audio->a_in_buffer+16),length-16,apts?null_pts:apts); + priv.last_pts=pts=apts; return length; } @@ -125,7 +129,7 @@ return (flags&DCA_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { UNUSED(probe); /* DTS audio: @@ -138,22 +142,23 @@ #define DCA_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if( af_query_fmt(afi->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok|| - af_query_fmt(afi->afilter,afmt2mpaf(DCA_FMT32)) == MPXP_Ok || - af_query_fmt(afi->afilter,afmt2mpaf(DCA_FMT24)) == MPXP_Ok) + if( af_query_fmt(afi.afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok|| + af_query_fmt(afi.afilter,afmt2mpaf(DCA_FMT32)) == MPXP_Ok || + af_query_fmt(afi.afilter,afmt2mpaf(DCA_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*8; sh->audio_in_minsize=MAX_AC5_FRAME; - ad_private_t* priv = new(zeromem) ad_private_t; + dca_private_t* priv = new(zeromem) dca_private_t; priv->sh = sh; return priv; } -MPXP_Rc init(ad_private_t *priv) +MPXP_Rc init(Opaque& ctx) { - sh_audio_t* sh_audio = priv->sh; + dca_private_t& priv=static_cast<dca_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; sample_t level=1, bias=384; float pts; int flags=0; @@ -164,7 +169,7 @@ MSG_ERR("dca init failed\n"); return MPXP_False; } - if(dca_fillbuff(priv,&pts)<0){ + if(dca_fillbuff(priv,pts)<0){ MSG_ERR("dca sync failed\n"); return MPXP_False; } @@ -204,14 +209,12 @@ return MPXP_Ok; } -void uninit(ad_private_t *ctx) -{ - delete ctx; -} +void uninit(Opaque& ctx) { UNUSED(ctx); } -MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh = priv->sh; + dca_private_t& priv=static_cast<dca_private_t&>(ctx); + sh_audio_t* sh = priv.sh; UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: @@ -219,7 +222,7 @@ return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; - dca_fillbuff(priv,&pts); // skip AC3 frame + dca_fillbuff(priv,pts); // skip AC3 frame return MPXP_True; } default: @@ -228,18 +231,19 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { + dca_private_t& priv=static_cast<dca_private_t&>(ctx); sample_t level=1, bias=384; unsigned i,nblocks,flags=mpxp_dca_flags|DCA_ADJUST_LEVEL; unsigned len=0; - sh_audio_t* sh_audio = priv->sh; + sh_audio_t* sh_audio = priv.sh; UNUSED(minlen); UNUSED(maxlen); if(!sh_audio->a_in_buffer_len) { if(dca_fillbuff(priv,pts)<0) return len; /* EOF */ } - else *pts=priv->last_pts; + else pts=priv.last_pts; sh_audio->a_in_buffer_len=0; if (dca_frame (mpxp_dca_state, reinterpret_cast<uint8_t *>(sh_audio->a_in_buffer), reinterpret_cast<int *>(&flags), &level, bias)!=0){ MSG_WARN("dca: error decoding frame\n"); Modified: mplayerxp/libmpcodecs/ad_dmo.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -28,28 +28,35 @@ #include "loader/dmo/DMO_AudioDecoder.h" -struct ad_private_t { +struct admo_private_t : public Opaque { + admo_private_t(); + virtual ~admo_private_t(); + float pts; DMO_AudioDecoder* ds_adec; sh_audio_t* sh; }; +admo_private_t::admo_private_t() {} +admo_private_t::~admo_private_t() { + DMO_AudioDecoder_Destroy(ds_adec); +} static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } -static MPXP_Rc init(ad_private_t *p) +static MPXP_Rc init(admo_private_t *p) { UNUSED(p); return MPXP_Ok; } -static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) +static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi) { UNUSED(probe); UNUSED(afi); - ad_private_t*priv; + admo_private_t*priv; int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ? mp_conf.ao_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1); - if(!(priv=new(zeromem) ad_private_t)) return NULL; + if(!(priv=new(zeromem) admo_private_t)) return NULL; priv->sh=sh_audio; if(!(priv->ds_adec=DMO_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf,chans))) { MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); @@ -66,15 +73,12 @@ return priv; } -static void uninit(ad_private_t *priv) -{ - DMO_AudioDecoder_Destroy(priv->ds_adec); - delete priv; -} +static void uninit(Opaque& ctx) { UNUSED(ctx); } -static MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh_audio = priv->sh; + admo_private_t& priv=static_cast<admo_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; int skip; UNUSED(arg); switch(cmd) { @@ -85,42 +89,43 @@ skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); if(skip<16) skip=16; } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + demux_read_data_r(*sh_audio->ds,NULL,skip,pts); return MPXP_True; } } return MPXP_Unknown; } -static unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +static unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = priv->sh; + admo_private_t& priv=static_cast<admo_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; unsigned len=0; UNUSED(minlen); { unsigned size_in=0; unsigned size_out=0; - unsigned srcsize=DMO_AudioDecoder_GetSrcSize(priv->ds_adec, maxlen); + unsigned srcsize=DMO_AudioDecoder_GetSrcSize(priv.ds_adec, maxlen); MSG_DBG2("DMO says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen); if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!! if((unsigned)sh_audio->a_in_buffer_len<srcsize){ unsigned l; - l=demux_read_data_r(sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), + l=demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), srcsize-sh_audio->a_in_buffer_len,pts); sh_audio->a_in_buffer_len+=l; - priv->pts=*pts; + priv.pts=pts; } - else *pts=priv->pts; - DMO_AudioDecoder_Convert(priv->ds_adec, sh_audio->a_in_buffer,sh_audio->a_in_buffer_len, + else pts=priv.pts; + DMO_AudioDecoder_Convert(priv.ds_adec, sh_audio->a_in_buffer,sh_audio->a_in_buffer_len, buf,maxlen, &size_in,&size_out); MSG_DBG2("DMO: audio %d -> %d converted (in_buf_len=%d of %d) %f\n" - ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,*pts); + ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,pts); if(size_in>=(unsigned)sh_audio->a_in_buffer_len){ sh_audio->a_in_buffer_len=0; } else { sh_audio->a_in_buffer_len-=size_in; memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[size_in],sh_audio->a_in_buffer_len); - priv->pts=FIX_APTS(sh_audio,priv->pts,size_in); + priv.pts=FIX_APTS(sh_audio,priv.pts,size_in); } len=size_out; } Modified: mplayerxp/libmpcodecs/ad_dshow.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -23,26 +23,33 @@ LIBAD_EXTERN(dshow) -struct ad_private_t { +struct adshow_private_t : public Opaque { + adshow_private_t(); + virtual ~adshow_private_t(); + float pts; DS_AudioDecoder* ds_adec; sh_audio_t* sh; }; +adshow_private_t::adshow_private_t() {} +adshow_private_t::~adshow_private_t() { + DS_AudioDecoder_Destroy(ds_adec); +} static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } -MPXP_Rc init(ad_private_t *p) +MPXP_Rc init(Opaque& ctx) { - UNUSED(p); + UNUSED(ctx); return MPXP_Ok; } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi) { UNUSED(probe); UNUSED(afi); - ad_private_t *priv; - if(!(priv=new(zeromem) ad_private_t)) return NULL; + adshow_private_t *priv; + if(!(priv=new(zeromem) adshow_private_t)) return NULL; priv->sh = sh_audio; if(!(priv->ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf))) { MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); @@ -59,15 +66,13 @@ return priv; } -void uninit(ad_private_t *priv) -{ - DS_AudioDecoder_Destroy(priv->ds_adec); - delete priv; -} +void uninit(Opaque& ctx) { UNUSED(ctx); } -MPXP_Rc control_ad(ad_private_t *p,int cmd,any_t* arg, ...) + +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh_audio = p->sh; + adshow_private_t& priv=static_cast<adshow_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; int skip; UNUSED(arg); switch(cmd) { @@ -81,7 +86,7 @@ skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); if(skip<16) skip=16; } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + demux_read_data_r(*sh_audio->ds,NULL,skip,pts); } return MPXP_True; default: @@ -90,34 +95,35 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = priv->sh; + adshow_private_t& priv=static_cast<adshow_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; unsigned len=0; UNUSED(minlen); { unsigned size_in=0; unsigned size_out=0; - unsigned srcsize=DS_AudioDecoder_GetSrcSize(priv->ds_adec, maxlen); + unsigned srcsize=DS_AudioDecoder_GetSrcSize(priv.ds_adec, maxlen); MSG_DBG3("DShow says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen); if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!! if((unsigned)sh_audio->a_in_buffer_len<srcsize){ unsigned l; - l=demux_read_data_r(sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), + l=demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]), srcsize-sh_audio->a_in_buffer_len,pts); sh_audio->a_in_buffer_len+=l; - priv->pts=*pts; + priv.pts=pts; } - else *pts=priv->pts; - DS_AudioDecoder_Convert(priv->ds_adec, reinterpret_cast<unsigned char*>(sh_audio->a_in_buffer),sh_audio->a_in_buffer_len, + else pts=priv.pts; + DS_AudioDecoder_Convert(priv.ds_adec, reinterpret_cast<unsigned char*>(sh_audio->a_in_buffer),sh_audio->a_in_buffer_len, buf,maxlen, &size_in,&size_out); MSG_DBG2("DShow: audio %d -> %d converted (in_buf_len=%d of %d) %f\n" - ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,*pts); + ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,pts); if(size_in>=(unsigned)sh_audio->a_in_buffer_len){ sh_audio->a_in_buffer_len=0; } else { sh_audio->a_in_buffer_len-=size_in; memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[size_in],sh_audio->a_in_buffer_len); - priv->pts=FIX_APTS(sh_audio,priv->pts,size_in); + priv.pts=FIX_APTS(sh_audio,priv.pts,size_in); } len=size_out; } Modified: mplayerxp/libmpcodecs/ad_dvdpcm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -8,9 +8,14 @@ #include "osdep/bswap.h" #include "libao3/afmt.h" -struct ad_private_t { +struct dvdpcm_private_t : public Opaque { + dvdpcm_private_t(); + virtual ~dvdpcm_private_t(); + sh_audio_t* sh; }; +dvdpcm_private_t::dvdpcm_private_t() {} +dvdpcm_private_t::~dvdpcm_private_t() {} static const ad_info_t info = { "Uncompressed DVD/VOB LPCM audio decoder", @@ -38,10 +43,11 @@ return NULL; } -MPXP_Rc init(ad_private_t *priv) +MPXP_Rc init(Opaque& ctx) { + dvdpcm_private_t& priv=static_cast<dvdpcm_private_t&>(ctx); /* DVD PCM Audio:*/ - sh_audio_t* sh = priv->sh; + sh_audio_t* sh = priv.sh; sh->i_bps = 0; if(sh->codecdata_len==3){ // we have LPCM header: @@ -77,24 +83,22 @@ return MPXP_Ok; } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { UNUSED(probe); UNUSED(afi); sh->audio_out_minsize=2048; - ad_private_t* priv = new(zeromem) ad_private_t; + dvdpcm_private_t* priv = new(zeromem) dvdpcm_private_t; priv->sh = sh; return priv; } -void uninit(ad_private_t *priv) -{ - delete priv; -} +void uninit(Opaque& priv) { UNUSED(priv); } -MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh = priv->sh; + dvdpcm_private_t& priv=static_cast<dvdpcm_private_t&>(ctx); + sh_audio_t* sh = priv.sh; int skip; UNUSED(arg); switch(cmd) { @@ -102,7 +106,7 @@ float pts; skip=sh->i_bps/16; skip=skip&(~3); - demux_read_data_r(sh->ds,NULL,skip,&pts); + demux_read_data_r(*sh->ds,NULL,skip,pts); return MPXP_True; } default: @@ -111,21 +115,22 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque &ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = priv->sh; - unsigned j; - unsigned len; - float null_pts; - UNUSED(maxlen); - if (afmt2bps(sh_audio->afmt) == 3) { - if (((sh_audio->codecdata[1] >> 6) & 3) == 1) { + dvdpcm_private_t& priv=static_cast<dvdpcm_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; + unsigned j; + unsigned len; + float null_pts; + UNUSED(maxlen); + if (afmt2bps(sh_audio->afmt) == 3) { + if (((sh_audio->codecdata[1] >> 6) & 3) == 1) { // 20 bit // not sure if the "& 0xf0" and "<< 4" are the right way around // can somebody clarify? for (j = 0; j < minlen; j += 12) { unsigned char tmp[10]; - len = demux_read_data_r(sh_audio->ds, tmp, 10,j?&null_pts:pts); + len = demux_read_data_r(*sh_audio->ds, tmp, 10,j?null_pts:pts); if (len < 10) break; // first sample buf[j + 0] = tmp[0]; @@ -149,7 +154,7 @@ // 24 bit for (j = 0; j < minlen; j += 12) { unsigned char tmp[12]; - len = demux_read_data_r(sh_audio->ds, tmp, 12, j?&null_pts:pts); + len = demux_read_data_r(*sh_audio->ds, tmp, 12, j?null_pts:pts); if (len < 12) break; // first sample buf[j + 0] = tmp[0]; @@ -171,6 +176,6 @@ len = j; } } else - len=demux_read_data_r(sh_audio->ds,buf,(minlen+3)&(~3),pts); + len=demux_read_data_r(*sh_audio->ds,buf,(minlen+3)&(~3),pts); return len; } Modified: mplayerxp/libmpcodecs/ad_faad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -35,11 +35,16 @@ LIBAD_EXTERN(faad) -struct ad_private_t { +struct faad_private_t : public Opaque { + faad_private_t(); + virtual ~faad_private_t(); + float pts; sh_audio_t* sh; audio_filter_info_t* afi; }; +faad_private_t::faad_private_t() {} +faad_private_t::~faad_private_t() {} static const audio_probe_t probes[] = { { "faad", "libfaad"SLIBSUFFIX, 0xFF, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, @@ -103,11 +108,11 @@ /* PS: 0: off, 1: on */ unsigned char ps; } NeAACDecFrameInfo; -#define FAAD_MIN_STREAMSIZE 768 /* 6144 bits/channel */ +static const int FAAD_MIN_STREAMSIZE=768; /* 6144 bits/channel */ /* configure maximum supported channels, * * this is theoretically max. 64 chans */ -#define FAAD_MAX_CHANNELS 6 -#define FAAD_BUFFLEN (FAAD_MIN_STREAMSIZE*FAAD_MAX_CHANNELS) +static const int FAAD_MAX_CHANNELS=6; +static const int FAAD_BUFFLEN=(FAAD_MIN_STREAMSIZE*FAAD_MAX_CHANNELS); #ifdef _WIN32 #pragma pack(push, 8) #ifndef NEAACDECAPI @@ -179,23 +184,24 @@ } -static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { sh->audio_out_minsize=8192*FAAD_MAX_CHANNELS; sh->audio_in_minsize=FAAD_BUFFLEN; - ad_private_t* priv = new(zeromem) ad_private_t; + faad_private_t* priv = new(zeromem) faad_private_t; priv->sh = sh; - priv->afi = afi; - if(load_dll(probe->codec_dll)!=MPXP_Ok) { + priv->afi = &afi; + if(load_dll(probe.codec_dll)!=MPXP_Ok) { delete priv; return NULL; } return priv; } -static MPXP_Rc init(ad_private_t *priv) +static MPXP_Rc init(Opaque& ctx) { - sh_audio_t* sh = priv->sh; + faad_private_t& priv=static_cast<faad_private_t&>(ctx); + sh_audio_t* sh = priv.sh; unsigned long NeAAC_samplerate; unsigned char NeAAC_channels; float pts; @@ -224,9 +230,9 @@ #endif /* Set the maximal quality */ /* This is useful for expesive audio cards */ - if(af_query_fmt(priv->afi->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok || - af_query_fmt(priv->afi->afilter,afmt2mpaf(NeAAC_FMT32)) == MPXP_Ok || - af_query_fmt(priv->afi->afilter,afmt2mpaf(NeAAC_FMT24)) == MPXP_Ok) { + if(af_query_fmt(priv.afi->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok || + af_query_fmt(priv.afi->afilter,afmt2mpaf(NeAAC_FMT32)) == MPXP_Ok || + af_query_fmt(priv.afi->afilter,afmt2mpaf(NeAAC_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; } else { @@ -236,7 +242,7 @@ /* Set the default object type and samplerate */ NeAACDecSetConfiguration(NeAAC_hdec, NeAAC_conf); if(!sh->codecdata_len) { - sh->a_in_buffer_len = demux_read_data_r(sh->ds, reinterpret_cast<unsigned char*>(sh->a_in_buffer), sh->a_in_buffer_size,&pts); + sh->a_in_buffer_len = demux_read_data_r(*sh->ds, reinterpret_cast<unsigned char*>(sh->a_in_buffer), sh->a_in_buffer_size,pts); /* init the codec */ NeAAC_init = NeAACDecInit(NeAAC_hdec, reinterpret_cast<unsigned char*>(sh->a_in_buffer), sh->a_in_buffer_len, &NeAAC_samplerate, @@ -276,24 +282,25 @@ return MPXP_Ok; } -static void uninit(ad_private_t *priv) +static void uninit(Opaque& ctx) { + UNUSED(ctx); MSG_V("FAAD: Closing decoder!\n"); NeAACDecClose(NeAAC_hdec); - delete priv; } -static MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - UNUSED(priv); + UNUSED(ctx); UNUSED(cmd); UNUSED(arg); return MPXP_Unknown; } -static unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +static unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh = priv->sh; + faad_private_t& priv=static_cast<faad_private_t&>(ctx); + sh_audio_t* sh = priv.sh; int j = 0; unsigned len = 0; any_t*NeAAC_sample_buffer; @@ -305,12 +312,12 @@ { if(sh->a_in_buffer_len < sh->a_in_buffer_size){ sh->a_in_buffer_len += - demux_read_data_r(sh->ds,reinterpret_cast<unsigned char*>(&sh->a_in_buffer[sh->a_in_buffer_len]), + demux_read_data_r(*sh->ds,reinterpret_cast<unsigned char*>(&sh->a_in_buffer[sh->a_in_buffer_len]), sh->a_in_buffer_size - sh->a_in_buffer_len,pts); - *pts=FIX_APTS(sh,*pts,-sh->a_in_buffer_len); - priv->pts=*pts; + pts=FIX_APTS(sh,pts,-sh->a_in_buffer_len); + priv.pts=pts; } - else *pts=priv->pts; + else pts=priv.pts; #ifdef DUMP_AAC_COMPRESSED {unsigned i; for (i = 0; i < 16; i++) @@ -329,7 +336,7 @@ } else { sh->a_in_buffer_len-=NeAAC_finfo.bytesconsumed; memcpy(sh->a_in_buffer,&sh->a_in_buffer[NeAAC_finfo.bytesconsumed],sh->a_in_buffer_len); - priv->pts=FIX_APTS(sh,priv->pts,NeAAC_finfo.bytesconsumed); + priv.pts=FIX_APTS(sh,priv.pts,NeAAC_finfo.bytesconsumed); } if(NeAAC_finfo.error > 0) { @@ -342,7 +349,7 @@ } else { // packetized (.mp4) aac stream: unsigned char* bufptr=NULL; - int buflen=ds_get_packet_r(sh->ds, &bufptr,pts); + int buflen=ds_get_packet_r(*sh->ds, &bufptr,pts); if(buflen<=0) break; NeAAC_sample_buffer = NeAACDecDecode(NeAAC_hdec, &NeAAC_finfo, bufptr, buflen); // printf("NeAAC decoded %d of %d (err: %d) \n",NeAAC_finfo.bytesconsumed,buflen,NeAAC_finfo.error); Modified: mplayerxp/libmpcodecs/ad_hwac3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -16,9 +16,12 @@ #include "osdep/bswap.h" #include "libao3/afmt.h" -#define IEC61937_DATA_TYPE_AC3 1 +static const int IEC61937_DATA_TYPE_AC3=1; -struct ad_private_t { +struct a52_private_t : public Opaque { + a52_private_t(); + virtual ~a52_private_t(); + sh_audio_t* sh; float last_pts; }; @@ -143,7 +146,7 @@ extern a52_state_t *mpxp_a52_state; extern uint32_t mpxp_a52_accel; extern uint32_t mpxp_a52_flags; -int a52_fillbuff(ad_private_t *sh_audio,float *pts); +int a52_fillbuff(a52_private_t& sh_audio,float& pts); static const ad_info_t info = { "AC3/DTS pass-through S/PDIF", @@ -159,7 +162,7 @@ LIBAD_EXTERN(hwac3) extern ad_functions_t mpcodecs_ad_a52; -static a52_state_t * (*a52_init_ptr) (uint32_t mm_accel); +static a52_state_t* (*a52_init_ptr) (uint32_t mm_accel); #define a52_init(a) (*a52_init_ptr)(a) static const audio_probe_t probes[] = { @@ -180,11 +183,11 @@ } -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { UNUSED(probe); /* Dolby AC3 audio: */ - ad_private_t* ctx=mpcodecs_ad_a52.preinit(probe,sh,afi); + Opaque* ctx=mpcodecs_ad_a52.preinit(probe,sh,afi); sh->audio_out_minsize=4*256*6; sh->audio_in_minsize=3840; sh->nch=2; @@ -192,9 +195,10 @@ return ctx; } -MPXP_Rc init(ad_private_t *ctx) +MPXP_Rc init(Opaque& ctx) { - sh_audio_t* sh_audio = ctx->sh; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; /* Dolby AC3 passthrough:*/ float pts; mpxp_a52_state=a52_init (mpxp_a52_accel); /* doesn't require mmx optimzation */ @@ -202,7 +206,7 @@ MSG_ERR("A52 init failed\n"); return MPXP_False; } - if(a52_fillbuff(ctx,&pts)<0) { + if(a52_fillbuff(priv,pts)<0) { MSG_ERR("A52 sync failed\n"); return MPXP_False; } @@ -220,14 +224,15 @@ return MPXP_Ok; } -void uninit(ad_private_t *ctx) +void uninit(Opaque& ctx) { mpcodecs_ad_a52.uninit(ctx); } -MPXP_Rc control_ad(ad_private_t *ctx,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { - sh_audio_t* sh = ctx->sh; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh = priv.sh; UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: @@ -235,7 +240,7 @@ return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; - a52_fillbuff(ctx,&pts); // skip AC3 frame + a52_fillbuff(priv,pts); // skip AC3 frame return MPXP_True; } default: @@ -244,15 +249,16 @@ return MPXP_Unknown; } -unsigned decode(ad_private_t *ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = ctx->sh; - unsigned len=0; - UNUSED(minlen); - UNUSED(maxlen); - if(!sh_audio->a_in_buffer_len) - if((int)(len=a52_fillbuff(ctx,pts))<0) return 0; /*EOF*/ - sh_audio->a_in_buffer_len=0; - len = ac3_iec958_build_burst(len, 0x01, 1, (unsigned char *)sh_audio->a_in_buffer, buf); - return len; + a52_private_t& priv=static_cast<a52_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; + unsigned len=0; + UNUSED(minlen); + UNUSED(maxlen); + if(!sh_audio->a_in_buffer_len) + if((int)(len=a52_fillbuff(priv,pts))<0) return 0; /*EOF*/ + sh_audio->a_in_buffer_len=0; + len = ac3_iec958_build_burst(len, 0x01, 1, (unsigned char *)sh_audio->a_in_buffer, buf); + return len; } Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-12-25 14:21:19 UTC (rev 600) @@ -9,11 +9,11 @@ #include "ad_msg.h" static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag); -static MPXP_Rc __FASTCALL__ init(ad_private_t *ctx); -static ad_private_t* __FASTCALL__ preinit(const audio_probe_t* probe,sh_audio_t *ctx,audio_filter_info_t* afi); -static void __FASTCALL__ uninit(ad_private_t *ctx); -static MPXP_Rc control_ad(ad_private_t *ctx,int cmd,any_t* arg, ...); -static unsigned __FASTCALL__ decode(ad_private_t *ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); +static MPXP_Rc __FASTCALL__ init(Opaque& ctx); +static Opaque* __FASTCALL__ preinit(const audio_probe_t& probe,sh_audio_t *ctx,audio_filter_info_t& afi); +static void __FASTCALL__ uninit(Opaque& ctx); +static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...); +static unsigned __FASTCALL__ decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts); #define LIBAD_EXTERN(x) extern const ad_functions_t mpcodecs_ad_##x = {\ &info,\ Modified: mplayerxp/libmpcodecs/ad_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_lavc.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_lavc.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -18,11 +18,22 @@ #include "mpxp_conf_lavc.h" #include "codecs_ld.h" -struct ad_private_t { +struct alavc_private_t : public Opaque { + alavc_private_t(); + virtual ~alavc_private_t(); + AVCodecContext* lavc_ctx; sh_audio_t* sh; audio_filter_info_t* afi; }; +alavc_private_t::alavc_private_t() {} +alavc_private_t::~alavc_private_t() { + if(lavc_ctx) { + avcodec_close(lavc_ctx); + if (lavc_ctx->extradata) delete lavc_ctx->extradata; + delete lavc_ctx; + } +} static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; @@ -53,8 +64,7 @@ return acodec; } -struct codecs_st* __FASTCALL__ find_lavc_audio(ad_private_t* priv) { - sh_audio_t* sh = priv->sh; +struct codecs_st* __FASTCALL__ find_lavc_audio(sh_audio_t* sh) { const audio_probe_t* aprobe=probe(sh->wtag); struct codecs_st* acodec = NULL; if(aprobe) { @@ -84,22 +94,23 @@ LIBAD_EXTERN(lavc) -ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) +Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi) { UNUSED(probe); - ad_private_t* priv = new(zeromem) ad_private_t; + alavc_private_t* priv = new(zeromem) alavc_private_t; sh->audio_out_minsize=AVCODEC_MAX_AUDIO_FRAME_SIZE; priv->sh = sh; - priv->afi = afi; + priv->afi = &afi; return priv; } -MPXP_Rc init(ad_private_t *priv) +MPXP_Rc init(Opaque& ctx) { + alavc_private_t& priv=static_cast<alavc_private_t&>(ctx); int x; float pts; AVCodec *lavc_codec=NULL; - sh_audio_t* sh_audio = priv->sh; + sh_audio_t* sh_audio = priv.sh; MSG_V("LAVC audio codec\n"); // avcodec_init(); avcodec_register_all(); @@ -109,45 +120,45 @@ MSG_ERR(MSGTR_MissingLAVCcodec,sh_audio->codec->dll_name); return MPXP_False; } - priv->lavc_ctx = avcodec_alloc_context3(lavc_codec); + priv.lavc_ctx = avcodec_alloc_context3(lavc_codec); if(sh_audio->wf) { - priv->lavc_ctx->channels = sh_audio->wf->nChannels; - priv->lavc_ctx->sample_rate = sh_audio->wf->nSamplesPerSec; - priv->lavc_ctx->bit_rate = sh_audio->wf->nAvgBytesPerSec * 8; - priv->lavc_ctx->block_align = sh_audio->wf->nBlockAlign; - priv->lavc_ctx->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; + priv.lavc_ctx->channels = sh_audio->wf->nChannels; + priv.lavc_ctx->sample_rate = sh_audio->wf->nSamplesPerSec; + priv.lavc_ctx->bit_rate = sh_audio->wf->nAvgBytesPerSec * 8; + priv.lavc_ctx->block_align = sh_audio->wf->nBlockAlign; + priv.lavc_ctx->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; /* alloc extra data */ if (sh_audio->wf->cbSize > 0) { - priv->lavc_ctx->extradata = new uint8_t[sh_audio->wf->cbSize+FF_INPUT_BUFFER_PADDING_SIZE]; - priv->lavc_ctx->extradata_size = sh_audio->wf->cbSize; - memcpy(priv->lavc_ctx->extradata, (char *)sh_audio->wf + sizeof(WAVEFORMATEX), - priv->lavc_ctx->extradata_size); + priv.lavc_ctx->extradata = new uint8_t[sh_audio->wf->cbSize+FF_INPUT_BUFFER_PADDING_SIZE]; + priv.lavc_ctx->extradata_size = sh_audio->wf->cbSize; + memcpy(priv.lavc_ctx->extradata, (char *)sh_audio->wf + sizeof(WAVEFORMATEX), + priv.lavc_ctx->extradata_size); } } // for QDM2 - if (sh_audio->codecdata_len && sh_audio->codecdata && !priv->lavc_ctx->extradata) { - priv->lavc_ctx->extradata = new uint8_t[sh_audio->codecdata_len]; - priv->lavc_ctx->extradata_size = sh_audio->codecdata_len; - memcpy(priv->lavc_ctx->extradata, (char *)sh_audio->codecdata, - priv->lavc_ctx->extradata_size); + if (sh_audio->codecdata_len && sh_audio->codecdata && !priv.lavc_ctx->extradata) { + priv.lavc_ctx->extradata = new uint8_t[sh_audio->codecdata_len]; + priv.lavc_ctx->extradata_size = sh_audio->codecdata_len; + memcpy(priv.lavc_ctx->extradata, (char *)sh_audio->codecdata, + priv.lavc_ctx->extradata_size); } - priv->lavc_ctx->codec_tag = sh_audio->wtag; - priv->lavc_ctx->codec_type = lavc_codec->type; - priv->lavc_ctx->codec_id = lavc_codec->id; + priv.lavc_ctx->codec_tag = sh_audio->wtag; + priv.lavc_ctx->codec_type = lavc_codec->type; + priv.lavc_ctx->codec_id = lavc_codec->id; /* open it */ - if (avcodec_open2(priv->lavc_ctx, lavc_codec, NULL) < 0) { + if (avcodec_open2(priv.lavc_ctx, lavc_codec, NULL) < 0) { MSG_ERR( MSGTR_CantOpenCodec); return MPXP_False; } MSG_V("INFO: libavcodec init OK!\n"); // Decode at least 1 byte: (to get header filled) - x=decode(priv,reinterpret_cast<unsigned char*>(sh_audio->a_buffer),1,sh_audio->a_buffer_size,&pts); + x=decode(priv,reinterpret_cast<unsigned char*>(sh_audio->a_buffer),1,sh_audio->a_buffer_size,pts); if(x>0) sh_audio->a_buffer_len=x; - sh_audio->nch=priv->lavc_ctx->channels; - sh_audio->rate=priv->lavc_ctx->sample_rate; - switch(priv->lavc_ctx->sample_fmt) { + sh_audio->nch=priv.lavc_ctx->channels; + sh_audio->rate=priv.lavc_ctx->sample_rate; + switch(priv.lavc_ctx->sample_fmt) { case AV_SAMPLE_FMT_U8: ///< unsigned 8 bits sh_audio->afmt=AFMT_U8; break; @@ -162,33 +173,29 @@ sh_audio->afmt=AFMT_FLOAT32; break; } - sh_audio->i_bps=priv->lavc_ctx->bit_rate/8; + sh_audio->i_bps=priv.lavc_ctx->bit_rate/8; return MPXP_Ok; } -void uninit(ad_private_t *priv) -{ - avcodec_close(priv->lavc_ctx); - if (priv->lavc_ctx->extradata) delete priv->lavc_ctx->extradata; - delete priv->lavc_ctx; - delete priv; -} +void uninit(Opaque& ctx) { UNUSED(ctx); } -MPXP_Rc control_ad(ad_private_t *priv,int cmd,any_t* arg, ...) +MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...) { + alavc_private_t& priv=static_cast<alavc_private_t&>(ctx); UNUSED(arg); switch(cmd){ case ADCTRL_RESYNC_STREAM: - avcodec_flush_buffers(priv->lavc_ctx); + avcodec_flush_buffers(priv.lavc_ctx); return MPXP_True; default: break; } return MPXP_Unknown; } -unsigned decode(ad_private_t *priv,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) +unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts) { - sh_audio_t* sh_audio = priv->sh; + alavc_private_t& priv=static_cast<alavc_private_t&>(ctx); + sh_audio_t* sh_audio = priv.sh; unsigned char *start=NULL; int y; unsigned len=0; @@ -196,13 +203,13 @@ while(len<minlen){ AVPacket pkt; int len2=maxlen; - int x=ds_get_packet_r(sh_audio->ds,&start,apts?&null_pts:&apts); + int x=ds_get_packet_r(*sh_audio->ds,&start,apts?null_pts:apts); if(x<=0) break; // error if(sh_audio->wtag==mmioFOURCC('d','n','e','t')) swab(start,start,x&(~1)); av_init_packet(&pkt); pkt.data = start; pkt.size = x; - y=avcodec_decode_audio3(priv->lavc_ctx,(int16_t*)buf,&len2,&pkt); + y=avcodec_decode_audio3(priv.lavc_ctx,(int16_t*)buf,&len2,&pkt); if(y<0){ MSG_V("lavc_audio: error\n");break; } if(y<x) { @@ -217,6 +224,6 @@ } MSG_DBG2("Decoded %d -> %d \n",y,len2); } - *pts=apts; + pts=apts; return len; } Modified: mplayerxp/libmpcodecs/ad_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-22 14:32:53 UTC (rev 599) +++ mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-25 14:21:19 UTC (rev 600) @@ -20,11 +20,19 @@ #include "osdep/bswap.h" #include "ad_internal.h" -struct ad_private_t { +struct libadv_private_t : public Opaque { + libadv_private_t(); + virtual ~libadv_private_t(); + dv_decoder_t* decoder; int16_t* audioBuffers[4]; sh_audio_t* sh; }; +libadv_private_t::libadv_private_t() {} +libadv_private_t::~libadv_private_t() { + unsigned i; + for (i=0; i < 4; i++) delete audioBuffers[i]; +} static const ad_info_t info = { "Raw DV Audio Decoder", @@ -55,20 +63,21 @@ // defined in vd_libdv.c: dv_decoder_t* init_global_rawdv_decoder(void); -static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) +static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi) { UNUSED(probe); UNUSED(afi); sh_audio->audio_out_minsize=4*DV_AUDIO_MAX_SAMPLES*2; - ad_private_t* priv = new(zeromem)... [truncated message content] |
From: <nic...@us...> - 2012-12-22 14:33:08
|
Revision: 599 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=599&view=rev Author: nickols_k Date: 2012-12-22 14:32:53 +0000 (Sat, 22 Dec 2012) Log Message: ----------- cleanups Modified Paths: -------------- mplayerxp/input2/joystick.cpp mplayerxp/libao3/audio_out.cpp mplayerxp/libmpcodecs/ad_acm.cpp mplayerxp/libmpcodecs/ad_twin.cpp mplayerxp/libmpcodecs/vd_xanim.cpp mplayerxp/libmpcodecs/vd_xvid.cpp mplayerxp/libmpstream2/rtp_cache.cpp mplayerxp/libmpstream2/s_tv.cpp mplayerxp/libmpstream2/tvi/tvi_dummy.cpp mplayerxp/libmpstream2/tvi/tvi_v4l.cpp mplayerxp/libvo2/img_format.cpp mplayerxp/osdep/getch2.cpp mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/mplib.cpp mplayerxp/osdep/shmem.cpp mplayerxp/osdep/timer-lx.cpp mplayerxp/osdep/timer.cpp mplayerxp/postproc/aflib.cpp Modified: mplayerxp/input2/joystick.cpp =================================================================== --- mplayerxp/input2/joystick.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/input2/joystick.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -125,15 +125,15 @@ if(ev.type & JS_EVENT_BUTTON) { priv.btns &= ~(1 << ev.number); priv.btns |= (ev.value << ev.number); - if(ev.value == 1) return ((JOY_BTN0+ev.number) | MP_KEY_DOWN); - else return (JOY_BTN0+ev.number); + if(ev.value == 1) return (JOY_BTN0+ev.number)|MP_KEY_DOWN; + else return JOY_BTN0+ev.number; } else if(ev.type & JS_EVENT_AXIS) { if(ev.value < -JOY_AXIS_DELTA && priv.axis[ev.number] != -1) { priv.axis[ev.number] = -1; - return (JOY_AXIS0_MINUS+(2*ev.number)) | MP_KEY_DOWN; + return (JOY_AXIS0_MINUS+(2*ev.number))|MP_KEY_DOWN; } else if(ev.value > JOY_AXIS_DELTA && priv.axis[ev.number] != 1) { priv.axis[ev.number] = 1; - return (JOY_AXIS0_PLUS+(2*ev.number)) | MP_KEY_DOWN; + return (JOY_AXIS0_PLUS+(2*ev.number))|MP_KEY_DOWN; } else if(ev.value <= JOY_AXIS_DELTA && ev.value >= -JOY_AXIS_DELTA && priv.axis[ev.number] != 0) { int r = priv.axis[ev.number] == 1 ? JOY_AXIS0_PLUS+(2*ev.number) : JOY_AXIS0_MINUS+(2*ev.number); priv.axis[ev.number] = 0; Modified: mplayerxp/libao3/audio_out.cpp =================================================================== --- mplayerxp/libao3/audio_out.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libao3/audio_out.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -86,51 +86,51 @@ switch (format) { case AFMT_MU_LAW: - return("Mu-Law"); + return "Mu-Law"; case AFMT_A_LAW: - return("A-Law"); + return "A-Law"; case AFMT_IMA_ADPCM: - return("Ima-ADPCM"); + return "Ima-ADPCM"; case AFMT_S8: - return("Signed 8-bit"); + return "Signed 8-bit"; case AFMT_U8: - return("Unsigned 8-bit"); + return "Unsigned 8-bit"; case AFMT_U16_LE: - return("Unsigned 16-bit (Little-Endian)"); + return "Unsigned 16-bit (Little-Endian)"; case AFMT_U16_BE: - return("Unsigned 16-bit (Big-Endian)"); + return "Unsigned 16-bit (Big-Endian)"; case AFMT_S16_LE: - return("Signed 16-bit (Little-Endian)"); + return "Signed 16-bit (Little-Endian)"; case AFMT_S16_BE: - return("Signed 16-bit (Big-Endian)"); + return "Signed 16-bit (Big-Endian)"; case AFMT_U24_LE: - return("Unsigned 24-bit (Little-Endian)"); + return "Unsigned 24-bit (Little-Endian)"; case AFMT_U24_BE: - return("Unsigned 24-bit (Big-Endian)"); + return "Unsigned 24-bit (Big-Endian)"; case AFMT_S24_LE: - return("Signed 24-bit (Little-Endian)"); + return "Signed 24-bit (Little-Endian)"; case AFMT_S24_BE: - return("Signed 24-bit (Big-Endian)"); + return "Signed 24-bit (Big-Endian)"; case AFMT_U32_LE: - return("Unsigned 32-bit (Little-Endian)"); + return "Unsigned 32-bit (Little-Endian)"; case AFMT_U32_BE: - return("Unsigned 32-bit (Big-Endian)"); + return "Unsigned 32-bit (Big-Endian)"; case AFMT_S32_LE: - return("Signed 32-bit (Little-Endian)"); + return "Signed 32-bit (Little-Endian)"; case AFMT_S32_BE: - return("Signed 32-bit (Big-Endian)"); + return "Signed 32-bit (Big-Endian)"; case AFMT_MPEG: - return("MPEG (2) audio"); + return "MPEG (2) audio"; case AFMT_AC3: - return("AC3"); + return "AC3"; case AFMT_FLOAT32: - return("Float32"); + return "Float32"; /* the following two formats are not available with old linux kernel headers (e.g. in 2.2.16) */ } - return("Unknown"); + return "Unknown"; } // return number of bits for 1 sample in one channel, or 8 bits for compressed Modified: mplayerxp/libmpcodecs/ad_acm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -116,16 +116,16 @@ case ACMERR_CANCELED: MSG_DBG2( "ACM_Decoder: stream busy, waiting..\n"); sleep(100); - return(close_acm_audio_codec(priv)); + return close_acm_audio_codec(priv); case ACMERR_UNPREPARED: case ACMERR_NOTPOSSIBLE: - return(0); + return 0; default: MSG_WARN( "ACM_Decoder: unknown error occured: %d\n", ret); - return(0); + return 0; } /* MSACM_UnregisterAllDrivers();*/ - return(1); + return 1; } MPXP_Rc init(ad_private_t *priv) Modified: mplayerxp/libmpcodecs/ad_twin.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -386,7 +386,7 @@ *pts=FIX_APTS(sh,priv->pts,priv->ptr); iptr = priv->ptr; /* current file data buffer pointer */ if ( iptr >= priv->nbuf ) /* If data file is empty then return */ - return(retval); + return retval; ibufadr = iptr/BYTE_BIT; /* current file data buffer address */ ibufbit = iptr%BYTE_BIT; /* current file data buffer bit */ /* tmpdat = stream->buf[ibufadr] >> (BYTE_BIT-ibufbit-1); */ @@ -405,7 +405,7 @@ } ++retval; } - return(retval); + return retval; } #define BITS_INT (sizeof(int)*8) @@ -437,7 +437,7 @@ mask >>= 1; } *data = work; - return(retval); + return retval; } static int GetVqInfo( tvqConfInfoSubBlock *cfg, Modified: mplayerxp/libmpcodecs/vd_xanim.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -269,21 +269,21 @@ MSG_FATAL( "xacodec: failed to dlopen %s while %s\n", filename, error); else MSG_FATAL( "xacodec: failed to dlopen %s\n", filename); - return(0); + return 0; } what_the = (any_t* (*)())ld_sym(codec_driver->file_handler, "What_The"); if ((error = dlerror()) != NULL) { MSG_FATAL( "xacodec: failed to init %s while %s\n", filename, error); dlclose(codec_driver->file_handler); - return(0); + return 0; } mod_hdr = reinterpret_cast<XAVID_MOD_HDR *>(what_the()); if (!mod_hdr) { MSG_FATAL( "xacodec: initializer function failed in %s\n", filename); dlclose(codec_driver->file_handler); - return(0); + return 0; } MSG_INFO( "=== XAnim Codec ===\n"); @@ -300,14 +300,14 @@ MSG_FATAL( "xacodec: not supported api revision (%d) in %s\n", mod_hdr->api_rev, filename); dlclose(codec_driver->file_handler); - return(0); + return 0; } func = mod_hdr->funcs; if (!func) { MSG_FATAL( "xacodec: function table error in %s\n", filename); dlclose(codec_driver->file_handler); - return(0); + return 0; } MSG_DBG2( "Exported functions by codec: [functable: 0x%08x entries: %d]\n", @@ -331,7 +331,7 @@ codec_driver->dec_func = (unsigned (*)(unsigned char*,unsigned char *,unsigned int, XA_DEC_INFO *))func[i].dec_func; } } - return(1); + return 1; } int xacodec_query(xacodec_driver_t *codec_driver, XA_CODEC_HDR *codec_hdr) @@ -343,7 +343,7 @@ if (codec_driver->dec_func) { codec_hdr->decoder = codec_driver->dec_func; MSG_DBG2( "We got decoder's address at init! %p\n", codec_hdr->decoder); - return(1); + return 1; } #endif codec_ret = codec_driver->iq_func(codec_hdr); @@ -352,16 +352,16 @@ codec_driver->dec_func = (unsigned (*)(unsigned char*,unsigned char *,unsigned int, XA_DEC_INFO *))codec_hdr->decoder; MSG_DBG2( "Codec is supported: found decoder for %s at 0x%08x\n", codec_hdr->description, codec_hdr->decoder); - return(1); + return 1; case CODEC_UNSUPPORTED: MSG_FATAL( "Codec (%s) is unsupported by driver\n", codec_hdr->description); - return(0); + return 0; case CODEC_UNKNOWN: default: MSG_FATAL( "Codec (%s) is unknown by driver\n", codec_hdr->description); - return(0); + return 0; } } @@ -377,7 +377,7 @@ if (xacodec_driver == NULL) { MSG_FATAL( "xacodec: memory allocation error: %s\n", strerror(errno)); - return(0); + return 0; } xacodec_driver->iq_func = NULL; @@ -391,7 +391,7 @@ snprintf(dll, 1024, "%s/%s", xacodec_def_path, vidinfo->codec->dll_name); if (xacodec_init(dll, xacodec_driver) == 0) - return(0); + return 0; codec_hdr.xapi_rev = XAVID_API_REV; codec_hdr.anim_hdr = mp_malloc(4096); @@ -444,13 +444,13 @@ default: MSG_FATAL( "xacodec: not supported image out format (%s)\n", vo_format_name(out_format)); - return(0); + return 0; } MSG_INFO( "xacodec: querying for input %dx%d %dbit [fourcc: %4x] (%s)...\n", codec_hdr.x, codec_hdr.y, codec_hdr.depth, codec_hdr.compression, codec_hdr.description); if (xacodec_query(xacodec_driver, &codec_hdr) == 0) - return(0); + return 0; // delete codec_hdr.anim_hdr; @@ -458,7 +458,7 @@ if (xacodec_driver->decinfo == NULL) { MSG_FATAL( "xacodec: memory allocation error: %s\n", strerror(errno)); - return(0); + return 0; } xacodec_driver->decinfo->cmd = 0; xacodec_driver->decinfo->skip_flag = 0; @@ -483,10 +483,10 @@ if (xacodec_driver->image.mem == NULL) { MSG_FATAL( "xacodec: memory allocation error: %s\n", strerror(errno)); - return(0); + return 0; } - return(1); + return 1; } #define ACT_DLTA_NORM 0x00000000 @@ -720,7 +720,7 @@ { MSG_DBG3( "YUV2x2_Map_Func('image_type: %d', 'dith_type: %d')", image_type, dith_type); - return((any_t*)XA_YUV_2x2_clr); + return (any_t*)XA_YUV_2x2_clr; } /* -------------------- whole YUV frame converters ------------------------- */ @@ -812,7 +812,7 @@ any_t*XA_YUV1611_Func(unsigned int image_type) { MSG_DBG3( "XA_YUV1611_Func('image_type: %d')", image_type); - return((any_t*)XA_YUV1611_Convert); + return (any_t*)XA_YUV1611_Convert; } /* -------------- YUV 4x1 1x1 1x1 (4:1:1 ?) [CYUV] ------------------ */ @@ -829,7 +829,7 @@ any_t*XA_YUV411111_Func(unsigned int image_type) { MSG_DBG3( "XA_YUV411111_Func('image_type: %d')", image_type); - return((any_t*)XA_YUV411111_Convert); + return (any_t*)XA_YUV411111_Convert; } /* --------------- YUV 2x2 1x1 1x1 (4:2:0 aka YV12) [3ivX,H263] ------------ */ @@ -877,7 +877,7 @@ any_t*XA_YUV221111_Func(unsigned int image_type) { MSG_DBG3( "XA_YUV221111_Func('image_type: %d')\n",image_type); - return((any_t*)XA_YUV221111_Convert); + return (any_t*)XA_YUV221111_Convert; } /* *** EOF XANIM *** */ Modified: mplayerxp/libmpcodecs/vd_xvid.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_xvid.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpcodecs/vd_xvid.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -310,10 +310,10 @@ dar = ((float)stats->data.vol.width*wpar); dar /= ((float)stats->data.vol.height*hpar); - return(dar); + return dar; } - return(0.0f); + return 0.0f; } #endif Modified: mplayerxp/libmpstream2/rtp_cache.cpp =================================================================== --- mplayerxp/libmpstream2/rtp_cache.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpstream2/rtp_cache.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -193,7 +193,7 @@ while ((length = get_next(buffer, length)) == 0) { mpxp_err<<"Got empty packet from RTP cache!?"<<std::endl; } - return(length); + return length; } int Rtp_Cache::getrtp2(struct rtpheader *rh, char** data, int* lengthData) const { Modified: mplayerxp/libmpstream2/s_tv.cpp =================================================================== --- mplayerxp/libmpstream2/s_tv.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpstream2/s_tv.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -411,7 +411,7 @@ #endif mpxp_err<< "No such driver: "<<tv_param.driver<<std::endl; - return(NULL); + return NULL; } int __FASTCALL__ tv_init(tvi_handle_t *tvh) @@ -509,7 +509,7 @@ mpxp_warn<<"Unknown color option ("<<opt<<") specified!"<<std::endl; } - return(1); + return 1; } int __FASTCALL__ tv_set_freq(tvi_handle_t *tvh, unsigned long freq) Modified: mplayerxp/libmpstream2/tvi/tvi_dummy.cpp =================================================================== --- mplayerxp/libmpstream2/tvi/tvi_dummy.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpstream2/tvi/tvi_dummy.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -32,7 +32,7 @@ tvi_handle_t *tvi_init_dummy(const char *device) { UNUSED(device); - return(new_handle()); + return new_handle(); } /* initialisation */ @@ -40,7 +40,7 @@ { priv->width = 320; priv->height = 200; - return(1); + return 1; } /* that's the real start, we'got the format parameters (checked with control) */ @@ -61,34 +61,34 @@ switch(cmd) { case TVI_CONTROL_IS_VIDEO: - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_FORMAT: *(int *)arg = IMGFMT_YV12; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_FORMAT: { int req_fmt = (long)*(any_t**)arg; if (req_fmt != IMGFMT_YV12) - return(TVI_CONTROL_FALSE); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_FALSE; + return TVI_CONTROL_TRUE; } case TVI_CONTROL_VID_SET_WIDTH: priv->width = (long)*(any_t**)arg; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_WIDTH: *(int *)arg = priv->width; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_HEIGHT: priv->height = (long)*(any_t**)arg; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_HEIGHT: *(int *)arg = priv->height; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_CHK_WIDTH: case TVI_CONTROL_VID_CHK_HEIGHT: - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } - return(TVI_CONTROL_UNKNOWN); + return TVI_CONTROL_UNKNOWN; } #ifdef HAVE_TV_BSDBT848 @@ -110,7 +110,7 @@ static int get_video_framesize(priv_t *priv) { /* YV12 */ - return(priv->width*priv->height*12/8); + return priv->width*priv->height*12/8; } static double grab_audio_frame(priv_t *priv,unsigned char *buffer, int len) @@ -133,12 +133,12 @@ tvi_handle_t *h = (tvi_handle_t *)mp_malloc(sizeof(tvi_handle_t)); if (!h) - return(NULL); + return NULL; h->priv = (priv_t *)mp_mallocz(sizeof(priv_t)); if (!h->priv) { delete h; - return(NULL); + return NULL; } h->info = &info; h->functions = &functions; @@ -147,7 +147,7 @@ h->chanlist_s = NULL; h->norm = -1; h->channel = -1; - return(h); + return h; } void free_handle(tvi_handle_t *h) Modified: mplayerxp/libmpstream2/tvi/tvi_v4l.cpp =================================================================== --- mplayerxp/libmpstream2/tvi/tvi_v4l.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libmpstream2/tvi/tvi_v4l.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -108,18 +108,18 @@ { /* component */ case VIDEO_PALETTE_RGB555: - return(15); + return 15; case VIDEO_PALETTE_RGB565: - return(16); + return 16; case VIDEO_PALETTE_RGB24: - return(24); + return 24; case VIDEO_PALETTE_RGB32: - return(32); + return 32; /* planar */ case VIDEO_PALETTE_YUV411P: case VIDEO_PALETTE_YUV420P: case VIDEO_PALETTE_YUV410P: - return(12); + return 12; /* packed */ case VIDEO_PALETTE_YUV422P: case VIDEO_PALETTE_YUV422: @@ -127,9 +127,9 @@ case VIDEO_PALETTE_UYVY: case VIDEO_PALETTE_YUV420: case VIDEO_PALETTE_YUV411: - return(16); + return 16; } - return(-1); + return -1; } static int format2palette(int format) @@ -137,22 +137,22 @@ switch(format) { case IMGFMT_RGB15: - return(VIDEO_PALETTE_RGB555); + return VIDEO_PALETTE_RGB555; case IMGFMT_RGB16: - return(VIDEO_PALETTE_RGB565); + return VIDEO_PALETTE_RGB565; case IMGFMT_RGB24: - return(VIDEO_PALETTE_RGB24); + return VIDEO_PALETTE_RGB24; case IMGFMT_RGB32: - return(VIDEO_PALETTE_RGB32); + return VIDEO_PALETTE_RGB32; case IMGFMT_YV12: case IMGFMT_I420: - return(VIDEO_PALETTE_YUV420P); + return VIDEO_PALETTE_YUV420P; case IMGFMT_UYVY: - return(VIDEO_PALETTE_YUV422); + return VIDEO_PALETTE_YUV422; case IMGFMT_YUY2: - return(VIDEO_PALETTE_YUYV); + return VIDEO_PALETTE_YUYV; } - return(-1); + return -1; } tvi_handle_t *tvi_init_v4l(const char *device) @@ -162,7 +162,7 @@ h = new_handle(); if (!h) - return(NULL); + return NULL; priv = h->priv; @@ -175,13 +175,13 @@ /* allocation failed */ if (!priv->video_device) { free_handle(h); - return(NULL); + return NULL; } /* set audio device name */ priv->audio_device = mp_strdup("/dev/dsp"); - return(h); + return h; } static int init(struct priv_s *priv) @@ -425,21 +425,21 @@ /* ========== GENERIC controls =========== */ case TVI_CONTROL_IS_VIDEO: { if (priv->capability.type & VID_TYPE_CAPTURE) - return(TVI_CONTROL_TRUE); - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_TRUE; + return TVI_CONTROL_FALSE; } case TVI_CONTROL_IS_AUDIO: if (priv->channels[priv->act_channel].flags & VIDEO_VC_AUDIO) { - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_IS_TUNER: { // if (priv->capability.type & VID_TYPE_TUNER) if (priv->channels[priv->act_channel].flags & VIDEO_VC_TUNER) - return(TVI_CONTROL_TRUE); - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_TRUE; + return TVI_CONTROL_FALSE; } /* ========== VIDEO controls =========== */ @@ -450,20 +450,20 @@ output_fmt = priv->wtag; *(int *)arg = output_fmt; mpxp_v<<"Output format: "<<vo_format_name(output_fmt)<<std::endl; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_VID_SET_FORMAT: priv->wtag = (int)*(any_t**)arg; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_PLANES: *(int *)arg = 1; /* FIXME, also not needed at this time */ - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_BITS: *(int *)arg = palette2depth(format2palette(priv->wtag)); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_WIDTH: *(int *)arg = priv->width; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_CHK_WIDTH: { int req_width = *(int *)arg; @@ -471,15 +471,15 @@ mpxp_v<<"Requested width: "<<req_width<<std::endl; if ((req_width >= priv->capability.minwidth) && (req_width <= priv->capability.maxwidth)) - return(TVI_CONTROL_TRUE); - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_TRUE; + return TVI_CONTROL_FALSE; } case TVI_CONTROL_VID_SET_WIDTH: priv->width = *(int *)arg; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_HEIGHT: *(int *)arg = priv->height; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_CHK_HEIGHT: { int req_height = *(int *)arg; @@ -487,45 +487,45 @@ mpxp_v<<"Requested height: "<<req_height<<std::endl; if ((req_height >= priv->capability.minheight) && (req_height <= priv->capability.maxheight)) - return(TVI_CONTROL_TRUE); - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_TRUE; + return TVI_CONTROL_FALSE; } case TVI_CONTROL_VID_SET_HEIGHT: priv->height = *(int *)arg; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_PICTURE: if (ioctl(priv->video_fd, VIDIOCGPICT, &priv->picture) == -1) { mpxp_err<<"ioctl get picture failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_PICTURE: if (ioctl(priv->video_fd, VIDIOCSPICT, &priv->picture) == -1) { mpxp_err<<"ioctl get picture failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_BRIGHTNESS: priv->picture.brightness = *(int *)arg; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_HUE: priv->picture.hue = *(int *)arg; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_SATURATION: priv->picture.colour = *(int *)arg; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_SET_CONTRAST: priv->picture.contrast = *(int *)arg; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; case TVI_CONTROL_VID_GET_FPS: *(int *)arg=priv->fps; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; /* ========== TUNER controls =========== */ case TVI_CONTROL_TUN_GET_FREQ: @@ -535,14 +535,14 @@ if (ioctl(priv->video_fd, VIDIOCGFREQ, &freq) == -1) { mpxp_err<<"ioctl get freq failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } /* tuner uses khz not mhz ! */ // if (priv->tuner.flags & VIDEO_TUNER_LOW) // freq /= 1000; *(unsigned long *)arg = freq; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_TUN_SET_FREQ: { @@ -557,29 +557,29 @@ if (ioctl(priv->video_fd, VIDIOCSFREQ, &freq) == -1) { mpxp_err<<"ioctl set freq failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_TUN_GET_TUNER: { if (ioctl(priv->video_fd, VIDIOCGTUNER, &priv->tuner) == -1) { mpxp_err<<"ioctl get tuner failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } mpxp_v<<"Tuner ("<<priv->tuner.name<<") range: "<<priv->tuner.rangelow<<" ->"<<priv->tuner.rangehigh<<std::endl; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_TUN_SET_TUNER: { if (ioctl(priv->video_fd, VIDIOCSTUNER, &priv->tuner) == -1) { mpxp_err<<"ioctl get tuner failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_TUN_SET_NORM: { @@ -591,53 +591,53 @@ ((req_mode == VIDEO_MODE_SECAM) && !(priv->tuner.flags & VIDEO_TUNER_SECAM))) { mpxp_err<<"Tuner isn't capable to set norm!"<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } priv->tuner.mode = req_mode; if (control(priv, TVI_CONTROL_TUN_SET_TUNER, &priv->tuner) != TVI_CONTROL_TRUE) - return(TVI_CONTROL_FALSE); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_FALSE; + return TVI_CONTROL_TRUE; } case TVI_CONTROL_TUN_GET_NORM: { *(int *)arg = priv->tuner.mode; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } /* ========== AUDIO controls =========== */ case TVI_CONTROL_AUD_GET_FORMAT: { *(int *)arg = priv->audio_format[priv->audio_id]; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_AUD_GET_CHANNELS: { *(int *)arg = priv->audio_channels[priv->audio_id]; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_AUD_GET_SAMPLERATE: { *(int *)arg = priv->audio_samplerate[priv->audio_id]; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_AUD_GET_SAMPLESIZE: { *(int *)arg = priv->audio_samplesize[priv->audio_id]/8; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_AUD_SET_SAMPLERATE: { int tmp = priv->audio_samplerate[priv->audio_id] = *(int *)arg; if (ioctl(priv->audio_fd, SNDCTL_DSP_SPEED, &tmp) == -1) - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; priv->audio_samplesize[priv->audio_id] = priv->audio_samplerate[priv->audio_id]/8/priv->fps* priv->audio_channels[priv->audio_id]; - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } /* ========== SPECIFIC controls =========== */ case TVI_CONTROL_SPC_GET_INPUT: @@ -656,9 +656,9 @@ if (ioctl(priv->video_fd, VIDIOCGCHAN, &priv->channels[i]) == -1) { mpxp_err<<"ioctl get channel failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } case TVI_CONTROL_SPC_SET_INPUT: @@ -670,7 +670,7 @@ if (req_chan >= priv->capability.channels) { mpxp_err<<"Invalid input requested: "<<req_chan<<", valid: 0-"<<priv->capability.channels<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } for (i = 0; i < priv->capability.channels; i++) @@ -682,7 +682,7 @@ if (ioctl(priv->video_fd, VIDIOCSCHAN, &chan) == -1) { mpxp_err<<"ioctl set chan failed: "<<strerror(errno)<<std::endl; - return(TVI_CONTROL_FALSE); + return TVI_CONTROL_FALSE; } mpxp_v<<"Using input: "<<chan.name<<std::endl; @@ -695,11 +695,11 @@ /* update local channel list */ control(priv, TVI_CONTROL_SPC_GET_INPUT, &req_chan); - return(TVI_CONTROL_TRUE); + return TVI_CONTROL_TRUE; } } - return(TVI_CONTROL_UNKNOWN); + return TVI_CONTROL_UNKNOWN; } static double grab_video_frame(struct priv_s *priv,unsigned char *buffer, int len) @@ -712,7 +712,7 @@ if (ioctl(priv->video_fd, VIDIOCMCAPTURE, &priv->buf[nextframe]) == -1) { mpxp_err<<"ioctl mcapture failed: "<<strerror(errno)<<std::endl; - return(0); + return 0; } while (ioctl(priv->video_fd, VIDIOCSYNC, &priv->buf[frame].frame) < 0 && @@ -729,12 +729,12 @@ /* copy the actual frame */ memcpy(buffer, priv->mmap+priv->mbuf.offsets[frame], len); - return(timestamp-priv->starttime); + return timestamp-priv->starttime; } static int get_video_framesize(struct priv_s *priv) { - return(priv->bytesperline * priv->height); + return priv->bytesperline * priv->height; } static double grab_audio_frame(struct priv_s *priv,unsigned char *buffer, int len) @@ -759,8 +759,8 @@ static int get_audio_framesize(struct priv_s *priv) { - return(priv->audio_blocksize); -// return(priv->audio_samplesize[priv->audio_id]); + return priv->audio_blocksize; +// return priv->audio_samplesize[priv->audio_id]; } #endif /* USE_TV */ Modified: mplayerxp/libvo2/img_format.cpp =================================================================== --- mplayerxp/libvo2/img_format.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/libvo2/img_format.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -11,62 +11,62 @@ static char unknow_format[20]; switch(format) { - case IMGFMT_RGB1: return("RGB 1-bit"); - case IMGFMT_RGB4: return("RGB 4-bit"); - case IMGFMT_RG4B: return("RGB 4-bit per byte"); - case IMGFMT_RGB8: return("RGB 8-bit"); - case IMGFMT_RGB15: return("RGB 15-bit"); - case IMGFMT_RGB16: return("RGB 16-bit"); - case IMGFMT_RGB24: return("RGB 24-bit"); - case IMGFMT_RGB48NE: return("RGB 48-bit"); -// case IMGFMT_RGB32: return("RGB 32-bit"); - case IMGFMT_BGR1: return("BGR 1-bit"); - case IMGFMT_BGR4: return("BGR 4-bit"); - case IMGFMT_BG4B: return("BGR 4-bit per byte"); - case IMGFMT_BGR8: return("BGR 8-bit"); - case IMGFMT_BGR15: return("BGR 15-bit"); - case IMGFMT_BGR16: return("BGR 16-bit"); - case IMGFMT_BGR24: return("BGR 24-bit"); - case IMGFMT_BGR48NE: return("BGR 48-bit"); -// case IMGFMT_BGR32: return("BGR 32-bit"); - case IMGFMT_ABGR: return("ABGR"); - case IMGFMT_BGRA: return("BGRA"); - case IMGFMT_ARGB: return("ARGB"); - case IMGFMT_RGBA: return("RGBA"); - case IMGFMT_YVU9: return("Planar YVU9"); - case IMGFMT_IF09: return("Planar IF09"); - case IMGFMT_YV12: return("Planar YV12"); - case IMGFMT_I420: return("Planar I420"); - case IMGFMT_IYUV: return("Planar IYUV"); - case IMGFMT_CLPL: return("Planar CLPL"); - case IMGFMT_Y800: return("Planar Y800"); - case IMGFMT_Y8: return("Planar Y8"); - case IMGFMT_444P: return("Planar 444P"); - case IMGFMT_422P: return("Planar 422P"); - case IMGFMT_411P: return("Planar 411P"); - case IMGFMT_NV12: return("Planar NV12"); - case IMGFMT_NV21: return("Planar NV21"); - case IMGFMT_HM12: return("Planar NV12 Macroblock"); - case IMGFMT_IUYV: return("Packed IUYV"); - case IMGFMT_IY41: return("Packed IY41"); - case IMGFMT_IYU1: return("Packed IYU1"); - case IMGFMT_IYU2: return("Packed IYU2"); - case IMGFMT_UYVY: return("Packed UYVY"); - case IMGFMT_UYNV: return("Packed UYNV"); - case IMGFMT_cyuv: return("Packed CYUV"); - case IMGFMT_Y422: return("Packed Y422"); - case IMGFMT_YUY2: return("Packed YUY2"); - case IMGFMT_YUNV: return("Packed YUNV"); - case IMGFMT_YVYU: return("Packed YVYU"); - case IMGFMT_Y41P: return("Packed Y41P"); - case IMGFMT_Y211: return("Packed Y211"); - case IMGFMT_Y41T: return("Packed Y41T"); - case IMGFMT_Y42T: return("Packed Y42T"); - case IMGFMT_V422: return("Packed V422"); - case IMGFMT_V655: return("Packed V655"); - case IMGFMT_CLJR: return("Packed CLJR"); - case IMGFMT_YUVP: return("Packed YUVP"); - case IMGFMT_UYVP: return("Packed UYVP"); + case IMGFMT_RGB1: return "RGB 1-bit"; + case IMGFMT_RGB4: return "RGB 4-bit"; + case IMGFMT_RG4B: return "RGB 4-bit per byte"; + case IMGFMT_RGB8: return "RGB 8-bit"; + case IMGFMT_RGB15: return "RGB 15-bit"; + case IMGFMT_RGB16: return "RGB 16-bit"; + case IMGFMT_RGB24: return "RGB 24-bit"; + case IMGFMT_RGB48NE: return "RGB 48-bit"; +// case IMGFMT_RGB32: return "RGB 32-bit"; + case IMGFMT_BGR1: return "BGR 1-bit"; + case IMGFMT_BGR4: return "BGR 4-bit"; + case IMGFMT_BG4B: return "BGR 4-bit per byte"; + case IMGFMT_BGR8: return "BGR 8-bit"; + case IMGFMT_BGR15: return "BGR 15-bit"; + case IMGFMT_BGR16: return "BGR 16-bit"; + case IMGFMT_BGR24: return "BGR 24-bit"; + case IMGFMT_BGR48NE: return "BGR 48-bit"; +// case IMGFMT_BGR32: return "BGR 32-bit"; + case IMGFMT_ABGR: return "ABGR"; + case IMGFMT_BGRA: return "BGRA"; + case IMGFMT_ARGB: return "ARGB"; + case IMGFMT_RGBA: return "RGBA"; + case IMGFMT_YVU9: return "Planar YVU9"; + case IMGFMT_IF09: return "Planar IF09"; + case IMGFMT_YV12: return "Planar YV12"; + case IMGFMT_I420: return "Planar I420"; + case IMGFMT_IYUV: return "Planar IYUV"; + case IMGFMT_CLPL: return "Planar CLPL"; + case IMGFMT_Y800: return "Planar Y800"; + case IMGFMT_Y8: return "Planar Y8"; + case IMGFMT_444P: return "Planar 444P"; + case IMGFMT_422P: return "Planar 422P"; + case IMGFMT_411P: return "Planar 411P"; + case IMGFMT_NV12: return "Planar NV12"; + case IMGFMT_NV21: return "Planar NV21"; + case IMGFMT_HM12: return "Planar NV12 Macroblock"; + case IMGFMT_IUYV: return "Packed IUYV"; + case IMGFMT_IY41: return "Packed IY41"; + case IMGFMT_IYU1: return "Packed IYU1"; + case IMGFMT_IYU2: return "Packed IYU2"; + case IMGFMT_UYVY: return "Packed UYVY"; + case IMGFMT_UYNV: return "Packed UYNV"; + case IMGFMT_cyuv: return "Packed CYUV"; + case IMGFMT_Y422: return "Packed Y422"; + case IMGFMT_YUY2: return "Packed YUY2"; + case IMGFMT_YUNV: return "Packed YUNV"; + case IMGFMT_YVYU: return "Packed YVYU"; + case IMGFMT_Y41P: return "Packed Y41P"; + case IMGFMT_Y211: return "Packed Y211"; + case IMGFMT_Y41T: return "Packed Y41T"; + case IMGFMT_Y42T: return "Packed Y42T"; + case IMGFMT_V422: return "Packed V422"; + case IMGFMT_V655: return "Packed V655"; + case IMGFMT_CLJR: return "Packed CLJR"; + case IMGFMT_YUVP: return "Packed YUVP"; + case IMGFMT_UYVP: return "Packed UYVP"; case IMGFMT_420A: return "Planar YV12 with alpha"; case IMGFMT_420P16_LE: return "Planar 420P 16-bit little-endian"; case IMGFMT_420P16_BE: return "Planar 420P 16-bit big-endian"; @@ -74,12 +74,12 @@ case IMGFMT_422P16_BE: return "Planar 422P 16-bit big-endian"; case IMGFMT_444P16_LE: return "Planar 444P 16-bit little-endian"; case IMGFMT_444P16_BE: return "Planar 444P 16-bit big-endian"; - case IMGFMT_MPEGPES: return("Mpeg PES"); - case IMGFMT_ZRMJPEGNI: return("Zoran MJPEG non-interlaced"); - case IMGFMT_ZRMJPEGIT: return("Zoran MJPEG top field first"); - case IMGFMT_ZRMJPEGIB: return("Zoran MJPEG bottom field first"); - case IMGFMT_XVMC_MOCO_MPEG2: return("MPEG1/2 Motion Compensation"); - case IMGFMT_XVMC_IDCT_MPEG2: return("MPEG1/2 Motion Compensation and IDCT"); + case IMGFMT_MPEGPES: return "Mpeg PES"; + case IMGFMT_ZRMJPEGNI: return "Zoran MJPEG non-interlaced"; + case IMGFMT_ZRMJPEGIT: return "Zoran MJPEG top field first"; + case IMGFMT_ZRMJPEGIB: return "Zoran MJPEG bottom field first"; + case IMGFMT_XVMC_MOCO_MPEG2: return "MPEG1/2 Motion Compensation"; + case IMGFMT_XVMC_IDCT_MPEG2: return "MPEG1/2 Motion Compensation and IDCT"; } char *p=reinterpret_cast<char *>(&format); if(isprint(p[0])&&isprint(p[1])&&isprint(p[2])&&isprint(p[4])) Modified: mplayerxp/osdep/getch2.cpp =================================================================== --- mplayerxp/osdep/getch2.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/getch2.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -121,7 +121,7 @@ static void get_screen_size(){ #ifdef USE_IOCTL struct winsize ws; - if (ioctl(0, TIOCGWINSZ, &ws) < 0 || !ws.ws_row || !ws.ws_col) return; + if (::ioctl(0, TIOCGWINSZ, &ws) < 0 || !ws.ws_row || !ws.ws_col) return; screen_width=ws.ws_col; screen_height=ws.ws_row; #endif @@ -141,10 +141,10 @@ FD_ZERO(&rfds); FD_SET(0,&rfds); /* Wait up to 'time' microseconds. */ tv.tv_sec=_time/1000; tv.tv_usec = (_time%1000)*1000; - retval=select(1, &rfds, NULL, NULL, &tv); + retval=::select(1, &rfds, NULL, NULL, &tv); if(retval<=0) return -1; /* Data is available now. */ - retval=read(0,&getch2_buf[getch2_len],BUF_LEN-getch2_len); + retval=::read(0,&getch2_buf[getch2_len],BUF_LEN-getch2_len); if(retval<1) return -1; getch2_len+=retval; } @@ -220,22 +220,22 @@ #ifdef HAVE_TERMIOS struct termios tio_new; #if defined(__NetBSD__) || defined(__svr4__) || defined(__CYGWIN__) - tcgetattr(0,&tio_orig); + ::tcgetattr(0,&tio_orig); #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__) - ioctl(0,TIOCGETA,&tio_orig); + ::ioctl(0,TIOCGETA,&tio_orig); #else - ioctl(0,TCGETS,&tio_orig); + ::ioctl(0,TCGETS,&tio_orig); #endif tio_new=tio_orig; tio_new.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */ tio_new.c_cc[VMIN] = 1; tio_new.c_cc[VTIME] = 0; #if defined(__NetBSD__) || defined(__svr4__) || defined(__CYGWIN__) || defined(__OS2__) - tcsetattr(0,TCSANOW,&tio_new); + ::tcsetattr(0,TCSANOW,&tio_new); #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__) - ioctl(0,TIOCSETA,&tio_new); + ::ioctl(0,TIOCSETA,&tio_new); #else - ioctl(0,TCSETS,&tio_new); + ::ioctl(0,TCSETS,&tio_new); #endif #endif getch2_status=1; @@ -245,11 +245,11 @@ if(!getch2_status) return; // already disabled / never enabled #ifdef HAVE_TERMIOS #if defined(__NetBSD__) || defined(__svr4__) || defined(__CYGWIN__) || defined(__OS2__) - tcsetattr(0,TCSANOW,&tio_orig); + ::tcsetattr(0,TCSANOW,&tio_orig); #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__) - ioctl(0,TIOCSETA,&tio_orig); + ::ioctl(0,TIOCSETA,&tio_orig); #else - ioctl(0,TCSETS,&tio_orig); + ::ioctl(0,TCSETS,&tio_orig); #endif #endif getch2_status=0; Modified: mplayerxp/osdep/mp_malloc.cpp =================================================================== --- mplayerxp/osdep/mp_malloc.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/mp_malloc.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -91,7 +91,7 @@ } } c->slots=s; - memset(&c->slots[c->nslots],0,sizeof(mp_slot_t)); + ::memset(&c->slots[c->nslots],0,sizeof(mp_slot_t)); c->slots[c->nslots].page_ptr=ptr; c->slots[c->nslots].size=size; c->nslots++; @@ -101,7 +101,7 @@ static void prot_free_slot(mp_slot_container_t* c,any_t* ptr) { size_t idx=prot_find_slot_idx(c,ptr); if(idx!=UINT_MAX) { - memmove(&c->slots[idx],&c->slots[idx+1],sizeof(mp_slot_t)*(c->nslots-(idx+1))); + ::memmove(&c->slots[idx],&c->slots[idx+1],sizeof(mp_slot_t)*(c->nslots-(idx+1))); c->nslots--; if(c->nslots<c->size-16) { c->size-=16; @@ -115,11 +115,11 @@ static any_t* __prot_malloc_append(size_t size) { any_t* rp; size_t fullsize=app_fullsize(size); - rp=memalign(__VM_PAGE_SIZE__,fullsize); + rp=::memalign(__VM_PAGE_SIZE__,fullsize); if(rp) { prot_append_slot(&priv->mallocs,rp,size); // protect last page here - mprotect(prot_last_page(rp,fullsize),__VM_PAGE_SIZE__,MP_DENY_ALL); + ::mprotect(prot_last_page(rp,fullsize),__VM_PAGE_SIZE__,MP_DENY_ALL); rp=reinterpret_cast<any_t*>(reinterpret_cast<long>(rp)+fullsize-__VM_PAGE_SIZE__-size); } return rp; @@ -143,8 +143,8 @@ static void uninit_bt_cache(bt_cache_t* cache) { unsigned i; for(i=0;i<cache->num_entries;i++) free(cache->entry[i].str); - free(cache->entry); - free(cache); + ::free(cache->entry); + ::free(cache); } static char* bt_find_cache(bt_cache_t* cache,any_t* ptr) { @@ -165,19 +165,19 @@ static char* exec_addr2line(any_t*ptr, char* result,unsigned len) { unsigned i; char ch,cmd[4096]; - sprintf(cmd,"addr2line -s -e %s %p\n",priv->argv0,ptr); - FILE* in=popen(cmd,"r"); + ::sprintf(cmd,"addr2line -s -e %s %p\n",priv->argv0,ptr); + FILE* in=::popen(cmd,"r"); if(!in) return NULL; i=0; while(1) { - ch=fgetc(in); - if(feof(in)) break; + ch=::fgetc(in); + if(::feof(in)) break; if(ch=='\n') break; result[i++]=ch; if(i>=len-1) break; } result[i]='\0'; - pclose(in); + ::pclose(in); return result; } @@ -199,7 +199,7 @@ bt_cache_t* cache=init_bt_cache(); any_t* calls[num]; unsigned i,ncalls; - ncalls=backtrace(calls,num); + ncalls=::backtrace(calls,num); mpxp_info<<"*** Backtrace for suspect call ***"<<std::endl; for(i=0;i<ncalls;i++) { mpxp_info<<" "<<calls[i]<<" -> "<<addr2line(cache,calls[i])<<std::endl; @@ -220,14 +220,14 @@ any_t *page_ptr=prot_page_align(ptr); mp_slot_t* slot=prot_find_slot(&priv->mallocs,page_ptr); if(!slot) { - printf("[__prot_free_append] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,page_ptr); + ::printf("[__prot_free_append] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,page_ptr); __prot_print_slots(&priv->mallocs); __print_backtrace(Max_BackTraces); - kill(getpid(), SIGILL); + ::kill(::getpid(), SIGILL); } size_t fullsize=app_fullsize(slot->size); - mprotect(prot_last_page(page_ptr,fullsize),__VM_PAGE_SIZE__,MP_PROT_READ|MP_PROT_WRITE); - free(page_ptr); + ::mprotect(prot_last_page(page_ptr,fullsize),__VM_PAGE_SIZE__,MP_PROT_READ|MP_PROT_WRITE); + ::free(page_ptr); prot_free_slot(&priv->mallocs,page_ptr); } @@ -236,12 +236,12 @@ if((rp=__prot_malloc_append(size))!=NULL && ptr) { mp_slot_t* slot=prot_find_slot(&priv->mallocs,prot_page_align(ptr)); if(!slot) { - printf("[__prot_realloc_append] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,prot_page_align(ptr)); + ::printf("[__prot_realloc_append] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,prot_page_align(ptr)); __prot_print_slots(&priv->mallocs); __print_backtrace(Max_BackTraces); - kill(getpid(), SIGILL); + ::kill(::getpid(), SIGILL); } - memcpy(rp,ptr,std::min(slot->size,size)); + ::memcpy(rp,ptr,std::min(slot->size,size)); __prot_free_append(ptr); } return rp; @@ -254,11 +254,11 @@ static any_t* __prot_malloc_prepend(size_t size) { any_t* rp; size_t fullsize=pre_fullsize(size); - rp=memalign(__VM_PAGE_SIZE__,fullsize); + rp=::memalign(__VM_PAGE_SIZE__,fullsize); if(rp) { prot_append_slot(&priv->mallocs,rp,size); // protect last page here - mprotect(rp,__VM_PAGE_SIZE__,MP_DENY_ALL); + ::mprotect(rp,__VM_PAGE_SIZE__,MP_DENY_ALL); rp=reinterpret_cast<any_t*>(reinterpret_cast<long>(rp)+__VM_PAGE_SIZE__); } return rp; @@ -270,13 +270,13 @@ any_t *page_ptr=pre_page_align(ptr); mp_slot_t* slot=prot_find_slot(&priv->mallocs,page_ptr); if(!slot) { - printf("[__prot_free_prepend] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,page_ptr); + ::printf("[__prot_free_prepend] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,page_ptr); __prot_print_slots(&priv->mallocs); __print_backtrace(Max_BackTraces); - kill(getpid(), SIGILL); + ::kill(::getpid(), SIGILL); } - mprotect(page_ptr,__VM_PAGE_SIZE__,MP_PROT_READ|MP_PROT_WRITE); - free(page_ptr); + ::mprotect(page_ptr,__VM_PAGE_SIZE__,MP_PROT_READ|MP_PROT_WRITE); + ::free(page_ptr); prot_free_slot(&priv->mallocs,page_ptr); } @@ -285,12 +285,12 @@ if((rp=__prot_malloc_prepend(size))!=NULL && ptr) { mp_slot_t* slot=prot_find_slot(&priv->mallocs,pre_page_align(ptr)); if(!slot) { - printf("[__prot_realloc_prepend] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,pre_page_align(ptr)); + ::printf("[__prot_realloc_prepend] suspect call found! Can't find slot for address: %p [aligned: %p]\n",ptr,pre_page_align(ptr)); __prot_print_slots(&priv->mallocs); __print_backtrace(Max_BackTraces); - kill(getpid(), SIGILL); + ::kill(getpid(), SIGILL); } - memcpy(rp,ptr,std::min(slot->size,size)); + ::memcpy(rp,ptr,std::min(slot->size,size)); __prot_free_prepend(ptr); } return rp; @@ -325,21 +325,21 @@ static __always_inline any_t* bt_malloc(size_t size) { any_t*rp; mp_slot_t* slot; - rp=malloc(size); + rp=::malloc(size); if(rp) { slot=prot_append_slot(&priv->mallocs,rp,size); - slot->ncalls=backtrace(slot->calls,Max_BackTraces); + slot->ncalls=::backtrace(slot->calls,Max_BackTraces); } return rp; } static __always_inline any_t* bt_memalign(size_t boundary,size_t size) { any_t*rp; - rp=memalign(boundary,size); + rp=::memalign(boundary,size); if(rp) { mp_slot_t* slot; slot=prot_append_slot(&priv->mallocs,rp,size); - slot->ncalls=backtrace(slot->calls,Max_BackTraces); + slot->ncalls=::backtrace(slot->calls,Max_BackTraces); } return rp; } @@ -348,14 +348,14 @@ any_t* rp; mp_slot_t* slot; if(!ptr) return bt_malloc(size); - rp=realloc(ptr,size); + rp=::realloc(ptr,size); if(rp) { slot=prot_find_slot(&priv->mallocs,ptr); if(!slot) { mpxp_warn<<"[bt_realloc] suspect call found! Can't find slot for address: "<<ptr<<std::endl; mp_slot_t* _slot; _slot=prot_append_slot(&priv->reallocs,ptr,size); - _slot->ncalls=backtrace(_slot->calls,Max_BackTraces); + _slot->ncalls=::backtrace(_slot->calls,Max_BackTraces); } else { slot->page_ptr=rp; // update address after realloc slot->size=size; @@ -370,11 +370,11 @@ mpxp_warn<<"[bt_free] suspect call found! Can't find slot for address: "<<ptr<<std::endl; mp_slot_t* _slot; _slot=prot_append_slot(&priv->frees,ptr,0); - _slot->ncalls=backtrace(_slot->calls,Max_BackTraces); + _slot->ncalls=::backtrace(_slot->calls,Max_BackTraces); return; } prot_free_slot(&priv->mallocs,ptr); - free(ptr); + ::free(ptr); } /*======== STATISTICS =======*/ @@ -387,7 +387,7 @@ mpxp_info<<"address: "<<c->slots[i].page_ptr<<" size: "<<c->slots[i].size<<" dump: "; s=reinterpret_cast<char *>(c->slots[i].page_ptr); for(j=0;j<std::min(c->slots[i].size,size_t(20));j++) { - if(!isprint(s[j])) { + if(!::isprint(s[j])) { printable=0; break; } @@ -405,9 +405,9 @@ /* ================== HEAD FUNCTIONS ======================= */ void mp_init_malloc(const char *argv0,unsigned rnd_limit,unsigned every_nth_call,enum mp_malloc_e flags) { - srand(time(0)); - if(!priv) priv=(priv_t*)malloc(sizeof(priv_t)); - memset(priv,0,sizeof(priv_t)); + ::srand(::time(0)); + if(!priv) priv=(priv_t*)::malloc(sizeof(priv_t)); + ::memset(priv,0,sizeof(priv_t)); priv->argv0=argv0; priv->rnd_limit=rnd_limit; priv->every_nth_call=every_nth_call; @@ -450,7 +450,7 @@ } if(done) mpxp_hint<<std::endl<<"For source lines you may also print in (gdb): list *0xADDRESS"<<std::endl; uninit_bt_cache(cache); - free(priv); + ::free(priv); priv=NULL; } @@ -460,13 +460,13 @@ if(!priv) mp_init_malloc(NULL,1000,10,MPA_FLG_RANDOMIZER); if(priv->every_nth_call && priv->rnd_limit && !priv->flags) { if(priv->total_calls%priv->every_nth_call==0) { - rnd_buff=malloc(rand()%priv->rnd_limit); + rnd_buff=::malloc(::rand()%priv->rnd_limit); } } if(priv->flags&(MPA_FLG_BOUNDS_CHECK|MPA_FLG_BEFORE_CHECK)) rb=prot_malloc(__size); else if(priv->flags&MPA_FLG_BACKTRACE) rb=bt_malloc(__size); else rb=malloc(__size); - if(rnd_buff) free(rnd_buff); + if(rnd_buff) ::free(rnd_buff); priv->total_calls++; return rb; } @@ -499,7 +499,7 @@ else if(priv->flags&MPA_FLG_BACKTRACE) bt_free(__ptr); else - free(__ptr); + ::free(__ptr); } } @@ -508,7 +508,7 @@ any_t* mp_mallocz (size_t __size) { any_t* rp; rp=mp_malloc(__size); - if(rp) memset(rp,0,__size); + if(rp) ::memset(rp,0,__size); return rp; } @@ -524,7 +524,7 @@ int __FASTCALL__ mp_mprotect(any_t* addr,size_t len,enum mp_prot_e flags) { - return mprotect(addr,len,flags); + return ::mprotect(addr,len,flags); } } // namespace mpxp Modified: mplayerxp/osdep/mplib.cpp =================================================================== --- mplayerxp/osdep/mplib.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/mplib.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -21,7 +21,7 @@ unsigned i; char ch; for(i=0;i<size;i++) { - ch=rand()%255; + ch=::rand()%255; ((char *)buffer)[i]=ch; } return buffer; @@ -34,17 +34,17 @@ long hi_mask=~lo_mask; long filler; for(i=0;i<psize/sizeof(long);i++) { - filler=rand()&lo_mask; + filler=::rand()&lo_mask; filler=(reinterpret_cast<long>(buffer)&hi_mask)|lo_mask; - ((long *)buffer)[i]=rand()%2?filler:0; + ((long *)buffer)[i]=::rand()%2?filler:0; } - memset(&((char *)buffer)[psize],0,size-psize); + ::memset(&((char *)buffer)[psize],0,size-psize); return buffer; } any_t* get_caller_address(unsigned num_caller) { any_t* stack[3+num_caller]; - backtrace(stack,3+num_caller); + ::backtrace(stack,3+num_caller); return stack[2+num_caller]; } Modified: mplayerxp/osdep/shmem.cpp =================================================================== --- mplayerxp/osdep/shmem.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/shmem.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -45,7 +45,7 @@ switch(shmem_type){ case 0: // ========= MAP_ANON|MAP_SHARED ========== #ifdef MAP_ANON - p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_ANON|MAP_SHARED,-1,0); + p=::mmap(0,size,PROT_READ|PROT_WRITE,MAP_ANON|MAP_SHARED,-1,0); if(p==MAP_FAILED) break; // failed mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using mmap anon"<<std::endl; return p; @@ -55,8 +55,8 @@ #endif break; case 1: // ========= MAP_SHARED + /dev/zero ========== - if (devzero == -1 && (devzero = open("/dev/zero", O_RDWR, 0)) == -1) break; - p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,devzero,0); + if (devzero == -1 && (devzero = ::open("/dev/zero", O_RDWR, 0)) == -1) break; + p=::mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,devzero,0); if(p==MAP_FAILED) break; // failed mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using mmap /dev/zero"<<std::endl; return p; @@ -64,22 +64,22 @@ #ifdef HAVE_SHM struct shmid_ds shmemds; int shmemid; - if ((shmemid = shmget(IPC_PRIVATE, size, IPC_CREAT | 0600)) == -1) break; - if ((p = shmat(shmemid, 0, 0)) == (any_t*)-1){ + if ((shmemid = ::shmget(IPC_PRIVATE, size, IPC_CREAT | 0600)) == -1) break; + if ((p = ::shmat(shmemid, 0, 0)) == (any_t*)-1){ mpxp_err<<"shmem: shmat() failed: "<<strerror(errno)<<std::endl; - shmctl (shmemid, IPC_RMID, &shmemds); + ::shmctl (shmemid, IPC_RMID, &shmemds); break; } - if (shmctl(shmemid, IPC_RMID, &shmemds) == -1) { + if (::shmctl(shmemid, IPC_RMID, &shmemds) == -1) { mpxp_err<<"shmem: shmctl() failed: "<<strerror(errno)<<std::endl; - if (shmdt(p) == -1) perror ("shmdt()"); + if (::shmdt(p) == -1) perror ("shmdt()"); break; } mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using SHM"<<std::endl; return p; #else mpxp_fatal<<"shmem: no SHM support was compiled in!"<<std::endl; - return(NULL); + return NULL; #endif } default: @@ -94,7 +94,7 @@ switch(shmem_type){ case 2: #ifdef HAVE_SHM - if (shmdt(p) == -1) + if (::shmdt(p) == -1) mpxp_err<<"shmfree: shmdt() failed: "<<strerror(errno)<<std::endl; #else mpxp_err<<"shmfree: no SHM support was compiled in!"<<std::endl; Modified: mplayerxp/osdep/timer-lx.cpp =================================================================== --- mplayerxp/osdep/timer-lx.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/timer-lx.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -38,7 +38,7 @@ // float s; ::gettimeofday(&tv,NULL); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; - return (tv.tv_sec*1000000ULL+tv.tv_usec); + return tv.tv_sec*1000000ULL+tv.tv_usec; } // Returns current time in milliseconds @@ -48,7 +48,7 @@ // float s; ::gettimeofday(&tv,NULL); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; - return (tv.tv_sec*1000+tv.tv_usec/1000); + return tv.tv_sec*1000+tv.tv_usec/1000; } static unsigned int RelativeTime=0; @@ -67,7 +67,7 @@ int rtc_fd=-1; GetRelativeTime(); #ifdef HAVE_RTC - if ((rtc_fd = ::open("/dev/rtc", O_RDONLY)) < 0) perror ("Linux RTC init: open"); + if ((rtc_fd = ::open("/dev/rtc", O_RDONLY)) < 0) ::perror ("Linux RTC init: open"); else { unsigned long irqp; Modified: mplayerxp/osdep/timer.cpp =================================================================== --- mplayerxp/osdep/timer.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/osdep/timer.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -21,15 +21,15 @@ unsigned ret; struct itimerval itimer; user_func = func; - getitimer(ITIMER_REAL,&otimer); - old_alrm = signal(SIGALRM,my_alarm_handler); - signal(SIGALRM,my_alarm_handler); + ::getitimer(ITIMER_REAL,&otimer); + old_alrm = ::signal(SIGALRM,my_alarm_handler); + ::signal(SIGALRM,my_alarm_handler); itimer.it_interval.tv_sec = 0; itimer.it_interval.tv_usec = ms*1000; itimer.it_value.tv_sec = 0; itimer.it_value.tv_usec = ms*1000; - setitimer(ITIMER_REAL,&itimer,NULL); - getitimer(ITIMER_REAL,&itimer); + ::setitimer(ITIMER_REAL,&itimer,NULL); + ::getitimer(ITIMER_REAL,&itimer); ret = itimer.it_interval.tv_sec*1000 + itimer.it_interval.tv_usec/1000; if(!ret) restore_timer(); return ret; Modified: mplayerxp/postproc/aflib.cpp =================================================================== --- mplayerxp/postproc/aflib.cpp 2012-12-22 13:51:04 UTC (rev 598) +++ mplayerxp/postproc/aflib.cpp 2012-12-22 14:32:53 UTC (rev 599) @@ -596,7 +596,7 @@ sum += u; n++; } while (u >= BIZ_EPSILON * sum); - return(sum); + return sum; } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-22 13:51:19
|
Revision: 598 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=598&view=rev Author: nickols_k Date: 2012-12-22 13:51:04 +0000 (Sat, 22 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output About illegal-patch: i've found out that total size of executable is being decreased when i replace MSG_* with corresponded mpxp_* classes for printing messages on screen. When i performed such opeartion on timer-lx.cpp then size of executable became less for more than 100Kb. The same it's possible to say about many files from libmpstream2 same as various other subfolders. It seems that malefactor(s) <together with substitution of m_config_parse_command_line() call> substitute calls of MSG_ with own versions by using of specially hacked development environment. Also, it seems that malefactor(s) somehow take into account dot('.') at end of printed messages. Modified Paths: -------------- mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h mplayerxp/osdep/aclib.cpp mplayerxp/osdep/aclib_template.h mplayerxp/osdep/cpudetect.cpp mplayerxp/osdep/getch2.cpp mplayerxp/osdep/lrmi.cpp mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/osdep_msg.h mplayerxp/osdep/shmem.cpp mplayerxp/osdep/timer-lx.cpp mplayerxp/osdep/vbelib.cpp Modified: mplayerxp/nls/mpxp_help-en.h =================================================================== --- mplayerxp/nls/mpxp_help-en.h 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/nls/mpxp_help-en.h 2012-12-22 13:51:04 UTC (rev 598) @@ -427,7 +427,7 @@ #endif #ifndef MSGTR_ShMemAllocFail -#define MSGTR_ShMemAllocFail "Cannot allocate shared memory\n" +#define MSGTR_ShMemAllocFail "Cannot allocate shared memory" #endif #ifndef MSGTR_OutOfMemory #define MSGTR_OutOfMemory "Out of memory" Modified: mplayerxp/nls/mpxp_help-ru.h =================================================================== --- mplayerxp/nls/mpxp_help-ru.h 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/nls/mpxp_help-ru.h 2012-12-22 13:51:04 UTC (rev 598) @@ -196,7 +196,7 @@ #define MSGTR_BadMpegSequHdr "MPEG: Плохая последовательность заголовков!\n" #define MSGTR_BadMpegSequHdrEx "MPEG: Плохое расширение последовательности заголовков!\n" -#define MSGTR_ShMemAllocFail "Не могу захватить общую память\n" +#define MSGTR_ShMemAllocFail "Не могу захватить разделяемую память" #define MSGTR_OutOfMemory "Нехватает памяти" #define MSGTR_CantAllocAudioBuf "Не могу захватить выходной буффер аудио\n" #define MSGTR_NoMemForDecodedImage "Не достаточно памяти для буффера декодирования картинки (%ld байт)\n" Modified: mplayerxp/osdep/aclib.cpp =================================================================== --- mplayerxp/osdep/aclib.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/aclib.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -27,70 +27,63 @@ static any_t* init_fast_memcpy(any_t* to, const any_t* from, size_t len) { #ifdef __SSE2__ - if(gCpuCaps.hasSSE2) - { - MSG_V("Using SSE2 optimized memcpy\n"); - fast_memcpy_ptr = fast_memcpy_SSE2; - } - else + if(gCpuCaps.hasSSE2) { + mpxp_v<<"Using SSE2 optimized memcpy"<<std::endl; + fast_memcpy_ptr = fast_memcpy_SSE2; + } else #endif #ifndef __x86_64__ #ifdef __SSE__ - if(gCpuCaps.hasMMX2) - { - MSG_V("Using MMX2 optimized memcpy\n"); - fast_memcpy_ptr = fast_memcpy_SSE; - } - else + if(gCpuCaps.hasMMX2) { + mpxp_v<<"Using MMX2 optimized memcpy"<<std::endl; + fast_memcpy_ptr = fast_memcpy_SSE; + } else #endif //#ifdef __MMX__ // if(gCpuCaps.hasMMX) // { -// MSG_V("Using MMX optimized memcpy\n"); +// mpxp_v<<"Using MMX optimized memcpy"<<std::endl; // fast_memcpy_ptr = fast_memcpy_MMX; // } // else //#endif #endif - { - MSG_V("Using generic memcpy\n"); - fast_memcpy_ptr = memcpy; /* prior to mmx we use the standart memcpy */ - } - return (*fast_memcpy_ptr)(to,from,len); + { + mpxp_v<<"Using generic memcpy"<<std::endl; + fast_memcpy_ptr = memcpy; /* prior to mmx we use the standart memcpy */ + } + return (*fast_memcpy_ptr)(to,from,len); } static any_t* init_stream_copy(any_t* to, const any_t* from, size_t len) { #ifdef __SSE2__ - if(gCpuCaps.hasSSE2) - { - MSG_V("Using SSE2 optimized agpcpy\n"); - fast_stream_copy_ptr = fast_stream_copy_SSE2; - } + if(gCpuCaps.hasSSE2) { + mpxp_v<<"Using SSE2 optimized agpcpy"<<std::endl; + fast_stream_copy_ptr = fast_stream_copy_SSE2; + } #endif #ifndef __x86_64__ #ifdef __SSE__ - if(gCpuCaps.hasMMX2) - { - MSG_V("Using MMX2 optimized agpcpy\n"); - fast_stream_copy_ptr = fast_stream_copy_SSE; - } - else + if(gCpuCaps.hasMMX2) { + mpxp_v<<"Using MMX2 optimized agpcpy"<<std::endl; + fast_stream_copy_ptr = fast_stream_copy_SSE; + } else #endif //#ifdef __MMX__ // if(gCpuCaps.hasMMX) // { -// MSG_V("Using MMX optimized agpcpy\n"); +// mpxp_v<<"Using MMX optimized agpcpy"<<std::endl; // fast_stream_copy_ptr = fast_stream_copy_MMX; // } // else //#endif #endif - { - MSG_V("Using generic optimized agpcpy\n"); - fast_stream_copy_ptr = ::memcpy; /* prior to mmx we use the standart memcpy */ - } - return (*fast_stream_copy_ptr)(to,from,len); + { + mpxp_v<<"Using generic optimized agpcpy"<<std::endl; + fast_stream_copy_ptr = ::memcpy; /* prior to mmx we use the standart memcpy */ + } + return (*fast_stream_copy_ptr)(to,from,len); } any_t*(*fast_memcpy_ptr)(any_t* to, const any_t* from, size_t len) = init_fast_memcpy; Modified: mplayerxp/osdep/aclib_template.h =================================================================== --- mplayerxp/osdep/aclib_template.h 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/aclib_template.h 2012-12-22 13:51:04 UTC (rev 598) @@ -164,7 +164,7 @@ #define MEM_SFENCE _ivec_sfence(); static inline any_t* PVECTOR_RENAME(fast_stream_copy)(any_t* to, const any_t* from, size_t len) { - MSG_DBG3("fast_stream_copy(%p, %p, %u) [cl_size=%u]\n",to,from,len,gCpuCaps.cl_size); + mpxp_dbg3<<"fast_stream_copy("<<to<<", "<<from<<", "<<len<<") [cl_size="<<gCpuCaps.cl_size<<"]"<<std::endl; FAST_MEMORY_COPY(to,from,len); } @@ -174,7 +174,7 @@ #define MEM_SFENCE static inline any_t* PVECTOR_RENAME(fast_memcpy)(any_t* to, const any_t* from, size_t len) { - MSG_DBG3("fast_memcpy(%p, %p, %u) [cl_size=%u]\n",to,from,len,gCpuCaps.cl_size); + mpxp_dbg3<<"fast_memcpy("<<to<<", "<<from<<", "<<len<<") [cl_size="<<gCpuCaps.cl_size<<"]"<<std::endl; FAST_MEMORY_COPY(to,from,len); } } // namesapce mpxp Modified: mplayerxp/osdep/cpudetect.cpp =================================================================== --- mplayerxp/osdep/cpudetect.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/cpudetect.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -87,21 +87,18 @@ caps->isX86=1; caps->cl_size=32; /* default */ if (!has_cpuid()) { - MSG_WARN("CPUID not supported!???\n"); + mpxp_warn<<"CPUID not supported!???"<<std::endl; return; } do_cpuid(0x00000000, regs); // get _max_ cpuid level and vendor name - MSG_V("CPU vendor name: %.4s%.4s%.4s max cpuid level: %d\n", - (char*) (regs+1),(char*) (regs+3),(char*) (regs+2), regs[0]); - if (regs[0]>=0x00000001) - { + if (regs[0]>=0x00000001) { char *tmpstr; unsigned cl_size; do_cpuid(0x00000001, regs2); tmpstr=GetCpuFriendlyName(regs, regs2); - MSG_V("CPU: %s ",tmpstr); + mpxp_v<<"CPU: "<<tmpstr<<std::endl; delete tmpstr; caps->cpuType=(regs2[0] >> 8)&0xf; @@ -110,8 +107,7 @@ caps->cpuType=8+((regs2[0]>>20)&255); } caps->cpuStepping=regs2[0] & 0xf; - MSG_V("(Type: %d, Stepping: %d)\n", - caps->cpuType, caps->cpuStepping); + mpxp_v<<"(Type: "<<caps->cpuType<<", Stepping: "<<caps->cpuStepping<<")"<<std::endl; // general feature flags: caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000 @@ -130,7 +126,7 @@ } do_cpuid(0x80000000, regs); if (regs[0]>=0x80000001) { - MSG_V("extended cpuid-level: %d\n",regs[0]&0x7FFFFFFF); + mpxp_v<<"extended cpuid-level: "<<(regs[0]&0x7FFFFFFF)<<std::endl; do_cpuid(0x80000001, regs2); caps->hasMMX |= (regs2[3] & (1 << 23 )) >> 23; // 0x0800000 caps->hasMMX2 |= (regs2[3] & (1 << 22 )) >> 22; // 0x400000 @@ -140,25 +136,24 @@ if(regs[0]>=0x80000006) { do_cpuid(0x80000006, regs2); - MSG_V("extended cache-info: %d\n",regs2[2]); + mpxp_v<<"extended cache-info: "<<regs2[2]<<std::endl; caps->cl_size = regs2[2] & 0xFF; } - MSG_V("Detected cache-line size is %u bytes\n",caps->cl_size); - MSG_V("cpudetect: MMX=%d MMX2=%d 3DNow=%d 3DNow2=%d SSE=%d SSE2=%d SSE3=%d SSSE3=%d SSE41=%d SSE42=%d AES=%d AVX=%d FMA=%d\n", - gCpuCaps.hasMMX, - gCpuCaps.hasMMX2, - gCpuCaps.has3DNow, - gCpuCaps.has3DNowExt, - gCpuCaps.hasSSE, - gCpuCaps.hasSSE2, - gCpuCaps.hasSSE3, - gCpuCaps.hasSSSE3, - gCpuCaps.hasSSE41, - gCpuCaps.hasSSE42, - gCpuCaps.hasAES, - gCpuCaps.hasAVX, - gCpuCaps.hasFMA -); + mpxp_v<<"Detected cache-line size is "<<caps->cl_size<<" bytes"<<std::endl; + mpxp_v<<"cpudetect: MMX="<<gCpuCaps.hasMMX + <<" MMX2="<<gCpuCaps.hasMMX2 + <<" 3DNow="<<gCpuCaps.has3DNow + <<" 3DNow2="<<gCpuCaps.has3DNowExt + <<" SSE="<<gCpuCaps.hasSSE + <<" SSE2="<<gCpuCaps.hasSSE2 + <<" SSE3="<<gCpuCaps.hasSSE3 + <<" SSSE3="<<gCpuCaps.hasSSSE3 + <<" SSE41="<<gCpuCaps.hasSSE41 + <<" SSE42="<<gCpuCaps.hasSSE42 + <<" AES="<<gCpuCaps.hasAES + <<" AVX="<<gCpuCaps.hasAVX + <<" FMA="<<gCpuCaps.hasFMA + <<std::endl; } @@ -176,8 +171,8 @@ int i; if (NULL==(retname=(char*)mp_malloc(256))) { - MSG_ERR(MSGTR_OutOfMemory); - exit(1); + mpxp_err<<MSGTR_OutOfMemory<<std::endl; + ::exit(1); } sprintf(vendor,"%.4s%.4s%.4s",(char*)(regs+1),(char*)(regs+3),(char*)(regs+2)); @@ -188,20 +183,14 @@ snprintf(retname,255,"%s %s",cpuvendors[i].name,cpuname[i][CPUID_FAMILY][CPUID_MODEL]); } else { snprintf(retname,255,"unknown %s %d. Generation CPU",cpuvendors[i].name,CPUID_FAMILY); - MSG_ERR("unknown %s CPU:\n" - "Vendor: %s\n" - "Type: %d\n" - "Family: %d (ext: %d)\n" - "Model: %d (ext: %d)\n" - "Stepping: %d\n" - "Please send the above info along with the exact CPU name" - "to the MPlayer-Developers, so we can add it to the list!\n" - ,cpuvendors[i].name - ,cpuvendors[i].string - ,CPUID_TYPE - ,CPUID_FAMILY,CPUID_EXTFAMILY - ,CPUID_MODEL,CPUID_EXTMODEL - ,CPUID_STEPPING); + mpxp_err<<"unknown "<<cpuvendors[i].name<<" CPU:"<<std::endl; + mpxp_err<<"Vendor: "<<cpuvendors[i].string<<std::endl; + mpxp_err<<"Type: "<<CPUID_TYPE<<std::endl; + mpxp_err<<"Family: "<<CPUID_FAMILY<<" (ext: "<<CPUID_EXTFAMILY<<")"<<std::endl; + mpxp_err<<"Model: "<<CPUID_MODEL<<" (ext: "<<CPUID_EXTMODEL<<")"<<std::endl; + mpxp_err<<"Stepping: "<<CPUID_STEPPING<<std::endl; + mpxp_err<<"Please send the above info along with the exact CPU name"<<std::endl; + mpxp_err<<"to the MPlayer-Developers, so we can add it to the list!"<<std::endl; } } } @@ -221,7 +210,7 @@ #if defined(__linux__) && defined(_POSIX_SOURCE) && defined(X86_FXSR_MAGIC) static void sigill_handler_sse( int signal, struct sigcontext sc ) { - MSG_ERR( "SIGILL, " ); + mpxp_err<<"SIGILL, "; /* Both the "xorps %%xmm0,%%xmm0" and "divps %xmm0,%%xmm1" * instructions are 3 bytes long. We must increment the instruction @@ -240,7 +229,7 @@ static void sigfpe_handler_sse( int signal, struct sigcontext sc ) { - MSG_ERR( "SIGFPE, " ); + mpxp_err<<"SIGFPE, "; if ( sc.fpstate->magic != 0xffff ) { /* Our signal context has the extended FPU state, so reset the @@ -252,8 +241,8 @@ } else { /* If we ever get here, we're completely hosed. */ - MSG_ERR( "\n\n" ); - MSG_ERR( "SSE enabling test failed badly!" ); + mpxp_err<<std::endl; + mpxp_err<<"SSE enabling test failed badly!"<<std::endl; } } #endif /* __linux__ && _POSIX_SOURCE && X86_FXSR_MAGIC */ @@ -295,16 +284,13 @@ * does. */ if ( gCpuCaps.hasSSE ) { - MSG_V( "Testing OS support for SSE... " ); + mpxp_v<<"Testing OS support for SSE... "; // __asm __volatile ("xorps %%xmm0, %%xmm0"); __asm __volatile ("xorps %xmm0, %xmm0"); - if ( gCpuCaps.hasSSE ) { - MSG_V( "yes.\n" ); - } else { - MSG_V( "no!\n" ); - } + if ( gCpuCaps.hasSSE ) mpxp_v<<"yes"<<std::endl; + else mpxp_v<<"no!"<<std::endl; } /* Emulate test for OSXMMEXCPT in CR4. The OS will set this bit if @@ -321,15 +307,12 @@ * and therefore to be safe I'm going to leave this test in here. */ if ( gCpuCaps.hasSSE ) { - MSG_V( "Testing OS support for SSE unmasked exceptions... " ); + mpxp_v<<"Testing OS support for SSE unmasked exceptions... "; // test_os_katmai_exception_support(); - if ( gCpuCaps.hasSSE ) { - MSG_V( "yes.\n" ); - } else { - MSG_V( "no!\n" ); - } + if ( gCpuCaps.hasSSE ) mpxp_v<<"yes"<<std::endl; + else mpxp_v<<"no!"<<std::endl; } /* Restore the original signal handlers. @@ -340,22 +323,19 @@ /* If we've gotten to here and the XMM CPUID bit is still set, we're * safe to go ahead and hook out the SSE code throughout Mesa. */ - if ( gCpuCaps.hasSSE ) { - MSG_V( "Tests of OS support for SSE passed.\n" ); - } else { - MSG_WARN( "Tests of OS support for SSE failed!\n" ); - } + if ( gCpuCaps.hasSSE ) mpxp_v<<"Tests of OS support for SSE passed"<<std::endl; + else mpxp_warn<<"Tests of OS support for SSE failed!"<<std::endl; #else /* We can't use POSIX signal handling to test the availability of * SSE, so we disable it by default. */ - MSG_WARN( "Cannot test OS support for SSE, disabling to be safe.\n" ); + mpxp_warn<<"Cannot test OS support for SSE, disabling to be safe"<<std::endl; gCpuCaps.hasSSE=0; #endif /* _POSIX_SOURCE && X86_FXSR_MAGIC */ #else /* Do nothing on other platforms for now. */ - MSG_V( "Not testing OS support for SSE, leaving disabled.\n" ); + mpxp_v<<"Not testing OS support for SSE, leaving disabled"<<std::endl; gCpuCaps.hasSSE=0; #endif /* __linux__ */ #endif /*ARCH_X86_64*/ Modified: mplayerxp/osdep/getch2.cpp =================================================================== --- mplayerxp/osdep/getch2.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/getch2.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -83,8 +83,8 @@ int load_termcap(const char *termtype){ if(!termtype) termtype=getenv("TERM"); success=tgetent(term_buffer, termtype); - if(success<0){ MSG_ERR("Could not access the 'termcap' data base.\n"); return 0; } - if(success==0){ MSG_ERR("Terminal type `%s' is not defined.\n", termtype);return 0;} + if(success<0){ mpxp_err<<"Could not access the 'termcap' data base"<<std::endl; return 0; } + if(success==0){ mpxp_err<<"Terminal type `"<<termtype<<"' is not defined"<<std::endl; return 0;} screen_width=tgetnum("co"); screen_height=tgetnum("li"); Modified: mplayerxp/osdep/lrmi.cpp =================================================================== --- mplayerxp/osdep/lrmi.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/lrmi.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -803,32 +803,32 @@ unsigned char *p; fputs("vm86() failed\n", stderr); - MSG_V( "return = 0x%x\n", vret); - MSG_V( "eax = 0x%08lx\n", context.vm.regs.eax); - MSG_V( "ebx = 0x%08lx\n", context.vm.regs.ebx); - MSG_V( "ecx = 0x%08lx\n", context.vm.regs.ecx); - MSG_V( "edx = 0x%08lx\n", context.vm.regs.edx); - MSG_V( "esi = 0x%08lx\n", context.vm.regs.esi); - MSG_V( "edi = 0x%08lx\n", context.vm.regs.edi); - MSG_V( "ebp = 0x%08lx\n", context.vm.regs.ebp); - MSG_V( "eip = 0x%08lx\n", context.vm.regs.eip); - MSG_V( "cs = 0x%04x\n", context.vm.regs.cs); - MSG_V( "esp = 0x%08lx\n", context.vm.regs.esp); - MSG_V( "ss = 0x%04x\n", context.vm.regs.ss); - MSG_V( "ds = 0x%04x\n", context.vm.regs.ds); - MSG_V( "es = 0x%04x\n", context.vm.regs.es); - MSG_V( "fs = 0x%04x\n", context.vm.regs.fs); - MSG_V( "gs = 0x%04x\n", context.vm.regs.gs); - MSG_V( "eflags = 0x%08lx\n", context.vm.regs.eflags); + mpxp_v<< "return = 0x"<<std::hex<<vret<<std::endl; + mpxp_v<< "eax = 0x"<<std::hex<<context.vm.regs.eax<<std::endl; + mpxp_v<< "ebx = 0x"<<std::hex<<context.vm.regs.ebx<<std::endl; + mpxp_v<< "ecx = 0x"<<std::hex<<context.vm.regs.ecx<<std::endl; + mpxp_v<< "edx = 0x"<<std::hex<<context.vm.regs.edx<<std::endl; + mpxp_v<< "esi = 0x"<<std::hex<<context.vm.regs.esi<<std::endl; + mpxp_v<< "edi = 0x"<<std::hex<<context.vm.regs.edi<<std::endl; + mpxp_v<< "ebp = 0x"<<std::hex<<context.vm.regs.ebp<<std::endl; + mpxp_v<< "eip = 0x"<<std::hex<<context.vm.regs.eip<<std::endl; + mpxp_v<< "cs = 0x"<<std::hex<<context.vm.regs.cs<<std::endl; + mpxp_v<< "esp = 0x"<<std::hex<<context.vm.regs.esp<<std::endl; + mpxp_v<< "ss = 0x"<<std::hex<<context.vm.regs.ss<<std::endl; + mpxp_v<< "ds = 0x"<<std::hex<<context.vm.regs.ds<<std::endl; + mpxp_v<< "es = 0x"<<std::hex<<context.vm.regs.es<<std::endl; + mpxp_v<< "fs = 0x"<<std::hex<<context.vm.regs.fs<<std::endl; + mpxp_v<< "gs = 0x"<<std::hex<<context.vm.regs.gs<<std::endl; + mpxp_v<< "eflags = 0x"<<std::hex<<context.vm.regs.eflags<<std::endl; - MSG_V("cs:ip = [ "); + mpxp_v<<"cs:ip = [ "); p = (unsigned char *)((context.vm.regs.cs << 4) + (context.vm.regs.eip & 0xffff)); for (i = 0; i < 16; ++i) - MSG_V( "%02x ", (unsigned int)p[i]); + mpxp_v<<(unsigned int)p[i]); - MSG_V("]\n"); + mpxp_v<<"]"<<std::endl; } #endif @@ -923,7 +923,7 @@ if (seg < 0xa000 || (seg << 4) + off >= 0x100000) { #ifdef ORIGINAL_LRMI_CODE_THAT_GOT_IFDEFED_OUT - MSG_WARN( "Int 0x%x is not in rom (%04x:%04x)\n", i, seg, off); + mpxp_warn<<"Int 0x"<<std::hex<<i<<" is not in rom ("<<std::hex<<seg<<":"<<std::hex<<off<<")"<<std::endl; #endif return 0; } Modified: mplayerxp/osdep/mp_malloc.cpp =================================================================== --- mplayerxp/osdep/mp_malloc.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/mp_malloc.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -59,10 +59,7 @@ static void __prot_print_slots(mp_slot_container_t* c) { size_t i; for(i=0;i<c->nslots;i++) { - MSG_INFO("slot[%u] address: %p size: %u\n" - ,i - ,c->slots[i].page_ptr - ,c->slots[i].size); + mpxp_info<<"slot["<<i<<"] address: "<<c->slots[i].page_ptr<<" size: "<<c->slots[i].size<<std::endl; } } @@ -203,9 +200,9 @@ any_t* calls[num]; unsigned i,ncalls; ncalls=backtrace(calls,num); - MSG_INFO("*** Backtrace for suspect call ***\n"); + mpxp_info<<"*** Backtrace for suspect call ***"<<std::endl; for(i=0;i<ncalls;i++) { - MSG_INFO(" %p -> %s\n",calls[i],addr2line(cache,calls[i])); + mpxp_info<<" "<<calls[i]<<" -> "<<addr2line(cache,calls[i])<<std::endl; } uninit_bt_cache(cache); } @@ -213,9 +210,9 @@ void print_backtrace(const std::string& why,any_t** stack,unsigned num) { char result[4096]; unsigned i; - MSG_INFO(!why.empty()?why.c_str():"*** Backtrace for suspect call ***\n"); + mpxp_info<<(!why.empty()?why.c_str():"*** Backtrace for suspect call ***")<<std::endl; for(i=0;i<num;i++) { - MSG_INFO(" %p -> %s\n",stack[i],exec_addr2line(stack[i],result,sizeof(result))); + mpxp_info<<" "<<stack[i]<<" -> "<<exec_addr2line(stack[i],result,sizeof(result))<<std::endl; } } @@ -355,7 +352,7 @@ if(rp) { slot=prot_find_slot(&priv->mallocs,ptr); if(!slot) { - MSG_WARN("[bt_realloc] suspect call found! Can't find slot for address: %p\n",ptr); + mpxp_warn<<"[bt_realloc] suspect call found! Can't find slot for address: "<<ptr<<std::endl; mp_slot_t* _slot; _slot=prot_append_slot(&priv->reallocs,ptr,size); _slot->ncalls=backtrace(_slot->calls,Max_BackTraces); @@ -370,7 +367,7 @@ static __always_inline void bt_free(any_t*ptr) { mp_slot_t* slot=prot_find_slot(&priv->mallocs,ptr); if(!slot) { - MSG_WARN("[bt_free] suspect call found! Can't find slot for address: %p\n",ptr); + mpxp_warn<<"[bt_free] suspect call found! Can't find slot for address: "<<ptr<<std::endl; mp_slot_t* _slot; _slot=prot_append_slot(&priv->frees,ptr,0); _slot->ncalls=backtrace(_slot->calls,Max_BackTraces); @@ -387,7 +384,7 @@ for(i=0;i<c->nslots;i++) { char *s; int printable=1; - MSG_INFO("address: %p size: %u dump: ",c->slots[i].page_ptr,c->slots[i].size); + mpxp_info<<"address: "<<c->slots[i].page_ptr<<" size: "<<c->slots[i].size<<" dump: "; s=reinterpret_cast<char *>(c->slots[i].page_ptr); for(j=0;j<std::min(c->slots[i].size,size_t(20));j++) { if(!isprint(s[j])) { @@ -395,13 +392,13 @@ break; } } - if(printable) MSG_INFO("%20s",s); + if(printable) mpxp_info<<std::string(s).substr(0,20)<<std::endl; else for(j=0;j<std::min(c->slots[i].size,size_t(Max_BackTraces));j++) { - MSG_INFO("%02X ",(unsigned char)s[j]); + mpxp_info<<(unsigned char)s[j]<<" "; } - MSG_INFO("\n"); + mpxp_info<<std::endl; for(j=0;j<c->slots[i].ncalls;j++) { - MSG_INFO("%s%p -> %s\n",j==0?"bt=>":" ",c->slots[i].calls[j],addr2line(cache,c->slots[i].calls[j])); + mpxp_info<<(j==0?"bt=>":" ")<<c->slots[i].calls[j]<<" -> "<<addr2line(cache,c->slots[i].calls[j])<<std::endl; } } } @@ -427,31 +424,31 @@ unsigned i; total=0; for(i=0;i<priv->mallocs.nslots;i++) total+=priv->mallocs.slots[i].size; - MSG_WARN("Warning! %lli slots were not freed. Totally %llu bytes was leaked\n",priv->mallocs.nslots,total); + mpxp_warn<<"Warning! "<<priv->mallocs.nslots<<" slots were not freed. Totally "<<total<<" bytes was leaked"<<std::endl; } if(verbose) { if(priv->mallocs.nslots) { - MSG_INFO("****** List of malloced but not freed pointers *******\n"); + mpxp_info<<"****** List of malloced but not freed pointers *******"<<std::endl; bt_print_slots(cache,&priv->mallocs); done=1; } if(priv->reallocs.nslots) { - MSG_INFO("\n****** List of suspect realloc() calls *******\n"); + mpxp_info<<std::endl<<"****** List of suspect realloc() calls *******"<<std::endl; bt_print_slots(cache,&priv->reallocs); done=1; } if(priv->frees.nslots) { - MSG_INFO("\n****** List of suspect free() calls *******\n"); + mpxp_info<<std::endl<<"****** List of suspect free() calls *******"<<std::endl; bt_print_slots(cache,&priv->frees); done=1; } } else { if(priv->reallocs.nslots || priv->frees.nslots) - MSG_WARN("*** Were found suspect calls of mp_realloc or mp_free ***\n" - "*** Most probably your copy of program contains viruses!!!\n"); + mpxp_warn<<"*** Were found suspect calls of mp_realloc or mp_free ***"<<std::endl; + mpxp_warn<<"*** Most probably your copy of program contains viruses!!!"<<std::endl; } } - if(done) MSG_HINT("\nFor source lines you may also print in (gdb): list *0xADDRESS\n"); + if(done) mpxp_hint<<std::endl<<"For source lines you may also print in (gdb): list *0xADDRESS"<<std::endl; uninit_bt_cache(cache); free(priv); priv=NULL; Modified: mplayerxp/osdep/osdep_msg.h =================================================================== --- mplayerxp/osdep/osdep_msg.h 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/osdep_msg.h 2012-12-22 13:51:04 UTC (rev 598) @@ -1,9 +1,6 @@ #ifndef OSDEP_MSG_H #define OSDEP_MSG_H -#ifndef MSGT_CLASS -#define MSGT_CLASS MSGT_OSDEP -#endif #include "mpxp_msg.h" namespace mpxp { Modified: mplayerxp/osdep/shmem.cpp =================================================================== --- mplayerxp/osdep/shmem.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/shmem.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -47,18 +47,18 @@ #ifdef MAP_ANON p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_ANON|MAP_SHARED,-1,0); if(p==MAP_FAILED) break; // failed - MSG_DBG2( "shmem: %d bytes allocated using mmap anon (%p)\n",size,p); + mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using mmap anon"<<std::endl; return p; #else // system does not support MAP_ANON at all (e.g. solaris 2.5.1/2.6), just fail - MSG_DBG3( "shmem: using mmap anon failed\n"); + mpxp_dbg3<<"shmem: using mmap anon failed"<<std::endl; #endif break; case 1: // ========= MAP_SHARED + /dev/zero ========== if (devzero == -1 && (devzero = open("/dev/zero", O_RDWR, 0)) == -1) break; p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,devzero,0); if(p==MAP_FAILED) break; // failed - MSG_DBG2( "shmem: %d bytes allocated using mmap /dev/zero (%p)\n",size,p); + mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using mmap /dev/zero"<<std::endl; return p; case 2: { // ========= shmget() ========== #ifdef HAVE_SHM @@ -66,24 +66,24 @@ int shmemid; if ((shmemid = shmget(IPC_PRIVATE, size, IPC_CREAT | 0600)) == -1) break; if ((p = shmat(shmemid, 0, 0)) == (any_t*)-1){ - MSG_ERR( "shmem: shmat() failed: %s\n", strerror(errno)); + mpxp_err<<"shmem: shmat() failed: "<<strerror(errno)<<std::endl; shmctl (shmemid, IPC_RMID, &shmemds); break; } if (shmctl(shmemid, IPC_RMID, &shmemds) == -1) { - MSG_ERR( "shmem: shmctl() failed: %s\n", strerror(errno)); + mpxp_err<<"shmem: shmctl() failed: "<<strerror(errno)<<std::endl; if (shmdt(p) == -1) perror ("shmdt()"); break; } - MSG_DBG2( "shmem: %d bytes allocated using SHM (%p)\n",size,p); + mpxp_dbg2<<"shmem: "<<size<<" bytes allocated using SHM"<<std::endl; return p; #else - MSG_FATAL( "shmem: no SHM support was compiled in!\n"); + mpxp_fatal<<"shmem: no SHM support was compiled in!"<<std::endl; return(NULL); #endif } default: - MSG_FATAL(MSGTR_ShMemAllocFail); + mpxp_fatal<<MSGTR_ShMemAllocFail<<std::endl; return NULL; } ++shmem_type; @@ -94,11 +94,10 @@ switch(shmem_type){ case 2: #ifdef HAVE_SHM - if (shmdt(p) == -1) - MSG_ERR( "shmfree: shmdt() failed: %s\n", - strerror(errno)); + if (shmdt(p) == -1) + mpxp_err<<"shmfree: shmdt() failed: "<<strerror(errno)<<std::endl; #else - MSG_ERR( "shmfree: no SHM support was compiled in!\n"); + mpxp_err<<"shmfree: no SHM support was compiled in!"<<std::endl; #endif break; } Modified: mplayerxp/osdep/timer-lx.cpp =================================================================== --- mplayerxp/osdep/timer-lx.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/timer-lx.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -24,31 +24,31 @@ struct timespec ts; ts.tv_sec = usec_delay / 1000000; ts.tv_nsec = (usec_delay % 1000000) * 1000; - return nanosleep(&ts, NULL); + return ::nanosleep(&ts, NULL); #else - return usleep(usec_delay); + return ::usleep(usec_delay); #endif } // Returns current time in microseconds unsigned int GetTimer(){ - struct timeval tv; - struct timezone tz; + struct timeval tv; + struct timezone tz; // float s; - gettimeofday(&tv,NULL); + ::gettimeofday(&tv,NULL); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; - return (tv.tv_sec*1000000ULL+tv.tv_usec); + return (tv.tv_sec*1000000ULL+tv.tv_usec); } // Returns current time in milliseconds unsigned int GetTimerMS(){ - struct timeval tv; - struct timezone tz; + struct timeval tv; + struct timezone tz; // float s; - gettimeofday(&tv,NULL); + ::gettimeofday(&tv,NULL); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; - return (tv.tv_sec*1000+tv.tv_usec/1000); + return (tv.tv_sec*1000+tv.tv_usec/1000); } static unsigned int RelativeTime=0; @@ -56,33 +56,33 @@ // Returns time spent between now and last call in seconds float GetRelativeTime(){ unsigned int t,r; - t=GetTimer(); - r=t-RelativeTime; - RelativeTime=t; - return (float)r * 0.000001F; + t=GetTimer(); + r=t-RelativeTime; + RelativeTime=t; + return (float)r * 0.000001F; } // Initialize timer, must be called at least once at start int InitTimer(void){ - int rtc_fd=-1; - GetRelativeTime(); + int rtc_fd=-1; + GetRelativeTime(); #ifdef HAVE_RTC - if ((rtc_fd = open("/dev/rtc", O_RDONLY)) < 0) perror ("Linux RTC init: open"); - else { + if ((rtc_fd = ::open("/dev/rtc", O_RDONLY)) < 0) perror ("Linux RTC init: open"); + else { unsigned long irqp; /* if (ioctl(rtc_fd, RTC_IRQP_SET, _) < 0) */ - if (ioctl(rtc_fd, RTC_IRQP_READ, &irqp) < 0) { - perror ("Linux RTC init: ioctl (rtc_irqp_read)"); - close (rtc_fd); - rtc_fd = -1; - } else if (ioctl(rtc_fd, RTC_PIE_ON, 0) < 0) { - /* variable only by the root */ - perror ("Linux RTC init: ioctl (rtc_pie_on)"); - close (rtc_fd); - rtc_fd = -1; + if (::ioctl(rtc_fd, RTC_IRQP_READ, &irqp) < 0) { + ::perror ("Linux RTC init: ioctl (rtc_irqp_read)"); + ::close (rtc_fd); + rtc_fd = -1; + } else if (::ioctl(rtc_fd, RTC_PIE_ON, 0) < 0) { + /* variable only by the root */ + ::perror ("Linux RTC init: ioctl (rtc_pie_on)"); + ::close (rtc_fd); + rtc_fd = -1; } else - MSG_V("Using Linux's hardware RTC timing (%ldHz)\n", irqp); + mpxp_v<<"Using Linux's hardware RTC timing ("<<irqp<<"Hz)"<<std::endl; } #endif return rtc_fd; @@ -95,8 +95,8 @@ // -------- RTC ----------- while (time_frame > 0.000) { unsigned long rtc_ts; - if (read (rtc_fd, &rtc_ts, sizeof(rtc_ts)) <= 0) - MSG_ERR( "Linux RTC read error: %s\n", strerror(errno)); + if (::read (rtc_fd, &rtc_ts, sizeof(rtc_ts)) <= 0) + mpxp_err<<"Linux RTC read error: "<<strerror(errno)<<std::endl; time_frame-=GetRelativeTime(); } } else @@ -112,7 +112,7 @@ time_frame-=GetRelativeTime(); } if(softsleep){ - if(time_frame<0) MSG_WARN( "Warning! Softsleep underflow!\n"); + if(time_frame<0) mpxp_warn<<"Warning! Softsleep underflow!"<<std::endl; while(time_frame>0) time_frame-=GetRelativeTime(); // burn the CPU } } Modified: mplayerxp/osdep/vbelib.cpp =================================================================== --- mplayerxp/osdep/vbelib.cpp 2012-12-22 12:47:25 UTC (rev 597) +++ mplayerxp/osdep/vbelib.cpp 2012-12-22 13:51:04 UTC (rev 598) @@ -65,14 +65,25 @@ static void __dump_regs(struct LRMI_regs *r) { - MSG_DBG2("vbelib: eax=%08lXh ebx=%08lXh ecx=%08lXh edx=%08lXh\n" - "vbelib: edi=%08lXh esi=%08lXh ebp=%08lXh esp=%08lXh\n" - "vbelib: ds=%04Xh es=%04Xh ss=%04Xh cs:ip=%04X:%04X\n" - "vbelib: fs=%04Xh gs=%04Xh ss:sp=%04X:%04X flags=%04X\n" - ,(unsigned long)r->eax,(unsigned long)r->ebx,(unsigned long)r->ecx,(unsigned long)r->edx - ,(unsigned long)r->edi,(unsigned long)r->esi,(unsigned long)r->ebp,(unsigned long)r->reserved - ,r->ds,r->es,r->ss,r->cs,r->ip - ,r->fs,r->gs,r->ss,r->sp,r->flags); + mpxp_dbg2<<"vbelib:" + <<"eax="<<std::hex<<(unsigned long)r->eax + <<"ebx="<<std::hex<<(unsigned long)r->ebx + <<"ecx="<<std::hex<<(unsigned long)r->ecx + <<"edx="<<std::hex<<(unsigned long)r->edx<<std::endl; + mpxp_dbg2<<"vbelib:" + <<"edi="<<std::hex<<(unsigned long)r->edi + <<"esi="<<std::hex<<(unsigned long)r->esi + <<"ebp="<<std::hex<<(unsigned long)r->ebp + <<"esp="<<std::hex<<(unsigned long)r->reserved<<std::endl; + mpxp_dbg2<<"vbelib:" + <<"ds="<<r->ds + <<"es="<<r->es + <<"ss="<<r->ss + <<"fs="<<r->fs + <<"gs="<<r->gs + <<"cs="<<r->cs<<":ip="<<r->ip + <<"ss="<<r->ss<<":sp="<<r->sp + <<"flags="<<r->flags<<std::endl; } static inline int VBE_LRMI_int(int int_no, struct LRMI_regs *r) @@ -80,16 +91,14 @@ int retval; if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: registers before int %02X\n",int_no); + mpxp_dbg2<<"vbelib: registers before int "<<std::hex<<int_no<<std::endl; __dump_regs(r); } retval = LRMI_int(int_no,r); if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: Interrupt handler returns: %X\n" - "vbelib: registers after int %02X\n" - ,retval - ,int_no); + mpxp_dbg2<<"vbelib: Interrupt handler returns: "<<std::hex<<retval<<std::endl; + mpxp_dbg2<<"vbelib: registers after int "<<std::hex<<int_no<<std::endl; __dump_regs(r); } return retval; @@ -223,20 +232,19 @@ { size_t i; fflush(stdout); - MSG_V("vbelib: "); - for(i = 0;i < 256;i++) { MSG_V("%02X(%c) ",str[i],isprint(str[i])?str[i]:'.'); if(!str[i]) break; } - MSG_V("\n"); - fflush(stdout); + mpxp_v<<"vbelib: "; + for(i = 0;i < 256;i++) { mpxp_v<<std::hex<<str[i]<<"("<<str[i]<<")"; if(!str[i]) break; } + mpxp_v<<std::endl; + mpxp_v.flush(); } static void print_wrd(unsigned short *str) { size_t i; - fflush(stdout); - MSG_V("vbelib: "); - for(i = 0;i < 256;i++) { MSG_V("%04X ",str[i]); if(str[i] == 0xffff) break; } - MSG_V("\n"); - fflush(stdout); + mpxp_v<<"vbelib: "; + for(i = 0;i < 256;i++) { mpxp_v<<std::hex<<str[i]; if(str[i] == 0xffff) break; } + mpxp_v<<std::endl; + mpxp_v.flush(); } int vbeGetControllerInfo(struct VbeInfoBlock *data) @@ -262,7 +270,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: OemStringPtr=%04X:%04X => %p\n",fpdata.seg,fpdata.off,data->OemStringPtr); + mpxp_dbg2<<"vbelib: OemStringPtr="<<std::hex<<fpdata.seg<<":"<<std::hex<<fpdata.off<<" => "<<data->OemStringPtr<<std::endl; if(data->OemStringPtr) print_str(data->OemStringPtr); fflush(stdout); } @@ -278,7 +286,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: VideoModePtr=%04X:%04X => %p\n",fpdata.seg,fpdata.off,data->VideoModePtr); + mpxp_dbg2<<"vbelib: VideoModePtr="<<std::hex<<fpdata.seg<<":"<<std::hex<<fpdata.off<<" => "<<data->VideoModePtr<<std::endl; if(data->VideoModePtr) print_wrd(data->VideoModePtr); fflush(stdout); } @@ -290,7 +298,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: OemVendorNamePtr=%04X:%04X => %p\n",fpdata.seg,fpdata.off,data->OemVendorNamePtr); + mpxp_dbg2<<"vbelib: OemVendorNamePtr="<<std::hex<<fpdata.seg<<":"<<std::hex<<fpdata.off<<" => "<<data->OemVendorNamePtr<<std::endl; if(data->OemVendorNamePtr) print_str(data->OemVendorNamePtr); fflush(stdout); } @@ -302,7 +310,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: OemProductNamePtr=%04X:%04X => %p\n",fpdata.seg,fpdata.off,data->OemProductNamePtr); + mpxp_dbg2<<"vbelib: OemProductNamePtr="<<std::hex<<fpdata.seg<<":"<<std::hex<<fpdata.off<<" => "<<data->OemProductNamePtr<<std::endl; if(data->OemVendorNamePtr) print_str(data->OemProductNamePtr); fflush(stdout); } @@ -314,7 +322,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: OemProductRevPtr=%04X:%04X => %p\n",fpdata.seg,fpdata.off,data->OemProductRevPtr); + mpxp_dbg2<<"vbelib: OemProductRevPtr="<<std::hex<<fpdata.seg<<":"<<std::hex<<fpdata.off<<" => "<<data->OemProductRevPtr<<std::endl; if(data->OemProductRevPtr) print_str(data->OemProductRevPtr); fflush(stdout); } @@ -656,17 +664,17 @@ pm_info->SetWindowCall = (void (*)())PhysToVirtSO(r.es,info_offset+rm_info->SetWindowCall); if(!is_addr_valid(reinterpret_cast<any_t*>(pm_info->SetWindowCall))) retval = VBE_BROKEN_BIOS; #ifdef HAVE_VERBOSE_VAR - MSG_DBG2("vbelib: SetWindowCall=%04X:%04X => %p\n",r.es,info_offset+rm_info->SetWindowCall,pm_info->SetWindowCall); + mpxp_dbg2<<"vbelib: SetWindowCall="<<std::hex<<r.es<<":"<<std::hex<<(info_offset+rm_info->SetWindowCall)<<" => "<<pm_info->SetWindowCall<<std::endl; #endif pm_info->SetDisplayStart = (void(*)())PhysToVirtSO(r.es,info_offset+rm_info->SetDisplayStart); if(!is_addr_valid(reinterpret_cast<any_t*>(pm_info->SetDisplayStart))) retval = VBE_BROKEN_BIOS; #ifdef HAVE_VERBOSE_VAR - MSG_DBG2("vbelib: SetDisplayStart=%04X:%04X => %p\n",r.es,info_offset+rm_info->SetDisplayStart,pm_info->SetDisplayStart); + mpxp_dbg2<<"vbelib: SetDisplayStart="<<std::hex<<r.es<<":"<<std::hex<<(info_offset+rm_info->SetDisplayStart)<<" => "<<pm_info->SetDisplayStart<<std::endl; #endif pm_info->SetPaletteData = (void(*)())PhysToVirtSO(r.es,info_offset+rm_info->SetPaletteData); if(!is_addr_valid(reinterpret_cast<any_t*>(pm_info->SetPaletteData))) retval = VBE_BROKEN_BIOS; #ifdef HAVE_VERBOSE_VAR - MSG_DBG2("vbelib: SetPaletteData=%04X:%04X => %p\n",r.es,info_offset+rm_info->SetPaletteData,pm_info->SetPaletteData); + mpxp_dbg2<<"vbelib: SetPaletteData="<<std::hex<<r.es<<":"<<std::hex<<(info_offset+rm_info->SetPaletteData)<<" => "<<pm_info->SetPaletteData<<std::endl; #endif pm_info->iopl_ports = (unsigned short*)PhysToVirtSO(r.es,info_offset+rm_info->iopl_ports); if(!rm_info->iopl_ports) pm_info->iopl_ports = NULL; @@ -679,7 +687,7 @@ #ifdef HAVE_VERBOSE_VAR if(mp_conf.verbose > 1) { - MSG_DBG2("vbelib: iopl_ports=%04X:%04X => %p\n",r.es,info_offset+rm_info->iopl_ports,pm_info->iopl_ports); + mpxp_dbg2<<"vbelib: iopl_ports="<<std::hex<<r.es<<":"<<std::hex<<(info_offset+rm_info->iopl_ports)<<" => "<<pm_info->iopl_ports<<std::endl; if(pm_info->iopl_ports) print_wrd(pm_info->iopl_ports); fflush(stdout); } @@ -714,7 +722,7 @@ { any_t*lfb; if(fd_mem == -1) return NULL; - MSG_DBG2("vbelib: vbeMapVideoBuffer(%08lX,%08lX)\n",phys_addr,size); + mpxp_dbg2<<"vbelib: vbeMapVideoBuffer("<<std::hex<<phys_addr<<","<<std::hex<<size<<")"<<std::endl; /* Here we don't need with MAP_FIXED and prefered address (first argument) */ lfb = mmap((any_t*)0,size,PROT_READ | PROT_WRITE,MAP_SHARED,fd_mem,phys_addr); return lfb == (any_t*)-1 ? 0 : lfb; @@ -722,7 +730,7 @@ void vbeUnmapVideoBuffer(unsigned long linear_addr,unsigned long size) { - MSG_DBG2("vbelib: vbeUnmapVideoBuffer(%08lX,%08lX)\n",linear_addr,size); + mpxp_dbg2<<"vbelib: vbeUnmapVideoBuffer("<<std::hex<<linear_addr<<","<<std::hex<<size<<")"<<std::endl; munmap((any_t*)linear_addr,size); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-22 12:47:35
|
Revision: 597 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=597&view=rev Author: nickols_k Date: 2012-12-22 12:47:25 +0000 (Sat, 22 Dec 2012) Log Message: ----------- memory leaks-- Modified Paths: -------------- mplayerxp/input2/input.cpp mplayerxp/libvo2/font_load.cpp mplayerxp/loader/registry.c mplayerxp/mplayerxp.cpp mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h mplayerxp/osdep/get_path.cpp mplayerxp/osdep/get_path.h mplayerxp/postproc/af_export.cpp mplayerxp/postproc/af_raw.cpp Modified: mplayerxp/input2/input.cpp =================================================================== --- mplayerxp/input2/input.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/input2/input.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -1127,7 +1127,7 @@ #define BS_MAX 256 #define SPACE_CHAR " \n\r\t" -static int mp_input_parse_config(libinput_t& priv,const char *file) { +static int mp_input_parse_config(libinput_t& priv,const std::string& file) { int fd; int bs = 0,r,eof = 0,comments = 0; char *iter,*end; @@ -1135,7 +1135,7 @@ int n_binds = 0, keys[MP_MAX_KEY_DOWN+1] = { 0 }; mp_cmd_bind_t* binds = NULL; - fd = open(file,O_RDONLY); + fd = ::open(file.c_str(),O_RDONLY); if(fd < 0) { mpxp_err<<"Can't open input config file "<<file<<" : "<<strerror(errno)<<std::endl; @@ -1266,14 +1266,14 @@ } static void mp_input_init(libinput_t& priv) { - const char* file; + std::string file; file = config_file[0] != '/' ? get_path(config_file) : config_file; - if(!file) return; + if(file.empty()) return; if(! mp_input_parse_config(priv,file)) { // Try global conf dir - file = CONFDIR "/input.conf"; + file = std::string(CONFDIR)+"/input.conf"; if(! mp_input_parse_config(priv,file)) mpxp_warn<<"Falling back on default (hardcoded) input config"<<std::endl; } #ifdef HAVE_JOYSTICK Modified: mplayerxp/libvo2/font_load.cpp =================================================================== --- mplayerxp/libvo2/font_load.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/libvo2/font_load.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -10,7 +10,6 @@ #include <unistd.h> #include "font_load.h" #include "sub.h" -#include "osdep/get_path.h" #include "vo_msg.h" raw_file* load_raw(const char *name,int verbose){ @@ -72,9 +71,6 @@ desc->fpath = dn; // search in the same dir as fonts.desc - // desc->fpath=get_path("font/"); - // if (stat(desc->fpath, &fstate)!=0) desc->fpath=DATADIR"/font"; - // set up some defaults, and erase table desc->charspace=2; desc->spacewidth=12; desc->height=0; Modified: mplayerxp/loader/registry.c =================================================================== --- mplayerxp/loader/registry.c 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/loader/registry.c 2012-12-22 12:47:25 UTC (rev 597) @@ -23,8 +23,27 @@ //#undef TRACE //#define TRACE printf -extern char *get_path ( char * ); +static char *get_path(const char *filename){ + char *homedir; + char *buff; + static const char *config_dir = "/."PROGNAME; + int len; + if ((homedir = getenv("HOME")) == NULL) + return NULL; + len = strlen(homedir) + strlen(config_dir) + 1; + if (filename == NULL) { + if ((buff = (char *) mp_malloc(len)) == NULL) + return NULL; + sprintf(buff, "%s%s", homedir, config_dir); + } else { + len += strlen(filename) + 1; + if ((buff = (char *) mp_malloc(len)) == NULL) + return NULL; + sprintf(buff, "%s%s/%s", homedir, config_dir, filename); + } + return buff; +} // ...can be set before init_registry() call char* regpathname = NULL; Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/mplayerxp.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -426,26 +426,23 @@ void parse_cfgfiles( m_config_t& conf ) { - char *conffile; + std::string conffile; int conffile_fd; - if ((conffile = get_path("")) == NULL) { - mpxp_warn<<MSGTR_NoHomeDir<<std::endl; - } else { - mkdir(conffile, 0777); - delete conffile; - if ((conffile = get_path("config")) == NULL) { + conffile = get_path(); + if (conffile.empty()) mpxp_warn<<MSGTR_NoHomeDir<<std::endl; + else { + ::mkdir(conffile.c_str(), 0777); + conffile = get_path("config"); + if (conffile.empty()) { mpxp_err<<MSGTR_GetpathProblem<<std::endl; - conffile=(char*)mp_malloc(strlen("config")+1); - if(conffile) - strcpy(conffile,"config"); + conffile="config"; } - if ((conffile_fd = open(conffile, O_CREAT | O_EXCL | O_WRONLY, 0666)) != -1) { + if ((conffile_fd = ::open(conffile.c_str(), O_CREAT | O_EXCL | O_WRONLY, 0666)) != -1) { mpxp_info<<MSGTR_CreatingCfgFile<<": "<<conffile<<std::endl; ::write(conffile_fd, default_config, strlen(default_config)); ::close(conffile_fd); } - if (m_config_parse_config_file(conf, conffile) != MPXP_Ok) exit(1); - delete conffile; + if (m_config_parse_config_file(conf, conffile.c_str()) != MPXP_Ok) exit(1); } } @@ -568,7 +565,7 @@ #ifdef ENABLE_WIN32LOADER /* check codec.conf*/ - if(!parse_codec_cfg(get_path("win32codecs.conf"))) { + if(!parse_codec_cfg(get_path("win32codecs.conf").c_str())) { if(!parse_codec_cfg(CONFDIR"/win32codecs.conf")) { mpxp_hint<<MSGTR_CopyCodecsConf<<std::endl; mpxp_uninit_structs(); @@ -614,7 +611,7 @@ afm_help(); #ifdef ENABLE_WIN32LOADER /* check codec.conf*/ - if(!parse_codec_cfg(get_path("win32codecs.conf"))){ + if(!parse_codec_cfg(get_path("win32codecs.conf").c_str())){ if(!parse_codec_cfg(CONFDIR"/win32codecs.conf")){ mpxp_hint<<MSGTR_CopyCodecsConf<<std::endl; mpxp_uninit_structs(); @@ -842,20 +839,20 @@ mpxp_err<<MSGTR_CantLoadFont<<": "<<mp_conf.font_name<<std::endl; } else { // try default: - mpxp_context().video().output->font=read_font_desc(get_path("font/font.desc"),mp_conf.font_factor,mp_conf.verbose>1); + mpxp_context().video().output->font=read_font_desc(get_path("font/font.desc").c_str(),mp_conf.font_factor,mp_conf.verbose>1); if(!mpxp_context().video().output->font) mpxp_context().video().output->font=read_font_desc(DATADIR"/font/font.desc",mp_conf.font_factor,mp_conf.verbose>1); } #endif /* Configure menu here */ { - const char *menu_cfg; + std::string menu_cfg; menu_cfg = get_path("menu.conf"); - if(menu_init(NULL, menu_cfg)) + if(menu_init(NULL, menu_cfg.c_str())) mpxp_info<<"Menu initialized: "<<menu_cfg<<std::endl; else { menu_cfg="/etc/menu.conf"; - if(menu_init(NULL, menu_cfg)) + if(menu_init(NULL, menu_cfg.c_str())) mpxp_info<<"Menu initialized: "<<menu_cfg<<std::endl; else mpxp_warn<<"Menu init failed"<<std::endl; @@ -1074,7 +1071,7 @@ mpxp_context().subtitles=sub_read_file(mp_conf.sub_name, sh_video->fps); if(!mpxp_context().subtitles) mpxp_err<<MSGTR_CantLoadSub<<": "<<mp_conf.sub_name<<std::endl; } else if(mp_conf.sub_auto) { // auto load sub file ... - mpxp_context().subtitles=sub_read_file( filename ? sub_filename( get_path("sub/"), filename ) + mpxp_context().subtitles=sub_read_file( filename ? sub_filename(get_path("sub/").c_str(), filename ) : "default.sub", sh_video->fps ); } if(mpxp_context().subtitles) { Modified: mplayerxp/nls/mpxp_help-en.h =================================================================== --- mplayerxp/nls/mpxp_help-en.h 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/nls/mpxp_help-en.h 2012-12-22 12:47:25 UTC (rev 597) @@ -100,7 +100,7 @@ #define MSGTR_IntBySignal "\nMPlayerXP interrupted by signal %d in module: %s \n" #endif #ifndef MSGTR_GetpathProblem -#define MSGTR_GetpathProblem "get_path(\"config\") problem\n" +#define MSGTR_GetpathProblem "get_path(\"config\") problem" #endif #ifndef MSGTR_CreatingCfgFile #define MSGTR_CreatingCfgFile "Creating config file" Modified: mplayerxp/nls/mpxp_help-ru.h =================================================================== --- mplayerxp/nls/mpxp_help-ru.h 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/nls/mpxp_help-ru.h 2012-12-22 12:47:25 UTC (rev 597) @@ -76,7 +76,7 @@ #define MSGTR_Playing "Воспроизведение" #define MSGTR_IntBySignal "\nMPlayerXP прерван сигналом %d в модуле: %s \n" -#define MSGTR_GetpathProblem "проблемы в get_path(\"config\")\n" +#define MSGTR_GetpathProblem "проблемы в get_path(\"config\")" #define MSGTR_CreatingCfgFile "Создание файла конфигурации" #define MSGTR_InvalidVOdriver "Недопустимое имя драйвера видео вывода" #define MSGTR_InvalidAOdriver "Недопустимое имя драйвера аудио вывода" Modified: mplayerxp/osdep/get_path.cpp =================================================================== --- mplayerxp/osdep/get_path.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/osdep/get_path.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -8,26 +8,15 @@ #include <string.h> #include "osdep_msg.h" namespace mpxp { -char *get_path(const char *filename){ - char *homedir; - char *buff; - static const char *config_dir = "/."PROGNAME; - int len; +std::string get_path(const std::string& filename){ + char *homedir; + std::string rs; + std::string config_dir = std::string("/.")+PROGNAME; - if ((homedir = getenv("HOME")) == NULL) - return NULL; - len = strlen(homedir) + strlen(config_dir) + 1; - if (filename == NULL) { - if ((buff = (char *) mp_malloc(len)) == NULL) - return NULL; - sprintf(buff, "%s%s", homedir, config_dir); - } else { - len += strlen(filename) + 1; - if ((buff = (char *) mp_malloc(len)) == NULL) - return NULL; - sprintf(buff, "%s%s/%s", homedir, config_dir, filename); - } - MSG_V("get_path('%s') -> '%s'\n",filename,buff); - return buff; + if ((homedir = ::getenv("HOME")) == NULL) return ""; + rs=std::string(homedir)+config_dir; + if (!filename.empty()) rs+="/"+filename; + mpxp_v<<"get_path('"<<filename<<"') -> "<<rs<<std::endl; + return rs; } }// namespace mpxp Modified: mplayerxp/osdep/get_path.h =================================================================== --- mplayerxp/osdep/get_path.h 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/osdep/get_path.h 2012-12-22 12:47:25 UTC (rev 597) @@ -1,7 +1,8 @@ #ifndef __MPXP_GET_PATH #define __MPXP_GET_PATH 1 +#include <string> namespace mpxp { - char *get_path(const char *filename); + std::string get_path(const std::string& filename=""); } #endif Modified: mplayerxp/postproc/af_export.cpp =================================================================== --- mplayerxp/postproc/af_export.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/postproc/af_export.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -26,8 +26,8 @@ #include "af.h" #include "af_internal.h" #include "mpxp_help.h" -#include "osdep/get_path.h" #include "osdep/fastmemcpy.h" +#include "osdep/get_path.h" #include "pp_msg.h" #define DEF_SZ 512 // default buffer size (in samples) @@ -41,11 +41,11 @@ { unsigned long long count; // Used for sync uint8_t* buf[AF_NCH]; // Buffers for storing the data before it is exported - int sz; // Size of buffer in samples - int wi; // Write index - int fd; // File descriptor to shared memory area - char* filename; // File to export data - any_t* mmap_area; // MMap shared area + int sz; // Size of buffer in samples + int wi; // Write index + int fd; // File descriptor to shared memory area + std::string filename; // File to export data + any_t* mmap_area; // MMap shared area }; /* Initialization and runtime control_af @@ -81,17 +81,15 @@ // Allocate new buffers (as one continuous block) s->buf[0] = new(zeromem) uint8_t[s->sz*af->conf.nch*af->conf.format&MPAF_BPS_MASK]; - if(NULL == s->buf[0]) - MSG_FATAL(MSGTR_OutOfMemory); + if(NULL == s->buf[0]) mpxp_fatal<<MSGTR_OutOfMemory<<std::endl; for(i = 1; i < af->conf.nch; i++) s->buf[i] = s->buf[0] + i*s->sz*(af->conf.format&MPAF_BPS_MASK); // Init memory mapping - s->fd = open(s->filename, O_RDWR | O_CREAT | O_TRUNC, 0640); - MSG_INFO( "[export] Exporting to file: %s\n", s->filename); + s->fd = open(s->filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0640); + mpxp_info<<"[export] Exporting to file: "<<s->filename<<std::endl; if(s->fd < 0) - MSG_FATAL( "[export] Could not open/create file: %s\n", - s->filename); + mpxp_fatal<<"[export] Could not open/create file: "<<s->filename<<std::endl; // header + buffer mapsize = (SIZE_HEADER + ((af->conf.format&MPAF_BPS_MASK) * s->sz * af->conf.nch)); @@ -105,9 +103,8 @@ // mmap size s->mmap_area = mmap(0, mapsize, PROT_READ|PROT_WRITE,MAP_SHARED, s->fd, 0); if(s->mmap_area == NULL) - MSG_FATAL( "[export] Could not mmap file %s\n", s->filename); - MSG_INFO( "[export] Memory mapped to file: %s (%p)\n", - s->filename, s->mmap_area); + mpxp_fatal<<"[export] Could not mmap file "<<s->filename<<std::endl; + mpxp_info<<"[export] Memory mapped to file: "<<s->filename<<std::endl; // Initialize header *((int*)s->mmap_area) = af->conf.nch; @@ -127,9 +124,6 @@ char *str = reinterpret_cast<char*>(arg); if (!str){ - if(s->filename) - delete s->filename; - s->filename = get_path(SHARED_FILE); return MPXP_Ok; } @@ -137,13 +131,7 @@ while((str[i]) && (str[i] != ':')) i++; - if(s->filename) - delete s->filename; - - s->filename = new(zeromem) char[i + 1]; - memcpy(s->filename, str, i); - s->filename[i] = 0; - + s->filename.assign(str, i); sscanf(str + i + 1, "%d", &(s->sz)); return af->control_af(af, AF_CONTROL_EXPORT_SZ | AF_CONTROL_SET, &s->sz); @@ -151,8 +139,7 @@ case AF_CONTROL_EXPORT_SZ | AF_CONTROL_SET: s->sz = * (int *) arg; if((s->sz <= 0) || (s->sz > 2048)) - MSG_ERR( "[export] Buffer size must be between" - " 1 and 2048\n" ); + mpxp_err<<"[export] Buffer size must be between 1 and 2048"<<std::endl; return MPXP_Ok; case AF_CONTROL_EXPORT_SZ | AF_CONTROL_GET: @@ -180,9 +167,6 @@ if(s->fd > -1) close(s->fd); - if(s->filename) - delete s->filename; - delete s; af->setup = NULL; } Modified: mplayerxp/postproc/af_raw.cpp =================================================================== --- mplayerxp/postproc/af_raw.cpp 2012-12-22 12:17:38 UTC (rev 596) +++ mplayerxp/postproc/af_raw.cpp 2012-12-22 12:47:25 UTC (rev 597) @@ -20,7 +20,6 @@ #include "af.h" #include "af_internal.h" #include "mpxp_help.h" -#include "osdep/get_path.h" #include "pp_msg.h" #define WAV_ID_RIFF 0x46464952 /* "RIFF" */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-22 12:17:50
|
Revision: 596 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=596&view=rev Author: nickols_k Date: 2012-12-22 12:17:38 +0000 (Sat, 22 Dec 2012) Log Message: ----------- fixed http [301,302] redirect Modified Paths: -------------- mplayerxp/libmpstream2/network.cpp Modified: mplayerxp/libmpstream2/network.cpp =================================================================== --- mplayerxp/libmpstream2/network.cpp 2012-12-22 12:15:42 UTC (rev 595) +++ mplayerxp/libmpstream2/network.cpp 2012-12-22 12:17:38 UTC (rev 596) @@ -305,7 +305,7 @@ if( next_url!=NULL ) { url.redirect(next_url); if (url.protocol2lower()=="mms") goto err_out; - if (url.protocol2lower()=="http") { + if (url.protocol2lower()!="http") { mpxp_warn<<"Unsupported http "<<http_hdr->get_status()<<" redirect to "<<url.protocol()<<" protocol"<<std::endl; goto err_out; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-22 12:15:57
|
Revision: 595 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=595&view=rev Author: nickols_k Date: 2012-12-22 12:15:42 +0000 (Sat, 22 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output Modified Paths: -------------- mplayerxp/libmpstream2/cache2.cpp mplayerxp/libmpstream2/cdda.cpp mplayerxp/libmpstream2/cddb.cpp mplayerxp/libmpstream2/cookies.cpp mplayerxp/libmpstream2/http.cpp mplayerxp/libmpstream2/librtsp/rtsp.cpp mplayerxp/libmpstream2/librtsp/rtsp_rtp.cpp mplayerxp/libmpstream2/librtsp/rtsp_session.cpp mplayerxp/libmpstream2/mrl.cpp mplayerxp/libmpstream2/network.cpp mplayerxp/libmpstream2/network_asf.cpp mplayerxp/libmpstream2/network_asf_mmst.cpp mplayerxp/libmpstream2/network_nop.cpp mplayerxp/libmpstream2/pnm.cpp mplayerxp/libmpstream2/realrtsp/asmrp.cpp mplayerxp/libmpstream2/realrtsp/real.cpp mplayerxp/libmpstream2/realrtsp/rmff.cpp mplayerxp/libmpstream2/realrtsp/sdpplin.cpp mplayerxp/libmpstream2/rtp_cache.cpp mplayerxp/libmpstream2/stream_msg.h mplayerxp/libmpstream2/tcp.cpp mplayerxp/libmpstream2/tvi/tvi_bsdbt848.cpp mplayerxp/libmpstream2/tvi/tvi_v4l.cpp mplayerxp/libmpstream2/udp.cpp mplayerxp/libmpstream2/url.cpp mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h Modified: mplayerxp/libmpstream2/cache2.cpp =================================================================== --- mplayerxp/libmpstream2/cache2.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/cache2.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -84,7 +84,7 @@ inline void COREDUMP() {} #endif -inline void C2_ASSERT(int cond) { if(cond) MSG_FATAL("internal error at cache2.c: (%i)\n",cond); } +inline void C2_ASSERT(int cond) { if(cond) mpxp_fatal<<"internal error at cache2.c: "<<cond<<std::endl; } static int __FASTCALL__ c2_cache_fill(cache_vars_t* c){ int len,in_cache,legacy_eof,seek_eof; @@ -99,16 +99,17 @@ seek_eof=0; if(!in_cache && c->stream->type()&Stream::Type_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)); + mpxp_dbg2<<"Out of boundaries... seeking to "<<new_start + <<" {in_cache("<<in_cache<<") " + <<START_FILEPOS(*c)<<"<"<<readpos<<">"<<END_FILEPOS(*c)<<"}"<<std::endl; if(c->stream->eof() || c->eof) c->stream->reset(); c->stream->seek(new_start); - if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } + if(errno) { mpxp_warn<<"c2_seek(drv:"<<c->stream->driver_info->mrl<<") error: "<<strerror(errno)<<std::endl; errno=0; } if((c->packets[c->first].filepos=c->stream->tell())<0) seek_eof=1; c->last=c->first; 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)); + mpxp_warn<<"CACHE2: found wrong offset after seeking "<<c->packets[c->first].filepos<<" (wanted: "<<new_start<<")"<<std::endl; + mpxp_dbg2<<"Seek done. new pos: "<<START_FILEPOS(*c)<<std::endl; } else { /* find new start of buffer according on readpos */ cidx=c->first; @@ -117,12 +118,12 @@ && !c->packets[cidx].sp.type) break; cidx=CP_NEXT(*c,cidx); }while(cidx!=c->first); - MSG_DBG2("CACHE2: Assigning first as %p for %lli\n",c->first,START_FILEPOS(*c)); + mpxp_dbg2<<"CACHE2: Assigning first as "<<reinterpret_cast<any_t*>(c->first)<<" for "<<START_FILEPOS(*c)<<std::endl; c->first=cidx; } CACHE2_TUNLOCK(*c); if(CP_NEXT(*c,c->last) == c->first || c->eof) { - MSG_DBG2("CACHE2: cache full\n"); + mpxp_dbg2<<"CACHE2: cache full"<<std::endl; return 0; /* cache full */ } len=0; @@ -136,24 +137,24 @@ c->packets[cidx].sp.len=c->sector_size; c->packets[cidx].filepos = c->stream->tell(); c->stream->read(c->packets[cidx].sp.buf,c->packets[cidx].sp.len); - 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); + mpxp_dbg2<<"CACHE2: read_packet at "<<c->packets[cidx].filepos<<" (wanted "<<c->sector_size<<" got "<<c->packets[cidx].sp.len<<" type "<<c->packets[cidx].sp.type<<")"; if(mp_conf.verbose>1) if(c->packets[cidx].sp.len>8) { int i; for(i=0;i<8;i++) - MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); + mpxp_dbg2<<std::hex<<(unsigned)(unsigned char)c->packets[cidx].sp.buf[i]<<" "; } - MSG_DBG2("\n"); + mpxp_dbg2<<std::endl; if(c->stream->ctrl(SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; else legacy_eof=0; if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { /* EOF */ - MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(*c),END_FILEPOS(*c)); + mpxp_dbg2<<"CACHE2: guess EOF: "<<START_FILEPOS(*c)<<" "<<END_FILEPOS(*c)<<std::endl; c->packets[cidx].state|=CPF_EOF; 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_info->mrl,strerror(errno)); errno=0; } + if(errno) { mpxp_warn<<"c2_fill_buffer(drv:"<<c->stream->driver_info->mrl<<") error: "<<strerror(errno)<<std::endl; errno=0; } CACHE2_PACKET_TUNLOCK(c->packets[cidx]); break; } @@ -163,15 +164,15 @@ c->packets[cidx].state&=~CPF_DONE; CACHE2_PACKET_TUNLOCK(c->packets[cidx]); cidx=CP_NEXT(*c,cidx); - MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(*c),END_FILEPOS(*c)); + mpxp_dbg2<<"CACHE2: start="<<START_FILEPOS(*c)<<" end_filepos = "<<END_FILEPOS(*c)<<std::endl; if(cidx==c->first) { - MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); + mpxp_dbg2<<"CACHE2: end of queue is reached: "<<reinterpret_cast<any_t*>(c->first)<<std::endl; break; } CACHE2_TUNLOCK(*c); } c->in_fill=0; - MSG_DBG2("CACHE2: totally got %u bytes\n",len); + mpxp_dbg2<<"CACHE2: totally got "<<len<<" bytes"<<std::endl; return len; } @@ -187,12 +188,12 @@ c->mem=new char [num*sector]; if(!c->packets || !c->mem) { - MSG_ERR(MSGTR_OutOfMemory); + mpxp_err<<MSGTR_OutOfMemory<<std::endl; delete c; return 0; } pmem = c->mem; - MSG_DBG2("For cache navigation was allocated %u bytes as %u packets (%u/%u)\n",i,num,size,sector); + mpxp_dbg2<<"For cache navigation was allocated "<<i<<" bytes as "<<num<<" packets ("<<size<<"/"<<sector<<")"<<std::endl; c->first=c->last=0; for(i=0;i<num;i++) { @@ -203,7 +204,7 @@ } if(mp_conf.verbose>1) for(i=0;i<num;i++) { - MSG_DBG2("sizeof(c)=%u c=%i c->sp.buf=%p\n",sizeof(cache_packet_t),i,c->packets[i].sp.buf); + mpxp_dbg2<<"sizeof(c)="<<sizeof(cache_packet_t)<<" c="<<i<<" c->sp.buf="<<reinterpret_cast<any_t*>(c->packets[i].sp.buf)<<std::endl; } c->buffer_size=num*sector; c->sector_size=sector; @@ -215,7 +216,7 @@ static void sig_cache2( void ) { - MSG_V("cache2 segfault\n"); + mpxp_v<<"cache2 segfault"<<std::endl; mpxp_print_flush(); xmp_killall_threads(pthread_self()); __exit_sighandler(); @@ -259,13 +260,13 @@ static int __FASTCALL__ c2_stream_fill_buffer(cache_vars_t* c) { - MSG_DBG2( "c2_stream_fill_buffer\n"); + mpxp_dbg2<<"c2_stream_fill_buffer"<<std::endl; if(c->eof) return 0; while(c->read_filepos>=END_FILEPOS(*c) || c->read_filepos<START_FILEPOS(*c)) { if(c->eof) break; usleep(READ_USLEEP_TIME); // 10ms - MSG_DBG2("Waiting for %lli in %lli %lli\n",c->read_filepos,START_FILEPOS(*c),END_FILEPOS(*c)); + mpxp_dbg2<<"Waiting for "<<c->read_filepos<<" in "<<START_FILEPOS(*c)<<" "<<END_FILEPOS(*c)<<std::endl; continue; // try again... } return c->eof?0:1; @@ -275,7 +276,7 @@ { unsigned cidx; int was_eof; - MSG_DBG2("c2_stream_reset\n"); + mpxp_dbg2<<"c2_stream_reset"<<std::endl; c->stream->reset(); cidx=c->first; was_eof=0; @@ -293,7 +294,7 @@ static int __FASTCALL__ c2_stream_seek_long(cache_vars_t* c,off_t pos){ - MSG_DBG2("CACHE2_SEEK: %lli,%lli,%lli <> %lli\n",START_FILEPOS(*c),c->read_filepos,END_FILEPOS(*c),pos); + mpxp_dbg2<<"CACHE2_SEEK: "<<START_FILEPOS(*c)<<","<<c->read_filepos<<","<<END_FILEPOS(*c)<<" <> "<<pos<<std::endl; if(pos<0/* || pos>END_FILEPOS(*c)*/) { c->eof=1; return 0; } while(c->in_fill) yield_timeslice(); CACHE2_LOCK(*c); @@ -325,7 +326,7 @@ retval=CP_NEXT(*c,retval); if(retval==c->first) { - MSG_DBG2("Can't find packet for offset %lli\n",pos); + mpxp_dbg2<<"Can't find packet for offset "<<pos<<std::endl; CACHE2_UNLOCK(*c); return UINT_MAX; } @@ -374,7 +375,7 @@ static unsigned c2_next_packet(cache_vars_t* c,unsigned cidx,int *len,unsigned *npackets) { - MSG_DBG2("next_packet: start=%p cur=%i\n",c->first,cidx); + mpxp_dbg2<<"next_packet: start="<<reinterpret_cast<any_t*>(c->first)<<" cur="<<cidx<<std::endl; while(1) { CACHE2_LOCK(*c); @@ -393,7 +394,7 @@ CACHE2_PACKET_UNLOCK(c->packets[cidx]); } c2_get_continious_mem(c,cidx,len,npackets); - MSG_DBG2("next_packet: rp: %lli fp: %lli len %lu type %i\n",c->read_filepos,c->packets[cidx].filepos,c->packets[cidx].sp.len,c->packets[cidx].sp.type); + mpxp_dbg2<<"next_packet: rp: "<<c->read_filepos<<" fp: "<<c->packets[cidx].filepos<<" len "<<c->packets[cidx].sp.len<<" type "<<c->packets[cidx].sp.type<<std::endl; return cidx; } @@ -405,7 +406,7 @@ cur=c2_wait_packet(c,c->read_filepos,&mlen,&npackets); eof = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; if(cur==UINT_MAX||eof) { if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(c->packets[cur]); return 0; } - MSG_DBG2( "c2_stream_read %i bytes from %lli\n",total,c->read_filepos); + mpxp_dbg2<<"c2_stream_read "<<total<<" bytes from "<<c->read_filepos<<std::endl; while(len){ int x; if(c->read_filepos>=c->packets[cur].filepos+mlen){ @@ -423,7 +424,7 @@ x=mlen-buf_pos; C2_ASSERT(buf_pos>=(unsigned)mlen); if(x>len) x=len; - if(!x) MSG_WARN( "c2_read: dead-lock\n"); + if(!x) mpxp_warn<<"c2_read: dead-lock"<<std::endl; memcpy(mem,&c->packets[cur].sp.buf[buf_pos],x); buf_pos+=x; mem+=x; len-=x; @@ -432,9 +433,9 @@ CACHE2_PACKET_UNLOCK(c->packets[cur]); if(mp_conf.verbose>2) { - MSG_DBG2( "c2_stream_read got %u bytes ",total); - for(i=0;i<std::min(8,total);i++) MSG_DBG2("%02X ",(int)((unsigned char)_mem[i])); - MSG_DBG2("\n"); + mpxp_dbg2<<"c2_stream_read got "<<total<<" bytes "; + for(i=0;i<std::min(8,total);i++) mpxp_dbg2<<std::hex<<(unsigned)((unsigned char)_mem[i]); + mpxp_dbg2<<std::endl; } return total; } @@ -446,7 +447,7 @@ static int __FASTCALL__ c2_stream_seek(cache_vars_t* c,off_t pos) { - MSG_DBG2( "c2_seek to %lli (%lli %lli) %i\n",(long long)pos,(long long)START_FILEPOS(*c),(long long)END_FILEPOS(*c),c->first); + mpxp_dbg2<<"c2_seek to "<<pos<<" ("<<START_FILEPOS(*c)<<" "<<END_FILEPOS(*c)<<") "<<c->first<<std::endl; if(pos>=START_FILEPOS(*c) && pos < END_FILEPOS(*c)) { c->read_filepos=pos; @@ -467,7 +468,7 @@ cur = c2_find_packet(c,c->read_filepos); if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(c->packets[cur]); retval = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; - MSG_DBG2("stream_eof: %i\n",retval); + mpxp_dbg2<<"stream_eof: "<<retval<<std::endl; return retval; } @@ -482,7 +483,7 @@ CACHE2_PACKET_UNLOCK(c->packets[cur]); } c->eof=eof; - MSG_DBG2("stream_set_eof: %i\n",eof); + mpxp_dbg2<<"stream_set_eof: "<<eof<<std::endl; } /* @@ -496,7 +497,7 @@ if (!(type()&Stream::Type_Seekable)) { // The stream has no 'fd' behind it, so is non-cacheable - MSG_WARN("\rThis stream is non-cacheable\n"); + mpxp_warn<<"\rThis stream is non-cacheable"<<std::endl; return; } @@ -512,23 +513,18 @@ if((rc=xmp_register_thread(NULL,sig_cache2,cache2_routine,"cache2"))==UINT_MAX) return; c->pth=mpxp_context().engine().xp_core->mpxp_threads[rc]; // wait until cache is filled at least prefill_init % - MSG_V("CACHE_PRE_INIT: %lld [%lld] %lld pre:%d eof:%d SS=%u \n", - START_FILEPOS(*c),c->read_filepos,END_FILEPOS(*c),_min,c->eof,ss); + mpxp_v<<"CACHE_PRE_INIT: "<<START_FILEPOS(*c)<<" ["<<c->read_filepos<<"] "<<END_FILEPOS(*c)<<" pre:"<<_min<<" eof:"<<c->eof<<" SS="<<ss<<std::endl; while((c->read_filepos<START_FILEPOS(*c) || END_FILEPOS(*c)-c->read_filepos<_min) && !c->eof && CP_NEXT(*c,c->last)!=c->first){ if(!(type()&Stream::Type_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); + mpxp_status<<"\rCache fill: "<<(100.0*(float)(END_FILEPOS(*c)-c->read_filepos)/(float)(c->buffer_size))<<"% ("<<(END_FILEPOS(*c)-c->read_filepos)<<" bytes) "; else - MSG_V("\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); + mpxp_v<<"\rCache fill: "<<(100.0*(float)(END_FILEPOS(*c)-c->read_filepos)/(float)(c->buffer_size))<<"% ("<<(END_FILEPOS(*c)-c->read_filepos)<<" bytes) "; if(c->eof) break; // file is smaller than prefill size if(mpdemux_check_interrupt(libinput,PREFILL_SLEEP_TIME)) return; } - MSG_STATUS("cache info: size=%u min=%u prefill=%u\n",size,_min,prefill); + mpxp_status<<"cache info: size="<<size<<" min="<<_min<<" prefill="<<prefill<<std::endl; return; // parent exits } Modified: mplayerxp/libmpstream2/cdda.cpp =================================================================== --- mplayerxp/libmpstream2/cdda.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/cdda.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -85,39 +85,39 @@ cd = cdio_cddap_identify(dev.c_str(),mp_conf.verbose?1:0,NULL); if(!cd) { - MSG_ERR("Can't open cdda device: %s\n",dev.c_str()); + mpxp_err<<"Can't open cdda device: "<<dev<<std::endl; return MPXP_False; } cdio_cddap_verbose_set(cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); if(cdio_cddap_open(cd) != 0) { - MSG_ERR("Can't open disc\n"); + mpxp_err<<"Can't open disc"<<std::endl; cdda_close(cd); return MPXP_False; } cd_tracks=cdio_cddap_tracks(cd); - MSG_V("Found %d tracks on disc\n",cd_tracks); + mpxp_v<<"Found "<<cd_tracks<<" tracks on disc"<<std::endl; if(!arg[0]) for(i=1;i<=cd_tracks;i++) tracks[i-1].play=1; cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); for(i=1;i<=256;i++) if (arr[i]) tracks[i-1].play=1; st_inited=0; - MSG_V("[CDDA] Queued tracks:"); + mpxp_v<<"[CDDA] Queued tracks:"; for(i=0;i<cd_tracks;i++) { if(tracks[i].play) { tracks[i].start_sector=cdio_cddap_track_firstsector(cd,i+1); tracks[i].end_sector=cdio_cddap_track_lastsector(cd,i+1); - MSG_V(" %d[%d-%d]",i+1,tracks[i].start_sector,tracks[i].end_sector); + mpxp_v<<" "<<i+1<<"["<<tracks[i].start_sector<<"-"<<tracks[i].end_sector<<"]"; if(!st_inited) { start_sector=tracks[i].start_sector; st_inited=1; } end_sector=tracks[i].end_sector; audiolen +=tracks[i].end_sector-tracks[i].start_sector+1; } } for(;i<256;i++) tracks[i].play=0; - MSG_V("\n"); + mpxp_v<<std::endl; min = (unsigned int)(audiolen/(60*75)); sec = (unsigned int)((audiolen/75)%60); msec = (unsigned int)(audiolen%75); @@ -138,12 +138,12 @@ for(i=0;i<256;i++){ if(tracks[i].play && tracks[i].end_sector==_sector) { cd_track=0; - MSG_V("Found track changing. old track=%u Sector=%u",i,_sector); + mpxp_v<<"Found track changing. old track="<<i<<" Sector="<<_sector<<std::endl; for(j=i+1;j<256;j++) { if(tracks[j].play && tracks[j].start_sector==_sector+1) { cd_track=tracks[j].start_sector; if(tr) *tr=j; - MSG_V("new track=%u Sector=%u",j,cd_track); + mpxp_v<<"new track="<<j<<" Sector="<<cd_track<<std::endl; } } } @@ -170,12 +170,12 @@ track_t i=255; if(cdio_cddap_read(cd, buf, sector, 1)==0) { - MSG_ERR("[CD-DA]: read error occured\n"); + mpxp_err<<"[CD-DA]: read error occured"<<std::endl; return -1; /* EOF */ } sector++; if(sector == end_sector) { - MSG_DBG2("EOF was reached\n"); + mpxp_dbg2<<"EOF was reached"<<std::endl; return -1; /* EOF */ } @@ -183,8 +183,8 @@ if(!sector) return -1; if(i!=255) { *tr=i+1; - MSG_V("Track %d, sector=%d\n", *tr, sector); - } else MSG_DBG2("Track %d, sector=%d\n", *tr, sector); + mpxp_v<<"Track "<<*tr<<", sector="<<sector<<std::endl; + } else mpxp_dbg2<<"Track "<<*tr<<", sector="<<sector<<std::endl; return CDIO_CD_FRAMESIZE_RAW; } @@ -194,7 +194,7 @@ track_t j=255; _sec = pos/CDIO_CD_FRAMESIZE_RAW; - MSG_DBG2("[CDDA] prepare seek to %ld\n",_sec); + mpxp_dbg2<<"[CDDA] prepare seek to "<<_sec<<std::endl; seeked_track=_sec; *tr=255; if( sector!=seeked_track ) { Modified: mplayerxp/libmpstream2/cddb.cpp =================================================================== --- mplayerxp/libmpstream2/cddb.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/cddb.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -150,21 +150,21 @@ if( reply_parser==NULL || command==NULL || cddb_data==NULL ) return -1; sprintf( request, "http://%s/~cddb/cddb.cgi?cmd=%s%s&proto=%d", cddb_data->freedb_server, command, cddb_data->cddb_hello.c_str(), cddb_data->freedb_proto_level ); - MSG_V("Request[%s]\n", request ); + mpxp_v<<"Request["<<request<<"]"<<std::endl; if(url.redirect(request)!=MPXP_Ok) { - MSG_ERR("Not valid URL: '%s'\n",request); + mpxp_err<<"Not valid URL: "<<request<<std::endl; return -1; } if(http_send_request(tcp,url,0)!=MPXP_Ok) { - MSG_ERR("failed to send the http request\n"); + mpxp_err<<"failed to send the http request"<<std::endl; return -1; } HTTP_Header* http_hdr = http_read_response( tcp ); if( http_hdr==NULL ) { - MSG_ERR("Failed to read the http response\n"); + mpxp_err<<"Failed to read the http response"<<std::endl; return -1; } @@ -175,10 +175,10 @@ ret = reply_parser(*http_hdr, cddb_data); break; case 400: - MSG_V("Not Found\n"); + mpxp_v<<"Not Found"<<std::endl; break; default: - MSG_V("Unknown Error code\n"); + mpxp_v<<"Unknown Error code"<<std::endl; } delete http_hdr; @@ -188,78 +188,74 @@ } static int __FASTCALL__ cddb_read_cache(cddb_data_t *cddb_data) { - char file_name[100]; - struct stat stats; - int file_fd, ret; - size_t file_size; + char file_name[100]; + struct stat stats; + int file_fd, ret; + size_t file_size; - if( cddb_data==NULL || cddb_data->cache_dir==NULL ) return -1; + if( cddb_data==NULL || cddb_data->cache_dir==NULL ) return -1; - sprintf( file_name, "%s%08lx", cddb_data->cache_dir, cddb_data->disc_id); + sprintf( file_name, "%s%08lx", cddb_data->cache_dir, cddb_data->disc_id); - file_fd = open(file_name, O_RDONLY); - if( file_fd<0 ) { - MSG_ERR("No cache found\n"); - return -1; - } + file_fd = ::open(file_name, O_RDONLY); + if( file_fd<0 ) { + mpxp_err<<"No cache found"<<std::endl; + return -1; + } - ret = fstat( file_fd, &stats ); - if( ret<0 ) { - perror("fstat"); - file_size = 4096; - } else { - file_size = stats.st_size; - } + ret = fstat( file_fd, &stats ); + if( ret<0 ) { + ::perror("fstat"); + file_size = 4096; + } else { + file_size = stats.st_size; + } - cddb_data->xmcd_file = new char [file_size]; - if( cddb_data->xmcd_file==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - close(file_fd); - return -1; - } - cddb_data->xmcd_file_size = read(file_fd, cddb_data->xmcd_file, file_size); - if( cddb_data->xmcd_file_size!=file_size ) { - MSG_FATAL("Not all the xmcd file has been read\n"); - close(file_fd); - return -1; - } - - close(file_fd); - - return 0; + cddb_data->xmcd_file = new char [file_size]; + if( cddb_data->xmcd_file==NULL ) { + mpxp_fatal<<"Memory allocation failed"<<std::endl; + ::close(file_fd); + return -1; + } + cddb_data->xmcd_file_size = ::read(file_fd, cddb_data->xmcd_file, file_size); + if( cddb_data->xmcd_file_size!=file_size ) { + mpxp_fatal<<"Not all the xmcd file has been read"<<std::endl; + ::close(file_fd); + return -1; + } + ::close(file_fd); + return 0; } static int __FASTCALL__ cddb_write_cache(cddb_data_t *cddb_data) { - // We have the file, save it for cache. - char file_name[100]; - int file_fd; - int wrote=0; + // We have the file, save it for cache. + char file_name[100]; + int file_fd; + int wrote=0; - if( cddb_data==NULL || cddb_data->cache_dir==NULL ) return -1; + if( cddb_data==NULL || cddb_data->cache_dir==NULL ) return -1; - sprintf( file_name, "%s%08lx", cddb_data->cache_dir, cddb_data->disc_id); + sprintf( file_name, "%s%08lx", cddb_data->cache_dir, cddb_data->disc_id); - file_fd = creat(file_name, S_IREAD|S_IWRITE); - if( file_fd<0 ) { - perror("open"); - return -1; - } + file_fd = ::creat(file_name, S_IREAD|S_IWRITE); + if( file_fd<0 ) { + ::perror("open"); + return -1; + } - wrote = write(file_fd, cddb_data->xmcd_file, cddb_data->xmcd_file_size); - if( wrote<0 ) { - MSG_ERR("write: %s",strerror(errno)); - close(file_fd); - return -1; - } - if( (unsigned)wrote!=cddb_data->xmcd_file_size ) { - MSG_FATAL("Not all the xmcd file has been written\n"); - close(file_fd); - return -1; - } - - close(file_fd); - - return 0; + wrote = ::write(file_fd, cddb_data->xmcd_file, cddb_data->xmcd_file_size); + if( wrote<0 ) { + mpxp_err<<"write: "<<strerror(errno)<<std::endl; + ::close(file_fd); + return -1; + } + if( (unsigned)wrote!=cddb_data->xmcd_file_size ) { + mpxp_fatal<<"Not all the xmcd file has been written"<<std::endl; + ::close(file_fd); + return -1; + } + ::close(file_fd); + return 0; } static int cddb_read_parse(HTTP_Header& http_hdr, cddb_data_t *cddb_data) { @@ -272,7 +268,7 @@ ret = sscanf(http_hdr.get_body(), "%d ", &status); if( ret!=1 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } @@ -280,13 +276,13 @@ case 210: ret = sscanf(http_hdr.get_body(), "%d %s %08lx", &status, category, &disc_id); if( ret!=3 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } // Check if it's a xmcd database file ptr = strstr(const_cast<char*>(http_hdr.get_body()), "# xmcd"); if( ptr==NULL ) { - MSG_ERR("Invalid xmcd database file returned\n"); + mpxp_err<<"Invalid xmcd database file returned"<<std::endl; return -1; } // Ok found the beginning of the file @@ -295,14 +291,14 @@ if( ptr2==NULL ) { ptr2 = strstr(ptr, "\n.\n"); if( ptr2==NULL ) { - MSG_ERR("Unable to find '.'\n"); + mpxp_err<<"Unable to find '.'"<<std::endl; return -1; } } // Ok found the end // do a sanity check if( http_hdr.get_body_size()<(unsigned long)(ptr2-ptr) ) { - MSG_ERR("Unexpected fix me\n"); + mpxp_err<<"Unexpected fix me"<<std::endl; return -1; } cddb_data->xmcd_file = ptr; @@ -312,7 +308,7 @@ http_hdr.erase_body(); return cddb_write_cache(cddb_data); default: - MSG_ERR("Unhandled code\n"); + mpxp_err<<"Unhandled code"<<std::endl; } return 0; } @@ -330,7 +326,7 @@ ret = sscanf(http_hdr.get_body(), "%d ", &status); if( ret!=1 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } @@ -339,7 +335,7 @@ // Found exact match ret = sscanf(http_hdr.get_body(), "%d %s %08lx %s", &status, cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); if( ret!=4 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } ptr = strstr(const_cast<char*>(http_hdr.get_body()), album_title); @@ -355,17 +351,17 @@ strncpy(album_title, ptr, len); album_title[len-2]='\0'; } - MSG_V("Parse OK, found: %s\n", album_title); + mpxp_v<<"Parse OK, found: "<<album_title<<std::endl; return cddb_request_titles(cddb_data); case 202: // No match found - MSG_ERR("Album not found\n"); + mpxp_err<<"Album not found"<<std::endl; break; case 210: // Found exact matches, list follows ptr = strstr(const_cast<char*>(http_hdr.get_body()), "\n"); if( ptr==NULL ) { - MSG_ERR("Unable to find end of line\n"); + mpxp_err<<"Unable to find end of line"<<std::endl; return -1; } ptr++; @@ -373,7 +369,7 @@ // we use? So let's take the first one. ret = sscanf(ptr, "%s %08lx %s", cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); if( ret!=3 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } ptr = strstr(const_cast<char*>(http_hdr.get_body()), album_title); @@ -389,7 +385,7 @@ strncpy(album_title, ptr, len); album_title[len-2]='\0'; } - MSG_V("Parse OK, found: %s\n", album_title); + mpxp_v<<"Parse OK, found: "<<album_title<<std::endl; return cddb_request_titles(cddb_data); /* body=[210 Found exact matches, list follows (until terminating `.') @@ -400,10 +396,10 @@ */ case 211: // Found inexact matches, list follows - MSG_WARN("No exact matches found, list follows\n"); + mpxp_warn<<"No exact matches found, list follows"<<std::endl; break; default: - MSG_ERR("Unhandled code\n"); + mpxp_err<<"Unhandled code"<<std::endl; } return -1; } @@ -415,7 +411,7 @@ ret = sscanf(http_hdr.get_body(), "%d ", &status); if( ret!=1 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } @@ -423,18 +419,18 @@ case 210: ptr = strstr(const_cast<char*>(http_hdr.get_body()), "max proto:"); if( ptr==NULL ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } ret = sscanf(ptr, "max proto: %d", &max); if( ret!=1 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } cddb_data->freedb_proto_level = max; return 0; default: - MSG_ERR("Unhandled code\n"); + mpxp_err<<"Unhandled code"<<std::endl; } return -1; } @@ -448,7 +444,7 @@ UNUSED(cddb_data); ret = sscanf((const char*)http_hdr.get_body(), "%d ", &status); if( ret!=1 ) { - MSG_ERR("Parse error\n"); + mpxp_err<<"Parse error"<<std::endl; return -1; } @@ -457,10 +453,10 @@ // Parse the sites return 0; case 401: - MSG_ERR("No sites information available\n"); + mpxp_err<<"No sites information available"<<std::endl; break; default: - MSG_ERR("Unhandled code\n"); + mpxp_err<<"Unhandled code"<<std::endl; } return -1; } @@ -508,7 +504,7 @@ cddb_create_hello(cddb_data); if( cddb_get_proto_level(cddb_data)<0 ) { - MSG_ERR("Failed to get the protocol level\n"); + mpxp_err<<"Failed to get the protocol level"<<std::endl; return -1; } @@ -539,7 +535,7 @@ } else { cddb_data.cache_dir = (char*)mp_malloc(strlen(home_dir)+strlen(cddb_cache_dir)+1); if( cddb_data.cache_dir==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; return MPXP_False; } sprintf(cddb_data.cache_dir, "%s%s", home_dir, cddb_cache_dir ); @@ -553,7 +549,6 @@ } if( cddb_data.xmcd_file!=NULL ) { -// printf("%s\n", cddb_data.xmcd_file ); *xmcd_file = cddb_data.xmcd_file; return MPXP_Ok; } @@ -590,8 +585,8 @@ cd_track = new(zeromem) cd_track_t; if( cd_track==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; + mpxp_fatal<<"Memory allocation failed"<<std::endl; + return NULL; } cd_track->name=track_name; cd_track->track_nb = track_nb; @@ -627,23 +622,23 @@ void CD_Info::print() const { cd_track_t *current_track; - MSG_INFO("================ CD INFO === start =========\n"); - MSG_INFO(" artist=[%s]\n" - " album=[%s]\n" - " genre=[%s]\n" - " nb_tracks=%d\n" - " length= %2d:%02d.%02d\n" - , artist.c_str() - , album.c_str() - , genre.c_str() - , nb_tracks - , min, sec, msec); + mpxp_info<<"================ CD INFO === start ========="<<std::endl; + mpxp_info<<" artist=["<<artist<<"]"<<std::endl; + mpxp_info<<" album=["<<album<<"]"<<std::endl; + mpxp_info<<" genre=["<<genre<<"]"<<std::endl; + mpxp_info<<" nb_tracks="<<nb_tracks<<std::endl; + mpxp_info<<" length= "<<min<<":"<<sec<<"."<<msec<<std::endl; current_track = first; while( current_track!=NULL ) { - MSG_V(" #%2d %2d:%02d.%02d @ %7ld\t[%s] \n", current_track->track_nb, current_track->min, current_track->sec, current_track->msec, current_track->frame_begin, current_track->name.c_str()); + mpxp_v<<" #"<<current_track->track_nb + <<" "<<current_track->min + <<":"<<current_track->sec + <<"."<<current_track->msec + <<" @ "<<current_track->frame_begin<<"\t[" + <<current_track->name<<"]"<<std::endl; current_track = current_track->next; } - MSG_INFO("================ CD INFO === end =========\n"); + mpxp_info<<"================ CD INFO === end ========="<<std::endl; } static char* __FASTCALL__ xmcd_parse_dtitle(CD_Info& cd_info,char *line) { Modified: mplayerxp/libmpstream2/cookies.cpp =================================================================== --- mplayerxp/libmpstream2/cookies.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/cookies.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -101,24 +101,24 @@ int fd; char *buffer; - MSG_V("Loading cookie file: %s\n", filename); + mpxp_v<<"Loading cookie file: "<<filename<<std::endl; fd = open(filename, O_RDONLY); if (fd < 0) { - MSG_V("Could not open"); + mpxp_v<<"Could not open"<<std::endl; return NULL; } *length = lseek(fd, 0, SEEK_END); if (*length < 0) { - MSG_V("Could not find EOF"); + mpxp_v<<"Could not find EOF"<<std::endl; close(fd); return NULL; } if (unsigned(*length) > std::numeric_limits<size_t>::max() - 1) { - MSG_V("File too big, could not mp_malloc."); + mpxp_v<<"File too big, could not mp_malloc"<<std::endl; close(fd); return NULL; } @@ -126,14 +126,14 @@ lseek(fd, SEEK_SET, 0); if (!(buffer = new char [*length + 1])) { - MSG_V("Could not mp_malloc."); + mpxp_v<<"Could not mp_malloc"<<std::endl; close(fd); return NULL; } if (read(fd, buffer, *length) != *length) { delete buffer; - MSG_V("Read is behaving funny."); + mpxp_v<<"Read is behaving funny"<<std::endl; close(fd); return NULL; } @@ -151,7 +151,7 @@ char *ptr; off_t length; - MSG_V("Loading cookie file: %s\n", filename); + mpxp_v<<"Loading cookie file: "<<filename<<std::endl; ptr = load_file(filename, &length); if (!ptr) Modified: mplayerxp/libmpstream2/http.cpp =================================================================== --- mplayerxp/libmpstream2/http.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/http.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -30,12 +30,12 @@ if( response==NULL) return -1; if( (unsigned)length > std::numeric_limits<size_t>::max() - buffer_size - 1) { - MSG_FATAL("Bad size in memory (re)allocation\n"); + mpxp_fatal<<"Bad size in memory (re)allocation"<<std::endl; return -1; } buffer = (uint8_t*)mp_realloc( buffer, buffer_size+length+1 ); if(buffer ==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; return -1; } memcpy( buffer+buffer_size, response, length ); @@ -62,7 +62,7 @@ // Get the protocol hdr_ptr = strstr( (char*)buffer, " " ); if( hdr_ptr==NULL ) { - MSG_FATAL("Malformed answer. No space separator found.\n"); + mpxp_fatal<<"Malformed answer. No space separator found"<<std::endl; return -1; } len = hdr_ptr-(char*)buffer; @@ -71,14 +71,14 @@ std::transform(sstr.begin(), sstr.end(),sstr.begin(), ::toupper); if(sstr=="HTTP") { if( sscanf( &protocol.c_str()[5],"1.%d", &(http_minor_version) )!=1 ) { - MSG_FATAL("Malformed answer. Unable to get HTTP minor version.\n"); + mpxp_fatal<<"Malformed answer. Unable to get HTTP minor version"<<std::endl; return -1; } } // Get the status code if( sscanf( ++hdr_ptr, "%d", &status_code )!=1 ) { - MSG_FATAL("Malformed answer. Unable to get status code.\n"); + mpxp_fatal<<"Malformed answer. Unable to get status code"<<std::endl; return -1; } hdr_ptr += 4; @@ -86,7 +86,7 @@ // Get the reason phrase ptr = strstr( hdr_ptr, "\n" ); if( hdr_ptr==NULL ) { - MSG_FATAL("Malformed answer. Unable to get the reason phrase.\n"); + mpxp_fatal<<"Malformed answer. Unable to get the reason phrase"<<std::endl; return -1; } len = ptr-hdr_ptr; @@ -103,7 +103,7 @@ if( ptr==NULL ) { ptr = strstr( (char*)buffer, "\n\n" ); if( ptr==NULL ) { - MSG_ERR("Header may be incomplete. No CRLF CRLF found.\n"); + mpxp_err<<"Header may be incomplete. No CRLF CRLF found"<<std::endl; return -1; } hdr_sep_len = 2; @@ -119,7 +119,7 @@ if( len==0 ) break; field = (char*)mp_realloc(field, len+1); if( field==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; return -1; } strncpy( field, hdr_ptr, len ); @@ -165,7 +165,7 @@ } buffer = new uint8_t [len+1]; if( buffer==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; return NULL; } buffer_size = len; @@ -234,7 +234,7 @@ usr_pass = new char [username.length()+pass_len+2]; if( usr_pass==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; goto out; } @@ -244,13 +244,13 @@ encoded_len = strlen(usr_pass)*2; b64_usr_pass = new char [encoded_len]; if( b64_usr_pass==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; goto out; } out_len = base64_encode( usr_pass, strlen(usr_pass), b64_usr_pass, encoded_len); if( out_len<0 ) { - MSG_FATAL("Base64 out overflow\n"); + mpxp_fatal<<"Base64 out overflow"<<std::endl; goto out; } @@ -258,7 +258,7 @@ auth = new char [encoded_len+22]; if( auth==NULL ) { - MSG_FATAL("Memory allocation failed\n"); + mpxp_fatal<<"Memory allocation failed"<<std::endl; goto out; } @@ -280,26 +280,19 @@ void HTTP_Header::debug_hdr( ) { unsigned i = 0; - MSG_V( "--- HTTP DEBUG HEADER --- START ---\n" - "protocol: [%s]\n" - "http minor version: [%d]\n" - "uri: [%s]\n" - "method: [%s]\n" - "status code: [%d]\n" - "reason phrase: [%s]\n" - "body size: [%d]\n" - ,protocol.c_str() - ,http_minor_version - ,uri.c_str() - ,method.c_str() - ,status_code - ,reason_phrase.c_str() - ,body.length() ); + mpxp_v<<"--- HTTP DEBUG HEADER --- START ---"<<std::endl; + mpxp_v<<"protocol: ["<<protocol<<"]"<<std::endl; + mpxp_v<<"http minor version: ["<<http_minor_version<<"]"<<std::endl; + mpxp_v<<"uri: ["<<uri<<"]"<<std::endl; + mpxp_v<<"method: ["<<method<<"]"<<std::endl; + mpxp_v<<"status code: ["<<status_code<<"]"<<std::endl; + mpxp_v<<"reason phrase: ["<<reason_phrase<<"]"<<std::endl; + mpxp_v<<"body size: ["<<body.length()<<"]"<<std::endl; - MSG_V("Fields:\n"); + mpxp_v<<"Fields:"<<std::endl; std::vector<std::string>::size_type sz = fields.size(); - for(i=0;i<sz;i++) MSG_V(" %d - %s\n", i, fields[i].c_str()); - MSG_V("--- HTTP DEBUG HEADER --- END ---\n"); + for(i=0;i<sz;i++) mpxp_v<<" "<<i<<" - "<<fields[i]<<std::endl; + mpxp_v<<"--- HTTP DEBUG HEADER --- END ---"<<std::endl; } int HTTP_Header::authenticate(URL& url, int *auth_retry) { @@ -316,15 +309,15 @@ const char *aut_space; aut_space = strstr(aut, "realm="); if( aut_space!=NULL ) aut_space += 6; - MSG_INFO("Authentication required for %s\n", aut_space); + mpxp_info<<"Authentication required for "<<aut_space<<std::endl; } else { - MSG_INFO("Authentication required\n"); + mpxp_info<<"Authentication required"<<std::endl; } if( !net_conf.username ) { mpxp_err<<MSGTR_ConnAuthFailed<<std::endl; return -1; } - if( !net_conf.password ) MSG_INFO("No password provided, trying blank password\n"); + if( !net_conf.password ) mpxp_info<<"No password provided, trying blank password"<<std::endl; url.set_login(net_conf.username,net_conf.password?net_conf.password:""); (*auth_retry)++; return 0; Modified: mplayerxp/libmpstream2/librtsp/rtsp.cpp =================================================================== --- mplayerxp/libmpstream2/librtsp/rtsp.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/librtsp/rtsp.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -179,7 +179,7 @@ } if (n>=BUF_SIZE) { - MSG_FATAL("librtsp: buffer overflow in rtsp_get\n"); + mpxp_fatal<<"librtsp: buffer overflow in rtsp_get"<<std::endl; exit(1); } string=new char [n]; @@ -187,7 +187,7 @@ string[n-1]=0; #ifdef LOG - MSG_INFO("librtsp: << '%s'\n", string); + mpxp_info<<"librtsp: << "<<string<<std::endl; #endif delete buffer; @@ -203,7 +203,7 @@ char *buf=new char [len+2]; #ifdef LOG - MSG_INFO("librtsp: >> '%s'", string); + mpxp_info<<"librtsp: >> "<<string<<std::endl; #endif memcpy(buf,string,len); @@ -213,7 +213,7 @@ write_stream(buf, len+2); #ifdef LOG - MSG_INFO(" done.\n"); + mpxp_info>>" done"<<std::endl; #endif delete buf; } @@ -233,7 +233,7 @@ } else if (!strncmp(string, RTSP_METHOD_SET_PARAMETER,8)) { return RTSP_STATUS_SET_PARAMETER; } - if(code != RTSP_STATUS_OK) MSG_INFO("librtsp: server responds: '%s'\n",string); + if(code != RTSP_STATUS_OK) mpxp_info<<"librtsp: server responds: "<<string<<std::endl; return code; } @@ -303,7 +303,7 @@ sscanf(answer,"%*s %u",&answer_seq); if (cseq != answer_seq) { #ifdef LOG - MSG_WARN("librtsp: warning: CSeq mismatch. got %u, assumed %u", answer_seq, s->cseq); + mpxp_warn<<"librtsp: warning: CSeq mismatch. got "<<answer_seq<<", assumed "<<s->cseq<<std::endl; #endif cseq=answer_seq; } @@ -320,13 +320,13 @@ sscanf(answer,"%*s %s",buf); if (session) { if (strcmp(buf, session)) { - MSG_WARN("rtsp: warning: setting NEW session: %s\n", buf); + mpxp_warn<<"rtsp: warning: setting NEW session: "<<buf<<std::endl; delete session; session=mp_strdup(buf); } } else { #ifdef LOG - MSG_INFO("rtsp: setting session id to: %s\n", buf); + mpxp_info<<"rtsp: setting session id to: "<<buf<<std::endl; #endif session=mp_strdup(buf); } @@ -473,7 +473,7 @@ delete rest; if (seq<0) { #ifdef LOG - MSG_WARN("rtsp: warning: CSeq not recognized!\n"); + mpxp_warn<<"rtsp: warning: CSeq not recognized!"<<std::endl; #endif seq=1; } @@ -491,7 +491,7 @@ } } else i=read_stream(buffer, size); #ifdef LOG - MSG_INFO("librtsp: << %d of %d bytes\n", i, size); + mpxp_info<<"librtsp: << "<<i<<" of "<<size<<" bytes"<<std::endl; #endif return i; } @@ -533,7 +533,7 @@ s.param++; if (!tcp.established()) { - MSG_ERR("rtsp: failed to connect to '%s'\n", s.host); + mpxp_err<<"rtsp: failed to connect to "<<s.host<<std::endl; s.close(); delete &s; return NULL; Modified: mplayerxp/libmpstream2/librtsp/rtsp_rtp.cpp =================================================================== --- mplayerxp/libmpstream2/librtsp/rtsp_rtp.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/librtsp/rtsp_rtp.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -241,7 +241,7 @@ /* Increase the socket rx buffer size to maximum -- this is UDP */ rxsockbufsz = 240 * 1024; if (::setsockopt (s, SOL_SOCKET, SO_RCVBUF, &rxsockbufsz, sizeof (rxsockbufsz))) - MSG_ERR("Couldn't set receive socket buffer size\n"); + mpxp_err<<"Couldn't set receive socket buffer size"<<std::endl; /* if multicast address, add membership */ if ((::ntohl (sin.sin_addr.s_addr) >> 28) == 0xe) { @@ -250,7 +250,7 @@ mcast.imr_interface.s_addr = 0; if (::setsockopt (s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mcast, sizeof (mcast))) { - MSG_ERR("IP_ADD_MEMBERSHIP failed\n"); + mpxp_err<<"IP_ADD_MEMBERSHIP failed"<<std::endl; ::close (s); return -1; } @@ -264,7 +264,7 @@ if (WSAGetLastError() != WSAEINPROGRESS) #endif { - MSG_ERR("bind: %s\n", strerror (errno)); + mpxp_err<<"bind: "<<strerror(errno)<<std::endl; ::close (s); return -1; } @@ -278,11 +278,11 @@ err = ::select (s + 1, &set, NULL, NULL, &tv); if (err < 0) { - MSG_ERR("Select failed: %s\n", strerror (errno)); + mpxp_err<<"Select failed: "<<strerror (errno)<<std::endl; ::close (s); return -1; } else if (err == 0) { - MSG_ERR("Timeout! No data from host %s\n", hostname); + mpxp_err<<"Timeout! No data from host "<<hostname<<std::endl; ::close (s); return -1; } @@ -290,7 +290,7 @@ err_len = sizeof (err); ::getsockopt (s, SOL_SOCKET, SO_ERROR, &err, (socklen_t *) &err_len); if (err) { - MSG_ERR("Socket error: %d\n", err); + mpxp_err<<"Socket error: "<<err<<std::endl; ::close (s); return -1; } @@ -369,12 +369,12 @@ fsdp_description_delete (dsc); return NULL; } - MSG_V("SDP:\n%s\n", sdp); + mpxp_v<<"SDP: "<<sdp<<std::endl; delete sdp; /* 4. check for number of media streams: only one is supported */ if (fsdp_get_media_count (dsc) != 1) { - MSG_ERR("A single media stream only is supported atm.\n"); + mpxp_err<<"A single media stream only is supported atm"<<std::endl; fsdp_description_delete (dsc); return NULL; } @@ -429,8 +429,8 @@ /* RTCP port generally is RTP port + 1 */ client_rtcp_port = client_rtp_port + 1; - MSG_V("RTP Port from SDP appears to be: %d\n", client_rtp_port); - MSG_V("RTCP Port from SDP appears to be: %d\n", client_rtcp_port); + mpxp_v<<"RTP Port from SDP appears to be: "<<client_rtp_port<<std::endl; + mpxp_v<<"RTCP Port from SDP appears to be: "<<client_rtcp_port<<std::endl; /* 7. parse the `c=<network type> <addr type> <connection address>' line */ /* check for a valid media network type (inet) */ @@ -491,7 +491,7 @@ is_multicast ? RTSP_TRANSPORT_MULTICAST : RTSP_TRANSPORT_UNICAST, is_multicast ? RTSP_MULTICAST_PORT : RTSP_UNICAST_CLIENT_PORT, client_rtp_port, client_rtcp_port); - MSG_V("RTSP Transport: %s\n", temp_buf); + mpxp_v<<"RTSP Transport: "<<temp_buf<<std::endl; rtsp.unschedule_field (RTSP_SESSION); rtsp.schedule_field (temp_buf); @@ -537,16 +537,11 @@ if (!destination) destination = mp_strdup (server_addr); delete server_addr; - MSG_V("RTSP Destination: %s\n" - "Client RTP port : %d\n" - "Client RTCP port : %d\n" - "Server RTP port : %d\n" - "Server RTCP port : %d\n" - , destination - , client_rtp_port - , client_rtcp_port - , server_rtp_port - , server_rtcp_port); + mpxp_v<<"RTSP Destination: "<<destination<<std::endl; + mpxp_v<<"Client RTP port : "<<client_rtp_port<<std::endl; + mpxp_v<<"Client RTCP port : "<<client_rtcp_port<<std::endl; + mpxp_v<<"Server RTP port : "<<server_rtp_port<<std::endl; + mpxp_v<<"Server RTCP port : "<<server_rtcp_port<<std::endl; /* 12. performs RTSP PLAY request */ rtsp.schedule_field (npt); @@ -563,7 +558,7 @@ rtp_session->set_fd (rtp_sock, rtcp_sock); delete destination; - MSG_V("RTP Sock : %d\nRTCP Sock : %d\n",rtp_session->rtp_socket, rtp_session->rtcp_socket); + mpxp_v<<"RTP Sock : "<<rtp_session->rtp_socket<<" RTCP Sock : "<<rtp_session->rtcp_socket<<std::endl; if (rtp_session->rtp_socket == -1) { delete rtp_session; Modified: mplayerxp/libmpstream2/librtsp/rtsp_session.cpp =================================================================== --- mplayerxp/libmpstream2/librtsp/rtsp_session.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/librtsp/rtsp_session.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -91,7 +91,7 @@ rtsp_session->s=Rtsp::connect(tcp,*mrl,path.c_str(),host.c_str(),port,NULL); if (!rtsp_session->s) { - MSG_ERR("rtsp_session: failed to connect to server %s\n", path.c_str()); + mpxp_err<<"rtsp_session: failed to connect to server "<<path<<std::endl; delete rtsp_session; return NULL; } @@ -116,7 +116,7 @@ { delete mrl_line; mrl_line=mp_strdup(rtsp_session->s->search_answers(RTSP_OPTIONS_LOCATION)); - MSG_INFO("rtsp_session: redirected to %s\n", mrl_line); + mpxp_info<<"rtsp_session: redirected to "<<mrl_line<<std::endl; rtsp_session->s->close(); delete server; delete *mrl; @@ -128,7 +128,7 @@ // goto connect; /* *shudder* i made a design mistake somewhere */ } else { - MSG_ERR("rtsp_session: session can not be established.\n"); + mpxp_err<<"rtsp_session: session can not be established"<<std::endl; rtsp_session->s->close(); delete server; delete rtsp_session; @@ -142,13 +142,13 @@ rtsp_session->real_session->header_len = 0; rtsp_session->real_session->recv_size = 0; rtsp_session->real_session->rdt_rawdata = 1; - MSG_V("smil-over-realrtsp playlist, switching to raw rdt mode\n"); + mpxp_v<<"smil-over-realrtsp playlist, switching to raw rdt mode"<<std::endl; } else { rtsp_session->real_session->header_len = rmff_dump_header (h, (char *) rtsp_session->real_session->header, HEADER_SIZE); if (rtsp_session->real_session->header_len < 0) { - MSG_ERR("rtsp_session: error while dumping RMFF headers, session can not be established.\n"); + mpxp_err<<"rtsp_session: error while dumping RMFF headers, session can not be established"<<std::endl; free_real_rtsp_session(rtsp_session->real_session); rtsp_session->s->close(); delete server; @@ -186,7 +186,7 @@ || !strstr (publics, RTSP_METHOD_PLAY) || !strstr (publics, RTSP_METHOD_TEARDOWN)) { - MSG_ERR("Remote server does not meet minimal RTSP 1.0 compliance.\n"); + mpxp_err<<"Remote server does not meet minimal RTSP 1.0 compliance"<<std::endl; rtsp_session->s->close (); delete server; delete mrl_line; @@ -201,7 +201,7 @@ /* neither a Real or an RTP server */ if (!rtsp_session->rtp_session) { - MSG_ERR("rtsp_session: unsupported RTSP server. Server type is '%s'.\n", server); + mpxp_err<<"rtsp_session: unsupported RTSP server. Server type is "<<server<<std::endl; rtsp_session->s->close (); delete server; delete mrl_line; @@ -241,7 +241,7 @@ fill = real_session->recv_size; if (real_session->recv_size == 0) { #ifdef LOG - MSG_INFO("librtsp: %d of %d bytes provided\n", len-to_copy, len); + mpxp_info<<"librtsp: "<<(len-to_copy)<<" of "<<len<<" bytes provided"<<std::endl; #endif return len-to_copy; } @@ -249,7 +249,7 @@ memcpy(dest, source, to_copy); real_session->recv_read += to_copy; #ifdef LOG - MSG_INFO("librtsp: %d bytes provided\n", len); + mpxp_info<<"librtsp: "<<len<<" bytes provided"<<std::endl; #endif return len; } else if (rtp_session) { Modified: mplayerxp/libmpstream2/mrl.cpp =================================================================== --- mplayerxp/libmpstream2/mrl.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/mrl.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -86,7 +86,7 @@ static void mrl_store_args(const std::string& arg,char *value, const mrl_config_t * args) { #ifdef TEST_MRL - printf("arg='%s' value='%s'\n",arg,value); + mpxp_info<<"arg='"<<arg<<"' value='"<<value<<std::endl; return; #endif unsigned i; @@ -97,7 +97,7 @@ done=1; switch(args[i].type) { case MRL_TYPE_PRINT: - MSG_INFO("%s", (char *)args[i].value); + mpxp_info<<(char *)args[i].value<<std::endl; default: delete value; break; @@ -136,7 +136,7 @@ } i++; } - if(!done) MSG_WARN(" Can't handle argument: '%s'",arg.c_str()); + if(!done) mpxp_warn<<" Can't handle argument: "<<arg<<std::endl; } #define MRL_ARG_SEP ',' Modified: mplayerxp/libmpstream2/network.cpp =================================================================== --- mplayerxp/libmpstream2/network.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/network.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -114,12 +114,12 @@ server_url.assign_port(80); tcp.open(server_url, Tcp::IP4); } - if(!tcp.established()) { MSG_ERR("Cannot establish connection\n"); goto err_out; } - MSG_DBG2("Request: [%s]\n", http_hdr.get_buffer() ); + if(!tcp.established()) { mpxp_err<<"Cannot establish connection"<<std::endl; goto err_out; } + mpxp_dbg2<<"Request: ["<<http_hdr.get_buffer()<<"]"<<std::endl; ret = tcp.write((uint8_t*)(http_hdr.get_buffer()), http_hdr.get_buffer_size()); if( ret!=(int)http_hdr.get_buffer_size() ) { - MSG_ERR("Error while sending HTTP request: didn't sent all the request\n"); + mpxp_err<<"Error while sending HTTP request: didn't sent all the request"<<std::endl; goto err_out; } @@ -131,28 +131,28 @@ } HTTP_Header* http_read_response( Tcp& tcp ) { - HTTP_Header* http_hdr = new(zeromem) HTTP_Header; - uint8_t response[BUFFER_SIZE]; - int i; + HTTP_Header* http_hdr = new(zeromem) HTTP_Header; + uint8_t response[BUFFER_SIZE]; + int i; - if( http_hdr==NULL ) return NULL; + if( http_hdr==NULL ) return NULL; - do { - i = tcp.read(response, BUFFER_SIZE); - if( i<0 ) { - MSG_ERR("Read failed\n"); - delete http_hdr; - return NULL; - } - if( i==0 ) { - MSG_ERR("http_read_response read 0 -ie- EOF\n"); - delete http_hdr; - return NULL; - } - http_hdr->response_append(response,i); - } while( !http_hdr->is_header_entire() ); - http_hdr->response_parse(); - return http_hdr; + do { + i = tcp.read(response, BUFFER_SIZE); + if( i<0 ) { + mpxp_err<<"Read failed"<<std::endl; + delete http_hdr; + return NULL; + } + if( i==0 ) { + mpxp_err<<"http_read_response read 0 -ie- EOF"<<std::endl; + delete http_hdr; + return NULL; + } + http_hdr->response_append(response,i); + } while( !http_hdr->is_header_entire() ); + http_hdr->response_parse(); + return http_hdr; } off_t http_seek(Tcp& tcp, Networking& networking, off_t pos ) { @@ -168,8 +168,8 @@ switch( http_hdr->get_status() ) { case 200: case 206: // OK - MSG_V("Content-Type: [%s]\n", http_hdr->get_field("Content-Type") ); - MSG_V("Content-Length: [%s]\n", http_hdr->get_field("Content-Length") ); + mpxp_v<<"Content-Type: ["<<http_hdr->get_field("Content-Type")<<"]"<<std::endl; + mpxp_v<<"Content-Length: ["<<http_hdr->get_field("Content-Length")<<"]"<<std::endl; if( http_hdr->get_body_size()>0 ) { if( networking.bufferize((unsigned char *)http_hdr->get_body(), http_hdr->get_body_size() )<0 ) { delete http_hdr; @@ -178,7 +178,7 @@ } break; default: - MSG_ERR("Server return %d: %s\n", http_hdr->get_status(), http_hdr->get_reason_phrase()); + mpxp_err<<"Server return "<<http_hdr->get_status()<<": "<<http_hdr->get_reason_phrase()<<std::endl; tcp.close(); } @@ -221,7 +221,7 @@ // Checking for RTP if( url.protocol2lower()=="rtp") { if( url.port()==0 ) { - MSG_ERR("You must enter a port number for RTP streams!\n"); + mpxp_err<<"You must enter a port number for RTP streams!"<<std::endl; goto err_out; } return MPXP_Ok; @@ -251,34 +251,34 @@ // note: I skip icy-notice1 and 2, as they contain html <BR> // and are IMHO useless info ::atmos if( (field_data = http_hdr->get_field("icy-name")) != NULL ) - MSG_INFO("Name : %s\n", field_data); field_data = NULL; + mpxp_info<<"Name : "<<field_data<<std::endl; field_data = NULL; if( (field_data = http_hdr->get_field("icy-genre")) != NULL ) - MSG_INFO("Genre : %s\n", field_data); field_data = NULL; + mpxp_info<<"Genre : "<<field_data<<std::endl; field_data = NULL; if( (field_data = http_hdr->get_field("icy-url")) != NULL ) - MSG_INFO("Website: %s\n", field_data); field_data = NULL; + mpxp_info<<"Website: "<<field_data<<std::endl; field_data = NULL; // XXX: does this really mean public server? ::atmos if( (field_data = http_hdr->get_field("icy-pub")) != NULL ) - MSG_INFO("Public : %s\n", atoi(field_data)?"yes":"no"); field_data = NULL; + mpxp_info<<"Public : "<<(atoi(field_data)?"yes":"no")<<std::endl; field_data = NULL; if( (field_data = http_hdr->get_field("icy-br")) != NULL ) - MSG_INFO("Bitrate: %skbit/s\n", field_data); field_data = NULL; + mpxp_info<<"Bitrate: "<<field_data<<"kbit/s"<<std::endl; field_data = NULL; if ( (field_data = http_hdr->get_field("content-type")) != NULL ) networking.mime = field_data; return MPXP_Ok; } case 400: // Server Full - MSG_ERR("Error: ICY-Server is full, skipping!\n"); + mpxp_err<<"Error: ICY-Server is full, skipping!"<<std::endl; goto err_out; case 401: // Service Unavailable - MSG_ERR("Error: ICY-Server return service unavailable, skipping!\n"); + mpxp_err<<"Error: ICY-Server return service unavailable, skipping!"<<std::endl; goto err_out; case 403: // Service Forbidden - MSG_ERR("Error: ICY-Server return 'Service Forbidden'\n"); + mpxp_err<<"Error: ICY-Server return 'Service Forbidden'"<<std::endl; goto err_out; case 404: // Resource Not Found - MSG_ERR("Error: ICY-Server couldn't find requested stream, skipping!\n"); + mpxp_err<<"Error: ICY-Server couldn't find requested stream, skipping!"<<std::endl; goto err_out; default: - MSG_ERR("Error: unhandled ICY-Errorcode, contact MPlayer developers!\n"); + mpxp_err<<"Error: unhandled ICY-Errorcode, contact MPlayer developers!"<<std::endl; goto err_out; } } @@ -290,9 +290,9 @@ content_type = http_hdr->get_field("Content-Type" ); if( content_type!=NULL ) { const char *content_length = NULL; - MSG_V("Content-Type: [%s]\n", content_type ); + mpxp_v<<"Content-Type: ["<<content_type<<"]"<<std::endl; if( (content_length = http_hdr->get_field("Content-Length")) != NULL) - MSG_V("Content-Length: [%s]\n", http_hdr->get_field("Content-Length")); + mpxp_v<<"Content-Length: ["<<http_hdr->get_field("Content-Length")<<"]"<<std::endl; } // Not found in the mime type table, don't fail, // we should try raw HTTP @@ -306,7 +306,7 @@ url.redirect(next_url); if (url.protocol2lower()=="mms") goto err_out; if (url.protocol2lower()=="http") { - MSG_WARN("Unsupported http %d redirect to %s protocol\n", http_hdr->get_status(), url.protocol().c_str()); + mpxp_warn<<"Unsupported http "<<http_hdr->get_status()<<" redirect to "<<url.protocol()<<" protocol"<<std::endl; goto err_out; } redirect = 1; @@ -317,11 +317,11 @@ redirect = 1; break; default: - MSG_ERR("Server returned %d: %s\n", http_hdr->get_status(), http_hdr->get_reason_phrase()); + mpxp_err<<"Server returned "<<http_hdr->get_status()<<": "<<http_hdr->get_reason_phrase()<<std::endl; goto err_out; } } else { - MSG_ERR("Unknown protocol '%s'\n", url.protocol().c_str()); + mpxp_err<<"Unknown protocol: "<<url.protocol()<<std::endl; goto err_out; } } while( redirect ); @@ -332,10 +332,9 @@ } int Networking::bufferize(unsigned char *_buffer, int size) { -//printf("networking_bufferize\n"); buffer = new char [size]; if( buffer==NULL ) { - MSG_FATAL(MSGTR_OutOfMemory); + mpxp_fatal<<MSGTR_OutOfMemory<<std::endl; return -1; } memcpy( buffer, _buffer, size ); @@ -351,7 +350,7 @@ mp_conf.s_cache_size = (prebuffer_size/1024)*5; if( mp_conf.s_cache_size<64 ) mp_conf.s_cache_size = 64; // 16KBytes min buffer } - MSG_INFO("[network] cache size set to: %i\n", mp_conf.s_cache_size); + mpxp_info<<"[network] cache size set to: "<<mp_conf.s_cache_size<<std::endl; } } @@ -373,18 +372,18 @@ tcp.close(); rc = Pnm_Networking::start(tcp, net_protocol); if (!rc) { - MSG_INFO("Can't connect with pnm, retrying with http.\n"); + mpxp_info<<"Can't connect with pnm, retrying with http"<<std::endl; return NULL; } } else if( url.protocol2lower()=="rtsp") { if ((rc = RealRtsp_Networking::start( tcp, net_protocol )) == NULL) { - MSG_INFO("Not a Realmedia rtsp url. Trying standard rtsp protocol.\n"); + mpxp_info<<"Not a Realmedia rtsp url. Trying standard rtsp protocol"<<std::endl; #ifdef STREAMING_LIVE_DOT_COM rc = Rtsp_Networking::start( tcp, net_protocol ); - if(!rc) MSG_ERR("rtsp_networking_start failed\n"); + if(!rc) mpxp_err<<"rtsp_networking_start failed"<<std::endl; return rc; #else - MSG_ERR("RTSP support requires the \"LIVE.COM Streaming Media\" libraries!\n"); + mpxp_err<<"RTSP support requires the \"LIVE.COM Streaming Media\" libraries!"<<std::endl; return NULL; #endif } @@ -392,7 +391,7 @@ tcp.close(); rc = Rtp_Networking::start(tcp, net_protocol, 1); if(!rc) { - MSG_ERR("rtp_networking_start(udp) failed\n"); + mpxp_err<<"rtp_networking_start(udp) failed"<<std::endl; return NULL; } } else if(url.protocol2lower()=="mms" || @@ -400,7 +399,7 @@ url.protocol2lower()=="mmsu") { rc=Asf_Mmst_Networking::start(tcp,net_protocol); if(!rc) { - MSG_ERR("asf_mmst_networking_start() failed\n"); + mpxp_err<<"asf_mmst_networking_start() failed"<<std::endl; return NULL; } } else { @@ -414,14 +413,14 @@ //sometimes a file is just on a webserver and it is not streamed. //try loading them default method as last resort for http protocol if (url.protocol2lower()=="http") { - MSG_STATUS("Trying default networking for http protocol\n "); + mpxp_status<<"Trying default networking for http protocol"<<std::endl; //reset stream tcp.close(); rc=Nop_Networking::start(tcp,net_protocol); } if (!rc) { - MSG_ERR("asf_networking_start failed\n"); - MSG_STATUS("Check if this is a playlist which requires -playlist option\nExample: mplayer -playlist <url>\n"); + mpxp_err<<"asf_networking_start failed"<<std::endl; + mpxp_status<<"Check if this is a playlist which requires -playlist option"<<std::endl<<"Example: mplayer -playlist <url>"<<std::endl; } } } Modified: mplayerxp/libmpstream2/network_asf.cpp =================================================================== --- mplayerxp/libmpstream2/network_asf.cpp 2012-12-21 17:47:42 UTC (rev 594) +++ mplayerxp/libmpstream2/network_asf.cpp 2012-12-22 12:15:42 UTC (rev 595) @@ -56,36 +56,36 @@ static int asf_networking(ASF_stream_chunck_t *stream_chunck, int *drop_packet ) { - if( drop_packet!=NULL ) *drop_packet = 0; + if( drop_packet!=NULL ) *drop_packet = 0; - if( stream_chunck->size<8 ) { - MSG_ERR("Ahhhh, stream_chunck size is too small: %d\n", stream_chunck->size); - return -1; - } - if( stream_chunck->size!=stream_chunck->size_confirm ) { - MSG_ERR("size_confirm mismatch!: %d %d\n", stream_chunck->size, stream_chunck->size_confirm); - return -1; - } - switch(stream_chunck->type) { - case ASF_STREAMING_CLEAR: // $C Clear ASF configuration - MSG_V("=====> Clearing ASF stream configuration!\n"); - if( drop_packet!=NULL ) *drop_packet = 1; - return stream_chunck->size; - break; - case ASF_STREAMING_DATA: // $D Data follows - break; - case ASF_STREAMING_END_TRANS: // $E Transfer complete - MSG_V("=====> Transfer complete\n"); - if( drop_packet!=NULL ) *drop_packet = 1; - return stream_chunck->size; - break; - case ASF_STREAMING_HEADER: // $H ASF header chunk follows - MSG_V("=====> ASF header chunk follows\n"); - break; - default... [truncated message content] |
From: <nic...@us...> - 2012-12-21 17:47:54
|
Revision: 594 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=594&view=rev Author: nickols_k Date: 2012-12-21 17:47:42 +0000 (Fri, 21 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output Modified Paths: -------------- mplayerxp/input2/in_msg.h mplayerxp/libmpdemux/demuxer_info.cpp mplayerxp/libmpdemux/demuxer_r.cpp mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpstream2/cache2.cpp mplayerxp/libmpstream2/s_cdd.cpp mplayerxp/libmpstream2/s_dvdnav.cpp mplayerxp/libmpstream2/s_dvdread.cpp mplayerxp/libmpstream2/s_file.cpp mplayerxp/libmpstream2/s_ftp.cpp mplayerxp/libmpstream2/s_lavc.cpp mplayerxp/libmpstream2/s_network.cpp mplayerxp/libmpstream2/s_oss.cpp mplayerxp/libmpstream2/s_rtsp.cpp mplayerxp/libmpstream2/s_tv.cpp mplayerxp/libmpstream2/s_udp.cpp mplayerxp/libmpstream2/s_vcdnav.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h Modified: mplayerxp/input2/in_msg.h =================================================================== --- mplayerxp/input2/in_msg.h 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/input2/in_msg.h 2012-12-21 17:47:42 UTC (rev 594) @@ -1,7 +1,6 @@ #ifndef IN_MSG_H #define IN_MSG_H -#define MSGT_CLASS MSGT_INPUT #include "mpxp_msg.h" namespace mpxp { Modified: mplayerxp/libmpdemux/demuxer_info.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -36,12 +36,12 @@ MPXP_Rc Demuxer_Info::add(unsigned opt, const char *param) { if(!opt || opt > INFOT_MAX) { - MSG_WARN("Unknown info type %u\n",opt); + mpxp_warn<<"Unknown info type "<<opt<<std::endl; return MPXP_False; } opt--; if(id[opt]) { - MSG_V( "Demuxer info '%s' already present as '%s'!\n",info_names[opt],id[opt]); + mpxp_v<<"Demuxer info '"<<info_names[opt]<<"' already present as '"<<id[opt]<<"'!"<<std::endl; delete id[opt]; } id[opt]=nls_recode2screen_cp(sub_data.cp,param,strlen(param)); @@ -51,10 +51,10 @@ int Demuxer_Info::print(const std::string& filename) const { unsigned i; - MSG_HINT(" CLIP INFO (%s):\n",filename.c_str()); + mpxp_hint<<" CLIP INFO ("<<filename<<"):"<<std::endl; for(i=0;i<INFOT_MAX;i++) if(id[i]) - MSG_HINT(" %s: %s\n",info_names[i],id[i]); + mpxp_hint<<" "<<info_names[i]<<": "<<id[i]<<std::endl; return 0; } Modified: mplayerxp/libmpdemux/demuxer_r.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -39,8 +39,7 @@ float retval; Demuxer* demuxer=ds->demuxer; mpxp_context().engine().xp_core->initial_apts_corr.need_correction=0; - MSG_DBG2("initial_apts from: stream_pts=%f pts_bytes=%u got_bytes=%u i_bps=%u\n" - ,ds->pts,ds->tell_pts(),nbytes,((sh_audio_t*)ds->demuxer->audio->sh)->i_bps); + mpxp_dbg2<<"initial_apts from: stream_pts="<<ds->pts<<" pts_bytes="<<ds->tell_pts()<<" got_bytes="<<nbytes<<" i_bps="<<(((sh_audio_t*)ds->demuxer->audio->sh)->i_bps)<<std::endl; /* FIXUP AUDIO PTS*/ if((demuxer->file_format == Demuxer::Type_MPEG_ES || demuxer->file_format == Demuxer::Type_MPEG4_ES || @@ -55,7 +54,7 @@ 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); + mpxp_v<<"***PTS discontinuity happens*** correct audio "<<ds->pts<<" pts as "<<ds->pts_corr<<std::endl; } if(ds->pts>1.0) ds->pts_flags=1; if(!ds->eof) ds->prev_pts=ds->pts+ds->pts_corr; @@ -69,7 +68,7 @@ mpxp_context().engine().xp_core->initial_apts_corr.nbytes=nbytes; retval = ds->pts; } - MSG_DBG2("initial_apts is: %f\n",retval); + mpxp_dbg2<<"initial_apts is: "<<retval<<std::endl; return retval; } Modified: mplayerxp/libmpdemux/demuxer_stream.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -69,12 +69,10 @@ // _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); + mpxp_dbg2<<"DEMUX: Append packet: len="<<dp->length()<<" pts="<<dp->pts<<" pos="<<(unsigned int)dp->pos<<" [_packs: A="<<demuxer->audio->_packs<<" V="<<demuxer->video->_packs<<"]"<<std::endl; } 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); + mpxp_dbg2<<"DEMUX: Skip packet: len="<<dp->length()<<" pts="<<dp->pts<<" pos="<<(unsigned int)dp->pos<<" [_packs: A="<<demuxer->audio->_packs<<" V="<<demuxer->video->_packs<<"]"<<std::endl; } void Demuxer_Stream::read_packet(Stream *stream,int len,float _pts,off_t _pos,dp_flags_e _flags){ @@ -86,7 +84,7 @@ dp->flags=_flags; // append packet to DS stream: add_packet(dp); - MSG_DBG2("ds_read_packet(%u,%f,%llu,%i)\n",len,pts,pos,flags); + mpxp_dbg2<<"ds_read_packet("<<len<<","<<pts<<","<<pos<<","<<flags<<")"<<std::endl; } // return value: @@ -96,10 +94,10 @@ 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"); - else if(this==demuxer->video) MSG_DBG3("ds_fill_buffer(d_video) called\n"); - else if(this==demuxer->sub) MSG_DBG3("ds_fill_buffer(d_sub) called\n"); - else MSG_DBG3("ds_fill_buffer(unknown %p) called\n",this); + if(this==demuxer->audio) mpxp_dbg3<<"ds_fill_buffer(d_audio) called"<<std::endl; + else if(this==demuxer->video) mpxp_dbg3<<"ds_fill_buffer(d_video) called"<<std::endl; + else if(this==demuxer->sub) mpxp_dbg3<<"ds_fill_buffer(d_sub) called"<<std::endl; + else mpxp_dbg3<<"ds_fill_buffer(unknown) called"<<std::endl; } while(1){ if(_packs){ @@ -127,24 +125,24 @@ return 1; //ds->_buffer_size; } if(demuxer->audio->_bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyAudioInBuffer,demuxer->audio->_packs,demuxer->audio->_bytes); - MSG_HINT(MSGTR_MaybeNI); + mpxp_err<<"[Demuxer]:"<<MSGTR_TooManyAudioInBuffer<<":"<<demuxer->audio->_packs<<" "<<demuxer->audio->_bytes<<"bytes"<<std::endl; + mpxp_hint<<MSGTR_MaybeNI<<std::endl; break; } if(demuxer->video->_bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->_packs,demuxer->video->_bytes); - MSG_HINT(MSGTR_MaybeNI); + mpxp_err<<"[Demuxer]:"<<MSGTR_TooManyVideoInBuffer<<":"<<demuxer->video->_packs<<" "<<demuxer->video->_bytes<<"bytes"<<std::endl; + mpxp_hint<<MSGTR_MaybeNI<<std::endl; break; } if(!demuxer->demux(this)){ - MSG_DBG2("ds_fill_buffer: demuxer->demux() failed\n"); + mpxp_dbg2<<"ds_fill_buffer: demuxer->demux() failed"<<std::endl; break; // EOF } } _buffer_pos=_buffer_size=0; _buffer=NULL; _current=NULL; - MSG_V("ds_fill_buffer: EOF reached (stream: %s) \n",this==demuxer->audio?"audio":"video"); + mpxp_v<<"ds_fill_buffer: EOF reached (stream: "<<(this==demuxer->audio?"audio":"video")<<")"<<std::endl; eof=1; check_pin("demuxer",pin,DS_PIN); return 0; @@ -260,13 +258,13 @@ 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); - MSG_HINT(MSGTR_MaybeNI); + mpxp_err<<"[Demuxer]:"<<MSGTR_TooManyAudioInBuffer<<":"<<demuxer->audio->_packs<<" "<<demuxer->audio->_bytes<<"bytes"<<std::endl; + mpxp_hint<<MSGTR_MaybeNI<<std::endl; return -1; } if(demuxer->video->_bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demuxer->video->_packs,demuxer->video->_bytes); - MSG_HINT(MSGTR_MaybeNI); + mpxp_err<<"[Demuxer]:"<<MSGTR_TooManyVideoInBuffer<<":"<<demuxer->video->_packs<<" "<<demuxer->video->_bytes<<"bytes"<<std::endl; + mpxp_hint<<MSGTR_MaybeNI<<std::endl; return -1; } if(!demuxer->fill_buffer(this)) return -1; Modified: mplayerxp/libmpstream2/cache2.cpp =================================================================== --- mplayerxp/libmpstream2/cache2.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/cache2.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -3,10 +3,6 @@ using namespace mpxp; #include <algorithm> -#define READ_USLEEP_TIME 10000 -#define FILL_USLEEP_TIME 50000 -#define PREFILL_SLEEP_TIME 200 - #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -30,9 +26,12 @@ #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 */ +static const int READ_USLEEP_TIME=10000; +static const int FILL_USLEEP_TIME=50000; +static const int PREFILL_SLEEP_TIME=200; +static const int CPF_EMPTY=0x00000001UL; +static const int CPF_EOF=0x80000000UL; +static const int CPF_DONE=0x40000000UL; /* special case for dvd packets to exclude them from sending again */ struct cache_packet_t { off_t filepos; /* some nav-packets have length so we need to know real pos of data packet */ @@ -63,55 +62,45 @@ char* mem; }; -#if 0 -#define MSG_CH MSG_V -#else -#define MSG_CH(...) -#endif +inline void CACHE2_LOCK(cache_vars_t& cv) { pthread_mutex_lock(&cv.mutex); } +inline void CACHE2_UNLOCK(cache_vars_t& cv) { pthread_mutex_unlock(&cv.mutex); } -#define CACHE2_LOCK(cv) { MSG_CH("CACHE2_LOCK\n"); pthread_mutex_lock(&cv->mutex); } -#define CACHE2_UNLOCK(cv) { MSG_CH("CACHE2_UNLOCK\n");pthread_mutex_unlock(&cv->mutex); } +inline void CACHE2_TLOCK(cache_vars_t& cv) { pthread_mutex_lock(&cv.mutex); } +inline void CACHE2_TUNLOCK(cache_vars_t& cv) { pthread_mutex_unlock(&cv.mutex); } -#define CACHE2_TLOCK(cv) { MSG_CH("CACHE2_TLOCK\n"); pthread_mutex_lock(&cv->mutex); } -#define CACHE2_TUNLOCK(cv) { MSG_CH("CACHE2_TUNLOCK\n");pthread_mutex_unlock(&cv->mutex); } +inline void CACHE2_PACKET_LOCK(cache_packet_t& c) { pthread_mutex_lock(&c.cp_mutex); } +inline void CACHE2_PACKET_UNLOCK(cache_packet_t& c) { pthread_mutex_unlock(&c.cp_mutex); } -#define CACHE2_PACKET_LOCK(cidx) { MSG_CH("CACHE2_PACKET_LOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } -#define CACHE2_PACKET_UNLOCK(cidx) { MSG_CH("CACHE2_PACKET_UNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } +inline void CACHE2_PACKET_TLOCK(cache_packet_t& c) { pthread_mutex_lock(&c.cp_mutex); } +inline void CACHE2_PACKET_TUNLOCK(cache_packet_t& c) { pthread_mutex_unlock(&c.cp_mutex); } -#define CACHE2_PACKET_TLOCK(cidx) { MSG_CH("CACHE2_PACKET_TLOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } -#define CACHE2_PACKET_TUNLOCK(cidx) { MSG_CH("CACHE2_PACKET_TUNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } +inline off_t START_FILEPOS(cache_vars_t& c) { return c.packets[c.first].filepos; } +inline off_t END_FILEPOS(cache_vars_t& c) { return c.packets[c.last].filepos+c.packets[c.last].sp.len; } +inline unsigned CP_NEXT(cache_vars_t& c,unsigned idx) { return (idx+1)%c.npackets; } -#define START_FILEPOS(c) ((c)->packets[(c)->first].filepos) -#define END_FILEPOS(c) ((c)->packets[(c)->last].filepos+(c)->packets[(c)->last].sp.len) -#define CP_NEXT(c,idx) (((idx)+1)%(c)->npackets) - #ifdef __i386__ -#define COREDUMP() { __asm __volatile(".short 0xffff":::"memory"); } +inline void COREDUMP() { __asm __volatile(".short 0xffff":::"memory"); } #else -#define COREDUMP() +inline void COREDUMP() {} #endif -#if 0 -#define C2_ASSERT(cond) if(cond) { MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); COREDUMP(); } -#else -#define C2_ASSERT(cond) if(cond) MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); -#endif +inline void C2_ASSERT(int cond) { if(cond) MSG_FATAL("internal error at cache2.c: (%i)\n",cond); } static int __FASTCALL__ c2_cache_fill(cache_vars_t* c){ int len,in_cache,legacy_eof,seek_eof; off_t readpos,new_start; unsigned cidx,cp; - CACHE2_TLOCK(c); + CACHE2_TLOCK(*c); readpos=c->read_filepos; - in_cache=(readpos>=START_FILEPOS(c)&&readpos<END_FILEPOS(c)); + 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(); seek_eof=0; if(!in_cache && c->stream->type()&Stream::Type_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)); + ,new_start,in_cache,START_FILEPOS(*c),readpos,END_FILEPOS(*c)); if(c->stream->eof() || c->eof) c->stream->reset(); c->stream->seek(new_start); if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } @@ -119,31 +108,31 @@ c->last=c->first; 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)); + MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(*c)); } else { /* find new start of buffer according on readpos */ cidx=c->first; do { if((new_start>=c->packets[cidx].filepos&&new_start<c->packets[cidx].filepos+c->packets[cidx].sp.len) && !c->packets[cidx].sp.type) break; - cidx=CP_NEXT(c,cidx); + cidx=CP_NEXT(*c,cidx); }while(cidx!=c->first); - MSG_DBG2("CACHE2: Assigning first as %p for %lli\n",c->first,START_FILEPOS(c)); + MSG_DBG2("CACHE2: Assigning first as %p for %lli\n",c->first,START_FILEPOS(*c)); c->first=cidx; } - CACHE2_TUNLOCK(c); - if(CP_NEXT(c,c->last) == c->first || c->eof) { + CACHE2_TUNLOCK(*c); + if(CP_NEXT(*c,c->last) == c->first || c->eof) { MSG_DBG2("CACHE2: cache full\n"); return 0; /* cache full */ } len=0; - cp=cidx=c->last==c->first?c->first:CP_NEXT(c,c->last); - do { CACHE2_PACKET_TLOCK(cidx); c->packets[cidx].state|=CPF_EMPTY; CACHE2_PACKET_TUNLOCK(cidx); cidx=CP_NEXT(c,cidx); } while(cidx!=c->first); + cp=cidx=c->last==c->first?c->first:CP_NEXT(*c,c->last); + do { CACHE2_PACKET_TLOCK(c->packets[cidx]); c->packets[cidx].state|=CPF_EMPTY; CACHE2_PACKET_TUNLOCK(c->packets[cidx]); cidx=CP_NEXT(*c,cidx); } while(cidx!=c->first); cidx=cp; c->in_fill=1; while(1) { - CACHE2_PACKET_TLOCK(cidx); + CACHE2_PACKET_TLOCK(c->packets[cidx]); c->packets[cidx].sp.len=c->sector_size; c->packets[cidx].filepos = c->stream->tell(); c->stream->read(c->packets[cidx].sp.buf,c->packets[cidx].sp.len); @@ -159,27 +148,27 @@ else legacy_eof=0; if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { /* EOF */ - MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(c),END_FILEPOS(c)); + MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(*c),END_FILEPOS(*c)); c->packets[cidx].state|=CPF_EOF; 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_info->mrl,strerror(errno)); errno=0; } - CACHE2_PACKET_TUNLOCK(cidx); + CACHE2_PACKET_TUNLOCK(c->packets[cidx]); break; } if(c->packets[cidx].sp.type == 0) len += c->packets[cidx].sp.len; c->last=cidx; c->packets[cidx].state&=~CPF_EMPTY; c->packets[cidx].state&=~CPF_DONE; - CACHE2_PACKET_TUNLOCK(cidx); - cidx=CP_NEXT(c,cidx); - MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(c),END_FILEPOS(c)); + CACHE2_PACKET_TUNLOCK(c->packets[cidx]); + cidx=CP_NEXT(*c,cidx); + MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(*c),END_FILEPOS(*c)); if(cidx==c->first) { MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); break; } - CACHE2_TUNLOCK(c); + CACHE2_TUNLOCK(*c); } c->in_fill=0; MSG_DBG2("CACHE2: totally got %u bytes\n",len); @@ -272,11 +261,11 @@ { MSG_DBG2( "c2_stream_fill_buffer\n"); if(c->eof) return 0; - while(c->read_filepos>=END_FILEPOS(c) || c->read_filepos<START_FILEPOS(c)) + while(c->read_filepos>=END_FILEPOS(*c) || c->read_filepos<START_FILEPOS(*c)) { if(c->eof) break; usleep(READ_USLEEP_TIME); // 10ms - MSG_DBG2("Waiting for %lli in %lli %lli\n",c->read_filepos,START_FILEPOS(c),END_FILEPOS(c)); + MSG_DBG2("Waiting for %lli in %lli %lli\n",c->read_filepos,START_FILEPOS(*c),END_FILEPOS(*c)); continue; // try again... } return c->eof?0:1; @@ -290,12 +279,12 @@ c->stream->reset(); cidx=c->first; was_eof=0; - do{ was_eof |= (c->packets[cidx].state&CPF_EOF); c->packets[cidx].state&=~CPF_EOF; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); + do{ was_eof |= (c->packets[cidx].state&CPF_EOF); c->packets[cidx].state&=~CPF_EOF; cidx=CP_NEXT(*c,cidx); }while(cidx!=c->first); c->eof=0; if(was_eof) { cidx=c->first; - do{ c->packets[cidx].state|=CPF_EMPTY; cidx=CP_NEXT(c,cidx); }while(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->seek(c->read_filepos); @@ -304,43 +293,43 @@ static int __FASTCALL__ c2_stream_seek_long(cache_vars_t* c,off_t pos){ - MSG_DBG2("CACHE2_SEEK: %lli,%lli,%lli <> %lli\n",START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),pos); - if(pos<0/* || pos>END_FILEPOS(c)*/) { c->eof=1; return 0; } + MSG_DBG2("CACHE2_SEEK: %lli,%lli,%lli <> %lli\n",START_FILEPOS(*c),c->read_filepos,END_FILEPOS(*c),pos); + if(pos<0/* || pos>END_FILEPOS(*c)*/) { c->eof=1; return 0; } while(c->in_fill) yield_timeslice(); - CACHE2_LOCK(c); + CACHE2_LOCK(*c); if(c->eof) c2_stream_reset(c); C2_ASSERT(pos < c->stream->start_pos()); c->read_filepos=pos; - CACHE2_UNLOCK(c); + CACHE2_UNLOCK(*c); c2_stream_fill_buffer(c); - return c->eof?pos<END_FILEPOS(c)?1:0:1; + return c->eof?pos<END_FILEPOS(*c)?1:0:1; } static unsigned __FASTCALL__ c2_find_packet(cache_vars_t* c,off_t pos) { unsigned retval; - CACHE2_LOCK(c); + CACHE2_LOCK(*c); retval = c->first; - CACHE2_UNLOCK(c); + CACHE2_UNLOCK(*c); while(1) { - CACHE2_PACKET_LOCK(retval); - while(c->packets[retval].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(retval); usleep(0); CACHE2_PACKET_LOCK(retval); } + CACHE2_PACKET_LOCK(c->packets[retval]); + while(c->packets[retval].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(c->packets[retval]); usleep(0); CACHE2_PACKET_LOCK(c->packets[retval]); } if((pos >= c->packets[retval].filepos && pos < c->packets[retval].filepos+c->packets[retval].sp.len && !c->packets[retval].sp.type) || (c->packets[retval].state&CPF_EOF)) break; /* packet is locked */ - CACHE2_PACKET_UNLOCK(retval); - CACHE2_LOCK(c); - retval=CP_NEXT(c,retval); + CACHE2_PACKET_UNLOCK(c->packets[retval]); + CACHE2_LOCK(*c); + retval=CP_NEXT(*c,retval); if(retval==c->first) { MSG_DBG2("Can't find packet for offset %lli\n",pos); - CACHE2_UNLOCK(c); + CACHE2_UNLOCK(*c); return UINT_MAX; } - CACHE2_UNLOCK(c); + CACHE2_UNLOCK(*c); } return retval; } @@ -362,7 +351,7 @@ c->packets[i].sp.len<0 || c->packets[i].state&CPF_EMPTY || (c->packets[i].sp.len==0 && c->packets[i].sp.type)) break; - CACHE2_PACKET_LOCK(i); + CACHE2_PACKET_LOCK(c->packets[i]); *len += c->packets[i].sp.len; (*npackets)++; } @@ -376,7 +365,7 @@ { cidx = c2_find_packet(c,pos); if(cidx!=UINT_MAX || c->eof) break; - if(cidx!=UINT_MAX) CACHE2_PACKET_UNLOCK(cidx); + if(cidx!=UINT_MAX) CACHE2_PACKET_UNLOCK(c->packets[cidx]); c2_stream_fill_buffer(c); } c2_get_continious_mem(c,cidx,len,npackets); @@ -388,20 +377,20 @@ MSG_DBG2("next_packet: start=%p cur=%i\n",c->first,cidx); while(1) { - CACHE2_LOCK(c); - cidx=CP_NEXT(c,cidx); - CACHE2_UNLOCK(c); - CACHE2_PACKET_LOCK(cidx); - while(c->packets[cidx].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(cidx); usleep(0); CACHE2_PACKET_LOCK(cidx); } + CACHE2_LOCK(*c); + cidx=CP_NEXT(*c,cidx); + CACHE2_UNLOCK(*c); + CACHE2_PACKET_LOCK(c->packets[cidx]); + while(c->packets[cidx].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(c->packets[cidx]); usleep(0); CACHE2_PACKET_LOCK(c->packets[cidx]); } if(cidx==c->first) { - CACHE2_PACKET_UNLOCK(cidx); + CACHE2_PACKET_UNLOCK(c->packets[cidx]); c2_stream_fill_buffer(c); cidx = c2_find_packet(c,c->read_filepos); break; } if(!c->packets[cidx].sp.type) break; /* packet is locked */ - CACHE2_PACKET_UNLOCK(cidx); + CACHE2_PACKET_UNLOCK(c->packets[cidx]); } c2_get_continious_mem(c,cidx,len,npackets); MSG_DBG2("next_packet: rp: %lli fp: %lli len %lu type %i\n",c->read_filepos,c->packets[cidx].filepos,c->packets[cidx].sp.len,c->packets[cidx].sp.type); @@ -415,18 +404,18 @@ unsigned cur,i,npackets; cur=c2_wait_packet(c,c->read_filepos,&mlen,&npackets); eof = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; - if(cur==UINT_MAX||eof) { if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); return 0; } + if(cur==UINT_MAX||eof) { if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(c->packets[cur]); return 0; } MSG_DBG2( "c2_stream_read %i bytes from %lli\n",total,c->read_filepos); while(len){ int x; if(c->read_filepos>=c->packets[cur].filepos+mlen){ - for(i=0;i<npackets;i++) CACHE2_PACKET_UNLOCK(cur+i); + for(i=0;i<npackets;i++) CACHE2_PACKET_UNLOCK(c->packets[cur+i]); mlen=len; cur=c2_next_packet(c,cur,&mlen,&npackets); eof = cur!=UINT_MAX?(c->packets[cur].state&CPF_EOF):1; if(eof) { - CACHE2_PACKET_UNLOCK(cur); + CACHE2_PACKET_UNLOCK(c->packets[cur]); return total-len; // EOF } } @@ -440,7 +429,7 @@ mem+=x; len-=x; c->read_filepos+=x; } - CACHE2_PACKET_UNLOCK(cur); + CACHE2_PACKET_UNLOCK(c->packets[cur]); if(mp_conf.verbose>2) { MSG_DBG2( "c2_stream_read got %u bytes ",total); @@ -457,8 +446,8 @@ static int __FASTCALL__ c2_stream_seek(cache_vars_t* c,off_t pos) { - MSG_DBG2( "c2_seek to %lli (%lli %lli) %i\n",(long long)pos,(long long)START_FILEPOS(c),(long long)END_FILEPOS(c),c->first); - if(pos>=START_FILEPOS(c) && pos < END_FILEPOS(c)) + MSG_DBG2( "c2_seek to %lli (%lli %lli) %i\n",(long long)pos,(long long)START_FILEPOS(*c),(long long)END_FILEPOS(*c),c->first); + if(pos>=START_FILEPOS(*c) && pos < END_FILEPOS(*c)) { c->read_filepos=pos; return pos; @@ -476,7 +465,7 @@ unsigned cur; int retval; cur = c2_find_packet(c,c->read_filepos); - if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); + if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(c->packets[cur]); retval = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; MSG_DBG2("stream_eof: %i\n",retval); return retval; @@ -490,7 +479,7 @@ { if(eof) c->packets[cur].state|=CPF_EOF; else c->packets[cur].state&=~CPF_EOF; - CACHE2_PACKET_UNLOCK(cur); + CACHE2_PACKET_UNLOCK(c->packets[cur]); } c->eof=eof; MSG_DBG2("stream_set_eof: %i\n",eof); @@ -524,17 +513,17 @@ c->pth=mpxp_context().engine().xp_core->mpxp_threads[rc]; // wait until cache is filled at least prefill_init % MSG_V("CACHE_PRE_INIT: %lld [%lld] %lld pre:%d eof:%d SS=%u \n", - 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){ + 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(!(type()&Stream::Type_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); + 100.0*(float)(END_FILEPOS(*c)-c->read_filepos)/(float)(c->buffer_size), + END_FILEPOS(*c)-c->read_filepos); else MSG_V("\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); + 100.0*(float)(END_FILEPOS(*c)-c->read_filepos)/(float)(c->buffer_size), + END_FILEPOS(*c)-c->read_filepos); if(c->eof) break; // file is smaller than prefill size if(mpdemux_check_interrupt(libinput,PREFILL_SLEEP_TIME)) return; Modified: mplayerxp/libmpstream2/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream2/s_cdd.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_cdd.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -53,7 +53,7 @@ char *device; UNUSED(flags); if(filename=="help") { - MSG_HINT("Usage: cdda://<@device><#trackno>\n"); + mpxp_hint<<"Usage: cdda://<@device><#trackno>"<<std::endl; return MPXP_False; } param=mrl_parse_line(filename,NULL,NULL,&device,NULL); @@ -103,7 +103,7 @@ case SCTRL_AUD_GET_CHANNELS: *(int *)args=priv->channels(track_idx); if(*(int *)args<=0) *(int *)args=2; - MSG_V("cdda channels: %u\n",*(int *)args); + mpxp_v<<"cdda channels: "<<*(int *)args<<std::endl; return MPXP_Ok; case SCTRL_AUD_GET_SAMPLERATE: *(int *)args = 44100; @@ -150,7 +150,7 @@ MPXP_Rc retval; UNUSED(flags); if(filename=="help") { - MSG_HINT("Usage: cddb://<@device><#trackno>\n"); + mpxp_hint<<"Usage: cddb://<@device><#trackno>"<<std::endl; return MPXP_False; } param=mrl_parse_line(filename,NULL,NULL,&device,NULL); Modified: mplayerxp/libmpstream2/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream2/s_dvdnav.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_dvdnav.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -130,7 +130,7 @@ /* report the title?! */ if (dvdnav_get_title_string(dvdnav,&title_str)==DVDNAV_STATUS_OK) { - MSG_INFO("Title: '%s'\n",title_str); + mpxp_info<<"Title: "<<title_str<<std::endl; } return MPXP_Ok; } @@ -144,11 +144,11 @@ case 0: return; case 0xff: - MSG_V( "Sleeping indefinately\n" ); + mpxp_v<<"Sleeping indefinately"<<std::endl; sleeping=2; break; default: - MSG_V( "Sleeping %d sec(s)\n", seconds ); + mpxp_v<<"Sleeping "<<seconds<<"sec(s)"<<std::endl; sleep_until = GetTimer();// + seconds*1000000; sleeping=1; break; @@ -167,10 +167,10 @@ } dvdnav_still_skip(dvdnav); // continue past... sleeping=0; - MSG_V("%s: woke up!\n",__FUNCTION__); + mpxp_v<<"woke up!"<<std::endl; } dvd_nav_still=0; - MSG_V("%s: active\n",__FUNCTION__); + mpxp_v<<"active"<<std::endl; return 0; } @@ -187,15 +187,15 @@ filename=_filename; param=mrl_parse_line(_filename,NULL,NULL,&dvd_device,NULL); if(strcmp(param,"help") == 0) { - MSG_HINT("Usage: dvdnav://<title>,<chapter>\n"); + mpxp_hint<<"Usage: dvdnav://<title>,<chapter>"<<std::endl; return MPXP_False; } param=mrl_parse_params(param,dvdnavopts_conf); if (new_stream(dvd_device?dvd_device:DEFAULT_DVD_DEVICE)!=MPXP_Ok) { - MSG_ERR(MSGTR_CantOpenDVD,dvd_device?dvd_device:DEFAULT_DVD_DEVICE); + mpxp_err<<MSGTR_CantOpenDVD<<":"<<(dvd_device?dvd_device:DEFAULT_DVD_DEVICE)<<std::endl; if(!dvd_device) { if (new_stream(DEFAULT_CDROM_DEVICE)!=MPXP_Ok) - MSG_ERR(MSGTR_CantOpenDVD,DEFAULT_CDROM_DEVICE); + mpxp_err<<MSGTR_CantOpenDVD<<":"<<DEFAULT_CDROM_DEVICE<<std::endl; else goto dvd_ok; } @@ -214,16 +214,16 @@ dvdnav_set_PGC_positioning_flag(dvdnav,1); ntitles=0; dvdnav_get_number_of_titles(dvdnav,&ntitles); - MSG_INFO(MSGTR_DVDnumTitles,ntitles); + mpxp_info<<MSGTR_DVDnumTitles<<":"<<ntitles<<std::endl; if(dvdnav_conf.title != -1) { int nparts; dvdnav_get_number_of_parts(dvdnav,dvdnav_conf.title,&nparts); - MSG_INFO(MSGTR_DVDnumChapters,dvdnav_conf.title,nparts); + mpxp_info<<MSGTR_DVDnumChapters<<":"<<dvdnav_conf.title<<":"<<nparts<<std::endl; if(dvdnav_conf.chapter != -1) dvdnav_part_play(dvdnav,dvdnav_conf.title,dvdnav_conf.chapter); else dvdnav_title_play(dvdnav,dvdnav_conf.title); cpos=2048; /* disallow dvdnav_reset */ dvdnav_current_title_info(dvdnav,&dvdnav_conf.title,&dvdnav_conf.chapter); - MSG_INFO("Playing %i part of %i title\n",dvdnav_conf.chapter,dvdnav_conf.title); + mpxp_info<<"Playing "<<dvdnav_conf.chapter<<" part of "<<dvdnav_conf.title<<" title"<<std::endl; } return MPXP_Ok; } @@ -248,7 +248,7 @@ if (!de->details) return; if (dvd_nav_still) { - MSG_V("%s: got a stream_read while I should be asleep!\n",__FUNCTION__); + mpxp_v<<"got a stream_read while I should be asleep!"<<std::endl; de->event=DVDNAV_STILL_FRAME; de->len=0; return; @@ -256,7 +256,7 @@ done=0; while(!done) { if (dvdnav_get_next_block(dvdnav,reinterpret_cast<uint8_t*>(de->details),&event,&de->len)!=DVDNAV_STATUS_OK) { - MSG_ERR( "Error getting next block from DVD (%s)\n",dvdnav_err_to_string(dvdnav) ); + mpxp_err<<"Error getting next block from DVD: "<<dvdnav_err_to_string(dvdnav)<<std::endl; de->len=-1; } if(event == DVDNAV_STILL_FRAME) { @@ -275,13 +275,11 @@ _this=dvdnav_get_current_nav_pci(dvdnav); vobu_s_pts=_this->pci_gi.vobu_s_ptm/90000.; vobu_e_pts=_this->pci_gi.vobu_e_ptm/90000.; - MSG_V("Handling NAV_PACKET: vobu_s_ptm=%f vobu_e_ptm=%f e_eltm=%f\n" - ,vobu_s_pts - ,vobu_e_pts - ,(float)_this->pci_gi.e_eltm.second+_this->pci_gi.e_eltm.minute*60.+_this->pci_gi.e_eltm.hour*3600.); + mpxp_v<<"Handling NAV_PACKET: vobu_s_ptm="<<vobu_s_pts + <<" vobu_e_ptm="<<vobu_e_pts<<" e_eltm="<<((float)_this->pci_gi.e_eltm.second+_this->pci_gi.e_eltm.minute*60.+_this->pci_gi.e_eltm.hour*3600.)<<std::endl; if(vobu_s_pts < vobu_e_pts) { _stream_pts += vobu_e_pts-vobu_s_pts; - MSG_V("DVD's discontinuities found! Applying delta: %f\n",_stream_pts); + mpxp_v<<"DVD's discontinuities found! Applying delta: "<<_stream_pts<<std::endl; } else _stream_pts = vobu_s_pts; vobu_s_pts = vobu_s_pts; @@ -291,13 +289,11 @@ dvdnav_current_title_info(dvdnav, &ct, &cc); if(ct<=0) { menu_mode=1; - MSG_V("entering menu mode: %i %i\n",ct,cc); - MSG_V("vmgm: %i vtsm: %i\n", - dvdnav_is_domain_vmgm(dvdnav), - dvdnav_is_domain_vtsm(dvdnav)); + mpxp_v<<"entering menu mode: "<<ct<<" "<<cc<<std::endl; + mpxp_v<<"vmgm: "<<dvdnav_is_domain_vmgm(dvdnav)<<" vtsm: "<<dvdnav_is_domain_vtsm(dvdnav)<<std::endl; } else { menu_mode=0; - MSG_V("leaving menu mode: %i %i\n",ct,cc); + mpxp_v<<"leaving menu mode: "<<ct<<" "<<cc<<std::endl; } } else done=1; } @@ -402,7 +398,7 @@ dvdnav_highlight_event_t *_hlev = (dvdnav_highlight_event_t*)(sp->buf); int btnum; int display_mode=1; - MSG_V("DVDNAV_HIGHLIGHT: %i %i %i %i\n",_hlev->sx,_hlev->sy,_hlev->ex,_hlev->ey); + mpxp_v<<"DVDNAV_HIGHLIGHT: "<<_hlev->sx<<" "<<_hlev->sy<<" "<<_hlev->ex<<" "<<_hlev->ey<<std::endl; if (!dvdnav) return; memcpy(&hlev,_hlev,sizeof(dvdnav_highlight_event_t)); pnavpci = dvdnav_get_current_nav_pci (dvdnav); @@ -435,7 +431,7 @@ } case DVDNAV_STILL_FRAME: { const dvdnav_still_event_t *still_event = (const dvdnav_still_event_t*)(sp->buf); - MSG_DBG2( "######## DVDNAV Event: Still Frame: %d sec(s)\n", still_event->length ); + mpxp_dbg2<<"######## DVDNAV Event: Still Frame: "<<still_event->length<<" sec(s)"<<std::endl; while (stream_sleeping()) { yield_timeslice(); } @@ -443,22 +439,15 @@ break; } case DVDNAV_STOP: - MSG_DBG2( "DVDNAV Event: Nav Stop\n" ); + mpxp_dbg2<<"DVDNAV Event: Nav Stop"<<std::endl; break; case DVDNAV_NOP: - MSG_V("DVDNAV Event: Nav NOP\n"); + mpxp_v<<"DVDNAV Event: Nav NOP"<<std::endl; break; #if 0 case DVDNAV_SPU_STREAM_CHANGE: { const dvdnav_spu_stream_change_event_t * stream_change=(const dvdnav_spu_stream_change_event_t*)(sp->buf); - MSG_DBG2("DVDNAV Event: Nav SPU Stream Change: phys_wide: %d phys_letterbox: %d phys_panscan: %d logical: %d\n", - stream_change->physical_wide, - stream_change->physical_letterbox, - stream_change->physical_pan_scan, - stream_change->logical); if (mpxp_context().video().output->spudec && mp_conf.dvdsub_id!=stream_change->physical_wide) { - MSG_DBG2("d_dvdsub->id change: was %d is now %d\n", - d_dvdsub->id,stream_change->physical_wide); // FIXME: need a better way to change SPU id d_dvdsub->id=mp_conf.dvdsub_id=stream_change->physical_wide; if (mpxp_context().video().output->spudec) spudec_reset(mpxp_context().video().output->spudec); @@ -468,14 +457,9 @@ case DVDNAV_AUDIO_STREAM_CHANGE: { int aid_temp; const dvdnav_audio_stream_change_event_t *stream_change = (const dvdnav_audio_stream_change_event_t*)(sp->buf); - MSG_DBG2("DVDNAV Event: Nav Audio Stream Change: phys: %d logical: %d\n", - stream_change->physical, - stream_change->logical); aid_temp=stream_change->physical; if (aid_temp>=0) aid_temp+=128; // FIXME: is this sane? if (d_audio && mp_conf.audio_id!=aid_temp) { - MSG_DBG2("d_audio->id change: was %d is now %d\n", - d_audio->id,aid_temp); // FIXME: need a bettery way to change audio stream id d_audio->id=mp_conf.dvdsub_id=aid_temp; mpxp_resync_audio_stream(); @@ -485,27 +469,25 @@ #endif case DVDNAV_VTS_CHANGE:{ const dvdnav_vts_change_event_t *evts = (const dvdnav_vts_change_event_t *)(sp->buf); - MSG_V("DVDNAV Event: Nav VTS Change %u\n",evts->new_domain); + mpxp_v<<"DVDNAV Event: Nav VTS Change "<<evts->new_domain<<std::endl; } break; case DVDNAV_CELL_CHANGE: { const dvdnav_cell_change_event_t *ecell=(const dvdnav_cell_change_event_t*)(sp->buf); - MSG_V("DVDNAV_CELL_CHANGE: N=%i pgN=%i cell_start=%f pg_start=%f cell_length=%f pg_length=%f pgc_length=%f\n" - ,ecell->cellN - ,ecell->pgN - ,ecell->cell_start/90000. - ,ecell->pg_start/90000. - ,ecell->cell_length/90000. - ,ecell->pg_length/90000. - ,ecell->pgc_length/90000.); + mpxp_v<<"DVDNAV_CELL_CHANGE: N="<<ecell->cellN + <<" pgN="<<ecell->pgN<<" cell_start="<<(ecell->cell_start/90000.) + <<" pg_start="<<(ecell->pg_start/90000.) + <<" cell_length="<<(ecell->cell_length/90000.) + <<" pg_length="<<(ecell->pg_length/90000.) + <<" pgc_length="<<(ecell->pgc_length/90000.)<<std::endl; } break; case DVDNAV_NAV_PACKET: - MSG_V("DVDNAV Event: Nav Packet\n"); + mpxp_v<<"DVDNAV Event: Nav Packet"<<std::endl; break; case DVDNAV_SPU_CLUT_CHANGE: - MSG_DBG2("DVDNAV Event: Nav SPU CLUT Change\n"); - if(sp->len!=64) MSG_WARN("DVDNAV Event: Nav SPU CLUT Change: %i bytes <> 64\n",sp->len); + mpxp_dbg2<<"DVDNAV Event: Nav SPU CLUT Change"<<std::endl; + if(sp->len!=64) mpxp_warn<<"DVDNAV Event: Nav SPU CLUT Change: "<<sp->len<<" bytes <> 64"<<std::endl; // send new palette to SPU decoder if (mpxp_context().video().output->spudec) spudec_update_palette(mpxp_context().video().output->spudec,(const unsigned int *)(sp->buf)); break; @@ -531,7 +513,7 @@ break; case MP_CMD_DVDNAV_MENU: { int title,part; - MSG_V("Menu call\n"); + mpxp_v<<"Menu call"<<std::endl; dvdnav_current_title_info(dvdnav, &title, &part); if(title>0) { if(dvdnav_menu_call(dvdnav, DVD_MENU_Part) == DVDNAV_STATUS_OK @@ -546,7 +528,7 @@ dvdnav_button_activate(dvdnav,pci); break; default: - MSG_V("Weird DVD Nav cmd %d\n",cmd); + mpxp_v<<"Weird DVD Nav cmd "<<cmd<<std::endl; break; } dvdnav_get_current_highlight(dvdnav, &button); Modified: mplayerxp/libmpstream2/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream2/s_dvdread.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_dvdread.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -5,6 +5,7 @@ s_dvdread - DVDREAD stream interface */ #include <limits> +#include <iomanip> #include "mplayerxp.h" /* fake stdint */ @@ -161,14 +162,13 @@ code=lang[1]|(lang[0]<<8); for(i=0;i<unsigned(nr_of_channels);i++){ if(audio_streams[i].language==code){ - MSG_V("Selected DVD audio channel: %d language: %c%c\n", - audio_streams[i].id, lang[0],lang[1]); + mpxp_v<<"Selected DVD audio channel: "<<audio_streams[i].id<<" language: "<<lang[0]<<lang[1]<<std::endl; return audio_streams[i].id; } } lang+=2; while (lang[0]==',' || lang[0]==' ') ++lang; } - MSG_WARN("No matching DVD audio language found!\n"); + mpxp_warn<<"No matching DVD audio language found!"<<std::endl; return -1; } @@ -180,14 +180,13 @@ code=lang[1]|(lang[0]<<8); for(i=0;i<unsigned(nr_of_subtitles);i++){ if(subtitles[i].language==code){ - MSG_V("Selected DVD subtitle channel: %d language: %c%c\n", - subtitles[i].id, lang[0],lang[1]); + mpxp_v<<"Selected DVD subtitle channel: "<<subtitles[i].id<<" language: "<<lang[0]<<lang[1]<<std::endl; return subtitles[i].id; } } lang+=2; while (lang[0]==',' || lang[0]==' ') ++lang; } - MSG_WARN("No matching DVD subtitle language found!\n"); + mpxp_warn<<"No matching DVD subtitle language found!"<<std::endl; return -1; } @@ -201,7 +200,7 @@ { int ttn,pgc_id,pgn; - MSG_V("dvd_next_title %d\n",dvd_title); + mpxp_v<<"dvd_next_title "<<dvd_title<<std::endl; if(vts_file) ifoClose(vts_file); if(title) DVDCloseFile(title); @@ -210,8 +209,7 @@ */ vts_file = ifoOpen(dvd, tt_srpt->title[dvd_title].title_set_nr ); if( !vts_file ) { - MSG_ERR( MSGTR_DVDnoIFO, - tt_srpt->title[dvd_title].title_set_nr ); + mpxp_err<<MSGTR_DVDnoIFO<<":"<<tt_srpt->title[dvd_title].title_set_nr<<std::endl; ifoClose( vmg_file ); DVDClose( dvd ); return 0; @@ -222,8 +220,7 @@ title = DVDOpenFile( dvd, tt_srpt->title[dvd_title].title_set_nr, DVD_READ_TITLE_VOBS ); if( !title ) { - MSG_ERR( MSGTR_DVDnoVOBs, - tt_srpt->title[dvd_title].title_set_nr ); + mpxp_err<<MSGTR_DVDnoVOBs<<tt_srpt->title[dvd_title].title_set_nr<<std::endl; ifoClose( vts_file ); ifoClose( vmg_file ); DVDClose( dvd ); @@ -282,17 +279,14 @@ // 1 - stereo // 5 - 5.1 audio_streams[nr_of_channels].channels=audio->channels; - MSG_V("[open] audio stream: %d audio format: %s (%s) language: %s aid: %d\n", - nr_of_channels, - dvd_audio_stream_types[ audio->audio_format ], - dvd_audio_stream_channels[ audio->channels ], - tmp, - audio_streams[nr_of_channels].id - ); + mpxp_v<<"[open] audio stream: "<<nr_of_channels + <<" audio format: "<<dvd_audio_stream_types[ audio->audio_format ] + <<" ("<<dvd_audio_stream_channels[ audio->channels ] + <<") language: "<<tmp<<" aid: "<<audio_streams[nr_of_channels].id<<std::endl; nr_of_channels++; } } - MSG_V("[open] number of audio channels on disk: %d.\n",nr_of_channels ); + mpxp_v<<"[open] number of audio channels on disk: "<<nr_of_channels<<std::endl; } /** @@ -322,13 +316,11 @@ else if(video->display_aspect_ratio == 3) /* 16:9 */ subtitles[nr_of_subtitles].id = vts_file->vts_pgcit->pgci_srp[ttn].pgc->subp_control[i] >> 8 & 31; - MSG_V("[open] subtitle ( sid ): %d language: %s\n", - nr_of_subtitles, - tmp ); + mpxp_v<<"[open] subtitle ( sid ): "<<nr_of_subtitles<<" language: "<<tmp<<std::endl; nr_of_subtitles++; } } - MSG_V("[open] number of subtitles on disk: %d\n",nr_of_subtitles ); + mpxp_v<<"[open] number of subtitles on disk: "<<nr_of_subtitles<<std::endl; /** * Determine which program chain we want to watch. This is based on the * chapter number. @@ -350,14 +342,14 @@ if( cur_pgc->cell_playback[cur_cell].block_type == BLOCK_TYPE_ANGLE_BLOCK ) cur_cell+=dvd_angle; cur_pack = cur_pgc->cell_playback[ cur_cell ].first_sector; cell_last_pack=cur_pgc->cell_playback[ cur_cell ].last_sector; - MSG_V( "DVD start cell: %d pack: 0x%X-0x%X \n",cur_cell,cur_pack,cell_last_pack); + mpxp_v<<"DVD start cell: "<<cur_cell<<" pack: 0x"<<std::hex<<cur_pack<<"-0x"<<std::hex<<cell_last_pack<<std::endl; return 1; } int DvdRead_Stream_Interface::next_cell(){ int _next_cell=cur_cell; - MSG_V( "dvd_next_cell: next1=0x%X \n",_next_cell); + mpxp_v<<"dvd_next_cell: next1=0x"<<std::hex<<_next_cell<<std::endl; if( cur_pgc->cell_playback[ _next_cell ].block_type == BLOCK_TYPE_ANGLE_BLOCK ) { while(_next_cell<last_cell) { @@ -365,7 +357,7 @@ ++_next_cell; } } - MSG_V( "dvd_next_cell: next2=0x%X \n",_next_cell); + mpxp_v<<"dvd_next_cell: next2=0x"<<std::hex<<_next_cell<<std::endl; ++_next_cell; if(_next_cell>=last_cell) return -1; // EOF @@ -373,7 +365,7 @@ _next_cell+=dvd_angle; if(_next_cell>=last_cell) return -1; // EOF } - MSG_V( "dvd_next_cell: next3=0x%X \n",_next_cell); + mpxp_v<<"dvd_next_cell: next3=0x"<<std::hex<<_next_cell<<std::endl; return _next_cell; } @@ -394,10 +386,10 @@ if( dsi_pack.vobu_sri.next_vobu != SRI_END_OF_CELL ) { cur_pack= dsi_pack.dsi_gi.nv_pck_lbn + ( dsi_pack.vobu_sri.next_vobu & 0x3fffffff ); - MSG_V( "Navi new pos=0x%X \n",cur_pack); + mpxp_v<<"Navi new pos=0x"<<std::hex<<cur_pack<<std::endl; } else { // end of cell! find next cell! - MSG_V( "--- END OF CELL !!! ---\n"); + mpxp_v<<"--- END OF CELL !!! ---"<<std::endl; cur_pack=cell_last_pack+1; } } @@ -411,7 +403,7 @@ // == BLOCK_TYPE_ANGLE_BLOCK ) cur_cell+=dvd_angle; cur_pack = cur_pgc->cell_playback[ cur_cell ].first_sector; cell_last_pack=cur_pgc->cell_playback[ cur_cell ].last_sector; - MSG_V( "DVD next cell: %d pack: 0x%X-0x%X \n",cur_cell,cur_pack,cell_last_pack); + mpxp_v<<"DVD next cell: "<<cur_cell<<" pack: 0x"<<std::hex<<cur_pack<<"-0x"<<std::hex<<cell_last_pack<<std::endl; } else if(cur_title<last_title) { cur_title++; next_title(cur_title); @@ -454,22 +446,19 @@ > Invalid NAVIpacket! lba=30 gsi_navi=8002F pci_navi=8002F angle=0 */ if(cur_pack != dsi_pack.dsi_gi.nv_pck_lbn){ - MSG_V( "Invalid NAVIpacket! lba=%X gsi_navi=%X pci_navi=%X angle=%X\n" - ,cur_pack - ,dsi_pack.dsi_gi.nv_pck_lbn - ,pci_pack.pci_gi.nv_pck_lbn - ,dsi_pack.sml_agli.data[dvd_angle].address - ); + mpxp_v<<"Invalid NAVIpacket! lba="<<std::hex<<cur_pack + <<" gsi_navi="<<std::hex<<dsi_pack.dsi_gi.nv_pck_lbn + <<" pci_navi="<<std::hex<<pci_pack.pci_gi.nv_pck_lbn + <<" angle=%"<<std::hex<<dsi_pack.sml_agli.data[dvd_angle].address<<std::endl; } else { // process! vobu_s_pts=pci_pack.pci_gi.vobu_s_ptm/90000.; vobu_e_pts=pci_pack.pci_gi.vobu_e_ptm/90000.; packs_left = dsi_pack.dsi_gi.vobu_ea; - MSG_V( "Found NAVI packet! lba=%X angle=%X len=%d vobu_s_pts=%f vobu_e_pts=%f\n" - ,cur_pack,packs_left - ,dsi_pack.sml_agli.data[dvd_angle].address - ,vobu_s_pts,vobu_e_pts); - + mpxp_v<<"Found NAVI packet! lba="<<std::hex<<cur_pack + <<" angle="<<std::hex<<packs_left + <<" len="<<dsi_pack.sml_agli.data[dvd_angle].address + <<" vobu_s_pts="<<vobu_s_pts<<" vobu_e_pts="<<vobu_e_pts<<std::endl; if(angle_seek){ int skip=0; unsigned i; @@ -495,13 +484,13 @@ cur_pack=dsi_pack.dsi_gi.nv_pck_lbn+ dsi_pack.sml_agli.data[dvd_angle].address; angle_seek=0; - MSG_V("Angle-seek synced using sml_agli map! new_lba=0x%X\n",cur_pack); + mpxp_v<<"Angle-seek synced using sml_agli map! new_lba=0x"<<std::hex<<cur_pack<<std::endl; } else { // check if we're in the right cell, jump otherwise: if( (dsi_pack.dsi_gi.vobu_c_idn==cur_pgc->cell_position[cur_cell].cell_nr) && (dsi_pack.dsi_gi.vobu_vob_idn==cur_pgc->cell_position[cur_cell].vob_id_nr) ){ angle_seek=0; - MSG_V("Angle-seek synced by cell/vob IDN search!\n"); + mpxp_v<<"Angle-seek synced by cell/vob IDN search!"<<std::endl; } else { // wrong angle, skip this vobu: cur_pack=dsi_pack.dsi_gi.nv_pck_lbn+ @@ -512,7 +501,7 @@ } if(vobu_s_pts < vobu_e_pts) { _stream_pts += vobu_e_pts-vobu_s_pts; - MSG_V("DVD's discontinuities found! Applying delta: %f\n",_stream_pts); + mpxp_v<<"DVD's discontinuities found! Applying delta: "<<_stream_pts<<std::endl; } else _stream_pts = vobu_s_pts; } @@ -572,8 +561,9 @@ _stream_pts=vobu_s_pts=vobu_e_pts=0.; } - MSG_V( "DVD Seek! lba=0x%X cell=%d packs: 0x%X-0x%X \n", - cur_pack,cur_cell,cur_pgc->cell_playback[ cur_cell ].first_sector,cell_last_pack); + mpxp_v<<"DVD Seek! lba=0x"<<std::hex<<cur_pack + <<" cell="<<cur_cell<<" packs: 0x"<<std::hex<<cur_pgc->cell_playback[ cur_cell ].first_sector + <<"-0x"<<cell_last_pack<<std::endl; // if we're in interleaved multi-angle cell, find the right angle chain! // (read Navi block, and use the seamless angle jump table) @@ -601,7 +591,7 @@ last_title=-1; if(filename=="help" || filename.length()==10) { - MSG_HINT("Usage: dvdread://<@device>#<titleno>-<lasttitle>,<chapter>-<lastchapter>,<angle>\n"); + mpxp_hint<<"Usage: dvdread://<@device>#<titleno>-<lasttitle>,<chapter>-<lastchapter>,<angle>"<<std::endl; return MPXP_False; } args=mrl_parse_line(filename,NULL,NULL,&dvd_device,NULL); @@ -630,12 +620,12 @@ */ dvd = DVDOpen(dvd_device?dvd_device:DEFAULT_DVD_DEVICE); if( !dvd ) { - MSG_ERR(MSGTR_CantOpenDVD,dvd_device?dvd_device:DEFAULT_DVD_DEVICE); + mpxp_err<<MSGTR_CantOpenDVD<<":"<<(dvd_device?dvd_device:DEFAULT_DVD_DEVICE)<<std::endl; if(dvd_device) delete dvd_device; return MPXP_False; } if(dvd_device) delete dvd_device; - MSG_V(MSGTR_DVDwait); + mpxp_v<<MSGTR_DVDwait<<std::endl; /** * Load the video manager to find out the information about the titles on @@ -643,7 +633,7 @@ */ vmg_file = ifoOpen( dvd, 0 ); if( !vmg_file ) { - MSG_ERR( "Can't open VMG info!\n"); + mpxp_err<<"Can't open VMG info!"<<std::endl; DVDClose( dvd ); return MPXP_False; } @@ -651,10 +641,9 @@ /** * Make sure our title number is valid. */ - MSG_INFO( MSGTR_DVDnumTitles, - tt_srpt->nr_of_srpts ); + mpxp_info<<MSGTR_DVDnumTitles<<":"<<tt_srpt->nr_of_srpts<<std::endl; if( dvd_title < 1 || dvd_title > tt_srpt->nr_of_srpts ) { - MSG_ERR( MSGTR_DVDinvalidTitle, dvd_title); + mpxp_err<<MSGTR_DVDinvalidTitle<<":"<<dvd_title<<std::endl; ifoClose( vmg_file ); DVDClose( dvd ); return MPXP_False; @@ -665,17 +654,16 @@ /** * Make sure the chapter number is valid for this title. */ - MSG_INFO( MSGTR_DVDnumChapters, - tt_srpt->title[dvd_title].nr_of_ptts ); + mpxp_info<<MSGTR_DVDnumChapters<<":"<<tt_srpt->title[dvd_title].nr_of_ptts<<std::endl; if( dvd_chapter<1 || dvd_chapter>tt_srpt->title[dvd_title].nr_of_ptts ) { - MSG_ERR( MSGTR_DVDinvalidChapter, dvd_chapter); + mpxp_err<<MSGTR_DVDinvalidChapter<<":"<<dvd_chapter<<std::endl; ifoClose( vmg_file ); DVDClose( dvd ); return MPXP_False; } if( dvd_last_chapter>0 ) { if ( dvd_last_chapter<dvd_chapter || dvd_last_chapter>tt_srpt->title[dvd_title].nr_of_ptts ) { - MSG_ERR( "Invalid DVD last chapter number: %d\n", dvd_last_chapter); + mpxp_err<<"Invalid DVD last chapter number: "<<dvd_last_chapter<<std::endl; ifoClose( vmg_file ); DVDClose( dvd ); return MPXP_False; @@ -686,10 +674,9 @@ /** * Make sure the angle number is valid for this title. */ - MSG_V( MSGTR_DVDnumAngles, - tt_srpt->title[dvd_title].nr_of_angles ); + mpxp_v<<MSGTR_DVDnumAngles<<":"<<tt_srpt->title[dvd_title].nr_of_angles<<std::endl; if( dvd_angle<1 || dvd_angle>tt_srpt->title[dvd_title].nr_of_angles ) { - MSG_ERR( MSGTR_DVDinvalidAngle, dvd_angle); + mpxp_err<<MSGTR_DVDinvalidAngle<<":"<<dvd_angle<<std::endl; ifoClose( vmg_file ); DVDClose( dvd ); return MPXP_False; @@ -708,7 +695,7 @@ _end_pos=(off_t)(cur_pgc->cell_playback[last_cell-1].last_sector)*2048; next_title(dvd_title); - MSG_V( MSGTR_DVDopenOk); + mpxp_ok<<MSGTR_DVDopenOk<<std::endl; spos=0; return MPXP_Ok; Modified: mplayerxp/libmpstream2/s_file.cpp =================================================================== --- mplayerxp/libmpstream2/s_file.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_file.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -53,7 +53,7 @@ if(filename=="-") fd=0; else fd=::open(filename.c_str(),O_RDONLY); if(fd<0) { - MSG_ERR("[s_file] Cannot open file: '%s'\n",filename.c_str()); + mpxp_err<<"[s_file] Cannot open file: "<<filename<<std::endl; return MPXP_False; } was_open = (fd==0)?0:1; Modified: mplayerxp/libmpstream2/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream2/s_ftp.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_ftp.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -117,12 +117,12 @@ break; } if(!tcp.has_data(15)) { - MSG_ERR("[ftp] read timed out\n"); + mpxp_err<<"[ftp] read timed out"<<std::endl; retval = -1; break; } if ((x = tcp.read((uint8_t*)cput,cleft)) == -1) { - MSG_ERR("[ftp] read error: %s\n",strerror(errno)); + mpxp_err<<"[ftp] read error: "<<strerror(errno)<<std::endl; retval = -1; break; } @@ -151,7 +151,7 @@ r = atoi(response)/100; if(rsp) strcpy(rsp,response); - MSG_V("[ftp] < %s",response); + mpxp_v<<"[ftp] < "<<response; if (response[3] == '-') { strncpy(match,response,3); @@ -159,10 +159,10 @@ match[4] = '\0'; do { if (readline(response,256) == -1) { - MSG_ERR("[ftp] Control socket read failed\n"); + mpxp_err<<"[ftp] Control socket read failed"<<std::endl; return 0; } - MSG_V("[ftp] < %s",response); + mpxp_v<<"[ftp] < "<<response; } while (strncmp(response,match,4)); } return r; @@ -174,12 +174,12 @@ int l = _cmd.length(); int hascrlf = cmd[l - 2] == '\r' && cmd[l - 1] == '\n'; - if(hascrlf && l == 2) MSG_V("\n"); - else MSG_V("[ftp] > %s",cmd); + if(hascrlf && l == 2) mpxp_v<<std::endl; + else mpxp_v<<"[ftp] > "<<cmd; while(l > 0) { int s = tcp.write((const uint8_t*)cmd,l); if(s <= 0) { - MSG_ERR("[ftp] write error: %s\n",strerror(errno)); + mpxp_err<<"[ftp] write error: "<<strerror(errno)<<std::endl; return 0; } cmd += s; @@ -197,12 +197,12 @@ resp = SendCmd("PASV",rsp_txt); if(resp != 2) { - MSG_WARN("[ftp] command 'PASV' failed: %s\n",rsp_txt); + mpxp_warn<<"[ftp] command 'PASV' failed: "<<rsp_txt<<std::endl; return 0; } par = strchr(rsp_txt,'('); if(!par || !par[0] || !par[1]) { - MSG_ERR("[ftp] invalid server response: %s ??\n",rsp_txt); + mpxp_err<<"[ftp] invalid server response: "<<rsp_txt<<std::endl; return 0; } sscanf(par+1,"%u,%u,%u,%u,%u,%u",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5]); @@ -210,7 +210,7 @@ url.redirect(str); tcp.open(url); - if(!tcp.established()) MSG_ERR("[ftp] failed to create data connection\n"); + if(!tcp.established()) mpxp_err<<"[ftp] failed to create data connection"<<std::endl; return 1; } @@ -227,7 +227,7 @@ snprintf(str,255,"REST %"PRId64, (int64_t)newpos); resp = SendCmd(str,rsp_txt); if(resp != 3) { - MSG_WARN("[ftp] command '%s' failed: %s\n",str,rsp_txt); + mpxp_warn<<"[ftp] command '"<<str<<"' failed: "<<rsp_txt<<std::endl; newpos = 0; } } @@ -236,7 +236,7 @@ resp = SendCmd(str,rsp_txt); if(resp != 1) { - MSG_ERR("[ftp] command '%s' failed: %s\n",str,rsp_txt); + mpxp_err<<"[ftp] command '"<<str<<"' failed: "<<rsp_txt<<std::endl; return 0; } spos = newpos; @@ -249,10 +249,10 @@ if(!OpenData(spos)) return -1; if(!tcp.has_data(15)) { - MSG_ERR("[ftp] read timed out\n"); + mpxp_err<<"[ftp] read timed out"<<std::endl; return -1; } - MSG_V("ftp read: %u bytes\n",sp->len); + mpxp_v<<"ftp read: "<<sp->len<<" bytes"<<std::endl; r = tcp.read((uint8_t*)sp->buf,sp->len); spos+=r; return (r <= 0) ? -1 : r; @@ -263,13 +263,13 @@ char rsp_txt[256]; if(spos==newpos) return spos; - MSG_V("ftp seek: %llu bytes\n",newpos); + mpxp_v<<"ftp seek: "<<newpos<<" bytes"<<std::endl; if(spos > file_len) return 0; // Check to see if the server did not already terminate the transfer if(tcp.has_data(0)) { if(readresp(rsp_txt) != 2) - MSG_WARN("[ftp] Warning the server didn't finished the transfer correctly: %s\n",rsp_txt); + mpxp_warn<<"[ftp] Warning the server didn't finished the transfer correctly: "<<rsp_txt<<std::endl; tcp.close(); } @@ -287,7 +287,7 @@ // Or the 226 Transfer complete resp = readresp(rsp_txt); if(resp != 4 && resp != 2) { - MSG_ERR("[ftp] Server didn't abort correctly: %s\n",rsp_txt); + mpxp_err<<"[ftp] Server didn't abort correctly: "<<rsp_txt<<std::endl; return 0; } // Send the ABOR command @@ -322,15 +322,12 @@ // url = check4proxies (rurl); if(url.host().empty() && !url.file().empty()) { bad_url: - MSG_ERR("[ftp] Bad url\n"); + mpxp_err<<"[ftp] Bad url"<<std::endl; return MPXP_False; } if(url.user().empty()) url.set_login("anonymous","no@spam"); url.assign_port(21); - MSG_V("FTP: Opening ~%s :%s @%s :%i %s\n" - ,url.user().c_str(),url.password().c_str(),url.host().c_str(), - url.port(),url.file().c_str()); - + mpxp_v<<"FTP: Opening ~"<<url.user()<<" :"<<url.password()<<" @"<<url.host()<<" :"<<url.port()<<" "<<url.file()<<std::endl; // Open the control connection tcp.open(url); @@ -351,12 +348,12 @@ snprintf(str,255,"PASS %s",url.password().c_str()); resp = SendCmd(str,rsp_txt); if(resp != 2) { - MSG_ERR("[ftp] command '%s' failed: %s\n",str,rsp_txt); + mpxp_err<<"[ftp] command '"<<str<<"' failed: "<<rsp_txt<<std::endl; close(); return MPXP_False; } } else if(resp != 2) { - MSG_ERR("[ftp] command '%s' failed: %s\n",str,rsp_txt); + mpxp_err<<"[ftp] command '"<<str<<"' failed: "<<rsp_txt<<std::endl; close(); return MPXP_False; } @@ -364,7 +361,7 @@ // Set the transfer type resp = SendCmd("TYPE I",rsp_txt); if(resp != 2) { - MSG_ERR("[ftp] command 'TYPE I' failed: %s\n",rsp_txt); + mpxp_err<<"[ftp] command 'TYPE I' failed: "<<rsp_txt<<std::endl; close(); return MPXP_False; } @@ -372,14 +369,14 @@ // Get System of FTP resp = SendCmd("SYST",rsp_txt); if(resp != 2) { - MSG_ERR("[ftp] command 'SYST' failed: %s\n",rsp_txt); + mpxp_err<<"[ftp] command 'SYST' failed: "<<rsp_txt<<std::endl; close(); return MPXP_False; } - MSG_INFO("[ftp] System: %s\n",rsp_txt); + mpxp_info<<"[ftp] System: "<<rsp_txt<<std::endl; resp = SendCmd("STAT",rsp_txt); if(resp != 2) { - MSG_ERR("[ftp] command 'STAT' failed: %s\n",rsp_txt); + mpxp_err<<"[ftp] command 'STAT' failed: "<<rsp_txt<<std::endl; close(); return MPXP_False; } @@ -389,7 +386,7 @@ snprintf(str,255,"SIZE %s",url.file().c_str()); resp = SendCmd(str,rsp_txt); if(resp != 2) { - MSG_WARN("[ftp] command '%s' failed: %s\n",str,rsp_txt); + mpxp_warn<<"[ftp] command '"<<str<<"' failed: "<<rsp_txt<<std::endl; } else { int dummy; sscanf(rsp_txt,"%d %"PRId64,&dummy,&file_len); Modified: mplayerxp/libmpstream2/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream2/s_lavc.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_lavc.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -73,7 +73,7 @@ UNUSED(flags); av_register_all(); - MSG_V("[lavc] Opening %s\n", filename.c_str()); + mpxp_v<<"[lavc] Opening "<<filename<<std::endl; if (ffurl_open(&ctx, filename.c_str(), 0, &int_cb, NULL) < 0) return MPXP_False; spos = 0; Modified: mplayerxp/libmpstream2/s_network.cpp =================================================================== --- mplayerxp/libmpstream2/s_network.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_network.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -53,10 +53,10 @@ UNUSED(flags); if(url.redirect(filename)==MPXP_Ok) { if((networking=Networking::start(tcp,url))==NULL){ - MSG_ERR(MSGTR_UnableOpenURL, filename.c_str()); + mpxp_err<<MSGTR_UnableOpenURL<<":"<<filename<<std::endl; return MPXP_False; } - MSG_INFO(MSGTR_ConnToServer, url.host().c_str()); + mpxp_info<<MSGTR_ConnToServer<<":"<<url.host()<<std::endl; spos = 0; return MPXP_Ok; } @@ -82,7 +82,7 @@ if(networking!=NULL) { newpos=networking->seek(tcp, pos); if( newpos<0 ) { - MSG_WARN("Stream not seekable!\n"); + mpxp_warn<<"Stream not seekable!"<<std::endl; return 1; } } Modified: mplayerxp/libmpstream2/s_oss.cpp =================================================================== --- mplayerxp/libmpstream2/s_oss.cpp 2012-12-21 15:12:47 UTC (rev 593) +++ mplayerxp/libmpstream2/s_oss.cpp 2012-12-21 17:47:42 UTC (rev 594) @@ -64,7 +64,7 @@ int err; UNUSED(flags); if(filename=="help") { - MSG_HINT("Usage: oss://<@device>#<channels>,<samplerate>,<sampleformat>\n"); + mpxp_hint<<"Usage: oss://<@device>#<channels>,<samplerate>,<sampleformat>"<<std::endl; return MPXP_False; } args=mp_strdup(mrl_parse_line(filename,NULL,NULL,&oss_device,NULL)); @@ -93,9 +93,9 @@ tmp = samplerate; err=0; if (::ioctl(fd, SNDCTL_DSP_SPEED, &samplerate)<0) - MSG_ERR("[s_oss] Can't set samplerate to %u (will use %u)\n",tmp,samplerate); + mpxp_err<<"[s_oss] Can't set samplerate to "<<tmp<<" (will use "<<samplerate<<")"<<std::endl; else - MSG_DBG2("[o_oss] Did set samplerate to %u\n",samplerate); + mpxp_dbg2<<"[o_oss] Did set samplerate to "<<samplerate<<std::endl; tmp = nchannels; if(tmp>2) err=::ioctl(fd, SNDCTL_DSP_CHANNELS, &nchannels); @@ -104,8 +104,8 @@ err=::ioctl(fd, SNDCTL_DSP_STEREO, ¶m); nchannels=param?2:1; } - if(err<0) MSG_ERR("[s_oss] Can't set channels to %u (will use %u)\n",tmp,nchannels); - else MSG_DBG2("[o_oss] Did set channels to %u\n",nchannels); + if(err<0) mpxp_err<<"[s_oss] Can't set channels to "<<tmp<<" (will use "<<nchannels<<")"<<std::endl; + else mpxp_dbg2<<"[o_oss] Did set channels to "<<nchannels<<std::endl; mp_aframe_t afd; int oss_fmt; afd.rate=samplerate; @@ -114,27 +114,27 @@ oss_fmt=mpaf2afmt(sampleformat); tmp=oss_fmt; if(::ioctl(fd, SNDCTL_DSP_SETFMT, &oss_fmt)<0) - MSG_ERR("[s_oss] Can't set format %s (will use %s)\n",ao_format_name(tmp),ao_format_name(oss_fmt)); + mpxp_err<<"[s_oss] Can't set format "<<ao_format_name(tmp)<<" (will use "<<ao_format_name(oss_fmt)<<")"<<std::endl; else - MSG_DBG2("[o_oss] Did set format to %s\n",ao_format_name(oss_fmt)); + mpxp_dbg2<<"[o_oss] Did set format to "<<ao_format_name(oss_fmt)<<std::endl; tmp = PCM_ENABLE_INPUT; if(::ioctl(fd, SNDCTL_DSP_SETTRIGGER, &tmp)<0) - MSG_ERR("[s_oss] Can't enable input\n"); + mpxp_err<<"[s_oss] Can't enable input"<<std::endl; else - MSG_DBG2("[o_oss] Did set trigger to %u\n",tmp); + mpxp_dbg2<<"[o_oss] Did set trigger to "<<tmp<<std::endl; _sector_size = 0; err = ::ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &_sector_size); if (err < 0) - MSG_ERR("[s_oss] Can't get blocksize\n"); + mpxp_err<<"[s_oss] Can't get blocksize"<<std::endl; else - MSG_DBG2("[o_oss] Did get blocksize as %u\n",_sector_size); + mpxp_dbg2<<"[o_oss] Did get blocksize as "<<_sector_size<<std::endl; // correct the blocksize to a reasonable value if (_sector_size <= 0) { _sector_size = 4096*nchannels*(sampleformat&MPAF_BPS_MASK); } else if (_sector_size < 4096*nchannels*(sampleformat&MPAF_BPS_MASK)) { _sector_size *= 4096*nchannels*(sampleformat&MPAF_BPS_MASK)/_sector_size; } - MSG_DBG2("[o_oss] Correct blocksize as %u\n",_sector_size); + ... [truncated message content] |
From: <nic...@us...> - 2012-12-21 15:12:56
|
Revision: 593 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=593&view=rev Author: nickols_k Date: 2012-12-21 15:12:47 +0000 (Fri, 21 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output Modified Paths: -------------- mplayerxp/libao3/ao_alsa.cpp mplayerxp/libao3/ao_arts.cpp mplayerxp/libao3/ao_esd.cpp mplayerxp/libao3/ao_jack.cpp mplayerxp/libao3/ao_msg.h mplayerxp/libao3/ao_nas.cpp mplayerxp/libao3/ao_null.cpp mplayerxp/libao3/ao_openal.cpp mplayerxp/libao3/ao_oss.cpp mplayerxp/libao3/ao_sdl.cpp mplayerxp/libao3/ao_wav.cpp Modified: mplayerxp/libao3/ao_alsa.cpp =================================================================== --- mplayerxp/libao3/ao_alsa.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_alsa.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -87,21 +87,21 @@ Alsa_AO_Interface::~Alsa_AO_Interface() { int err; if(!handler) { - MSG_ERR("alsa-uninit: no handler defined!\n"); + mpxp_err<<"alsa-uninit: no handler defined!"<<std::endl; return; } if (!priv_conf.noblock) { if ((err = snd_pcm_drain(handler)) < 0) { - MSG_ERR("alsa-uninit: pcm drain error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-uninit: pcm drain error: "<<snd_strerror(err)<<std::endl; return; } } if ((err = snd_pcm_close(handler)) < 0) { - MSG_ERR("alsa-uninit: pcm close error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-uninit: pcm close error: "<<snd_strerror(err)<<std::endl; return; } else { handler = NULL; - MSG_V("alsa-uninit: pcm closed\n"); + mpxp_v<<"alsa-uninit: pcm closed"<<std::endl; } snd_pcm_hw_params_free(hwparams); snd_pcm_sw_params_free(swparams); @@ -207,30 +207,30 @@ snd_mixer_selem_id_set_name(sid, mix_name); if ((err = snd_mixer_open(&handle, 0)) < 0) { - MSG_ERR("alsa-control_ao: mixer open error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-control_ao: mixer open error: "<<snd_strerror(err)<<std::endl; return MPXP_Error; } if ((err = snd_mixer_attach(handle, card)) < 0) { - MSG_ERR("alsa-control_ao: mixer attach %s error: %s", card, snd_strerror(err)); + mpxp_err<<"alsa-control_ao: mixer attach "<<card<<" error: "<<snd_strerror(err)<<std::endl; snd_mixer_close(handle); return MPXP_Error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { - MSG_ERR("alsa-control_ao: mixer register error: %s", snd_strerror(err)); + mpxp_err<<"alsa-control_ao: mixer register error: "<<snd_strerror(err)<<std::endl; snd_mixer_close(handle); return MPXP_Error; } if ((err = snd_mixer_load(handle)) < 0) { - MSG_ERR("alsa-control_ao: mixer load error: %s", snd_strerror(err)); + mpxp_err<<"alsa-control_ao: mixer load error: "<<snd_strerror(err)<<std::endl; snd_mixer_close(handle); return MPXP_Error; } elem = snd_mixer_find_selem(handle, sid); if (!elem) { - MSG_ERR("alsa-control_ao: unable to find simple control_ao '%s',%i\n", snd_mixer_selem_id_get_name(sid), snd_mixer_selem_id_get_index(sid)); + mpxp_err<<"alsa-control_ao: unable to find simple control_ao '"<<snd_mixer_selem_id_get_name(sid)<<"',"<<snd_mixer_selem_id_get_index(sid)<<std::endl; snd_mixer_close(handle); return MPXP_Error; } @@ -248,11 +248,11 @@ //setting channels if ((err = snd_mixer_selem_set_playback_volume(elem, snd_mixer_selem_channel_id_t(0), set_vol)) < 0) { - MSG_ERR("alsa-control_ao: error setting left channel, %s",snd_strerror(err)); + mpxp_err<<"alsa-control_ao: error setting left channel, "<<snd_strerror(err)<<std::endl; return MPXP_Error; } if ((err = snd_mixer_selem_set_playback_volume(elem, snd_mixer_selem_channel_id_t(1), set_vol)) < 0) { - MSG_ERR("alsa-control_ao: error setting right channel, %s",snd_strerror(err)); + mpxp_err<<"alsa-control_ao: error setting right channel, "<<snd_strerror(err)<<std::endl; return MPXP_Error; } } else { @@ -283,48 +283,47 @@ unsigned rmin,rmax; unsigned j,sdmin,sdmax; char adevice[ALSA_DEVICE_SIZE]; - if ((err = snd_card_next(&cards)) < 0 || cards < 0) - { - MSG_ERR("AO-INFO: alsa-init: no soundcards found: %s\n", snd_strerror(err)); + if ((err = snd_card_next(&cards)) < 0 || cards < 0) { + mpxp_err<<"AO-INFO: alsa-init: no soundcards found: "<<snd_strerror(err)<<std::endl; return; } snd_pcm_info_malloc(&alsa_info); snd_pcm_info_set_device(alsa_info,device); sdmin=snd_pcm_info_get_subdevice(alsa_info); sdmax=sdmin+snd_pcm_info_get_subdevices_count(alsa_info); - MSG_INFO("AO-INFO: show caps for device %i:%i-%i\n",device,sdmin,sdmax); + mpxp_info<<"AO-INFO: show caps for device "<<device<<":"<<sdmin<<"-"<<sdmax<<std::endl; for(j=sdmin;j<=sdmax;j++) { int i; snd_pcm_info_set_subdevice(alsa_info,j); sprintf(adevice,"hw:%u,%u",snd_pcm_info_get_device(alsa_info),snd_pcm_info_get_subdevice(alsa_info)); - MSG_INFO("AO-INFO: %s %s.%s.%s\n\n",adevice,snd_pcm_info_get_id(alsa_info),snd_pcm_info_get_name(alsa_info),snd_pcm_info_get_subdevice_name(alsa_info)); + mpxp_info<<"AO-INFO: "<<adevice<<" "<<snd_pcm_info_get_id(alsa_info)<<"."<<snd_pcm_info_get_name(alsa_info)<<"."<<snd_pcm_info_get_subdevice_name(alsa_info)<<std::endl; if(snd_pcm_open(&pcm,adevice,SND_PCM_STREAM_PLAYBACK,SND_PCM_NONBLOCK)<0) { - MSG_ERR("alsa-init: playback open error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: playback open error: "<<snd_strerror(err)<<std::endl; return; } snd_pcm_hw_params_malloc(&hw_params); if(snd_pcm_hw_params_any(pcm, hw_params)<0) { - MSG_ERR("alsa-init: can't get initial parameters: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: can't get initial parameters: "<<snd_strerror(err)<<std::endl; return; } - MSG_INFO(" AO-INFO: List of access type: "); + mpxp_info<<" AO-INFO: List of access type: "; for(i=0;i<SND_PCM_ACCESS_LAST;i++) if(!snd_pcm_hw_params_test_access(pcm,hw_params,snd_pcm_access_t(i))) - MSG_INFO("%s ",snd_pcm_access_name(snd_pcm_access_t(i))); - MSG_INFO("\n"); - MSG_INFO(" AO-INFO: List of supported formats: "); + mpxp_info<<snd_pcm_access_name(snd_pcm_access_t(i))<<" "; + mpxp_info<<std::endl; + mpxp_info<<" AO-INFO: List of supported formats: "; for(i=0;i<SND_PCM_FORMAT_LAST;i++) if(!snd_pcm_hw_params_test_format(pcm,hw_params,snd_pcm_format_t(i))) - MSG_INFO("%s ",snd_pcm_format_name(snd_pcm_format_t(i))); - MSG_INFO("\n"); - MSG_INFO(" AO-INFO: List of supported channels: "); + mpxp_info<<snd_pcm_format_name(snd_pcm_format_t(i))<<" "; + mpxp_info<<std::endl; + mpxp_info<<" AO-INFO: List of supported channels: "; for(i=0;i<64;i++) if(!snd_pcm_hw_params_test_format(pcm,hw_params,snd_pcm_format_t(i))) - MSG_INFO("%u ",i); - MSG_INFO("\n"); + mpxp_info<<i<<" "; + mpxp_info<<std::endl; snd_pcm_hw_params_get_rate_min(hw_params,&rmin,&err); snd_pcm_hw_params_get_rate_max(hw_params,&rmax,&err); - MSG_INFO(" AO-INFO: Rates range: %u %u\n",rmin,rmax); + mpxp_info<<" AO-INFO: Rates range: "<<rmin<<" "<<rmax<<std::endl; snd_output_stdio_attach(&sout, stderr, 0); snd_pcm_hw_params_dump(hw_params, sout); if(hw_params) snd_pcm_hw_params_free(hw_params); @@ -351,7 +350,7 @@ handler = NULL; alsa_device[0]='\0'; - MSG_V("alsa-init: compiled for ALSA-%s\n", SND_LIB_VERSION_STR); + mpxp_v<<"alsa-init: compiled for ALSA-"<<SND_LIB_VERSION_STR<<std::endl; if (!subdevice.empty()) { const char *param; @@ -370,12 +369,12 @@ } if(alsa_port) snprintf(alsa_device,sizeof(alsa_device),"%s:%s",alsa_dev,alsa_port); else strncpy(alsa_device,alsa_dev,sizeof(alsa_device)); - MSG_V("alsa-init: soundcard set to %s\n", alsa_device); + mpxp_v<<"alsa-init: soundcard set to "<<alsa_device<<std::endl; } //end parsing ao->subdevice } if ((err = snd_card_next(&cards)) < 0 || cards < 0) { - MSG_ERR("alsa-init: no soundcards found: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: no soundcards found: "<<snd_strerror(err)<<std::endl; return MPXP_False; } @@ -383,28 +382,28 @@ int tmp_device, tmp_subdevice; if ((err = snd_pcm_info_malloc(&alsa_info)) < 0) { - MSG_ERR("alsa-init: memory allocation error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: memory allocation error: "<<snd_strerror(err)<<std::endl; return MPXP_False; } if ((tmp_device = snd_pcm_info_get_device(alsa_info)) < 0) { - MSG_ERR("alsa-init: cant get device\n"); + mpxp_err<<"alsa-init: cant get device"<<std::endl; return MPXP_False; } if ((tmp_subdevice = snd_pcm_info_get_subdevice(alsa_info)) < 0) { - MSG_ERR("alsa-init: cant get subdevice\n"); + mpxp_err<<"alsa-init: cant get subdevice"<<std::endl; return MPXP_False; } - MSG_V("alsa-init: got device=%i, subdevice=%i\n", tmp_device, tmp_subdevice); + mpxp_v<<"alsa-init: got device="<<tmp_device<<", subdevice="<<tmp_subdevice<<std::endl; if ((err = snprintf(alsa_device, ALSA_DEVICE_SIZE, "hw:%1d,%1d", tmp_device, tmp_subdevice)) <= 0) { - MSG_ERR("alsa-init: cant wrote device-id\n"); + mpxp_err<<"alsa-init: cant wrote device-id"<<std::endl; } snd_pcm_info_free(alsa_info); } - MSG_WARN("alsa-init: Testing & bugs are welcome. Found %d cards, use: %s\n",cards+1,alsa_device); + mpxp_warn<<"alsa-init: Testing & bugs are welcome. Found "<<(cards+1)<<" cards, use: "<<alsa_device<<std::endl; //setting modes for block or nonblock-mode int open_mode,block_mode; if (priv_conf.noblock) { @@ -421,9 +420,9 @@ //modes = 0, SND_PCM_NONBLOCK, SND_PCM_ASYNC if ((err = snd_pcm_open(&handler, alsa_device, SND_PCM_STREAM_PLAYBACK, open_mode)) < 0) { if (priv_conf.noblock) { - MSG_ERR("alsa-init: open in nonblock-mode failed, trying to open in block-mode\n"); + mpxp_err<<"alsa-init: open in nonblock-mode failed, trying to open in block-mode"<<std::endl; if ((err = snd_pcm_open(&handler, alsa_device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { - MSG_ERR("alsa-init: playback open error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: playback open error: "<<snd_strerror(err)<<std::endl; alsa_device[0]='\0'; return MPXP_False; } else { @@ -431,26 +430,25 @@ str_block_mode = "block-mode"; } } else { - MSG_ERR("alsa-init: playback open error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: playback open error: "<<snd_strerror(err)<<std::endl; alsa_device[0]='\0'; return MPXP_False; } } alsa_device[0]='\0'; if ((err = snd_pcm_nonblock(handler, block_mode)) < 0) { - MSG_ERR("alsa-init: error set block-mode %s\n", snd_strerror(err)); - } else MSG_V("alsa-init: pcm opend in %s\n", str_block_mode); + mpxp_err<<"alsa-init: error set block-mode "<<snd_strerror(err)<<std::endl; + } else mpxp_v<<"alsa-init: pcm opend in "<<str_block_mode<<std::endl; snd_pcm_hw_params_malloc(&hwparams); snd_pcm_sw_params_malloc(&swparams); // setting hw-parameters if ((err = snd_pcm_hw_params_any(handler, hwparams)) < 0) { - MSG_ERR("alsa-init: unable to get initial parameters: %s\n", - snd_strerror(err)); + mpxp_err<<"alsa-init: unable to get initial parameters: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_params_any()\n"); + mpxp_dbg2<<"snd_pcm_hw_params_any()"<<std::endl; if (priv_conf.mmap) { snd_pcm_access_mask_t *mask = (snd_pcm_access_mask_t*)alloca(snd_pcm_access_mask_sizeof()); snd_pcm_access_mask_none(mask); @@ -458,13 +456,13 @@ snd_pcm_access_mask_set(mask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED); snd_pcm_access_mask_set(mask, SND_PCM_ACCESS_MMAP_COMPLEX); err = snd_pcm_hw_params_set_access_mask(handler, hwparams, mask); - MSG_ERR("alsa-init: mmap set\n"); + mpxp_err<<"alsa-init: mmap set"<<std::endl; } else { err = snd_pcm_hw_params_set_access(handler, hwparams,SND_PCM_ACCESS_RW_INTERLEAVED); - MSG_DBG2("snd_pcm_hw_params_set_access(SND_PCM_ACCESS_RW_INTERLEAVED)\n"); + mpxp_dbg2<<"snd_pcm_hw_params_set_access(SND_PCM_ACCESS_RW_INTERLEAVED)"<<std::endl; } if (err < 0) { - MSG_ERR("alsa-init: unable to set access type: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: unable to set access type: "<<snd_strerror(err)<<std::endl; return MPXP_False; } } // end switch priv->handler (spdif) @@ -476,8 +474,7 @@ size_t chunk_size=0,chunk_bytes,bits_per_sample,bits_per_frame; snd_pcm_uframes_t dummy; - MSG_V("alsa-conf: requested format: %d Hz, %d channels, %s\n", r, - c, ao_format_name(f)); + mpxp_v<<"alsa-conf: requested format: "<<r<<" Hz, "<<c<<" channels, "<<ao_format_name(f)<<std::endl; _samplerate = r; _format = f; @@ -504,8 +501,7 @@ case SND_PCM_FORMAT_U24_BE: break; case -1: - MSG_ERR("alsa-conf: invalid format (%s) requested - output disabled\n", - ao_format_name(_format)); + mpxp_err<<"alsa-conf: invalid format ("<<ao_format_name(_format)<<") requested - output disabled"<<std::endl; return MPXP_False; default: break; @@ -514,55 +510,47 @@ if ((err = snd_pcm_hw_params_set_format(handler, hwparams, snd_format)) < 0) { - MSG_ERR("alsa-conf: unable to set format(%s): %s\n", - snd_pcm_format_name(snd_format), - snd_strerror(err)); - MSG_HINT("Please try one of: "); + mpxp_err<<"alsa-conf: unable to set format("<<snd_pcm_format_name(snd_format)<<"): "<<snd_strerror(err)<<std::endl; + mpxp_hint<<"Please try one of: "; for(i=0;i<SND_PCM_FORMAT_LAST;i++) if (!(snd_pcm_hw_params_test_format(handler, hwparams, snd_pcm_format_t(i)))) - MSG_HINT("%s ",snd_pcm_format_name(snd_pcm_format_t(i))); - MSG_HINT("\n"); + mpxp_hint<<snd_pcm_format_name(snd_pcm_format_t(i))<<" "; + mpxp_hint<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_params_set_format(%i)\n",snd_format); + mpxp_dbg2<<"snd_pcm_hw_params_set_format("<<snd_format<<")"<<std::endl; if ((err = snd_pcm_hw_params_set_rate_near(handler, hwparams, &_samplerate, 0)) < 0) { - MSG_ERR("alsa-conf: unable to set samplerate %u: %s\n", - _samplerate, - snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to set samplerate "<<_samplerate<<": "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_params_set_rate_near(%i)\n",_samplerate); + mpxp_dbg2<<"snd_pcm_hw_params_set_rate_near("<<_samplerate<<")"<<std::endl; if ((err = snd_pcm_hw_params_set_channels(handler, hwparams, _channels)) < 0) { - MSG_ERR("alsa-conf: unable to set %u channels: %s\n", - _channels, - snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to set "<<_channels<<" channels: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_params_set_channels(%i)\n",_channels); + mpxp_dbg2<<"snd_pcm_hw_params_set_channels("<<_channels<<")"<<std::endl; #ifdef BUFFERTIME { int dir; unsigned period_time,alsa_buffer_time = 500000; /* buffer time in us */ if ((err = snd_pcm_hw_params_set_buffer_time_near(handler, hwparams, &alsa_buffer_time, &dir)) < 0) { - MSG_ERR("alsa-init: unable to set buffer time near: %s\n", - snd_strerror(err)); + mpxp_err<<"alsa-init: unable to set buffer time near: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_set_buffer_time_near(%i)\n",alsa_buffer_time); + mpxp_dbg2<<"snd_pcm_hw_set_buffer_time_near("<<alsa_buffer_time<<")"<<std::endl; period_time = alsa_buffer_time/4; if ((err = snd_pcm_hw_params_set_period_time_near(handler, hwparams, &period_time, &dir)) < 0) { /* original: alsa_buffer_time/ao->bps */ - MSG_ERR("alsa-init: unable to set period time: %s\n", - snd_strerror(err)); + mpxp_err<<"alsa-init: unable to set period time: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_set_period_time_near(%i)\n",period_time); - MSG_V("alsa-init: buffer_time: %d, period_time :%d\n",alsa_buffer_time, period_time); + mpxp_dbg2<<"snd_pcm_hw_set_period_time_near("<<period_time<<")"<<std::endl; + mpxp_v<<"alsa-init: buffer_time: "<<alsa_buffer_time<<", period_time :"<<period_time<<std::endl; } #else { @@ -570,72 +558,70 @@ unsigned period_time=100000; /* period time in us */ snd_pcm_uframes_t size; if ((err = snd_pcm_hw_params_set_period_time_near(handler, hwparams, &period_time, &dir)) < 0) { - MSG_ERR("alsa-init: unable to set period_time: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: unable to set period_time: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_set_period_time(%i)\n",period_time); + mpxp_dbg2<<"snd_pcm_hw_set_period_time("<<period_time<<")"<<std::endl; //get chunksize if ((err = snd_pcm_hw_params_get_period_size(hwparams, &size, &dir)) < 0) { - MSG_ERR("alsa-init: unable to get period_size: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-init: unable to get period_size: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_get_period_size(%i)\n",size); + mpxp_dbg2<<"snd_pcm_hw_get_period_size("<<size<<")"<<std::endl; chunk_size=size; } #endif // gets buffersize for control_ao if ((err = snd_pcm_hw_params_get_buffer_size(hwparams,&dummy)) < 0) { - MSG_ERR("alsa-conf: unable to get buffersize: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to get buffersize: "<<snd_strerror(err)<<std::endl; return MPXP_False; } else { _buffersize = dummy * bytes_per_sample; - MSG_V("alsa-conf: got buffersize=%i\n", _buffersize); + mpxp_v<<"alsa-conf: got buffersize="<<_buffersize<<std::endl; } - MSG_DBG2("snd_pcm_hw_params_get_buffer_size(%i)\n",dummy); + mpxp_dbg2<<"snd_pcm_hw_params_get_buffer_size("<<dummy<<")"<<std::endl; bits_per_sample = snd_pcm_format_physical_width(snd_format); - MSG_DBG2("%i=snd_pcm_hw_format_pohysical_width()\n",bits_per_sample); + mpxp_dbg2<<bits_per_sample<<"=snd_pcm_hw_format_pohysical_width()"<<std::endl; bits_per_frame = bits_per_sample * _channels; chunk_bytes = chunk_size * bits_per_frame / 8; - MSG_V("alsa-conf: bits per sample (bps)=%i, bits per frame (bpf)=%i, chunk_bytes=%i\n",bits_per_sample,bits_per_frame,chunk_bytes); + mpxp_v<<"alsa-conf: bits per sample (bps)="<<bits_per_sample<<", bits per frame (bpf)="<<bits_per_frame<<", chunk_bytes="<<chunk_bytes<<std::endl; /* finally install hardware parameters */ if ((err = snd_pcm_hw_params(handler, hwparams)) < 0) { - MSG_ERR("alsa-conf: unable to set hw-parameters: %s\n", - snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to set hw-parameters: "<<snd_strerror(err)<<std::endl; return MPXP_False; } - MSG_DBG2("snd_pcm_hw_params()\n"); + mpxp_dbg2<<"snd_pcm_hw_params()"<<std::endl; // setting sw-params (only avail-min) if noblocking mode was choosed if (priv_conf.noblock) { if ((err = snd_pcm_sw_params_current(handler, swparams)) < 0) { - MSG_ERR("alsa-conf: unable to get parameters: %s\n",snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to get parameters: "<<snd_strerror(err)<<std::endl; return MPXP_False; } //set min available frames to consider pcm ready (4) //increased for nonblock-mode should be set dynamically later if ((err = snd_pcm_sw_params_set_avail_min(handler, swparams, 4)) < 0) { - MSG_ERR("alsa-conf: unable to set avail_min %s\n",snd_strerror(err)); + mpxp_err<<"alsa-conf: unable to set avail_min "<<snd_strerror(err)<<std::endl; return MPXP_False; } if ((err = snd_pcm_sw_params(handler, swparams)) < 0) { - MSG_ERR("alsa-conf: unable to install sw-params\n"); + mpxp_err<<"alsa-conf: unable to install sw-params"<<std::endl; return MPXP_False; } }//end swparams if ((err = snd_pcm_prepare(handler)) < 0) { - MSG_ERR("alsa-conf: pcm prepare error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-conf: pcm prepare error: "<<snd_strerror(err)<<std::endl; return MPXP_False; } // end setting hw-params - MSG_V("alsa-conf: %d Hz/%d channels/%d bpf/%d bytes buffer/%s\n", - _samplerate, _channels, bytes_per_sample, _buffersize, - snd_pcm_format_description(snd_format)); + mpxp_v<<"alsa-conf: "<<_samplerate<<" Hz/"<<_channels<<" channels/" + <<bytes_per_sample<<" bpf/"<<_buffersize<<" bytes buffer/"<<snd_pcm_format_description(snd_format)<<std::endl; return MPXP_Ok; } // end config_ao @@ -645,11 +631,11 @@ if (!priv_conf.noblock) { //drain causes error in nonblock-mode! if ((err = snd_pcm_drain(handler)) < 0) { - MSG_ERR("alsa-pause: pcm drain error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-pause: pcm drain error: "<<snd_strerror(err)<<std::endl; return; } } else { - MSG_V("alsa-pause: paused nonblock\n"); + mpxp_v<<"alsa-pause: paused nonblock"<<std::endl; return; } } @@ -658,7 +644,7 @@ int err; if ((err = snd_pcm_prepare(handler)) < 0) { - MSG_ERR("alsa-resume: pcm prepare error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-resume: pcm prepare error: "<<snd_strerror(err)<<std::endl; return; } } @@ -668,11 +654,11 @@ int err; if ((err = snd_pcm_drop(handler)) < 0) { - MSG_ERR("alsa-reset: pcm drop error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-reset: pcm drop error: "<<snd_strerror(err)<<std::endl; return; } if ((err = snd_pcm_prepare(handler)) < 0) { - MSG_ERR("alsa-reset: pcm prepare error: %s\n", snd_strerror(err)); + mpxp_err<<"alsa-reset: pcm prepare error: "<<snd_strerror(err)<<std::endl; return; } return; @@ -709,7 +695,7 @@ snd_pcm_status_alloca(&status); if ((err = snd_pcm_status(handler, status))<0) { - MSG_ERR("status error: %s", snd_strerror(err)); + mpxp_err<<"status error: "<<snd_strerror(err)<<std::endl; return 0; } @@ -718,13 +704,11 @@ gettimeofday(&now, 0); snd_pcm_status_get_trigger_tstamp(status, &tstamp); _timersub(&now, &tstamp, &diff); - MSG_V("alsa-%s: xrun of at least %.3f msecs. resetting stream\n", - str_mode, - diff.tv_sec * 1000 + diff.tv_usec / 1000.0); + mpxp_v<<"alsa-"<<str_mode<<": xrun of at least "<<(diff.tv_sec*1000+diff.tv_usec/1000.0)<<" msecs. resetting stream"<<std::endl; } if ((err = snd_pcm_prepare(handler))<0) { - MSG_ERR("xrun: prepare error: %s", snd_strerror(err)); + mpxp_err<<"xrun: prepare error: "<<snd_strerror(err)<<std::endl; return 0; } @@ -734,7 +718,7 @@ unsigned Alsa_AO_Interface::play(const any_t* data, unsigned len, unsigned flags) { unsigned result; UNUSED(flags); - MSG_DBG2("[ao_alsa] %s playing %i bytes\n",priv_conf.mmap?"mmap":"normal",len); + mpxp_dbg2<<"[ao_alsa] "<<(priv_conf.mmap?"mmap":"normal")<<" playing "<<len<<" bytes"<<std::endl; if (priv_conf.mmap) result = play_mmap(data, len); else result = play_normal(data, len); return result; @@ -755,7 +739,7 @@ //fprintf(stderr,"alsa-play: frames=%i, len=%i\n",num_frames,len); if (!handler) { - MSG_ERR("alsa-play: device configuration error"); + mpxp_err<<"alsa-play: device configuration error"<<std::endl; return 0; } @@ -765,16 +749,16 @@ snd_pcm_wait(handler, 1000); } else if (res == -EPIPE) { /* underrun */ if (xrun("play") <= 0) { - MSG_ERR("alsa-play: xrun reset error"); + mpxp_err<<"alsa-play: xrun reset error"<<std::endl; return 0; } } else if (res == -ESTRPIPE) { /* suspend */ - MSG_WARN("alsa-play: pcm in suspend mode. trying to resume\n"); + mpxp_warn<<"alsa-play: pcm in suspend mode. trying to resume"<<std::endl; while ((res = snd_pcm_resume(handler)) == -EAGAIN) ::sleep(1); } else if (res < 0) { - MSG_ERR("alsa-play: unknown status, trying to reset soundcard\n"); + mpxp_err<<"alsa-play: unknown status, trying to reset soundcard"<<std::endl; if ((res = snd_pcm_prepare(handler)) < 0) { - MSG_ERR("alsa-play: snd prepare error"); + mpxp_err<<"alsa-play: snd prepare error"<<std::endl; return 0; break; } @@ -788,7 +772,7 @@ } //end while if (res < 0) { - MSG_ERR("alsa-play: write error %s", snd_strerror(res)); + mpxp_err<<"alsa-play: write error "<<snd_strerror(res)<<std::endl; return 0; } return res < 0 ? 0 : len; @@ -897,12 +881,12 @@ //snd_pcm_sframes_t avail_frames = 0; if ((ret = snd_pcm_status_malloc(&status)) < 0) { - MSG_ERR("alsa-space: memory allocation error: %s\n", snd_strerror(ret)); + mpxp_err<<"alsa-space: memory allocation error: "<<snd_strerror(ret)<<std::endl; return 0; } if ((ret = snd_pcm_status(handler, status)) < 0) { - MSG_ERR("alsa-space: cannot get pcm status: %s\n", snd_strerror(ret)); + mpxp_err<<"alsa-space: cannot get pcm status: "<<snd_strerror(ret)<<std::endl; return 0; } @@ -925,7 +909,7 @@ e_status = GET_SPACE_RUNNING; break; case SND_PCM_STATE_PAUSED: - MSG_V("alsa-space: paused"); + mpxp_v<<"alsa-space: paused"<<std::endl; e_status = GET_SPACE_PAUSED; ret = 0; break; @@ -944,11 +928,11 @@ } if (e_status!=GET_SPACE_RUNNING) - MSG_V("alsa-space: mp_free space = %i, status=%i, %i --\n", ret, st, e_status); + mpxp_v<<"alsa-space: mp_free space = "<<ret<<", status="<<st<<", "<<e_status<<" --"<<std::endl; snd_pcm_status_free(status); if (ret < 0) { - MSG_ERR("negative value!!\n"); + mpxp_err<<"negative value!!"<<std::endl; ret = 0; } @@ -964,12 +948,12 @@ float ret; if ((ret = snd_pcm_status_malloc(&status)) < 0) { - MSG_ERR("alsa-delay: memory allocation error: %s\n", snd_strerror(ret)); + mpxp_err<<"alsa-delay: memory allocation error: "<<snd_strerror(ret)<<std::endl; return 0; } if ((ret = snd_pcm_status(handler, status)) < 0) { - MSG_ERR("alsa-delay: cannot get pcm status: %s\n", snd_strerror(ret)); + mpxp_err<<"alsa-delay: cannot get pcm status: "<<snd_strerror(ret)<<std::endl; return 0; } Modified: mplayerxp/libao3/ao_arts.cpp =================================================================== --- mplayerxp/libao3/ao_arts.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_arts.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -86,11 +86,11 @@ UNUSED(flags); if( (err=arts_init()) ) { - MSG_ERR("[aRts] init failed: %s\n", arts_error_text(err)); + mpxp_err<<"[aRts] init failed: "<<arts_error_text(err)<<std::endl; /*TODO: system("artsd -l0");*/ return MPXP_False; } - MSG_INFO("[aRts] connected to server\n"); + mpxp_info<<"[aRts] connected to server"<<std::endl; return MPXP_Ok; } @@ -138,7 +138,7 @@ stream=arts_play_stream(_samplerate, samplesize*8, _channels, "MPlayerXP"); if(stream == NULL) { - MSG_ERR("[aRts] Can't open stream\n"); + mpxp_err<<"[aRts] Can't open stream"<<std::endl; arts_free(); return MPXP_False; } @@ -149,10 +149,10 @@ frag_spec = ARTS_PACKET_SIZE_LOG2 | ARTS_PACKETS << 16; arts_stream_set(stream, ARTS_P_PACKET_SETTINGS, frag_spec); _buffersize = arts_stream_get(stream, ARTS_P_BUFFER_SIZE); - MSG_INFO("[aRts] Stream opened\n"); + mpxp_info<<"[aRts] Stream opened"<<std::endl; - MSG_V("[aRts] buffersize=%u\n",_buffersize); - MSG_V("[aRts] buffersize=%u\n", arts_stream_get(stream, ARTS_P_PACKET_SIZE)); + mpxp_v<<"[aRts] buffersize="<<_buffersize<<std::endl; + mpxp_v<<"[aRts] buffersize="<<arts_stream_get(stream, ARTS_P_PACKET_SIZE)<<std::endl; return MPXP_Ok; } Modified: mplayerxp/libao3/ao_esd.cpp =================================================================== --- mplayerxp/libao3/ao_esd.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_esd.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -200,7 +200,7 @@ if (fd < 0) { fd = esd_open_sound(subdevice.c_str()); if (fd < 0) { - MSG_ERR("ESD: Can't open sound: %s\n", strerror(errno)); + mpxp_err<<"ESD: Can't open sound: "<<strerror(errno)<<std::endl; return MPXP_False; } } @@ -279,13 +279,13 @@ lag_serv = (latency * 4.0f) / (_bytes_per_sample * _samplerate); lag_seconds = lag_net + lag_serv; audio_delay += lag_seconds; - MSG_INFO("ESD: LatencyInfo: %f %f %f\n",lag_serv, lag_net, lag_seconds); + mpxp_info<<"ESD: LatencyInfo: "<<lag_serv<<" "<<lag_net<<" "<<lag_seconds<<std::endl; } play_fd = esd_play_stream_fallback(esd_fmt, _samplerate, server.c_str(), ESD_CLIENT_NAME); if (play_fd < 0) { - MSG_ERR("ESD: Can't open play stream: %s\n", strerror(errno)); + mpxp_err<<"ESD: Can't open play stream: "<<strerror(errno)<<std::endl; return MPXP_False; } Modified: mplayerxp/libao3/ao_jack.cpp =================================================================== --- mplayerxp/libao3/ao_jack.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_jack.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -231,7 +231,7 @@ UNUSED(f); if (c > MAX_CHANS) { - MSG_FATAL("[JACK] Invalid number of channels: %i\n", c); + mpxp_fatal<<"[JACK] Invalid number of channels: "<<c<<std::endl; goto err_out; } if (!client_name) { @@ -241,7 +241,7 @@ if (!autostart) open_options = jack_options_t(open_options|JackNoStartServer); client = jack_client_open(client_name, open_options, NULL); if (!client) { - MSG_FATAL("[JACK] cannot open server\n"); + mpxp_fatal<<"[JACK] cannot open server"<<std::endl; goto err_out; } buffer = av_fifo_alloc(BUFFSIZE); @@ -251,7 +251,7 @@ if (!port_name) port_flags |= JackPortIsPhysical; matching_ports = jack_get_ports(client, subdevice.c_str(), NULL, port_flags); if (!matching_ports || !matching_ports[0]) { - MSG_FATAL("[JACK] no physical priv->ports available\n"); + mpxp_fatal<<"[JACK] no physical priv->ports available"<<std::endl; goto err_out; } i = 1; @@ -265,17 +265,17 @@ snprintf(pname, 30, "out_%d", i); ports[i] = jack_port_register(client, pname, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); if (!ports[i]) { - MSG_FATAL("[JACK] not enough priv->ports available\n"); + mpxp_fatal<<"[JACK] not enough priv->ports available"<<std::endl; goto err_out; } } if (jack_activate(client)) { - MSG_FATAL("[JACK] activate failed\n"); + mpxp_fatal<<"[JACK] activate failed"<<std::endl; goto err_out; } for (i = 0; i < num_ports; i++) { if (jack_connect(client, jack_port_name(ports[i]), matching_ports[i])) { - MSG_FATAL( "[JACK] connecting failed\n"); + mpxp_fatal<<"[JACK] connecting failed"<<std::endl; goto err_out; } } Modified: mplayerxp/libao3/ao_msg.h =================================================================== --- mplayerxp/libao3/ao_msg.h 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_msg.h 2012-12-21 15:12:47 UTC (rev 593) @@ -1,7 +1,6 @@ #ifndef AO_MSG_H #define AO_MSG_H -#define MSGT_CLASS MSGT_AO #include "mpxp_msg.h" namespace mpxp { Modified: mplayerxp/libao3/ao_nas.cpp =================================================================== --- mplayerxp/libao3/ao_nas.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_nas.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -165,7 +165,7 @@ pthread_create(&event_thread, NULL, &nas_event_thread_start, this); } Nas_AO_Interface::~Nas_AO_Interface() { - MSG_DBG3("ao_nas: uninit()\n"); + mpxp_dbg3<<"ao_nas: uninit()"<<std::endl; expect_underrun = 1; while (state != AuStateStop) yield_timeslice(); @@ -200,20 +200,17 @@ void Nas_AO_Interface::nas_print_error(const char *prefix, AuStatus as) const { char s[100]; AuGetErrorText(aud, as, s, 100); - MSG_ERR("ao_nas: %s: returned status %d (%s)\n", prefix, as, s); + mpxp_err<<"ao_nas: "<<prefix<<": returned status "<<as<<" ("<<s<<")"<<std::endl; } int Nas_AO_Interface::nas_readBuffer(unsigned int num) { AuStatus as; pthread_mutex_lock(&buffer_mutex); - MSG_DBG2("ao_nas: nas_readBuffer(): num=%d client=%d/%d server=%d/%d\n", - num, - client_buffer_used, client_buffer_size, - server_buffer_used, server_buffer_size); + mpxp_dbg2<<"ao_nas: nas_readBuffer(): num="<<num<<" client="<<client_buffer_used<<"/"<<client_buffer_size<<" server="<<server_buffer_used<<"/"<<server_buffer_size<<std::endl; if (client_buffer_used == 0) { - MSG_DBG2("ao_nas: buffer is empty, nothing read.\n"); + mpxp_dbg2<<"ao_nas: buffer is empty, nothing read."<<std::endl; pthread_mutex_unlock(&buffer_mutex); return 0; } @@ -252,9 +249,7 @@ int Nas_AO_Interface::nas_writeBuffer(const any_t*data, unsigned int len) { pthread_mutex_lock(&buffer_mutex); - MSG_DBG2("ao_nas: nas_writeBuffer(): len=%d client=%d/%d server=%d/%d\n", - len, client_buffer_used, client_buffer_size, - server_buffer_used, server_buffer_size); + mpxp_dbg2<<"ao_nas: nas_writeBuffer(): len="<<len<<" client="<<client_buffer_used<<"/"<<client_buffer_size<<" server="<<server_buffer_used<<"/%d"<<server_buffer_size<<std::endl; /* make sure we don't overflow the buffer */ if (len > client_buffer_size - client_buffer_used) @@ -283,9 +278,7 @@ any_t* Nas_AO_Interface::nas_event_thread_start(any_t*data) { Nas_AO_Interface& _this=*reinterpret_cast<Nas_AO_Interface*>(data); do { - MSG_DBG2( - "ao_nas: event thread heartbeat (state=%s)\n", - _this.nas_state(_this.state)); + mpxp_dbg2<<"ao_nas: event thread heartbeat (state="<<_this.nas_state(_this.state)<<")"<<std::endl; _this.nas_empty_event_queue(); yield_timeslice(); } while (!_this.stop_thread); @@ -295,14 +288,10 @@ static AuBool nas_error_handler_callback(AuServer* aud,AuErrorEvent* ev) { char s[100]; AuGetErrorText(aud, ev->error_code, s, 100); - MSG_ERR( "ao_nas: error [%s]\n" - "error_code: %d\n" - "request_code: %d\n" - "minor_code: %d\n", - s, - ev->error_code, - ev->request_code, - ev->minor_code); + mpxp_err<<"ao_nas: error ["<<s<<"]"<<std::endl; + mpxp_err<<"error_code: "<<ev->error_code<<std::endl; + mpxp_err<<"request_code: "<<ev->request_code<<std::endl; + mpxp_err<<"minor_code: "<<ev->minor_code<<std::endl; return AuTrue; } @@ -311,16 +300,13 @@ AuElementNotifyEvent *event = (AuElementNotifyEvent *) ev; Nas_AO_Interface& _this = *reinterpret_cast<Nas_AO_Interface*>(hnd->data); - MSG_DBG2("ao_nas: event_handler(): type %s kind %s state %s->%s reason %s numbytes %d expect_underrun %d\n", - _this.nas_event_type(event->type), - _this.nas_elementnotify_kind(event->kind), - _this.nas_state(event->prev_state), - _this.nas_state(event->cur_state), - _this.nas_reason(event->reason), - (int)event->num_bytes, - _this.expect_underrun); + mpxp_dbg2<<"ao_nas: event_handler(): type "<<_this.nas_event_type(event->type) + <<" kind "<<_this.nas_elementnotify_kind(event->kind) + <<" state "<<_this.nas_state(event->prev_state)<<"->"<<_this.nas_state(event->cur_state) + <<" reason "<<_this.nas_reason(event->reason) + <<" numbytes "<<event->num_bytes<<" expect_underrun"<<_this.expect_underrun<<std::endl; if (event->num_bytes > INT_MAX) { - MSG_ERR( "ao_nas: num_bytes > 2GB, server buggy?\n"); + mpxp_err<<"ao_nas: num_bytes > 2GB, server buggy?"<<std::endl; } if (event->num_bytes > _this.server_buffer_used) @@ -338,20 +324,20 @@ _this.expect_underrun = 0; } else { static int hint = 1; - MSG_WARN("ao_nas: Buffer underrun.\n"); + mpxp_warn<<"ao_nas: Buffer underrun."<<std::endl; if (hint) { hint = 0; - MSG_HINT("Possible reasons are:\n" - "1) Network congestion.\n" - "2) Your NAS server is too slow.\n" - "Try renicing your nasd to e.g. -15.\n"); + mpxp_hint<<"Possible reasons are:"<<std::endl + <<"1) Network congestion."<<std::endl + <<"2) Your NAS server is too slow."<<std::endl + <<"Try renicing your nasd to e.g. -15."<<std::endl; } } if (_this.nas_readBuffer(_this.server_buffer_size - _this.server_buffer_used) != 0) { event->cur_state = AuStateStart; break; } - MSG_DBG2("ao_nas: Can't refill buffer, stopping flow.\n"); + mpxp_dbg2<<"ao_nas: Can't refill buffer, stopping flow."<<std::endl; AuStopFlow(_this.aud, _this.flow, NULL); break; default: @@ -409,7 +395,7 @@ case AOCONTROL_GET_VOLUME: vol->right = (float)gain/AU_FIXED_POINT_SCALE*50; vol->left = vol->right; - MSG_DBG2( "ao_nas: AOCONTROL_GET_VOLUME: %.2f\n", vol->right); + mpxp_dbg2<<"ao_nas: AOCONTROL_GET_VOLUME: "<<vol->right<<std::endl; retval = MPXP_Ok; break; case AOCONTROL_SET_VOLUME: @@ -419,7 +405,7 @@ * so i take the mean of both values. */ g = AU_FIXED_POINT_SCALE*((vol->left+vol->right)/2)/50; - MSG_DBG2( "ao_nas: AOCONTROL_SET_VOLUME: %.2f\n", (vol->left+vol->right)/2); + mpxp_dbg2<<"ao_nas: AOCONTROL_SET_VOLUME: "<<((vol->left+vol->right)/2)<<std::endl; aep.parameters[AuParmsMultiplyConstantConstant]=g; aep.flow = flow; @@ -457,7 +443,7 @@ _outburst = NAS_FRAG_SIZE; buffer_size = bps(); /* buffer 1 second */ - MSG_V("ao3: %d Hz %d chans %s\n",r,c,afmt2str(f)); + mpxp_v<<"ao3: "<<r<<" Hz "<<c<<" chans "<<afmt2str(f)<<std::endl; /* * round up to multiple of NAS_FRAG_SIZE @@ -472,21 +458,21 @@ server_buffer = new char [server_buffer_size]; if (!bytes_per_sample) { - MSG_ERR("ao_nas: init(): Zero bytes per sample -> nosound\n"); + mpxp_err<<"ao_nas: init(): Zero bytes per sample -> nosound"<<std::endl; return MPXP_False; } if (!(server = ::getenv("AUDIOSERVER")) && !(server = ::getenv("DISPLAY"))) { - MSG_ERR("ao_nas: init(): AUDIOSERVER environment variable not set -> nosound\n"); + mpxp_err<<"ao_nas: init(): AUDIOSERVER environment variable not set -> nosound"<<std::endl; return MPXP_False; } - MSG_V("ao_nas: init(): Using audioserver %s\n", server); + mpxp_v<<"ao_nas: init(): Using audioserver "<<server<<std::endl; aud = AuOpenServer(server, 0, NULL, 0, NULL, NULL); if (!aud) { - MSG_ERR("ao_nas: init(): Can't open nas audio server -> nosound\n"); + mpxp_err<<"ao_nas: init(): Can't open nas audio server -> nosound"<<std::endl; return MPXP_False; } @@ -499,7 +485,7 @@ } if (flow == 0) { - MSG_ERR("ao_nas: init(): Can't find a suitable output device -> nosound\n"); + mpxp_err<<"ao_nas: init(): Can't find a suitable output device -> nosound"<<std::endl; AuCloseServer(aud); aud = 0; return MPXP_False; @@ -535,7 +521,7 @@ void Nas_AO_Interface::reset() { AuStatus as; - MSG_DBG3("ao_nas: reset()\n"); + mpxp_dbg3<<"ao_nas: reset()"<<std::endl; pthread_mutex_lock(&buffer_mutex); client_buffer_used = 0; @@ -551,7 +537,7 @@ // stop playing, keep buffers (for pause) void Nas_AO_Interface::pause() { AuStatus as; - MSG_DBG3("ao_nas: audio_pause()\n"); + mpxp_dbg3<<"ao_nas: audio_pause()"<<std::endl; AuStopFlow(aud, flow, &as); } @@ -561,7 +547,7 @@ { AuStatus as; - MSG_DBG3("ao_nas: audio_resume()\n"); + mpxp_dbg3<<"ao_nas: audio_resume()"<<std::endl; AuStartFlow(aud, flow, &as); if (as != AuSuccess) nas_print_error("play(): AuStartFlow", as); @@ -573,7 +559,7 @@ { unsigned result; - MSG_DBG3("ao_nas: get_space()\n"); + mpxp_dbg3<<"ao_nas: get_space()"<<std::endl; pthread_mutex_lock(&buffer_mutex); result = client_buffer_size - client_buffer_used; @@ -589,7 +575,7 @@ unsigned written, maxbursts = 0, playbursts = 0; AuStatus as; UNUSED(flags); - MSG_DBG3("ao_nas: play(%p, %d, %d)\n", data, len, flags); + mpxp_dbg3<<"ao_nas: play("<<data<<", "<<len<<", "<<flags<<")"<<std::endl; if (len == 0) return 0; /* @@ -602,7 +588,7 @@ if (state != AuStateStart && (maxbursts == playbursts /*|| flags & AOPLAY_FINAL_CHUNK*/)) { - MSG_DBG2("ao_nas: play(): Starting flow.\n"); + mpxp_dbg2<<"ao_nas: play(): Starting flow."<<std::endl; expect_underrun = 1; AuStartFlow(aud, flow, &as); if (as != AuSuccess) nas_print_error("play(): AuStartFlow", as); @@ -614,7 +600,7 @@ float Nas_AO_Interface::get_delay() { float result; - MSG_DBG3( "ao_nas: get_delay()\n"); + mpxp_dbg3<<"ao_nas: get_delay()"<<std::endl; pthread_mutex_lock(&buffer_mutex); result = ((float)(client_buffer_used + server_buffer_used)) / (float)bps(); Modified: mplayerxp/libao3/ao_null.cpp =================================================================== --- mplayerxp/libao3/ao_null.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_null.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -224,7 +224,7 @@ buffer += bursts * _outburst; UNUSED(flags); if(fd && len) { - MSG_DBG2("writing %u bytes into file\n",len); + mpxp_dbg2<<"writing "<<len<<" bytes into file"<<std::endl; ::fwrite(data,len,1,fd); wavhdr.data_length += len; } Modified: mplayerxp/libao3/ao_openal.cpp =================================================================== --- mplayerxp/libao3/ao_openal.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_openal.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -120,7 +120,7 @@ UNUSED(flags); alc_dev = alcOpenDevice(NULL); if (!alc_dev) { - MSG_ERR("[OpenAL] could not open device\n"); + mpxp_err<<"[OpenAL] could not open device"<<std::endl; return MPXP_False; } return MPXP_Ok; @@ -142,7 +142,7 @@ unsigned i; _format=f; if (c > MAX_CHANS) { - MSG_ERR("[OpenAL] Invalid number of channels: %i\n", c); + mpxp_err<<"[OpenAL] Invalid number of channels: "<<c<<std::endl; goto err_out; } ctx = alcCreateContext(alc_dev, attribs); Modified: mplayerxp/libao3/ao_oss.cpp =================================================================== --- mplayerxp/libao3/ao_oss.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_oss.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -108,28 +108,28 @@ int rval; rval=0; if (::ioctl (fd, SNDCTL_DSP_GETFMTS, &rval) != -1) { - MSG_INFO("AO-INFO: List of supported formats: "); - if(rval & AFMT_MU_LAW) MSG_INFO("AFMT_MU_LAW "); - if(rval & AFMT_A_LAW) MSG_INFO("AFMT_A_LAW "); - if(rval & AFMT_IMA_ADPCM) MSG_INFO("AFMT_IMA_ADPCM "); - if(rval & AFMT_U8) MSG_INFO("AFMT_U8 "); - if(rval & AFMT_S16_LE) MSG_INFO("AFMT_S16_LE "); - if(rval & AFMT_S16_BE) MSG_INFO("AFMT_S16_BE "); - if(rval & AFMT_S8) MSG_INFO("AFMT_S8 "); - if(rval & AFMT_U16_LE) MSG_INFO("AFMT_U16_LE "); + mpxp_info<<"AO-INFO: List of supported formats: "; + if(rval & AFMT_MU_LAW) mpxp_info<<"AFMT_MU_LAW "; + if(rval & AFMT_A_LAW) mpxp_info<<"AFMT_A_LAW "; + if(rval & AFMT_IMA_ADPCM) mpxp_info<<"AFMT_IMA_ADPCM "; + if(rval & AFMT_U8) mpxp_info<<"AFMT_U8 "; + if(rval & AFMT_S16_LE) mpxp_info<<"AFMT_S16_LE "; + if(rval & AFMT_S16_BE) mpxp_info<<"AFMT_S16_BE "; + if(rval & AFMT_S8) mpxp_info<<"AFMT_S8 "; + if(rval & AFMT_U16_LE) mpxp_info<<"AFMT_U16_LE "; - if(rval & AFMT_U16_BE) MSG_INFO("AFMT_U16_BE "); - if(rval & AFMT_MPEG) MSG_INFO("AFMT_MPEG "); - if(rval & AFMT_AC3) MSG_INFO("AFMT_AC3 "); - if(rval & AFMT_S24_LE) MSG_INFO("AFMT_S24_LE "); - if(rval & AFMT_S24_BE) MSG_INFO("AFMT_S24_BE "); - if(rval & AFMT_U24_LE) MSG_INFO("AFMT_U24_LE "); - if(rval & AFMT_U24_BE) MSG_INFO("AFMT_U24_LE "); - if(rval & AFMT_S32_LE) MSG_INFO("AFMT_S32_LE "); - if(rval & AFMT_S32_BE) MSG_INFO("AFMT_S32_BE "); - if(rval & AFMT_U32_LE) MSG_INFO("AFMT_U32_LE "); - if(rval & AFMT_U32_BE) MSG_INFO("AFMT_U32_LE "); - MSG_INFO("\n"); + if(rval & AFMT_U16_BE) mpxp_info<<"AFMT_U16_BE "; + if(rval & AFMT_MPEG) mpxp_info<<"AFMT_MPEG "; + if(rval & AFMT_AC3) mpxp_info<<"AFMT_AC3 "; + if(rval & AFMT_S24_LE) mpxp_info<<"AFMT_S24_LE "; + if(rval & AFMT_S24_BE) mpxp_info<<"AFMT_S24_BE "; + if(rval & AFMT_U24_LE) mpxp_info<<"AFMT_U24_LE "; + if(rval & AFMT_U24_BE) mpxp_info<<"AFMT_U24_LE "; + if(rval & AFMT_S32_LE) mpxp_info<<"AFMT_S32_LE "; + if(rval & AFMT_S32_BE) mpxp_info<<"AFMT_S32_BE "; + if(rval & AFMT_U32_LE) mpxp_info<<"AFMT_U32_LE "; + if(rval & AFMT_U32_BE) mpxp_info<<"AFMT_U32_LE "; + mpxp_info<<std::endl; } } @@ -142,23 +142,23 @@ fd=::open(dsp.c_str(), O_WRONLY); #endif if(fd<0){ - MSG_ERR("Can't open audio device %s: %s\n",dsp.c_str(), strerror(errno)); + mpxp_err<<"Can't open audio device "<<dsp<<": "<<strerror(errno)<<std::endl; return; } show_fmts(); rval=0; if (::ioctl (fd, SNDCTL_DSP_GETCAPS, &rval) != -1) { - MSG_INFO("AO-INFO: Capabilities: "); - MSG_INFO("rev-%u ",rval & DSP_CAP_REVISION); - if(rval & DSP_CAP_DUPLEX) MSG_INFO("duplex "); - if(rval & DSP_CAP_REALTIME) MSG_INFO("realtime "); - if(rval & DSP_CAP_BATCH) MSG_INFO("batch "); - if(rval & DSP_CAP_COPROC) MSG_INFO("coproc "); - if(rval & DSP_CAP_TRIGGER) MSG_INFO("trigger "); - if(rval & DSP_CAP_MMAP) MSG_INFO("mmap "); - if(rval & DSP_CAP_MULTI) MSG_INFO("multiopen "); - if(rval & DSP_CAP_BIND) MSG_INFO("bind "); - MSG_INFO("\n"); + mpxp_info<<"AO-INFO: Capabilities: "; + mpxp_info<<"rev-"<<(rval & DSP_CAP_REVISION)<<" "; + if(rval & DSP_CAP_DUPLEX) mpxp_info<<"duplex "; + if(rval & DSP_CAP_REALTIME) mpxp_info<<"realtime "; + if(rval & DSP_CAP_BATCH) mpxp_info<<"batch "; + if(rval & DSP_CAP_COPROC) mpxp_info<<"coproc "; + if(rval & DSP_CAP_TRIGGER) mpxp_info<<"trigger "; + if(rval & DSP_CAP_MMAP) mpxp_info<<"mmap "; + if(rval & DSP_CAP_MULTI) mpxp_info<<"multiopen "; + if(rval & DSP_CAP_BIND) mpxp_info<<"bind "; + mpxp_info<<std::endl; } ::close(fd); } @@ -181,8 +181,8 @@ if(p=="-1") { show_caps(); return MPXP_False; } } } - MSG_V("audio_setup: using '%s' dsp device\n", dsp.c_str()); - MSG_V("audio_setup: using '%s'(%s) mixer device\n", mixer_device,mixer_channels[mixer_channel]); + mpxp_v<<"audio_setup: using '"<<dsp<<"' dsp device"<<std::endl; + mpxp_v<<"audio_setup: using '"<<mixer_device<<"'("<<mixer_channels[mixer_channel]<<") mixer device"<<std::endl; #ifdef __linux__ fd=::open(dsp.c_str(), O_WRONLY | O_NONBLOCK); @@ -190,14 +190,14 @@ fd=::open(dsp.c_str(), O_WRONLY); #endif if(fd<0){ - MSG_ERR("Can't open audio device %s: %s\n", dsp.c_str(), strerror(errno)); + mpxp_err<<"Can't open audio device "<<dsp<<": "<<strerror(errno)<<std::endl; return MPXP_False; } #ifdef __linux__ /* Remove the non-blocking flag */ if(::fcntl(fd, F_SETFL, 0) < 0) { - MSG_ERR("Can't make filedescriptor non-blocking: %s\n", strerror(errno)); + mpxp_err<<"Can't make filedescriptor non-blocking: "<<strerror(errno)<<std::endl; return MPXP_False; } #endif @@ -209,7 +209,7 @@ MPXP_Rc Oss_AO_Interface::configure(unsigned r,unsigned c,unsigned f) { - MSG_V("ao3: %d Hz %d chans %s\n",r,c,ao_format_name(f)); + mpxp_v<<"ao3: "<<r<<" Hz "<<c<<" chans "<<ao_format_name(f)<<std::endl; if(f == AFMT_AC3) { _samplerate=r; @@ -220,7 +220,7 @@ _format=f; if( ::ioctl(fd, SNDCTL_DSP_SETFMT, &_format)<0 || _format != f) { if(_format == AFMT_AC3){ - MSG_WARN("OSS-CONF: Can't set audio device %s to AC3 output, trying S16...\n", dsp.c_str()); + mpxp_warn<<"OSS-CONF: Can't set audio device "<<dsp<<" to AC3 output, trying S16..."<<std::endl; #ifdef WORDS_BIGENDIAN _format=AFMT_S16_BE; #else @@ -228,7 +228,7 @@ #endif goto ac3_retry; } else { - MSG_ERR("OSS-CONF: Can't config_ao for: %s\n",ao_format_name(_format)); + mpxp_err<<"OSS-CONF: Can't config_ao for: "<<ao_format_name(_format)<<std::endl; show_fmts(); _format=f; return MPXP_False; @@ -239,36 +239,35 @@ // We only use SNDCTL_DSP_CHANNELS for >2 channels, in case some drivers don't have it if (_channels > 2) { if (::ioctl(fd, SNDCTL_DSP_CHANNELS, &_channels) == -1 || _channels != c ) { - MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", _channels); + mpxp_err<<"OSS-CONF: Failed to set audio device to "<<_channels<<" channels"<<std::endl; return MPXP_False; } } else { int _c = _channels-1; if (::ioctl(fd, SNDCTL_DSP_STEREO, &_c) == -1) { - MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", _channels); + mpxp_err<<"OSS-CONF: Failed to set audio device to "<<_channels<<" channels"<<std::endl; return MPXP_False; } _channels=_c+1; } - MSG_V("OSS-CONF: using %d channels (requested: %d)\n", _channels, c); + mpxp_v<<"OSS-CONF: using "<<_channels<<" channels (requested: "<<c<<")"<<std::endl; // set rate _samplerate=r; ::ioctl (fd, SNDCTL_DSP_SPEED, &_samplerate); - MSG_V("OSS-CONF: using %d Hz samplerate (requested: %d)\n",_samplerate,r); + mpxp_v<<"OSS-CONF: using "<<_samplerate<<" Hz samplerate (requested: "<<r<<")"<<std::endl; } if(::ioctl(fd, SNDCTL_DSP_GETOSPACE, &zz)==-1){ int _r=0; - MSG_WARN("OSS-CONF: driver doesn't support SNDCTL_DSP_GETOSPACE :-(\n"); + mpxp_warn<<"OSS-CONF: driver doesn't support SNDCTL_DSP_GETOSPACE"<<std::endl; if(::ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &_r)==-1){ - MSG_V("OSS-CONF: %d bytes/frag (mpxp_config.h)\n",_outburst); + mpxp_v<<"OSS-CONF: "<<_outburst<<" bytes/frag (mpxp_config.h)"<<std::endl; } else { _outburst=r; - MSG_V("OSS-CONF: %d bytes/frag (GETBLKSIZE)\n",_outburst); + mpxp_v<<"OSS-CONF: "<<_outburst<<" bytes/frag (GETBLKSIZE)"<<std::endl; } } else { - MSG_V("OSS-CONF: frags: %3d/%d (%d bytes/frag) mp_free: %6d\n", - zz.fragments, zz.fragstotal, zz.fragsize, zz.bytes); + mpxp_v<<"OSS-CONF: frags: "<<zz.fragments<<"/"<<zz.fragstotal<<" ("<<zz.fragsize<<" bytes/frag) mp_free: "<<zz.bytes<<std::endl; if(_buffersize==0) _buffersize=zz.bytes; _outburst=zz.fragsize; } @@ -290,8 +289,8 @@ } delete data; if(_buffersize==0){ - MSG_ERR("\n *** OSS-CONF: Your audio driver DOES NOT support select() ***\n" - "Recompile mplayerxp with #undef HAVE_AUDIO_SELECT in mpxp_config.h !\n\n"); + mpxp_err<<std::endl<<"*** OSS-CONF: Your audio driver DOES NOT support select() ***"<<std::endl; + mpxp_err<<"Recompile mplayerxp with #undef HAVE_AUDIO_SELECT in mpxp_config.h!"<<std::endl; return MPXP_False; } #endif @@ -307,7 +306,7 @@ ::close(fd); fd=::open(dsp.c_str(), O_WRONLY); if(fd < 0){ - MSG_FATAL("\nFatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** %s\n", strerror(errno)); + mpxp_fatal<<std::endl<<"Fatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** "<<strerror(errno)<<std::endl; return; } Modified: mplayerxp/libao3/ao_sdl.cpp =================================================================== --- mplayerxp/libao3/ao_sdl.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_sdl.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -13,6 +13,7 @@ * */ #include <algorithm> +#include <iomanip> #include <stdio.h> #include <stdlib.h> @@ -76,7 +77,7 @@ :AO_Interface(_subdevice),volume(new unsigned) {} SDL_AO_Interface::~SDL_AO_Interface() { - MSG_V("SDL: Audio Subsystem shutting down!\n"); + mpxp_v<<"SDL: Audio Subsystem shutting down!"<<std::endl; SDL_CloseAudio(); SDL_QuitSubSystem(SDL_INIT_AUDIO); delete volume; @@ -210,7 +211,7 @@ aspec.format = AUDIO_U16MSB; break; default: - MSG_ERR("SDL: Unsupported audio format: 0x%x.\n", _format); + mpxp_err<<"SDL: Unsupported audio format: 0x"<<std::hex<<_format<<std::endl; return MPXP_False; } @@ -232,13 +233,13 @@ /* initialize the SDL Audio system */ if (SDL_Init (SDL_INIT_AUDIO/*|SDL_INIT_NOPARACHUTE*/)) { - MSG_ERR("SDL: Initializing of SDL Audio failed: %s.\n", SDL_GetError()); + mpxp_err<<"SDL: Initializing of SDL Audio failed: "<<SDL_GetError()<<std::endl; return MPXP_False; } /* Open the audio device and start playing sound! */ if(SDL_OpenAudio(&aspec, &obtained) < 0) { - MSG_ERR("SDL: Unable to open audio: %s\n", SDL_GetError()); + mpxp_err<<"SDL: Unable to open audio: "<<SDL_GetError()<<std::endl; return MPXP_False; } @@ -266,19 +267,15 @@ _format = AFMT_U16_BE; break; default: - MSG_WARN("SDL: Unsupported SDL audio format: 0x%x.\n", obtained.format); + mpxp_warn<<"SDL: Unsupported SDL audio format: 0x"<<std::hex<<obtained.format<<std::endl; return MPXP_False; } - MSG_V("SDL: buf size = %d\n",aspec.size); + mpxp_v<<"SDL: buf size = "<<aspec.size<<std::endl; _buffersize=obtained.size; SDL_AudioDriverName(drv_name, sizeof(drv_name)); - MSG_OK("SDL: using %s audio driver (%iHz %s \"%s\")\n" - ,drv_name - ,_samplerate - ,_channels>4?"Surround":_channels>2?"Quadro":_channels>1?"Stereo":"Mono" - ,ao_format_name(_format)); + mpxp_ok<<"SDL: using "<<drv_name<<" audio driver ("<<_samplerate<<"Hz "<<(_channels>4?"Surround":_channels>2?"Quadro":_channels>1?"Stereo":"Mono")<<" \""<<ao_format_name(_format)<<"\")"<<std::endl; /* unsilence audio, if callback is ready */ SDL_PauseAudio(0); Modified: mplayerxp/libao3/ao_wav.cpp =================================================================== --- mplayerxp/libao3/ao_wav.cpp 2012-12-21 14:05:31 UTC (rev 592) +++ mplayerxp/libao3/ao_wav.cpp 2012-12-21 15:12:47 UTC (rev 593) @@ -109,9 +109,9 @@ broken_seek = GetFileType((HANDLE)_get_osfhandle(_fileno(fp))) != FILE_TYPE_DISK; #endif if (broken_seek || fseek(fp, 0, SEEK_SET) != 0) - MSG_ERR("Could not seek to start, WAV size headers not updated!\n"); + mpxp_err<<"Could not seek to start, WAV size headers not updated!"<<std::endl; else if (data_length > 0x7ffff000) - MSG_ERR("File larger than allowed for WAV files, may play truncated!\n"); + mpxp_err<<"File larger than allowed for WAV files, may play truncated!"<<std::endl; else { wavhdr.file_length = data_length + sizeof(wavhdr) - 8; wavhdr.file_length = le2me_32(wavhdr.file_length); @@ -188,12 +188,7 @@ wavhdr.data_length=le2me_32(0x7ffff000); wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8; - MSG_INFO("ao_wav: %s %d-%s %s\n" - ,out_filename.c_str() - ,_samplerate - ,(_channels > 1) ? "Stereo" : "Mono" - ,afmt2str(_format)); - + mpxp_info<<"ao_wav: "<<out_filename<<" "<<_samplerate<<"-"<<((_channels > 1) ? "Stereo" : "Mono")<<" "<<afmt2str(_format)<<std::endl; fp = ::fopen(out_filename.c_str(), "wb"); if(fp) { if(pcm_waveheader){ /* Reserve space for wave header */ @@ -201,7 +196,7 @@ } return MPXP_Ok; } - MSG_ERR("ao_wav: can't open output file: %s\n", out_filename.c_str()); + mpxp_err<<"ao_wav: can't open output file: "<<out_filename<<std::endl; return MPXP_False; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-21 14:05:40
|
Revision: 592 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=592&view=rev Author: nickols_k Date: 2012-12-21 14:05:31 +0000 (Fri, 21 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output Modified Paths: -------------- mplayerxp/xmpcore/sig_hand.cpp mplayerxp/xmpcore/xmp_adecoder.cpp mplayerxp/xmpcore/xmp_aframe.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_core.cpp mplayerxp/xmpcore/xmp_core.h mplayerxp/xmpcore/xmp_image.cpp mplayerxp/xmpcore/xmp_vdecoder.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Modified: mplayerxp/xmpcore/sig_hand.cpp =================================================================== --- mplayerxp/xmpcore/sig_hand.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/sig_hand.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -27,7 +27,7 @@ /* A dummy function to make the backtrace more interesting. */ static void dump_trace (void) { show_backtrace("Obtained %zd stack frames.\n",mp_conf.max_trace); - MSG_HINT("\nFor source lines you may also print in (gdb): list *0xADDRESS\n"); + mpxp_hint<<std::endl<<"For source lines you may also print in (gdb): list *0xADDRESS"<<std::endl; } static void my_callback(int signo) @@ -38,11 +38,9 @@ if(i >= mpxp_context().engine().xp_core->num_threads || !pthread_equal(mpxp_context().engine().xp_core->mpxp_threads[i]->pth_id, _self)) i = 0; /* Use 0 as default handler */ - MSG_FATAL("catching signal: %s in thread: %s (%i) in module: %s\n" - ,strsignal(signo) - ,mpxp_context().engine().xp_core->mpxp_threads[i]->name - ,i - ,mpxp_context().engine().xp_core->mpxp_threads[i]->unit); + mpxp_fatal<<"catching signal: "<<strsignal(signo) + <<" in thread: "<<mpxp_context().engine().xp_core->mpxp_threads[i]->name + <<" ("<<i<<") in module: %s"<<mpxp_context().engine().xp_core->mpxp_threads[i]->unit<<std::endl; dump_trace(); #ifdef NDEBUG mpxp_context().engine().xp_core->mpxp_threads[i]->sigfunc(); Modified: mplayerxp/xmpcore/xmp_adecoder.cpp =================================================================== --- mplayerxp/xmpcore/xmp_adecoder.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_adecoder.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -21,12 +21,6 @@ /* Audio stuff */ volatile float dec_ahead_audio_delay; namespace mpxp { -#ifdef ENABLE_DEC_AHEAD_DEBUG -#define MSG_T(args...) mp_msg(MSGT_GLOBAL, MSGL_DBG2,__FILE__,__LINE__, ## args ) -#else -#define MSG_T(args...) -#endif - extern int get_free_audio_buffer(void); /************************************************************************ @@ -65,7 +59,7 @@ int init_audio_buffer( int size, int min_reserv, int indices, sh_audio_t *sha ) { - MSG_V("Using audio buffer %i bytes (min reserve = %i, indices %i)\n",size,min_reserv, indices); + mpxp_v<<"Using audio buffer "<<size<<" bytes (min reserve = "<<min_reserv<<", indices "<<indices<<")"<<std::endl; if( !(audio_buffer.buffer = new unsigned char[size]) ) return ENOMEM; if( !(audio_buffer.indices = new audio_buffer_index_t[indices])) { @@ -104,8 +98,7 @@ loops--; } if( audio_buffer.blocked_readers > 0 ) - MSG_V("uninit_audio_buffer: %d blocked readers did not wake up\n", - audio_buffer.blocked_readers); + mpxp_v<<"uninit_audio_buffer: "<<audio_buffer.blocked_readers<<" blocked readers did not wake up"<<std::endl; } audio_buffer.index_len=0; @@ -197,23 +190,29 @@ } *pts = audio_buffer.indices[audio_buffer.index_tail].pts; - MSG_DBG3("audio_ahead: len %i, tail %i pts %.3f tail_idx %3i head_idx %3i head_pos %3i\n", len,audio_buffer.tail,*pts, audio_buffer.index_tail, head_idx, head_pos ); + mpxp_dbg3<<"audio_ahead: len "<<len<<", tail "<<audio_buffer.tail + <<" pts "<<*pts<<" tail_idx "<<audio_buffer.index_tail + <<" head_idx "<<head_idx<<" head_pos "<<head_pos<<std::endl; while( next_idx != head_idx && ((audio_buffer.tail <= head && (audio_buffer.indices[next_idx].index <= audio_buffer.tail || head_pos < audio_buffer.indices[next_idx].index)) || (head < audio_buffer.indices[next_idx].index && audio_buffer.indices[next_idx].index <= audio_buffer.tail))) { - MSG_DBG3("audio_ahead: next_idx %3i index %3i \n", next_idx, audio_buffer.indices[next_idx].index); + mpxp_dbg3<<"audio_ahead: next_idx "<<next_idx<<" index"<<audio_buffer.indices[next_idx].index<<std::endl; next_idx=(next_idx+1)%audio_buffer.index_len; } audio_buffer.index_tail = (next_idx-1+audio_buffer.index_len)%audio_buffer.index_len; if( audio_buffer.indices[audio_buffer.index_tail].index != audio_buffer.tail ) { int buff_len = audio_buffer.len; - MSG_DBG3("audio_ahead: orig idx %3i pts %.3f pos %i \n",audio_buffer.index_tail, audio_buffer.indices[audio_buffer.index_tail].pts,audio_buffer.indices[audio_buffer.index_tail].index ); + mpxp_dbg3<<"audio_ahead: orig idx "<<audio_buffer.index_tail + <<" pts "<<audio_buffer.indices[audio_buffer.index_tail].pts + <<" pos "<<audio_buffer.indices[audio_buffer.index_tail].index<<std::endl; audio_buffer.indices[audio_buffer.index_tail].pts += (float)((audio_buffer.tail - audio_buffer.indices[audio_buffer.index_tail].index + buff_len) % buff_len) / (float)audio_buffer.sh_audio->af_bps; audio_buffer.indices[audio_buffer.index_tail].index = audio_buffer.tail; - MSG_DBG3("audio_ahead: read next_idx %3i next_pts %.3f pos %i \n", audio_buffer.index_tail,audio_buffer.indices[audio_buffer.index_tail].pts,audio_buffer.indices[audio_buffer.index_tail].index ); + mpxp_dbg3<<"audio_ahead: read next_idx "<<audio_buffer.index_tail + <<" next_pts "<<audio_buffer.indices[audio_buffer.index_tail].pts + <<" pos "<<audio_buffer.indices[audio_buffer.index_tail].index<<std::endl; } } @@ -272,7 +271,7 @@ } } } - MSG_DBG3("decode audio %d h %d, t %d, l %d \n", len, audio_buffer.head, audio_buffer.tail, audio_buffer.len); + mpxp_dbg3<<"decode audio "<<len<<" h "<<audio_buffer.head<<", t "<<audio_buffer.tail<<", l "<<audio_buffer.len<<std::endl; for( l = 0, l2 = len, ret = 0; l < len && l2 >= audio_buffer.sh_audio->audio_out_minsize; ) { float pts; @@ -282,21 +281,23 @@ next_idx = (audio_buffer.index_head+1)%audio_buffer.index_len; if( next_idx != audio_buffer.index_tail ) { - MSG_DBG3("decode audio idx %3i tail %3i next pts %.3f %i\n",audio_buffer.index_head, audio_buffer.index_tail, pts, audio_buffer.head ); + mpxp_dbg3<<"decode audio idx "<<audio_buffer.index_head + <<" tail "<<audio_buffer.index_tail + <<" next pts "<<pts<<" "<<audio_buffer.head<<std::endl; audio_buffer.indices[audio_buffer.index_head].pts = pts; audio_buffer.indices[audio_buffer.index_head].index = audio_buffer.head; audio_buffer.index_head = next_idx; } audio_buffer.head+=ret; - MSG_DBG3("new head %6d \n", audio_buffer.head); + mpxp_dbg3<<"new head "<<audio_buffer.head<<std::endl; l += ret; l2 -= ret; blen -= ret; } - MSG_DBG2("decoded audio %d diff %d\n", l, l - len); + mpxp_dbg2<<"decoded audio "<<l<<" diff "<<(l - len)<<std::endl; if( ret <= 0 && d_audio->eof) { - MSG_V("audio eof\n"); + mpxp_v<<"audio eof"<<std::endl; audio_buffer.eof=1; pthread_mutex_unlock( &audio_buffer.head_mutex ); pthread_mutex_lock( &audio_buffer.tail_mutex ); @@ -437,7 +438,7 @@ priv->state=Pth_Run; if(mpxp_context().engine().xp_core->video) mpxp_context().engine().xp_core->video->eof=0; mpxp_context().engine().xp_core->audio->eof=0; - MSG_T("\nDEC_AHEAD: entering...\n"); + mpxp_dbg2<<std::endl<<"DEC_AHEAD: entering..."<<std::endl; priv->pid = getpid(); __MP_UNIT(priv->p_idx,"dec_ahead"); @@ -500,7 +501,7 @@ timeout.tv_sec = now.tv_sec + 1; retval = pthread_cond_timedwait( &audio_decode_cond, &audio_decode_mutex, &timeout ); if( retval == ETIMEDOUT ) - MSG_V("Audio decode seek timeout\n"); + mpxp_v<<"Audio decode seek timeout"<<std::endl; } #endif dec_ahead_can_adseek = 0; /* Not safe to seek */ @@ -514,7 +515,7 @@ void sig_audio_decode( void ) { - MSG_T("sig_audio_decode\n"); + mpxp_dbg2<<"sig_audio_decode"<<std::endl; mpxp_print_flush(); dec_ahead_can_adseek=1; Modified: mplayerxp/xmpcore/xmp_aframe.cpp =================================================================== --- mplayerxp/xmpcore/xmp_aframe.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_aframe.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -44,7 +44,7 @@ break; } //This can not happen .... - MSG_FATAL("[af_mp] Unrecognized input audio format %i\n",ifmt); + mpxp_fatal<<"[af_mp] Unrecognized input audio format "<<ifmt<<std::endl; break; } return ofmt; @@ -261,7 +261,7 @@ if(strcasecmp(str,fmt_aliases[i].name)==0) return mpaf_format_e(fmt_aliases[i].wtag<<16); } bad_fmt: - MSG_ERR("[af_format] Bad value %s. Examples: S08LE U24BE S32 MP3 AC3\n",str); + mpxp_err<<"[af_format] Bad value "<<str<<". Examples: S08LE U24BE S32 MP3 AC3"<<std::endl; return mpaf_format_e(MPAF_BE); } Modified: mplayerxp/xmpcore/xmp_aplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -21,17 +21,10 @@ #include "xmp_aplayer.h" #include "xmp_adecoder.h" +static const float MIN_AUDIO_TIME=0.05f; +static const float NOTHING_PLAYED=-1.0f; +static const float XP_MIN_TIMESLICE=0.010f; /* under Linux on x86 min time_slice = 10 ms */ -#ifdef ENABLE_DEC_AHEAD_DEBUG -#define MSG_T(args...) mp_msg(MSGT_GLOBAL, MSGL_DBG2,__FILE__,__LINE__, ## args ) -#else -#define MSG_T(args...) -#endif - -#define MIN_AUDIO_TIME 0.05 -#define NOTHING_PLAYED (-1.0) -#define XP_MIN_TIMESLICE 0.010 /* under Linux on x86 min time_slice = 10 ms */ - namespace mpxp { static int decore_audio(Demuxer_Stream *d_audio,sh_audio_t* sh_audio,sh_video_t*sh_video) @@ -104,7 +97,7 @@ sh_audio->timer+=playsize/(float)(sh_audio->af_bps); } else { sh_audio->timer=sh_audio->a_pts-(float)sh_audio->a_pts_pos/(float)sh_audio->af_bps; - MSG_V("Audio chapter change detected\n"); + mpxp_v<<"Audio chapter change detected"<<std::endl; sh_audio->chapter_change=1; sh_audio->a_pts = HUGE; } @@ -154,7 +147,7 @@ audio_buff_min = std::min(audio_buff_max, audio_buff_alert*2); audio_buff_norm = (audio_buff_max + audio_buff_min) / 2; - MSG_DBG2("alert %f, min %f, norm %f, max %f \n", audio_buff_alert, audio_buff_min, audio_buff_norm, audio_buff_max ); + mpxp_dbg2<<"alert "<<audio_buff_alert<<", min "<<audio_buff_min<<", norm "<<audio_buff_norm<<", max"<<audio_buff_max<<std::endl; samples = 5; collect_samples = 1; @@ -187,7 +180,7 @@ if( dec_ahead_audio_delay == NOTHING_PLAYED ) { /* To fast, we can sleep longer */ if( min_audio_time > audio_buff_alert ) { min_audio_time *= 0.75; - MSG_DBG2("To fast, set min_audio_time %.5f (delay %5f) \n", min_audio_time, dec_ahead_audio_delay ); + mpxp_dbg2<<"To fast, set min_audio_time "<<min_audio_time<<" (delay "<<dec_ahead_audio_delay<<")"<<std::endl; } collect_samples = 1; samples = 5; @@ -196,7 +189,7 @@ } else if( dec_ahead_audio_delay <= audio_buff_alert ) { /* To slow, sleep shorter */ if ( min_audio_time < MAX_AUDIO_TIME ) { min_audio_time *= 2.0; - MSG_DBG2("To slow, set min_audio_time %.5f (delay %5f) \n", min_audio_time, dec_ahead_audio_delay ); + mpxp_dbg2<<"To slow, set min_audio_time "<<min_audio_time<<" (delay "<<dec_ahead_audio_delay<<")"<<std::endl; } collect_samples = 1; samples = 10; @@ -213,14 +206,14 @@ if( min_audio > audio_buff_max ) { min_audio_time -= min_audio-audio_buff_norm; collect_samples = 1; - MSG_DBG2("Decrease min_audio_time %.5f (min %.5f max %.5f) \n", min_audio_time, min_audio, max_audio ); + mpxp_dbg2<<"Decrease min_audio_time "<<min_audio_time<<" (min "<<min_audio<<" max "<<max_audio<<")"<<std::endl; } else if( max_audio < audio_buff_min ) { min_audio_time *= 1.25; collect_samples = 1; - MSG_DBG2("Increase min_audio_time %.5f (min %.5f max %.5f) \n", min_audio_time, min_audio, max_audio ); + mpxp_dbg2<<"Increase min_audio_time "<<min_audio_time<<" (min "<<min_audio<<" max "<<max_audio<<")"<<std::endl; } else { collect_samples = 0; /* No change, stop */ - MSG_DBG2("Stop collecting samples time %.5f (min %.5f max %.5f) \n", min_audio_time, min_audio, max_audio ); + mpxp_dbg2<<"Stop collecting samples time "<<min_audio_time<<" (min "<<min_audio<<" max "<<max_audio<<")"<<std::endl; } if(collect_samples) { samples = 5; @@ -275,7 +268,7 @@ timeout.tv_sec = now.tv_sec + 1; retval = pthread_cond_timedwait( &audio_play_cond, &audio_play_mutex, &timeout ); if( retval == ETIMEDOUT ) - MSG_V("Audio seek timeout\n"); + mpxp_v<<"Audio seek timeout"<<std::endl; } #endif dec_ahead_can_aseek = 0; /* Not safe to seek */ @@ -290,7 +283,7 @@ void sig_audio_play( void ) { - MSG_T("sig_audio_play\n"); + mpxp_dbg2<<"sig_audio_play"<<std::endl; mpxp_print_flush(); dec_ahead_can_aseek=1; Modified: mplayerxp/xmpcore/xmp_core.cpp =================================================================== --- mplayerxp/xmpcore/xmp_core.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_core.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -26,7 +26,6 @@ #include "libmpcodecs/dec_audio.h" #include "sig_hand.h" -#define DA_PREFIX "DEC_AHEAD:" #include "player_msg.h" #include "osdep/timer.h" #include "mplayerxp.h" @@ -46,17 +45,10 @@ struct timespec audio_play_timeout; int audio_play_in_sleep=0; +static const int MIN_BUFFER_RESERV=8; /* Min audio buffer to keep mp_free, used to tell differ between full and empty buffer */ -#define MIN_BUFFER_RESERV 8 namespace mpxp { - -#ifdef ENABLE_DEC_AHEAD_DEBUG -#define MSG_T(args...) mp_msg(MSGT_GLOBAL, MSGL_DBG2,__FILE__,__LINE__, ## args ) -#else -#define MSG_T(args...) -#endif - void xmp_init(void) { mpxp_context().engine().xp_core=new(zeromem) xp_core_t; mpxp_context().engine().xp_core->initial_apts=HUGE; @@ -83,7 +75,7 @@ } static void print_stopped_thread(unsigned idx) { - MSG_OK("*** stop thread: [%i] %s\n",idx,mpxp_context().engine().xp_core->mpxp_threads[idx]->name); + mpxp_ok<<"*** stop thread: ["<<idx<<"] "<<mpxp_context().engine().xp_core->mpxp_threads[idx]->name<<std::endl; } void xmp_killall_threads(pthread_t _self) @@ -291,7 +283,7 @@ pthread_attr_init(&attr); rc=pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); if(rc) { - MSG_ERR("running thread: attr_setdetachstate fault!!!\n"); + mpxp_err<<"running thread: attr_setdetachstate fault!!!"<<std::endl; pthread_attr_destroy(&attr); return rc; } Modified: mplayerxp/xmpcore/xmp_core.h =================================================================== --- mplayerxp/xmpcore/xmp_core.h 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_core.h 2012-12-21 14:05:31 UTC (rev 592) @@ -174,22 +174,11 @@ extern pthread_mutex_t audio_decode_mutex; extern pthread_cond_t audio_decode_cond; -#ifdef ENABLE_DEC_AHEAD_DEBUG -#include "mpxp_msg.h" -#ifndef DA_PREFIX -#define DA_PREFIX "dec_ahead:" -#endif -#define MSG_D(args...) { mp_msg(MSGT_GLOBAL, MSGL_V, __FILE__, __LINE__, ## args ); mp_msg_flush(); } -#else -#define MSG_D(args...) -#endif +inline void LOCK_AUDIO_PLAY() { pthread_mutex_lock(&audio_play_mutex); } +inline void UNLOCK_AUDIO_PLAY() { pthread_mutex_unlock(&audio_play_mutex); } +inline void LOCK_AUDIO_DECODE() { pthread_mutex_lock(&audio_decode_mutex); } +inline void UNLOCK_AUDIO_DECODE() { pthread_mutex_unlock(&audio_decode_mutex); } -#define LOCK_AUDIO_PLAY() { MSG_D(DA_PREFIX"LOCK_AUDIO_PLAY\n"); pthread_mutex_lock(&audio_play_mutex); } -#define UNLOCK_AUDIO_PLAY() { MSG_D(DA_PREFIX"UNLOCK_AUDIO_PLAY\n"); pthread_mutex_unlock(&audio_play_mutex); } - -#define LOCK_AUDIO_DECODE() { MSG_D(DA_PREFIX"LOCK_AUDIO_DECODE\n"); pthread_mutex_lock(&audio_decode_mutex); } -#define UNLOCK_AUDIO_DECODE() { MSG_D(DA_PREFIX"UNLOCK_AUDIO_DECODE\n"); pthread_mutex_unlock(&audio_decode_mutex); } - #define __MP_ATOMIC(OP) { static pthread_mutex_t loc_mutex; pthread_mutex_lock(&loc_mutex); OP; pthread_mutex_unlock(&loc_mutex); } #define __MP_SYNCHRONIZE(mtx,OP) { pthread_mutex_lock(&mtx); OP; pthread_mutex_unlock(&mtx); } Modified: mplayerxp/xmpcore/xmp_image.cpp =================================================================== --- mplayerxp/xmpcore/xmp_image.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_image.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -136,7 +136,7 @@ mpi->chroma_y_shift=1; return; } - MSG_WARN("mp_image: Unknown out_fmt: 0x%X\n",out_fmt); + mpxp_warn<<"mp_image: Unknown out_fmt: 0x"<<std::hex<<out_fmt<<std::endl; show_backtrace("outfmt",10); mpi->bpp=0; } Modified: mplayerxp/xmpcore/xmp_vdecoder.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vdecoder.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_vdecoder.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -15,13 +15,6 @@ #include "xmp_vdecoder.h" namespace mpxp { - -#ifdef ENABLE_DEC_AHEAD_DEBUG -#define MSG_T(args...) mp_msg(MSGT_GLOBAL, MSGL_DBG2,__FILE__,__LINE__, ## args ) -#else -#define MSG_T(args...) -#endif - /* this routine decodes video+audio but intends to be video only */ static void show_warn_cant_sync(sh_video_t*sh_video,float max_frame_delay) { @@ -29,12 +22,11 @@ static float prev_warn_delay=0; if(!warned || max_frame_delay > prev_warn_delay) { warned=1; - MSG_WARN("*********************************************\n" - "** Can't stabilize A-V sync!!! **\n" - "*********************************************\n" - "Try increase number of buffer for decoding ahead\n" - "Exist: %u, need: %u\n" - ,mpxp_context().engine().xp_core->num_v_buffs,(unsigned)(max_frame_delay*3*sh_video->fps)+3); + mpxp_warn<<"*********************************************"<<std::endl; + mpxp_warn<<"** Can't stabilize A-V sync!!! **"<<std::endl; + mpxp_warn<<"*********************************************"<<std::endl; + mpxp_warn<<"Try increase number of buffer for decoding ahead"<<std::endl; + mpxp_warn<<"Exist: "<<mpxp_context().engine().xp_core->num_v_buffs<<", need: "<<((unsigned)(max_frame_delay*3*sh_video->fps)+3)<<std::endl; prev_warn_delay=max_frame_delay; } } @@ -79,7 +71,12 @@ rc = (dae_curr_vdecoded(mpxp_context().engine().xp_core)%fr_skip_divisor)?0:1; if(delta>prev_delta) rc=0; } - MSG_D("DEC_AHEAD: max_frame_delay*3=%f drop_barrier=%f prev_delta=%f delta=%f(v_pts=%f screen_pts=%f) n_fr_to_drop=%u\n",max_frame_delay*3,drop_barrier,prev_delta,delta,v_pts,xp_screen_pts,xp_n_frame_to_drop); + mpxp_dbg2<<"DEC_AHEAD: max_frame_delay*3="<<(max_frame_delay*3) + <<" drop_barrier="<<drop_barrier + <<" prev_delta="<<prev_delta + <<" delta="<<delta + <<"(v_pts="<<v_pts<<" screen_pts="<<screen_pts + <<") n_fr_to_drop="<<rc<<std::endl; prev_delta=delta; return rc; } @@ -132,7 +129,7 @@ priv->state=Pth_Run; priv->dae->eof = 0; if(mpxp_context().engine().xp_core->audio) mpxp_context().engine().xp_core->audio->eof=0; - MSG_T("\nDEC_AHEAD: entering...\n"); + mpxp_dbg2<<std::endl<<"DEC_AHEAD: entering..."<<std::endl; __MP_UNIT(priv->p_idx,"dec_ahead"); priv->pid = getpid(); if(!xmp_test_model(XMP_Run_VA_Decoder) && mpxp_context().engine().xp_core->audio) @@ -180,7 +177,7 @@ if(mpeg_timer==HUGE) mpeg_timer=frame->pts; else if( mpeg_timer-duration<frame->pts ) { mpeg_timer=frame->pts; - MSG_DBG2("Sync mpeg pts %f\n", mpeg_timer); + mpxp_dbg2<<"Sync mpeg pts "<<mpeg_timer<<std::endl; } else mpeg_timer+=frame->duration; } @@ -192,7 +189,7 @@ /* Ugly solution: disable frame dropping right after seeking! */ if(cur_time - mpxp_context().seek_time > (mpxp_context().engine().xp_core->num_v_buffs/sh_video->fps)*100) xp_n_frame_to_drop=compute_frame_dropping(sh_video,frame->pts,drop_barrier); } /* if( mp_conf.frame_dropping ) */ - if(!finite(frame->pts)) MSG_WARN("Bug of demuxer! Value of video pts=%f\n",frame->pts); + if(!finite(frame->pts)) mpxp_warn<<"Bug of demuxer! Value of video pts="<<frame->pts<<std::endl; if(frame->type!=VideoFrame) escape_player("VideoDecoder doesn't parse non video frames",mp_conf.max_trace); #if 0 /* @@ -220,7 +217,7 @@ } frame->flags=drop_param; blit_frame=mpcv_decode(mpxp_context().video().decoder,frame); -MSG_DBG2("DECODER: %i[%i] %f\n",dae_curr_vdecoded(mpxp_context().engine().xp_core),frame->len,frame->pts); + mpxp_dbg2<<"DECODER: "<<dae_curr_vdecoded(mpxp_context().engine().xp_core)<<"["<<frame->len<<"] "<<frame->pts<<std::endl; if(mpxp_context().output_quality) { if(drop_param) mpcv_set_quality(mpxp_context().video().decoder,mpxp_context().output_quality); } @@ -244,8 +241,6 @@ /* sleep if thread is too fast ;) */ if(blit_frame) while(!dae_inc_decoded(mpxp_context().engine().xp_core->video)) { - MSG_T("DEC_AHEAD: sleep: player=%i decoder=%i)\n" - ,dae_curr_vplayed(),dae_curr_vdecoded()); if(priv->state==Pth_Canceling) goto pt_exit; if(priv->state==Pth_Sleep) goto pt_sleep; if(mpxp_context().engine().xp_core->audio && xmp_test_model(XMP_Run_VA_Decoder)) { @@ -267,14 +262,14 @@ } } pt_exit: - MSG_T("\nDEC_AHEAD: leaving...\n"); + mpxp_dbg2<<std::endl<<"DEC_AHEAD: leaving..."<<std::endl; priv->state=Pth_Stand; return arg; /* terminate thread here !!! */ } void sig_video_decode( void ) { - MSG_T("sig_video_decode\n"); + mpxp_dbg2<<"sig_video_decode"<<std::endl; mpxp_print_flush(); mpxp_context().engine().xp_core->video->eof = 1; Modified: mplayerxp/xmpcore/xmp_vplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-21 11:07:21 UTC (rev 591) +++ mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-21 14:05:31 UTC (rev 592) @@ -23,49 +23,40 @@ float max_pts_correction=0; namespace mpxp { -#ifdef ENABLE_DEC_AHEAD_DEBUG -#define MSG_T(args...) mp_msg(MSGT_GLOBAL, MSGL_DBG2,__FILE__,__LINE__, ## args ) -#else -#define MSG_T(args...) -#endif - static void __show_status_line(float a_pts,float v_pts,float delay,float AV_delay) { - MSG_STATUS("A:%6.1f V:%6.1f A-V:%7.3f %3d/%3d %2d%% %2d%% %4.1f%% %d [frms: [%i]]\n", - a_pts-delay,v_pts,AV_delay - ,mpxp_context().engine().xp_core->video->num_played_frames,mpxp_context().engine().xp_core->video->num_decoded_frames - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0 - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0 - ,(v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0 - ,mpxp_context().output_quality - ,dae_curr_vplayed(mpxp_context().engine().xp_core) - ); - fflush(stdout); + mpxp_status <<"A:"<<(a_pts-delay) + <<" V:"<<v_pts + <<" A-V:"<<AV_delay + <<" "<<mpxp_context().engine().xp_core->video->num_played_frames + <<"/"<<mpxp_context().engine().xp_core->video->num_decoded_frames + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0)<<"%" + <<" "<<mpxp_context().output_quality<<"%" + <<" [frms: ["<<dae_curr_vplayed(mpxp_context().engine().xp_core)<<"]]\r"; + mpxp_status.flush(); } static void show_status_line_no_apts(sh_audio_t* sh_audio,float v_pts) { if(mp_conf.av_sync_pts && sh_audio && (!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay())) { float a_pts = sh_audio->timer-mpxp_context().audio().output->get_delay(); - MSG_STATUS("A:%6.1f V:%6.1f A-V:%7.3f ct:%7.3f %3d/%3d %2d%% %2d%% %4.1f%% %d\r" - ,a_pts - ,v_pts - ,a_pts-v_pts - ,0.0 - ,mpxp_context().engine().xp_core->video->num_played_frames,mpxp_context().engine().xp_core->video->num_decoded_frames - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0 - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0 - ,(v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0 - ,mpxp_context().output_quality - ); + mpxp_status<<"A:"<<a_pts + <<" V:"<<v_pts + <<" A-V:"<<(a_pts-v_pts) + <<" ct: "<<mpxp_context().engine().xp_core->video->num_played_frames + <<"/"<<mpxp_context().engine().xp_core->video->num_decoded_frames + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0)<<"%" + <<" "<<mpxp_context().output_quality<<"\r"; } else - MSG_STATUS("V:%6.1f %3d %2d%% %2d%% %4.1f%% %d\r" - ,v_pts - ,mpxp_context().engine().xp_core->video->num_played_frames - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0 - ,(v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0 - ,(v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0 - ,mpxp_context().output_quality - ); - fflush(stdout); + mpxp_status<<"V:"<<v_pts + <<" "<<mpxp_context().engine().xp_core->video->num_played_frames + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->video/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(int)(100.0*mpxp_context().bench->vout/(double)v_pts):0)<<"%" + <<" "<<((v_pts>0.5)?(100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)v_pts):0)<<"%" + <<" "<<mpxp_context().output_quality<<"\r"; + mpxp_status.flush(); } static void vplayer_check_chapter_change(sh_audio_t* sh_audio,sh_video_t* sh_video,xmp_frame_t* shva_prev,float v_pts) @@ -75,17 +66,17 @@ while(v_pts < 1.0 && sh_audio->timer==0.0 && mpxp_context().audio().output->get_delay()==0.0) yield_timeslice(); /* Wait for audio to start play */ if(sh_audio->timer > 2.0 && v_pts < 1.0) { - MSG_V("Video chapter change detected\n"); + mpxp_v<<"Video chapter change detected"<<std::endl; sh_video->chapter_change=1; } else { sh_video->chapter_change=0; } } else if(v_pts < 1.0 && shva_prev->v_pts > 2.0) { - MSG_V("Video chapter change detected\n"); + mpxp_v<<"Video chapter change detected"<<std::endl; sh_video->chapter_change=1; } if(sh_video->chapter_change && sh_audio->chapter_change) { - MSG_V("Reset chapter change\n"); + mpxp_v<<"Reset chapter change"<<std::endl; sh_video->chapter_change=0; sh_audio->chapter_change=0; } @@ -114,11 +105,11 @@ return sleep_time; } +static const float XP_MIN_TIMESLICE=0.010f; /* under Linux on x86 min time_slice = 10 ms */ +static const float XP_MIN_AUDIOBUFF=0.05f; +static const float XP_MAX_TIMESLICE=0.1f; static int vplayer_do_sleep(sh_audio_t* sh_audio,int rtc_fd,float sleep_time) { -#define XP_MIN_TIMESLICE 0.010 /* under Linux on x86 min time_slice = 10 ms */ -#define XP_MIN_AUDIOBUFF 0.05 -#define XP_MAX_TIMESLICE 0.1 if(!mpxp_context().engine().xp_core->audio) sh_audio=NULL; if(sh_audio && (!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay()) && sleep_time>XP_MAX_TIMESLICE) { float t; @@ -169,20 +160,9 @@ if(mpxp_context().engine().xp_core->video->eof) can_blit=1; /* force blitting until end of stream will be reached */ vplayer_check_chapter_change(sh_audio,sh_video,&shva_prev,v_pts); -#if 0 -MSG_INFO("mpxp_context().engine().xp_core->initial_apts=%f a_eof=%i a_pts=%f sh_audio->timer=%f v_pts=%f stream_pts=%f duration=%f\n" -,mpxp_context().engine().xp_core->initial_apts -,mpxp_context().engine().xp_core->audio->eof -,sh_audio && !mpxp_context().engine().xp_core->audio->eof?d_audio->pts+(ds_tell_pts_r(d_audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps:0 -,sh_audio && !mpxp_context().engine().xp_core->audio->eof?sh_audio->timer-ao_get_delay(mpxp_context().audio().output):0 -,shva.v_pts -,shva.stream_pts -,shva.duration); -#endif /*--------- add OSD to the next frame contents ---------*/ if(can_blit) { #ifdef USE_OSD - MSG_D("dec_ahead_main: draw_osd to %u\n",player_idx); MP_UNIT("draw_osd"); update_osd(shva.v_pts); mpxp_context().video().output->draw_osd(dae_next_played(mpxp_context().engine().xp_core->video)); @@ -198,7 +178,7 @@ else for(unsigned j=0;MSGTR_SystemTooSlow[j];j++) mpxp_warn<<MSGTR_SystemTooSlow[j]<<std::endl; } - MSG_D("\ndec_ahead_main: stalling: %i %i\n",dae_cuurr_vplayed(),dae_curr_decoded()); + mpxp_dbg2<<std::endl<<"dec_ahead_main: stalling: "<<dae_curr_vplayed(mpxp_context().engine().xp_core)<<" "<<dae_curr_vdecoded(mpxp_context().engine().xp_core)<<std::endl; /* Don't burn CPU here! With using of v_pts for A-V sync we will enter xp_decore_video without any delay (like while(1);) Sleeping for 10 ms doesn't matter with frame dropping */ @@ -220,7 +200,7 @@ player_idx=dae_next_played(mpxp_context().engine().xp_core->video); mpxp_context().video().output->select_frame(player_idx); dae_inc_played(mpxp_context().engine().xp_core->video); - MSG_D("\ndec_ahead_main: schedule %u on screen\n",player_idx); + mpxp_dbg2<<std::endl<<"dec_ahead_main: schedule "<<player_idx<<" on screen"<<std::endl; t2=GetTimer()-t2; tt = t2*0.000001f; mpxp_context().bench->vout+=tt; @@ -249,7 +229,7 @@ if(!delay_corrected) if(a_pts) delay_corrected=1; a_pts+=(ds_tell_pts_r(d_audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; - MSG_DBG2("### A:%8.3f (%8.3f) V:%8.3f A-V:%7.4f \n",a_pts,a_pts-delay,v_pts,(a_pts-delay)-v_pts); + mpxp_dbg2<<"### A:"<<a_pts<<" ("<<(a_pts-delay)<<") V:"<<v_pts<<" A-V:"<<((a_pts-delay)-v_pts)<<std::endl; if(delay_corrected && can_blit){ float AV_delay=0; /* average of A-V timestamp differences */ @@ -284,7 +264,7 @@ priv->state=Pth_Run; priv->dae->eof = 0; if(mpxp_context().engine().xp_core->audio) mpxp_context().engine().xp_core->audio->eof=0; - MSG_T("\nDEC_AHEAD: entering...\n"); + mpxp_dbg2<<std::endl<<"DEC_AHEAD: entering..."<<std::endl; __MP_UNIT(priv->p_idx,"dec_ahead"); priv->pid = getpid(); @@ -300,14 +280,14 @@ priv->dae->eof=mpxp_play_video(demuxer,sh_audio,sh_video); /*------------------------ frame decoded. --------------------*/ } /* while(!priv->dae->eof)*/ - MSG_T("\nDEC_AHEAD: leaving...\n"); + mpxp_dbg2<<"DEC_AHEAD: leaving..."<<std::endl; priv->state=Pth_Stand; return arg; /* terminate thread here !!! */ } void sig_video_play( void ) { - MSG_T("sig_audio_play\n"); + mpxp_dbg2<<"sig_audio_play"<<std::endl; mpxp_print_flush(); dec_ahead_can_aseek=1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-21 11:07:31
|
Revision: 591 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=591&view=rev Author: nickols_k Date: 2012-12-21 11:07:21 +0000 (Fri, 21 Dec 2012) Log Message: ----------- add static linkage Modified Paths: -------------- mplayerxp/libvo2/x11_system.cpp Modified: mplayerxp/libvo2/x11_system.cpp =================================================================== --- mplayerxp/libvo2/x11_system.cpp 2012-12-21 11:05:14 UTC (rev 590) +++ mplayerxp/libvo2/x11_system.cpp 2012-12-21 11:07:21 UTC (rev 591) @@ -620,7 +620,7 @@ ::XSetClassHint(mDisplay,window,&wmClass); } -const char *evt_names[] = { +static const char *evt_names[] = { "KeyPress", "KeyRelease", "ButtonPress", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-21 11:05:26
|
Revision: 590 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=590&view=rev Author: nickols_k Date: 2012-12-21 11:05:14 +0000 (Fri, 21 Dec 2012) Log Message: ----------- remove #defines Modified Paths: -------------- mplayerxp/libvo2/screenshot.cpp mplayerxp/libvo2/sub.cpp mplayerxp/libvo2/vo_opengl.cpp mplayerxp/libvo2/vo_sdl.cpp mplayerxp/libvo2/vo_vesa.cpp mplayerxp/libvo2/vo_xv.cpp mplayerxp/libvo2/x11_system.cpp Modified: mplayerxp/libvo2/screenshot.cpp =================================================================== --- mplayerxp/libvo2/screenshot.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/screenshot.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -31,8 +31,8 @@ #include "postproc/vf_scale.h" #include "vo_msg.h" -#define RGB 0 -#define BGR 1 +static const int RGB=0; +static const int BGR=1; typedef struct sshot_priv_s { int cspace; unsigned image_width,image_height; Modified: mplayerxp/libvo2/sub.cpp =================================================================== --- mplayerxp/libvo2/sub.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/sub.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -14,7 +14,6 @@ #include "sub.h" #include "libmpsub/spudec.h" #include "libmpsub/vobsub.h" -#define MSGT_CLASS MSGT_OSD #include "vo_msg.h" namespace mpxp { @@ -79,7 +78,7 @@ } } -#define OSD_NAV_BOX_ALPHA 0x7f +static const int OSD_NAV_BOX_ALPHA=0x7f; static void vo_update_nav (mp_osd_obj_t *obj, int dxs, int dys) { int len; Modified: mplayerxp/libvo2/vo_opengl.cpp =================================================================== --- mplayerxp/libvo2/vo_opengl.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/vo_opengl.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -113,6 +113,12 @@ #endif } +static const float FOVY=60.0f; +static const float ASPECT=1.0f; +static const float Z_NEAR=0.1f; +static const float Z_FAR=100.0f; +static const float Z_CAMERA=0.869f; + void OpenGL_VO_Interface::gl_init_fb(unsigned x,unsigned y,unsigned d_width,unsigned d_height) const { float sx = (GLfloat) (d_width-x) / (GLfloat)image_width; @@ -124,12 +130,6 @@ glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -#define FOVY 60.0f -#define ASPECT 1.0f -#define Z_NEAR 0.1f -#define Z_FAR 100.0f -#define Z_CAMERA 0.869f - glViewport(x, y, d_width, d_height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); Modified: mplayerxp/libvo2/vo_sdl.cpp =================================================================== --- mplayerxp/libvo2/vo_sdl.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/vo_sdl.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -102,7 +102,7 @@ //#define BUGGY_SDL //defined by configure /* MONITOR_ASPECT MUST BE FLOAT */ -#define MONITOR_ASPECT 4.0/3.0 +static const float MONITOR_ASPECT=4.0f/3.0f; #include <stdio.h> #include <stdlib.h> @@ -819,7 +819,7 @@ * returns : doesn't return **/ -#define shift_key (event.key.keysym.mod==(KMOD_LSHIFT||KMOD_RSHIFT)) +static int shift_key(const SDL_Event& event) { return event.key.keysym.mod==(KMOD_LSHIFT||KMOD_RSHIFT); } uint32_t SDL_VO_Interface::check_events (const vo_resize_t* vrest){ SDL_Event event; SDLKey keypressed = SDLKey(0); @@ -863,7 +863,7 @@ case SDLK_DOWN: mplayer_put_key(KEY_DOWN); break; case SDLK_LEFT: mplayer_put_key(KEY_LEFT); break; case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT); break; - case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break; + case SDLK_LESS: mplayer_put_key(shift_key(event)?'>':'<'); break; case SDLK_GREATER: mplayer_put_key('>'); break; case SDLK_ASTERISK: case SDLK_KP_MULTIPLY: @@ -915,8 +915,8 @@ /*case SDLK_o: mplayer_put_key('o');break; case SDLK_SPACE: mplayer_put_key(' ');break; case SDLK_p: mplayer_put_key('p');break;*/ - case SDLK_7: mplayer_put_key(shift_key?'/':'7'); - case SDLK_PLUS: mplayer_put_key(shift_key?'*':'+'); + case SDLK_7: mplayer_put_key(shift_key(event)?'/':'7'); + case SDLK_PLUS: mplayer_put_key(shift_key(event)?'*':'+'); case SDLK_KP_PLUS: mplayer_put_key('+');break; case SDLK_MINUS: case SDLK_KP_MINUS: mplayer_put_key('-');break; @@ -938,7 +938,7 @@ case SDLK_DOWN: mplayer_put_key(KEY_DOWN);break; case SDLK_LEFT: mplayer_put_key(KEY_LEFT);break; case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT);break; - case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break; + case SDLK_LESS: mplayer_put_key(shift_key(event)?'>':'<'); break; case SDLK_GREATER: mplayer_put_key('>'); break; case SDLK_ASTERISK: case SDLK_KP_MULTIPLY: mplayer_put_key('*'); break; @@ -957,7 +957,6 @@ } return retval; } -#undef shift_key /* Erase (paint it black) the rectangle specified by x, y, w and h in the surface or overlay which is used for OSD Modified: mplayerxp/libvo2/vo_vesa.cpp =================================================================== --- mplayerxp/libvo2/vo_vesa.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/vo_vesa.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -188,8 +188,8 @@ } } -#define MOVIE_MODE (MODE_ATTR_COLOR | MODE_ATTR_GRAPHICS) -#define FRAME_MODE (MODE_WIN_RELOCATABLE | MODE_WIN_WRITEABLE) +static const int MOVIE_MODE=(MODE_ATTR_COLOR | MODE_ATTR_GRAPHICS); +static const int FRAME_MODE=(MODE_WIN_RELOCATABLE | MODE_WIN_WRITEABLE); void VESA_VO_Interface::vesa_term() { @@ -308,8 +308,8 @@ return MPXP_Ok; } -#define SUBDEV_NODGA 0x00000001UL -#define SUBDEV_FORCEDGA 0x00000002UL +static const int SUBDEV_NODGA=0x00000001UL; +static const int SUBDEV_FORCEDGA=0x00000002UL; std::string VESA_VO_Interface::parse_sub_device(const std::string& sd) { subdev_flags = 0; Modified: mplayerxp/libvo2/vo_xv.cpp =================================================================== --- mplayerxp/libvo2/vo_xv.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/vo_xv.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -134,10 +134,10 @@ } /* unofficial gatos extensions */ -#define FOURCC_RGBA32 0x41424752 -#define FOURCC_RGB24 0x00000000 -#define FOURCC_RGBT16 0x54424752 -#define FOURCC_RGB16 0x32424752 +static const uint32_t FOURCC_RGBA32 =0x41424752; +static const uint32_t FOURCC_RGB24 =0x00000000; +static const uint32_t FOURCC_RGBT16 =0x54424752; +static const uint32_t FOURCC_RGB16 =0x32424752; /* * connect to server, create and map window, Modified: mplayerxp/libvo2/x11_system.cpp =================================================================== --- mplayerxp/libvo2/x11_system.cpp 2012-12-21 10:48:09 UTC (rev 589) +++ mplayerxp/libvo2/x11_system.cpp 2012-12-21 11:05:14 UTC (rev 590) @@ -563,33 +563,35 @@ } // ----- Motif header: ------- -#define MWM_HINTS_FUNCTIONS (1L << 0) -#define MWM_HINTS_DECORATIONS (1L << 1) -#define MWM_HINTS_INPUT_MODE (1L << 2) -#define MWM_HINTS_STATUS (1L << 3) +enum { + MWM_HINTS_FUNCTIONS =(1L << 0), + MWM_HINTS_DECORATIONS =(1L << 1), + MWM_HINTS_INPUT_MODE =(1L << 2), + MWM_HINTS_STATUS =(1L << 3), -#define MWM_FUNC_ALL (1L << 0) -#define MWM_FUNC_RESIZE (1L << 1) -#define MWM_FUNC_MOVE (1L << 2) -#define MWM_FUNC_MINIMIZE (1L << 3) -#define MWM_FUNC_MAXIMIZE (1L << 4) -#define MWM_FUNC_CLOSE (1L << 5) + MWM_FUNC_ALL =(1L << 0), + MWM_FUNC_RESIZE =(1L << 1), + MWM_FUNC_MOVE =(1L << 2), + MWM_FUNC_MINIMIZE =(1L << 3), + MWM_FUNC_MAXIMIZE =(1L << 4), + MWM_FUNC_CLOSE =(1L << 5), -#define MWM_DECOR_ALL (1L << 0) -#define MWM_DECOR_BORDER (1L << 1) -#define MWM_DECOR_RESIZEH (1L << 2) -#define MWM_DECOR_TITLE (1L << 3) -#define MWM_DECOR_MENU (1L << 4) -#define MWM_DECOR_MINIMIZE (1L << 5) -#define MWM_DECOR_MAXIMIZE (1L << 6) + MWM_DECOR_ALL =(1L << 0), + MWM_DECOR_BORDER =(1L << 1), + MWM_DECOR_RESIZEH =(1L << 2), + MWM_DECOR_TITLE =(1L << 3), + MWM_DECOR_MENU =(1L << 4), + MWM_DECOR_MINIMIZE =(1L << 5), + MWM_DECOR_MAXIMIZE =(1L << 6), -#define MWM_INPUT_MODELESS 0 -#define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1 -#define MWM_INPUT_SYSTEM_MODAL 2 -#define MWM_INPUT_FULL_APPLICATION_MODAL 3 -#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL + MWM_INPUT_MODELESS =0, + MWM_INPUT_PRIMARY_APPLICATION_MODAL =1, + MWM_INPUT_SYSTEM_MODAL =2, + MWM_INPUT_FULL_APPLICATION_MODAL =3, + MWM_INPUT_APPLICATION_MODAL=MWM_INPUT_PRIMARY_APPLICATION_MODAL, -#define MWM_TEAROFF_WINDOW (1L<<0) + MWM_TEAROFF_WINDOW =(1L<<0) +}; // Note: always d==0 ! void X11_System::decoration(int d) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-21 10:48:22
|
Revision: 589 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=589&view=rev Author: nickols_k Date: 2012-12-21 10:48:09 +0000 (Fri, 21 Dec 2012) Log Message: ----------- convert MSG_* into mpxp_ostream compatible output Modified Paths: -------------- mplayerxp/libvo2/aspect.cpp mplayerxp/libvo2/font_load.cpp mplayerxp/libvo2/osd_render.cpp mplayerxp/libvo2/screenshot.cpp mplayerxp/libvo2/sub.cpp mplayerxp/libvo2/vidix_system.cpp mplayerxp/libvo2/vo_fbdev.cpp mplayerxp/libvo2/vo_msg.h mplayerxp/libvo2/vo_null.cpp mplayerxp/libvo2/vo_opengl.cpp mplayerxp/libvo2/vo_sdl.cpp mplayerxp/libvo2/vo_vesa.cpp mplayerxp/libvo2/vo_x11.cpp mplayerxp/libvo2/vo_xv.cpp mplayerxp/libvo2/x11_system.cpp Modified: mplayerxp/libvo2/aspect.cpp =================================================================== --- mplayerxp/libvo2/aspect.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/aspect.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -3,12 +3,6 @@ using namespace mpxp; /* Stuff for correct aspect scaling. */ #include "aspect.h" - -//#define ASPECT_DEBUG - -#ifdef ASPECT_DEBUG -#include <stdio.h> -#endif #include "vo_msg.h" namespace mpxp { @@ -49,8 +43,8 @@ uint32_t tmpw; #ifdef ASPECT_DEBUG - MSG_DBG2("aspect(0) fitin: %dx%d zoom: %d \n",screenw,screenh,zoom); - MSG_DBG2("aspect(1) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); + mpxp_dbg2<<"aspect(0) fitin: "<<screenw<<"x"<<screenh<<" zoom: "<<zoom<<std::endl; + mpxp_dbg2<<"aspect(1) wh: "<<srcw<<"x"<<srch<<" (org: "<<prew<<"x"<<preh<<")"<<std::endl; #endif if(zoom){ if(prew >= preh) { @@ -71,7 +65,7 @@ } srch+= srch%2; // round #ifdef ASPECT_DEBUG - MSG_DBG2("aspect(2) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); + mpxp_dbg2<<"aspect(2) wh: "<<srcw<<"x"<<srch<<" (org: "<<prew<<"x"<<preh<<")"<<std::hex; #endif if(srch>screenh || srch<orgh){ if(zoom) @@ -87,7 +81,7 @@ } } #ifdef ASPECT_DEBUG - MSG_DBG2("aspect(3) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); + mpxp_dbg2<<"aspect(3) wh: "<<srcw<<"x"<<srch<<" (org: "<<prew<<"x"<<preh<<")"<<std::endl; #endif } } // namesapce mpxp Modified: mplayerxp/libvo2/font_load.cpp =================================================================== --- mplayerxp/libvo2/font_load.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/font_load.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -27,7 +27,7 @@ if(raw->w == 0) /* 2 bytes were not enough for the width... read 4 bytes from the end of the header */ raw->w = ((head[28]*0x100 + head[29])*0x100 + head[30])*0x100 + head[31]; if(raw->c>256) { delete raw; fclose(f); return NULL; } // too many colors!? - MSG_V("RAW: %s %d x %d, %d colors\n",name,raw->w,raw->h,raw->c); + mpxp_v<<"RAW: "<<name<<" "<<raw->w<<" x "<<raw->h<<", "<<raw->c<<" colors"<<std::endl; if(raw->c){ raw->pal=new unsigned char [raw->c*3]; fread(raw->pal,3,raw->c,f); @@ -59,7 +59,7 @@ f=fopen(fname,"rt"); if(!f) { - MSG_ERR("font: can't open file: %s\n",fname); + mpxp_err<<"font: can't open file: "<<fname<<std::endl; delete desc; return NULL; } @@ -118,11 +118,11 @@ int len=strlen(p[0]); if(len && len<63 && p[0][len-1]==']'){ strcpy(section,p[0]); - MSG_V("font: Reading section: %s\n",section); + mpxp_v<<"font: Reading section: "<<section<<std::endl; if(strcmp(section,"[files]")==0){ ++fontdb; if(fontdb>=16) { - MSG_ERR("font: Too many bitmaps defined!\n"); + mpxp_err<<"font: Too many bitmaps defined!"<<std::endl; delete desc; return NULL; } @@ -157,7 +157,7 @@ snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s/%s", default_dir,p[1]); if (!((desc->pic_a[fontdb]=load_raw(cp,verbose)))){ - MSG_ERR("Can't load font bitmap: %s\n",p[1]); + mpxp_err<<"Can't load font bitmap: "<<p[1]<<std::endl; delete cp; delete desc; return NULL; @@ -183,7 +183,7 @@ snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s/%s", default_dir,p[1]); if (!((desc->pic_b[fontdb]=load_raw(cp,verbose)))){ - MSG_ERR("Can't load font bitmap: %s\n",p[1]); + mpxp_err<<"Can't load font bitmap: "<<p[1]<<std::endl; delete cp; delete desc; return NULL; @@ -220,7 +220,7 @@ int end=atoi(p[2]); if(sub_data.unicode && (chr>=0x80)) chr=(chr<<8)+p[0][1]; else if(strlen(p[0])!=1) chr=strtol(p[0],NULL,0); - if(end<start) MSG_ERR("error in font desc: end<start for char '%c'\n",chr); + if(end<start) mpxp_err<<"error in font desc: end<start for char '"<<chr<<"'"<<std::endl; else { desc->start[chr]=start; desc->width[chr]=end-start+1; @@ -230,12 +230,12 @@ continue; } } - MSG_ERR("Syntax error in font desc: %s\n",sor); + mpxp_err<<"Syntax error in font desc: "<<sor<<std::endl; } fclose(f); for(i=0;i<=fontdb;i++){ if(!desc->pic_a[i] || !desc->pic_b[i]){ - MSG_ERR("font: Missing bitmap(s) for sub-font #%d\n",i); + mpxp_err<<"font: Missing bitmap(s) for sub-font #"<<i<<std::endl; delete desc; return NULL; } @@ -243,7 +243,7 @@ int f=factor*256.0f; int size=desc->pic_a[i]->w*desc->pic_a[i]->h; int j; - MSG_V("font: resampling alpha by factor %5.3f (%d) ",factor,f);fflush(stdout); + mpxp_v<<"font: resampling alpha by factor "<<factor<<" ("<<f<<")"<<std::endl; for(j=0;j<size;j++){ int x=desc->pic_a[i]->bmp[j]; // alpha int y=desc->pic_b[i]->bmp[j]; // bitmap @@ -263,7 +263,7 @@ desc->pic_a[i]->bmp[j]=x; // desc->pic_b[i]->bmp[j]=0; // hack } - MSG_V("DONE!\n"); + mpxp_v<<"DONE!"<<std::endl; if(!desc->height) desc->height=desc->pic_a[i]->h; } @@ -278,7 +278,7 @@ desc->font[' ']=-1; desc->width[' ']=desc->spacewidth; - MSG_OK("Font %s loaded successfully! (%d chars)\n",fname,chardb); + mpxp_ok<<"Font "<<fname<<" loaded successfully! ("<<chardb<<" chars)"<<std::endl; return desc; } Modified: mplayerxp/libvo2/osd_render.cpp =================================================================== --- mplayerxp/libvo2/osd_render.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/osd_render.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -116,7 +116,7 @@ } void OSD_Render::get_draw_alpha(unsigned fmt) { - MSG_DBG2("get_draw_alpha(%s)\n",vo_format_name(fmt)); + mpxp_dbg2<<"get_draw_alpha("<<vo_format_name(fmt)<<")"<<std::endl; switch(fmt) { case IMGFMT_BGR15: case IMGFMT_RGB15: @@ -150,7 +150,7 @@ draw_alpha_ptr=draw_alpha_uyvy_ptr; break; default: - MSG_ERR("draw alpha for %s fourcc not implemented yet!",vo_format_name(fmt)); + mpxp_err<<"draw alpha for "<<vo_format_name(fmt)<<" fourcc not implemented yet!"<<std::endl; draw_alpha_ptr=vo_draw_alpha_null; break; } @@ -170,7 +170,7 @@ #ifdef __AVX__ if(gCpuCaps.hasSSE41) { - MSG_V("Using SSE4 Optimized OnScreenDisplay\n"); + mpxp_v<<"Using SSE4 Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_AVX; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_AVX; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_AVX; @@ -181,7 +181,7 @@ #ifdef __SSE4_1__ if(gCpuCaps.hasSSE41) { - MSG_V("Using SSE4 Optimized OnScreenDisplay\n"); + mpxp_v<<"Using SSE4 Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE4; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE4; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE4; @@ -192,7 +192,7 @@ #ifdef __SSSE3__ if(gCpuCaps.hasSSSE3) { - MSG_V("Using SSSE3 Optimized OnScreenDisplay\n"); + mpxp_v<<"Using SSSE3 Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSSE3; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSSE3; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSSE3; @@ -203,7 +203,7 @@ #ifdef __SSE3__ if(gCpuCaps.hasSSE3) { - MSG_V("Using SSE3 Optimized OnScreenDisplay\n"); + mpxp_v<<"Using SSE3 Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE3; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE3; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE3; @@ -214,7 +214,7 @@ #ifdef __SSE2__ if(gCpuCaps.hasSSE2) { - MSG_V("Using SSE2 Optimized OnScreenDisplay\n"); + mpxp_v<<"Using SSE2 Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE2; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE2; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE2; @@ -226,7 +226,7 @@ #ifdef __SSE__ if(gCpuCaps.hasMMX2) { - MSG_V("Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); + mpxp_v<<"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE; @@ -237,7 +237,7 @@ //#ifdef __MMX__ //if(gCpuCaps.hasMMX) //{ -// MSG_V("Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); +// mpxp_v<<"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay"<<std::endl; // draw_alpha_yv12_ptr=vo_draw_alpha_yv12_MMX; // draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_MMX; // draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_MMX; @@ -247,7 +247,7 @@ //#endif #endif { - MSG_V("Using generic OnScreenDisplay\n"); + mpxp_v<<"Using generic OnScreenDisplay"<<std::endl; draw_alpha_yv12_ptr=vo_draw_alpha_yv12_c; draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_c; draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_c; Modified: mplayerxp/libvo2/screenshot.cpp =================================================================== --- mplayerxp/libvo2/screenshot.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/screenshot.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -56,21 +56,20 @@ png.info_ptr = png_create_info_struct(png.png_ptr); if (!png.png_ptr) { - MSG_V("PNG Failed to init png pointer\n"); - png.status = pngdata::ERROR; - return png; + mpxp_v<<"PNG Failed to init png pointer"<<std::endl; + png.status = pngdata::ERROR; + return png; } if (!png.info_ptr) { - MSG_V("PNG Failed to init png infopointer\n"); - png_destroy_write_struct(&png.png_ptr, - (png_infopp)NULL); - png.status = pngdata::ERROR; - return png; + mpxp_v<<"PNG Failed to init png infopointer"<<std::endl; + png_destroy_write_struct(&png.png_ptr,(png_infopp)NULL); + png.status = pngdata::ERROR; + return png; } if (setjmp(png.png_ptr->jmpbuf)) { - MSG_V("PNG Internal error!\n"); + mpxp_v<<"PNG Internal error!"<<std::endl; png_destroy_write_struct(&png.png_ptr, &png.info_ptr); fclose(png.fp); png.status = pngdata::ERROR; @@ -79,12 +78,12 @@ png.fp = fopen (fname, "wb"); if (png.fp == NULL) { - MSG_ERR("\nPNG Error opening %s for writing!\n", strerror(errno)); + mpxp_err<<"PNG Error opening "<<strerror(errno)<<" for writing!"<<std::endl; png.status = pngdata::ERROR; return png; } - MSG_V("PNG Init IO\n"); + mpxp_v<<"PNG Init IO"<<std::endl; png_init_io(png.png_ptr, png.fp); /* set the zlib compression level */ @@ -94,11 +93,11 @@ 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - MSG_V("PNG Write Info\n"); + mpxp_v<<"PNG Write Info"<<std::endl; png_write_info(png.png_ptr, png.info_ptr); if(sshot.cspace) { - MSG_V("PNG Set BGR Conversion\n"); + mpxp_v<<"PNG Set BGR Conversion"<<std::endl; png_set_bgr(png.png_ptr); } @@ -109,10 +108,10 @@ static uint8_t destroy_png(struct pngdata png) { - MSG_V("PNG Write End\n"); + mpxp_v<<"PNG Write End"<<std::endl; png_write_end(png.png_ptr, png.info_ptr); - MSG_V("PNG Destroy Write Struct\n"); + mpxp_v<<"PNG Destroy Write Struct"<<std::endl; png_destroy_write_struct(&png.png_ptr, &png.info_ptr); fclose (png.fp); @@ -199,31 +198,31 @@ #endif ); if(!sws) { - MSG_ERR("vo_png: Can't initialize SwScaler\n"); + mpxp_err<<"vo_png: Can't initialize SwScaler"<<std::endl; return MPXP_False; } sshot.image_width = w; sshot.image_height = h; if(!(image_data = new uint8_t[sshot.image_width*sshot.image_height*3])) { - MSG_ERR("vo_png: Can't allocate temporary buffer\n"); + mpxp_err<<"vo_png: Can't allocate temporary buffer"<<std::endl; return MPXP_False; } #ifdef HAVE_PNG if((mp_conf.z_compression >= 0) && (mp_conf.z_compression <= 9)) { if(mp_conf.z_compression == 0) { - MSG_HINT("PNG Warning: compression level set to 0, compression disabled!\n"); - MSG_HINT("PNG Info: Use the -z <n> switch to set compression level from 0 to 9.\n"); - MSG_HINT("PNG Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)\n"); + mpxp_hint<<"PNG Warning: compression level set to 0, compression disabled!"<<std::endl; + mpxp_hint<<"PNG Info: Use the -z <n> switch to set compression level from 0 to 9."<<std::endl; + mpxp_hint<<"PNG Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)"<<std::endl; } } else { - MSG_WARN("PNG Warning: compression level out of range setting to 1!\n"); - MSG_WARN("PNG Info: Use the -z <n> switch to set compression level from 0 to 9.\n"); - MSG_WARN("PNG Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)\n"); + mpxp_warn<<"PNG Warning: compression level out of range setting to 1!"<<std::endl; + mpxp_warn<<"PNG Info: Use the -z <n> switch to set compression level from 0 to 9."<<std::endl; + mpxp_warn<<"PNG Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)"<<std::endl; mp_conf.z_compression = Z_BEST_SPEED; } - MSG_V("PNG Compression level %i\n", mp_conf.z_compression); + mpxp_v<<"PNG Compression level "<<mp_conf.z_compression<<std::endl; #endif dstStride[0]=sshot.image_width*3; dstStride[1]= @@ -241,16 +240,12 @@ #ifdef HAVE_PNG png = create_png(buf); - if(png.status){ - MSG_ERR("PNG Error in create_png\n"); - } + if(png.status) mpxp_err<<"PNG Error in create_png"<<std::endl; - { - png_byte *row_pointers[sshot.image_height]; - unsigned bppmul = (bpp+7)/8; - for ( k = 0; k < sshot.image_height; k++ ) row_pointers[k] = &image_data[sshot.image_width*k*bppmul]; - png_write_image(png.png_ptr, row_pointers); - } + png_byte *row_pointers[sshot.image_height]; + unsigned bppmul = (bpp+7)/8; + for ( k = 0; k < sshot.image_height; k++ ) row_pointers[k] = &image_data[sshot.image_width*k*bppmul]; + png_write_image(png.png_ptr, row_pointers); destroy_png(png); #else Modified: mplayerxp/libvo2/sub.cpp =================================================================== --- mplayerxp/libvo2/sub.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/sub.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -320,7 +320,7 @@ } if (k==MAX_UCS){ len=j; // end here - MSG_WARN("\nMAX_UCS exceeded!\n"); + mpxp_warn<<std::endl<<"MAX_UCS exceeded!"<<std::endl; } if (!c) c++; // avoid UCS 0 if (c==' '){ @@ -474,9 +474,7 @@ if(obj->bbox.y2>dys) obj->bbox.y2=dys; if(obj->flags&OSDFLAG_VISIBLE) // debug: - MSG_DBG2("OSD update: %d;%d %dx%d \n", - obj->bbox.x1,obj->bbox.y1,obj->bbox.x2-obj->bbox.x1, - obj->bbox.y2-obj->bbox.y1); + mpxp_dbg2<<"OSD update: "<<obj->bbox.x1<<";"<<obj->bbox.y1<<" "<<(obj->bbox.x2-obj->bbox.x1)<<"x"<<(obj->bbox.y2-obj->bbox.y1)<<std::endl; } // check if visibility changed: if(vis != (obj->flags&OSDFLAG_VISIBLE) ) obj->flags|=OSDFLAG_CHANGED; @@ -486,7 +484,7 @@ } if(obj->flags&OSDFLAG_CHANGED){ chg|=1<<obj->type; - MSG_DBG2("OSD chg: %d V: %s pb:%d \n",obj->type,(obj->flags&OSDFLAG_VISIBLE)?"yes":"no",vo->osd_progbar_type); + mpxp_dbg2<<"OSD chg: "<<obj->type<<" V: "<<((obj->flags&OSDFLAG_VISIBLE)?"yes":"no")<<" pb:"<<vo->osd_progbar_type<<std::endl; } obj=obj->next; } Modified: mplayerxp/libvo2/vidix_system.cpp =================================================================== --- mplayerxp/libvo2/vidix_system.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/vidix_system.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -12,6 +12,8 @@ * This file contains vidix interface to any mplayer's VO plugin. * (Partly based on vesa_lvo.c from mplayer's package) */ +#include <iomanip> + #include <errno.h> #include <inttypes.h> #include <sys/ioctl.h> @@ -46,26 +48,26 @@ mp_conf.verbose)) { int err; - MSG_DBG2("vidix_preinit(%s) was called\n",drvname.c_str()); + mpxp_dbg2<<"vidix_preinit("<<drvname<<") was called"<<std::endl; if(vidix->version() != VIDIX_VERSION) { - MSG_FATAL("You have wrong version of VIDIX library\n"); + mpxp_fatal<<"You have wrong version of VIDIX library"<<std::endl; exit_player("Vidix"); } if(vidix->is_error()) { - MSG_FATAL("Couldn't find working VIDIX driver\n"); + mpxp_fatal<<"Couldn't find working VIDIX driver"<<std::endl; exit_player("Vidix"); } if((err=vidix->get_capabilities()) != 0) { - MSG_FATAL("Couldn't get capability: %s\n",strerror(err)); + mpxp_fatal<<"Couldn't get capability: "<<strerror(err)<<std::endl; exit_player("Vidix"); } - else MSG_V("Driver capability: %X\n",vidix->cap.flags); - MSG_V("Using: %s by %s\n",vidix->cap.name,vidix->cap.author); + else mpxp_v<<"Driver capability: "<<std::hex<<vidix->cap.flags<<std::endl; + mpxp_v<<"Using: "<<vidix->cap.name<<" by "<<vidix->cap.author<<std::endl; } Vidix_System::~Vidix_System() { size_t i; - MSG_DBG2("vidix_term() was called\n"); + mpxp_dbg2<<"vidix_term() was called"<<std::endl; stop(); if(vo_conf.use_bm) { for(i=0;i<vo_conf.xp_buffs;i++) { @@ -74,8 +76,7 @@ bm_buffs[i]=NULL; } if(bm_slow_frames) - MSG_WARN("from %u frames %u were copied through memcpy()\n" - ,bm_total_frames,bm_slow_frames); + mpxp_warn<<"from "<<bm_total_frames<<" frames "<<bm_slow_frames<<" were copied through memcpy()"<<std::endl; } } @@ -83,25 +84,18 @@ { int err; if((err=vidix->playback_on())!=0) { - MSG_FATAL("Can't start playback: %s\n",strerror(err)); + mpxp_fatal<<"Can't start playback: "<<strerror(err)<<std::endl; return -1; } video_on=1; if (vidix->cap.flags & FLAG_EQUALIZER) { - MSG_V("vo_gamma_brightness=%i\n" - "vo_gamma_saturation=%i\n" - "vo_gamma_contrast=%i\n" - "vo_gamma_hue=%i\n" - "vo_gamma_red_intensity=%i\n" - "vo_gamma_green_intensity=%i\n" - "vo_gamma_blue_intensity=%i\n" - ,vo_conf.gamma.brightness - ,vo_conf.gamma.saturation - ,vo_conf.gamma.contrast - ,vo_conf.gamma.hue - ,vo_conf.gamma.red_intensity - ,vo_conf.gamma.green_intensity - ,vo_conf.gamma.blue_intensity); + mpxp_v<<"vo_gamma_brightness="<<vo_conf.gamma.brightness<<std::endl; + mpxp_v<<"vo_gamma_saturation="<<vo_conf.gamma.saturation<<std::endl; + mpxp_v<<"vo_gamma_contrast="<<vo_conf.gamma.contrast<<std::endl; + mpxp_v<<"vo_gamma_hue="<<vo_conf.gamma.hue<<std::endl; + mpxp_v<<"vo_gamma_red_intensity="<<vo_conf.gamma.red_intensity<<std::endl; + mpxp_v<<"vo_gamma_green_intensity="<<vo_conf.gamma.green_intensity<<std::endl; + mpxp_v<<"vo_gamma_blue_intensity="<<vo_conf.gamma.blue_intensity<<std::endl; /* To use full set of priv.video_eq.cap */ if(vidix->get_eq() == 0) { vidix->video_eq.brightness = vo_conf.gamma.brightness; @@ -122,7 +116,7 @@ { int err; if((err=vidix->playback_off())!=0) { - MSG_ERR("Can't stop playback: %s\n",strerror(err)); + mpxp_err<<"Can't stop playback: "<<strerror(err)<<std::endl; return -1; } video_on=0; @@ -133,11 +127,11 @@ { int err,i; int dma_busy; - MSG_DBG2("vidix_copy_dma(%u,%i) was called\n",idx,sync_mode); + mpxp_dbg2<<"vidix_copy_dma("<<idx<<","<<sync_mode<<") was called"<<std::endl; bm_total_frames++; if(idx > vidix->playback.num_frames-1 && vidix->playback.num_frames>1) { - MSG_FATAL("\nDetected internal error!\n" - "Request to copy %u frame into %u array\n",idx,vidix->playback.num_frames); + mpxp_fatal<<"Detected internal error!"<<std::endl; + mpxp_fatal<<"Request to copy "<<idx<<" frame into "<<vidix->playback.num_frames<<" array"<<std::endl; return; } dma_busy = vidix->dma_status(); @@ -158,23 +152,23 @@ err=vidix->dma_copy_frame(); if(err) { /* We can switch back to DR here but for now exit */ - MSG_FATAL("\nerror '%s' occured during DMA transfer\n" - "Please send BUGREPORT to developers!!!\n",strerror(err)); + mpxp_fatal<<"error '"<<strerror(err)<<"' occured during DMA transfer"<<std::endl; + mpxp_fatal<<"Please send BUGREPORT to developers!!!"<<std::endl; exit(EXIT_FAILURE); /* it's OK vidix_term will be called */ } #if 0 - printf("frame is DMA copied\n"); + mpxp_info<<"frame is DMA copied"<<std::endl; #endif } else { memcpy(reinterpret_cast<any_t*>(reinterpret_cast<long>(vidix->playback.dga_addr)+vidix->playback.offsets[0]),bm_buffs[idx],vidix->playback.frame_size); - MSG_WARN("DMA frame is memcpy() copied\n"); + mpxp_warn<<"DMA frame is memcpy() copied"<<std::endl; bm_slow_frames++; } } MPXP_Rc Vidix_System::select_frame(unsigned idx) { - MSG_DBG2("vidix_select_frame() was called\n"); + mpxp_dbg2<<"vidix_select_frame() was called"<<std::endl; if(vo_conf.use_bm == 1) copy_dma(idx,0); else vidix->frame_select(idx); return MPXP_Ok; @@ -182,7 +176,7 @@ MPXP_Rc Vidix_System::query_fourcc(vo_query_fourcc_t* format) { - MSG_DBG2("query_format was called: %x (%s)\n",format->fourcc,vo_format_name(format->fourcc)); + mpxp_dbg2<<"query_format was called: "<<std::hex<<format->fourcc<<" ("<<vo_format_name(format->fourcc)<<")"<<std::endl; vidix->fourcc.fourcc = format->fourcc; vidix->fourcc.srcw = format->w; vidix->fourcc.srch = format->h; @@ -194,7 +188,7 @@ MPXP_Rc Vidix_System::grkey_support() const { MPXP_Rc retval = (vidix->fourcc.flags & VID_CAP_COLORKEY)?MPXP_Ok:MPXP_False; - MSG_DBG2("query_grkey_support: %i\n",retval); + mpxp_dbg2<<"query_grkey_support: "<<retval<<std::endl; return retval; } @@ -308,18 +302,14 @@ int err; static int video_clean=0; uint32_t apitch; - MSG_DBG2("vidix_init() was called\n" - "src_w=%u src_h=%u dest_x_y_w_h = %u %u %u %u\n" - "format=%s dest_bpp=%u vid_w=%u vid_h=%u\n" - ,src_width,src_height,x_org,y_org,dst_width,dst_height - ,vo_format_name(format),dest_bpp,vid_w,vid_h); + mpxp_dbg2<<"vidix_init() was called"<<std::endl; + mpxp_dbg2<<"src_w="<<src_width<<" src_h="<<src_height<<" dest_x_y_w_h = "<<x_org<<" "<<y_org<<" "<<dst_width<<" "<<dst_height<<std::endl; + mpxp_dbg2<<"format="<<vo_format_name(format)<<" dest_bpp="<<dest_bpp<<" vid_w="<<vid_w<<" vid_h="<<vid_h<<std::endl; if(((vidix->cap.maxwidth != -1) && (vid_w > (unsigned)vidix->cap.maxwidth)) || ((vidix->cap.minwidth != -1) && (vid_w < (unsigned)vidix->cap.minwidth)) || ((vidix->cap.maxheight != -1) && (vid_h > (unsigned)vidix->cap.maxheight)) || ((vidix->cap.minwidth != -1 ) && (vid_h < (unsigned)vidix->cap.minheight))) { - MSG_FATAL("video server has unsupported resolution (%dx%d), supported: %dx%d-%dx%d\n", - vid_w, vid_h, vidix->cap.minwidth, vidix->cap.minheight, - vidix->cap.maxwidth, vidix->cap.maxheight); + mpxp_fatal<<"video server has unsupported resolution ("<<vid_w<<"x"<<vid_h<<"), supported: "<<vidix->cap.maxwidth<<"x"<<vidix->cap.minwidth<<"-"<<vidix->cap.minheight<<"x"<<vidix->cap.maxheight<<std::endl; return MPXP_False; } vidix->fourcc.fourcc = format; @@ -338,18 +328,15 @@ default: err=1; break; } if(err) { - MSG_FATAL("video server has unsupported color depth by vidix (%d)\n" - ,vidix->fourcc.depth); - return MPXP_False; + mpxp_fatal<<"video server has unsupported color depth by vidix ("<<vidix->fourcc.depth<<")"<<std::endl; + return MPXP_False; } if((dst_width > src_width || dst_height > src_height) && (vidix->cap.flags & FLAG_UPSCALER) != FLAG_UPSCALER) { - MSG_FATAL("vidix driver can't upscale image (%d%d -> %d%d)\n", - src_width, src_height, dst_width, dst_height); + mpxp_fatal<<"vidix driver can't upscale image ("<<src_width<<"x"<<src_height<<" -> "<<dst_width<<"x"<<dst_height<<")"<<std::endl; return MPXP_False; } if((dst_width > src_width || dst_height > src_height) && (vidix->cap.flags & FLAG_DOWNSCALER) != FLAG_DOWNSCALER) { - MSG_FATAL("vidix driver can't downscale image (%d%d -> %d%d)\n", - src_width, src_height, dst_width, dst_height); + mpxp_fatal<<"vidix driver can't downscale image ("<<src_width<<"x"<<src_height<<" -> "<<dst_width<<"x"<<dst_height<<")"<<std::endl; return MPXP_False; } image_width = src_width; @@ -372,10 +359,10 @@ if(vidix->playback.num_frames > vo_conf.xp_buffs) vidix->playback.num_frames = vo_conf.xp_buffs; vidix->playback.src.pitch.y = vidix->playback.src.pitch.u = vidix->playback.src.pitch.v = 0; if((err=vidix->config_playback())!=0) { - MSG_FATAL("Can't configure playback: %s\n",strerror(err)); + mpxp_fatal<<"Can't configure playback: "<<strerror(err)<<std::endl; return MPXP_False; } - MSG_V("using %d buffers\n", vidix->playback.num_frames); + mpxp_v<<"using "<<vidix->playback.num_frames<<" buffers"<<std::endl; /* configure busmastering */ if(vo_conf.use_bm) { if(vidix->cap.flags & FLAG_DMA) { @@ -384,12 +371,12 @@ for(i=0;i<vo_conf.xp_buffs;i++) { if(!bm_buffs[i]) bm_buffs[i] = new(alignmem,psize) uint8_t[vidix->playback.frame_size]; if(!(bm_buffs[i])) { - MSG_ERR("Can't allocate memory for busmastering\n"); + mpxp_err<<"Can't allocate memory for busmastering"<<std::endl; return MPXP_False; } if(mlock(bm_buffs[i],vidix->playback.frame_size) != 0) { unsigned j; - MSG_WARN("Can't lock memory for busmastering\n"); + mpxp_warn<<"Can't lock memory for busmastering"<<std::endl; for(j=0;j<i;j++) munlock(bm_buffs[i],vidix->playback.frame_size); bm_locked=0; } @@ -398,10 +385,10 @@ bm_total_frames=bm_slow_frames=0; } else - MSG_ERR("Can not configure bus mastering: your driver is not DMA capable\n"); + mpxp_err<<"Can not configure bus mastering: your driver is not DMA capable"<<std::endl; vo_conf.use_bm = 0; } - if(vo_conf.use_bm) MSG_OK("using BUSMASTERING\n"); + if(vo_conf.use_bm) mpxp_ok<<"using BUSMASTERING"<<std::endl; mem = static_cast<uint8_t*>(vidix->playback.dga_addr); if(!video_clean) { @@ -411,7 +398,7 @@ memset(mem + vidix->playback.offsets[i], 0x80, vidix->playback.frame_size); video_clean=1; } - MSG_DBG2("vidix returns pitches %u %u %u\n",vidix->playback.dest.pitch.y,vidix->playback.dest.pitch.u,vidix->playback.dest.pitch.v); + mpxp_dbg2<<"vidix returns pitches "<<vidix->playback.dest.pitch.y<<" "<<vidix->playback.dest.pitch.u<<" "<<vidix->playback.dest.pitch.v<<std::endl; switch(format) { case IMGFMT_Y800: case IMGFMT_YVU9: Modified: mplayerxp/libvo2/vo_fbdev.cpp =================================================================== --- mplayerxp/libvo2/vo_fbdev.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/vo_fbdev.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -9,7 +9,7 @@ * Some idea and code borrowed from Chris Lawrence's ppmtofb-0.27 */ -#define FBDEV "fbdev: " +static const char* FBDEV= "fbdev: "; #include <stdio.h> #include <stdlib.h> @@ -39,15 +39,6 @@ #include "vo_msg.h" namespace mpxp { -#define PRINT_LINENUM //MSG_DBG2(" at line %d\n", line_num) - -#define MAX_NR_TOKEN 16 - -#define MAX_LINE_LEN 1000 - -#define RET_EOF -1 -#define RET_EOL -2 - struct priv_conf_t { priv_conf_t(); ~priv_conf_t() {} @@ -60,9 +51,14 @@ const char* monitor_dotclock_str; }; static priv_conf_t priv_conf; +static const int MAX_NR_TOKEN=16; +static const int MAX_LINE_LEN=1000; +static const int RET_EOF=-1; +static const int RET_EOL=-2; priv_conf_t::priv_conf_t() { mode_cfgfile = "/etc/priv.modes"; } +inline void PRINT_LINENUM(int line_num) { mpxp_dbg2<<" at line "<<line_num<<std::endl; } static const mrl_config_t fbconf[]= { @@ -88,11 +84,11 @@ static int __FASTCALL__ validate_mode(fb_mode_t *m) { if (!m->xres) { - MSG_V("needs geometry "); + mpxp_v<<"needs geometry "; return 0; } if (!m->pixclock) { - MSG_V("needs timings "); + mpxp_v<<"needs timings "; return 0; } return 1; @@ -213,26 +209,26 @@ if (!priv_conf.dev_name && !(priv_conf.dev_name = getenv("FRAMEBUFFER"))) priv_conf.dev_name = (char *)"/dev/fb0"; - MSG_DBG2(FBDEV "using %s\n", priv_conf.dev_name); + mpxp_dbg2<<FBDEV<< "using "<<priv_conf.dev_name<<std::endl; - if ((dev_fd = open(priv_conf.dev_name, O_RDWR)) == -1) { - MSG_ERR(FBDEV "Can't open %s: %s\n", priv_conf.dev_name, strerror(errno)); + if ((dev_fd = ::open(priv_conf.dev_name, O_RDWR)) == -1) { + mpxp_err<<FBDEV<< "Can't open "<<priv_conf.dev_name<<": "<<strerror(errno)<<std::endl; goto err_out; } - if (ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo)) { - MSG_ERR(FBDEV "Can't get VSCREENINFO: %s\n", strerror(errno)); + if (::ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo)) { + mpxp_err<<FBDEV<< "Can't get VSCREENINFO: "<<strerror(errno)<<std::endl; goto err_out_fd; } orig_vinfo = vinfo; - if ((tty_fd = open("/dev/tty", O_RDWR)) < 0) { - MSG_DBG2(FBDEV "notice: Can't open /dev/tty: %s\n", strerror(errno)); + if ((tty_fd = ::open("/dev/tty", O_RDWR)) < 0) { + mpxp_dbg2<<FBDEV<< "notice: Can't open /dev/tty: "<<strerror(errno)<<std::endl; } bpp = vinfo.bits_per_pixel; if (bpp == 8 && !vo_conf.dbpp) { - MSG_ERR(FBDEV "8 bpp output is not supported.\n"); + mpxp_err<<FBDEV<< "8 bpp output is not supported."<<std::endl; goto err_out_tty_fd; } @@ -242,7 +238,7 @@ if (vo_conf.dbpp) { if (vo_conf.dbpp != 15 && vo_conf.dbpp != 16 && vo_conf.dbpp != 24 && vo_conf.dbpp != 32) { - MSG_ERR(FBDEV "can't switch to %d bpp\n", vo_conf.dbpp); + mpxp_err<<FBDEV<< "can't switch to "<<vo_conf.dbpp<<" bpp"<<std::endl; goto err_out_fd; } bpp = vo_conf.dbpp; @@ -252,10 +248,10 @@ fb_works = MPXP_Ok; return MPXP_Ok; err_out_tty_fd: - close(tty_fd); + ::close(tty_fd); tty_fd = -1; err_out_fd: - close(dev_fd); + ::close(dev_fd); dev_fd = -1; err_out: fb_preinit_done = 1; @@ -266,27 +262,27 @@ FBDev_VO_Interface::~FBDev_VO_Interface() { unsigned i; - MSG_V(FBDEV "uninit\n"); + mpxp_v<<FBDEV<< "uninit"<<std::endl; if (cmap_changed) { - if (ioctl(dev_fd, FBIOPUTCMAP, &oldcmap)) - MSG_ERR(FBDEV "Can't restore original cmap\n"); + if (::ioctl(dev_fd, FBIOPUTCMAP, &oldcmap)) + mpxp_err<<FBDEV<< "Can't restore original cmap"<<std::endl; cmap_changed = 0; } for(i=0;i<total_fr;i++) delete next_frame[i]; - if (ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo)) - MSG_ERR(FBDEV "ioctl FBIOGET_VSCREENINFO: %s\n", strerror(errno)); + if (::ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo)) + mpxp_err<<FBDEV<< "ioctl FBIOGET_VSCREENINFO: "<<strerror(errno)<<std::endl; orig_vinfo.xoffset = vinfo.xoffset; orig_vinfo.yoffset = vinfo.yoffset; - if (ioctl(dev_fd, FBIOPUT_VSCREENINFO, &orig_vinfo)) - MSG_ERR(FBDEV "Can't reset original fb_var_screeninfo: %s\n", strerror(errno)); + if (::ioctl(dev_fd, FBIOPUT_VSCREENINFO, &orig_vinfo)) + mpxp_err<<FBDEV<< "Can't reset original fb_var_screeninfo: "<<strerror(errno)<<std::endl; if (tty_fd >= 0) { - if (ioctl(tty_fd, KDSETMODE, KD_TEXT) < 0) - MSG_ERR(FBDEV "Can't restore text mode: %s\n", strerror(errno)); + if (::ioctl(tty_fd, KDSETMODE, KD_TEXT) < 0) + mpxp_err<<FBDEV<< "Can't restore text mode: "<<strerror(errno)<<std::endl; } if (vt_doit) vt_set_textarea(0, orig_vinfo.yres); - close(tty_fd); - close(dev_fd); - if(frame_buffer) munmap(frame_buffer,size); + ::close(tty_fd); + ::close(dev_fd); + if(frame_buffer) ::munmap(frame_buffer,size); #ifdef CONFIG_VIDIX if(vidix) delete vidix; #endif @@ -301,7 +297,7 @@ #ifdef CONFIG_VIDIX if(!vidix_name.empty()) { if(!(vidix=new(zeromem) Vidix_System(vidix_name))) { - MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name.c_str()); + mpxp_err<<"Cannot initialze vidix with '"<<vidix_name<<"' argument"<<std::endl; exit_player("Vidix error"); } } @@ -317,7 +313,7 @@ char c; if (num >= MAX_NR_TOKEN) { - MSG_ERR("get_token(): max >= MAX_NR_TOKEN!"); + mpxp_err<<"get_token(): max >= MAX_NR_TOKEN!"<<std::endl; goto out_eof; } @@ -361,30 +357,24 @@ static fb_mode_t *fb_modes = NULL; static int nr_modes = 0; +static void check_in_mode_def(int in_mode_def) { if (!in_mode_def) mpxp_dbg2<<"'needs 'mode' first"<<std::endl; } + int FBDev_VO_Interface::parse_fbmode_cfg(const std::string& cfgfile) { -#define CHECK_IN_MODE_DEF\ - do {\ - if (!in_mode_def) {\ - MSG_DBG2("'needs 'mode' first");\ - goto err_out_print_linenum;\ - }\ - } while (0) - fb_mode_t *_mode = NULL; char *endptr; // strtoul()... int in_mode_def = 0; int tmp, i; - MSG_DBG2("Reading %s: ", cfgfile.c_str()); + mpxp_dbg2<<"Reading "<<cfgfile.c_str()<<":"; if ((fp = fopen(cfgfile.c_str(), "r")) == NULL) { - MSG_ERR("can't open '%s': %s\n", cfgfile.c_str(), strerror(errno)); + mpxp_err<<"can't open '"<<cfgfile<<"': "<<strerror(errno)<<std::endl; return -1; } if ((line = new char[MAX_LINE_LEN + 1]) == NULL) { - MSG_ERR("can't get memory for 'line': %s\n", strerror(errno)); + mpxp_err<<"can't get memory for 'line': "<<strerror(errno)<<std::endl; return -2; } @@ -400,15 +390,14 @@ if (tmp == RET_EOL) continue; if (!strcmp(token[0], "mode")) { if (in_mode_def) { - MSG_ERR("'endmode' required"); + mpxp_err<<"'endmode' required"<<std::endl; goto err_out_print_linenum; } if (!validate_mode(_mode)) goto err_out_not_valid; loop_enter: if (!(fb_modes = (fb_mode_t *) mp_realloc(fb_modes, sizeof(fb_mode_t) * (nr_modes + 1)))) { - MSG_ERR("can't mp_realloc 'fb_modes' (nr_modes = %d):" - " %s\n", nr_modes, strerror(errno)); + mpxp_err<<"can't mp_realloc 'fb_modes' (nr_modes = "<<nr_modes<<")"<<strerror(errno)<<std::endl; goto err_out; } _mode=fb_modes + nr_modes; @@ -418,17 +407,17 @@ if (get_token(1) < 0) goto err_out_parse_error; for (i = 0; i < nr_modes - 1; i++) { if (!strcmp(token[0], fb_modes[i].name)) { - MSG_ERR("mode name '%s' isn't unique", token[0]); + mpxp_err<<"mode name '"<<token[0]<<"' isn't unique"<<std::endl; goto err_out_print_linenum; } } if (!(_mode->name = mp_strdup(token[0]))) { - MSG_ERR("can't mp_strdup -> 'name': %s\n", strerror(errno)); + mpxp_err<<"can't mp_strdup -> 'name': "<<strerror(errno)<<std::endl; goto err_out; } in_mode_def = 1; } else if (!strcmp(token[0], "geometry")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(5) < 0) goto err_out_parse_error; _mode->xres = strtoul(token[0], &endptr, 0); if (*endptr) goto err_out_parse_error; @@ -441,7 +430,7 @@ _mode->depth = strtoul(token[4], &endptr, 0); if (*endptr) goto err_out_parse_error; } else if (!strcmp(token[0], "timings")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(7) < 0) goto err_out_parse_error; _mode->pixclock = strtoul(token[0], &endptr, 0); if (*endptr) goto err_out_parse_error; @@ -458,47 +447,47 @@ _mode->vslen = strtoul(token[6], &endptr, 0); if (*endptr) goto err_out_parse_error; } else if (!strcmp(token[0], "endmode")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; in_mode_def = 0; } else if (!strcmp(token[0], "accel")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; /* * it's only used for text acceleration * so we just ignore it. */ } else if (!strcmp(token[0], "hsync")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "low")) _mode->sync &= ~FB_SYNC_HOR_HIGH_ACT; else if(!strcmp(token[0], "high")) _mode->sync |= FB_SYNC_HOR_HIGH_ACT; else goto err_out_parse_error; } else if (!strcmp(token[0], "vsync")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "low")) _mode->sync &= ~FB_SYNC_VERT_HIGH_ACT; else if(!strcmp(token[0], "high")) _mode->sync |= FB_SYNC_VERT_HIGH_ACT; else goto err_out_parse_error; } else if (!strcmp(token[0], "csync")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "low")) _mode->sync &= ~FB_SYNC_COMP_HIGH_ACT; else if(!strcmp(token[0], "high")) _mode->sync |= FB_SYNC_COMP_HIGH_ACT; else goto err_out_parse_error; } else if (!strcmp(token[0], "extsync")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "false")) _mode->sync &= ~FB_SYNC_EXT; else if(!strcmp(token[0], "true")) _mode->sync |= FB_SYNC_EXT; else goto err_out_parse_error; } else if (!strcmp(token[0], "laced")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "false")) _mode->vmode = FB_VMODE_NONINTERLACED; else if (!strcmp(token[0], "true")) _mode->vmode = FB_VMODE_INTERLACED; else goto err_out_parse_error; } else if (!strcmp(token[0], "double")) { - CHECK_IN_MODE_DEF; + check_in_mode_def(in_mode_def); goto err_out_print_linenum; if (get_token(1) < 0) goto err_out_parse_error; if (!strcmp(token[0], "false")) ; else if (!strcmp(token[0], "true")) _mode->vmode = FB_VMODE_DOUBLE; @@ -507,14 +496,14 @@ } if (!validate_mode(_mode)) goto err_out_not_valid; out: - MSG_DBG2("%d modes\n", nr_modes); + mpxp_dbg2<<nr_modes<<"modes"<<std::endl; delete line; fclose(fp); return nr_modes; err_out_parse_error: - MSG_ERR("parse error"); + mpxp_err<<"parse error"; err_out_print_linenum: - PRINT_LINENUM; + PRINT_LINENUM(line_num); err_out: if (fb_modes) { delete fb_modes; @@ -525,7 +514,7 @@ delete fp; return -2; err_out_not_valid: - MSG_ERR("previous mode is not correct"); + mpxp_err<<"previous mode is not correct"<<std::endl; goto err_out_print_linenum; } @@ -572,21 +561,21 @@ float d = dcf(m); int ret = 1; - MSG_DBG2(FBDEV "mode %dx%d:", m->xres, m->yres); + mpxp_dbg2<<FBDEV<< "mode "<<m->xres<<"x"<<m->yres<<":"; if (!in_range(hfreq, h)) { ret = 0; - MSG_DBG2(" hsync out of range."); + mpxp_dbg2<<" hsync out of range."; } if (!in_range(vfreq, v)) { ret = 0; - MSG_DBG2(" vsync out of range."); + mpxp_dbg2<<" vsync out of range."; } if (!in_range(dotclock, d)) { ret = 0; - MSG_DBG2(" dotclock out of range."); + mpxp_dbg2<<" dotclock out of range."; } - if (ret) MSG_DBG2(" hsync, vsync, dotclock ok.\n"); - else MSG_DBG2("\n"); + if (ret) mpxp_dbg2<<" hsync, vsync, dotclock ok."<<std::endl; + else mpxp_dbg2<<std::endl; return ret; } @@ -597,7 +586,7 @@ fb_mode_t *best = fb_modes; fb_mode_t *curr; - MSG_DBG2(FBDEV "Searching for first working mode\n"); + mpxp_dbg2<<FBDEV<< "Searching for first working mode"<<std::endl; for (i = 0; i < nr_modes; i++, best++) if (mode_works(best, hfreq, vfreq, dotclock)) @@ -608,34 +597,32 @@ if (i == nr_modes - 1) return best; - MSG_DBG2(FBDEV "First working mode: %dx%d\n", best->xres, best->yres); - MSG_DBG2(FBDEV "Searching for better modes\n"); + mpxp_dbg2<<FBDEV<< "First working mode: "<<best->xres<<"x"<<best->yres<<std::endl; + mpxp_dbg2<<FBDEV<< "Searching for better modes"<<std::endl; for (curr = best + 1; i < nr_modes - 1; i++, curr++) { if (!mode_works(curr, hfreq, vfreq, dotclock)) continue; - MSG_DBG2(FBDEV); + mpxp_dbg2<<FBDEV; if (best->xres < xres || best->yres < yres) { if (curr->xres > best->xres || curr->yres > best->yres) { - MSG_DBG2("better than %dx%d, which is too small.\n", - best->xres, best->yres); + mpxp_dbg2<<"better than "<<best->xres<<"x"<<best->yres<<", which is too small."<<std::endl; best = curr; - } else MSG_DBG2("too small.\n"); + } else mpxp_dbg2<<"too small."<<std::endl; } else if (curr->xres == best->xres && curr->yres == best->yres && vsf(curr) > vsf(best)) { - MSG_DBG2("faster screen refresh.\n"); + mpxp_dbg2<<"faster screen refresh."<<std::endl; best = curr; } else if ((curr->xres <= best->xres && curr->yres <= best->yres) && (curr->xres >= xres && curr->yres >= yres)) { - MSG_DBG2("better than %dx%d, which is too large.\n", - best->xres, best->yres); + mpxp_dbg2<<"better than "<<best->xres<<"x"<<best->yres<<", which is too large."<<std::endl; best = curr; } else { - if (curr->xres < xres || curr->yres < yres) MSG_DBG2("too small.\n"); - else if (curr->xres > best->xres || curr->yres > best->yres) MSG_DBG2("too large.\n"); - else MSG_DBG2("it's worse, don't know why.\n"); + if (curr->xres < xres || curr->yres < yres) mpxp_dbg2<<"too small."<<std::endl; + else if (curr->xres > best->xres || curr->yres > best->yres) mpxp_dbg2<<"too large."<<std::endl; + else mpxp_dbg2<<"it's worse, don't know why."<<std::endl; } } return best; @@ -704,7 +691,7 @@ for (i = 0; *endptr; i++) { if (*s == ',') goto out_err; if (!(r = (range_t *) mp_realloc(r, sizeof(*r) * (i + 2)))) { - MSG_ERR("can't mp_realloc 'r'\n"); + mpxp_err<<"can't mp_realloc 'r'"<<std::endl; return NULL; } tmp_min = strtod(s, const_cast<char**>(&endptr)); @@ -768,7 +755,7 @@ red = new uint16_t [cols]; if(!red) { - MSG_ERR("Can't allocate red palette with %d entries.\n", cols); + mpxp_err<<"Can't allocate red palette with "<<cols<<" entries"<<std::endl; return NULL; } for(i=0; i< rcols; i++) @@ -776,7 +763,7 @@ green = new uint16_t[cols]; if(!green) { - MSG_ERR("Can't allocate green palette with %d entries.\n", cols); + mpxp_err<<"Can't allocate green palette with "<<cols<<" entries"<<std::endl; delete red; return NULL; } @@ -785,7 +772,7 @@ blue = new uint16_t[cols]; if(!blue) { - MSG_ERR("Can't allocate blue palette with %d entries.\n", cols); + mpxp_err<<"Can't allocate blue palette with "<<cols<<" entries"<<std::endl; delete red; delete green; return NULL; @@ -795,7 +782,7 @@ cmap = new struct fb_cmap; if(!cmap) { - MSG_ERR("Can't allocate color map\n"); + mpxp_err<<"Can't allocate color map"<<std::endl; delete red; delete green; delete blue; @@ -814,69 +801,57 @@ void FBDev_VO_Interface::lots_of_printf() const { - MSG_V(FBDEV "var info:\n"); - MSG_V(FBDEV "xres: %u\n", vinfo.xres); - MSG_V(FBDEV "yres: %u\n", vinfo.yres); - MSG_V(FBDEV "xres_virtual: %u\n", vinfo.xres_virtual); - MSG_V(FBDEV "yres_virtual: %u\n", vinfo.yres_virtual); - MSG_V(FBDEV "xoffset: %u\n", vinfo.xoffset); - MSG_V(FBDEV "yoffset: %u\n", vinfo.yoffset); - MSG_V(FBDEV "bits_per_pixel: %u\n", vinfo.bits_per_pixel); - MSG_V(FBDEV "grayscale: %u\n", vinfo.grayscale); - MSG_V(FBDEV "red: %lu %lu %lu\n", - (unsigned long) vinfo.red.offset, - (unsigned long) vinfo.red.length, - (unsigned long) vinfo.red.msb_right); - MSG_V(FBDEV "green: %lu %lu %lu\n", - (unsigned long) vinfo.green.offset, - (unsigned long) vinfo.green.length, - (unsigned long) vinfo.green.msb_right); - MSG_V(FBDEV "blue: %lu %lu %lu\n", - (unsigned long) vinfo.blue.offset, - (unsigned long) vinfo.blue.length, - (unsigned long) vinfo.blue.msb_right); - MSG_V(FBDEV "transp: %lu %lu %lu\n", - (unsigned long) vinfo.transp.offset, - (unsigned long) vinfo.transp.length, - (unsigned long) vinfo.transp.msb_right); - MSG_V(FBDEV "nonstd: %u\n", vinfo.nonstd); - MSG_DBG2(FBDEV "activate: %u\n", vinfo.activate); - MSG_DBG2(FBDEV "height: %u\n", vinfo.height); - MSG_DBG2(FBDEV "width: %u\n", vinfo.width); - MSG_DBG2(FBDEV "accel_flags: %u\n", vinfo.accel_flags); - MSG_DBG2(FBDEV "timing:\n"); - MSG_DBG2(FBDEV "pixclock: %u\n", vinfo.pixclock); - MSG_DBG2(FBDEV "left_margin: %u\n", vinfo.left_margin); - MSG_DBG2(FBDEV "right_margin: %u\n", vinfo.right_margin); - MSG_DBG2(FBDEV "upper_margin: %u\n", vinfo.upper_margin); - MSG_DBG2(FBDEV "lower_margin: %u\n", vinfo.lower_margin); - MSG_DBG2(FBDEV "hsync_len: %u\n", vinfo.hsync_len); - MSG_DBG2(FBDEV "vsync_len: %u\n", vinfo.vsync_len); - MSG_DBG2(FBDEV "sync: %u\n", vinfo.sync); - MSG_DBG2(FBDEV "vmode: %u\n", vinfo.vmode); - MSG_V(FBDEV "fix info:\n"); - MSG_V(FBDEV "framebuffer size: %d bytes\n", finfo.smem_len); - MSG_V(FBDEV "type: %lu\n", (unsigned long) finfo.type); - MSG_V(FBDEV "type_aux: %lu\n", (unsigned long) finfo.type_aux); - MSG_V(FBDEV "visual: %lu\n", (unsigned long) finfo.visual); - MSG_V(FBDEV "line_length: %lu bytes\n", (unsigned long) finfo.line_length); - MSG_DBG2(FBDEV "id: %.16s\n", finfo.id); - MSG_DBG2(FBDEV "smem_start: %p\n", (any_t*) finfo.smem_start); - MSG_DBG2(FBDEV "xpanstep: %u\n", finfo.xpanstep); - MSG_DBG2(FBDEV "ypanstep: %u\n", finfo.ypanstep); - MSG_DBG2(FBDEV "ywrapstep: %u\n", finfo.ywrapstep); - MSG_DBG2(FBDEV "mmio_start: %p\n", (any_t*) finfo.mmio_start); - MSG_DBG2(FBDEV "mmio_len: %u bytes\n", finfo.mmio_len); - MSG_DBG2(FBDEV "accel: %u\n", finfo.accel); - MSG_V(FBDEV "priv.bpp: %d\n", bpp); - MSG_V(FBDEV "priv.real_bpp: %d\n", real_bpp); - MSG_V(FBDEV "priv.pixel_size: %d bytes\n",pixel_size); - MSG_V(FBDEV "other:\n"); - MSG_V(FBDEV "priv.in_width: %d\n", in_width); - MSG_V(FBDEV "priv.in_height: %d\n", in_height); - MSG_V(FBDEV "priv.out_width: %d\n", out_width); - MSG_V(FBDEV "priv.out_height: %d\n", out_height); - MSG_V(FBDEV "priv.last_row: %d\n", last_row); + mpxp_v<<FBDEV<< "var info:"<<std::endl; + mpxp_v<<FBDEV<< "xres: "<<vinfo.xres<<std::endl; + mpxp_v<<FBDEV<< "yres: "<<vinfo.yres<<std::endl; + mpxp_v<<FBDEV<< "xres_virtual: "<<vinfo.xres_virtual<<std::endl; + mpxp_v<<FBDEV<< "yres_virtual: "<<vinfo.yres_virtual<<std::endl; + mpxp_v<<FBDEV<< "xoffset: "<<vinfo.xoffset<<std::endl; + mpxp_v<<FBDEV<< "yoffset: "<<vinfo.yoffset<<std::endl; + mpxp_v<<FBDEV<< "bits_per_pixel: "<<vinfo.bits_per_pixel<<std::endl; + mpxp_v<<FBDEV<< "grayscale: "<<vinfo.grayscale<<std::endl; + mpxp_v<<FBDEV<< "red: "<<vinfo.red.offset<<" "<<vinfo.red.length<<" "<<vinfo.red.msb_right<<std::endl; + mpxp_v<<FBDEV<< "green: "<<vinfo.green.offset<<" "<<vinfo.green.length<<" "<<vinfo.green.msb_right<<std::endl; + mpxp_v<<FBDEV<< "blue: "<<vinfo.blue.offset<<" "<<vinfo.blue.length<<" "<<vinfo.blue.msb_right<<std::endl; + mpxp_v<<FBDEV<< "transp: "<<vinfo.transp.offset<<" "<<vinfo.transp.length<<" "<<vinfo.transp.msb_right<<std::endl; + mpxp_v<<FBDEV<< "nonstd: "<<vinfo.nonstd<<std::endl; + mpxp_dbg2<<FBDEV<< "activate: "<<vinfo.activate<<std::endl; + mpxp_dbg2<<FBDEV<< "height: "<<vinfo.height<<std::endl; + mpxp_dbg2<<FBDEV<< "width: "<<vinfo.width<<std::endl; + mpxp_dbg2<<FBDEV<< "accel_flags: "<<vinfo.accel_flags<<std::endl; + mpxp_dbg2<<FBDEV<< "timing:"<<std::endl; + mpxp_dbg2<<FBDEV<< "pixclock: "<<vinfo.pixclock<<std::endl; + mpxp_dbg2<<FBDEV<< "left_margin: "<<vinfo.left_margin<<std::endl; + mpxp_dbg2<<FBDEV<< "right_margin: "<<vinfo.right_margin<<std::endl; + mpxp_dbg2<<FBDEV<< "upper_margin: "<<vinfo.upper_margin<<std::endl; + mpxp_dbg2<<FBDEV<< "lower_margin: "<<vinfo.lower_margin<<std::endl; + mpxp_dbg2<<FBDEV<< "hsync_len: "<<vinfo.hsync_len<<std::endl; + mpxp_dbg2<<FBDEV<< "vsync_len: "<<vinfo.vsync_len<<std::endl; + mpxp_dbg2<<FBDEV<< "sync: "<<vinfo.sync<<std::endl; + mpxp_dbg2<<FBDEV<< "vmode: "<<vinfo.vmode<<std::endl; + mpxp_v<<FBDEV<< "fix info:"<<std::endl; + mpxp_v<<FBDEV<< "framebuffer size: "<<finfo.smem_len<<" bytes"<<std::endl; + mpxp_v<<FBDEV<< "type: "<<finfo.type<<std::endl; + mpxp_v<<FBDEV<< "type_aux: "<<finfo.type_aux<<std::endl; + mpxp_v<<FBDEV<< "visual: "<<finfo.visual<<std::endl; + mpxp_v<<FBDEV<< "line_length: "<<finfo.line_length<<" bytes"<<std::endl; + mpxp_dbg2<<FBDEV<< "id: "<<finfo.id<<std::endl; + mpxp_dbg2<<FBDEV<< "smem_start: "<<std::hex<<reinterpret_cast<any_t*>(finfo.smem_start)<<std::endl; + mpxp_dbg2<<FBDEV<< "xpanstep: "<<finfo.xpanstep<<std::endl; + mpxp_dbg2<<FBDEV<< "ypanstep: "<<finfo.ypanstep<<std::endl; + mpxp_dbg2<<FBDEV<< "ywrapstep: "<<finfo.ywrapstep<<std::endl; + mpxp_dbg2<<FBDEV<< "mmio_start: "<<std::hex<<reinterpret_cast<any_t*>(finfo.mmio_start)<<std::endl; + mpxp_dbg2<<FBDEV<< "mmio_len: "<<finfo.mmio_len<<" bytes"<<std::endl; + mpxp_dbg2<<FBDEV<< "accel: "<<finfo.accel<<std::endl; + mpxp_v<<FBDEV<< "priv.bpp: "<<bpp<<std::endl; + mpxp_v<<FBDEV<< "priv.real_bpp: "<<real_bpp<<std::endl; + mpxp_v<<FBDEV<< "priv.pixel_size: "<<pixel_size<<" bytes"<<std::endl; + mpxp_v<<FBDEV<< "other:"<<std::endl; + mpxp_v<<FBDEV<< "priv.in_width: "<<in_width<<std::endl; + mpxp_v<<FBDEV<< "priv.in_height: "<<in_height<<std::endl; + mpxp_v<<FBDEV<< "priv.out_width: "<<out_width<<std::endl; + mpxp_v<<FBDEV<< "priv.out_height: "<<out_height<<std::endl; + mpxp_v<<FBDEV<< "priv.last_row: "<<last_row<<std::endl; } void FBDev_VO_Interface::vt_set_textarea(int u, int l) @@ -888,9 +863,9 @@ int lrow = l / 16; if (mp_conf.verbose > 1) - MSG_DBG2(FBDEV "vt_set_textarea(%d,%d): %d,%d\n", u, l, urow, lrow); - fprintf(vt_fp, "\33[%d;%dr\33[%d;%dH", urow, lrow, lrow, 0); - fflush(vt_fp); + mpxp_dbg2<<FBDEV<< "vt_set_textarea("<<u<<","<<l<<"): "<<urow<<","<<lrow<<std::endl; + ::fprintf(vt_fp, "\33[%d;%dr\33[%d;%dH", urow, lrow, lrow, 0); + ::fflush(vt_fp); } MPXP_Rc FBDev_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, @@ -904,13 +879,13 @@ UNUSED(title); srcFourcc = format; if((int)pre_init_err == MPXP_Error) { - MSG_ERR(FBDEV "Internal fatal error: init() was called before preinit()\n"); + mpxp_err<<FBDEV<< "Internal fatal error: init() was called before preinit()"<<std::endl; return MPXP_False; } if (pre_init_err!=MPXP_Ok) return MPXP_False; if (priv_conf.mode_name && !flags&VOFLAG_MODESWITCHING) { - MSG_ERR(FBDEV "-fbmode can only be used with -vm\n"); + mpxp_err<<FBDEV<< "-fbmode can only be used with -vm"<<std::endl; return MPXP_False; } if ((flags&VOFLAG_MODESWITCHING) && (parse_fbmode_cfg(priv_conf.mode_cfgfile) < 0)) return MPXP_False; @@ -927,7 +902,7 @@ if (priv_conf.mode_name) { if (!(mode = find_mode_by_name(priv_conf.mode_name))) { - MSG_ERR(FBDEV "can't find requested video mode\n"); + mpxp_err<<FBDEV<< "can't find requested video mode"<<std::endl; return MPXP_False; } fb_mode2fb_vinfo(mode, &vinfo); @@ -936,18 +911,16 @@ monitor_vfreq = str2range(priv_conf.monitor_vfreq_str); monitor_dotclock = str2range(priv_conf.monitor_dotclock_str); if (!monitor_hfreq || !monitor_vfreq || !monitor_dotclock) { - MSG_ERR(FBDEV "you have to specify the capabilities of" - " the monitor.\n"); + mpxp_err<<FBDEV<< "you have to specify the capabilities of the monitor."<<std::endl; return MPXP_False; } if (!(mode = find_best_mode(out_width, out_height, monitor_hfreq, monitor_vfreq, monitor_dotclock))) { - MSG_ERR(FBDEV "can't find best video mode\n"); + mpxp_err<<FBDEV<< "can't find best video mode"<<std::endl; return MPXP_False; } - MSG_ERR(FBDEV "using mode %dx%d @ %.1fHz\n", mode->xres, - mode->yres, vsf(mode)); + mpxp_err<<FBDEV<< "using mode "<<mode->xres<<"x"<<mode->yres<<" @ "<<vsf(mode)<<"Hz"<<std::endl; fb_mode2fb_vinfo(mode, &vinfo); } bpp_we_want = bpp; @@ -955,16 +928,16 @@ vinfo.xres_virtual = vinfo.xres; vinfo.yres_virtual = vinfo.yres; - if (tty_fd >= 0 && ioctl(tty_fd, KDSETMODE, KD_GRAPHICS) < 0) { - MSG_DBG2(FBDEV "Can't set graphics mode: %s\n", strerror(errno)); - close(tty_fd); + if (tty_fd >= 0 && ::ioctl(tty_fd, KDSETMODE, KD_GRAPHICS) < 0) { + mpxp_dbg2<<FBDEV<< "Can't set graphics mode: "<<strerror(errno)<<std::endl; + ::close(tty_fd); tty_fd = -1; } - if (ioctl(dev_fd, FBIOPUT_VSCREENINFO, &vinfo)) { - MSG_ERR(FBDEV "Can't put VSCREENINFO: %s\n", strerror(errno)); - if (tty_fd >= 0 && ioctl(tty_fd, KDSETMODE, KD_TEXT) < 0) { - MSG_ERR(FBDEV "Can't restore text mode: %s\n", strerror(errno)); + if (::ioctl(dev_fd, FBIOPUT_VSCREENINFO, &vinfo)) { + mpxp_err<<FBDEV<< "Can't put VSCREENINFO: "<<strerror(errno)<<std::endl; + if (tty_fd >= 0 && ::ioctl(tty_fd, KDSETMODE, KD_TEXT) < 0) { + mpxp_err<<FBDEV<< "Can't restore text mode: "<<strerror(errno)<<std::endl; } return MPXP_False; } @@ -974,8 +947,7 @@ vinfo.blue.length; bpp = (pixel_size == 4) ? 32 : real_bpp; if (bpp_we_want != bpp) - MSG_ERR(FBDEV "requested %d bpp, got %d bpp!!!\n", - bpp_we_want, bpp); + mpxp_err<<FBDEV<< "requested "<<bpp_we_want<<" bpp, got "<<bpp<<" bpp!!!"<<std::endl; switch (bpp) { case 32: @@ -994,8 +966,7 @@ } if ((flags&VOFLAG_FLIPPING) && ((((pixel_format & 0xff) + 7) / 8) != pixel_size)) { - MSG_ERR(FBDEV "Flipped output with depth conversion is not " - "supported\n"); + mpxp_err<<FBDEV<< "Flipped output with depth conversion is not supported"<<std::endl; return MPXP_False; } @@ -1003,29 +974,29 @@ yres = vinfo.yres; last_row = (xres-out_height) / 2; - if (ioctl(dev_fd, FBIOGET_FSCREENINFO, &finfo)) { - MSG_ERR(FBDEV "Can't get FSCREENINFO: %s\n", strerror(errno)); + if (::ioctl(dev_fd, FBIOGET_FSCREENINFO, &finfo)) { + mpxp_err<<FBDEV<< "Can't get FSCREENINFO: "<<strerror(errno)<<std::endl; return MPXP_False; } lots_of_printf(); if (finfo.type != FB_TYPE_PACKED_PIXELS) { - MSG_ERR(FBDEV "type %d not supported\n", finfo.type); + mpxp_err<<FBDEV<< "type "<<finfo.type<<" not supported"<<std::endl; return MPXP_False; } switch (finfo.visual) { case FB_VISUAL_TRUECOLOR: break; case FB_VISUAL_DIRECTCOLOR: - MSG_DBG2(FBDEV "creating cmap for directcolor\n"); - if (ioctl(dev_fd, FBIOGETCMAP, &oldcmap)) { - MSG_ERR(FBDEV "can't get cmap: %s\n",strerror(errno)); + mpxp_dbg2<<FBDEV<< "creating cmap for directcolor"<<std::endl; + if (::ioctl(dev_fd, FBIOGETCMAP, &oldcmap)) { + mpxp_err<<FBDEV<< "can't get cmap: "<<strerror(errno)<<std::endl; return MPXP_False; } if (!(cmap = make_directcolor_cmap(&vinfo))) return MPXP_False; - if (ioctl(dev_fd, FBIOPUTCMAP, cmap)) { - MSG_ERR(FBDEV "can't put cmap: %s\n",strerror(errno)); + if (::ioctl(dev_fd, FBIOPUTCMAP, cmap)) { + mpxp_err<<FBDEV<< "can't put cmap: "<<strerror(errno)<<std::endl; return MPXP_False; } cmap_changed = 1; @@ -1035,7 +1006,7 @@ delete cmap; break; default: - MSG_ERR(FBDEV "visual: %d not yet supported\n",finfo.visual); + mpxp_err<<FBDEV<< "visual: "<<finfo.visual<<" not yet supported"<<std::endl; return MPXP_False; } @@ -1064,12 +1035,12 @@ if(vidix->configure(width,height,x_offset,y_offset,out_width, out_height,format,bpp, xres,yres) != MPXP_Ok) { - MSG_ERR(FBDEV "Can't initialize VIDIX driver\n"); + mpxp_err<<FBDEV<< "Can't initialize VIDIX driver"<<std::endl; return MPXP_False; - } else MSG_V(FBDEV "Using VIDIX\n"); - if ((frame_buffer = (uint8_t *) mmap(0, size, PROT_READ | PROT_WRITE, + } else mpxp_v<<FBDEV<< "Using VIDIX"<<std::endl; + if ((frame_buffer = (uint8_t *) ::mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, 0)) == (uint8_t *) -1) { - MSG_ERR(FBDEV "Can't mmap %s: %s\n", priv_conf.dev_name, strerror(errno)); + mpxp_err<<FBDEV<< "Can't mmap "<<priv_conf.dev_name<<": "<<strerror(errno)<<std::endl; return MPXP_False; } memset(frame_buffer, 0, line_len * yres); @@ -1077,31 +1048,31 @@ } else #endif { - if ((frame_buffer = (uint8_t *) mmap(0, size, PROT_READ | PROT_WRITE, + if ((frame_buffer = (uint8_t *) ::mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, 0)) == (uint8_t *) -1) { - MSG_ERR(FBDEV "Can't mmap %s: %s\n", priv_conf.dev_name, strerror(errno)); + mpxp_err<<FBDEV<< "Can't mmap "<<priv_conf.dev_name<<": "<<strerror(errno)<<std::endl; return MPXP_False; } if(out_width > xres) out_width=xres; if(out_height > yres) out_width=yres; L123123875 = frame_buffer + x_offset * pixel_size + y_offset * line_len; - MSG_DBG2(FBDEV "frame_buffer @ %p\n", frame_buffer); - MSG_DBG2(FBDEV "L123123875 @ %p\n", L123123875); - MSG_V(FBDEV "pixel per line: %d\n", line_len / pixel_size); + mpxp_dbg2<<FBDEV<< "frame_buffer @ "<<std::hex<<reinterpret_cast<long>(frame_buffer)<<std::endl; + mpxp_dbg2<<FBDEV<< "L123123875 @ "<<std::hex<<reinterpret_cast<long>(L123123875)<<std::endl; + mpxp_v<<FBDEV<< "pixel per line: "<<(line_len/pixel_size)<<std::endl; total_fr=vo_conf.xp_buffs; for(i=0;i<total_fr;i++) if (!(next_frame[i] = (uint8_t *) mp_malloc(out_width * out_height * pixel_size))) { - MSG_ERR(FBDEV "Can't mp_malloc next_frame: %s\n", strerror(errno)); + mpxp_err<<FBDEV<< "Can't mp_malloc next_frame: "<<strerror(errno)<<std::endl; return MPXP_False; } } if (vt_doit && (vt_fd = open("/dev/tty", O_WRONLY)) == -1) { - MSG_ERR(FBDEV "can't open /dev/tty: %s\n", strerror(errno)); + mpxp_err<<FBDEV<< "can't open /dev/tty: "<<strerror(errno)<<std::endl; vt_doit = 0; } if (vt_doit && !(vt_fp = fdopen(vt_fd, "w"))) { - MSG_ERR(FBDEV "can't fdopen /dev/tty: %s\n", strerror(errno)); + mpxp_err<<FBDEV<< "can't fdopen /dev/tty: "<<strerror(errno)<<std::endl; vt_doit = 0; } Modified: mplayerxp/libvo2/vo_msg.h =================================================================== --- mplayerxp/libvo2/vo_msg.h 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/vo_msg.h 2012-12-21 10:48:09 UTC (rev 589) @@ -1,9 +1,6 @@ -#ifndef VO_MSG_H -#define VO_MSG_H +#ifndef VO_MSG_H_INCLUDED +#define VO_MSG_H_INCLUDED 1 -#ifndef MSGT_CLASS -#define MSGT_CLASS MSGT_VO -#endif #include "mpxp_msg.h" namespace mpxp { Modified: mplayerxp/libvo2/vo_null.cpp =================================================================== --- mplayerxp/libvo2/vo_null.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/vo_null.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -123,8 +123,8 @@ if(!bm_buffs[i]) bm_buffs[i] = new(alignmem,getpagesize()) uint8_t[frame_size]; if(!(bm_buffs[i])) { - MSG_ERR("Can't allocate memory for busmastering\n"); - return MPXP_False; + mpxp_err<<"Can't allocate memory for busmastering"<<std::endl; + return MPXP_False; } } return MPXP_Ok; @@ -142,7 +142,7 @@ Null_VO_Interface::Null_VO_Interface(const std::string& arg) :VO_Interface(arg) { - if(!arg.empty()) MSG_ERR("vo_null: Unknown subdevice: %s\n",arg.c_str()); + if(!arg.empty()) mpxp_err<<"vo_null: Unknown subdevice: "<<arg<<std::endl; } void Null_VO_Interface::get_surface_caps(dri_surface_cap_t *caps) const Modified: mplayerxp/libvo2/vo_opengl.cpp =================================================================== --- mplayerxp/libvo2/vo_opengl.cpp 2012-12-20 17:02:24 UTC (rev 588) +++ mplayerxp/libvo2/vo_opengl.cpp 2012-12-21 10:48:09 UTC (rev 589) @@ -150,7 +150,7 @@ } void OpenGL_VO_Interface::resize(int x,int y) const { - MSG_V("[gl] Resize: %dx%d\n",x,y); + mpxp_v<<"[gl] Resize: "<<x<<"x"<<y<<std::endl; gl_init_fb(0, 0, x, y); glClear(GL_COLOR_BUFFER_BIT); } @@ -241,13 +241,13 @@ MPXP_Rc OpenGL_VO_Interface::query_format( vo_query_fourcc_t* format ) const { - MSG_DBG2("vo_opengl: query_format was called: %x (%s)\n",format->fourcc,vo_format_name(format->fourcc)); + mpxp_dbg2<<"vo_opengl: query_format was ca... [truncated message content] |
From: <nic...@us...> - 2012-12-20 17:02:31
|
Revision: 588 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=588&view=rev Author: nickols_k Date: 2012-12-20 17:02:24 +0000 (Thu, 20 Dec 2012) Log Message: ----------- A new word about illegal patch: gdb --args ./ffmpeg -ao alsa -vo x11 M/l.avi -v -v -v -v GNU gdb (GDB) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/ffmpeg...done. (gdb) break mplayerxp.cpp:1713 Breakpoint 1 at 0x455335: file mplayerxp.cpp, line 1713. (gdb) run Starting program: /Data/-SF.NET-/MPXP/mplayerxp/mplayerxp/ffmpeg -ao alsa -vo x11 M/l.avi -v -v -v -v warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". *** Antiviral protection was inited ***!!! MPlayerXP svn.579 2002 Nickols_K 2000-2002 Arpad Gereoffy (?\209?\129?\208?\188. DOCS!) Can't open input config file /root/.ffmpeg/input.conf : No such file or directory Can't open input config file /usr/local/share/mplayerxp/input.conf : No such file or directory Falling back on default (hardcoded) input config Opening joystick device:/dev/input/js0 Can't open joystick device: /dev/input/js0 : No such file or directory Can't init input joystick with using: /dev/input/js0 ?\208?\163?\209?\129?\209?\130?\208?\176?\208?\189?\208?\190?\208?\178?\208?\186?\208?\176 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc... mplayer: could not connect to socket mplayer: No such file or directory ?\208?\157?\208?\181?\209?\131?\208?\180?\208?\176?\209?\135?\208?\189?\208?\190?\208?\181 ?\208?\190?\209?\130?\208?\186?\209?\128?\209?\139?\209?\130?\208?\184?\208?\181 ?\208?\191?\208?\190?\208?\180?\208?\180?\208?\181?\209?\128?\208?\182?\208?\186?\208?\184 lirc! ?\208?\146?\209?\139 ?\208?\189?\208?\181 ?\209?\129?\208?\188?\208?\190?\208?\182?\208?\181?\209?\130?\208?\181 ?\208?\184?\209?\129?\208?\191?\208?\190?\208?\187?\209?\140?\208?\183?\208?\190?\208?\178?\208?\176?\209?\130?\209?\140 ?\208?\146?\208?\176?\209?\136?\208?\181 ?\209?\131?\208?\180?\208?\176?\208?\187?\209?\145?\208?\189?\208?\189?\208?\190?\208?\181 ?\209?\131?\208?\191?\209?\128?\208?\176?\208?\178?\208?\187?\208?\181?\208?\189?\208?\184?\208?\181 Breakpoint 1, mpxp::MPlayerXP (argc=10, argv=0x7fffffffda88, envp=<optimized out>) at mplayerxp.cpp:1713 1713 xp_num_cpu=get_number_cpu(); (gdb) print mp_conf $1 = {has_video = 1, has_audio = 1, has_dvdsub = 1, msg_filter = 4294967295, test_av = 0, malloc_debug = 0, max_trace = 10, xp = 4, gomp = 0, stream_dump = 0x0, s_cache_size = 0, autoq = 0, verbose = 0, benchmark = 0, playbackspeed_factor = 1, frame_dropping = 0, av_sync_pts = -1, av_force_pts_fix = 0, av_force_pts_fix2 = -1, frame_reorder = 1, force_fps = 0, softsleep = 0, nortc = 0, audio_id = -1, video_id = -1, dvdsub_id = -1, vobsub_id = -1, audio_lang = 0xe27d0a "ru", dvdsub_lang = 0xe27d0a "ru", spudec_ifo = 0x0, force_srate = 0, seek_to_sec = 0x0, seek_to_byte = 0, loop_times = -1, shuffle_playback = 0, play_n_frames = -1, audio_codec = 0x0, video_codec = 0x0, audio_family = 0x0, video_family = 0x0, video_driver = 0x1dfa470 "x11", audio_driver = 0x1dba8b0 "alsa", osd_level = 2, font_name = 0x0, font_factor = 0.75, sub_name = 0x0, sub_fps = 0, sub_auto = 1, vobsub_name = 0x0, subcc_enabled = 0, npp_options = 0x0, ao_channels = 2, z_compression = 0, monitor_pixel_aspect = 1, x86 = {simd = -1, mmx = -1, mmx2 = -1, _3dnow = -1, _3dnow2 = -1, sse = -1, sse2 = -1, sse3 = -1, ssse3 = -1, sse41 = -1, sse42 = -1, aes = -1, avx = -1, fma = -1}} (gdb) print mp_conf.verbose $2 = 0 (gdb) n 1715 get_mmx_optimizations(); (gdb) n 1717 if(mp_conf.shuffle_playback) MPXPSys.playtree->flags|=PLAY_TREE_RND; (gdb) print mp_conf.verbose $3 = 0 (gdb) n 1718 else MPXPSys.playtree->flags&=~PLAY_TREE_RND; (gdb) n 1720 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) n 1659 const char* filename=NULL; //"MI2-Trailer.avi"; (gdb) print mp_conf.verbose $4 = 0 (gdb) n 1721 if(MPXPSys.playtree) { (gdb) n 1720 MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); (gdb) n 1721 if(MPXPSys.playtree) { (gdb) n 1722 playtree_iter = play_tree_iter_new(MPXPSys.playtree,m_config); (gdb) n 1723 if(playtree_iter) { (gdb) n 1722 playtree_iter = play_tree_iter_new(MPXPSys.playtree,m_config); (gdb) n 1723 if(playtree_iter) { (gdb) n 1724 if(play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) { (gdb) n 1728 filename = play_tree_iter_get_file(playtree_iter,1); (gdb) n 1732 mpxp_context().engine().xp_core->num_a_buffs = vo_conf.xp_buffs; (gdb) print mp_conf.verbose $5 = 2 (gdb) It seems that call of m_config_parse_command_line() was substituted by malefactor(s) simply because verbose variable has been changed not in official function but after playtree initialization. But even after playtree initialization it still has wrong value (2) instead of 4. Modified Paths: -------------- mplayerxp/player_msg.h Modified: mplayerxp/player_msg.h =================================================================== --- mplayerxp/player_msg.h 2012-12-20 16:44:49 UTC (rev 587) +++ mplayerxp/player_msg.h 2012-12-20 17:02:24 UTC (rev 588) @@ -17,5 +17,4 @@ static mpxp_ostream_dbg3 mpxp_dbg3(MSGT_CPLAYER); static mpxp_ostream_dbg4 mpxp_dbg4(MSGT_CPLAYER); } // namespace mpxp - #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-20 16:44:56
|
Revision: 587 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=587&view=rev Author: nickols_k Date: 2012-12-20 16:44:49 +0000 (Thu, 20 Dec 2012) Log Message: ----------- Apply patch published in changeset[586]! It seems that g++ hacked by malefactor(s) has big problem with std::string. The difference between patch published in changeset[586]: --- .diff 2012-12-20 20:41:50.000000000 +0300 +++ .diff2 2012-12-20 20:41:17.000000000 +0300 @@ -66,7 +66,7 @@ - MSG_V("priv.video_out->config(%u,%u,%u,%u,0x%x,'%s',%s)\n" - ,w,h,d_w,d_h,_fullscreen,title.c_str(),vo_format_name(dest_fourcc)); + mpxp_v<<"priv.video_out->config("<<w<<","<<h<<","<<d_w<<","<<d_h -+ <<", 0x"<<std::hex<<_fullscreen<<",'"<<title.c_str()<<"',"<<vo_format_name(dest_fourcc)<<")"<<std::endl; ++ <<", 0x"<<std::hex<<_fullscreen<<",'"<<title<<"',"<<vo_format_name(dest_fourcc)<<")"<<std::endl; retval = priv.vo_iface->configure(w,h,d_w,d_h,_fullscreen,title,dest_fourcc); priv.srcFourcc=format; if(retval == MPXP_Ok) { @@ -298,4 +298,4 @@ + mpxp_dbg3<<"dri_vo_dbg: "<<rval<<"=vo_control("<<request<<","<<std::hex<<reinterpret_cast<long>(data)<<std::endl; return rval; } - \ ?\208?\146 ?\208?\186?\208?\190?\208?\189?\209?\134?\208?\181 ?\209?\132?\208?\176?\208?\185?\208?\187?\208?\176 ?\208?\189?\208?\181?\209?\130 ?\208?\189?\208?\190?\208?\178?\208?\190?\208?\185 ?\209?\129?\209?\130?\209?\128?\208?\190?\208?\186?\208?\184 + Modified Paths: -------------- mplayerxp/libvo2/video_out.cpp Modified: mplayerxp/libvo2/video_out.cpp =================================================================== --- mplayerxp/libvo2/video_out.cpp 2012-12-20 16:15:28 UTC (rev 586) +++ mplayerxp/libvo2/video_out.cpp 2012-12-20 16:44:49 UTC (rev 587) @@ -22,6 +22,7 @@ * */ #include <algorithm> +#include <iomanip> #include <stdio.h> #include <stdint.h> @@ -142,30 +143,28 @@ Video_Output::~Video_Output() { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_uninit\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_uninit"<<std::endl; inited--; delete &priv; } void Video_Output::print_help() { unsigned i; - MSG_INFO("Available video output drivers:\n"); + mpxp_info<<"Available video output drivers:"<<std::endl; i=0; while (vo_infos[i]) { const vo_info_t *info = vo_infos[i++]; - MSG_INFO("\t%s\t%s\n", info->short_name, info->name); + mpxp_info<<"\t"<<info->short_name<<"\t"<<info->name<<std::endl; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } -const vo_info_t* Video_Output::get_info() const -{ +const vo_info_t* Video_Output::get_info() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); return priv.video_out; } -MPXP_Rc Video_Output::init(const std::string& driver_name) const -{ +MPXP_Rc Video_Output::init(const std::string& driver_name) const { size_t offset; std::string drv_name; std::string subdev; @@ -313,9 +312,9 @@ priv.parent=s; MPXP_Rc retval; unsigned dest_fourcc,w,d_w,h,d_h; - MSG_DBG3("dri_vo_dbg: vo_config\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_config"<<std::endl; if(inited) { - MSG_FATAL("!!!priv.video_out internal fatal error: priv.video_out is initialized more than once!!!\n"); + mpxp_fatal<<"!!!priv.video_out internal fatal error: priv.video_out is initialized more than once!!!"<<std::endl; return MPXP_False; } inited++; @@ -331,8 +330,8 @@ priv.dri.d_width = d_w; priv.dri.d_height = d_h; - MSG_V("priv.video_out->config(%u,%u,%u,%u,0x%x,'%s',%s)\n" - ,w,h,d_w,d_h,_fullscreen,title.c_str(),vo_format_name(dest_fourcc)); + mpxp_v<<"priv.video_out->config("<<w<<","<<h<<","<<d_w<<","<<d_h + <<", 0x"<<std::hex<<_fullscreen<<",'"<<title<<"',"<<vo_format_name(dest_fourcc)<<")"<<std::endl; retval = priv.vo_iface->configure(w,h,d_w,d_h,_fullscreen,title,dest_fourcc); priv.srcFourcc=format; if(retval == MPXP_Ok) { @@ -342,24 +341,21 @@ priv.image_height = h; ps_tune(priv.image_width,priv.org_height); dri_reconfig(0); - MSG_V("dri_vo_caps: driver does %s support DRI\n",priv.dri.has_dri?"":"not"); - MSG_V("dri_vo_caps: caps=%08X fourcc=%08X(%s) x,y,w,h(%u %u %u %u)\n" - "dri_vo_caps: width_height(%u %u) strides(%u %u %u %u) priv.dri.bpp=%u\n" - ,priv.dri.cap.caps - ,priv.dri.cap.fourcc - ,vo_format_name(priv.dri.cap.fourcc) - ,priv.dri.cap.x,priv.dri.cap.y,priv.dri.cap.w,priv.dri.cap.h - ,priv.dri.cap.width,priv.dri.cap.height - ,priv.dri.cap.strides[0],priv.dri.cap.strides[1] - ,priv.dri.cap.strides[2],priv.dri.cap.strides[3] - ,priv.dri.bpp); - MSG_V("dri_vo_src: w,h(%u %u) d_w,d_h(%u %u)\n" - "dri_vo_src: flags=%08X fourcc=%08X(%s)\n" - ,width,height - ,d_width,d_height - ,_fullscreen - ,format - ,vo_format_name(format)); + mpxp_v<<"dri_vo_caps: driver does "<<(priv.dri.has_dri?"":"not")<<" support DRI"<<std::endl; + mpxp_v<<"dri_vo_caps: caps="<<std::hex<<std::setfill('0')<<std::setw(8)<<priv.dri.cap.caps + <<" fourcc="<<std::hex<<std::setfill('0')<<std::setw(8)<<priv.dri.cap.fourcc + <<"("<<vo_format_name(priv.dri.cap.fourcc)<<") x,y,w,h(" + <<priv.dri.cap.x<<" "<<priv.dri.cap.y<<" "<<priv.dri.cap.w<<" "<<priv.dri.cap.h<<")"<<std::endl; + mpxp_v<<"dri_vo_caps: width,height("<<priv.dri.cap.width<<","<<priv.dri.cap.height + <<") strides(" + <<priv.dri.cap.strides[0]<<priv.dri.cap.strides[1] + <<priv.dri.cap.strides[2]<<priv.dri.cap.strides[3] + <<") priv.dri.bpp="<<priv.dri.bpp<<std::endl; + mpxp_v<<"dri_vo_src: w,h("<<width<<","<<height + <<") d_w,d_h("<<d_width<<","<<d_height<<std::endl; + mpxp_v<<"dri_vo_src: flags="<<std::hex<<std::setfill('0')<<std::setw(8)<<_fullscreen + <<" fourcc="<<std::hex<<std::setfill('0')<<std::setw(8)<<format + <<"("<<vo_format_name(format)<<")"<<std::endl; priv.dri.flags = _fullscreen; } return retval; @@ -371,13 +367,13 @@ vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); uint32_t dri_forced_fourcc; vo_query_fourcc_t qfourcc; - MSG_DBG3("dri_vo_dbg: vo_query_format(%08lX)\n",*fourcc); + mpxp_dbg3<<"dri_vo_dbg: vo_query_format("<<std::hex<<std::setfill('0')<<std::setw(8)<<*fourcc<<")"<<std::endl; qfourcc.fourcc = *fourcc; qfourcc.w = src_w; qfourcc.h = src_h; if(priv.vo_iface->query_format(&qfourcc)==MPXP_False) qfourcc.flags=VOCAP_NA; - MSG_V("dri_vo: request for %s fourcc: %i\n",vo_format_name(*fourcc),qfourcc.flags); + mpxp_v<<"dri_vo: request for "<<vo_format_name(*fourcc)<<" fourcc: "<<qfourcc.flags<<std::endl; dri_forced_fourcc = *fourcc; return qfourcc.flags; } @@ -385,7 +381,7 @@ MPXP_Rc Video_Output::reset() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_reset\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_reset"<<std::endl; return priv.vo_iface->reset(); } @@ -393,7 +389,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); char buf[256]; - MSG_DBG3("dri_vo_dbg: vo_screenshot\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_screenshot"<<std::endl; sprintf(buf,"%llu",priv.frame_counter); dri_surface_t surf; surf.idx=idx; @@ -404,14 +400,14 @@ MPXP_Rc Video_Output::pause() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_pause\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_pause"<<std::endl; return priv.vo_iface->pause(); } MPXP_Rc Video_Output::resume() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_resume\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_resume"<<std::endl; return priv.vo_iface->resume(); } @@ -425,7 +421,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); int width_less_stride; - MSG_DBG2("dri_vo_dbg: vo_get_surface type=%X flg=%X\n",mpi->type,mpi->flags); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface type="<<std::hex<<mpi->type<<" flg="<<std::hex<<mpi->flags<<std::endl; width_less_stride = 0; if(mpi->flags & MP_IMGFLAG_PLANAR) { width_less_stride = mpi->w <= priv.dri.cap.strides[0] && @@ -436,22 +432,22 @@ if(priv.dri.has_dri) { /* static is singlebuffered decoding */ if(mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1"<<std::endl; return MPXP_False; } /*I+P requires 2+ static buffers for R/W */ if(mpi->type==MP_IMGTYPE_IP && (priv.dri.num_xp_frames < 2 || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED)) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IP && priv.dri.num_xp_frames < 2) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IP && priv.dri.num_xp_frames < 2) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /*I+P+B requires 3+ static buffers for R/W */ if(mpi->type==MP_IMGTYPE_IPB && (priv.dri.num_xp_frames != 3 || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED)) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IPB && priv.dri.num_xp_frames != 3) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IPB && priv.dri.num_xp_frames != 3) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /* video surface is bad thing for reading */ if(((mpi->flags&MP_IMGFLAG_READABLE)||(mpi->type==MP_IMGTYPE_TEMP)) && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL mpi->flags&MP_IMGFLAG_READABLE && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL mpi->flags&MP_IMGFLAG_READABLE && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /* it seems that surfaces are equal */ @@ -466,10 +462,10 @@ mpi->stride[1]=priv.dri.cap.strides[1]; mpi->stride[2]=priv.dri.cap.strides[2]; mpi->flags|=MP_IMGFLAG_DIRECT; - MSG_DBG2("dri_vo_dbg: vo_get_surface OK\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface OK"<<std::endl; return MPXP_True; } - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->flags&MP_IMGFLAG_ACCEPT_STRIDE && width_less_stride) || priv.dri.planes_eq) && priv.dri.dr\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->flags&MP_IMGFLAG_ACCEPT_STRIDE && width_less_stride) || priv.dri.planes_eq) && priv.dri.dr"<<std::endl; return MPXP_False; } else return MPXP_False; @@ -478,7 +474,7 @@ int Video_Output::adjust_size(unsigned cw,unsigned ch,unsigned *nw,unsigned *nh) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: adjust_size was called %u %u %u %u\n",cw,ch,*nw,*nh); + mpxp_dbg3<<"dri_vo_dbg: adjust_size was called "<<cw<<" "<<ch<<" "<<*nw<<" "<<*nh<<std::endl; if((priv.dri.flags & VOFLAG_SWSCALE) && (cw != *nw || ch != *nh) && !(priv.dri.flags & VOFLAG_FULLSCREEN)) { float aspect,newv; @@ -495,7 +491,7 @@ *nw = newv; if(newv-(float)(unsigned)newv > 0.5) (*nw)++; } - MSG_DBG3("dri_vo_dbg: adjust_size returns %u %u\n",*nw,*nh); + mpxp_dbg3<<"dri_vo_dbg: adjust_size returns "<<*nw<<" "<<*nh<<std::endl; return 1; } return 0; @@ -512,7 +508,7 @@ uint32_t retval; int need_repaint; vo_resize_t vrest; - MSG_DBG3("dri_vo_dbg: vo_check_events\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_check_events"<<std::endl; vrest.event_type = 0; vrest.vo = this; vrest.adjust_size = ::adjust_size; @@ -532,7 +528,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); MPXP_Rc retval; - MSG_DBG3("dri_vo_dbg: vo_fullscreen\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_fullscreen"<<std::endl; retval = priv.vo_iface->toggle_fullscreen(); if(priv.dri.has_dri && retval == MPXP_True) dri_reconfig(1); @@ -549,7 +545,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); unsigned i,_w[4],_h[4],x,y; - MSG_DBG3("dri_vo_dbg: vo_draw_slice xywh=%i %i %i %i\n",mpi->x,mpi->y,mpi->w,mpi->h); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_slice mpi.xywh="<<mpi->x<<" "<<mpi->y<<" "<<mpi->w<<" "<<mpi->h<<std::endl; if(priv.dri.has_dri) { uint8_t *dst[4]; const uint8_t *ps_src[4]; @@ -586,14 +582,14 @@ void Video_Output::select_frame(unsigned play_idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG2("dri_vo_dbg: vo_select_frame(play_idx=%u)\n",play_idx); + mpxp_dbg2<<"dri_vo_dbg: vo_select_frame(play_idx="<<play_idx<<")"<<std::endl; priv.vo_iface->select_frame(play_idx); } void Video_Output::flush_page(unsigned decoder_idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_flush_pages [idx=%u]\n",decoder_idx); + mpxp_dbg3<<"dri_vo_dbg: vo_flush_pages [idx="<<decoder_idx<<"]"<<std::endl; priv.frame_counter++; if((priv.dri.cap.caps & DRI_CAP_VIDEO_MMAPED)!=DRI_CAP_VIDEO_MMAPED) priv.vo_iface->flush_page(decoder_idx); @@ -752,7 +748,7 @@ void Video_Output::draw_osd(unsigned idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_draw_osd\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_osd"<<std::endl; if(priv.dri.has_dri && !(priv.dri.cap.caps & DRI_CAP_HWOSD)) { if( priv.dri.cap.x || priv.dri.cap.y || @@ -765,7 +761,7 @@ void Video_Output::draw_spudec_direct(unsigned idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_draw_osd\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_osd"<<std::endl; if(priv.dri.has_dri && !(priv.dri.cap.caps & DRI_CAP_HWOSD)) { // if( priv.dri.cap.x || priv.dri.cap.y || @@ -781,7 +777,7 @@ MPXP_Rc rval; vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); rval=priv.vo_iface->ctrl(request,data); - MSG_DBG3("dri_vo_dbg: %u=vo_control( %u, %p )\n",rval,request,data); + mpxp_dbg3<<"dri_vo_dbg: "<<rval<<"=vo_control("<<request<<","<<std::hex<<reinterpret_cast<long>(data)<<std::endl; return rval; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-20 16:15:38
|
Revision: 586 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=586&view=rev Author: nickols_k Date: 2012-12-20 16:15:28 +0000 (Thu, 20 Dec 2012) Log Message: ----------- fix: It seems that call of setstate in mpxp_ostream does not always work move it into mpxp_streambuf About illegal patch: Just a new patch which i cannot upload most probably due hacked compiler: Index: libvo2/video_out.cpp =================================================================== --- libvo2/video_out.cpp (revision 584) +++ libvo2/video_out.cpp (working copy) @@ -22,6 +22,7 @@ * */ #include <algorithm> +#include <iomanip> #include <stdio.h> #include <stdint.h> @@ -142,30 +143,28 @@ Video_Output::~Video_Output() { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_uninit\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_uninit"<<std::endl; inited--; delete &priv; } void Video_Output::print_help() { unsigned i; - MSG_INFO("Available video output drivers:\n"); + mpxp_info<<"Available video output drivers:"<<std::endl; i=0; while (vo_infos[i]) { const vo_info_t *info = vo_infos[i++]; - MSG_INFO("\t%s\t%s\n", info->short_name, info->name); + mpxp_info<<"\t"<<info->short_name<<"\t"<<info->name<<std::endl; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } -const vo_info_t* Video_Output::get_info() const -{ +const vo_info_t* Video_Output::get_info() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); return priv.video_out; } -MPXP_Rc Video_Output::init(const std::string& driver_name) const -{ +MPXP_Rc Video_Output::init(const std::string& driver_name) const { size_t offset; std::string drv_name; std::string subdev; @@ -313,9 +312,9 @@ priv.parent=s; MPXP_Rc retval; unsigned dest_fourcc,w,d_w,h,d_h; - MSG_DBG3("dri_vo_dbg: vo_config\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_config"<<std::endl; if(inited) { - MSG_FATAL("!!!priv.video_out internal fatal error: priv.video_out is initialized more than once!!!\n"); + mpxp_fatal<<"!!!priv.video_out internal fatal error: priv.video_out is initialized more than once!!!"<<std::endl; return MPXP_False; } inited++; @@ -331,8 +330,8 @@ priv.dri.d_width = d_w; priv.dri.d_height = d_h; - MSG_V("priv.video_out->config(%u,%u,%u,%u,0x%x,'%s',%s)\n" - ,w,h,d_w,d_h,_fullscreen,title.c_str(),vo_format_name(dest_fourcc)); + mpxp_v<<"priv.video_out->config("<<w<<","<<h<<","<<d_w<<","<<d_h + <<", 0x"<<std::hex<<_fullscreen<<",'"<<title.c_str()<<"',"<<vo_format_name(dest_fourcc)<<")"<<std::endl; retval = priv.vo_iface->configure(w,h,d_w,d_h,_fullscreen,title,dest_fourcc); priv.srcFourcc=format; if(retval == MPXP_Ok) { @@ -342,24 +341,21 @@ priv.image_height = h; ps_tune(priv.image_width,priv.org_height); dri_reconfig(0); - MSG_V("dri_vo_caps: driver does %s support DRI\n",priv.dri.has_dri?"":"not"); - MSG_V("dri_vo_caps: caps=%08X fourcc=%08X(%s) x,y,w,h(%u %u %u %u)\n" - "dri_vo_caps: width_height(%u %u) strides(%u %u %u %u) priv.dri.bpp=%u\n" - ,priv.dri.cap.caps - ,priv.dri.cap.fourcc - ,vo_format_name(priv.dri.cap.fourcc) - ,priv.dri.cap.x,priv.dri.cap.y,priv.dri.cap.w,priv.dri.cap.h - ,priv.dri.cap.width,priv.dri.cap.height - ,priv.dri.cap.strides[0],priv.dri.cap.strides[1] - ,priv.dri.cap.strides[2],priv.dri.cap.strides[3] - ,priv.dri.bpp); - MSG_V("dri_vo_src: w,h(%u %u) d_w,d_h(%u %u)\n" - "dri_vo_src: flags=%08X fourcc=%08X(%s)\n" - ,width,height - ,d_width,d_height - ,_fullscreen - ,format - ,vo_format_name(format)); + mpxp_v<<"dri_vo_caps: driver does "<<(priv.dri.has_dri?"":"not")<<" support DRI"<<std::endl; + mpxp_v<<"dri_vo_caps: caps="<<std::hex<<std::setfill('0')<<std::setw(8)<<priv.dri.cap.caps + <<" fourcc="<<std::hex<<std::setfill('0')<<std::setw(8)<<priv.dri.cap.fourcc + <<"("<<vo_format_name(priv.dri.cap.fourcc)<<") x,y,w,h(" + <<priv.dri.cap.x<<" "<<priv.dri.cap.y<<" "<<priv.dri.cap.w<<" "<<priv.dri.cap.h<<")"<<std::endl; + mpxp_v<<"dri_vo_caps: width,height("<<priv.dri.cap.width<<","<<priv.dri.cap.height + <<") strides(" + <<priv.dri.cap.strides[0]<<priv.dri.cap.strides[1] + <<priv.dri.cap.strides[2]<<priv.dri.cap.strides[3] + <<") priv.dri.bpp="<<priv.dri.bpp<<std::endl; + mpxp_v<<"dri_vo_src: w,h("<<width<<","<<height + <<") d_w,d_h("<<d_width<<","<<d_height<<std::endl; + mpxp_v<<"dri_vo_src: flags="<<std::hex<<std::setfill('0')<<std::setw(8)<<_fullscreen + <<" fourcc="<<std::hex<<std::setfill('0')<<std::setw(8)<<format + <<"("<<vo_format_name(format)<<")"<<std::endl; priv.dri.flags = _fullscreen; } return retval; @@ -371,13 +367,13 @@ vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); uint32_t dri_forced_fourcc; vo_query_fourcc_t qfourcc; - MSG_DBG3("dri_vo_dbg: vo_query_format(%08lX)\n",*fourcc); + mpxp_dbg3<<"dri_vo_dbg: vo_query_format("<<std::hex<<std::setfill('0')<<std::setw(8)<<*fourcc<<")"<<std::endl; qfourcc.fourcc = *fourcc; qfourcc.w = src_w; qfourcc.h = src_h; if(priv.vo_iface->query_format(&qfourcc)==MPXP_False) qfourcc.flags=VOCAP_NA; - MSG_V("dri_vo: request for %s fourcc: %i\n",vo_format_name(*fourcc),qfourcc.flags); + mpxp_v<<"dri_vo: request for "<<vo_format_name(*fourcc)<<" fourcc: "<<qfourcc.flags<<std::endl; dri_forced_fourcc = *fourcc; return qfourcc.flags; } @@ -385,7 +381,7 @@ MPXP_Rc Video_Output::reset() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_reset\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_reset"<<std::endl; return priv.vo_iface->reset(); } @@ -393,7 +389,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); char buf[256]; - MSG_DBG3("dri_vo_dbg: vo_screenshot\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_screenshot"<<std::endl; sprintf(buf,"%llu",priv.frame_counter); dri_surface_t surf; surf.idx=idx; @@ -404,14 +400,14 @@ MPXP_Rc Video_Output::pause() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_pause\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_pause"<<std::endl; return priv.vo_iface->pause(); } MPXP_Rc Video_Output::resume() const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_resume\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_resume"<<std::endl; return priv.vo_iface->resume(); } @@ -425,7 +421,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); int width_less_stride; - MSG_DBG2("dri_vo_dbg: vo_get_surface type=%X flg=%X\n",mpi->type,mpi->flags); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface type="<<std::hex<<mpi->type<<" flg="<<std::hex<<mpi->flags<<std::endl; width_less_stride = 0; if(mpi->flags & MP_IMGFLAG_PLANAR) { width_less_stride = mpi->w <= priv.dri.cap.strides[0] && @@ -436,22 +432,22 @@ if(priv.dri.has_dri) { /* static is singlebuffered decoding */ if(mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL mpi->type==MP_IMGTYPE_STATIC && priv.dri.num_xp_frames>1"<<std::endl; return MPXP_False; } /*I+P requires 2+ static buffers for R/W */ if(mpi->type==MP_IMGTYPE_IP && (priv.dri.num_xp_frames < 2 || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED)) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IP && priv.dri.num_xp_frames < 2) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IP && priv.dri.num_xp_frames < 2) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /*I+P+B requires 3+ static buffers for R/W */ if(mpi->type==MP_IMGTYPE_IPB && (priv.dri.num_xp_frames != 3 || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED)) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IPB && priv.dri.num_xp_frames != 3) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->type==MP_IMGTYPE_IPB && priv.dri.num_xp_frames != 3) || (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /* video surface is bad thing for reading */ if(((mpi->flags&MP_IMGFLAG_READABLE)||(mpi->type==MP_IMGTYPE_TEMP)) && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED) { - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL mpi->flags&MP_IMGFLAG_READABLE && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL mpi->flags&MP_IMGFLAG_READABLE && (priv.dri.cap.caps&DRI_CAP_VIDEO_MMAPED)==DRI_CAP_VIDEO_MMAPED"<<std::endl; return MPXP_False; } /* it seems that surfaces are equal */ @@ -466,10 +462,10 @@ mpi->stride[1]=priv.dri.cap.strides[1]; mpi->stride[2]=priv.dri.cap.strides[2]; mpi->flags|=MP_IMGFLAG_DIRECT; - MSG_DBG2("dri_vo_dbg: vo_get_surface OK\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface OK"<<std::endl; return MPXP_True; } - MSG_DBG2("dri_vo_dbg: vo_get_surface FAIL (mpi->flags&MP_IMGFLAG_ACCEPT_STRIDE && width_less_stride) || priv.dri.planes_eq) && priv.dri.dr\n"); + mpxp_dbg2<<"dri_vo_dbg: vo_get_surface FAIL (mpi->flags&MP_IMGFLAG_ACCEPT_STRIDE && width_less_stride) || priv.dri.planes_eq) && priv.dri.dr"<<std::endl; return MPXP_False; } else return MPXP_False; @@ -478,7 +474,7 @@ int Video_Output::adjust_size(unsigned cw,unsigned ch,unsigned *nw,unsigned *nh) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: adjust_size was called %u %u %u %u\n",cw,ch,*nw,*nh); + mpxp_dbg3<<"dri_vo_dbg: adjust_size was called "<<cw<<" "<<ch<<" "<<*nw<<" "<<*nh<<std::endl; if((priv.dri.flags & VOFLAG_SWSCALE) && (cw != *nw || ch != *nh) && !(priv.dri.flags & VOFLAG_FULLSCREEN)) { float aspect,newv; @@ -495,7 +491,7 @@ *nw = newv; if(newv-(float)(unsigned)newv > 0.5) (*nw)++; } - MSG_DBG3("dri_vo_dbg: adjust_size returns %u %u\n",*nw,*nh); + mpxp_dbg3<<"dri_vo_dbg: adjust_size returns "<<*nw<<" "<<*nh<<std::endl; return 1; } return 0; @@ -512,7 +508,7 @@ uint32_t retval; int need_repaint; vo_resize_t vrest; - MSG_DBG3("dri_vo_dbg: vo_check_events\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_check_events"<<std::endl; vrest.event_type = 0; vrest.vo = this; vrest.adjust_size = ::adjust_size; @@ -532,7 +528,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); MPXP_Rc retval; - MSG_DBG3("dri_vo_dbg: vo_fullscreen\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_fullscreen"<<std::endl; retval = priv.vo_iface->toggle_fullscreen(); if(priv.dri.has_dri && retval == MPXP_True) dri_reconfig(1); @@ -549,7 +545,7 @@ { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); unsigned i,_w[4],_h[4],x,y; - MSG_DBG3("dri_vo_dbg: vo_draw_slice xywh=%i %i %i %i\n",mpi->x,mpi->y,mpi->w,mpi->h); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_slice mpi.xywh="<<mpi->x<<" "<<mpi->y<<" "<<mpi->w<<" "<<mpi->h<<std::endl; if(priv.dri.has_dri) { uint8_t *dst[4]; const uint8_t *ps_src[4]; @@ -586,14 +582,14 @@ void Video_Output::select_frame(unsigned play_idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG2("dri_vo_dbg: vo_select_frame(play_idx=%u)\n",play_idx); + mpxp_dbg2<<"dri_vo_dbg: vo_select_frame(play_idx="<<play_idx<<")"<<std::endl; priv.vo_iface->select_frame(play_idx); } void Video_Output::flush_page(unsigned decoder_idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_flush_pages [idx=%u]\n",decoder_idx); + mpxp_dbg3<<"dri_vo_dbg: vo_flush_pages [idx="<<decoder_idx<<"]"<<std::endl; priv.frame_counter++; if((priv.dri.cap.caps & DRI_CAP_VIDEO_MMAPED)!=DRI_CAP_VIDEO_MMAPED) priv.vo_iface->flush_page(decoder_idx); @@ -752,7 +748,7 @@ void Video_Output::draw_osd(unsigned idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_draw_osd\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_osd"<<std::endl; if(priv.dri.has_dri && !(priv.dri.cap.caps & DRI_CAP_HWOSD)) { if( priv.dri.cap.x || priv.dri.cap.y || @@ -765,7 +761,7 @@ void Video_Output::draw_spudec_direct(unsigned idx) const { vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_draw_osd\n"); + mpxp_dbg3<<"dri_vo_dbg: vo_draw_osd"<<std::endl; if(priv.dri.has_dri && !(priv.dri.cap.caps & DRI_CAP_HWOSD)) { // if( priv.dri.cap.x || priv.dri.cap.y || @@ -781,7 +777,7 @@ MPXP_Rc rval; vo_priv_t& priv=static_cast<vo_priv_t&>(vo_priv); rval=priv.vo_iface->ctrl(request,data); - MSG_DBG3("dri_vo_dbg: %u=vo_control( %u, %p )\n",rval,request,data); + mpxp_dbg3<<"dri_vo_dbg: "<<rval<<"=vo_control("<<request<<","<<std::hex<<reinterpret_cast<long>(data)<<std::endl; return rval; } Revision Links: -------------- http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=584&view=rev Modified Paths: -------------- mplayerxp/mpxp_msg.cpp mplayerxp/mpxp_msg.h Modified: mplayerxp/mpxp_msg.cpp =================================================================== --- mplayerxp/mpxp_msg.cpp 2012-12-20 16:14:09 UTC (rev 585) +++ mplayerxp/mpxp_msg.cpp 2012-12-20 16:15:28 UTC (rev 586) @@ -47,7 +47,7 @@ } void mpxp_streambuf::put_chars(char const* begin, char const* end) const { - parent.test_conditions(); + if(parent.test_conditions()!=MPXP_Ok) { parent.setstate(std::ios_base::badbit); return; } if(::isatty(::fileno(::stderr))) ::fwrite(data.c_str(),data.length(),1,::stderr); ::fwrite(begin,end-begin,1,::stderr); } @@ -88,8 +88,9 @@ return std::min(_idx,unsigned(sizeof(msg_prefix)/sizeof(msg_prefix[0]))); } -void mpxp_ostream::test_conditions() { - if(!(_type&mp_conf.msg_filter)) setstate(std::ios_base::badbit); +MPXP_Rc mpxp_ostream::test_conditions() { + if(!(_type&mp_conf.msg_filter)) return MPXP_False; + return MPXP_Ok; } /* TODO: replace this block with std::string */ @@ -131,30 +132,30 @@ mpxp_ostream_v::mpxp_ostream_v(mpxp_msgt_e type):mpxp_ostream(cyan,type){} mpxp_ostream_v::~mpxp_ostream_v() {} -void mpxp_ostream_v::test_conditions() { - if(mp_conf.verbose<1) setstate(ios_base::badbit); /* do not display */ - mpxp_ostream::test_conditions(); +MPXP_Rc mpxp_ostream_v::test_conditions() { + if(mp_conf.verbose<1) return MPXP_False; + return mpxp_ostream::test_conditions(); } mpxp_ostream_dbg2::mpxp_ostream_dbg2(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg2::~mpxp_ostream_dbg2() {} -void mpxp_ostream_dbg2::test_conditions() { - if(mp_conf.verbose<2) setstate(ios_base::badbit); /* do not display */ - mpxp_ostream::test_conditions(); +MPXP_Rc mpxp_ostream_dbg2::test_conditions() { + if(mp_conf.verbose<2) return MPXP_False; + return mpxp_ostream::test_conditions(); } mpxp_ostream_dbg3::mpxp_ostream_dbg3(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg3::~mpxp_ostream_dbg3() {} -void mpxp_ostream_dbg3::test_conditions() { - if(mp_conf.verbose<3) setstate(ios_base::badbit); /* do not display */ - mpxp_ostream::test_conditions(); +MPXP_Rc mpxp_ostream_dbg3::test_conditions() { + if(mp_conf.verbose<3) return MPXP_False; + return mpxp_ostream::test_conditions(); } mpxp_ostream_dbg4::mpxp_ostream_dbg4(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg4::~mpxp_ostream_dbg4() {} -void mpxp_ostream_dbg4::test_conditions() { - if(mp_conf.verbose<4) setstate(ios_base::badbit); /* do not display */ - mpxp_ostream::test_conditions(); +MPXP_Rc mpxp_ostream_dbg4::test_conditions() { + if(mp_conf.verbose<4) return MPXP_False; + return mpxp_ostream::test_conditions(); } /* old stuff: */ Modified: mplayerxp/mpxp_msg.h =================================================================== --- mplayerxp/mpxp_msg.h 2012-12-20 16:14:09 UTC (rev 585) +++ mplayerxp/mpxp_msg.h 2012-12-20 16:15:28 UTC (rev 586) @@ -87,7 +87,7 @@ protected: mpxp_msgt_e _type; friend class mpxp_streambuf; - virtual void test_conditions(); + virtual MPXP_Rc test_conditions(); private: unsigned compute_idx(mpxp_msgt_e type) const; unsigned idx; @@ -142,7 +142,7 @@ mpxp_ostream_v(mpxp_msgt_e type); virtual ~mpxp_ostream_v(); protected: - virtual void test_conditions(); + virtual MPXP_Rc test_conditions(); }; class mpxp_ostream_dbg2 : public mpxp_ostream { @@ -150,7 +150,7 @@ mpxp_ostream_dbg2(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg2(); protected: - virtual void test_conditions(); + virtual MPXP_Rc test_conditions(); }; class mpxp_ostream_dbg3 : public mpxp_ostream { @@ -158,7 +158,7 @@ mpxp_ostream_dbg3(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg3(); protected: - virtual void test_conditions(); + virtual MPXP_Rc test_conditions(); }; class mpxp_ostream_dbg4 : public mpxp_ostream { @@ -166,7 +166,7 @@ mpxp_ostream_dbg4(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg4(); protected: - virtual void test_conditions(); + virtual MPXP_Rc test_conditions(); }; void mpxp_print_init(int verbose); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-20 16:14:17
|
Revision: 585 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=585&view=rev Author: nickols_k Date: 2012-12-20 16:14:09 +0000 (Thu, 20 Dec 2012) Log Message: ----------- typo Modified Paths: -------------- DOCS/mplayerxp.1 Modified: DOCS/mplayerxp.1 =================================================================== --- DOCS/mplayerxp.1 2012-12-20 15:46:50 UTC (rev 584) +++ DOCS/mplayerxp.1 2012-12-20 16:14:09 UTC (rev 585) @@ -1774,7 +1774,7 @@ The most simplest method of stream copy. Dumps the stream into sname. Useful for example as network sucker. .I Example: --dump @stream:my_file.ext +-core.dump @stream:my_file.ext .TP .B raw dumps raw stream into file. You may specify which part of movie should be This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-20 15:46:59
|
Revision: 584 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=584&view=rev Author: nickols_k Date: 2012-12-20 15:46:50 +0000 (Thu, 20 Dec 2012) Log Message: ----------- fixes+improvements+converting MSG_* info mpxp_* Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/input2/input.cpp mplayerxp/input2/joystick.cpp mplayerxp/input2/lirc.cpp mplayerxp/libao3/audio_out.cpp mplayerxp/libao3/audio_out.h mplayerxp/libvo2/video_out.cpp mplayerxp/libvo2/video_out.h mplayerxp/mplayerxp.cpp mplayerxp/mpxp_msg.cpp mplayerxp/mpxp_msg.h mplayerxp/nls/mpxp_help-en.h mplayerxp/nls/mpxp_help-ru.h mplayerxp/postproc/vf_vo2.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/dump.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -67,7 +67,7 @@ if(len>0) fwrite(buf,len,1,f); } fclose(f); - MSG_INFO(MSGTR_CoreDumped); /* nice joke ;) */ + mpxp_info<<MSGTR_StreamDumped<<std::endl; exit_player(MSGTR_Exit_eof); } @@ -274,7 +274,7 @@ delete demuxer->priv; demuxer->priv=NULL; } - MSG_INFO(MSGTR_CoreDumped); + mpxp_info<<MSGTR_StreamDumped<<std::endl; } Modified: mplayerxp/input2/input.cpp =================================================================== --- mplayerxp/input2/input.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/input2/input.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -1,6 +1,8 @@ #include "mpxp_config.h" #include "osdep/mplib.h" using namespace mpxp; +#include <iomanip> + #include <stdlib.h> #include <string.h> #include <stdio.h> @@ -466,7 +468,7 @@ static MPXP_Rc mp_input_add_cmd_fd(libinput_t& priv,any_t* opaque, int sel, mp_cmd_func_t read_func, mp_close_func_t close_func) { if(priv.num_cmd_fd == MP_MAX_CMD_FD) { - MSG_ERR("Too much command fd, unable to register fd\n"); + mpxp_err<<"Too much command fd, unable to register fd"<<std::endl; return MPXP_False; } @@ -507,7 +509,7 @@ static MPXP_Rc mp_input_add_key_fd(libinput_t& priv,any_t* opaque, int sel, mp_key_func_t read_func, mp_close_func_t close_func) { if(priv.num_key_fd == MP_MAX_KEY_FD) { - MSG_ERR("Too much key fd, unable to register fd\n"); + mpxp_err<<"Too much key fd, unable to register fd"<<std::endl; return MPXP_False; } @@ -564,7 +566,7 @@ errno = 0; cmd->args[i].v.i = atoi(ptr); if(errno != 0) { - MSG_ERR("Command %s : argument %d isn't an integer\n",cmd_def->name,i+1); + mpxp_err<<"Command: "<<cmd_def->name<<" argument "<<i+1<<" isn't an integer"<<std::endl; ptr = NULL; } break; @@ -579,7 +581,7 @@ setlocale(LC_NUMERIC, ""); #endif if(errno != 0) { - MSG_ERR("Command %s : argument %d isn't a float\n",cmd_def->name,i+1); + mpxp_err<<"Command: "<<cmd_def->name<<" argument "<<i+1<<" isn't a float"<<std::endl; ptr = NULL; } break; @@ -599,7 +601,7 @@ ptr2 = e + 1; } if(term != ' ' && (!e || e[0] == '\0')) { - MSG_ERR("Command %s : argument %d is unterminated\n",cmd_def->name,i+1); + mpxp_err<<"Command: "<<cmd_def->name<<" argument "<<i+1<<" is unterminated"<<std::endl; ptr = NULL; break; } else if(!e) e = ptr+strlen(ptr); @@ -614,13 +616,13 @@ } } break; case -1: ptr = NULL; - default: MSG_ERR("Unknown argument %d\n",i); + default: mpxp_err<<"Unknown argument "<<i<<std::endl; } } cmd->nargs = i; if(cmd_def->nargs > cmd->nargs) { - MSG_ERR("Got command '%s' but\n",str); - MSG_ERR("command %s require at least %d arguments, we found only %d so far\n",cmd_def->name,cmd_def->nargs,cmd->nargs); + mpxp_err<<"Got command '"<<str<<"' but"<<std::endl; + mpxp_err<<"command "<<cmd_def->name<<" require at least "<<cmd_def->nargs<<" arguments, we found only "<<cmd->nargs<<" so far"<<std::endl; mp_cmd_free(cmd); delete str; return NULL; @@ -674,7 +676,7 @@ switch(r) { case MP_INPUT_ERROR: case MP_INPUT_DEAD: - MSG_ERR("Error while reading cmd fd: %s\n",strerror(errno)); + mpxp_err<<"Error while reading cmd fd: "<<strerror(errno)<<std::endl; case MP_INPUT_NOTHING: return r; } // EOF ? @@ -696,7 +698,7 @@ if(!end) { // If buffer is full we must drop all until the next \n if(mp_fd->size - mp_fd->pos <= 1) { - MSG_ERR("Cmd buffer is full: dropping content\n"); + mpxp_err<<"Cmd buffer is full: dropping content"<<std::endl; mp_fd->pos = 0; mp_fd->flags |= MP_FD_DROP; } @@ -776,22 +778,22 @@ if(priv.cmd_binds) cmd = mp_input_find_bind_for_key(priv.cmd_binds,n,keys); if(cmd == NULL) cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); if(cmd == NULL) { - MSG_WARN("No bind found for key %s",mp_input_get_key_name(priv,keys[0])); + mpxp_warn<<"No bind found for key: "<<mp_input_get_key_name(priv,keys[0]); if(n > 1) { int s; - for(s=1; s < n; s++) MSG_WARN("-%s",mp_input_get_key_name(priv,keys[s])); + for(s=1; s < n; s++) mpxp_warn<<std::left<<mp_input_get_key_name(priv,keys[s]); } - MSG_WARN(" \n"); + mpxp_warn<<std::endl; return NULL; } ret = mp_input_parse_cmd(cmd); if(!ret) { - MSG_ERR("Invalid command for binded key %s",mp_input_get_key_name(priv,priv.key_down[0])); + mpxp_err<<"Invalid command for binded key: "<<mp_input_get_key_name(priv,priv.key_down[0]); if(priv.num_key_down > 1) { unsigned int s; - for(s=1; s < priv.num_key_down; s++) MSG_ERR("-%s",mp_input_get_key_name(priv,priv.key_down[s])); + for(s=1; s < priv.num_key_down; s++) mpxp_err<<std::left<<mp_input_get_key_name(priv,priv.key_down[s]); } - MSG_ERR(" : %s \n",cmd); + mpxp_err<<" : "<<cmd<<std::endl; } return ret; } @@ -820,9 +822,9 @@ code = ((mp_key_func_t)priv.key_fds[i].read.key_func)(priv.key_fds[i].opaque); if(code >= 0) return code; - if(code == MP_INPUT_ERROR) MSG_ERR("Error on key input fd\n"); + if(code == MP_INPUT_ERROR) mpxp_err<<"Error on key input fd"<<std::endl; else if(code == MP_INPUT_DEAD) { - MSG_ERR("Dead key input on fd\n"); + mpxp_err<<"Dead key input on fd"<<std::endl; mp_input_rm_key_fd(priv,priv.key_fds[i].opaque); } } @@ -847,7 +849,7 @@ // key pushed if(code & MP_KEY_DOWN) { if(priv.num_key_down > MP_MAX_KEY_DOWN) { - MSG_ERR("Too much key down at the same time\n"); + mpxp_err<<"Too much key down at the same time"<<std::endl; continue; } code &= ~MP_KEY_DOWN; @@ -871,7 +873,7 @@ } if(j == priv.num_key_down) { // key was not in the down keys : add it if(priv.num_key_down > MP_MAX_KEY_DOWN) { - MSG_ERR("Too much key down at the same time\n"); + mpxp_err<<"Too much key down at the same time"<<std::endl; continue; } priv.key_down[priv.num_key_down] = code; @@ -937,7 +939,7 @@ char* cmd; r = mp_input_read_cmd(&priv.cmd_fds[i],&cmd); if(r < 0) { - if(r == MP_INPUT_ERROR) MSG_ERR("Error on cmd fd\n"); + if(r == MP_INPUT_ERROR) mpxp_err<<"Error on cmd fd"<<std::endl; else if(r == MP_INPUT_DEAD) priv.cmd_fds[i].flags |= MP_FD_DEAD; continue; } @@ -1136,11 +1138,11 @@ fd = open(file,O_RDONLY); if(fd < 0) { - MSG_ERR("Can't open input config file %s : %s\n",file,strerror(errno)); + mpxp_err<<"Can't open input config file "<<file<<" : "<<strerror(errno)<<std::endl; return 0; } - MSG_V("Parsing input config file %s\n",file); + mpxp_v<<"Parsing input config file "<<file<<std::endl; while(1) { if(! eof && bs < BS_MAX-1) { @@ -1148,7 +1150,7 @@ r = read(fd,buffer+bs,BS_MAX-1-bs); if(r < 0) { if(errno == EINTR) continue; - MSG_ERR("Error while reading input config file %s : %s\n",file,strerror(errno)); + mpxp_err<<"Error while reading input config file "<<file<<" : "<<strerror(errno)<<std::endl; mp_input_free_binds(binds); close(fd); return 0; @@ -1161,7 +1163,7 @@ } // Empty buffer : return if(bs <= 1) { - MSG_INFO("Input config file %s parsed : %d binds\n",file,n_binds); + mpxp_info<<"Input config file "<<file<<" parsed : "<<n_binds<<" binds"<<std::endl; if(binds) priv.cmd_binds = binds; close(fd); return 1; @@ -1196,8 +1198,8 @@ for(end = iter; end[0] != '\0' && strchr(SPACE_CHAR,end[0]) == NULL ; end++)/*NOTHING */; if(end[0] == '\0') { // Key name don't fit in the buffer if(buffer == iter) { - if(eof && (buffer-iter) == bs) MSG_ERR("Unfinished binding %s\n",iter); - else MSG_ERR("Buffer is too small for this key name : %s\n",iter); + if(eof && (buffer-iter) == bs) mpxp_err<<"Unfinished binding "<<iter<<std::endl; + else mpxp_err<<"Buffer is too small for this key name : "<<iter<<std::endl; mp_input_free_binds(binds); return 0; } @@ -1209,7 +1211,7 @@ strncpy(name,iter,end-iter); name[end-iter] = '\0'; if(! mp_input_get_input_from_name(name,keys)) { - MSG_ERR("Unknown key '%s'\n",name); + mpxp_err<<"Unknown key '"<<name<<"'"<<std::endl; mp_input_free_binds(binds); close(fd); return 0; @@ -1222,9 +1224,9 @@ // Found new line if(iter[0] == '\n' || iter[0] == '\r') { int i; - MSG_ERR("No command found for key %s" ,mp_input_get_key_name(priv,keys[0])); - for(i = 1; keys[i] != 0 ; i++) MSG_ERR("-%s",mp_input_get_key_name(priv,keys[i])); - MSG_ERR("\n"); + mpxp_err<<"No command found for key "<<mp_input_get_key_name(priv,keys[0]); + for(i = 1; keys[i] != 0 ; i++) mpxp_err<<std::left<<mp_input_get_key_name(priv,keys[i]); + mpxp_err<<std::endl; keys[0] = 0; if(iter > buffer) { memmove(buffer,iter,bs- (iter-buffer)); @@ -1235,7 +1237,7 @@ for(end = iter ; end[0] != '\n' && end[0] != '\r' && end[0] != '\0' ; end++)/* NOTHING */; if(end[0] == '\0' && ! (eof && ((end+1) - buffer) == bs)) { if(iter == buffer) { - MSG_ERR("Buffer is too small for command %s\n",buffer); + mpxp_err<<"Buffer is too small for command "<<buffer<<std::endl; mp_input_free_binds(binds); close(fd); return 0; @@ -1258,7 +1260,7 @@ continue; } } - MSG_ERR("What are we doing here ?\n"); + mpxp_err<<"What are we doing here ?"<<std::endl; close(fd); return 0; } @@ -1272,13 +1274,13 @@ if(! mp_input_parse_config(priv,file)) { // Try global conf dir file = CONFDIR "/input.conf"; - if(! mp_input_parse_config(priv,file)) MSG_WARN("Falling back on default (hardcoded) input config\n"); + if(! mp_input_parse_config(priv,file)) mpxp_warn<<"Falling back on default (hardcoded) input config"<<std::endl; } #ifdef HAVE_JOYSTICK if(libinput_conf.use_joystick) { any_t* joystick_fd; joystick_fd = mp_input_joystick_open(libinput_conf.js_dev); - if(!joystick_fd) MSG_ERR("Can't init input joystick with using: %s\n",libinput_conf.js_dev); + if(!joystick_fd) mpxp_err<<"Can't init input joystick with using: "<<libinput_conf.js_dev<<std::endl; else mp_input_add_key_fd(priv,joystick_fd,1,mp_input_joystick_read,(mp_close_func_t)mp_input_joystick_close); } #endif @@ -1298,11 +1300,11 @@ #endif if(libinput_conf.in_file) { struct stat st; - if(stat(libinput_conf.in_file,&st)) MSG_ERR("Can't stat %s: %s\n",libinput_conf.in_file,strerror(errno)); + if(stat(libinput_conf.in_file,&st)) mpxp_err<<"Can't stat: "<<libinput_conf.in_file<<" : "<<strerror(errno)<<std::endl; else { priv.in_file_fd = open(libinput_conf.in_file,(S_ISFIFO(st.st_mode)?O_RDWR:O_RDONLY)|O_NONBLOCK); if(priv.in_file_fd >= 0) mp_input_add_cmd_fd(priv,&priv,1,NULL,(mp_close_func_t)close); - else MSG_ERR("Can't open %s: %s\n",libinput_conf.in_file,strerror(errno)); + else mpxp_err<<"Can't open: "<<libinput_conf.in_file<<" : "<<strerror(errno)<<std::endl; } } priv.in_file_fd = 0; @@ -1354,8 +1356,8 @@ void mp_input_print_keys(libinput_t& handle) { unsigned i; UNUSED(handle); - MSG_INFO("List of available KEYS:\n"); - for(i= 0; key_names[i].name != NULL ; i++) MSG_INFO("%s\n",key_names[i].name); + mpxp_info<<"List of available KEYS:"<<std::endl; + for(i= 0; key_names[i].name != NULL ; i++) mpxp_info<<key_names[i].name<<std::endl; } static int mp_input_print_key_list(libinput_t& handle) { @@ -1365,12 +1367,12 @@ void mp_input_print_binds(libinput_t& handle) { unsigned i,j; - MSG_INFO("List of available key bindings:\n"); + mpxp_info<<"List of available key bindings:"<<std::endl; for(i=0; def_cmd_binds[i].cmd != NULL ; i++) { for(j=0;def_cmd_binds[i].input[j] != 0;j++) { - MSG_INFO(" %-20s",mp_input_get_key_name(handle,def_cmd_binds[i].input[j])); + mpxp_info<<std::left<<" "<<mp_input_get_key_name(handle,def_cmd_binds[i].input[j]); } - MSG_INFO(" %s\n",def_cmd_binds[i].cmd); + mpxp_info<<" "<<def_cmd_binds[i].cmd<<std::endl; } } @@ -1380,9 +1382,9 @@ const char* type; UNUSED(handle); - MSG_INFO("List of available input commands:\n"); + mpxp_info<<"List of available input commands:"<<std::endl; for(i = 0; (cmd = &mp_cmds[i])->name != NULL ; i++) { - MSG_INFO(" %-20.20s",cmd->name); + mpxp_info<<std::left<<" "<<cmd->name; for(j= 0 ; j < MP_CMD_MAX_ARGS && cmd->args[j].type != -1 ; j++) { switch(cmd->args[j].type) { case MP_CMD_ARG_INT: @@ -1397,10 +1399,10 @@ default: type = "??"; } - if(j+1 > cmd->nargs) MSG_INFO(" [%s]",type); - else MSG_INFO(" %s",type); + if(j+1 > cmd->nargs) mpxp_info<<" ["<<type<<"]"; + else mpxp_info<<" "<<type; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } } Modified: mplayerxp/input2/joystick.cpp =================================================================== --- mplayerxp/input2/joystick.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/input2/joystick.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -41,10 +41,10 @@ struct js_event ev; priv_t* priv=new(zeromem) priv_t; - MSG_INFO("Opening joystick device %s\n",dev ? dev : JS_DEV); + mpxp_info<<"Opening joystick device:"<<(dev?dev:JS_DEV)<<std::endl; if((priv->fd=open(dev?dev:JS_DEV,O_RDONLY|O_NONBLOCK))<0) { - MSG_ERR("Can't open joystick device %s : %s\n",dev ? dev : JS_DEV,strerror(errno)); + mpxp_err<<"Can't open joystick device: "<<(dev?dev:JS_DEV)<<" : "<<strerror(errno)<<std::endl; delete priv; return NULL; } @@ -59,7 +59,7 @@ inited = 1; break; } - MSG_ERR("Error while reading joystick device : %s\n",strerror(errno)); + mpxp_err<<"Error while reading joystick device: "<<strerror(errno)<<std::endl; close(priv->fd); delete priv; return NULL; @@ -67,7 +67,7 @@ l += r; } if((unsigned int)l < sizeof(struct js_event)) { - if(l > 0) MSG_ERR("Joystick : we loose %d bytes of data\n",l); + if(l > 0) mpxp_err<<"Joystick: we loose "<<l<<"bytes of data"<<std::endl; break; } ev.type &= ~JS_EVENT_INIT; @@ -93,20 +93,20 @@ if(r <= 0) { if(errno == EINTR) continue; else if(errno == EAGAIN) return MP_INPUT_NOTHING; - if(r < 0) MSG_ERR("Joystick error while reading joystick device : %s\n",strerror(errno)); - else MSG_ERR("Joystick error while reading joystick device : EOF\n"); + if(r < 0) mpxp_err<<"Joystick error while reading joystick device: "<<strerror(errno)<<std::endl; + else mpxp_err<<"Joystick error while reading joystick device: EOF"<<std::endl; return MP_INPUT_DEAD; } l += r; } if((unsigned int)l < sizeof(struct js_event)) { - if(l > 0) MSG_ERR("Joystick : we loose %d bytes of data\n",l); + if(l > 0) mpxp_err<<"Joystick: we loose "<<l<<"bytes of data"<<std::endl; return MP_INPUT_NOTHING; } if(ev.type & JS_EVENT_INIT) { - MSG_WARN("Joystick : warning init event, we have lost sync with driver\n"); + mpxp_warn<<"Joystick: warning init event, we have lost sync with driver"<<std::endl; ev.type &= ~JS_EVENT_INIT; if(ev.type == JS_EVENT_BUTTON) { int s = (priv.btns >> ev.number) & 1; @@ -141,7 +141,7 @@ } else return MP_INPUT_NOTHING; } else { - MSG_ERR("Joystick warning unknow event type %d\n",ev.type); + mpxp_err<<"Joystick warning unknow event type "<<ev.type<<std::endl; return MP_INPUT_ERROR; } return MP_INPUT_NOTHING; Modified: mplayerxp/input2/lirc.cpp =================================================================== --- mplayerxp/input2/lirc.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/input2/lirc.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -29,16 +29,16 @@ any_t* mp_input_lirc_open(void) { priv_t* priv=new(zeromem) priv_t; - MSG_INFO(MSGTR_SettingUpLIRC); + mpxp_info<<MSGTR_SettingUpLIRC<<std::endl; if((priv->lirc_sock=lirc_init(const_cast<char*>("mplayer"),1))==-1){ - MSG_ERR(MSGTR_LIRCopenfailed MSGTR_LIRCdisabled); + mpxp_err<<MSGTR_LIRCopenfailed<<std::endl<<MSGTR_LIRCdisabled<<std::endl; delete priv; return NULL; } if(lirc_readconfig( lirc_configfile,&lirc_config,NULL )!=0 ){ - MSG_ERR(MSGTR_LIRCcfgerr MSGTR_LIRCdisabled, - lirc_configfile == NULL ? "~/.lircrc" : lirc_configfile); + mpxp_err<<MSGTR_LIRCcfgerr<<": "<<(lirc_configfile==NULL?"~/.lircrc":lirc_configfile)<<std::endl; + mpxp_err<<MSGTR_LIRCdisabled<<std::endl; lirc_deinit(); delete priv; return NULL; @@ -72,14 +72,14 @@ while((r = select(1,&fds,NULL,NULL,&tv)) <= 0) { if(r < 0) { if(errno == EINTR) continue; - MSG_ERR("Select error : %s\n",strerror(errno)); + mpxp_err<<"Select error:"<<strerror(errno)<<std::endl; return MP_INPUT_ERROR; } else return MP_INPUT_NOTHING; } // There's something to read if(lirc_nextcode(&code) != 0) { - MSG_ERR("Lirc error :(\n"); + mpxp_err<<"Lirc error :("<<std::endl; return MP_INPUT_DEAD; } Modified: mplayerxp/libao3/audio_out.cpp =================================================================== --- mplayerxp/libao3/audio_out.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/libao3/audio_out.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -194,15 +194,15 @@ delete &priv; } -void Audio_Output::print_help() const { +void Audio_Output::print_help() { unsigned i; - MSG_INFO("Available audio output drivers:\n"); + mpxp_info<<"Available audio output drivers:"<<std::endl; i=0; while (audio_out_drivers[i]) { const ao_info_t *info = audio_out_drivers[i++]; - MSG_INFO("\t%s\t%s\n", info->short_name, info->name); + mpxp_info<<"\t"<<info->short_name<<"\t"<<info->name<<std::endl; } - MSG_INFO("\n"); + mpxp_info<<std::endl; } MPXP_Rc Audio_Output::_register(const char *driver_name,unsigned flags) const { Modified: mplayerxp/libao3/audio_out.h =================================================================== --- mplayerxp/libao3/audio_out.h 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/libao3/audio_out.h 2012-12-20 15:46:50 UTC (rev 584) @@ -33,7 +33,7 @@ Audio_Output(const char* subdevice); virtual ~Audio_Output(); - virtual void print_help() const; + static void print_help(); virtual MPXP_Rc _register(const char *driver_name,unsigned flags) const; virtual const ao_info_t* get_info() const; virtual MPXP_Rc configure(unsigned rate,unsigned channels,unsigned format) const; Modified: mplayerxp/libvo2/video_out.cpp =================================================================== --- mplayerxp/libvo2/video_out.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/libvo2/video_out.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -147,8 +147,7 @@ delete &priv; } -void Video_Output::print_help() const -{ +void Video_Output::print_help() { unsigned i; MSG_INFO("Available video output drivers:\n"); i=0; Modified: mplayerxp/libvo2/video_out.h =================================================================== --- mplayerxp/libvo2/video_out.h 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/libvo2/video_out.h 2012-12-20 15:46:50 UTC (rev 584) @@ -168,7 +168,7 @@ void FLIP_REVERT() { flags^=VOFLAG_FLIPPING; } virtual MPXP_Rc init(const std::string& driver_name) const; - virtual void print_help() const; + static void print_help(); virtual const vo_info_t* get_info() const; virtual MPXP_Rc configure(vf_stream_t* parent,uint32_t width, uint32_t height, uint32_t d_width, Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/mplayerxp.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -606,8 +606,8 @@ m_config_show_options(*mpxp_context().mconfig); mp_input_print_binds(MPXPSys.libinput()); Stream::print_drivers(); - mpxp_context().video().output->print_help(); - mpxp_context().audio().output->print_help(); + Video_Output::print_help(); + Audio_Output::print_help(); vf_help(); af_help(); vfm_help(); Modified: mplayerxp/mpxp_msg.cpp =================================================================== --- mplayerxp/mpxp_msg.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/mpxp_msg.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -47,7 +47,7 @@ } void mpxp_streambuf::put_chars(char const* begin, char const* end) const { - if(!(parent._type&mp_conf.msg_filter)) { parent.setstate(std::ios_base::badbit); return; } + parent.test_conditions(); if(::isatty(::fileno(::stderr))) ::fwrite(data.c_str(),data.length(),1,::stderr); ::fwrite(begin,end-begin,1,::stderr); } @@ -88,6 +88,10 @@ return std::min(_idx,unsigned(sizeof(msg_prefix)/sizeof(msg_prefix[0]))); } +void mpxp_ostream::test_conditions() { + if(!(_type&mp_conf.msg_filter)) setstate(std::ios_base::badbit); +} + /* TODO: replace this block with std::string */ static const char blue[]="\033[0;34;40m"; static const char green[]="\033[0;32;40m"; @@ -125,17 +129,33 @@ mpxp_ostream_status::mpxp_ostream_status(mpxp_msgt_e type):mpxp_ostream(light_blue,type){} mpxp_ostream_status::~mpxp_ostream_status() {} -mpxp_ostream_v::mpxp_ostream_v(mpxp_msgt_e type):mpxp_ostream(cyan,type){ if(mp_conf.verbose<1) setstate(ios_base::badbit); /* do not display */ } +mpxp_ostream_v::mpxp_ostream_v(mpxp_msgt_e type):mpxp_ostream(cyan,type){} mpxp_ostream_v::~mpxp_ostream_v() {} +void mpxp_ostream_v::test_conditions() { + if(mp_conf.verbose<1) setstate(ios_base::badbit); /* do not display */ + mpxp_ostream::test_conditions(); +} -mpxp_ostream_dbg2::mpxp_ostream_dbg2(mpxp_msgt_e type):mpxp_ostream(gray,type){ if(mp_conf.verbose<2) setstate(ios_base::badbit); /* do not display */ } +mpxp_ostream_dbg2::mpxp_ostream_dbg2(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg2::~mpxp_ostream_dbg2() {} +void mpxp_ostream_dbg2::test_conditions() { + if(mp_conf.verbose<2) setstate(ios_base::badbit); /* do not display */ + mpxp_ostream::test_conditions(); +} -mpxp_ostream_dbg3::mpxp_ostream_dbg3(mpxp_msgt_e type):mpxp_ostream(gray,type){ if(mp_conf.verbose<3) setstate(ios_base::badbit); /* do not display */ } +mpxp_ostream_dbg3::mpxp_ostream_dbg3(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg3::~mpxp_ostream_dbg3() {} +void mpxp_ostream_dbg3::test_conditions() { + if(mp_conf.verbose<3) setstate(ios_base::badbit); /* do not display */ + mpxp_ostream::test_conditions(); +} -mpxp_ostream_dbg4::mpxp_ostream_dbg4(mpxp_msgt_e type):mpxp_ostream(gray,type){ if(mp_conf.verbose<4) setstate(ios_base::badbit); /* do not display */ } +mpxp_ostream_dbg4::mpxp_ostream_dbg4(mpxp_msgt_e type):mpxp_ostream(gray,type){} mpxp_ostream_dbg4::~mpxp_ostream_dbg4() {} +void mpxp_ostream_dbg4::test_conditions() { + if(mp_conf.verbose<4) setstate(ios_base::badbit); /* do not display */ + mpxp_ostream::test_conditions(); +} /* old stuff: */ Modified: mplayerxp/mpxp_msg.h =================================================================== --- mplayerxp/mpxp_msg.h 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/mpxp_msg.h 2012-12-20 15:46:50 UTC (rev 584) @@ -86,7 +86,8 @@ virtual ~mpxp_ostream(); protected: mpxp_msgt_e _type; - friend class mpxp_streambuf; + friend class mpxp_streambuf; + virtual void test_conditions(); private: unsigned compute_idx(mpxp_msgt_e type) const; unsigned idx; @@ -140,24 +141,32 @@ public: mpxp_ostream_v(mpxp_msgt_e type); virtual ~mpxp_ostream_v(); + protected: + virtual void test_conditions(); }; class mpxp_ostream_dbg2 : public mpxp_ostream { public: mpxp_ostream_dbg2(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg2(); + protected: + virtual void test_conditions(); }; class mpxp_ostream_dbg3 : public mpxp_ostream { public: mpxp_ostream_dbg3(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg3(); + protected: + virtual void test_conditions(); }; class mpxp_ostream_dbg4 : public mpxp_ostream { public: mpxp_ostream_dbg4(mpxp_msgt_e type); virtual ~mpxp_ostream_dbg4(); + protected: + virtual void test_conditions(); }; void mpxp_print_init(int verbose); Modified: mplayerxp/nls/mpxp_help-en.h =================================================================== --- mplayerxp/nls/mpxp_help-en.h 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/nls/mpxp_help-en.h 2012-12-20 15:46:50 UTC (rev 584) @@ -135,8 +135,8 @@ #ifndef MSGTR_CantOpenDumpfile #define MSGTR_CantOpenDumpfile "Can't open dump file!!!\n" #endif -#ifndef MSGTR_CoreDumped -#define MSGTR_CoreDumped "core dumped :)\n" +#ifndef MSGTR_StreamDumped +#define MSGTR_StreamDumped "stream dumped :)\n" #endif #ifndef MSGTR_FPSnotspecified #define MSGTR_FPSnotspecified "FPS not specified (or invalid) in the header! Use the -fps option!\n" @@ -451,19 +451,19 @@ // LIRC: #ifndef MSGTR_SettingUpLIRC -#define MSGTR_SettingUpLIRC "Setting up lirc support...\n" +#define MSGTR_SettingUpLIRC "Setting up lirc support..." #endif #ifndef MSGTR_LIRCdisabled -#define MSGTR_LIRCdisabled "You won't be able to use your remote control\n" +#define MSGTR_LIRCdisabled "You won't be able to use your remote control" #endif #ifndef MSGTR_LIRCopenfailed -#define MSGTR_LIRCopenfailed "Failed opening lirc support!\n" +#define MSGTR_LIRCopenfailed "Failed opening lirc support!" #endif #ifndef MSGTR_LIRCsocketerr -#define MSGTR_LIRCsocketerr "Something's wrong with the lirc socket: %s\n" +#define MSGTR_LIRCsocketerr "Something's wrong with the lirc socket" #endif #ifndef MSGTR_LIRCcfgerr -#define MSGTR_LIRCcfgerr "Failed to read LIRC config file %s !\n" +#define MSGTR_LIRCcfgerr "Failed to read LIRC config file" #endif #endif /*__MPXP_EN_HELP_INCLUDED*/ Modified: mplayerxp/nls/mpxp_help-ru.h =================================================================== --- mplayerxp/nls/mpxp_help-ru.h 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/nls/mpxp_help-ru.h 2012-12-20 15:46:50 UTC (rev 584) @@ -88,7 +88,7 @@ #define MSGTR_DVDauthOk "Авторизация DVD выглядит OK.\n" #define MSGTR_DumpSelectedSteramMissing "dump: FATAL: выбранный поток потерян!\n" #define MSGTR_CantOpenDumpfile "Не могу открыть файл дампа!!!\n" -#define MSGTR_CoreDumped "core dumped :)\n" +#define MSGTR_StreamDumped "stream dumped :)" #define MSGTR_FPSnotspecified "Кадр/сек не указаны (или недопустимые) в заголовке! Используйте -fps опцию!\n" #define MSGTR_NoVideoStream "Видео поток не найден... это невоспроизводимо пока\n" #define MSGTR_TryForceAudioFmt "Попытка форсировать семейство аудио кодеков" @@ -206,8 +206,8 @@ #define MSGTR_UnknownAudio "Неизвестный/потерянный аудио формат, отказ от звука\n" // LIRC: -#define MSGTR_SettingUpLIRC "Установка поддержки lirc...\n" -#define MSGTR_LIRCdisabled "Вы не сможете использовать Ваше удалённое управление\n" -#define MSGTR_LIRCopenfailed "Неудачное открытие поддержки lirc!\n" -#define MSGTR_LIRCsocketerr "Что-то неправильно с сокетом lirc: %s\n" -#define MSGTR_LIRCcfgerr "Неудачное чтение файла конфигурации LIRC %s !\n" +#define MSGTR_SettingUpLIRC "Установка поддержки lirc..." +#define MSGTR_LIRCdisabled "Вы не сможете использовать Ваше удалённое управление" +#define MSGTR_LIRCopenfailed "Неудачное открытие поддержки lirc!" +#define MSGTR_LIRCsocketerr "Что-то неправильно с сокетом lirc" +#define MSGTR_LIRCcfgerr "Неудачное чтение файла конфигурации LIRC" Modified: mplayerxp/postproc/vf_vo2.cpp =================================================================== --- mplayerxp/postproc/vf_vo2.cpp 2012-12-20 15:07:43 UTC (rev 583) +++ mplayerxp/postproc/vf_vo2.cpp 2012-12-20 15:46:50 UTC (rev 584) @@ -27,18 +27,19 @@ static void __FASTCALL__ print_conf(vf_instance_t* vf) { const vo_info_t *info = mpxp_context().video().output->get_info(); - MSG_INFO("VO-CONF: [%s] %dx%d => %dx%d %s %s%s%s%s\n",info->short_name, - vf->priv->sw, vf->priv->sh, - vf->priv->dw, vf->priv->dh, - vo_format_name(vf->priv->ofmt), - (vf->priv->sflg&1)?" [fs]":"", - (vf->priv->sflg&2)?" [vm]":"", - (vf->priv->sflg&4)?" [zoom]":"", - (vf->priv->sflg&8)?" [flip]":""); - MSG_V("VO: Description: %s\n",info->name); - MSG_V("VO: Author: %s\n", info->author); + mpxp_info<<"VO-CONF: ["<<info->short_name<<"] " + <<vf->priv->sw<<"x"<<vf->priv->sh + <<" => "<<vf->priv->dw<<"x"<<vf->priv->dh + <<" "<<vo_format_name(vf->priv->ofmt) + <<" " + <<((vf->priv->sflg&1)?" [fs]":"") + <<((vf->priv->sflg&2)?" [vm]":"") + <<((vf->priv->sflg&4)?" [zoom]":"") + <<((vf->priv->sflg&8)?" [flip]":"")<<std::endl; + mpxp_v<<"VO: Description: "<<info->name<<std::endl; + mpxp_v<<"VO: Author: "<<info->author<<std::endl; if(info->comment && strlen(info->comment) > 0) - MSG_V("VO: Comment: %s\n", info->comment); + mpxp_v<<"VO: Comment: "<<info->comment<<std::endl; } static int __FASTCALL__ vf_config(vf_instance_t* vf, @@ -47,7 +48,7 @@ if ((width <= 0) || (height <= 0) || (d_width <= 0) || (d_height <= 0)) { - MSG_ERR("VO: invalid dimensions!\n"); + mpxp_err<<"VO: invalid dimensions!"<<std::endl; return 0; } @@ -63,6 +64,8 @@ // save vo's stride capability for the wanted colorspace: vf->default_caps=query_format(vf,outfmt,d_width,d_height);// & VFCAP_ACCEPT_STRIDE; + mpxp_dbg2<<"vf_vo2->config("<<width<<","<<height<<","<<d_width<<","<<d_height + <<","<<flags<<","<<vo_format_name(outfmt)<<")"<<std::endl; if(MPXP_Ok!=mpxp_context().video().output->configure(vf->parent,width,height,d_width,d_height,flags,"MPlayerXP",outfmt)) return 0; vf->priv->is_planar=vo_describe_fourcc(outfmt,&vf->priv->vd); @@ -76,7 +79,7 @@ static MPXP_Rc __FASTCALL__ control_vf(vf_instance_t* vf, int request,any_t* data) { UNUSED(vf); - MSG_DBG2("vf_control: %u\n",request); + mpxp_dbg2<<"vf_control: "<<request<<std::endl; switch(request){ case VFCTRL_SET_EQUALIZER: { vf_equalizer_t *eq=reinterpret_cast<vf_equalizer_t*>(data); @@ -97,7 +100,7 @@ dri_surface_cap_t dcaps; int rflags; uint32_t flags=mpxp_context().video().output->query_format(&fmt,w,h); - MSG_DBG2("[vf_vo2] %i=query_format(%s)\n",flags,vo_format_name(fmt)); + mpxp_dbg2<<"[vf_vo2] "<<flags<<"=query_format("<<vo_format_name(fmt)<<")"<<std::endl; rflags=0; UNUSED(vf); if(flags) { @@ -121,15 +124,15 @@ if(retval==MPXP_Ok) { mpi->flags |= MP_IMGFLAG_FINAL|MP_IMGFLAG_DIRECT; if(finalize) mpi->flags |= MP_IMGFLAG_FINALIZED; - MSG_DBG2("vf_vo_get_image was called successfully\n"); - } - MSG_DBG2("vf_vo_get_image was called failed\n"); + mpxp_dbg2<<"vf_vo_get_image was called successfully"<<std::endl; + } else mpxp_dbg2<<"vf_vo_get_image was called failed"<<std::endl; } static int __FASTCALL__ put_slice(vf_instance_t* vf, mp_image_t *mpi){ if(!vo_config_count) return 0; // vo not configured? if(!(mpi->flags & MP_IMGFLAG_FINAL) || (vf_first(vf)==vf && !(mpi->flags & MP_IMGFLAG_RENDERED))) { - MSG_DBG2("vf_vo_put_slice was called(%u): %u %u %u %u\n",mpi->xp_idx,mpi->x,mpi->y,mpi->w,mpi->h); + mpxp_dbg2<<"vf_vo_put_slice was called(" + <<mpi->xp_idx<<"): "<<mpi->x<<" "<<mpi->y<<" "<<mpi->w<<" "<<mpi->h<<std::endl; mpxp_context().video().output->draw_slice(mpi); } return 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |