summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-12-01 22:44:38 +0100
committerCarl Hetherington <cth@carlh.net>2022-12-01 23:19:07 +0100
commit3da3168c383b9dfa675f972f0802e180920d63c0 (patch)
tree7d196ce81955dbd70e6324f2b09744c557defb33 /src
parent8ff50a18013d3c57d1058368146c979354016663 (diff)
Remove DCP subtitle support.libsub-bye-bye-dcp
This was only a thin wrapper around libdcp, used by videocon but not by DCP-o-matic. It seems very unlikely that anybody else will want it, and the dependency of libsub on libdcp causes hassle that will be gladly avoided.
Diffstat (limited to 'src')
-rw-r--r--src/collect.h1
-rw-r--r--src/colour.h5
-rw-r--r--src/dcp_reader.cc137
-rw-r--r--src/dcp_reader.h39
-rw-r--r--src/exceptions.h8
-rw-r--r--src/reader_factory.cc11
-rw-r--r--src/stl_binary_reader.h1
-rw-r--r--src/util.cc1
-rw-r--r--src/web_vtt_reader.h1
-rw-r--r--src/wscript5
10 files changed, 4 insertions, 205 deletions
diff --git a/src/collect.h b/src/collect.h
index 5fcf694..374386c 100644
--- a/src/collect.h
+++ b/src/collect.h
@@ -22,6 +22,7 @@
#include "subtitle.h"
#include "raw_subtitle.h"
+#include <algorithm>
namespace sub {
diff --git a/src/colour.h b/src/colour.h
index f3a4964..65660a5 100644
--- a/src/colour.h
+++ b/src/colour.h
@@ -24,7 +24,6 @@
#ifndef LIBSUB_COLOUR_H
#define LIBSUB_COLOUR_H
-#include <dcp/types.h>
#include <string>
#include <cmath>
@@ -57,10 +56,6 @@ public:
float g;
/** blue component (from 0 to 1) */
float b;
-
- dcp::Colour dcp() const {
- return dcp::Colour(lrintf(r * 255), lrintf(g * 255), lrintf(b * 255));
- }
};
bool
diff --git a/src/dcp_reader.cc b/src/dcp_reader.cc
deleted file mode 100644
index 0c7a29a..0000000
--- a/src/dcp_reader.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#include "dcp_reader.h"
-#include "compose.hpp"
-#include "exceptions.h"
-#include <dcp/subtitle_string.h>
-#include <dcp/interop_subtitle_asset.h>
-#include <dcp/smpte_subtitle_asset.h>
-#include <boost/filesystem.hpp>
-
-using std::dynamic_pointer_cast;
-using std::exception;
-using std::make_shared;
-using std::shared_ptr;
-using std::string;
-using boost::optional;
-using namespace sub;
-
-static Time
-dcp_to_sub_time (dcp::Time t)
-{
- return Time::from_hms (t.h, t.m, t.s, t.e * 1000.0 / t.tcr);
-}
-
-static Colour
-dcp_to_sub_colour (dcp::Colour c)
-{
- return Colour (c.r / 255.0, c.g / 255.0, c.b / 255.0);
-}
-
-DCPReader::DCPReader (boost::filesystem::path file)
-{
- shared_ptr<dcp::SubtitleAsset> sc;
- string interop_error;
- string smpte_error;
-
- try {
- sc = make_shared<dcp::InteropSubtitleAsset>(file);
- } catch (exception& e) {
- interop_error = e.what ();
- }
-
- if (!sc) {
- try {
- sc = make_shared<dcp::SMPTESubtitleAsset>(file);
- } catch (exception& e) {
- smpte_error = e.what();
- }
- }
-
- if (!sc) {
- throw DCPError(String::compose("Could not read subtitles (%1 / %2)", interop_error, smpte_error));
- }
-
-
- for (auto i: sc->subtitles()) {
-
- /* We don't deal with image subs */
- auto is = dynamic_pointer_cast<const dcp::SubtitleString>(i);
- if (!is) {
- continue;
- }
-
- RawSubtitle rs;
- rs.text = is->text ();
- rs.font = is->font ();
- rs.font_size = FontSize::from_proportional (is->size() / (72.0 * 11.0));
-
- switch (is->effect ()) {
- case dcp::Effect::BORDER:
- rs.effect = BORDER;
- break;
- case dcp::Effect::SHADOW:
- rs.effect = SHADOW;
- break;
- default:
- break;
- }
-
- rs.effect_colour = dcp_to_sub_colour (is->effect_colour());
-
- rs.colour = dcp_to_sub_colour (is->colour());
- rs.bold = is->bold ();
- rs.italic = is->italic ();
- rs.underline = is->underline ();
-
- switch (is->h_align()) {
- case dcp::HAlign::LEFT:
- rs.horizontal_position.reference = LEFT_OF_SCREEN;
- break;
- case dcp::HAlign::CENTER:
- rs.horizontal_position.reference = HORIZONTAL_CENTRE_OF_SCREEN;
- break;
- case dcp::HAlign::RIGHT:
- rs.horizontal_position.reference = RIGHT_OF_SCREEN;
- break;
- }
-
- rs.vertical_position.proportional = is->v_position();
- switch (is->v_align()) {
- case dcp::VAlign::TOP:
- rs.vertical_position.reference = TOP_OF_SCREEN;
- break;
- case dcp::VAlign::CENTER:
- rs.vertical_position.reference = VERTICAL_CENTRE_OF_SCREEN;
- break;
- case dcp::VAlign::BOTTOM:
- rs.vertical_position.reference = BOTTOM_OF_SCREEN;
- break;
- }
-
- rs.from = dcp_to_sub_time (is->in ());
- rs.to = dcp_to_sub_time (is->out ());
-
- rs.fade_up = dcp_to_sub_time (is->fade_up_time ());
- rs.fade_down = dcp_to_sub_time (is->fade_down_time ());
-
- _subs.push_back (rs);
- }
-}
diff --git a/src/dcp_reader.h b/src/dcp_reader.h
deleted file mode 100644
index 8f49dfd..0000000
--- a/src/dcp_reader.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Copyright (C) 2014-2017 Carl Hetherington <cth@carlh.net>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#ifndef LIBSUB_DCP_READER_H
-#define LIBSUB_DCP_READER_H
-
-#include "reader.h"
-#include <boost/filesystem.hpp>
-
-namespace sub {
-
-/** @class DCPReader
- * @brief A class which reads DCP subtitles.
- */
-class DCPReader : public Reader
-{
-public:
- DCPReader (boost::filesystem::path file);
-};
-
-}
-
-#endif
diff --git a/src/exceptions.h b/src/exceptions.h
index 2b2b09c..1895f11 100644
--- a/src/exceptions.h
+++ b/src/exceptions.h
@@ -114,14 +114,6 @@ public:
{}
};
-class DCPError : public std::runtime_error
-{
-public:
- DCPError (std::string const & message)
- : std::runtime_error (message)
- {}
-};
-
class ProgrammingError : public std::runtime_error
{
public:
diff --git a/src/reader_factory.cc b/src/reader_factory.cc
index fb717ea..282f14b 100644
--- a/src/reader_factory.cc
+++ b/src/reader_factory.cc
@@ -20,10 +20,8 @@
#include "reader_factory.h"
#include "stl_binary_reader.h"
#include "stl_text_reader.h"
-#include "dcp_reader.h"
#include "subrip_reader.h"
#include "sub_assert.h"
-#include <libxml++/libxml++.h>
#include <boost/algorithm/string.hpp>
#include <fstream>
@@ -39,15 +37,6 @@ sub::reader_factory (boost::filesystem::path file_name)
string ext = file_name.extension().string();
transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
- if (ext == ".xml") {
- return shared_ptr<Reader> (new DCPReader (file_name));
- }
-
- if (ext == ".mxf") {
- /* Assume this is some MXF-wrapped SMPTE subtitles */
- return shared_ptr<Reader> (new DCPReader (file_name));
- }
-
if (ext == ".stl") {
/* Check the start of the DFC */
ifstream f (file_name.string().c_str ());
diff --git a/src/stl_binary_reader.h b/src/stl_binary_reader.h
index beb9de2..75e328a 100644
--- a/src/stl_binary_reader.h
+++ b/src/stl_binary_reader.h
@@ -23,6 +23,7 @@
#include "reader.h"
#include "stl_binary_tables.h"
#include <map>
+#include <memory>
namespace sub {
diff --git a/src/util.cc b/src/util.cc
index eb68752..244630d 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -31,7 +31,6 @@ using std::string;
using std::getline;
using std::ostream;
using std::map;
-using std::list;
using std::shared_ptr;
using std::vector;
using boost::optional;
diff --git a/src/web_vtt_reader.h b/src/web_vtt_reader.h
index 495e2bc..42e83f1 100644
--- a/src/web_vtt_reader.h
+++ b/src/web_vtt_reader.h
@@ -24,6 +24,7 @@
#include "reader.h"
#include <cstdio>
+#include <list>
#include <string>
diff --git a/src/wscript b/src/wscript
index ff029a0..563b331 100644
--- a/src/wscript
+++ b/src/wscript
@@ -8,12 +8,10 @@ def build(bld):
obj.name = 'libsub%s' % bld.env.API_VERSION
obj.target = 'sub%s' % bld.env.API_VERSION
- obj.uselib = 'CXML DCP BOOST_FILESYSTEM BOOST_LOCALE BOOST_REGEX ASDCPLIB_CTH'
- obj.use = 'libkumu-libsub%s libasdcp-libsub%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
+ obj.uselib = 'CXML BOOST_FILESYSTEM BOOST_LOCALE BOOST_REGEX'
obj.export_includes = ['.']
obj.source = """
colour.cc
- dcp_reader.cc
effect.cc
exceptions.cc
font_size.cc
@@ -44,7 +42,6 @@ def build(bld):
headers = """
collect.h
colour.h
- dcp_reader.h
effect.h
exceptions.h
font_size.h