入力raw pcm
ストリームをmp3
を使用するように変換していますlame
。そのライブラリ内のencoding関数はmp3
、型の配列でエンコードされたサンプルを返しますunsigned char
。flv
このmp3でエンコードされたストリームは、エンコードされたサンプルをchar
配列に書き込む関数を使用するコンテナー内に配置する必要があります。私の問題は、lame
(タイプのunsigned char
)からflv
ライブラリに配列を渡そうとしていることです。次のコード(シンボリックのみ)は、私の問題を示しています。
/* cast from unsigned char to char. */
#include <stdio.h>
#include <stdlib.h>
void display(char *buff, int len) {
int i = 0;
for(i = 0; i < len; i++) {
printf("buff[%d] = %c\n", i, buff[i]);
}
}
int main() {
int len = 10;
unsigned char* buff = (unsigned char*) malloc(len * sizeof(unsigned char));
int i = 0;
for(i = 65; i < (len + 65); i++) {
buff[i] = (unsigned char) i;
printf("char = %c", (char) i);
}
printf("Displaying array in main.\n");
for(i = 0; i < len; i++) {
printf("buff[%d] = %u\n", i, 'buff[i]');
}
printf("Displaying array in func.\n");
display(buff, len);
return 0;
}
私の質問: 1。以下のコードの暗黙の型変換は安全ですか?関数
に渡すことによって示されるように安全ですか?奇妙な動作が発生する可能性がありますか?
2。関数に固執する以外に選択肢がほとんどないことを考えるとそれらは存在しますが、sの配列をsに変換する「安全な」方法はありますか?buff
display
unsigned char
char