summaryrefslogtreecommitdiffstats
path: root/sub/sd.h
diff options
context:
space:
mode:
Diffstat (limited to 'sub/sd.h')
-rw-r--r--sub/sd.h40
1 files changed, 31 insertions, 9 deletions
diff --git a/sub/sd.h b/sub/sd.h
index 123a9bc45d..42f7b8a445 100644
--- a/sub/sd.h
+++ b/sub/sd.h
@@ -2,20 +2,42 @@
#define MPLAYER_SD_H
#include "dec_sub.h"
+#include "demux/demux_packet.h"
+
+struct sd {
+ struct MPOpts *opts;
+
+ const struct sd_functions *driver;
+ void *priv;
+
+ const char *codec;
+
+ // Extra header data passed from demuxer
+ char *extradata;
+ int extradata_len;
+
+ // Video resolution used for subtitle decoding. Doesn't necessarily match
+ // the resolution of the VO, nor does it have to be the OSD resolution.
+ int sub_video_w, sub_video_h;
+
+ // Make sd_ass use an existing track
+ struct ass_track *ass_track;
+
+ // Shared renderer for ASS - done to avoid reloading embedded fonts.
+ struct ass_library *ass_library;
+ struct ass_renderer *ass_renderer;
+};
struct sd_functions {
bool accept_packets_in_advance;
bool (*supports_format)(const char *format);
- int (*init)(struct sh_sub *sh, struct osd_state *osd);
- void (*decode)(struct sh_sub *sh, struct osd_state *osd,
- void *data, int data_len, double pts, double duration);
- void (*get_bitmaps)(struct sh_sub *sh, struct osd_state *osd,
- struct mp_osd_res dim, double pts,
+ int (*init)(struct sd *sd);
+ void (*decode)(struct sd *sd, struct demux_packet *packet);
+ void (*get_bitmaps)(struct sd *sd, struct mp_osd_res dim, double pts,
struct sub_bitmaps *res);
- char *(*get_text)(struct sh_sub *sh, struct osd_state *osd, double pts);
- void (*reset)(struct sh_sub *sh, struct osd_state *osd);
- void (*switch_off)(struct sh_sub *sh, struct osd_state *osd);
- void (*uninit)(struct sh_sub *sh);
+ char *(*get_text)(struct sd *sd, double pts);
+ void (*reset)(struct sd *sd);
+ void (*uninit)(struct sd *sd);
};
#endif