summaryrefslogtreecommitdiff
path: root/vaa3d_wrapper/loadV3dFFMpeg.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@herge.(none)>2013-06-21 16:33:01 +0100
committerTim Redfern <tim@herge.(none)>2013-06-21 16:33:01 +0100
commitba8a37228891c868030464b91ebb2ffe306219a7 (patch)
tree20096effa50f93b2364d9edfc8e9ad397792e989 /vaa3d_wrapper/loadV3dFFMpeg.cpp
parentb438fa8772d071663692c6c936881e1f44590523 (diff)
adding hash function
Diffstat (limited to 'vaa3d_wrapper/loadV3dFFMpeg.cpp')
-rw-r--r--vaa3d_wrapper/loadV3dFFMpeg.cpp143
1 files changed, 0 insertions, 143 deletions
diff --git a/vaa3d_wrapper/loadV3dFFMpeg.cpp b/vaa3d_wrapper/loadV3dFFMpeg.cpp
deleted file mode 100644
index 90a6dbc..0000000
--- a/vaa3d_wrapper/loadV3dFFMpeg.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "loadV3dFFMpeg.h"
-#include "FFMpegVideo.h"
-#include <iostream>
-
-#ifdef USE_FFMPEG
-
-using namespace std;
-
-bool saveStackFFMpeg(const char * file_name, const My4DImage& img, enum CodecID codec_id)
-{
- try {
- Image4DProxy<My4DImage> proxy(const_cast<My4DImage*>(&img));
- double default_irange = 1.0; // assumes data range is 0-255.0
- if (proxy.su > 1) {
- default_irange = 1.0 / 16.0; // 0-4096, like our microscope images
- }
- std::vector<double> imin(proxy.sc, 0.0);
- std::vector<double> irange2(proxy.sc, default_irange);
- // rescale if converting from 16 bit to 8 bit
- if (proxy.su > 1) {
- if (img.p_vmin && img.p_vmax)
- proxy.set_minmax(img.p_vmin, img.p_vmax);
- if (proxy.has_minmax()) {
- for (int c = 0; c < proxy.sc; ++c) {
- imin[c] = proxy.vmin[c];
- irange2[c] = 255.0 / (proxy.vmax[c] - proxy.vmin[c]);
- }
- }
- }
- FFMpegEncoder encoder(file_name, proxy.sx, proxy.sy, codec_id);
- for (int z = 0; z < proxy.sz; ++z) {
- for (int y = 0; y < proxy.sy; ++y) {
- for (int x = 0; x < proxy.sx; ++x) {
- for (int c = 0; c < 3; ++c) {
- int ic = c;
- if (c >= proxy.sc) ic = 0; // single channel volume to gray RGB movie
- double val = proxy.value_at(x, y, z, ic);
- val = (val - imin[ic]) * irange2[ic]; // rescale to range 0-255
- encoder.setPixelIntensity(x, y, c, (int)val);
- }
- }
- }
- encoder.write_frame();
- }
- return true;
- } catch (...) {}
-
- return false;
-}
-
-bool loadStackFFMpeg(const char* fileName, Image4DSimple& img)
-{
- return loadStackFFMpeg(QUrl::fromLocalFile(fileName), img);
-}
-
-bool loadStackFFMpeg(QUrl url, Image4DSimple& img)
-{
- try {
- FFMpegVideo video(url);
- if (! video.isOpen)
- return false;
- int sx = video.getWidth();
- int sy = video.getHeight();
- int sz = video.getNumberOfFrames();
- int sc = video.getNumberOfChannels();
- // cout << "Number of frames = " << sz << endl;
-
- img.createBlankImage(sx, sy, sz, sc, 1); // 1 byte = 8 bits per value
- Image4DProxy<Image4DSimple> proxy(&img);
-
- int frameCount = 0;
- for (int z = 0; z < sz; ++z)
- {
- video.fetchFrame(z);
- int z = frameCount;
- frameCount++;
- for(int c = 0; c < sc; ++c) {
- for (int y = 0; y < sy; ++y) {
- for (int x = 0; x < sx; ++x) {
- proxy.put_at(x, y, z, c,
- video.getPixelIntensity(x, y, (FFMpegVideo::Channel)c)
- );
- }
- }
- }
- }
- cout << "Number of frames found = " << frameCount << endl;
-
- return true;
-
- } catch(...) {}
-
- return false;
-}
-
-bool loadStackFFMpegAsGray(const char* fileName, Image4DSimple& img)
-{
- loadStackFFMpegAsGray(QUrl::fromLocalFile(fileName), img);
-}
-
-bool loadStackFFMpegAsGray(QUrl url, Image4DSimple& img)
-{
- try {
- FFMpegVideo video(url);
- int sx = video.getWidth();
- int sy = video.getHeight();
- int sz = video.getNumberOfFrames();
- int sc = video.getNumberOfChannels();
- // cout << "Number of frames = " << sz << endl;
-
- img.createBlankImage(sx, sy, sz, 1, 1); // 1 byte = 8 bits per value
- Image4DProxy<Image4DSimple> proxy(&img);
-
- int frameCount = 0;
- for (int z = 0; z < sz; ++z)
- {
- video.fetchFrame(z);
- int z = frameCount;
- frameCount++;
- for (int y = 0; y < sy; ++y) {
- for (int x = 0; x < sx; ++x) {
- // Use average of R,G,B as gray value
- int val = 0;
- for(int c = 0; c < sc; ++c) {
- val += video.getPixelIntensity(x, y, (FFMpegVideo::Channel)c);
- }
- val /= sc; // average of rgb
- proxy.put_at(x, y, z, 0, val);
- }
- }
- }
- // cout << "Number of frames found = " << frameCount << endl;
-
- return true;
-
- } catch(...) {}
-
- return false;
-}
-
-#endif // USE_FFMPEG
-
-