Shaka Packager SDK
packager.h
1 // Copyright 2017 Google Inc. 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 #ifndef PACKAGER_PACKAGER_H_
8 #define PACKAGER_PACKAGER_H_
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 
14 #include "packager/file/public/buffer_callback_params.h"
15 #include "packager/hls/public/hls_params.h"
16 #include "packager/media/public/ad_cue_generator_params.h"
17 #include "packager/media/public/chunking_params.h"
18 #include "packager/media/public/crypto_params.h"
19 #include "packager/media/public/mp4_output_params.h"
20 #include "packager/mpd/public/mpd_params.h"
21 #include "packager/status.h"
22 
23 namespace shaka {
24 
26 struct TestParams {
28  bool dump_stream_info = false;
31  bool inject_fake_clock = false;
35 };
36 
40  std::string temp_dir;
45 
48 
51  bool output_media_info = false;
56 
59  DecryptionParams decryption_params;
60 
63 
64  // Parameters for testing. Do not use in production.
65  TestParams test_params;
66 };
67 
71  std::string input;
72 
75  std::string stream_selector;
76 
79  std::string output;
81  std::string segment_template;
82 
85  std::string output_format;
88  bool skip_encryption = false;
93  std::string drm_label;
97  uint32_t trick_play_factor = 0;
101  uint32_t bandwidth = 0;
104  std::string language;
108  std::string hls_name;
111  std::string hls_group_id;
114  std::string hls_playlist_name;
118 };
119 
120 class SHAKA_EXPORT Packager {
121  public:
122  Packager();
123  ~Packager();
124 
129  Status Initialize(
130  const PackagingParams& packaging_params,
131  const std::vector<StreamDescriptor>& stream_descriptors);
132 
136  Status Run();
137 
139  void Cancel();
140 
142  static std::string GetLibraryVersion();
143 
163  static std::string DefaultStreamLabelFunction(
164  int max_sd_pixels,
165  int max_hd_pixels,
166  int max_uhd1_pixels,
167  const EncryptionParams::EncryptedStreamAttributes& stream_attributes);
168 
169  private:
170  Packager(const Packager&) = delete;
171  Packager& operator=(const Packager&) = delete;
172 
173  struct PackagerInternal;
174  std::unique_ptr<PackagerInternal> internal_;
175 };
176 
177 } // namespace shaka
178 
179 #endif // PACKAGER_PACKAGER_H_
std::string stream_selector
Definition: packager.h:75
BufferCallbackParams buffer_callback_params
Buffer callback params.
Definition: packager.h:62
DASH MPD related parameters.
Definition: mpd_params.h:16
Defines a single input/output stream.
Definition: packager.h:69
std::string input
Input/source media file path or network stream URL. Required.
Definition: packager.h:71
HlsParams hls_params
HLS related parameters.
Definition: packager.h:55
ChunkingParams chunking_params
Chunking (segmentation) related parameters.
Definition: packager.h:44
std::string hls_playlist_name
Definition: packager.h:114
HLS related parameters.
Definition: hls_params.h:23
std::string hls_name
Definition: packager.h:108
std::string segment_template
Specifies segment template. Can be empty.
Definition: packager.h:81
bool inject_fake_clock
Definition: packager.h:31
Parameters used for testing.
Definition: packager.h:26
std::string output_format
Definition: packager.h:85
bool dump_stream_info
Whether to dump input stream info.
Definition: packager.h:28
All the methods that are virtual are virtual for mocking.
std::string injected_library_version
Definition: packager.h:34
MpdParams mpd_params
DASH MPD related parameters.
Definition: packager.h:53
std::string drm_label
Definition: packager.h:93
MP4 (ISO-BMFF) output related parameters.
AdCueGeneratorParams ad_cue_generator_params
Out of band cuepoint parameters.
Definition: packager.h:47
std::string temp_dir
Specify temporary directory for intermediate temporary files.
Definition: packager.h:40
Cuepoint generator related parameters.
Mp4OutputParams mp4_output_params
MP4 (ISO-BMFF) output related parameters.
Definition: packager.h:42
EncryptionParams encryption_params
Encryption and Decryption Parameters.
Definition: packager.h:58
Chunking (segmentation) related parameters.
std::string output
Definition: packager.h:79
Decryption parameters.
Encryption parameters.
Encrypted stream information that is used to determine stream label.
std::string hls_iframe_playlist_name
Definition: packager.h:117
Packaging parameters.
Definition: packager.h:38
Buffer callback params.
std::string language
Definition: packager.h:104
std::string hls_group_id
Definition: packager.h:111