MediaInfo

primo::avblocks::MediaInfo

class MediaInfo : public primo::avblocks::Block

Analyzes a file or a stream and provides information about its type and properties.

Public Functions

virtual primo::codecs::StreamInfoEnum *streams() const = 0

Returns a collection of StreamInfo objects describing the audio and video streams (tracks) found in the input.

Normally the caller is not required and should not release the returned object. However it is allowed to retain the collection and it will be valid even when the MediaInfo instance is destroyed. In all cases when the caller retains the returned collection it should release it when it is not needed anymore.

Deprecated:

Please use primo::avblocks::MediaInfo::outputs instead.

Returns:

A read-only collection of StreamInfo objects. Each StreamInfo object in the collection represents a stream (track) in the analyzed input.

virtual void setInputFile(const char_t *filename) = 0

Sets the input that should be analyzed.

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Parameters:

filename – [in] a filename as an Unicode zero terminated string. If NULL the filename is cleared. When not NULL the filename is copied internally and is not required to be valid after the method returns.

virtual const char_t *inputFile() const = 0

Returns the input file previously set via setInputFile().

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Returns:

A filename as an Unicode zero terminated string. Can be NULL if the source file is not set.

virtual void setInputStream(primo::Stream *stream) = 0

Sets the input stream that should be analyzed.

This is an alternative to setInputFile().

MediaInfo will use the input file when both an input file and input stream are set.

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Parameters:

stream – [in] A pointer to a Stream object. If NULL the input stream is cleared. Internally the Stream object is retained by MediaInfo, so it is safe to release it after this method returns.

virtual primo::Stream *inputStream() const = 0

Returns the input stream previously set via setInputStream().

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Returns:

A Stream object. Can be NULL if the source stream is not set.

virtual void setStreamType(primo::codecs::StreamType::Enum streamType) = 0

Forces a specific stream type.

If the input is a file and the stream type is not set, the stream type is deduced from the filename extension. If the input is a stream, MediaInfo requires the stream type to be specified. If the stream type is set to something other than StreamType::Unknown, it takes precedence and is used by MediaInfo regardless of the detected stream type.

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Parameters:

streamType – [in] stream type such as AVI, WAV, MP4, etc.

virtual primo::codecs::StreamType::Enum streamType() const = 0

Returns the stream type previously set via setStreamType() or the one detected by MediaInfo.

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Returns:

input stream type. The default value is StreamType::Unknown.

virtual primo::codecs::StreamSubType::Enum streamSubType() const = 0

Returns the stream subtype detected by MediaInfo.

Deprecated:

Please use primo::avblocks::MediaInfo::inputs instead.

Returns:

input stream subtype. The default value is StreamSubType::Unknown.

virtual bool_t load() = 0

Analyzes the input specified by setInputFile() or setInputStream() and loads the information in the MediaInfo object.

If this method is successful the information about the detected media streams (tracks) and metadata can be obtained from MediaInfo.

Deprecated:

Please use primo::avblocks::MediaInfo::open instead.

Returns:

TRUE if the input is successfully analyzed, otherwise FALSE.

virtual primo::codecs::Metadata *metadata() const = 0

Returns the metadata for the input.

Normally the caller is not required and should not release the returned object. However it is allowed to retain the Metadata object and it will be valid even when the MediaInfo instance is destroyed. In all cases when the caller retains the returned object it should release it when it is not needed anymore.

Deprecated:

Please use primo::avblocks::MediaInfo::outputs instead.

Returns:

A pointer to a Metadata object. Can be NULL if the input has no metadata.

virtual bool_t isReady() = 0

Indicates whether stream info and metadata have been loaded and parsed.

See also

MediaInfo::push

virtual bool_t push(int32_t inputIndex, primo::codecs::MediaSample *inputSample) = 0

Pushes input data to the MediaInfo.

Remark

In order to use this method the inputs()->at(0)->streamType() must be set and open() must be called.

Parameters:
  • inputIndex – [in] Specifies the index of the input socket whose data is pushed to the MediaInfo. Must be zero.

  • inputSample – [in] A pointer to a MediaSample object that contains the input data.

Returns:

TRUE The MediaInfo has successfully processed the input data, otherwise FALSE.

virtual MediaSocketList *inputs() const = 0

Returns a modifiable collection of MediaSocket objects which describe the input data of the MediaInfo.

The collection contains one default MediaSocket that must be configured.

Each socket in the collection represents an input point - it can be a container with one or more streams or just an elementary stream.

Returns:

A pointer to a collection of input sockets. Cannot be NULL.

virtual MediaSocketList *outputs() const = 0

Returns an immutable collection of MediaSocket objects describing the audio and video streams (tracks) found in the input.

Returns:

A pointer to a collection of output sockets. Cannot be NULL.

virtual bool_t open() = 0

Analyzes the input specified by inputs() and loads the information in the MediaInfo object.

If this method succeeds the information about the detected media streams (tracks) and metadata can be obtained from MediaInfo.

Returns:

TRUE if the input is successfully analyzed.

Returns:

FALSE if the input could not be analyzed. In this case, the error() method will return detailed error information.