gstpbutilscodecutils

gstpbutilscodecutils — Miscellaneous codec-specific utility functions

Functions

Includes

#include <gst/pbutils/codec-utils.h>

Description

Provides codec-specific ulility functions such as functions to provide the codec profile and level in human-readable string form from header data.

Functions

gst_codec_utils_aac_get_sample_rate_from_index ()

guint
gst_codec_utils_aac_get_sample_rate_from_index
                               (guint sr_idx);

Translates the sample rate index found in AAC headers to the actual sample rate.

Parameters

sr_idx

Sample rate index as from the AudioSpecificConfig (MPEG-4 container) or ADTS frame header

 

Returns

The sample rate if sr_idx is valid, 0 otherwise.


gst_codec_utils_aac_get_index_from_sample_rate ()

gint
gst_codec_utils_aac_get_index_from_sample_rate
                               (guint rate);

Translates the sample rate to the index corresponding to it in AAC spec.

Parameters

rate

Sample rate

 

Returns

The AAC index for this sample rate, -1 if the rate is not a valid AAC sample rate.


gst_codec_utils_aac_get_profile ()

const gchar *
gst_codec_utils_aac_get_profile (const guint8 *audio_config,
                                 guint len);

Returns the profile of the given AAC stream as a string. The profile is determined using the AudioObjectType field which is in the first 5 bits of audio_config .

HE-AAC support has not yet been implemented.

Parameters

audio_config

a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1 (see gst_codec_utils_aac_get_level() for a more details).

 

len

Length of audio_config in bytes

 

Returns

The profile as a const string and NULL if the profile could not be determined.


gst_codec_utils_aac_get_level ()

const gchar *
gst_codec_utils_aac_get_level (const guint8 *audio_config,
                               guint len);

Determines the level of a stream as defined in ISO/IEC 14496-3. For AAC LC streams, the constraints from the AAC audio profile are applied. For AAC Main, LTP, SSR and others, the Main profile is used.

The audio_config parameter follows the following format, starting from the most significant bit of the first byte:

  • Bit 0:4 contains the AudioObjectType

  • Bit 5:8 contains the sample frequency index (if this is 0xf, then the next 24 bits define the actual sample frequency, and subsequent fields are appropriately shifted).

  • Bit 9:12 contains the channel configuration

HE-AAC support has not yet been implemented.

Parameters

audio_config

a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1.

 

len

Length of audio_config in bytes

 

Returns

The level as a const string and NULL if the level could not be determined.


gst_codec_utils_aac_get_channels ()

guint
gst_codec_utils_aac_get_channels (const guint8 *audio_config,
                                  guint len);

Returns the channels of the given AAC stream.

Parameters

audio_config

a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1.

 

Returns

The channels or 0 if the channel could not be determined.

Since 1.10


gst_codec_utils_aac_get_sample_rate ()

guint
gst_codec_utils_aac_get_sample_rate (const guint8 *audio_config,
                                     guint len);

Translates the sample rate index found in AAC headers to the actual sample rate.

Parameters

audio_config

a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1.

 

len

Length of audio_config in bytes

 

Returns

The sample rate if sr_idx is valid, 0 otherwise.

Since 1.10


gst_codec_utils_aac_caps_set_level_and_profile ()

gboolean
gst_codec_utils_aac_caps_set_level_and_profile
                               (GstCaps *caps,
                                const guint8 *audio_config,
                                guint len);

Sets the level and profile on caps if it can be determined from audio_config . See gst_codec_utils_aac_get_level() and gst_codec_utils_aac_get_profile() for more details on the parameters. caps must be audio/mpeg caps with an "mpegversion" field of either 2 or 4. If mpegversion is 4, the "base-profile" field is also set in caps .

Parameters

caps

the GstCaps to which level and profile fields are to be added

 

audio_config

a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1 (see below for a more details).

 

len

Length of audio_config in bytes

 

Returns

TRUE if the level and profile could be set, FALSE otherwise.


gst_codec_utils_h264_get_profile ()

const gchar *
gst_codec_utils_h264_get_profile (const guint8 *sps,
                                  guint len);

Converts the profile indication (profile_idc) in the stream's sequence parameter set into a string. The SPS is expected to have the following format, as defined in the H.264 specification. The SPS is viewed as a bitstream here, with bit 0 being the most significant bit of the first byte.

  • Bit 0:7 - Profile indication

  • Bit 8 - constraint_set0_flag

  • Bit 9 - constraint_set1_flag

  • Bit 10 - constraint_set2_flag

  • Bit 11 - constraint_set3_flag

  • Bit 12 - constraint_set3_flag

  • Bit 13:15 - Reserved

  • Bit 16:24 - Level indication

Parameters

sps

Pointer to the sequence parameter set for the stream.

 

len

Length of the data available in sps .

 

Returns

The profile as a const string, or NULL if there is an error.


gst_codec_utils_h264_get_level ()

const gchar *
gst_codec_utils_h264_get_level (const guint8 *sps,
                                guint len);

