2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
14 CXBTFFrame::CXBTFFrame()
21 m_format
= XB_FMT_UNKNOWN
;
25 uint32_t CXBTFFrame::GetWidth() const
30 void CXBTFFrame::SetWidth(uint32_t width
)
35 uint32_t CXBTFFrame::GetHeight() const
40 void CXBTFFrame::SetHeight(uint32_t height
)
45 uint64_t CXBTFFrame::GetPackedSize() const
50 void CXBTFFrame::SetPackedSize(uint64_t size
)
55 bool CXBTFFrame::IsPacked() const
57 return m_unpackedSize
!= m_packedSize
;
60 bool CXBTFFrame::HasAlpha() const
62 return (m_format
& XB_FMT_OPAQUE
) == 0;
65 uint64_t CXBTFFrame::GetUnpackedSize() const
67 return m_unpackedSize
;
70 void CXBTFFrame::SetUnpackedSize(uint64_t size
)
72 m_unpackedSize
= size
;
75 void CXBTFFrame::SetFormat(XB_FMT format
)
80 XB_FMT
CXBTFFrame::GetFormat(bool raw
) const
82 return raw
? m_format
: static_cast<XB_FMT
>(m_format
& XB_FMT_MASK
);
85 uint64_t CXBTFFrame::GetOffset() const
90 void CXBTFFrame::SetOffset(uint64_t offset
)
95 uint32_t CXBTFFrame::GetDuration() const
100 void CXBTFFrame::SetDuration(uint32_t duration
)
102 m_duration
= duration
;
105 uint64_t CXBTFFrame::GetHeaderSize() const
111 sizeof(m_packedSize
) +
112 sizeof(m_unpackedSize
) +
119 CXBTFFile::CXBTFFile()
124 const std::string
& CXBTFFile::GetPath() const
129 void CXBTFFile::SetPath(const std::string
& path
)
134 uint32_t CXBTFFile::GetLoop() const
139 void CXBTFFile::SetLoop(uint32_t loop
)
144 const std::vector
<CXBTFFrame
>& CXBTFFile::GetFrames() const
149 std::vector
<CXBTFFrame
>& CXBTFFile::GetFrames()
154 uint64_t CXBTFFile::GetPackedSize() const
157 for (const auto& frame
: m_frames
)
158 size
+= frame
.GetPackedSize();
163 uint64_t CXBTFFile::GetUnpackedSize() const
166 for (const auto& frame
: m_frames
)
167 size
+= frame
.GetUnpackedSize();
172 uint64_t CXBTFFile::GetHeaderSize() const
177 sizeof(uint32_t); /* Number of frames */
179 for (const auto& frame
: m_frames
)
180 result
+= frame
.GetHeaderSize();
185 uint64_t CXBTFBase::GetHeaderSize() const
187 uint64_t result
= XBTF_MAGIC
.size() + XBTF_VERSION
.size() +
188 sizeof(uint32_t) /* number of files */;
190 for (const auto& file
: m_files
)
191 result
+= file
.second
.GetHeaderSize();
196 bool CXBTFBase::Exists(const std::string
& name
) const
199 return Get(name
, dummy
);
202 bool CXBTFBase::Get(const std::string
& name
, CXBTFFile
& file
) const
204 const auto& iter
= m_files
.find(name
);
205 if (iter
== m_files
.end())
212 std::vector
<CXBTFFile
> CXBTFBase::GetFiles() const
214 std::vector
<CXBTFFile
> files
;
215 files
.reserve(m_files
.size());
217 for (const auto& file
: m_files
)
218 files
.push_back(file
.second
);
223 void CXBTFBase::AddFile(const CXBTFFile
& file
)
225 m_files
.insert(std::make_pair(file
.GetPath(), file
));
228 void CXBTFBase::UpdateFile(const CXBTFFile
& file
)
230 auto&& it
= m_files
.find(file
.GetPath());
231 if (it
== m_files
.end())