diff options
Diffstat (limited to 'miav/player.h')
-rw-r--r-- | miav/player.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/miav/player.h b/miav/player.h new file mode 100644 index 0000000..0f5ca51 --- /dev/null +++ b/miav/player.h @@ -0,0 +1,142 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * player.h + * + * Fri Feb 25 20:23:19 CET 2005 + * Copyright 2005 Bent Bisballe + * deva@aasimon.org + ****************************************************************************/ + +/* + * Originally from: + * RTVideoRec Realtime video recoder and encoder for Linux + * + * Copyright (C) 2004 Bent Bisballe + * + */ + +/* + * This file is part of MIaV. + * + * MIaV 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. + * + * MIaV 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 MIaV; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "config.h" +#ifdef USE_GUI + +#ifndef __RTVIDEOREC_PLAYER_H +#define __RTVIDEOREC_PLAYER_H + +#include "info.h" + +#include <stdio.h> +#include <stdlib.h> +#include <SDL/SDL.h> +//#include <avformat.h> + +#include "util.h" +#include "queue.h" + +#include "thread.h" +#include "frame.h" + +#include <qwidget.h> + +#include "yuv_draw.h" + +#define TEXT_RECORDING "Optager" +#define TEXT_STOPPED "Stoppet" + +//#define DISPLAYWIDTH 720 // FIXME: These numbers suck! +//#define DISPLAYHEIGHT 576 + +/** + * This class contains the SDL code, for displaying the movie frames + * in the widget, using hardware overlay. + */ +class Player : public Thread { +public: + Player(Info *ginfo, + int width, int height, + volatile int *grunning, + sem_t *gsem, + Queue<Frame> *gqueue, + pthread_mutex_t *gmutex); + ~Player(); + + // These functions are used to set the overlay text. + void setCpr(char *newcpr, char* name); + void startrecord(); + void stoprecord(); + + // Start and stop runnning video (freeze/unfreeze) + void start(); + void stop(); + + // Used to reinitialize the SDL output width a new size + void resize(int width, int height, bool showtext); + + void thread_main(); + + void setMute(bool mute); + +private: + + void initSDL(); + void deinitSDL(); + void reinitSDL(); + + // Output dimensions (overlay) + volatile int width; + volatile int height; + + SDL_Rect rect; + + // Set to true, whenever a resize is requested. + volatile bool bypass; + + // Vars for the text overlay + volatile bool showtext; + volatile bool recording; + bool recording_prev; + + volatile bool muted; + bool muted_prev; + + volatile bool cprchanged; + char cpr[256]; + + Info *info; + + void player(); + + // Used to verify if errors ha ocurred previously. + bool noErrors; + + volatile int *running; + sem_t *sem; + Queue<Frame> *queue; + pthread_mutex_t *mutex; + + sem_t play_sem; + + SDL_Surface *screen; + SDL_Overlay *overlay; + + YUVDraw *yuv_draw; +}; + +#endif/*__RTVIDEOREC_PLAYER_H*/ + +#endif /* USE_GUI */ |