summaryrefslogtreecommitdiff
path: root/src/movie.h
blob: 62837c8bed21e3d58d228386e302823718b46a66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * This file is part of the planetblupi source code
 * Copyright (C) 1997, Daniel Roux & EPSITEC SA
 * Copyright (C) 2017-2018, Mathieu Schroeter
 * http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games
 *
 * 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 3 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, see http://gnu.org/licenses
 */

#pragma once

#include <string>

struct Kit_Source;
struct Kit_Player;
struct Kit_PlayerInfo;
struct SDL_Texture;
class CPixmap;

#define AUDIOBUFFER_SIZE (32768)

class CMovie
{
public:
  CMovie (CPixmap * pixmap);
  ~CMovie ();

  bool Create ();
  bool GetEnable ();
  bool IsExist (const std::string & pFilename);
  bool Play (const std::string & pFilename);
  void Stop ();
  void Pause ();
  void Resume ();
  bool Render ();

protected:
  void playMovie ();
  bool fileOpenMovie (const std::string & pFilename);
  void fileCloseMovie ();
  void termAVI ();
  bool initAVI ();

protected:
  CPixmap *         pixmap;
  Kit_Source *      m_movie;
  Kit_Player *      m_player;
  SDL_Texture *     m_videoTex;
  SDL_Texture *     backTexture;
  Sint32            m_ret;
  SDL_AudioDeviceID m_audioDev;
  SDL_RWops *       rw_ops;

  char m_audiobuf[AUDIOBUFFER_SIZE];
  bool m_bEnable;
  bool starting;
  bool m_fPlaying;   // Play flag: true == playing, false == paused
  bool m_fMovieOpen; // Open flag: true == movie open, false = none
};