diff options
author | Stefan Pöschel <github@basicmaster.de> | 2017-08-23 18:52:58 +0200 |
---|---|---|
committer | Stefan Pöschel <github@basicmaster.de> | 2017-08-23 18:52:58 +0200 |
commit | 50e051adebc847a338694b53f1d9ea41c8290529 (patch) | |
tree | b9c4fcec9aa1d3fd24dd56a7abacedf63b264c3b /src/odr-padenc.cpp | |
parent | 4f15498395b178b6134549da91ce72d1c53eaea7 (diff) | |
download | ODR-PadEnc-50e051adebc847a338694b53f1d9ea41c8290529.tar.gz ODR-PadEnc-50e051adebc847a338694b53f1d9ea41c8290529.tar.bz2 ODR-PadEnc-50e051adebc847a338694b53f1d9ea41c8290529.zip |
Move current PAD encoder algorithm into subclass
This allows to replace the current PAD encoding algorithm by alternative
methods in the future.
Diffstat (limited to 'src/odr-padenc.cpp')
-rw-r--r-- | src/odr-padenc.cpp | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/src/odr-padenc.cpp b/src/odr-padenc.cpp index d42d688..01385d0 100644 --- a/src/odr-padenc.cpp +++ b/src/odr-padenc.cpp @@ -232,7 +232,7 @@ int main(int argc, char *argv[]) { } // invoke encoder - pad_encoder = new PadEncoder(options); + pad_encoder = new BurstPadEncoder(options); int result = pad_encoder->Main(); delete pad_encoder; @@ -241,8 +241,6 @@ int main(int argc, char *argv[]) { // --- PadEncoder ----------------------------------------------------------------- -const int PadEncoder::DLS_REPETITION_WHILE_SLS = 50; // PADs - void PadEncoder::DoExit() { std::lock_guard<std::mutex> lock(status_mutex); @@ -250,7 +248,7 @@ void PadEncoder::DoExit() { } int PadEncoder::Main() { - int output_fd = open(options.output, O_WRONLY); + output_fd = open(options.output, O_WRONLY); if (output_fd == -1) { perror("ODR-PadEnc Error: failed to open output"); return 3; @@ -262,11 +260,6 @@ int PadEncoder::Main() { fprintf(stderr, "ODR-PadEnc using ImageMagick version '%s'\n", GetMagickVersion(NULL)); #endif - PADPacketizer pad_packetizer(options.padlen); - DLSManager dls_manager(&pad_packetizer); - SLSManager sls_manager(&pad_packetizer); - SlideStore slides; - // handle signals if(signal(SIGINT, break_handler) == SIG_ERR) { perror("ODR-PadEnc Error: could not set SIGINT handler"); @@ -281,6 +274,32 @@ int PadEncoder::Main() { return 1; } + // invoke actual encoder + int result = Encode(); + + // cleanup + if(close(output_fd)) { + perror("ODR-PadEnc Error: failed to close output"); + return 1; + } + +#if HAVE_MAGICKWAND + MagickWandTerminus(); +#endif + + return result; +} + + +// --- BurstPadEncoder ----------------------------------------------------------------- +const int BurstPadEncoder::DLS_REPETITION_WHILE_SLS = 50; // PADs + +int BurstPadEncoder::Encode() { + PADPacketizer pad_packetizer(options.padlen); + DLSManager dls_manager(&pad_packetizer); + SLSManager sls_manager(&pad_packetizer); + SlideStore slides; + std::chrono::steady_clock::time_point next_run = std::chrono::steady_clock::now(); int curr_dls_file = 0; @@ -328,16 +347,5 @@ int PadEncoder::Main() { std::this_thread::sleep_until(next_run); } - - // cleanup - if(close(output_fd)) { - perror("ODR-PadEnc Error: failed to close output"); - return 1; - } - -#if HAVE_MAGICKWAND - MagickWandTerminus(); -#endif - return 0; } |