diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Agent/TextureSender')
-rw-r--r-- | OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs index 3764685..47dcbcd 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Drawing; | ||
30 | using System.IO; | 31 | using System.IO; |
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using System.Text; | 33 | using System.Text; |
@@ -166,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender | |||
166 | 167 | ||
167 | // Do Decode! | 168 | // Do Decode! |
168 | if (decode) | 169 | if (decode) |
169 | Decode(assetID, j2kData); | 170 | Util.FireAndForget(delegate { Decode(assetID, j2kData); }, null, "J2KDecoderModule.BeginDecode"); |
170 | } | 171 | } |
171 | } | 172 | } |
172 | 173 | ||
@@ -182,6 +183,25 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender | |||
182 | return DoJ2KDecode(assetID, j2kData, out layers, out components); | 183 | return DoJ2KDecode(assetID, j2kData, out layers, out components); |
183 | } | 184 | } |
184 | 185 | ||
186 | public Image DecodeToImage(byte[] j2kData) | ||
187 | { | ||
188 | if (m_useCSJ2K) | ||
189 | return J2kImage.FromBytes(j2kData); | ||
190 | else | ||
191 | { | ||
192 | ManagedImage mimage; | ||
193 | Image image; | ||
194 | if (OpenJPEG.DecodeToImage(j2kData, out mimage, out image)) | ||
195 | { | ||
196 | mimage = null; | ||
197 | return image; | ||
198 | } | ||
199 | else | ||
200 | return null; | ||
201 | } | ||
202 | } | ||
203 | |||
204 | |||
185 | #endregion IJ2KDecoder | 205 | #endregion IJ2KDecoder |
186 | 206 | ||
187 | /// <summary> | 207 | /// <summary> |
@@ -211,7 +231,11 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender | |||
211 | { | 231 | { |
212 | try | 232 | try |
213 | { | 233 | { |
214 | List<int> layerStarts = CSJ2K.J2kImage.GetLayerBoundaries(new MemoryStream(j2kData)); | 234 | List<int> layerStarts; |
235 | using (MemoryStream ms = new MemoryStream(j2kData)) | ||
236 | { | ||
237 | layerStarts = CSJ2K.J2kImage.GetLayerBoundaries(ms); | ||
238 | } | ||
215 | 239 | ||
216 | if (layerStarts != null && layerStarts.Count > 0) | 240 | if (layerStarts != null && layerStarts.Count > 0) |
217 | { | 241 | { |