use new/delete instead of malloc/free
[enigma2.git] / lib / dvb / pmt.h
index 701930dc4fedfee6f6af6b69158570ef6f61581c..95d3cc43522c36fa506ce1cf8de2ff218f27d099 100644 (file)
@@ -117,10 +117,29 @@ public:
        struct subtitleStream
        {
                int pid;
-               int subtitling_type;
-               int composition_page_id;
-               int ancillary_page_id;
+               int subtitling_type;    /*  see ETSI EN 300 468 table 26 component_type
+                                                                       when stream_content is 0x03
+                                                                       0x10..0x13, 0x20..0x23 is used for dvb subtitles
+                                                                       0x01 is used for teletext subtitles */
+               union
+               {
+                       int composition_page_id;  // used for dvb subtitles
+                       int teletext_page_number;  // used for teletext subtitles
+               };
+               union
+               {
+                       int ancillary_page_id;  // used for dvb subtitles
+                       int teletext_magazine_number;  // used for teletext subtitles
+               };
                std::string language_code;
+               bool operator<(const subtitleStream &s) const
+               {
+                       if (pid != s.pid)
+                               return pid < s.pid;
+                       if (teletext_page_number != s.teletext_page_number)
+                               return teletext_page_number < s.teletext_page_number;
+                       return teletext_magazine_number < s.teletext_magazine_number;
+               }
        };
 
        struct program
@@ -145,6 +164,7 @@ public:
        int getService(ePtr<eDVBService> &service) { service = m_service; return 0; }
        int getPMT(ePtr<eTable<ProgramMapSection> > &ptr) { return m_PMT.getCurrent(ptr); }
        int getChannel(eUsePtr<iDVBChannel> &channel);
+       void resetCachedProgram() { m_have_cached_program = false; }
 
        int tune(eServiceReferenceDVB &ref, int use_decode_demux, eCueSheet *sg=0);
        void free();