Hello,
I’m still having basic issues when providing my own HWND and get the similar results for:
SDL_RENDERER_SOFTWARE = Access Violation Exception thrown at 0x000000006C7F7447 (SDL2.dll)
SDL_RENDERER_ACCELERATED = SDL_RenderClear returns “Reset(): INVALIDCALL”
or 0 in SDL_CreateRenderer
I have even tried to reset the renderer, texture and window on a change of window size with reset calls to SDL_CreateWindowFrom, SDL_CreateRenderer, SDL_CreateTexture, no joy…
Tried locking the surface, tried calling SDL_RenderSetViewport, SDL_RenderSetLogicalSize…
Everything works fine in a steady state from the first time I open the window, no matter what odd size.
Is this a bug in SDL2?
It must be common to create a YUV texture and renderer it using your own HWND?
code (simplified):
m_pSDLWindow = SDL_CreateWindowFrom(m_HWnd);
m_pSDLRenderer = SDL_CreateRenderer(m_pSDLWindow, -1, 0);// SDL_RENDERER_SOFTWARE);
m_pSDLTexture = SDL_CreateTexture(m_pSDLRenderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, m_pCodecCtx->width, m_pCodecCtx->height);
avError = avcodec_decode_video2(m_pCodecCtx, m_pFrame, &frameFinished, pPacket);
sws_scale(m_pSws_ctx, (uint8_t const * const *)m_pFrame->data,
m_pFrame->linesize, 0, m_pCodecCtx->height,
m_pFrameYUV->data, m_pFrameYUV->linesize);
drawError = SDL_UpdateYUVTexture(m_pSDLTexture, &r, m_pFrameYUV->data[0],
m_pFrameYUV->linesize[0], m_pFrameYUV->data[1], m_pFrameYUV->linesize[1],
m_pFrameYUV->data[2], m_pFrameYUV->linesize[2]);
drawError = SDL_RenderClear(m_pSDLRenderer);
drawError = SDL_RenderCopy(m_pSDLRenderer, m_pSDLTexture, NULL, NULL);
SDL_RenderPresent(m_pSDLRenderer);