summaryrefslogtreecommitdiff
path: root/rotord/ofxMovieExporter.h
diff options
context:
space:
mode:
Diffstat (limited to 'rotord/ofxMovieExporter.h')
-rwxr-xr-xrotord/ofxMovieExporter.h198
1 files changed, 0 insertions, 198 deletions
diff --git a/rotord/ofxMovieExporter.h b/rotord/ofxMovieExporter.h
deleted file mode 100755
index 28447d7..0000000
--- a/rotord/ofxMovieExporter.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * ofxMovieExporter.h
- *
- * Copyright (c) 2011, Neil Mendoza, http://www.neilmendoza.com
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of 16b.it nor the names of its contributors may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- */
-//#pragma once
-
-#include <unordered_map>
-#include <deque>
-#include <math.h>
-#include <memory>
-
-#include "Poco/Net/HTTPServer.h"
-#include "Poco/Net/HTTPResponse.h"
-#include "Poco/UUID.h"
-#include "Poco/UUIDGenerator.h"
-#include "Poco/Notification.h"
-#include "Poco/NotificationCenter.h"
-#include "Poco/Observer.h"
-#include "Poco/ThreadPool.h"
-#include "Poco/Thread.h"
-#include "Poco/Task.h"
-#include "Poco/Runnable.h"
-#include "Poco/Mutex.h"
-#include "Poco/Random.h"
-#include "Poco/AutoPtr.h"
-#include "Poco/File.h"
-#include "xmlIO.h"
-//#define _THREAD_CAPTURE
-#include <string>
-#include <iostream>
-/*
-#include "ofMain.h"
-
-// needed for gcc on win
-#ifdef TARGET_WIN32
- #ifndef INT64_C
- #define INT64_C(c) (c ## LL)
- #define UINT64_C(c) (c ## ULL)
- #endif
-#endif
-*/
-//#define UINT64_C(c) (c ## ULL)
-
-
-extern "C"
-{
- //needed both
- #include <libavcodec/avcodec.h>
- #include <libavformat/avformat.h>
- #include <libavutil/mathematics.h>
- //needed ofxMovieExporter
- #include <libswscale/swscale.h>
- //rest needed audio loader
- #include <libavutil/opt.h>
- //#include <libavutil/channel_layout.h>
- #include <libavutil/common.h>
- #include <libavutil/imgutils.h>
-
- #include <libavutil/samplefmt.h>
-
- #include <libavutil/dict.h>
- //#include <libavutil/dict.c> stops the compiler error but causes a linker error. does libavcodec need to be statically linked?
- //#include <libavutil/imgutils.h>
- //#include <libavutil/samplefmt.h>
- //#include <libavutil/timestamp.h>
-}
-class ofxMovieExporter
-//#ifdef _THREAD_CAPTURE
-// : public ofThread
-//#endif
- {
- public:
- static const int ENCODED_FRAME_BUFFER_SIZE = 500000;
- // defaults
- static const int BIT_RATE = 4000000;
- static const int FRAME_RATE = 25;
- static const int OUT_W = 640;
- static const int OUT_H = 480;
- static const int INIT_QUEUE_SIZE = 50;
- static const AVCodecID CODEC_ID = CODEC_ID_MPEG4;
- static const std::string FILENAME_PREFIX;
- static const std::string CONTAINER;
-
- ofxMovieExporter();
- ~ofxMovieExporter();
- // tested so far with...
- // codecId = CODEC_ID_MPEG4, container = "mp4"
- // codecId = CODEC_ID_MPEG2VIDEO, container = "mov"
- bool setup(int outW = OUT_W, int outH = OUT_H, int bitRate = BIT_RATE, int frameRate = FRAME_RATE, AVCodecID codecId = CODEC_ID, std::string container = CONTAINER);
- bool record(std::string filePrefix=FILENAME_PREFIX, std::string folderPath="");
- bool encodeFrame(unsigned char *pixels);
- void finishRecord();
-
- void stop();
- bool isRecording() const;
-
- // set an external pixel source, assumes 3 Byte RGB
- // also sets the recording size but does not crop to the recording area
- void setPixelSource(unsigned char* pixels, int w, int h);
-
- // get the number files that have been captured so far
- int getNumCaptures();
-
- // reset the filename counter back to 0
- void resetNumCaptures();
-
- // get the recording size
- inline int getRecordingWidth() {return outW;}
- inline int getRecordingHeight() {return outH;}
-
-
- private:
-//#ifdef _THREAD_CAPTURE
-// void threadedFunction();
-// deque<unsigned char*> frameQueue;
-// deque<unsigned char*> frameMem;
-// ofMutex frameQueueMutex;
-// ofMutex frameMemMutex;
-//#endif
- void initEncoder();
- void allocateMemory();
- void clearMemory();
-
- void encodeFrame();
-
-
- std::string container;
- AVCodecID codecId;
-
- bool recording;
- int numCaptures;
- int frameRate;
- int bitRate;
- float frameInterval;
- float aframeInterval;
- float lastFrameTime;
-
- std::string outFileName;
-
- AVOutputFormat* outputFormat;
- AVFormatContext* formatCtx;
- AVStream* videoStream;
- AVStream* audioStream;
-
- AVCodec* codec;
- AVCodecContext* codecCtx;
-
- AVCodec* acodec;
- AVCodecContext* acodecCtx;
-
-
- SwsContext* convertCtx;
-
- unsigned char* inPixels;
- unsigned char* outPixels;
- unsigned char* encodedBuf;
-
- AVFrame* inFrame;
- AVFrame* outFrame;
-
- int posX, posY;
- int inW, inH;
- int outW, outH;
-
- bool usePixelSource;
- unsigned char* pixelSource;
-
- int aframeNum;
- int vframeNum;
- };
-