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(); }
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; }
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, ¶meters ); if( IsNumber( arg ) ) { PTEXT arg2 = GetParam( ps, ¶meters ); 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, ¶meters ); // 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 }