Converts the level indication (level_idc) in the stream's sequence parameter set into a string. The SPS is expected to have the same format as for gst_codec_utils_h264_get_profile().

Parameters

sps

Pointer to the sequence parameter set for the stream.

 

len

Length of the data available in sps .

 

Returns

The level as a const string, or NULL if there is an error.


gst_codec_utils_h264_caps_set_level_and_profile ()

gboolean
gst_codec_utils_h264_caps_set_level_and_profile
                               (GstCaps *caps,
                                const guint8 *sps,
                                guint len);

Sets the level and profile in caps if it can be determined from sps . See gst_codec_utils_h264_get_level() and gst_codec_utils_h264_get_profile() for more details on the parameters.

Parameters

caps

the GstCaps to which the level and profile are to be added

 

sps

Pointer to the sequence parameter set for the stream.

 

len

Length of the data available in sps .

 

Returns

TRUE if the level and profile could be set, FALSE otherwise.


gst_codec_utils_h264_get_level_idc ()

guint8
gst_codec_utils_h264_get_level_idc (const gchar *level);

Transform a level string from the caps into the level_idc

Parameters

level

A level string from caps

 

Returns

the level_idc or 0 if the level is unknown


gst_codec_utils_h265_get_profile ()

const gchar *
gst_codec_utils_h265_get_profile (const guint8 *profile_tier_level,
                                  guint len);

Converts the profile indication (general_profile_idc) in the stream's profile_level_tier structure into a string. The profile_tier_level is expected to have the following format, as defined in the H.265 specification. The profile_tier_level is viewed as a bitstream here, with bit 0 being the most significant bit of the first byte.

  • Bit 0:1 - general_profile_space

  • Bit 2 - general_tier_flag

  • Bit 3:7 - general_profile_idc

  • Bit 8:39 - gernal_profile_compatibility_flags

  • Bit 40 - general_progressive_source_flag

  • Bit 41 - general_interlaced_source_flag

  • Bit 42 - general_non_packed_constraint_flag

  • Bit 43 - general_frame_only_constraint_flag

  • Bit 44:87 - general_reserved_zero_44bits

  • Bit 88:95 - general_level_idc

Parameters

profile_tier_level

Pointer to the profile_tier_level structure for the stream.

 

len

Length of the data available in profile_tier_level

 

Returns

The profile as a const string, or NULL if there is an error.

Since 1.4


gst_codec_utils_h265_get_tier ()

const gchar *
gst_codec_utils_h265_get_tier (const guint8 *profile_tier_level,
                               guint len);

Converts the tier indication (general_tier_flag) in the stream's profile_tier_level structure into a string. The profile_tier_level is expected to have the same format as for gst_codec_utils_h264_get_profile().

Parameters

profile_tier_level

Pointer to the profile_tier_level structure for the stream.

 

len

Length of the data available in profile_tier_level .

 

Returns

The tier as a const string, or NULL if there is an error.

Since 1.4


gst_codec_utils_h265_get_level ()

const gchar *
gst_codec_utils_h265_get_level (const guint8 *profile_tier_level,
                                guint len);

Converts the level indication (general_level_idc) in the stream's profile_tier_level structure into a string. The profiel_tier_level is expected to have the same format as for gst_codec_utils_h264_get_profile().

Parameters

profile_tier_level

Pointer to the profile_tier_level structure for the stream

 

len

Length of the data available in profile_tier_level .

 

Returns

The level as a const string, or NULL if there is an error.

Since 1.4


gst_codec_utils_h265_get_level_idc ()

guint8
gst_codec_utils_h265_get_level_idc (const gchar *level);

Transform a level string from the caps into the level_idc

Parameters

level

A level string from caps

 

Returns

the level_idc or 0 if the level is unknown

Since 1.4


gst_codec_utils_h265_caps_set_level_tier_and_profile ()

gboolean
gst_codec_utils_h265_caps_set_level_tier_and_profile
                               (GstCaps *caps,
                                const guint8 *profile_tier_level,
                                guint len);

Sets the level, tier and profile in caps if it can be determined from profile_tier_level . See gst_codec_utils_h265_get_level(), gst_codec_utils_h265_get_tier() and gst_codec_utils_h265_get_profile() for more details on the parameters.

Parameters

caps

the GstCaps to which the level, tier and profile are to be added

 

profile_tier_level

Pointer to the profile_tier_level struct

 

len

Length of the data available in profile_tier_level .

 

Returns

TRUE if the level, tier, profile could be set, FALSE otherwise.

Since 1.4


gst_codec_utils_mpeg4video_get_profile ()

const gchar *
gst_codec_utils_mpeg4video_get_profile
                               (const guint8 *vis_obj_seq,
                                guint len);

Converts the profile indication in the stream's visual object sequence into a string. vis_obj_seq is expected to be the data following the visual object sequence start code. Only the first byte (profile_and_level_indication) is used.

Parameters

vis_obj_seq

Pointer to the visual object sequence for the stream.

 

