fixed: and back to int64_t for Edl as it's passing by pointer to dvdplayer. Also...
[xbmc:xbmc.git] / xbmc / Edl.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2008 Team XBMC
5  *      http://www.xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, write to
19  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20  *  http://www.gnu.org/copyleft/gpl.html
21  *
22  */
23
24
25 #include <vector>
26 #include <stdint.h>
27 #include "StdString.h"
28 #include "URL.h"
29
30 class CEdl
31 {
32 public:
33   CEdl();
34   virtual ~CEdl(void);
35
36   typedef enum
37   {
38     CUT = 0,
39     MUTE = 1,
40     // SCENE = 2,
41     COMM_BREAK = 3
42   } Action;
43
44   struct Cut
45   {
46     int64_t start; // ms
47     int64_t end;   // ms
48     Action action;
49   };
50
51   bool ReadFiles(const CStdString& strMovie, const float fFramesPerSecond);
52   void Clear();
53
54   bool ReadMythCommBreaks(const CURL& url, const float fFramesPerSecond);
55
56   bool HasCut();
57   bool HasSceneMarker();
58   CStdString GetInfo();
59   int64_t GetTotalCutTime();
60   int64_t RemoveCutTime(int64_t iSeek);
61   int64_t RestoreCutTime(int64_t iClock);
62
63   bool InCut(int64_t iSeek, Cut *pCut = NULL);
64
65   bool GetNextSceneMarker(bool bPlus, const int64_t iClock, int64_t *iSceneMarker);
66
67   static CStdString MillisecondsToTimeString(const int64_t iMilliseconds);
68
69 protected:
70 private:
71   int64_t m_iTotalCutTime; // ms
72   std::vector<Cut> m_vecCuts;
73   std::vector<int64_t> m_vecSceneMarkers;
74
75   bool ReadEdl(const CStdString& strMovie);
76   bool ReadComskip(const CStdString& strMovie, const float fFramesPerSecond);
77   bool ReadVideoReDo(const CStdString& strMovie);
78   bool ReadBeyondTV(const CStdString& strMovie);
79
80   bool AddCut(const Cut& NewCut);
81   bool AddSceneMarker(const int64_t sceneMarker);
82
83   bool WriteMPlayerEdl();
84
85   void MergeShortCommBreaks();
86 };