Changed pixel format used by SDL2 to render the frame

This commit is contained in:
selim mustafaev 2016-12-04 00:17:19 +03:00
parent c005ce08c2
commit 4b03986c7b

View File

@ -14,7 +14,7 @@ namespace ff = ffcpp;
class SDLWindow: public ff::IVideoSink { class SDLWindow: public ff::IVideoSink {
private: private:
template<typename T> using SDLUniquePtr = std::unique_ptr<T, DECLSPEC void SDLCALL(*)(T*)>; template<typename T> using SDLUniquePtr = std::unique_ptr<T, void(*)(T*)>;
using SDLWindowPtr = SDLUniquePtr<SDL_Window>; using SDLWindowPtr = SDLUniquePtr<SDL_Window>;
using SDLRendererPtr = SDLUniquePtr<SDL_Renderer>; using SDLRendererPtr = SDLUniquePtr<SDL_Renderer>;
using SDLTexturePtr = SDLUniquePtr<SDL_Texture>; using SDLTexturePtr = SDLUniquePtr<SDL_Texture>;
@ -35,7 +35,7 @@ public:
_renderer.reset(SDL_CreateRenderer(_wnd.get(), -1, 0)); _renderer.reset(SDL_CreateRenderer(_wnd.get(), -1, 0));
if(!_renderer) throw std::runtime_error("Error creating SDL renderer"); if(!_renderer) throw std::runtime_error("Error creating SDL renderer");
_texture.reset(SDL_CreateTexture(_renderer.get(), SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, WINDOW_WIDTH, WINDOW_HEIGHT)); _texture.reset(SDL_CreateTexture(_renderer.get(), SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, WINDOW_WIDTH, WINDOW_HEIGHT));
if(!_texture) throw std::runtime_error("Error creating SDL texture"); if(!_texture) throw std::runtime_error("Error creating SDL texture");
} }
@ -65,7 +65,7 @@ public:
SDL_RenderClear(_renderer.get()); SDL_RenderClear(_renderer.get());
SDL_RenderCopy(_renderer.get(), _texture.get(), nullptr, nullptr); SDL_RenderCopy(_renderer.get(), _texture.get(), nullptr, nullptr);
SDL_RenderPresent(_renderer.get()); SDL_RenderPresent(_renderer.get());
//std::this_thread::sleep_for(std::chrono::milliseconds(40)); std::this_thread::sleep_for(std::chrono::milliseconds(40));
} }
}; };