Shaka Packager SDK
Classes | Public Member Functions | List of all members
shaka::media::Demuxer Class Reference

#include <demuxer.h>

Inheritance diagram for shaka::media::Demuxer:
shaka::media::OriginHandler shaka::media::MediaHandler

Public Member Functions

 Demuxer (const std::string &file_name)
 
void SetKeySource (std::unique_ptr< KeySource > key_source)
 
Status Run () override
 
void Cancel () override
 
MediaContainerName container_name ()
 
Status SetHandler (const std::string &stream_label, std::shared_ptr< MediaHandler > handler)
 
void SetLanguageOverride (const std::string &stream_label, const std::string &language_override)
 
void set_dump_stream_info (bool dump_stream_info)
 
- Public Member Functions inherited from shaka::media::MediaHandler
Status SetHandler (size_t output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next available output stream index.
 
Status Initialize ()
 
bool IsConnected ()
 Validate if the handler is connected to its upstream handler.
 

Protected Member Functions

MediaHandler implementation overrides.
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
bool ValidateOutputStreamIndex (size_t stream_index) const override
 Validate if the stream at the specified index actually exists.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
virtual Status OnFlushRequest (size_t input_stream_index)
 Event handler for flush request at the specific input stream index.
 
Status Dispatch (std::unique_ptr< StreamData > stream_data) const
 
Status DispatchStreamInfo (size_t stream_index, std::shared_ptr< const StreamInfo > stream_info) const
 Dispatch the stream info to downstream handlers.
 
Status DispatchMediaSample (size_t stream_index, std::shared_ptr< const MediaSample > media_sample) const
 Dispatch the media sample to downstream handlers.
 
Status DispatchTextSample (size_t stream_index, std::shared_ptr< const TextSample > text_sample) const
 Dispatch the text sample to downstream handlers.
 
Status DispatchSegmentInfo (size_t stream_index, std::shared_ptr< const SegmentInfo > segment_info) const
 Dispatch the segment info to downstream handlers.
 
Status DispatchScte35Event (size_t stream_index, std::shared_ptr< const Scte35Event > scte35_event) const
 Dispatch the scte35 event to downstream handlers.
 
Status DispatchCueEvent (size_t stream_index, std::shared_ptr< const CueEvent > cue_event) const
 Dispatch the cue event to downstream handlers.
 
Status FlushDownstream (size_t output_stream_index)
 Flush the downstream connected at the specified output stream index.
 
Status FlushAllDownstreams ()
 Flush all connected downstream handlers.
 
bool initialized ()
 
size_t num_input_streams () const
 
size_t next_output_stream_index () const
 
const std::map< size_t, std::pair< std::shared_ptr< MediaHandler >, size_t > > & output_handlers ()
 

Detailed Description

Demuxer is responsible for extracting elementary stream samples from a media file, e.g. an ISO BMFF file.

Definition at line 33 of file demuxer.h.

Constructor & Destructor Documentation

◆ Demuxer()

shaka::media::Demuxer::Demuxer ( const std::string &  file_name)
explicit
Parameters
file_namespecifies the input source. It uses prefix matching to create a proper File object. The user can extend File to support a custom File object with its own prefix.

Definition at line 75 of file demuxer.cc.

Member Function Documentation

◆ Cancel()

void shaka::media::Demuxer::Cancel ( )
overridevirtual

Cancel a demuxing job in progress. Will cause Run to exit with an error status of type CANCELLED.

Implements shaka::media::OriginHandler.

Definition at line 128 of file demuxer.cc.

◆ container_name()

MediaContainerName shaka::media::Demuxer::container_name ( )
inline
Returns
Container name (type). Value is CONTAINER_UNKNOWN if the demuxer is not initialized.

Definition at line 57 of file demuxer.h.

◆ InitializeInternal()

Status shaka::media::Demuxer::InitializeInternal ( )
inlineoverrideprotectedvirtual

Internal implementation of initialize. Note that it should only initialize the MediaHandler itself. Downstream handlers are handled in Initialize().

Implements shaka::media::MediaHandler.

Definition at line 81 of file demuxer.h.

◆ Process()

Status shaka::media::Demuxer::Process ( std::unique_ptr< StreamData stream_data)
inlineoverrideprotectedvirtual

Process the incoming stream data. Note that (1) stream_data.stream_index should be the input stream index; (2) The implementation needs to call DispatchXxx to dispatch the processed stream data to the downstream handlers after finishing processing if needed.

Implements shaka::media::MediaHandler.

Definition at line 82 of file demuxer.h.

◆ Run()

Status shaka::media::Demuxer::Run ( )
overridevirtual

Drive the remuxing from demuxer side (push). Read the file and push the Data to Muxer until Eof.

Implements shaka::media::OriginHandler.

Definition at line 87 of file demuxer.cc.

◆ SetHandler()

Status shaka::media::Demuxer::SetHandler ( const std::string &  stream_label,
std::shared_ptr< MediaHandler handler 
)

Set the handler for the specified stream.

Parameters
stream_labelcan be 'audio', 'video', or stream number (zero based).
handleris the handler for the specified stream.

Definition at line 132 of file demuxer.cc.

◆ SetKeySource()

void shaka::media::Demuxer::SetKeySource ( std::unique_ptr< KeySource key_source)

Set the KeySource for media decryption.

Parameters
key_sourcepoints to the source of decryption keys. The key source must support fetching of keys for the type of media being demuxed.

Definition at line 83 of file demuxer.cc.

◆ SetLanguageOverride()

void shaka::media::Demuxer::SetLanguageOverride ( const std::string &  stream_label,
const std::string &  language_override 
)

Override the language in the specified stream. If the specified stream is a video stream or invalid, this function is a no-op.

Parameters
stream_labelcan be 'audio', 'video', or stream number (zero based).
language_overrideis the new language.

Definition at line 142 of file demuxer.cc.


The documentation for this class was generated from the following files: