linux-2.6.33/snd_pcm_update_hw_ptr_pos()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#b2bd0c8d]
#backlinks
*説明 [#hd84564d]
-パス: [[linux-2.6.33/sound/core/pcm_lib.c]]
-FIXME: 現在の再生位置、録音位置を取得する。
--説明
**引数 [#u7ae7246]
-struct snd_pcm_substream *substream
--
--[[linux-2.6.33/snd_pcm_substream]]
-struct snd_pcm_runtime *runtime
--
--[[linux-2.6.33/snd_pcm_runtime]]
**返り値 [#r0becd3c]
-snd_pcm_uframes_t
--現在の再生、録音位置を返す。
オーバーランあるいはアンダーランの場合は SNDRV_PCM_POS_XR...
**参考 [#l59fed48]
*実装 [#td469302]
static snd_pcm_uframes_t
snd_pcm_update_hw_ptr_pos(struct snd_pcm_substream *subs...
struct snd_pcm_runtime *runtime)
{
snd_pcm_uframes_t pos;
-現在の再生、録音位置(オーディオフレーム単位)
--[[linux-2.6.33/snd_pcm_uframes_t]]
pos = substream->ops->pointer(substream);
-ドライバから現在の再生、録音位置を取得する。
-substream->ops は snd_pcm_ops 型
--[[linux-2.6.33/snd_pcm_ops]]
if (pos == SNDRV_PCM_POS_XRUN)
return pos; /* XRUN */
-オーバーラン or アンダーランの場合は、呼び出し元にもオー...
--[[linux-2.6.33/SNDRV_PCM_POS_XRUN]]
if (pos >= runtime->buffer_size) {
-バッファサイズを超えた位置が返ってきた場合は、
エラーメッセージを出し、位置を 0 に修正する。
if (printk_ratelimit()) {
-
--[[linux-2.6.33/printk_ratelimit()]]
char name[16];
pcm_debug_name(substream, name, sizeof(name));
snd_printd(KERN_ERR "BUG: %s, pos = 0x%lx, "
"buffer size = 0x%lx, period size = 0x%lx\n",
name, pos, runtime->buffer_size,
runtime->period_size);
-
--[[linux-2.6.33/pcm_debug_name()]]
-
--[[linux-2.6.33/snd_printd()]]
}
pos = 0;
}
pos -= pos % runtime->min_align;
return pos;
}
*コメント [#yfdd9dbe]
終了行:
*参照元 [#b2bd0c8d]
#backlinks
*説明 [#hd84564d]
-パス: [[linux-2.6.33/sound/core/pcm_lib.c]]
-FIXME: 現在の再生位置、録音位置を取得する。
--説明
**引数 [#u7ae7246]
-struct snd_pcm_substream *substream
--
--[[linux-2.6.33/snd_pcm_substream]]
-struct snd_pcm_runtime *runtime
--
--[[linux-2.6.33/snd_pcm_runtime]]
**返り値 [#r0becd3c]
-snd_pcm_uframes_t
--現在の再生、録音位置を返す。
オーバーランあるいはアンダーランの場合は SNDRV_PCM_POS_XR...
**参考 [#l59fed48]
*実装 [#td469302]
static snd_pcm_uframes_t
snd_pcm_update_hw_ptr_pos(struct snd_pcm_substream *subs...
struct snd_pcm_runtime *runtime)
{
snd_pcm_uframes_t pos;
-現在の再生、録音位置(オーディオフレーム単位)
--[[linux-2.6.33/snd_pcm_uframes_t]]
pos = substream->ops->pointer(substream);
-ドライバから現在の再生、録音位置を取得する。
-substream->ops は snd_pcm_ops 型
--[[linux-2.6.33/snd_pcm_ops]]
if (pos == SNDRV_PCM_POS_XRUN)
return pos; /* XRUN */
-オーバーラン or アンダーランの場合は、呼び出し元にもオー...
--[[linux-2.6.33/SNDRV_PCM_POS_XRUN]]
if (pos >= runtime->buffer_size) {
-バッファサイズを超えた位置が返ってきた場合は、
エラーメッセージを出し、位置を 0 に修正する。
if (printk_ratelimit()) {
-
--[[linux-2.6.33/printk_ratelimit()]]
char name[16];
pcm_debug_name(substream, name, sizeof(name));
snd_printd(KERN_ERR "BUG: %s, pos = 0x%lx, "
"buffer size = 0x%lx, period size = 0x%lx\n",
name, pos, runtime->buffer_size,
runtime->period_size);
-
--[[linux-2.6.33/pcm_debug_name()]]
-
--[[linux-2.6.33/snd_printd()]]
}
pos = 0;
}
pos -= pos % runtime->min_align;
return pos;
}
*コメント [#yfdd9dbe]
ページ名: