Does a decode without crashing.
authorCarl Hetherington <cth@carlh.net>
Tue, 11 Aug 2020 14:49:26 +0000 (16:49 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 13 Sep 2020 18:22:44 +0000 (20:22 +0200)
src/lib/fastvideo.cc

index b1a70f86d25256ae44666fd47b7aed7b6cc0e49d..bd3d480c618142c0f4da0d4aa6a1125c050d099d 100644 (file)
@@ -1,6 +1,7 @@
 #include "exceptions.h"
 #include "fastvideo.h"
 #include <fastvideo_decoder_j2k.h>
+#include <fastvideo_sdk.h>
 #include <iostream>
 
 
@@ -10,10 +11,24 @@ using boost::shared_ptr;
 shared_ptr<OpenJPEGImage>
 fastvideo_decompress_j2k (dcp::Data data, int reduce)
 {
-       fastStatus_t r = fastInit(1, true);
+       fastTraceCreate("/home/carl/trace.log");
+
+       /*
+       fastStatus_t r = fastInit(0, true);
        if (r != FAST_OK) {
                throw FastvideoError ("Init", r);
        }
+       */
+
+       fastSdkParametersHandle_t sdk_parameters;
+       fastStatus_t r = fastGetSdkParametersHandle(&sdk_parameters);
+       if (r != FAST_OK) {
+               throw FastvideoError ("GetSdkParametersHandle", r);
+       }
+       r = fastDecoderJ2kLibraryInit(sdk_parameters);
+       if (r != FAST_OK) {
+               throw FastvideoError ("J2kLibraryInit", r);
+       }
 
        fastJ2kImageInfo_t info;
        r = fastDecoderJ2kPredecode(&info, data.data().get(), data.size());
@@ -28,12 +43,12 @@ fastvideo_decompress_j2k (dcp::Data data, int reduce)
        fastDecoderJ2kStaticParameters_t parameters;
        memset(&parameters, 0, sizeof(fastDecoderJ2kStaticParameters_t));
 
-       parameters.ResolutionLevels = 5 - reduce;
+       parameters.ResolutionLevels = 0;
        parameters.verboseLevel = 1;
        parameters.enableROI = 0;
 
-       parameters.maxTileHeight = info.width;
-       parameters.maxTileWidth = info.height;
+       parameters.maxTileHeight = info.height;
+       parameters.maxTileWidth = info.width;
 
        parameters.windowX0 = 0;
        parameters.windowY0 = 0;
@@ -48,7 +63,23 @@ fastvideo_decompress_j2k (dcp::Data data, int reduce)
        parameters.imageInfo = &info;
        parameters.maxStreamSize = info.streamSize;
 
-       fastDecoderJ2kHandle_t decoder;
+       std::cout << "verboseLevel " << parameters.verboseLevel << "\n";
+       std::cout << "maxTileWidth " << parameters.maxTileWidth << "\n";
+       std::cout << "maxTileHeight " << parameters.maxTileHeight << "\n";
+       std::cout << "ResolutionLevels " << parameters.ResolutionLevels << "\n";
+       std::cout << "DecodePasses " << parameters.DecodePasses << "\n";
+       std::cout << "maxStreamSize " << parameters.maxStreamSize << "\n";
+       std::cout << "truncationMode " << parameters.truncationMode << "\n";
+       std::cout << "truncationRate " << parameters.truncationRate << "\n";
+       std::cout << "truncationLength " << parameters.truncationLength << "\n";
+       std::cout << "windowX0 " << parameters.windowX0 << "\n";
+       std::cout << "windowY0 " << parameters.windowY0 << "\n";
+       std::cout << "windowWidth " << parameters.windowWidth << "\n";
+       std::cout << "windowHeight " << parameters.windowHeight << "\n";
+       std::cout << "enableROI " << parameters.enableROI << "\n";
+       std::cout << "enableMemoryReallocation " << parameters.enableMemoryReallocation << "\n";
+
+       fastDecoderJ2kHandle_t decoder = 0;
        fastDeviceSurfaceBufferHandle_t buffer;
        r = fastDecoderJ2kCreate(
                        &decoder,
@@ -58,6 +89,7 @@ fastvideo_decompress_j2k (dcp::Data data, int reduce)
                        &buffer
                        );
        if (r != FAST_OK) {
+               fastTraceClose ();
                throw FastvideoError ("J2kCreate", r);
        }
 
@@ -111,7 +143,7 @@ fastvideo_decompress_j2k (dcp::Data data, int reduce)
                throw FastvideoError ("fastMalloc");
        }
 
-       r = fastDecoderJ2kTransform (decoder, decoded, decoded_size, &report);
+       r = fastDecoderJ2kTransform (decoder, data.data().get(), data.size(), &report);
        if (r != FAST_OK) {
                throw FastvideoError ("J2kTransform");
        }
@@ -171,5 +203,7 @@ fastvideo_decompress_j2k (dcp::Data data, int reduce)
        }
 
        fastFree(decoded);
+
+       return shared_ptr<OpenJPEGImage>();
 }