硬解支持nv12渲染

This commit is contained in:
Dw9 2021-09-08 20:06:28 +08:00 committed by GitHub
parent 8352f119f2
commit e0491bc133
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
/* /*
* Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved. * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
* *
* This file is part of ZLMediaKit(https://github.com/ZLMediaKit/ZLMediaKit). * This file is part of ZLMediaKit(https://github.com/ZLMediaKit/ZLMediaKit).
@ -163,16 +163,24 @@ public:
_render = SDL_CreateRenderer(_win, -1, SDL_RENDERER_ACCELERATED); _render = SDL_CreateRenderer(_win, -1, SDL_RENDERER_ACCELERATED);
} }
if (_render && !_texture) { if (_render && !_texture) {
_texture = SDL_CreateTexture(_render, SDL_PIXELFORMAT_IYUV, if (pFrame->format == AV_PIX_FMT_NV12) {
SDL_TEXTUREACCESS_STREAMING, _texture = SDL_CreateTexture(
pFrame->width, _render, SDL_PIXELFORMAT_NV12, SDL_TEXTUREACCESS_STREAMING, pFrame->width, pFrame->height);
pFrame->height); } else {
_texture = SDL_CreateTexture(
_render, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, pFrame->width, pFrame->height);
}
} }
if (_texture) { if (_texture) {
SDL_UpdateYUVTexture(_texture, nullptr, //需要更新sdl到最新>=2.0.16
pFrame->data[0], pFrame->linesize[0], if (pFrame->format == AV_PIX_FMT_NV12) {
pFrame->data[1], pFrame->linesize[1], SDL_UpdateNVTexture(
pFrame->data[2], pFrame->linesize[2]); _texture, nullptr, pFrame->data[0], pFrame->linesize[0], pFrame->data[1], pFrame->linesize[1]);
} else {
SDL_UpdateYUVTexture(
_texture, nullptr, pFrame->data[0], pFrame->linesize[0], pFrame->data[1], pFrame->linesize[1],
pFrame->data[2], pFrame->linesize[2]);
}
//SDL_UpdateTexture(_texture, nullptr, pFrame->data[0], pFrame->linesize[0]); //SDL_UpdateTexture(_texture, nullptr, pFrame->data[0], pFrame->linesize[0]);
SDL_RenderClear(_render); SDL_RenderClear(_render);
@ -190,4 +198,4 @@ private:
void *_hwnd = nullptr; void *_hwnd = nullptr;
}; };
#endif /* YUVDISPLAYER_H_ */ #endif /* YUVDISPLAYER_H_ */