В этом последнем вопросе я понял, что не могу использовать одновременно SDL
и SDL2
. Определенно я предпочитаю SDL2
его прецеденту.
Я написал следующий код для захвата экрана и преобразования его в AVFrame
для создания видео:
AVFrame *frame = av_frame_alloc();
...
SDL_Surface *screen = SDL_SetVideoMode(width,height, 0, 0);
SDL_Overlay *bmp = SDL_CreateYUVOverlay(width,height, SDL_YV12_OVERLAY, screen);
if(av_frame_make_writable(frame) < 0)
exit(1);
SDL_LockYUVOverlay(bmp);
memcpy(frame->data[0], bmp->pixels[0], bmp->pitches[0]);
memcpy(frame->data[1], bmp->pixels[1], bmp->pitches[1]);
memcpy(frame->data[2], bmp->pixels[2], bmp->pitches[2]);
SDL_UnlockYUVOverlay(bmp);
Проблема в том, что SDL2
не поддерживает SDL_Overlay
. альтернативные методы хороши для воспроизведения видео, а не для его захвата. Как мне изменить этот код, чтобы заменить SDL_Overlay
и сделать его подходящим для SDL2
?
SDL_Overlay *bmp
в приведенном выше примере не имеет планарных (yuv) данных текущего буфера кадров? - person the kamilz   schedule 21.11.2017SDL_Overlay
устарел в SDL2, и я должен заменить его чем-то другим. Ищу замену. - person ar2015   schedule 21.11.2017SDL_UpdateYUVTexture
- person ar2015   schedule 21.11.2017