ストリーム可能な音楽をmp3ファイルとして表示するFUSEファイルシステムを作成しようとしています。 ID3v1.1タグが読み込まれたときにオーディオをストリーミングしたくないので、direct_ioとmax_readahead = 0のファイルシステムをマウントします。FUSE fseek direct_ioで予期しない動作が発生する
しかし、私は(libid3tagが何をするかもある)、これを行う際に端から-2880バイトをオフセットして、私が手2752バイトの読み込み:
char tmp[255];
FILE* f = fopen("foo.mp3", "r");
fseek(f, -128, SEEK_END);
fread(tmp, 1, 10, f);
これはなぜでしょうか?私は、サイズ10の最後からちょうど128バイトのオフセットで読み込むことを期待しています。
読み込まれるバイト数は多少異なるようです。
は、読み取りと関数freadを交換するには違いはありません。 –
私の一時的な解決策は、最後にID3v1.1タグの前に8192バイトのパディングを追加することです。きれいではありませんが、うまくいくようです。 –