Revision | b30ceee5421a97fd3b59525b79bd3a9542e09c71 (tree) |
---|---|
Time | 2021-10-18 22:12:12 |
Author | yyagi <yyagi.dtxmania@gmai...> |
Commiter | yyagi |
#43056 oggのデコードでもmp3/wavと同じミス(ヘッダのオーバーライト)をしていたので修正。
@@ -70,9 +70,14 @@ namespace FDK | ||
70 | 70 | // create a buffer for reading samples |
71 | 71 | var readBuffer = new float[vorbis.Channels * vorbis.SampleRate * 5]; // 5sec buffer |
72 | 72 | |
73 | + for ( int i = 0; i < offset; i++ ) | |
74 | + { | |
75 | + Dest[ i ] = 0; | |
76 | + } | |
77 | + | |
73 | 78 | // go grab samples |
74 | 79 | int cnt; |
75 | - int p = 0; | |
80 | + int p = (int)offset; | |
76 | 81 | while ((cnt = vorbis.ReadSamples(readBuffer, 0, readBuffer.Length)) > 0) |
77 | 82 | { |
78 | 83 | bool bEnd = false; |
@@ -80,9 +85,9 @@ namespace FDK | ||
80 | 85 | // samples are interleaved (chan0, chan1, chan0, chan1, etc.) |
81 | 86 | // sample value range is -0.99999994f to 0.99999994f unless vorbis.ClipSamples == false |
82 | 87 | |
83 | - if (Dest.Length < p + cnt * 4) | |
88 | + if (Dest.Length + offset < p + cnt * 4) | |
84 | 89 | { |
85 | - cnt = (Dest.Length - p) / 4; | |
90 | + cnt = (Dest.Length +(int) offset - p) / 4; | |
86 | 91 | bEnd = true; |
87 | 92 | } |
88 | 93 | Buffer.BlockCopy(readBuffer, 0, Dest, p, cnt * 4); |