Shaka Packager SDK
ttml_muxer.cc
1 // Copyright 2020 Google LLC. All rights reserved.
2 //
3 // Use of this source code is governed by a BSD-style
4 // license that can be found in the LICENSE file or at
5 // https://developers.google.com/open-source/licenses/bsd
6 
7 #include "packager/media/formats/ttml/ttml_muxer.h"
8 
9 #include "packager/file/file.h"
10 #include "packager/status_macros.h"
11 
12 namespace shaka {
13 namespace media {
14 namespace ttml {
15 
16 TtmlMuxer::TtmlMuxer(const MuxerOptions& options) : TextMuxer(options) {}
17 TtmlMuxer::~TtmlMuxer() {}
18 
19 Status TtmlMuxer::InitializeStream(TextStreamInfo* stream) {
20  stream->set_codec(kCodecTtml);
21  stream->set_codec_string("ttml");
22  generator_.Initialize(stream->regions(), stream->language(),
23  stream->time_scale());
24  return Status::OK;
25 }
26 
27 Status TtmlMuxer::AddTextSampleInternal(const TextSample& sample) {
28  generator_.AddSample(sample);
29  return Status::OK;
30 }
31 
32 Status TtmlMuxer::WriteToFile(const std::string& filename, uint64_t* size) {
33  std::string data;
34  if (!generator_.Dump(&data))
35  return Status(error::INTERNAL_ERROR, "Error generating XML");
36  generator_.Reset();
37  *size = data.size();
38 
39  if (!File::WriteStringToFile(filename.c_str(), data))
40  return Status(error::FILE_FAILURE, "Failed to write " + filename);
41  return Status::OK;
42 }
43 
44 } // namespace ttml
45 } // namespace media
46 } // namespace shaka
All the methods that are virtual are virtual for mocking.