multimedia/bombono-dvd: Fix 15.0 build.

Signed-off-by: B. Watson <yalhcru@gmail.com>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2022-02-15 14:14:08 -05:00 committed by Willy Sudiarto Raharjo
parent 98a8bbab7c
commit 2d5f3fb75c
No known key found for this signature in database
GPG key ID: 3F617144D7238786
11 changed files with 1150 additions and 819 deletions

View file

@ -23,6 +23,8 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 20220215 bkw: Modified by SlackBuilds.org, fix build on 15.0.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bombono-dvd
@ -39,9 +41,6 @@ if [ -z "$ARCH" ]; then
esac
fi
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@ -76,28 +75,23 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
-o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
# 20220215 bkw: ported the stupid scons stuff to python3, since
# 15.0's scons doesn't do python2.
patch -p1 < $CWD/patches/scons.diff
# specify our CFLAGS
sed -i "s|-O2||" SConstruct
# Allow use of cdrtools as an alternative to cdrkit, thanks gentoo
patch -p1 < $CWD/patches/bombono-dvd-1.2.0-cdrtools.patch
# Fix for the newer ffmpeg - thanks ArchLinux
patch -p1 < $CWD/patches/fix_ffmpeg_codecid.patch
# 20220215 bkw: more boost breakage. this is upstream's commit e0956f48d5,
# but slightly edited to remove the reference to README (which won't apply).
patch -p1 < $CWD/patches/boost-1.78.diff
# Credit to ARCH Linux
patch -p1 < $CWD/patches/fix_ptr2bool_cast.patch
patch -p1 < $CWD/patches/fix_c++11_literal_warnings.patch
patch -p1 < $CWD/patches/autoptr2uniqueptr.patch
patch -p1 < $CWD/patches/boost.patch
patch -p1 < $CWD/patches/fix_operator_ambiguity.patch
patch -p1 < $CWD/patches/fix_throw_specifications.patch
# Fix for ffmpeg-3
patch -p1 < $CWD/patches/ffmpeg3.patch
# specify our CFLAGS
sed -i "s|-O2||" SConstruct
# Build package
scons \
@ -123,13 +117,10 @@ scons \
DESTDIR=$PKG \
install
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
strip $PKG/usr/bin/*
mv $PKG/usr/share/man $PKG/usr/
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING README $PKG/usr/doc/$PRGNAM-$VERSION

View file

@ -1,12 +0,0 @@
--- bombono-dvd-1.2.2/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp 2013-03-08 00:50:45.000000000 +0330
+++ new/libs/boost-logging/boost/logging/detail/tss/tss_impl_pthread.hpp 2015-11-26 20:06:48.693423531 +0330
@@ -39,7 +39,7 @@
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);

View file

@ -0,0 +1,914 @@
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

View file

@ -1,157 +0,0 @@
diff -ru bombono-dvd-1.2.2/src/mbase/project/table.cpp new/src/mbase/project/table.cpp
--- bombono-dvd-1.2.2/src/mbase/project/table.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mbase/project/table.cpp 2016-01-19 13:02:00.117338769 +0330
@@ -154,7 +154,7 @@
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);
diff -ru bombono-dvd-1.2.2/src/mgui/author/script.cpp new/src/mgui/author/script.cpp
--- bombono-dvd-1.2.2/src/mgui/author/script.cpp 2016-01-19 12:54:07.640700667 +0330
+++ new/src/mgui/author/script.cpp 2016-01-19 12:59:52.407346489 +0330
@@ -676,7 +676,7 @@
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);
}
diff -ru bombono-dvd-1.2.2/src/mgui/mux.cpp new/src/mgui/mux.cpp
--- bombono-dvd-1.2.2/src/mgui/mux.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mgui/mux.cpp 2016-01-19 12:58:22.840685236 +0330
@@ -162,7 +162,7 @@
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 -ru bombono-dvd-1.2.2/src/mgui/project/add.cpp new/src/mgui/project/add.cpp
--- bombono-dvd-1.2.2/src/mgui/project/add.cpp 2016-01-19 12:54:07.634034002 +0330
+++ new/src/mgui/project/add.cpp 2016-01-19 13:00:49.220676388 +0330
@@ -479,7 +479,7 @@
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 -ru bombono-dvd-1.2.2/src/mgui/project/serialize.cpp new/src/mgui/project/serialize.cpp
--- bombono-dvd-1.2.2/src/mgui/project/serialize.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mgui/project/serialize.cpp 2016-01-19 13:00:29.230677594 +0330
@@ -73,7 +73,7 @@
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 -ru bombono-dvd-1.2.2/src/mgui/timeline/select.cpp new/src/mgui/timeline/select.cpp
--- bombono-dvd-1.2.2/src/mgui/timeline/select.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mgui/timeline/select.cpp 2016-01-19 12:59:12.187348923 +0330
@@ -152,7 +152,7 @@
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 -ru bombono-dvd-1.2.2/src/mbase/project/table.cpp new/src/mbase/project/table.cpp
--- bombono-dvd-1.2.2/src/mbase/project/table.cpp 2016-01-19 13:11:42.883970202 +0330
+++ new/src/mbase/project/table.cpp 2016-01-19 13:42:58.317190146 +0330
@@ -162,7 +162,7 @@
if( !fpath.empty() )
{
fs::path pth(fpath);
- if( !pth.is_complete() )
+ if( !pth.is_absolute() )
fpath = (rel_to_dir/fpath).string();
}
}
diff -ru bombono-dvd-1.2.2/src/mbase/project/tests/test_table.cpp new/src/mbase/project/tests/test_table.cpp
--- bombono-dvd-1.2.2/src/mbase/project/tests/test_table.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mbase/project/tests/test_table.cpp 2016-01-19 13:42:16.977192649 +0330
@@ -129,7 +129,7 @@
// проверка чтения/записи путей
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 -ru bombono-dvd-1.2.2/src/mlib/tests/test_utils.cpp new/src/mlib/tests/test_utils.cpp
--- bombono-dvd-1.2.2/src/mlib/tests/test_utils.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mlib/tests/test_utils.cpp 2016-01-19 13:23:58.830592369 +0330
@@ -139,17 +139,17 @@
#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
diff -ru bombono-dvd-1.2.2/src/mlib/filesystem.cpp new/src/mlib/filesystem.cpp
--- bombono-dvd-1.2.2/src/mlib/filesystem.cpp 2013-03-08 00:50:45.000000000 +0330
+++ new/src/mlib/filesystem.cpp 2016-01-19 14:02:05.303787474 +0330
@@ -161,25 +161,16 @@
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();

View file

@ -1,24 +0,0 @@
diff -ruN old/src/mgui/ffviewer.cpp new/src/mgui/ffviewer.cpp
--- old/src/mgui/ffviewer.cpp 2016-06-18 11:37:10.409735832 +0430
+++ new/src/mgui/ffviewer.cpp 2016-06-18 11:45:40.343038336 +0430
@@ -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
@@ -807,7 +811,7 @@
#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)

View file

@ -1,174 +0,0 @@
diff -ruN old/src/mlib/regex.h new/src/mlib/regex.h
--- old/src/mlib/regex.h 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mlib/regex.h 2016-06-18 11:02:30.666528235 +0430
@@ -185,7 +185,7 @@
#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 -ruN old/src/mgui/author/burn.cpp new/src/mgui/author/burn.cpp
--- old/src/mgui/author/burn.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/author/burn.cpp 2016-06-18 11:04:08.113189012 +0430
@@ -85,7 +85,7 @@
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 @@
}
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 @@
// 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 -ruN old/src/mgui/author/execute.cpp new/src/mgui/author/execute.cpp
--- old/src/mgui/author/execute.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/author/execute.cpp 2016-06-18 11:07:03.359845082 +0430
@@ -64,9 +64,9 @@
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 @@
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 @@
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 @@
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 -ruN old/src/mgui/author/render.cpp new/src/mgui/author/render.cpp
--- old/src/mgui/author/render.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/author/render.cpp 2016-06-18 11:08:43.919839004 +0430
@@ -866,7 +866,7 @@
//
// :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 @@
{
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 @@
// * ищем версию 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);
diff -ruN old/src/mgui/author/script.cpp new/src/mgui/author/script.cpp
--- old/src/mgui/author/script.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/author/script.cpp 2016-06-18 11:09:54.899834712 +0430
@@ -755,9 +755,9 @@
// 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 +787,7 @@
// Формат длительности для 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)
{
@@ -1136,7 +1136,7 @@
// 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 -ruN old/src/mgui/project/browser.cpp new/src/mgui/project/browser.cpp
--- old/src/mgui/project/browser.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/project/browser.cpp 2016-06-18 11:10:21.113166461 +0430
@@ -328,7 +328,7 @@
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)
{

View file

@ -1,39 +0,0 @@
diff -u -r -N old/src/mgui/ffviewer.cpp new/src/mgui/ffviewer.cpp
--- old/src/mgui/ffviewer.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/ffviewer.cpp 2016-06-18 10:40:26.789941610 +0430
@@ -74,7 +74,7 @@
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 +82,14 @@
} 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 +400,7 @@
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;

View file

@ -1,352 +0,0 @@
diff -ruN old/src/mbase/project/serialization.h new/src/mbase/project/serialization.h
--- old/src/mbase/project/serialization.h 2017-06-01 13:54:44.086895687 +0430
+++ new/src/mbase/project/serialization.h 2017-06-01 14:09:16.523275880 +0430
@@ -75,7 +75,9 @@
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 -ruN old/src/mgui/dvdimport.cpp new/src/mgui/dvdimport.cpp
--- old/src/mgui/dvdimport.cpp 2017-06-01 13:54:44.086895687 +0430
+++ new/src/mgui/dvdimport.cpp 2017-06-01 14:06:42.488114237 +0430
@@ -211,10 +211,11 @@
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);
diff -ruN old/src/mbase/project/media.cpp new/src/mbase/project/media.cpp
--- old/src/mbase/project/media.cpp 2017-06-01 14:25:09.492134844 +0430
+++ new/src/mbase/project/media.cpp 2017-06-01 14:37:53.196336367 +0430
@@ -58,7 +58,9 @@
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 -ruN old/src/mbase/project/menu.cpp new/src/mbase/project/menu.cpp
--- old/src/mbase/project/menu.cpp 2017-06-01 14:25:09.495468141 +0430
+++ new/src/mbase/project/menu.cpp 2017-06-01 14:39:42.004331141 +0430
@@ -166,7 +166,9 @@
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 @@
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 @@
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 -ruN old/src/mbase/project/srl-common.cpp new/src/mbase/project/srl-common.cpp
--- old/src/mbase/project/srl-common.cpp 2017-06-01 14:25:09.495468141 +0430
+++ new/src/mbase/project/srl-common.cpp 2017-06-01 14:40:56.524722225 +0430
@@ -36,10 +36,12 @@
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 -ruN old/src/mgui/author/render.cpp new/src/mgui/author/render.cpp
--- old/src/mgui/author/render.cpp 2017-06-01 14:25:09.498801438 +0430
+++ new/src/mgui/author/render.cpp 2017-06-01 14:28:08.901379890 +0430
@@ -1307,7 +1307,9 @@
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 -ruN old/src/mgui/author/script.cpp new/src/mgui/author/script.cpp
--- old/src/mgui/author/script.cpp 2017-06-01 14:25:09.498801438 +0430
+++ new/src/mgui/author/script.cpp 2017-06-01 14:31:23.248978018 +0430
@@ -130,7 +130,9 @@
{
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 @@
// Потому: для удоства пользователей даем создавать нулевую главу, разрешая это здесь
// (однако доп. нулевые главы будут приводить к ошибке 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 @@
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 @@
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);
}
@@ -1082,7 +1090,9 @@
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();
diff -ruN old/src/mgui/project/add.cpp new/src/mgui/project/add.cpp
--- old/src/mgui/project/add.cpp 2017-06-01 14:25:09.498801438 +0430
+++ new/src/mgui/project/add.cpp 2017-06-01 14:33:26.303387642 +0430
@@ -86,7 +86,9 @@
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 @@
// *
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);
diff -ruN old/src/mgui/sdk/cairo_utils.cpp new/src/mgui/sdk/cairo_utils.cpp
--- old/src/mgui/sdk/cairo_utils.cpp 2017-06-01 14:25:09.498801438 +0430
+++ new/src/mgui/sdk/cairo_utils.cpp 2017-06-01 14:35:20.831246046 +0430
@@ -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 -ruN old/src/mgui/timeline/layout.cpp new/src/mgui/timeline/layout.cpp
--- old/src/mgui/timeline/layout.cpp 2017-06-01 14:25:09.502134734 +0430
+++ new/src/mgui/timeline/layout.cpp 2017-06-01 14:36:36.152095784 +0430
@@ -600,8 +600,10 @@
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 -ruN old/src/mgui/win_utils.cpp new/src/mgui/win_utils.cpp
--- old/src/mgui/win_utils.cpp 2017-06-01 14:25:09.498801438 +0430
+++ new/src/mgui/win_utils.cpp 2017-06-01 14:26:50.898112082 +0430
@@ -132,7 +132,9 @@
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 -ruN old/src/mdemux/dvdread.cpp new/src/mdemux/dvdread.cpp
--- old/src/mdemux/dvdread.cpp 2017-06-01 14:48:30.110355679 +0430
+++ new/src/mdemux/dvdread.cpp 2017-06-01 14:50:50.141065674 +0430
@@ -35,8 +35,10 @@
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 @@
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 -ruN old/src/mdemux/mpeg2demux.cpp new/src/mdemux/mpeg2demux.cpp
--- old/src/mdemux/mpeg2demux.cpp 2017-06-01 14:48:30.110355679 +0430
+++ new/src/mdemux/mpeg2demux.cpp 2017-06-01 14:55:35.784165916 +0430
@@ -71,7 +71,9 @@
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 @@
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 -ruN old/src/mdemux/seek.cpp new/src/mdemux/seek.cpp
--- old/src/mdemux/seek.cpp 2017-06-01 14:48:30.110355679 +0430
+++ new/src/mdemux/seek.cpp 2017-06-01 14:52:09.669280234 +0430
@@ -37,8 +37,10 @@
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 -ruN old/src/mlib/sdk/misc.cpp new/src/mlib/sdk/misc.cpp
--- old/src/mlib/sdk/misc.cpp 2017-06-01 14:48:30.120355606 +0430
+++ new/src/mlib/sdk/misc.cpp 2017-06-01 14:53:25.504549937 +0430
@@ -173,12 +173,16 @@
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 -ruN old/src/mlib/sdk/system.cpp new/src/mlib/sdk/system.cpp
--- old/src/mlib/sdk/system.cpp 2017-06-01 14:48:30.120355606 +0430
+++ new/src/mlib/sdk/system.cpp 2017-06-01 14:54:13.980777662 +0430
@@ -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;

View file

@ -1,13 +0,0 @@
diff -ruN old/src/mgui/dvdimport.cpp new/src/mgui/dvdimport.cpp
--- old/src/mgui/dvdimport.cpp 2016-04-10 15:15:39.000000000 +0430
+++ new/src/mgui/dvdimport.cpp 2016-06-18 10:52:35.713230871 +0430
@@ -275,7 +275,7 @@
id.errLbl.hide();
id.reader = rd;
- SetCurPageComplete(id.ast, id.reader);
+ SetCurPageComplete(id.ast, bool(id.reader));
return rd;
}

View file

@ -1,24 +0,0 @@
diff -ruN old/src/mbase/project/table.h new/src/mbase/project/table.h
--- old/src/mbase/project/table.h 2017-06-01 13:54:44.086895687 +0430
+++ new/src/mbase/project/table.h 2017-06-01 13:55:58.089107253 +0430
@@ -128,7 +128,7 @@
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 -ruN old/src/mbase/project/srl-db.cpp new/src/mbase/project/srl-db.cpp
--- old/src/mbase/project/srl-db.cpp 2017-06-01 14:25:09.495468141 +0430
+++ new/src/mbase/project/srl-db.cpp 2017-06-01 14:41:49.699901753 +0430
@@ -102,7 +102,7 @@
}
void ADatabase::Load(const std::string& fname,
- const std::string& cur_dir) throw (std::exception)
+ const std::string& cur_dir)
{
try
{

View file

@ -0,0 +1,221 @@
diff -Naur bombono-dvd-1.2.4/SConstruct bombono-dvd-1.2.4.patched/SConstruct
--- bombono-dvd-1.2.4/SConstruct 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/SConstruct 2022-02-15 13:53:32.444205004 -0500
@@ -274,13 +274,13 @@
# Config
if os.path.exists( BV.CfgFile ):
- print "Using config file: " + BV.CfgFile
+ print("Using config file: " + BV.CfgFile)
user_options = Variables(BV.CfgFile, BV.Args)
ParseVariables(user_options)
else:
- print "Creating new config file: " + BV.CfgFile
+ print("Creating new config file: " + BV.CfgFile)
user_options = Variables(None, BV.Args)
ParseVariables(user_options)
@@ -352,20 +352,19 @@
def GenerateBaseConfigH(target, source, env):
cfg_file = open(target[0].path, 'w')
- print >> cfg_file, "/* Generated by means of Autoconfig */"
+ print("/* Generated by means of Autoconfig */", file=cfg_file)
config_dict = user_options_dict['CONFIGURATION']
- key_list = config_dict.keys()
- key_list.sort()
+ key_list = sorted(config_dict)
for key in key_list:
var = config_dict[key]
text = var.get('text', None)
if text:
- print >> cfg_file
+ print("", file=cfg_file)
BV.AddComment(cfg_file, var)
- print >> cfg_file, text
+ print(text, file=cfg_file)
continue
BV.AddDefine(cfg_file, key, **var)
diff -Naur bombono-dvd-1.2.4/libs/mpeg2dec/SConscript bombono-dvd-1.2.4.patched/libs/mpeg2dec/SConscript
--- bombono-dvd-1.2.4/libs/mpeg2dec/SConscript 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/libs/mpeg2dec/SConscript 2022-02-15 13:47:04.028766834 -0500
@@ -69,9 +69,9 @@
def GenerateMpeg2DecCfg(target, source, env):
cfg_file = open(target[0].path, 'w')
- print >> cfg_file, "/* Auto-generated header */"
- print >> cfg_file
- print >> cfg_file, '#include <cfg/config.h>'
+ print("/* Auto-generated header */", file=cfg_file)
+ print("", file=cfg_file)
+ print('#include <cfg/config.h>', file=cfg_file)
BuildVars.AddDefine(cfg_file, 'ACCEL_DETECT', is_on = 1, comment = "autodetect accelerations")
BuildVars.AddDefine(cfg_file, 'LIBVO_DX', is_on = 0, comment = "libvo DirectX support")
diff -Naur bombono-dvd-1.2.4/po/SConscript bombono-dvd-1.2.4.patched/po/SConscript
--- bombono-dvd-1.2.4/po/SConscript 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/po/SConscript 2022-02-15 13:47:04.028766834 -0500
@@ -35,7 +35,7 @@
str(source[0]),
str(source[1]),
]
- print 'Updating ' + trgt
+ print('Updating ' + trgt)
return os.spawnvp(os.P_WAIT, 'msgmerge', args)
po_bld = Builder (action = po_builder)
diff -Naur bombono-dvd-1.2.4/src/mgui/tests/SConscript bombono-dvd-1.2.4.patched/src/mgui/tests/SConscript
--- bombono-dvd-1.2.4/src/mgui/tests/SConscript 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/src/mgui/tests/SConscript 2022-02-15 13:47:04.028766834 -0500
@@ -36,8 +36,8 @@
bin_mgui_tests_env.Program(target=test_prg_name, source = source_files+lib_mgui_objs)
import os
-if os.environ.has_key('DISPLAY'):
+if 'DISPLAY' in os.environ:
UnitTest(test_prg_name, bin_mgui_tests_env)
else:
- print "Warning: X Display is not found. GUI tests are disabled."
+ print("Warning: X Display is not found. GUI tests are disabled.")
diff -Naur bombono-dvd-1.2.4/tools/scripts/BuildVars.py bombono-dvd-1.2.4.patched/tools/scripts/BuildVars.py
--- bombono-dvd-1.2.4/tools/scripts/BuildVars.py 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/tools/scripts/BuildVars.py 2022-02-15 13:47:54.476603032 -0500
@@ -30,11 +30,11 @@
def PrintBright(is_end):
if not is_end:
- print
- print "****************************************************"
+ print()
+ print("****************************************************")
else:
- print "****************************************************"
- print
+ print("****************************************************")
+ print()
def IsDebugCfg():
return BuildCfg == 'debug'
@@ -68,10 +68,10 @@
def CheckSettings(main_env):
global Cc, Cxx, BuildDir, Targets, RunTests, BuildTests
if RunTests :
- print 'Tests: on'
+ print('Tests: on')
else:
if BuildTests:
- print 'Tests: on (only building)'
+ print('Tests: on (only building)')
def_env = GetDefEnv()
# for SCons =<0.96 we need to warn that just 'scons' is not enough:
@@ -92,9 +92,9 @@
( (len(BuildDir) >= 1 and BuildDir[0] == '/') or (len(BuildDir) >= 2 and BuildDir[0:2] == '..') ) and \
(Targets == [] or Targets == ['.']) :
PrintBright(0)
- print 'Warning! "scons" or "scons ." detected while BUILD_DIR is outside "."!'
- print 'To build successfully with SCons <= v0.96.1 you may need to run something like '
- print '\t"scons <...> ' + BuildDir + '".'
+ print('Warning! "scons" or "scons ." detected while BUILD_DIR is outside "."!')
+ print('To build successfully with SCons <= v0.96.1 you may need to run something like ')
+ print('\t"scons <...> ' + BuildDir + '".' )
PrintBright(1)
# we use TestSConscript() function instead of SConscript()
@@ -149,7 +149,7 @@
SetBriefOutput(main_env)
# to separate our output from SCons'
- print
+ print()
# Non/Verbose output
def SetBriefOutput(env):
@@ -228,7 +228,7 @@
def ErrorAndExit(msg):
PrintBright(0)
- print msg
+ print(msg)
PrintBright(1)
GetDefEnv().Exit(1)
@@ -383,20 +383,20 @@
comment = MakeHeaderComment(var['ccomment'], var.get('val') == '1')
if comment:
- print >> cfg_file, "/* " + comment + " */"
+ print("/* " + comment + " */", file=cfg_file)
def AddDefine(cfg_file, key, **var):
- print >> cfg_file
+ print("", file=cfg_file)
AddComment(cfg_file, var)
if var['is_on']:
str = var.get('val', None)
if str == None:
- print >> cfg_file, "#define %s" % key
+ print("#define %s" % key, file=cfg_file)
else:
- print >> cfg_file, "#define %s %s" % (key, var['val'])
+ print("#define %s %s" % (key, var['val']), file=cfg_file)
else:
- print >> cfg_file, "/* #undef %s */" % key
+ print("/* #undef %s */" % key, file=cfg_file)
GenFunctionMap = {}
@@ -495,7 +495,7 @@
res = True
elif not IsReenter(IsToBuildQuick):
# warn once only
- print 'BUILD_QUICK=true is not supported for current compiler(%s)!' % Cc
+ print('BUILD_QUICK=true is not supported for current compiler(%s)!' % Cc)
return res
@@ -504,7 +504,7 @@
def CreateEnvVersion2(**kw):
tools = ['default', 'AuxTools']
- if kw.has_key('tools'):
+ if 'tools' in kw:
tools += kw['tools']
kw['tools'] = tools
diff -Naur bombono-dvd-1.2.4/tools/scripts/copy_boost.py bombono-dvd-1.2.4.patched/tools/scripts/copy_boost.py
--- bombono-dvd-1.2.4/tools/scripts/copy_boost.py 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/tools/scripts/copy_boost.py 2022-02-15 13:47:04.029766851 -0500
@@ -26,7 +26,7 @@
for fname in os.listdir(boost_dst):
if not fname in lst:
fpath = os.path.join(boost_dst, fname)
- print 'rm', fpath
+ #print 'rm', fpath
o_p.del_any_fpath(fpath)
cmd = '''%(bcp)s --boost=%(boost_src)s boost/smart_ptr.hpp boost/test boost/function.hpp boost/lambda boost/bind \
diff -Naur bombono-dvd-1.2.4/tools/scripts/gch.py bombono-dvd-1.2.4.patched/tools/scripts/gch.py
--- bombono-dvd-1.2.4/tools/scripts/gch.py 2016-04-10 06:45:39.000000000 -0400
+++ bombono-dvd-1.2.4.patched/tools/scripts/gch.py 2022-02-15 13:47:04.029766851 -0500
@@ -78,10 +78,10 @@
def SetPCHDependencies(target, source, env, gch_key):
- if env.has_key(gch_key) and env[gch_key]:
+ if gch_key in env and env[gch_key]:
gch_node = env[gch_key]
# Murav'jov - alternative variant
- if env.has_key('DepGch') and env['DepGch']:
+ if 'DepGch' in env and env['DepGch']:
env.Depends(target, gch_node)
else:
scanner = GetCScannerFunc()