diff options
author | wm4 <wm4@nowhere> | 2015-12-18 01:54:14 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-12-18 03:52:57 +0100 |
commit | 687b552db186af66e97c58792b2db40294e92bad (patch) | |
tree | 07606c9faad58efa28c2e91961d01f2856600ab9 /sub/sd.h | |
parent | 2c7db48195b03e93ee3cbf382ccabcedb96a6830 (diff) | |
download | mpv-687b552db186af66e97c58792b2db40294e92bad.tar.bz2 mpv-687b552db186af66e97c58792b2db40294e92bad.tar.xz |
sub: remove subtitle filter chain concept
It was stupid. The only thing that still effectively used it was
sd_lavc_conv - all other "filters" were the subtitle decoder/renderers
for text (sd_ass) and bitmap (sd_lavc) subtitles.
While having a subtitle filter chain was interesting (and actually
worked in almost the same way as the audio/video ones), I didn't
manage to use it in a meaningful way, and I couldn't e.g. factor
secondary features like fixing subtitle timing into filters.
Refactor the shit and drop unneeded things as it goes.
Diffstat (limited to 'sub/sd.h')
-rw-r--r-- | sub/sd.h | 37 |
1 files changed, 8 insertions, 29 deletions
@@ -16,18 +16,8 @@ struct sd { const struct sd_functions *driver; void *priv; - const char *codec; - - // Extra header data passed from demuxer - char *extradata; - int extradata_len; - struct sh_stream *sh; - // Set to !=NULL if the input packets are being converted from another - // format. - const char *converted_from; - // 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; @@ -38,14 +28,6 @@ struct sd { struct ass_library *ass_library; struct ass_renderer *ass_renderer; pthread_mutex_t *ass_lock; - - // Set by sub converter - const char *output_codec; - char *output_extradata; - int output_extradata_len; - - // Internal buffer for sd_conv_* functions - struct sd_conv_buffer *sd_conv_buffer; }; struct sd_functions { @@ -60,21 +42,18 @@ struct sd_functions { bool (*accepts_packet)(struct sd *sd); // implicit default if NULL: true int (*control)(struct sd *sd, enum sd_ctrl cmd, void *arg); - // decoder void (*get_bitmaps)(struct sd *sd, struct mp_osd_res dim, double pts, struct sub_bitmaps *res); char *(*get_text)(struct sd *sd, double pts); - - // converter - struct demux_packet *(*get_converted)(struct sd *sd); }; -void sd_conv_add_packet(struct sd *sd, void *data, int data_len, double pts, - double duration, int64_t pos); -struct demux_packet *sd_conv_def_get_converted(struct sd *sd); -void sd_conv_def_reset(struct sd *sd); -void sd_conv_def_uninit(struct sd *sd); - -#define SD_MAX_LINE_LEN 1000 +struct lavc_conv; +bool lavc_conv_supports_format(const char *format); +struct lavc_conv *lavc_conv_create(struct mp_log *log, const char *codec_name, + char *extradata, int extradata_len); +char *lavc_conv_get_extradata(struct lavc_conv *priv); +char **lavc_conv_decode(struct lavc_conv *priv, struct demux_packet *packet); +void lavc_conv_reset(struct lavc_conv *priv); +void lavc_conv_uninit(struct lavc_conv *priv); #endif |