/* * CINELERRA * Copyright (C) 2008 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "guicast.h" #include "vframe.h" #include class TestWindow : public BC_Window { public: TestWindow() : BC_Window("test", 0, 0, 640, 480) { } }; typedef struct { struct timeval start_time; struct timeval last_time; int64_t frames; } status_t; static void init_status(status_t *status) { gettimeofday(&status->start_time, 0); gettimeofday(&status->last_time, 0); status->frames = 0; } static void update_status(status_t *status) { struct timeval new_time; gettimeofday(&new_time, 0); if(new_time.tv_sec - status->last_time.tv_sec > 1) { fprintf(stderr, "%lld frames. %lld frames/sec \r", status->frames, (int64_t)status->frames / (int64_t)(new_time.tv_sec - status->start_time.tv_sec)); fflush(stdout); status->last_time = new_time; }; } static void stop_status() { fprintf(stderr, "\n\n"); } int main(int argc, char *argv[]) { TestWindow window; status_t status; // int result = window.accel_available(BC_YUV422); // printf("accel_available == %d\n", result); window.start_video(); BC_Bitmap *bitmap1 = window.new_bitmap(640, 480, BC_BGR8888); init_status(&status); while(1) { window.draw_bitmap(bitmap1, 1); window.flash(); update_status(&status); status.frames++; } };