PulseAudio:フォーマット

struct pa_format_infoフォーマット構造体
エンコーディング
pa_encoding_to_stringエンコーディングタイプから文字列を返す
pa_encoding_from_string文字列からエンコーディングタイプを取得
フォーマット:作成など
pa_format_info_newフォーマット構造体を作成
pa_format_info_copyフォーマット構造体を複製
pa_format_info_freeフォーマット構造体を解放
チェック
pa_format_info_validフォーマット構造体が有効か
pa_format_info_is_pcmPCM か
pa_format_info_is_compatible2つのフォーマットに互換性があるか
ほか
pa_format_info_snprintフォーマットを文字列にする
pa_format_info_from_string文字列からフォーマットを作成
pa_format_info_from_sample_specサンプル情報からフォーマットを作成
pa_format_info_to_sample_specフォーマットから、サンプル情報を取得
プロパティの取得
pa_format_info_get_prop_typeプロパティの指定キーのタイプを取得
pa_format_info_get_prop_intプロパティから整数の値を取得
pa_format_info_get_prop_int_rangeプロパティから整数の範囲値を取得
pa_format_info_get_prop_int_arrayプロパティから整数の配列を取得
pa_format_info_get_prop_stringプロパティから文字列を取得
pa_format_info_get_prop_string_arrayプロパティから文字列配列を取得
pa_format_info_free_string_array文字列配列のポインタを解放
pa_format_info_get_sample_formatプロパティからサンプルタイプを取得
pa_format_info_get_rateプロパティからサンプルレートを取得
pa_format_info_get_channelsプロパティからチャンネル数を取得
pa_format_info_get_channel_mapプロパティからチャンネルマップを取得
プロパティセット
pa_format_info_set_prop_intプロパティに整数値をセット
pa_format_info_set_prop_int_arrayプロパティに整数の配列値をセット
pa_format_info_set_prop_int_rangeプロパティに整数の範囲をセット
pa_format_info_set_prop_stringプロパティに文字列をセット
pa_format_info_set_prop_string_arrayプロパティに文字列の配列をセット
pa_format_info_set_sample_formatプロパティにサンプル形式をセット
pa_format_info_set_rateプロパティにサンプルレートをセット
pa_format_info_set_channelsプロパティにチャンネル数をセット
pa_format_info_set_channel_mapプロパティにチャンネルマップをセット
typedef struct pa_format_info {
    pa_encoding_t encoding;
    pa_proplist *plist;
} pa_format_info;
フォーマット構造体
encoding
エンコーディングのタイプ。

PA_ENCODING_ANY : 任意のエンコード形式。PCM または圧縮。
PA_ENCODING_PCM : PCM
PA_ENCODING_AC3_IEC61937
PA_ENCODING_EAC3_IEC61937
PA_ENCODING_MPEG_IEC61937 : MPEG-1 or MPEG-2 (Part 3)
PA_ENCODING_DTS_IEC61937
PA_ENCODING_MPEG2_AAC_IEC61937
PA_ENCODING_TRUEHD_IEC61937 : Dolby TrueHD
PA_ENCODING_DTSHD_IEC61937 : DTS-HD Master Audio
PA_ENCODING_INVALID = -1 : 無効
plist
サンプルレート・ビットレートなどの、エンコード固有の追加プロパティ。
エンコーディング
const char *pa_encoding_to_string(pa_encoding_t e);
エンコーディングタイプから文字列を返す
pa_encoding_t pa_encoding_from_string(const char *encoding);
文字列からエンコーディングタイプを取得
フォーマット:作成など
pa_format_info *pa_format_info_new(void);
新しい pa_format_info 構造体を作成する。
クライアントは、少なくとも encoding フィールドを自分で初期化する必要がある。
pa_format_info_free() で解放する。
pa_format_info *pa_format_info_copy(const pa_format_info *src);
新しいフォーマット構造体を作成して、src と同じ値にする。
void pa_format_info_free(pa_format_info *f);
フォーマット構造体を解放
チェック
int pa_format_info_valid(const pa_format_info *f);
フォーマット構造体が有効な値の場合は、0 以外の値を返す。
int pa_format_info_is_pcm(const pa_format_info *f);
フォーマット構造体が、PCM (つまり、非圧縮データ) 形式を表す場合は、0 以外の値を返す。
int pa_format_info_is_compatible(const pa_format_info *first, const pa_format_info *second);
first で表される形式が、second で表される形式のサブセットである場合は、0 以外の値を返す。
つまり、second には、first のすべてのフィールドが必要だが、その逆は、必ずしも真である必要はない。
これは通常、ストリームの形式が、特定のシンクと互換性があるかどうかを確認するために、使用されることが想定されている。
このような場合、first はシンクの形式になり、second はストリームの形式になる。
ほか
char *pa_format_info_snprint(char *s, size_t l, const pa_format_info *f);
フォーマットから、人間が読める形式の文字列を作成する。
戻り値
s のポインタが返る
pa_format_info *pa_format_info_from_string(const char *str);
pa_format_info_snprint() で作成された文字列から、フォーマットを作成する。
pa_format_info *pa_format_info_from_sample_spec(const pa_sample_spec *ss, const pa_channel_map *map);
サンプル情報からフォーマットを作成する。

ストリームパラメータの一部 (サンプルレートなど) について、サーバーに選択させて、デバイスパラメータと一致させるようにする場合は、この関数を使用しないこと。
サーバーがパラメータ値を選択できるようにするためには、そのパラメータを、pa_format_info で未指定のままにしておく必要がある。
map
チャンネルマップ。NULL の場合、サーバーが選択する。
int pa_format_info_to_sample_spec(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map);
f のフォーマットに対応する、pa_sample_spec および pa_channel_map を取得する。

PCM 以外の形式では、固定サイズ時間変換 (つまり、すべての IEC61937 カプセル化形式) がある場合、この形式に対応するサイズ時間変換を持つ「偽の」サンプル仕様が提供され、map 引数は無視されます。
可変サイズ時間変換を持つ形式の場合、この関数は失敗する。
戻り値
変換が失敗した場合は負の値を返し、成功した場合は 0 を返す。
プロパティの取得
pa_prop_type_t pa_format_info_get_prop_type(const pa_format_info *f, const char *key);
フォーマットのプロパティから、指定キーのタイプを取得する。
戻り値
PA_PROP_TYPE_INT : 整数
PA_PROP_TYPE_INT_RANGE : 整数の範囲
PA_PROP_TYPE_INT_ARRAY : 整数の配列
PA_PROP_TYPE_STRING : 文字列
PA_PROP_TYPE_STRING_ARRAY : 文字列の配列
PA_PROP_TYPE_INVALID : 無効
int pa_format_info_get_prop_int(const pa_format_info *f, const char *key, int *v);
フォーマットのプロパティから、整数タイプの値を取得する。
戻り値
成功時は 0、失敗時は負の値。
int pa_format_info_get_prop_int_range(const pa_format_info *f, const char *key, int *min, int *max);
フォーマットのプロパティから、整数範囲の値を取得する。
戻り値
成功時は 0、失敗時は負の値。
int pa_format_info_get_prop_int_array(const pa_format_info *f, const char *key, int **values, int *n_values);
フォーマットのプロパティから、整数の配列値を取得する。
values
配列のポインタが返る。pa_xfree() を使って解放する。
n_values
配列の数が返る
戻り値
成功時は 0、失敗時は負の値。
int pa_format_info_get_prop_string(const pa_format_info *f, const char *key, char **v);
フォーマットのプロパティから、文字列を取得する。
v
文字列のポインタが返る。pa_xfree() で解放する。
戻り値
成功時は 0、失敗時は負の値。
int pa_format_info_get_prop_string_array(const pa_format_info *f, const char *key, char ***values, int *n_values);
フォーマットのプロパティから、文字列の配列を取得する。
values
文字列配列のポインタが返る。pa_format_info_free_string_array() で解放する。
n_values
配列の数が返る。
戻り値
成功時は 0、失敗時は負の値。
void pa_format_info_free_string_array(char **values, int n_values);
pa_format_info_get_prop_string_array() で取得した、文字列配列のポインタを解放する。
int pa_format_info_get_sample_format(const pa_format_info *f, pa_sample_format_t *sf);
//ver 13.0
フォーマットのプロパティから、サンプルフォーマットのタイプを取得する。
戻り値
成功時は 0、失敗時はエラーコード、プロパティがない場合は負の値。
int pa_format_info_get_rate(const pa_format_info *f, uint32_t *rate);
//ver 13.0
フォーマットのプロパティから、サンプルレートを取得する。
戻り値
成功時は 0、失敗時はエラーコード、プロパティがない場合は負の値。
int pa_format_info_get_channels(const pa_format_info *f, uint8_t *channels);
//ver 13.0
フォーマットのプロパティから、チャンネル数を取得する。
戻り値
成功時は 0、失敗時はエラーコード、プロパティがない場合は負の値。
int pa_format_info_get_channel_map(const pa_format_info *f, pa_channel_map *map);
//ver 13.0
フォーマットのプロパティから、チャンネルマップを取得する。
戻り値
成功時は 0、失敗時はエラーコード、プロパティがない場合は負の値。
プロパティセット
void pa_format_info_set_prop_int(pa_format_info *f, const char *key, int value);
プロパティに整数値をセット
void pa_format_info_set_prop_int_array(pa_format_info *f, const char *key, const int *values, int n_values);
プロパティに整数の配列値をセット
void pa_format_info_set_prop_int_range(pa_format_info *f, const char *key, int min, int max);
プロパティに整数の範囲をセット
void pa_format_info_set_prop_string(pa_format_info *f, const char *key, const char *value);
プロパティに文字列をセット
void pa_format_info_set_prop_string_array(pa_format_info *f, const char *key, const char **values, int n_values);
プロパティに文字列の配列をセット
void pa_format_info_set_sample_format(pa_format_info *f, pa_sample_format_t sf);
プロパティにサンプル形式をセットする。

※PCM の場合、pa_format_info でサンプル形式が指定されていない場合は、サーバーがストリームサンプル形式を選択する。
その場合、ストリームサンプル形式は、デバイスのサンプル形式と一致する可能性が高く、サンプル形式の変換は回避される。
void pa_format_info_set_rate(pa_format_info *f, int rate);
プロパティにサンプルレートをセットする。
PCM の場合、pa_format_info でサンプルレートが指定されていない場合は、サーバーが選択する。
void pa_format_info_set_channels(pa_format_info *f, int channels);
プロパティにチャンネル数をセットする。
PCM の場合、pa_format_info でチャンネル数が指定されていない場合は、サーバーが選択する。
void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map);
プロパティにチャンネルマップをセットする。
PCM の場合、pa_format_info でチャンネルマップが指定されていない場合は、サーバーが選択する。