len

Length of the data available in sps .

 

Returns

The profile as a const string, or NULL if there is an error.


gst_codec_utils_mpeg4video_get_level ()

const gchar *
gst_codec_utils_mpeg4video_get_level (const guint8 *vis_obj_seq,
                                      guint len);

Converts the level indication in the stream's visual object sequence into a string. vis_obj_seq is expected to be the data following the visual object sequence start code. Only the first byte (profile_and_level_indication) is used.

Parameters

vis_obj_seq

Pointer to the visual object sequence for the stream.

 

len

Length of the data available in sps .

 

Returns

The level as a const string, or NULL if there is an error.


gst_codec_utils_mpeg4video_caps_set_level_and_profile ()

gboolean
gst_codec_utils_mpeg4video_caps_set_level_and_profile
                               (GstCaps *caps,
                                const guint8 *vis_obj_seq,
                                guint len);

Sets the level and profile in caps if it can be determined from vis_obj_seq . See gst_codec_utils_mpeg4video_get_level() and gst_codec_utils_mpeg4video_get_profile() for more details on the parameters.

Parameters

caps

the GstCaps to which the level and profile are to be added

 

vis_obj_seq

Pointer to the visual object sequence for the stream.

 

len

Length of the data available in sps .

 

Returns

TRUE if the level and profile could be set, FALSE otherwise.


gst_codec_utils_opus_create_caps ()

GstCaps *
gst_codec_utils_opus_create_caps (guint32 rate,
                                  guint8 channels,
                                  guint8 channel_mapping_family,
                                  guint8 stream_count,
                                  guint8 coupled_count,
                                  const guint8 *channel_mapping);

Creates Opus caps from the given parameters.

Parameters

rate

the sample rate

 

channels

the number of channels

 

channel_mapping_family

the channel mapping family

 

stream_count

the number of independent streams

 

coupled_count

the number of stereo streams

 

channel_mapping

the mapping between the streams.

[allow-none]

Returns

The GstCaps.

Since: 1.8


gst_codec_utils_opus_create_caps_from_header ()

GstCaps *
gst_codec_utils_opus_create_caps_from_header
                               (GstBuffer *header,
                                GstBuffer *comments);

Creates Opus caps from the given OpusHead header and comment header comments .

Parameters

header

OpusHead header

 

comments

Comment header or NULL.

[allow-none]

Returns

The GstCaps.

Since: 1.8


gst_codec_utils_opus_parse_caps ()

gboolean
gst_codec_utils_opus_parse_caps (GstCaps *caps,
                                 guint32 *rate,
                                 guint8 *channels,
                                 guint8 *channel_mapping_family,
                                 guint8 *stream_count,
                                 guint8 *coupled_count,
                                 guint8 channel_mapping[256]);

Parses Opus caps and fills the different fields with defaults if possible.

Parameters

caps

the GstCaps to which the level and profile are to be added

 

rate

the sample rate

 

channels

the number of channels

 

channel_mapping_family

the channel mapping family

 

stream_count

the number of independent streams

 

coupled_count

the number of stereo streams

 

channel_mapping

the mapping between the streams

 

Returns

TRUE if parsing was successful, FALSE otherwise.

Since: 1.8


gst_codec_utils_opus_create_header ()

GstBuffer *
gst_codec_utils_opus_create_header (guint32 rate,
                                    guint8 channels,
                                    guint8 channel_mapping_family,
                                    guint8 stream_count,
                                    guint8 coupled_count,
                                    const guint8 *channel_mapping,
                                    guint16 pre_skip,
                                    gint16 output_gain);

Creates OpusHead header from the given parameters.

Parameters

rate

the sample rate

 

channels

the number of channels

 

channel_mapping_family

the channel mapping family

 

stream_count

the number of independent streams

 

coupled_count

the number of stereo streams

 

channel_mapping

the mapping between the streams.

[allow-none]

pre_skip

Pre-skip in 48kHz samples or 0

 

output_gain

Output gain or 0

 

Returns

The GstBuffer containing the OpusHead.

Since: 1.8


gst_codec_utils_opus_parse_header ()

gboolean
gst_codec_utils_opus_parse_header (GstBuffer *header,
                                   guint32 *rate,
                                   guint8 *channels,
                                   guint8 *channel_mapping_family,
                                   guint8 *stream_count,
                                   guint8 *coupled_count,
                                   guint8 channel_mapping[256],
                                   guint16 *pre_skip,
                                   gint16 *output_gain);

Parses the OpusHead header.

Parameters

header

the OpusHead GstBuffer

 

rate

the sample rate

 

channels

the number of channels

 

channel_mapping_family

the channel mapping family

 

stream_count

the number of independent streams

 

coupled_count

the number of stereo streams

 

channel_mapping

the mapping between the streams

 

pre_skip

Pre-skip in 48kHz samples or 0

 

output_gain

Output gain or 0

 

Returns

TRUE if parsing was successful, FALSE otherwise.

Since: 1.8

Types and Values