AVFrame и SDL2 для захвата экрана

В этом последнем вопросе я понял, что не могу использовать одновременно 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?


person ar2015    schedule 20.11.2017    source источник
comment
Для человека, который проголосовал за то, чтобы закрыть этот вопрос как слишком широкий, я должен упомянуть, что все библиотеки можно использовать по-разному. Но цель одна. Вопрос предельно ясен. У вас вообще есть одно решение?   -  person ar2015    schedule 20.11.2017
comment
Я могу не совсем это понять, но вы говорите, что SDL_Overlay *bmp в приведенном выше примере не имеет планарных (yuv) данных текущего буфера кадров?   -  person the kamilz    schedule 21.11.2017
comment
@thekamilz, нет. Я имею в виду, что SDL_Overlay устарел в SDL2, и я должен заменить его чем-то другим. Ищу замену.   -  person ar2015    schedule 21.11.2017
comment
Теперь я понимаю. Я уверен, что вы могли видеть это, но на всякий случай вы проверили это: stackoverflow.com/questions/17579286/   -  person the kamilz    schedule 21.11.2017
comment
@thekamilz, мне нужна обратная сторона SDL_UpdateYUVTexture   -  person ar2015    schedule 21.11.2017
comment
О да, верно. ОК, это моя последняя попытка: stackoverflow.com/questions/ 22315980/sdl2-c-снятие-снимка экрана . Удачи.   -  person the kamilz    schedule 21.11.2017