lms-video/Gem/plugins/recordQT/recordQT.h
Santi Noreña e85d191b46 - Reestructuración de ficheros y directorios general
- merge v0.01 --> Añadido fileselector
- Añadidas fuentes de Gem y Pure Data
- pix2jpg incluído en Gem. Archivos de construcción de Gem modificados.
- Añadido fichero ompiling.txt con instrucciones de compilación
2013-02-04 18:00:17 +01:00

166 lines
3.5 KiB
C++

/*
* recordQT.h
* GEM_darwin
*
* Created by chris clepper on 7/18/05.
* Copyright 2005. All rights reserved.
*
*/
//this will record QT movies
#ifndef _INCLUDE_GEMPLUGIN__RECORDQT_RECORDQT_H_
#define _INCLUDE_GEMPLUGIN__RECORDQT_RECORDQT_H_
#include "plugins/record.h"
#define QT_MAX_FILENAMELENGTH 256
#if defined _WIN32
# include <QTML.h>
# include <Movies.h>
# include <QuicktimeComponents.h>
#endif
#ifdef __APPLE__
# include <QuickTime/QuickTime.h>
#endif // __APPLE__
/*-----------------------------------------------------------------
-------------------------------------------------------------------
CLASS
recordQT
Writes a pix of the render buffer
KEYWORDS
pix
DESCRIPTION
Inlet for a list - "vert_size"
Inlet for a list - "vert_pos"
"file" - filename to write to
"bang" - do write now
"auto 0/1" - stop/start writing automatically
"vert_size" - Set the size of the pix
"vert_pos" - Set the position of the pix
-----------------------------------------------------------------*/
namespace gem { namespace plugins {
class GEM_EXPORT recordQT : public record
{
public:
//////////
// Constructor
recordQT(void);
//////////
// Destructor
virtual ~recordQT(void);
virtual void stop(void);
virtual bool start(const std::string filename, gem::Properties&);
//////////
// Do the rendering
virtual bool write(imageStruct*img);
////////
// call up compression dialog
virtual bool dialog(void);
virtual int getNumCodecs(void);
virtual const char* getCodecName(int n);
virtual bool setCodec(int num);
virtual bool setCodec(const std::string name);
virtual std::vector<std::string>getCodecs(void);
virtual const std::string getCodecDescription(const std::string codecname);
virtual bool enumProperties(gem::Properties&props);
private:
virtual void setupQT(void);
virtual void compressFrame(void);
//////
// is recording setup and ready to go?
bool m_recordSetup;
bool m_recordStart;
bool m_recordStop;
//////////
// current file to write to
char m_filename[QT_MAX_FILENAMELENGTH];
//////////
// (previous) dimensions to check
int m_width, m_height;
int m_prevHeight,m_prevWidth;
imageStruct *m_compressImage;
#ifdef __APPLE__
UnsignedWide startTime, endTime;
#endif
#ifdef _WIN32
LARGE_INTEGER freq, startTime, endTime;
#endif
float seconds;
//number of QT ticks for a frame 600/frameDuration (used by AddMediaSample)
int m_ticks;
bool m_firstRun;
//////////
// QT stuff
GWorldPtr m_srcGWorld;
Rect m_srcRect;
int m_rowBytes;
Movie m_movie;
Track track;
Media media;
ComponentInstance stdComponent;
SCTemporalSettings TemporalSettings;
SCSpatialSettings SpatialSettings;
SCDataRateSettings DataRateSetting;
SCDataRateSettings datarate;
long dataSize;
ImageDescriptionHandle hImageDesc;
//these are for the programmatic setting of the compressor
CodecType m_codecType;
CodecComponent m_codec;
short m_depth;
float m_frameRate;
float m_keyFrameRate;
CodecQ m_spatialQuality;
short nFileRefNum;
short nResID;
void resetCodecSettings(void);
//this will hold the ctype value of the codecs listed by getCodecList()
typedef struct codecListStorage{
int position;
int ctype;
char* name;
CodecComponent codec;
};
codecListStorage *codecContainer;
int numCodecContainer;
//std::map<std::string, std::string>m_codecdescriptions;
};
};};
#endif // for header file