1 #include "VideoEncoder.h"
2 #include "FFcodecContext_param.h"
3 
4 namespace ADM_qtScript
5 {
VideoEncoder(QScriptEngine * engine,IEditor * editor,ADM_videoEncoder6 * encoder)6 	VideoEncoder::VideoEncoder(
7 		QScriptEngine *engine, IEditor *editor, ADM_videoEncoder6* encoder) : QtScriptConfigObject(editor)
8 	{
9 		std::map<const QString, QScriptEngine::FunctionSignature> configSubGroups;
10 
11 		configSubGroups.insert(
12 			std::pair<const QString, QScriptEngine::FunctionSignature>(
13 				"lavcSettings", QtScriptConfigObject::defaultConfigGetterSetter));
14 
15 		this->encoderPlugin = encoder;
16 		this->_configObject = this->createConfigContainer(
17 								  engine, QtScriptConfigObject::defaultConfigGetterSetter, &configSubGroups);
18 	}
19 
getName(void)20 	QScriptValue VideoEncoder::getName(void)
21 	{
22 		return this->encoderPlugin->desc->menuName;
23 	}
24 
getConfiguration(void)25 	QScriptValue VideoEncoder::getConfiguration(void)
26 	{
27 		return this->_configObject;
28 	}
29 
resetConfiguration(void)30 	void VideoEncoder::resetConfiguration(void)
31 	{
32 		this->encoderPlugin->desc->resetConfigurationData();
33 	}
34 
getConfCouple(CONFcouple ** conf,const QString & containerName)35 	void VideoEncoder::getConfCouple(CONFcouple** conf, const QString& containerName)
36 	{
37 		if (this->encoderPlugin->desc->getConfigurationData && containerName == "")
38 		{
39 			this->encoderPlugin->desc->getConfigurationData(conf);
40 		}
41 		else if (containerName == "lavcSettings")
42 		{
43 			char *configData;
44 
45 			this->encoderPlugin->desc->getConfigurationData(conf);
46 			(*conf)->readAsString("lavcSettings", &configData);
47 			delete *conf;
48 
49 			getCoupleFromString(conf, configData, FFcodecContext_param);
50 			delete configData;
51 		}
52 		else
53 		{
54 			*conf = NULL;
55 		}
56 	}
57 
setConfCouple(CONFcouple * conf,const QString & containerName)58 	void VideoEncoder::setConfCouple(CONFcouple* conf, const QString& containerName)
59 	{
60 		if (this->encoderPlugin->desc->setConfigurationData && containerName == "")
61 		{
62 			this->encoderPlugin->desc->setConfigurationData(conf, true);
63 		}
64 		else if (containerName == "lavcSettings")
65 		{
66 			char *confString;
67 			CONFcouple *mainConf;
68 
69 			lavCoupleToString(conf, &confString);
70 			this->encoderPlugin->desc->getConfigurationData(&mainConf);
71 
72 			mainConf->updateValue(mainConf->lookupName("lavcSettings"), confString);
73 			this->encoderPlugin->desc->setConfigurationData(mainConf, true);
74 
75 			delete [] confString;
76 			delete mainConf;
77 		}
78 	}
79 }
80