diff --git a/include/shiguredo/mp4/writer/faststart_writer.hpp b/include/shiguredo/mp4/writer/faststart_writer.hpp index 6af89e0..4d53a08 100644 --- a/include/shiguredo/mp4/writer/faststart_writer.hpp +++ b/include/shiguredo/mp4/writer/faststart_writer.hpp @@ -42,6 +42,8 @@ class FaststartWriter : public Writer { void appendTrakAndUdtaBoxInfo(const std::vector&) override; void writeMdatHeader(); void copyMdatData(); + void deleteIntermediateFile(); + std::filesystem::path getIntermediateFilePath(); private: std::ostream& m_os; diff --git a/src/writer/faststart_writer.cpp b/src/writer/faststart_writer.cpp index a11a29e..e8807a9 100644 --- a/src/writer/faststart_writer.cpp +++ b/src/writer/faststart_writer.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include #include #include #include @@ -141,13 +143,13 @@ std::uint64_t FaststartWriter::getMdatHeaderSize() const { } void FaststartWriter::copyMdatData() { - if (auto ret = ::fseek(m_mdat_fd, 0, SEEK_SET); ret == -1) { + if (auto ret = std::fseek(m_mdat_fd, 0, SEEK_SET); ret == -1) { throw std::runtime_error("fseek failed"); } char buffer[COPY_MDAT_DATA_BUFFER_SIZE]; - while (!::feof(m_mdat_fd)) { - std::size_t size = ::fread(buffer, 1, COPY_MDAT_DATA_BUFFER_SIZE, m_mdat_fd); + while (!std::feof(m_mdat_fd)) { + std::size_t size = std::fread(buffer, 1, COPY_MDAT_DATA_BUFFER_SIZE, m_mdat_fd); std::copy_n(buffer, size, std::ostreambuf_iterator(m_os)); if (!m_os.good()) { throw std::runtime_error( @@ -155,15 +157,12 @@ void FaststartWriter::copyMdatData() { } } - if (auto ret = ::fclose(m_mdat_fd); ret == EOF) { + if (auto ret = std::fclose(m_mdat_fd); ret == EOF) { throw std::runtime_error( fmt::format("FaststartWriter::copyMdatData(): cannot close the intermediate file: {}", m_mdat_path.string())); } - if (bool result = std::filesystem::remove(m_mdat_path); !result) { - throw std::runtime_error( - fmt::format("FaststartWriter::copyMdatData(): cannot remove the intermediate file: {}", m_mdat_path.string())); - } + deleteIntermediateFile(); } void FaststartWriter::appendTrakAndUdtaBoxInfo(const std::vector& tracks) { @@ -193,4 +192,16 @@ void FaststartWriter::appendTrakAndUdtaBoxInfo(const std::vector output/$${base}.dump; \