Пример #1
0
void PageOutput::LoadProfileSettings(QSettings* settings) {

	// choose default container and codecs
	enum_container default_container = (enum_container) 0;
	for(unsigned int i = 0; i < VIDEO_CODEC_COUNT; ++i) {
		if(AVFormatIsInstalled(m_containers[i].avname)) {
			default_container = (enum_container) i;
			break;
		}
	}
	enum_video_codec default_video_codec = (enum_video_codec) 0;
	for(unsigned int i = 0; i < VIDEO_CODEC_COUNT; ++i) {
		if(AVCodecIsInstalled(m_video_codecs[i].avname) && m_containers[default_container].supported_video_codecs.count((enum_video_codec) i)) {
			default_video_codec = (enum_video_codec) i;
			break;
		}
	}
	enum_audio_codec default_audio_codec = (enum_audio_codec) 0;
	for(unsigned int i = 0; i < AUDIO_CODEC_COUNT; ++i) {
		if(AVCodecIsInstalled(m_audio_codecs[i].avname) && m_containers[default_container].supported_audio_codecs.count((enum_audio_codec) i)) {
			default_audio_codec = (enum_audio_codec) i;
			break;
		}
	}

	// load settings
	SetFile(settings->value("output/file", "").toString());
	SetSeparateFiles(settings->value("output/separate_files", false).toBool());
	SetContainer(FindContainer(settings->value("output/container", QString()).toString(), default_container));
	SetContainerAV(FindContainerAV(settings->value("output/container_av", QString()).toString()));

	SetVideoCodec(FindVideoCodec(settings->value("output/video_codec", QString()).toString(), default_video_codec));
	SetVideoCodecAV(FindVideoCodecAV(settings->value("output/video_codec_av", QString()).toString()));
	SetVideoKBitRate(settings->value("output/video_kbit_rate", 5000).toUInt());
	SetH264CRF(settings->value("output/video_h264_crf", 23).toUInt());
	SetH264Preset((enum_h264_preset) settings->value("output/video_h264_preset", H264_PRESET_SUPERFAST).toUInt());
	SetVP8CPUUsed(settings->value("output/video_vp8_cpu_used", 5).toUInt());
	SetVideoOptions(settings->value("output/video_options", "").toString());
	SetVideoAllowFrameSkipping(settings->value("output/video_allow_frame_skipping", true).toBool());

	SetAudioCodec(FindAudioCodec(settings->value("output/audio_codec", QString()).toString(), default_audio_codec));
	SetAudioCodecAV(FindAudioCodecAV(settings->value("output/audio_codec_av", QString()).toString()));
	SetAudioKBitRate(settings->value("output/audio_kbit_rate", 128).toUInt());
	SetAudioOptions(settings->value("output/audio_options", "").toString());

	// update things
	OnUpdateContainerFields();
	OnUpdateVideoCodecFields();
	OnUpdateAudioCodecFields();

}
Пример #2
0
BufferExtraData *PDMLoader::ExtraData(const char* containerName)
{
	if (m_containerMap.find(containerName) != m_containerMap.end()) {
		return m_containerMap[containerName];
	}

	const ContainerInfo* info = FindContainer(m_containerInfoList, containerName);
	if (info == NULL) {
		fprintf(stderr, "[CDMLoader] No such a container: %s\n", containerName);
		return NULL;
	}

	if (info->type == "float" || info->type == "vec2" || info->type == "vec3" || info->type == "vec4") {
		float* values = NULL;
		size_t n = 0;
		int ret = PDMlib::PDMlib::GetInstance().Read(containerName, &n, &values, &m_timeStep, m_readAll);

		if (n == 0 || values == NULL) {
			fprintf(stderr, "[CDMLoader] No such a container with point type: %s\n", containerName);
			return NULL;
		}

		printf("[PDMloader] %s : n = %d\n", containerName, n);

		int numElems = n;
		if (info->type == "vec2") {
			numElems /= 2;
		} else if (info->type == "vec3") {
			numElems /= 3;
		} else if (info->type == "vec4") {
			numElems /= 4;
		}

		// Alloc
		BufferExtraData* buf = new BufferExtraData();
		buf->Create(info->type.c_str(), numElems);

		if (info->type == "float") {
			std::copy(values, values + n, buf->Float()->GetBuffer());
		} else if (info->type == "vec2") {
			std::copy(values, values + n, buf->Vec2()->GetBuffer());
		} else if (info->type == "vec3") {
			std::copy(values, values + n, buf->Vec3()->GetBuffer());
		} else if (info->type == "vec4") {
			std::copy(values, values + n, buf->Vec4()->GetBuffer());
		}

		m_containerMap[containerName] = buf;

		delete [] values; // Release memory allocated by PDMlib 

		return m_containerMap[containerName];
	} else if (info->type == "uint") {
		unsigned int* values = NULL;
		size_t n = 0;
		int ret = PDMlib::PDMlib::GetInstance().Read(containerName, &n, &values, &m_timeStep, m_readAll);

		if (n == 0 || values == NULL) {
			fprintf(stderr, "[CDMLoader] No such a container with point type: %s\n", containerName);
			return NULL;
		}

		printf("[PDMloader] %s : n = %d\n", containerName, n);

		int numElems = n;

		// Alloc
		BufferExtraData* buf = new BufferExtraData();
		buf->Create(info->type.c_str(), numElems);

		std::copy(values, values + n, buf->Uint()->GetBuffer());

		m_containerMap[containerName] = buf;

		delete [] values; // Release memory allocated by PDMlib 

		return m_containerMap[containerName];
	}

	fprintf(stderr, "[CDMLoader] Unknown or unsupported container: %s\n", containerName);

	return NULL;
	
}
Пример #3
0
int InitImage( PSENTIENT ps, PENTITY pe, PTEXT parameters )
{
	INDEX idx;
	for( idx = 0; idx < NUM_IMAGE_VARS; idx++ )
	{
      PTEXT saveparms = parameters;
		PTEXT arg;
		Image parent = GetLink( &FindContainer( pe )->pPlugin, iImage );
		arg = GetParam( ps, &parameters );
		if( IsNumber( arg ) )
		{
			PTEXT arg2 = GetParam( ps, &parameters );
			if( IsNumber( arg2 ) )
			{
            Image image;
				if( parent )
					image = MakeSubImage( parent
											  , 0, 0 // need other 2 arguments.
											  , atoi( GetText( arg ) )
											  , atoi( GetText( arg2 ) )
											  );
            else
					image = MakeImageFile( atoi( GetText( arg ) )
													, atoi( GetText( arg2 ) ) );
				SetLink( &pe->pPlugin, iImage, image );
				if( ps->CurrentMacro )
					ps->CurrentMacro->state.flags.bSuccess = TRUE;
				else
				{
					DECLTEXT( msg, "Invalid second parameter, expecting a number" );
               EnqueLink( &ps->Command->Output, &msg );
				}
				// if more args - warn?
			}
		}
		else
		{
         Image image;
			// expect that the remainder is a name..
			parameters = saveparms;
			arg = GetFileName( ps, &parameters );
         // loaded image file doesn't care for parent status...
			image = LoadImageFile( GetText( arg ) );
			if( image )
			{
				SetLink( &pe->pPlugin, iImage, image );
				if( ps->CurrentMacro )
					ps->CurrentMacro->state.flags.bSuccess = TRUE;
				else
				{
					DECLTEXT( msg, "Failed to load image..." );
               EnqueLink( &ps->Command->Output, &msg );
				}
			}
		}
		AddVolatileVariable( pe, ImageVars + idx, 0 );
		{
			int n;
			for( n = 0; n < NUM_METHODS; n++ )
            AddMethod( pe, ImageMethods + n );
		}

	}
	return 0; // return success
}