public:
YuvPlayer(int width, int height, const string& title = "YUV Player");
void play(string fname, int fps = -1);
- void drawGrid();
+ void toggleGrid();
~YuvPlayer();
private:
unsigned int frameCnt = 0;
string title;
ifstream::pos_type last_pos;
+ bool isShowingGrid = false;
+ uint8_t *raw;
};
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;
isPlaying = !isPlaying;
break;
case SDLK_g:
- drawGrid();
+ toggleGrid();
break;
default:
break;
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);
}
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);
}
{
string fname = "out.yuv";
YuvPlayer player(1280, 720);
- //player.play(fname, 25);
- player.play(fname);
+ player.play(fname, 25);
+ //player.play(fname);
}