1 #include "AudioEncoder.h"
2 #include "MyQScriptEngine.h"
3 
4 namespace ADM_qtScript
5 {
AudioEncoder(QScriptEngine * engine,IEditor * editor,ADM_audioEncoder * encoder,int encoderIndex,EditableAudioTrack * track)6 	AudioEncoder::AudioEncoder(
7 		QScriptEngine* engine, IEditor* editor, ADM_audioEncoder* encoder, int encoderIndex,
8 		EditableAudioTrack* track) : QtScriptConfigObject(editor)
9 	{
10 		this->_encoderConf = NULL;
11 		this->encoderPlugin = encoder;
12 		this->encoderIndex = encoderIndex;
13 		this->_track = track;
14 
15 		if (track == NULL)
16 		{
17 			this->resetConfiguration();
18 		}
19 
20 		this->_configObject = this->createConfigContainer(
21 								  engine, QtScriptConfigObject::defaultConfigGetterSetter);
22 	}
23 
~AudioEncoder()24 	AudioEncoder::~AudioEncoder()
25 	{
26 		if (this->_encoderConf)
27 		{
28 			delete this->_encoderConf;
29 		}
30 	}
31 
constructor(QScriptContext * context,QScriptEngine * engine)32 	QScriptValue AudioEncoder::constructor(QScriptContext *context, QScriptEngine *engine)
33 	{
34 		if (context->isCalledAsConstructor())
35 		{
36 			AudioEncoder *audioEncProto = qobject_cast<AudioEncoder*>(
37 											  context->thisObject().prototype().toQObject());
38 			AudioEncoder *audioEnc = new AudioEncoder(
39 				engine, static_cast<MyQScriptEngine*>(engine)->wrapperEngine->editor(), audioEncProto->encoderPlugin,
40 				audioEncProto->encoderIndex);
41 
42 			return engine->newQObject(audioEnc, QScriptEngine::ScriptOwnership);
43 		}
44 
45 		return engine->undefinedValue();
46 	}
47 
48 
getName(void)49 	QScriptValue AudioEncoder::getName(void)
50 	{
51 		return this->encoderPlugin->menuName;
52 	}
53 
getConfiguration(void)54 	QScriptValue AudioEncoder::getConfiguration(void)
55 	{
56 		return this->_configObject;
57 	}
58 
resetConfiguration(void)59 	void AudioEncoder::resetConfiguration(void)
60 	{
61 		if (this->encoderPlugin && this->encoderPlugin->getDefaultConfiguration)
62 		{
63 			CONFcouple* couple;
64 
65 			this->encoderPlugin->getDefaultConfiguration(&couple);
66 			this->setEncoderConfiguration(couple);
67 		}
68 	}
69 
getConfCouple(CONFcouple ** conf,const QString & containerName)70 	void AudioEncoder::getConfCouple(CONFcouple** conf, const QString& containerName)
71 	{
72 		*conf = CONFcouple::duplicate(this->getEncoderConfiguration());
73 	}
74 
setConfCouple(CONFcouple * conf,const QString & containerName)75 	void AudioEncoder::setConfCouple(CONFcouple* conf, const QString& containerName)
76 	{
77 		this->setEncoderConfiguration(CONFcouple::duplicate(conf));
78 	}
79 
getEncoderConfiguration()80 	CONFcouple* AudioEncoder::getEncoderConfiguration()
81 	{
82 		if (this->_track)
83 		{
84 			return this->_track->encoderConf;
85 		}
86 		else
87 		{
88 			return this->_encoderConf;
89 		}
90 	}
91 
setEncoderConfiguration(CONFcouple * couple)92 	void AudioEncoder::setEncoderConfiguration(CONFcouple *couple)
93 	{
94 		if (this->_encoderConf)
95 		{
96 			delete this->_encoderConf;
97 			this->_encoderConf = NULL;
98 		}
99 
100 		if (_track)
101 		{
102 			if (this->_track->encoderConf)
103 			{
104 				delete this->_track->encoderConf;
105 			}
106 
107 			this->_track->encoderConf = couple;
108 		}
109 		else
110 		{
111 			this->_encoderConf = couple;
112 		}
113 	}
114 
useEncoderForAudioOutput(EditableAudioTrack * track)115 	void AudioEncoder::useEncoderForAudioOutput(EditableAudioTrack* track)
116 	{
117 		this->_track = track;
118 		this->_track->encoderIndex = this->encoderIndex;
119 		this->setEncoderConfiguration(CONFcouple::duplicate(this->_encoderConf));
120 	}
121 
isEncoderUsed()122 	bool AudioEncoder::isEncoderUsed()
123 	{
124 		return this->_track != NULL;
125 	}
126 }
127