From 88edf5d3b8e5a0b6776e2d8eb6640823b324f3ef Mon Sep 17 00:00:00 2001 From: Peng Li Date: Fri, 1 Jun 2018 00:07:15 +0800 Subject: [PATCH] Add drawing grid --- yuvPlayer.cpp | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/yuvPlayer.cpp b/yuvPlayer.cpp index 87fb7dc..fe7f45e 100644 --- a/yuvPlayer.cpp +++ b/yuvPlayer.cpp @@ -26,7 +26,7 @@ class YuvPlayer public: YuvPlayer(int width, int height, const string& title = "YUV Player"); void play(string fname, int fps = -1); - void drawGrid(); + void toggleGrid(); ~YuvPlayer(); private: @@ -41,6 +41,8 @@ private: unsigned int frameCnt = 0; string title; ifstream::pos_type last_pos; + bool isShowingGrid = false; + uint8_t *raw; }; @@ -80,7 +82,7 @@ YuvPlayer::~YuvPlayer() void YuvPlayer::play(string file, int fps) { size_t frame_size = width * height * 3 / 2; - uint8_t *raw = (uint8_t *) malloc(sizeof(uint8_t) * frame_size); + raw = (uint8_t *) malloc(sizeof(uint8_t) * frame_size); ifstream in (file, ios::binary); if (!in.is_open()) { cout << "failed to open " << file << endl; @@ -126,7 +128,7 @@ void YuvPlayer::play(string file, int fps) isPlaying = !isPlaying; break; case SDLK_g: - drawGrid(); + toggleGrid(); break; default: break; @@ -138,22 +140,10 @@ void YuvPlayer::play(string file, int fps) free(raw); } -void YuvPlayer::drawGrid() +void YuvPlayer::toggleGrid() { -// cout << "drawGrid" << endl; -// SDL_RenderClear(renderer); -// SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); -// -// if(SDL_RenderDrawLine(renderer, 10, 10, 200, 200) == -1){ -// cout << "draw line error" << endl; -// } -// SDL_RenderCopy(renderer, texture, nullptr, nullptr); -// SDL_RenderPresent(renderer); - -// SDL_UpdateTexture(texture, nullptr, raw, width * SDL_BYTESPERPIXEL(SDL_PIXELFORMAT_IYUV)); - SDL_RenderClear(renderer); - SDL_RenderCopy(renderer, texture, nullptr, nullptr); - SDL_RenderPresent(renderer); + isShowingGrid = !isShowingGrid; + updateRenderer(raw); } @@ -174,12 +164,21 @@ bool YuvPlayer::readFrame(ifstream& in, uint8_t *raw, size_t size) void YuvPlayer::updateRenderer(uint8_t *raw) { - if (frameCnt == 10){ - memset(raw, 0x00, 1280 * 720); - } SDL_UpdateTexture(texture, nullptr, raw, width * SDL_BYTESPERPIXEL(SDL_PIXELFORMAT_IYUV)); SDL_RenderClear(renderer); SDL_RenderCopy(renderer, texture, nullptr, nullptr); + + if(isShowingGrid){ + SDL_SetRenderDrawColor( renderer, 0x00, 0x00, 0xFF, 0xFF ); + //SDL_RenderDrawLine( renderer, 0, height / 2, width, height / 2 ); + SDL_RenderDrawLine( renderer, 0, height / 3, width, height / 3 ); + SDL_RenderDrawLine( renderer, 0, height * 2 / 3, width, height * 2 / 3 ); + + SDL_RenderDrawLine( renderer, width / 3, 0, width / 3, height ); + SDL_RenderDrawLine( renderer, width * 2 / 3, 0, width * 2 / 3, height ); + + } + SDL_RenderPresent(renderer); } @@ -187,6 +186,6 @@ int main(int argc, char* argv[]) { string fname = "out.yuv"; YuvPlayer player(1280, 720); - //player.play(fname, 25); - player.play(fname); + player.play(fname, 25); + //player.play(fname); } -- 2.11.0