1

私は間違った質問をしているかもしれませんが、この分野での私の知識は非常に限られています。

acmStreamConvertPCMをGSM(6.10)に変換するために使用しています。

オーディオフォーマット:8kHz、16ビット、モノラル

PCMバッファサイズには640バイト(320サンプル)を使用しています。GSMバッファには、65バイトを使用しています。私の理解では、GSMは「常に」320サンプルを65バイトに変換します。

「ブロックまたはストリーム」と尋ねる理由は、同じacmStreamConvertハンドルを使用して複数のオーディオストリームを(リアルタイムで)安全に変換できるかどうか疑問に思っているからです。関数にはととのフラグがいくつかあるようですが、GSMにこの開始/終了シーケンスを使用する必要がありますかACM_STREAMCONVERTF_START?ヘッド/テールを使用する一部のフォーマットで必要になる可能性があることは理解していますが、GSMフォーマットでは必要ないことを望んでいますか?ACM_STREAMCONVERTF_ENDACM_STREAMCONVERTF_BLOCKALIGN

私はグループVOIPクライアントで作業しており、各クライアントはGSM形式を送信し、再生する前にPCMに変換する必要があります。クライアントごとに1つのACMハンドルが必要ないことを望んでいます。

4

1 に答える 1

1

ストリームベース、または少なくとも ACM API の使用法です。複数のストリームに同じ ACM オブジェクト/ハンドルを使用しようとすると、望ましくない結果が生じます。これは、失われたパケットを他のコーデックと同様に処理しないことも意味していると思います (その部分はまだ確認していません)。

于 2012-06-11T15:41:05.780 に答える