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 : 無効
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
サンプルレート・ビットレートなどの、エンコード固有の追加プロパティ。
エンコーディング
フォーマット:作成など
pa_format_info *pa_format_info_new(void);
新しい pa_format_info 構造体を作成する。
クライアントは、少なくとも encoding フィールドを自分で初期化する必要がある。
pa_format_info_free() で解放する。
クライアントは、少なくとも encoding フィールドを自分で初期化する必要がある。
pa_format_info_free() で解放する。
チェック
int pa_format_info_is_compatible(const pa_format_info *first, const pa_format_info *second);
first で表される形式が、second で表される形式のサブセットである場合は、0 以外の値を返す。
つまり、second には、first のすべてのフィールドが必要だが、その逆は、必ずしも真である必要はない。
これは通常、ストリームの形式が、特定のシンクと互換性があるかどうかを確認するために、使用されることが想定されている。
このような場合、first はシンクの形式になり、second はストリームの形式になる。
つまり、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 で未指定のままにしておく必要がある。
ストリームパラメータの一部 (サンプルレートなど) について、サーバーに選択させて、デバイスパラメータと一致させるようにする場合は、この関数を使用しないこと。
サーバーがパラメータ値を選択できるようにするためには、そのパラメータを、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 引数は無視されます。
可変サイズ時間変換を持つ形式の場合、この関数は失敗する。
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 : 無効
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_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 でサンプル形式が指定されていない場合は、サーバーがストリームサンプル形式を選択する。
その場合、ストリームサンプル形式は、デバイスのサンプル形式と一致する可能性が高く、サンプル形式の変換は回避される。
※PCM の場合、pa_format_info でサンプル形式が指定されていない場合は、サーバーがストリームサンプル形式を選択する。
その場合、ストリームサンプル形式は、デバイスのサンプル形式と一致する可能性が高く、サンプル形式の変換は回避される。
void pa_format_info_set_rate(pa_format_info *f, int rate);
プロパティにサンプルレートをセットする。
PCM の場合、pa_format_info でサンプルレートが指定されていない場合は、サーバーが選択する。
PCM の場合、pa_format_info でサンプルレートが指定されていない場合は、サーバーが選択する。