vdr  1.7.27
dvbsubtitle.h
Go to the documentation of this file.
00001 /*
00002  * dvbsubtitle.h: DVB subtitles
00003  *
00004  * See the main source file 'vdr.c' for copyright information and
00005  * how to reach the author.
00006  *
00007  * Original author: Marco Schluessler <marco@lordzodiac.de>
00008  *
00009  * $Id: dvbsubtitle.h 2.7 2012/03/11 13:34:12 kls Exp $
00010  */
00011 
00012 #ifndef __DVBSUBTITLE_H
00013 #define __DVBSUBTITLE_H
00014 
00015 #include "osd.h"
00016 #include "thread.h"
00017 #include "tools.h"
00018 
00019 class cDvbSubtitlePage;
00020 class cDvbSubtitleAssembler; // for legacy PES recordings
00021 class cDvbSubtitleBitmaps;
00022 
00023 class cDvbSubtitleConverter : public cThread {
00024 private:
00025   static int setupLevel;
00026   cDvbSubtitleAssembler *dvbSubtitleAssembler;
00027   cOsd *osd;
00028   bool frozen;
00029   int ddsVersionNumber;
00030   int displayWidth;
00031   int displayHeight;
00032   int windowHorizontalOffset;
00033   int windowVerticalOffset;
00034   int windowWidth;
00035   int windowHeight;
00036   int osdDeltaX;
00037   int osdDeltaY;
00038   double osdFactorX;
00039   double osdFactorY;
00040   cList<cDvbSubtitlePage> *pages;
00041   cList<cDvbSubtitleBitmaps> *bitmaps;
00042   tColor yuv2rgb(int Y, int Cb, int Cr);
00043   void SetOsdData(void);
00044   bool AssertOsd(void);
00045   int ExtractSegment(const uchar *Data, int Length, int64_t Pts);
00046   void FinishPage(cDvbSubtitlePage *Page);
00047 public:
00048   cDvbSubtitleConverter(void);
00049   virtual ~cDvbSubtitleConverter();
00050   void Action(void);
00051   void Reset(void);
00052   void Freeze(bool Status) { frozen = Status; }
00053   int ConvertFragments(const uchar *Data, int Length); // for legacy PES recordings
00054   int Convert(const uchar *Data, int Length);
00055   static void SetupChanged(void);
00056   };
00057 
00058 #endif //__DVBSUBTITLE_H