Merge commit 'origin/bug_449_fix_wlan_usbstick_recognition'
[enigma2.git] / lib / dvb / subtitle.h
index 330147adb67860757bc6646457f13c1712383461..c7a7e96c121ea356321e60d6ddd3856419304a9f 100644 (file)
@@ -37,10 +37,10 @@ struct subtitle_region_object
        int object_id;
        int object_type;
        int object_provider_flag;
-       
+
        int object_horizontal_position;
        int object_vertical_position;
-       
+
                // not supported right now...
        int foreground_pixel_value;
        int background_pixel_value;
@@ -51,16 +51,19 @@ struct subtitle_region_object
 struct subtitle_region
 {
        int region_id;
-       int region_version_number;
-       int region_height, region_width;
-       enum depth { bpp2=1, bpp4=2, bpp8=3 } region_depth;
-       ePtr<gPixmap> region_buffer;
-       
+       int version_number;
+       int height, width;
+       enum tDepth { bpp2=1, bpp4=2, bpp8=3 } depth;
+
+       ePtr<gPixmap> buffer;
+
        int clut_id;
-       
-       subtitle_region_object *region_objects;
-       
+
+       subtitle_region_object *objects;
+
        subtitle_region *next;
+
+       bool committed;
 };
 
 struct subtitle_page
@@ -68,9 +71,10 @@ struct subtitle_page
        int page_id;
        time_t page_time_out;
        int page_version_number;
+       int state;
        int pcs_size;
        subtitle_page_region *page_regions;
-       
+
        subtitle_region *regions;
 
        subtitle_clut *cluts;
@@ -102,25 +106,30 @@ struct eDVBSubtitlePage
 {
        std::list<eDVBSubtitleRegion> m_regions;
        pts_t m_show_time;
+       eSize m_display_size;
 };
 
 class eDVBSubtitleParser
        :public iObject, public ePESParser, public Object
 {
        DECLARE_REF(eDVBSubtitleParser);
-       subtitle_page *pages;
+       subtitle_page *m_pages;
        ePtr<iDVBPESReader> m_pes_reader;
        ePtr<eConnection> m_read_connection;
-       pts_t show_time;
+       pts_t m_show_time;
        Signal1<void,const eDVBSubtitlePage&> m_new_subtitle_page;
+       int m_composition_page_id, m_ancillary_page_id;
+       bool m_seen_eod;
+       eSize m_display_size;
 public:
        eDVBSubtitleParser(iDVBDemux *demux);
        virtual ~eDVBSubtitleParser();
-       int start(int pid);
+       int start(int pid, int composition_page_id, int ancillary_page_id);
+       int stop();
        void connectNewPage(const Slot1<void, const eDVBSubtitlePage&> &slot, ePtr<eConnection> &connection);
 private:
-       void subtitle_process_line(subtitle_page *page, int object_id, int line, __u8 *data, int len);
-       int subtitle_process_pixel_data(subtitle_page *page, int object_id, int *linenr, int *linep, __u8 *data);
+       void subtitle_process_line(subtitle_region *region, subtitle_region_object *object, int line, __u8 *data, int len);
+       int subtitle_process_pixel_data(subtitle_region *region, subtitle_region_object *object, int *linenr, int *linep, __u8 *data);
        int subtitle_process_segment(__u8 *segment);
        void subtitle_process_pes(__u8 *buffer, int len);
        void subtitle_redraw_all();