123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915 |
- diff --git a/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp b/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
- index 3077276..af9afd2 100644
- --- a/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
- +++ b/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp
- @@ -39,7 +39,7 @@ inline tss_slots* get_slots()
- slots = static_cast<tss_slots*>( pthread_getspecific(tss_data_native_key()));
- if (slots == 0)
- {
- - std::auto_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
- + std::unique_ptr<tss_slots> temp( new_object_ensure_delete<tss_slots>() );
- // pre-allocate a few elems, so that we'll be fast
- temp->resize(BOOST_LOG_TSS_SLOTS_SIZE);
-
- diff --git a/src/mbase/project/media.cpp b/src/mbase/project/media.cpp
- index 81e44d2..5f9e4f6 100644
- --- a/src/mbase/project/media.cpp
- +++ b/src/mbase/project/media.cpp
- @@ -58,7 +58,9 @@ void StorageMD::MakeByPath(const std::string& path, bool cnv_to_utf8,
-
- std::string MakeAutoName(const std::string& str, int old_sz)
- {
- - return (str::stream() << str << " " << old_sz+1).str();
- + str::stream ss;
- + ss << str << " " << old_sz+1;
- + return ss.str();
- }
-
- void VideoMD::AddChapter(ChapterItem chp)
- diff --git a/src/mbase/project/menu.cpp b/src/mbase/project/menu.cpp
- index 1f25817..94b8755 100644
- --- a/src/mbase/project/menu.cpp
- +++ b/src/mbase/project/menu.cpp
- @@ -166,7 +166,9 @@ void MenuMD::SerializeImpl(Archieve& ar)
- static std::string MakeObjectPath(int idx, const char* type)
- {
- ASSERT( idx != NO_HNDL );
- - return (str::stream() << type << "." << idx).str();
- + str::stream ss;
- + ss << type << "." << idx;
- + return ss.str();
- }
-
- std::string GetMediaRef(MediaItem mi)
- @@ -197,7 +199,9 @@ class RefMaker: public ObjVisitor
- void RefMaker::Visit(VideoChapterMD& obj)
- {
- refStr = GetMediaRef(obj.owner);
- - refStr += (str::stream() << "." << ChapterPosInt(&obj)).str();
- + str::stream ss;
- + ss << "." << ChapterPosInt(&obj);
- + refStr += ss.str();
- }
-
- std::string Media2Ref(MediaItem mi)
- @@ -233,8 +237,9 @@ int GetRefIndex(const char*& str)
-
- std::string ThrowBadIndex(const char* prefix, int idx)
- {
- - throw std::runtime_error(
- - (str::stream() << prefix << idx).str() );
- + str::stream ss;
- + ss << prefix << idx;
- + throw std::runtime_error(ss.str());
- }
-
- MediaItem TryGetMedia(int idx)
- diff --git a/src/mbase/project/serialization.h b/src/mbase/project/serialization.h
- index ff5b7a9..547c438 100644
- --- a/src/mbase/project/serialization.h
- +++ b/src/mbase/project/serialization.h
- @@ -75,7 +75,9 @@ namespace ToString
- template<typename T>
- std::string MakeString(const T& t)
- {
- - return (str::stream() << t).str();
- + str::stream ss;
- + ss << t;
- + return ss.str();
- }
-
- template<typename T>
- diff --git a/src/mbase/project/srl-common.cpp b/src/mbase/project/srl-common.cpp
- index c2c92b5..ab1c62b 100644
- --- a/src/mbase/project/srl-common.cpp
- +++ b/src/mbase/project/srl-common.cpp
- @@ -36,10 +36,12 @@ void Serialize(Archieve& ar, MenuParams& mp)
- std::string ToString(const RGBA::Pixel& pxl)
- {
- using Mpeg::set_hms;
- - return (str::stream("#") << std::hex
- - << set_hms() << (int)pxl.red
- - << set_hms() << (int)pxl.green
- - << set_hms() << (int)pxl.blue << (int)pxl.alpha).str();
- + str::stream ss ("#");
- + ss << std::hex
- + << set_hms() << (int)pxl.red
- + << set_hms() << (int)pxl.green
- + << set_hms() << (int)pxl.blue << (int)pxl.alpha;
- + return ss.str();
- }
-
- // как pango_color_parse()
- diff --git a/src/mbase/project/srl-db.cpp b/src/mbase/project/srl-db.cpp
- index c3babec..e50a523 100644
- --- a/src/mbase/project/srl-db.cpp
- +++ b/src/mbase/project/srl-db.cpp
- @@ -102,7 +102,7 @@ void DbSerializeProjectImpl(Archieve& ar)
- }
-
- void ADatabase::Load(const std::string& fname,
- - const std::string& cur_dir) throw (std::exception)
- + const std::string& cur_dir)
- {
- try
- {
- diff --git a/src/mbase/project/table.cpp b/src/mbase/project/table.cpp
- index 455c334..3e52383 100644
- --- a/src/mbase/project/table.cpp
- +++ b/src/mbase/project/table.cpp
- @@ -29,6 +29,7 @@
- #include "theme.h"
-
- #include <mbase/resources.h>
- +#include <boost/filesystem/directory.hpp>
-
-
- const char* APROJECT_VERSION = "1.2.4";
- @@ -154,7 +155,7 @@ NameValueT<Media> LoadMedia(Archieve& ar, MediaList& md_list)
- void SerializePath(Archieve& ar, const char* tag_name, std::string& fpath)
- {
- //ar & NameValue("Path", mdPath);
- - fs::path rel_to_dir = fs::path(AData().GetProjectFName()).branch_path();
- + fs::path rel_to_dir = fs::path(AData().GetProjectFName()).parent_path();
- if( ar.IsLoad() )
- {
- ar >> NameValue(tag_name, fpath);
- @@ -162,7 +163,7 @@ void SerializePath(Archieve& ar, const char* tag_name, std::string& fpath)
- if( !fpath.empty() )
- {
- fs::path pth(fpath);
- - if( !pth.is_complete() )
- + if( !pth.is_absolute() )
- fpath = (rel_to_dir/fpath).string();
- }
- }
- diff --git a/src/mbase/project/table.h b/src/mbase/project/table.h
- index 7c73085..cc7e36d 100644
- --- a/src/mbase/project/table.h
- +++ b/src/mbase/project/table.h
- @@ -128,7 +128,7 @@ class ADatabase: public Singleton<ADatabase>, public DataWare
- void ClearSettings();
-
- void Load(const std::string& fname,
- - const std::string& cur_dir = std::string()) throw (std::exception);
- + const std::string& cur_dir = std::string());
- bool Save();
-
- bool SaveAs(const std::string& fname,
- diff --git a/src/mbase/project/tests/test_table.cpp b/src/mbase/project/tests/test_table.cpp
- index f8a1c20..3e7115a 100644
- --- a/src/mbase/project/tests/test_table.cpp
- +++ b/src/mbase/project/tests/test_table.cpp
- @@ -129,7 +129,7 @@ BOOST_AUTO_TEST_CASE( TestMediaList )
- // проверка чтения/записи путей
- boost::intrusive_ptr<StillImageMD> pict2 = ptr::dynamic_pointer_cast<StillImageMD>(ml[2]);
- fs::path pth = pict2->GetPath();
- - BOOST_CHECK( pth.is_complete() );
- + BOOST_CHECK( pth.is_absolute() );
- BOOST_CHECK( fs::exists(pth) );
-
- // проверка ссылок
- diff --git a/src/mdemux/dvdread.cpp b/src/mdemux/dvdread.cpp
- index d8392b1..12fcae6 100644
- --- a/src/mdemux/dvdread.cpp
- +++ b/src/mdemux/dvdread.cpp
- @@ -35,8 +35,10 @@ namespace DVD {
- std::string VobFName(VobPos& pos, const std::string& suffix)
- {
- using Mpeg::set_hms;
- - return (str::stream("Video") << set_hms() << int(pos.Vts())
- - << "-" << set_hms() << pos.VobId() << suffix << ".vob").str();
- + str::stream ss ("Video");
- + ss << set_hms() << int(pos.Vts())
- + << "-" << set_hms() << pos.VobId() << suffix << ".vob";
- + return ss.str();
- }
-
- typedef boost::function<void(int, double)> VobTimeFnr;
- @@ -282,9 +284,11 @@ VobPtr FindVob(VobArr& dvd_vobs, uint8_t vts, uint16_t vob_id)
- static void TryDVDReadBlocks(dvd_file_t* file, int off, size_t cnt, char* buf)
- {
- int real_cnt = DVDReadBlocks(file, off, cnt, (unsigned char*)buf);
- - if( (int)cnt != real_cnt )
- - throw std::runtime_error( (str::stream() << real_cnt <<
- - " != DVDReadBlocks(" << cnt << ")").str() );
- + if( (int)cnt != real_cnt ) {
- + str::stream ss;
- + ss << real_cnt << " != DVDReadBlocks(" << cnt << ")";
- + throw std::runtime_error( ss.str() );
- + }
- }
-
- // размер буфера должен соответствовать читаемому диапазону
- diff --git a/src/mdemux/mpeg2demux.cpp b/src/mdemux/mpeg2demux.cpp
- index bb7b1b1..ecb3774 100644
- --- a/src/mdemux/mpeg2demux.cpp
- +++ b/src/mdemux/mpeg2demux.cpp
- @@ -71,7 +71,9 @@ bool DemuxSvc::Filter(uint32_t code)
-
- static std::string MakePESKey(int id, const char* ext)
- {
- - return (str::stream() << id << "." << ext).str();
- + str::stream ss;
- + ss << id << "." << ext;
- + return ss.str();
- }
-
- static bool ReadPart(io::stream& strm, uint8_t* buf, int sz, int& len)
- @@ -110,7 +112,9 @@ static std::string MakeKeyNameForLPCM(int track, uint8_t inf)
- ASSERT(0);
- }
-
- - std::string header_str = (str::stream() << sample_rate << ":" << channels << ":" << bps << ".lpcm").str();
- + str::stream ss;
- + ss << sample_rate << ":" << channels << ":" << bps << ".lpcm";
- + std::string header_str = ss.str();
- return MakePESKey(track, header_str.c_str());
- }
-
- diff --git a/src/mdemux/seek.cpp b/src/mdemux/seek.cpp
- index e46658f..f0ce934 100644
- --- a/src/mdemux/seek.cpp
- +++ b/src/mdemux/seek.cpp
- @@ -37,8 +37,10 @@ std::string SecToHMS(double len, bool round_sec)
- int hh = min / 60;
- int mm = min - hh*60;
-
- - return (str::stream() << set_hms() << hh << ":"
- - << set_hms() << mm << ":" << set_hms() << ss).str();
- + str::stream strss;
- + strss << set_hms() << hh << ":"
- + << set_hms() << mm << ":" << set_hms() << ss;
- + return strss.str();
- }
-
- bool MediaInfo::InitBegin(VideoLine& vl)
- diff --git a/src/mgui/author/burn.cpp b/src/mgui/author/burn.cpp
- index ddfad0a..578429e 100644
- --- a/src/mgui/author/burn.cpp
- +++ b/src/mgui/author/burn.cpp
- @@ -85,7 +85,7 @@ BurnData& GetInitedBD()
- return bd;
- }
-
- -re::pattern WriteSpeed_RE("Write Speed #"RG_NUM":"RG_SPS RG_NUM"\\."RG_NUM "x1385");
- +re::pattern WriteSpeed_RE("Write Speed #" RG_NUM ":" RG_SPS RG_NUM "\\." RG_NUM "x1385");
-
- RefPtr<Gtk::ListStore> sp_store;
-
- @@ -253,7 +253,7 @@ DVDInfo ParseDVDInfo(bool is_good, const std::string& out_info)
- }
- else
- {
- - static re::pattern media_type_re("Mounted Media:"RG_SPS"[0-9A-F]+h, ([^ \n]+)");
- + static re::pattern media_type_re("Mounted Media:" RG_SPS "[0-9A-F]+h, ([^ \n]+)");
- re::match_results what;
-
- bool is_found = re::search(out_info, what, media_type_re);
- @@ -277,7 +277,7 @@ DVDInfo ParseDVDInfo(bool is_good, const std::string& out_info)
- // isBlank
- if( res != dvdOTHER )
- {
- - static re::pattern media_status_re("Disc status:"RG_SPS"([a-z]+)\n");
- + static re::pattern media_status_re("Disc status:" RG_SPS "([a-z]+)\n");
- bool is_found = re::search(out_info, what, media_status_re);
- ASSERT_RTL( is_found );
-
- diff --git a/src/mgui/author/execute.cpp b/src/mgui/author/execute.cpp
- index 5b2330c..e308552 100644
- --- a/src/mgui/author/execute.cpp
- +++ b/src/mgui/author/execute.cpp
- @@ -64,9 +64,9 @@ static void InitFoundStageTag(RefPtr<Gtk::TextTag> tag)
- tag->property_foreground() = "darkgreen";
- }
-
- -re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor"RG_EW ".*-x"RG_EW RG_SPS RG_BW"DVDAuthor\\.xml"RG_EW);
- -re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video"RG_EW ".*>.*"RG_BW"dvd.iso"RG_EW);
- -re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs"RG_EW ".*-dvd-compat"RG_EW ".*-dvd-video"RG_EW);
- +re::pattern DVDAuthorRE(RG_CMD_BEG"dvdauthor" RG_EW ".*-x" RG_EW RG_SPS RG_BW "DVDAuthor\\.xml" RG_EW);
- +re::pattern MkIsoFsRE(RG_CMD_BEG MK_ISO_CMD RG_EW ".*-dvd-video" RG_EW ".*>.*" RG_BW "dvd.iso" RG_EW);
- +re::pattern GrowIsoFsRE(RG_CMD_BEG"growisofs" RG_EW ".*-dvd-compat" RG_EW ".*-dvd-video" RG_EW);
-
- //static void PrintMatchResults(const re::match_results& what)
- //{
- @@ -94,7 +94,7 @@ class MkIsoFsPP: public ProgressParser
- virtual void Filter(const std::string& line);
- };
-
- -re::pattern MkIsoFsPercent_RE( RG_FLT"?% done");
- +re::pattern MkIsoFsPercent_RE( RG_FLT "?% done");
-
- void MkIsoFsPP::Filter(const std::string& line)
- {
- @@ -126,8 +126,8 @@ class DVDAuthorPP: public ProgressParser
- bool fixStage;
- };
-
- -re::pattern DVDAuthorVOB_RE( "^STAT: VOBU "RG_NUM" at "RG_NUM"MB");
- -re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at "RG_NUM"MB \\("RG_NUM"/"RG_NUM", "RG_NUM"%\\)");
- +re::pattern DVDAuthorVOB_RE( "^STAT: VOBU " RG_NUM " at " RG_NUM "MB");
- +re::pattern DVDAuthorFix_RE( "^STAT: fixing VOBU at " RG_NUM "MB \\(" RG_NUM "/" RG_NUM ", " RG_NUM "%\\)");
-
- void DVDAuthorPP::Filter(const std::string& line)
- {
- @@ -157,7 +157,7 @@ void DVDAuthorPP::Filter(const std::string& line)
- if( p )
- of.SetProgress(p);
-
- - static re::pattern ch_error_re("ERR:.*Cannot jump to chapter "RG_NUM" of title "RG_NUM", only "RG_NUM" exist");
- + static re::pattern ch_error_re("ERR:.*Cannot jump to chapter " RG_NUM " of title " RG_NUM ", only " RG_NUM " exist");
- if( re::search(line, what, ch_error_re) )
- {
- std::string& err_str = of.firstError;
- diff --git a/src/mgui/author/render.cpp b/src/mgui/author/render.cpp
- index 1ffbca2..81720d7 100644
- --- a/src/mgui/author/render.cpp
- +++ b/src/mgui/author/render.cpp
- @@ -866,7 +866,7 @@ std::string FFmpegPostArgs(const std::string& out_fname, bool is_4_3, bool is_pa
- //
- // :KLUDGE: (только) в ffmpeg, avformat 53.13.0, поменяли . на : => надо
- // самим открывать файл и узнавать индекс!
- - static re::pattern audio_idx("Stream #"RG_NUM"[\\.|:]"RG_NUM".*Audio:");
- + static re::pattern audio_idx("Stream #" RG_NUM "[\\.|:]" RG_NUM ".*Audio:");
-
- re::match_results what;
- // флаг означает, что перевод строки не может быть точкой
- @@ -1221,17 +1221,17 @@ void TestFFmpegForDVDEncoding(const std::string& conts)
- {
- CheckNoCodecs(CheckForCodecList(conts));
-
- - static re::pattern dvd_format("^ .E dvd"RG_EW);
- + static re::pattern dvd_format("^ .E dvd" RG_EW);
- CheckStrippedFFmpeg(dvd_format, conts, "dvd format");
-
- // :TRICKY: с версии libavcodec 54 при выводе начальный пробел не ставят => поэтому ?
- // ("спасибо" Anton Khirnov за очередное "улучшение")
- #define _CPP_ "^ ?"
- - static re::pattern mpeg2video_codec(_CPP_".EV... mpeg2video"RG_EW);
- + static re::pattern mpeg2video_codec(_CPP_ ".EV... mpeg2video" RG_EW);
- CheckStrippedFFmpeg(mpeg2video_codec, conts, "mpeg2 video encoder");
-
- // по факту ffmpeg всегда использует ac3, однако mp2 тоже возможен
- - static re::pattern ac3_codec(_CPP_".EA... ac3"RG_EW);
- + static re::pattern ac3_codec(_CPP_ ".EA... ac3" RG_EW);
- CheckStrippedFFmpeg(ac3_codec, conts, "ac3 audio encoder");
- #undef _CPP_
- }
- @@ -1241,7 +1241,7 @@ TripleVersion FindAVVersion(const std::string& conts, const char* avlib_name)
- // * ищем версию libavfilter
- // пример: " libavfilter 0. 4. 0 / "
- #define RG_PADNUM RG_SPS RG_NUM
- - std::string reg_str = boost::format(RG_BW"%1%"RG_PADNUM"\\."RG_PADNUM"\\."RG_PADNUM" / ")
- + std::string reg_str = boost::format(RG_BW "%1%" RG_PADNUM "\\." RG_PADNUM "\\." RG_PADNUM " / ")
- % avlib_name % bf::stop;
- re::pattern avfilter_version(reg_str.c_str());
- return FindVersion(conts, avfilter_version, AVCnvBin(), avlib_name);
- @@ -1307,7 +1307,9 @@ FFmpegVersion CheckFFDVDEncoding()
-
- bool RenderMainPicture(const std::string& out_dir, Menu mn, int i)
- {
- - Author::Info((str::stream() << "Rendering menu \"" << mn->mdName << "\" ...").str());
- + str::stream ss;
- + ss << "Rendering menu \"" << mn->mdName << "\" ...";
- + Author::Info(ss.str());
- const std::string mn_dir = MakeMenuPath(out_dir, mn, i);
-
- if( IsMotion(mn) )
- diff --git a/src/mgui/author/script.cpp b/src/mgui/author/script.cpp
- index ccfd32f..f2b1c7e 100644
- --- a/src/mgui/author/script.cpp
- +++ b/src/mgui/author/script.cpp
- @@ -130,7 +130,9 @@ static std::string MakeFPTarget(MediaItem mi)
- {
- VideoItem vi = IsVideo(mi);
- ASSERT( vi );
- - str = (str::stream() << "title " << GetAuthorNumber(vi)).str();
- + str::stream ss;
- + ss << "title " << GetAuthorNumber(vi);
- + str = ss.str();
- }
- return str;
- }
- @@ -179,7 +181,9 @@ void TargetCommandVis::Visit(VideoChapterMD& obj)
- // Потому: для удоства пользователей даем создавать нулевую главу, разрешая это здесь
- // (однако доп. нулевые главы будут приводить к ошибке Cannot jump to chapter N ... only M exist)
- int c_num = ChapterPosInt(&obj) + (owner->List()[0]->chpTime ? 2 : 1) ;
- - res = (str::stream() << "jump title " << v_num << " chapter " << c_num << ";").str();
- + str::stream ss;
- + ss << "jump title " << v_num << " chapter " << c_num << ";";
- + res = ss.str();
- }
-
- static std::string MakeButtonJump(MediaItem mi, bool vts_domain)
- @@ -204,7 +208,9 @@ std::string MenuAuthorDir(Menu mn, int idx, bool cnv_from_utf8)
- if( !fs::native(name) )
- name = "Menu";
-
- - std::string fname = (str::stream() << idx+1 << "." << name).str();
- + str::stream ss;
- + ss << idx+1 << "." << name;
- + std::string fname = ss.str();
- return cnv_from_utf8 ? ConvertPathFromUtf8(fname) : fname ;
- }
-
- @@ -626,7 +632,9 @@ static void CopyRootFile(const std::string& fname, const std::string& out_dir)
- void AuthorSectionInfo(const std::string& str)
- {
- Author::Info("\n#", false);
- - Author::Info((str::stream() << "# " << str).str(), false);
- + str::stream ss;
- + ss << "# " << str;
- + Author::Info(ss.str(), false);
- Author::Info("#\n", false);
- }
-
- @@ -676,7 +684,7 @@ static void CheckSpumuxFontFile()
- if( !fs::exists(font_path) )
- {
- std::string err_str;
- - if( !CreateDirs(font_path.branch_path(), err_str) )
- + if( !CreateDirs(font_path.parent_path(), err_str) )
- Error(err_str.c_str());
- fs::copy_file(DataDirPath("copy-n-paste/FreeSans.ttf"), font_path);
- }
- @@ -755,9 +763,9 @@ static void CalcTransPercent(double cur_dur, Job& job, JobData& jd, double full_
- // ffmpeg выводит статистику первого создаваемого файла каждые полсекунды,
- // см. print_report() (при verbose=1, по умолчанию)
- // Формат размера: "size=%8.0fkB"
- -re::pattern FFmpegSizePat( "size= *"RG_NUM"kB");
- +re::pattern FFmpegSizePat( "size= *" RG_NUM "kB");
- // Формат длительности: "time=%0.2f"
- -re::pattern FFmpegDurPat( "time="RG_FLT);
- +re::pattern FFmpegDurPat( "time=" RG_FLT);
-
- static void OnTranscodePrintParse(const char* dat, int sz, const PercentFunctor& fnr)
- {
- @@ -787,7 +795,7 @@ static void OnTranscodePrintParse(const char* dat, int sz, const PercentFunctor&
-
- // Формат длительности для ffmpeg c коммита dd471070: "time=%02d:%02d:%02d.%02d"
- // Образец: frame= 208 fps= 58 q=2.0 size= 476kB time=00:00:08.44 bitrate= 461.9kbits/s dup=1 drop=0
- -re::pattern FFmpegNewDurPat( "time="RG_NUM":"RG_NUM":"RG_FLT);
- +re::pattern FFmpegNewDurPat( "time=" RG_NUM ":" RG_NUM ":" RG_FLT);
-
- static void OnTranscodeHMSParse(const char* dat, int sz, const PercentFunctor& fnr)
- {
- @@ -1082,7 +1090,9 @@ static void TranscodeVideos(int pass, const std::string& out_dir)
-
- static void AuthorImpl(const std::string& out_dir)
- {
- - AuthorSectionInfo((str::stream() << "Build DVD-Video in folder: " << out_dir).str());
- + str::stream ss;
- + ss << "Build DVD-Video in folder: " << out_dir;
- + AuthorSectionInfo(ss.str());
- IteratePendingEvents();
-
- IndexVideosForAuthoring();
- @@ -1136,7 +1146,7 @@ static void AuthorImpl(const std::string& out_dir)
- // 2) парсер dvdauthor не любит незнакомые ему атрибуты => spumux < 0.7 не работает
- std::string help_str;
- PipeOutput("spumux -h", help_str);
- - static re::pattern spumux_version("DVDAuthor::spumux, version "RG_NUM"\\."RG_NUM"\\."RG_NUM"\\.\n");
- + static re::pattern spumux_version("DVDAuthor::spumux, version " RG_NUM "\\." RG_NUM "\\." RG_NUM "\\.\n");
- if( IsVersionGE(FindVersion(help_str, spumux_version, "spumux"), TripleVersion(0, 7, 0)) )
- AddFormatAttr(sp);
-
- diff --git a/src/mgui/dvdimport.cpp b/src/mgui/dvdimport.cpp
- index 44dcdec..fc9b965 100644
- --- a/src/mgui/dvdimport.cpp
- +++ b/src/mgui/dvdimport.cpp
- @@ -211,10 +211,11 @@ static void OnPreparePage(ImportData& id)
- row[VF().selState] = false;
- row[VF().name] = VobFName(vob.pos);
- row[VF().thumbnail] = vob.aspect == af4_3 ? pix4_3 : pix16_9;
- - std::string desc = (str::stream(Mpeg::SecToHMS(vob.tmLen, true)) << ", "
- - << vob.sz.x << "x" << vob.sz.y << ", "
- - << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", "
- - << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB")).str();
- + str::stream ss (Mpeg::SecToHMS(vob.tmLen, true));
- + ss << ", " << vob.sz.x << "x" << vob.sz.y << ", "
- + << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", "
- + << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB");
- + std::string desc = ss.str();
- row[VF().desc] = desc;
- }
- CompleteSelection(id, false);
- @@ -275,7 +276,7 @@ static ReaderPtr OpenDVD(const std::string& dvd_path, ImportData& id)
- id.errLbl.hide();
-
- id.reader = rd;
- - SetCurPageComplete(id.ast, id.reader);
- + SetCurPageComplete(id.ast, bool(id.reader));
-
- return rd;
- }
- diff --git a/src/mgui/editor/toolbar.cpp b/src/mgui/editor/toolbar.cpp
- index 6a1894c..a039c3a 100644
- --- a/src/mgui/editor/toolbar.cpp
- +++ b/src/mgui/editor/toolbar.cpp
- @@ -45,6 +45,8 @@
- #include <mlib/sdk/logger.h>
- #include <mlib/range/enumerate.h>
-
- +#include <boost/filesystem/directory.hpp>
- +
- namespace Editor
- {
-
- diff --git a/src/mgui/ffviewer.cpp b/src/mgui/ffviewer.cpp
- index 64ea813..a8dc6cb 100644
- --- a/src/mgui/ffviewer.cpp
- +++ b/src/mgui/ffviewer.cpp
- @@ -36,6 +36,10 @@
- #define AVFORMAT_54
- #endif
-
- +C_LINKAGE_BEGIN
- +#include <libavutil/imgutils.h>
- +C_LINKAGE_END
- +
- // разрабы libav считают себя самыми умными и потому решили
- // закрыть простым смертным доступ к ffurl_register_protocol()
- // (бывшая av_register_protocol2()),- https://bugzilla.libav.org/show_bug.cgi?id=224
- @@ -74,7 +78,7 @@ C_LINKAGE_BEGIN
-
- typedef struct AVCodecTag {
- #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,39,00)
- - enum CodecID id;
- + enum AVCodecID id;
- #else
- int id;
- #endif
- @@ -82,14 +86,14 @@ typedef struct AVCodecTag {
- } AVCodecTag;
-
- #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,34,00)
- -static uint FFCodecID2Tag(CodecID codec_id)
- +static uint FFCodecID2Tag(AVCodecID codec_id)
- {
- unsigned int ff_codec_get_tag(const AVCodecTag *tags, int id);
- extern const AVCodecTag ff_codec_bmp_tags[];
- return ff_codec_get_tag(ff_codec_bmp_tags, codec_id);
- }
- #else
- -static uint FFCodecID2Tag(CodecID codec_id)
- +static uint FFCodecID2Tag(AVCodecID codec_id)
- {
- unsigned int codec_get_tag(const AVCodecTag *tags, int id);
- extern const AVCodecTag codec_bmp_tags[];
- @@ -400,7 +404,7 @@ static unsigned char GetChar(uint tag, int bit_begin)
- return (tag>>bit_begin) & 0xFF;
- }
-
- -static std::string CodecID2Str(CodecID codec_id)
- +static std::string CodecID2Str(AVCodecID codec_id)
- {
- #ifdef _MSC_VER
- std::string tag_str = boost::format("%1%") % codec_id % bf::stop;
- @@ -807,7 +811,7 @@ static void DoVideoDecode(FFViewer& ffv, int& got_picture, AVPacket* pkt)
- #ifdef AVFRAME_INIT_CHANGE
- // avcodec_get_frame_defaults() перенесли в avcodec_decode_video2()
- #else
- - avcodec_get_frame_defaults(&picture); // ffmpeg.c очищает каждый раз
- + av_frame_unref (&picture);
- #endif
-
- #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,25,00)
- diff --git a/src/mgui/mux.cpp b/src/mgui/mux.cpp
- index 427058e..885dde7 100644
- --- a/src/mgui/mux.cpp
- +++ b/src/mgui/mux.cpp
- @@ -162,7 +162,7 @@ static void OnVideoSelected(Gtk::FileChooserButton& v_btn, Gtk::FileChooserButto
- fs::path pth = GetFilename(v_btn);
- if( pth.empty() )
- return;
- - std::string folder = pth.branch_path().string();
- + std::string folder = pth.parent_path().string();
-
- if( a_btn.get_filename().empty() )
- a_btn.set_current_folder(folder);
- diff --git a/src/mgui/project/add.cpp b/src/mgui/project/add.cpp
- index 9454578..e8ae94f 100644
- --- a/src/mgui/project/add.cpp
- +++ b/src/mgui/project/add.cpp
- @@ -86,7 +86,9 @@ static void SetImportError(ErrorDesc& ed, bool is_good, const std::string& out_s
-
- static std::string FpsToStr(const Point& frate)
- {
- - return (str::stream() << (double)frate.x/frate.y).str();
- + str::stream ss;
- + ss << (double)frate.x/frate.y;
- + return ss.str();
- }
-
- static std::string TVTypeStr(bool is_ntsc)
- @@ -163,7 +165,9 @@ void CheckVideoFormat(ErrorDesc& ed, const Mpeg::SequenceData& vid, bool is_ntsc
- // *
- bool is_aspect_ok = vid.sarCode == af4_3 || vid.sarCode == af16_9;
- Point aspect = vid.SizeAspect();
- - std::string aspect_str = (str::stream() << aspect.x << ':' << aspect.y).str();
- + str::stream ss;
- + ss << aspect.x << ':' << aspect.y;
- + std::string aspect_str = ss.str();
- SetImportError(ed, is_aspect_ok,
- std::string(_("Aspect ratio")) + ": \t" + MarkError(aspect_str, is_aspect_ok),
- BF_(Descriptions[2]) % tv_type % bf::stop);
- @@ -479,7 +483,7 @@ void TryAddMedias(const Str::List& paths, MediaBrowser& brw,
- MessageBox(BF_("The file \"%1%\" looks like VOB from DVD.\nRun import?") % leaf % bf::stop,
- Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL) == Gtk::RESPONSE_OK )
- {
- - DVD::RunImport(*GetTopWindow(brw), pth.branch_path().string());
- + DVD::RunImport(*GetTopWindow(brw), pth.parent_path().string());
- return;
- }
- }
- diff --git a/src/mgui/project/browser.cpp b/src/mgui/project/browser.cpp
- index 02d95a1..47b730b 100644
- --- a/src/mgui/project/browser.cpp
- +++ b/src/mgui/project/browser.cpp
- @@ -328,7 +328,7 @@ Gtk::HButtonBox& CreateMListButtonBox()
- return hb;
- }
-
- -std::string MediaItemDnDTVType() { return "DnDTreeView<"DND_MI_NAME">"; }
- +std::string MediaItemDnDTVType() { return "DnDTreeView<" DND_MI_NAME ">"; }
-
- void SetupBrowser(ObjectBrowser& brw, int dnd_column, bool is_media_brw)
- {
- diff --git a/src/mgui/project/mconstructor.cpp b/src/mgui/project/mconstructor.cpp
- index 3b56587..754f9f8 100644
- --- a/src/mgui/project/mconstructor.cpp
- +++ b/src/mgui/project/mconstructor.cpp
- @@ -52,6 +52,8 @@
- // COPY_N_PASTE_ETALON из go-file.c, проект Gnumeric, http://projects.gnome.org/gnumeric/
- //
-
- +#include <boost/filesystem/directory.hpp>
- +
- #ifndef GOFFICE_WITH_GNOME
- static char *
- check_program (char const *prog)
- diff --git a/src/mgui/project/serialize.cpp b/src/mgui/project/serialize.cpp
- index a5366aa..03583ec 100644
- --- a/src/mgui/project/serialize.cpp
- +++ b/src/mgui/project/serialize.cpp
- @@ -73,7 +73,7 @@ static std::string MakeProjectTitle(bool with_path_breakdown = false)
- fs::path full_path(db.GetProjectFName());
- std::string res_str = fs::name_str(full_path);
- if( with_path_breakdown )
- - res_str += " (" + full_path.branch_path().string() + ")";
- + res_str += " (" + full_path.parent_path().string() + ")";
- return res_str;
- }
-
- diff --git a/src/mgui/sdk/cairo_utils.cpp b/src/mgui/sdk/cairo_utils.cpp
- index 14f11be..10c1f97 100644
- --- a/src/mgui/sdk/cairo_utils.cpp
- +++ b/src/mgui/sdk/cairo_utils.cpp
- @@ -27,6 +27,8 @@
- std::string MakeSVGFilename(const char* prefix)
- {
- static int idx = 1;
- - return (str::stream() << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg" ).str();
- + str::stream ss;
- + ss << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg";
- + return ss.str();
- }
-
- diff --git a/src/mgui/timeline/layout.cpp b/src/mgui/timeline/layout.cpp
- index c139626..b5b5ca7 100644
- --- a/src/mgui/timeline/layout.cpp
- +++ b/src/mgui/timeline/layout.cpp
- @@ -600,8 +600,10 @@ time4_t FramesToTime(int cnt, double fps)
- void FramesToTime(std::string& str, int cnt, double fps)
- {
- time4_t t4 = FramesToTime(cnt, fps);
- - str = (str::stream() << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":"
- - << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff).str();
- + str::stream ss;
- + ss << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":"
- + << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff;
- + str = ss.str();
- }
-
- } // namespace TimeLine
- diff --git a/src/mgui/timeline/select.cpp b/src/mgui/timeline/select.cpp
- index 9d8ec5a..337ada6 100644
- --- a/src/mgui/timeline/select.cpp
- +++ b/src/mgui/timeline/select.cpp
- @@ -152,7 +152,7 @@ static void SaveFrame(DAMonitor& mon)
-
- mon.FramePixbuf()->save(fnam, ext);
-
- - SaveFrameDir() = fs::path(fnam).branch_path().string();
- + SaveFrameDir() = fs::path(fnam).parent_path().string();
- if( add_btn.get_active() )
- Project::TryAddMediaQuiet(fnam, "SaveFrame");
- }
- diff --git a/src/mgui/win_utils.cpp b/src/mgui/win_utils.cpp
- index e135f1a..beafca8 100644
- --- a/src/mgui/win_utils.cpp
- +++ b/src/mgui/win_utils.cpp
- @@ -132,7 +132,9 @@ void Scale(RefPtr<Context> cr, RefPtr<ImageSurface> src,
-
- std::string ColorToString(const unsigned int rgba)
- {
- - return (str::stream() << std::hex << (rgba >> 8)).str();
- + str::stream ss;
- + ss << std::hex << (rgba >> 8);
- + return ss.str();
- }
-
- CR::Color GetBGColor(Gtk::Widget& wdg)
- diff --git a/src/mlib/filesystem.cpp b/src/mlib/filesystem.cpp
- index 7ae7162..278dfc5 100644
- --- a/src/mlib/filesystem.cpp
- +++ b/src/mlib/filesystem.cpp
- @@ -30,6 +30,7 @@
- #if BOOST_MINOR_VERSION >= 51
- #define BOOST_FS_3 boost::filesystem
- #include <boost/filesystem/path_traits.hpp> // boost::filesystem::convert()
- +#include <boost/filesystem/directory.hpp>
- #else
- #define BOOST_FS_3 boost::filesystem3
- #include <boost/filesystem/v3/path_traits.hpp>
- @@ -161,25 +162,16 @@ namespace Project
-
- fs::path MakeAbsolutePath(const fs::path& pth, const fs::path& cur_dir)
- {
- - fs::path res;
- -
- - if( pth.is_complete() )
- - res = pth;
- - else
- - {
- - fs::path dir = cur_dir.empty() ? fs::current_path() : cur_dir ;
- - res = dir/pth;
- - }
- - return res.normalize();
- + return absolute(pth, cur_dir);
- }
-
- // оба аргумента должны быть абсолютными путями
- bool MakeRelativeToDir(fs::path& pth, fs::path dir)
- {
- - pth.normalize();
- - dir.normalize();
- - ASSERT( pth.is_complete() );
- - ASSERT( dir.is_complete() );
- + pth = canonical(pth);
- + dir = canonical(dir);
- + ASSERT( pth.is_absolute() );
- + ASSERT( dir.is_absolute() );
-
- fs::path::iterator p_itr = pth.begin(), p_end = pth.end();
- fs::path::iterator d_itr = dir.begin(), d_end = dir.end();
- diff --git a/src/mlib/read_stream.h b/src/mlib/read_stream.h
- index 9806ae3..05c6e1f 100644
- --- a/src/mlib/read_stream.h
- +++ b/src/mlib/read_stream.h
- @@ -22,6 +22,8 @@
- #ifndef __MLIB_READ_STREAM_H__
- #define __MLIB_READ_STREAM_H__
-
- +#include <boost/mpl/bool.hpp>
- +
- #include "stream.h"
- #include "filesystem.h"
-
- diff --git a/src/mlib/regex.cpp b/src/mlib/regex.cpp
- index df98fdb..dc9ea62 100644
- --- a/src/mlib/regex.cpp
- +++ b/src/mlib/regex.cpp
- @@ -22,7 +22,7 @@
- #include "regex.h"
- #include "string.h"
-
- -#include <boost/regex.hpp>
- +#include <boost/regex/v4/regex.hpp>
-
- namespace re
- {
- diff --git a/src/mlib/regex.h b/src/mlib/regex.h
- index 4a18717..8da1214 100644
- --- a/src/mlib/regex.h
- +++ b/src/mlib/regex.h
- @@ -27,6 +27,7 @@
- #include <boost/regex/v4/regbase.hpp>
- #include <boost/regex/v4/match_flags.hpp>
-
- +#include <boost/mpl/bool.hpp>
- #include <mlib/ptr.h>
-
- #include <string>
- @@ -185,7 +186,7 @@ bool search(const std::string& s,
- #define RG_EW "\\>" // конец слова
- #define RG_SPS "[[:space:]]*" // пробелы
- #define RG_NUM "([0-9]+)" // число
- -#define RG_FLT RG_NUM"([\\.,]"RG_NUM")" // вещ. число, в паре с ExtractDouble()
- +#define RG_FLT RG_NUM "([\\.,]" RG_NUM ")" // вещ. число, в паре с ExtractDouble()
- #define RG_CMD_BEG RG_BW // "^"RG_SPS // начало команды
-
- bool ExtractDouble(double& val, const re::match_results& what, int idx = 1);
- diff --git a/src/mlib/sdk/bfs.h b/src/mlib/sdk/bfs.h
- index c12b5d0..6e172cc 100644
- --- a/src/mlib/sdk/bfs.h
- +++ b/src/mlib/sdk/bfs.h
- @@ -7,6 +7,7 @@
- //#define BOOST_FILESYSTEM_NO_DEPRECATED
-
- #include <boost/filesystem/path.hpp>
- +#include <boost/filesystem/exception.hpp>
- #include <boost/filesystem/operations.hpp>
- #include <boost/filesystem/convenience.hpp> // fs::create_directories()
-
- diff --git a/src/mlib/sdk/misc.cpp b/src/mlib/sdk/misc.cpp
- index 5d3f297..803187b 100644
- --- a/src/mlib/sdk/misc.cpp
- +++ b/src/mlib/sdk/misc.cpp
- @@ -173,12 +173,16 @@ std::string PointToStr(const Point& pnt)
- std::string Double2Str(double val)
- {
- //return boost::format("%1%") % val % bf::stop;
- - return (str::stream() << val).str();
- + str::stream ss;
- + ss << val;
- + return ss.str();
- }
-
- std::string Int2Str(int val)
- {
- - return (str::stream() << val).str();
- + str::stream ss;
- + ss << val;
- + return ss.str();
- }
-
- static bool ICaseMatch(const std::string& str, const std::string& pat_str)
- diff --git a/src/mlib/sdk/system.cpp b/src/mlib/sdk/system.cpp
- index 8d10e3f..e9508bd 100644
- --- a/src/mlib/sdk/system.cpp
- +++ b/src/mlib/sdk/system.cpp
- @@ -28,7 +28,9 @@
- int GetMemSize()
- {
- pid_t pid = getpid();
- - std::string str = (str::stream() << "/proc/" << pid << "/statm").str();
- + str::stream ss;
- + ss << "/proc/" << pid << "/statm";
- + std::string str = ss.str();
-
- io::stream strm(str.c_str(), iof::in);
- int mem;
- diff --git a/src/mlib/tech.h b/src/mlib/tech.h
- index 6ddadf8..f2e2c2a 100644
- --- a/src/mlib/tech.h
- +++ b/src/mlib/tech.h
- @@ -26,7 +26,7 @@
- // Технические вещи
- //
- #include <boost/current_function.hpp> // для BOOST_CURRENT_FUNCTION
- -#include <boost/detail/endian.hpp> // для BOOST_XXX_ENDIAN
- +#include <boost/predef/other/endian.h> // BOOST_ENDIAN_*_BYTE
- #include <boost/version.hpp> // для BOOST_MINOR_VERSION
-
- // для С-шного кода в С++
- @@ -78,9 +78,9 @@ void AssertImpl(const char* assertion, const char* file,
- long line, const char* function);
-
- // endianness
- -#if defined(BOOST_BIG_ENDIAN)
- +#if defined(BOOST_ENDIAN_BIG_BYTE)
- # define HAS_BIG_ENDIAN
- -#elif defined(BOOST_LITTLE_ENDIAN)
- +#elif defined(BOOST_ENDIAN_LITTLE_BYTE)
- # define HAS_LITTLE_ENDIAN
- #else
- # error mlib/tech.h: unknown endianness (legacy PDP arch?)
- diff --git a/src/mlib/tests/test_utils.cpp b/src/mlib/tests/test_utils.cpp
- index c4712e8..99a2e94 100644
- --- a/src/mlib/tests/test_utils.cpp
- +++ b/src/mlib/tests/test_utils.cpp
- @@ -139,17 +139,17 @@ BOOST_AUTO_TEST_CASE( TestFilesystem )
- #endif
- }
-
- - // is_complete
- + // is_absolute
- {
- fs::path pth("../some_file");
- - BOOST_CHECK( !pth.is_complete() );
- - BOOST_CHECK( fs::current_path().is_complete() );
- + BOOST_CHECK( !pth.is_absolute() );
- + BOOST_CHECK( fs::current_path().is_absolute() );
-
- fs::path apth = Project::MakeAbsolutePath(pth);
- //LOG_INF << "Making abs path: " << pth.string() << " => " << apth.string() << io::endl;
-
- - BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_complete() );
- - BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_complete() );
- + BOOST_CHECK( Project::MakeAbsolutePath(pth, MakeRootComplete("/")).is_absolute() );
- + BOOST_CHECK( !Project::MakeAbsolutePath(pth, "./").is_absolute() );
- }
-
- // MakeRelativeToDir
|