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;
49 
52 
55  bool output_media_info = false;
58  bool single_threaded = false;
63 
66  DecryptionParams decryption_params;
67 
70 
71  // Parameters for testing. Do not use in production.
72  TestParams test_params;
73 };
74 
78  std::string input;
79 
82  std::string stream_selector;
83 
86  std::string output;
88  std::string segment_template;
89 
92  std::string output_format;
95  bool skip_encryption = false;
100  std::string drm_label;
104  uint32_t trick_play_factor = 0;
108  uint32_t bandwidth = 0;
111  std::string language;
115  int32_t cc_index = -1;
116 
120  std::string hls_name;
123  std::string hls_group_id;
126  std::string hls_playlist_name;
132  std::vector<std::string> hls_characteristics;
133 
135  std::vector<std::string> dash_accessiblities;
137  std::vector<std::string> dash_roles;
138 
140  bool dash_only = false;
142  bool hls_only = false;
143 };
144 
145 class SHAKA_EXPORT Packager {
146  public:
147  Packager();
148  ~Packager();
149 
154  Status Initialize(
155  const PackagingParams& packaging_params,
156  const std::vector<StreamDescriptor>& stream_descriptors);
157 
161  Status Run();
162 
164  void Cancel();
165 
167  static std::string GetLibraryVersion();
168 
188  static std::string DefaultStreamLabelFunction(
189  int max_sd_pixels,
190  int max_hd_pixels,
191  int max_uhd1_pixels,
192  const EncryptionParams::EncryptedStreamAttributes& stream_attributes);
193 
194  private:
195  Packager(const Packager&) = delete;
196  Packager& operator=(const Packager&) = delete;
197 
198  struct PackagerInternal;
199  std::unique_ptr<PackagerInternal> internal_;
200 };
201 
202 } // namespace shaka
203 
204 #endif // PACKAGER_PACKAGER_H_
All the methods that are virtual are virtual for mocking.
Cuepoint generator related parameters.
Chunking (segmentation) related parameters.
Decryption parameters.
Encrypted stream information that is used to determine stream label.
Encryption parameters.
HLS related parameters.
Definition: hls_params.h:23
MP4 (ISO-BMFF) output related parameters.
DASH MPD related parameters.
Definition: mpd_params.h:16
Packaging parameters.
Definition: packager.h:38
EncryptionParams encryption_params
Encryption and Decryption Parameters.
Definition: packager.h:65
Mp4OutputParams mp4_output_params
MP4 (ISO-BMFF) output related parameters.
Definition: packager.h:42
HlsParams hls_params
HLS related parameters.
Definition: packager.h:62
uint32_t transport_stream_timestamp_offset_ms
Definition: packager.h:46
AdCueGeneratorParams ad_cue_generator_params
Out of band cuepoint parameters.
Definition: packager.h:51
BufferCallbackParams buffer_callback_params
Buffer callback params.
Definition: packager.h:69
ChunkingParams chunking_params
Chunking (segmentation) related parameters.
Definition: packager.h:48
MpdParams mpd_params
DASH MPD related parameters.
Definition: packager.h:60
std::string temp_dir
Specify temporary directory for intermediate temporary files.
Definition: packager.h:40
Defines a single input/output stream.
Definition: packager.h:76
std::string output_format
Definition: packager.h:92
std::vector< std::string > dash_accessiblities
Optional for DASH output. It defines Accessibility elements of the stream.
Definition: packager.h:135
std::string hls_iframe_playlist_name
Definition: packager.h:129
std::string output
Definition: packager.h:86
std::vector< std::string > dash_roles
Optional for DASH output. It defines Role elements of the stream.
Definition: packager.h:137
std::string hls_group_id
Definition: packager.h:123
bool dash_only
Set to true to indicate that the stream is for dash only.
Definition: packager.h:140
std::string stream_selector
Definition: packager.h:82
uint32_t trick_play_factor
Definition: packager.h:104
bool hls_only
Set to true to indicate that the stream is for hls only.
Definition: packager.h:142
std::string drm_label
Definition: packager.h:100
std::string hls_name
Definition: packager.h:120
std::string hls_playlist_name
Definition: packager.h:126
std::vector< std::string > hls_characteristics
Definition: packager.h:132
std::string input
Input/source media file path or network stream URL. Required.
Definition: packager.h:78
std::string language
Definition: packager.h:111
std::string segment_template
Specifies segment template. Can be empty.
Definition: packager.h:88
Parameters used for testing.
Definition: packager.h:26
bool dump_stream_info
Whether to dump input stream info.
Definition: packager.h:28
bool inject_fake_clock
Definition: packager.h:31
std::string injected_library_version
Definition: packager.h:34