diff --git a/CMakeLists.txt b/CMakeLists.txt index ede7f7c..45482be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -278,6 +278,8 @@ set(PROJECT_PRIVATE "${PROJECT_SOURCE_DIR}/source/ffmpeg/swscale.cpp" "${PROJECT_SOURCE_DIR}/source/ffmpeg/tools.hpp" "${PROJECT_SOURCE_DIR}/source/ffmpeg/tools.cpp" + "${PROJECT_SOURCE_DIR}/source/ui/handler.hpp" + "${PROJECT_SOURCE_DIR}/source/ui/handler.cpp" ) diff --git a/source/ui/handler.cpp b/source/ui/handler.cpp new file mode 100644 index 0000000..645e171 --- /dev/null +++ b/source/ui/handler.cpp @@ -0,0 +1,18 @@ +// FFMPEG Video Encoder Integration for OBS Studio +// Copyright (C) 2018 - 2019 Michael Fabian Dirks +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +#include "handler.hpp" diff --git a/source/ui/handler.hpp b/source/ui/handler.hpp new file mode 100644 index 0000000..a0e7cad --- /dev/null +++ b/source/ui/handler.hpp @@ -0,0 +1,40 @@ +// FFMPEG Video Encoder Integration for OBS Studio +// Copyright (C) 2018 - 2019 Michael Fabian Dirks +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +#pragma once + +extern "C" { +#include +#pragma warning(push) +#pragma warning(disable : 4244) +#include +#pragma warning(pop) +} + +namespace obsffmpeg { + namespace ui { + class handler { + public: + virtual void get_defaults(obs_data_t* settings, AVCodec* codec, AVCodecContext* context) = 0; + + virtual void get_properties(obs_properties_t* props, AVCodec* codec, + AVCodecContext* context) = 0; + + virtual void update(obs_data_t* settings, AVCodec* codec, AVCodecContext* context) = 0; + }; + } // namespace ui +} // namespace obsffmpeg