mirror of
https://github.com/mpv-player/mpv
synced 2024-12-28 01:52:19 +00:00
5b75142a1d
Add subtitle filter to remove additions for deaf or hard-of-hearing (SDH). This is for English, but may in part work for others too. This is an ASS filter and the intention is that it can always be enabled as it by default do not remove parts that may be normal text. Harder filtering can be enabled with an additional option. Signed-off-by: wm4 <wm4@nowhere>
56 lines
1.7 KiB
C
56 lines
1.7 KiB
C
#ifndef MPLAYER_SD_H
|
|
#define MPLAYER_SD_H
|
|
|
|
#include "dec_sub.h"
|
|
#include "demux/packet.h"
|
|
|
|
// up to 210 ms overlaps or gaps are removed
|
|
#define SUB_GAP_THRESHOLD 0.210
|
|
// don't change timings if durations are smaller
|
|
#define SUB_GAP_KEEP 0.4
|
|
|
|
struct sd {
|
|
struct mpv_global *global;
|
|
struct mp_log *log;
|
|
struct MPOpts *opts;
|
|
|
|
const struct sd_functions *driver;
|
|
void *priv;
|
|
|
|
struct attachment_list *attachments;
|
|
struct mp_codec_params *codec;
|
|
|
|
// Set to false as soon as the decoder discards old subtitle events.
|
|
// (only needed if sd_functions.accept_packets_in_advance == false)
|
|
bool preload_ok;
|
|
};
|
|
|
|
struct sd_functions {
|
|
const char *name;
|
|
bool accept_packets_in_advance;
|
|
int (*init)(struct sd *sd);
|
|
void (*decode)(struct sd *sd, struct demux_packet *packet);
|
|
void (*reset)(struct sd *sd);
|
|
void (*select)(struct sd *sd, bool selected);
|
|
void (*uninit)(struct sd *sd);
|
|
|
|
bool (*accepts_packet)(struct sd *sd, double pts); // implicit default if NULL: true
|
|
int (*control)(struct sd *sd, enum sd_ctrl cmd, void *arg);
|
|
|
|
void (*get_bitmaps)(struct sd *sd, struct mp_osd_res dim, int format,
|
|
double pts, struct sub_bitmaps *res);
|
|
char *(*get_text)(struct sd *sd, double pts);
|
|
};
|
|
|
|
struct lavc_conv;
|
|
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);
|
|
|
|
char *filter_SDH(struct sd *sd, char *format, int n_ignored, char *data, int length);
|
|
|
|
#endif
|