X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg.h;h=433baf84fa08c22ba03ede9c800c4d841ca255ce;hb=4782c4284fa3856a9b6910fe5ff6e4fb1c65b58c;hp=9f6bd96b1f4bdc611d4d87f02c677788523ee9e7;hpb=8617be28d074c4708d2c948cbc311737cf2fbf39;p=ffmpeg diff --git a/ffmpeg.h b/ffmpeg.h index 9f6bd96b1f4..433baf84fa0 100644 --- a/ffmpeg.h +++ b/ffmpeg.h @@ -56,6 +56,19 @@ #define MAX_STREAMS 1024 /* arbitrary sanity check value */ +enum HWAccelID { + HWACCEL_NONE = 0, + HWACCEL_AUTO, + HWACCEL_VDPAU, +}; + +typedef struct HWAccel { + const char *name; + int (*init)(AVCodecContext *s); + enum HWAccelID id; + enum AVPixelFormat pix_fmt; +} HWAccel; + /* select an input stream for an output stream */ typedef struct StreamMap { int disabled; /* 1 is this mapping is disabled by a negative map */ @@ -100,6 +113,10 @@ typedef struct OptionsContext { int nb_ts_scale; SpecifierOpt *dump_attachment; int nb_dump_attachment; + SpecifierOpt *hwaccels; + int nb_hwaccels; + SpecifierOpt *hwaccel_devices; + int nb_hwaccel_devices; /* output options */ StreamMap *stream_maps; @@ -275,6 +292,19 @@ typedef struct InputStream { int nb_filters; int reinit_filters; + + /* hwaccel options */ + enum HWAccelID hwaccel_id; + char *hwaccel_device; + + /* hwaccel context */ + enum HWAccelID active_hwaccel_id; + void *hwaccel_ctx; + void (*hwaccel_uninit)(AVCodecContext *s); + int (*hwaccel_get_buffer)(AVCodecContext *s, AVFrame *frame, int flags); + int (*hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame); + enum AVPixelFormat hwaccel_pix_fmt; + enum AVPixelFormat hwaccel_retrieved_pix_fmt; } InputStream; typedef struct InputFile { @@ -431,6 +461,8 @@ extern float max_error_rate; extern const AVIOInterruptCB int_cb; extern const OptionDef options[]; +extern const HWAccel hwaccels[]; + void term_init(void); void term_exit(void); @@ -454,4 +486,6 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost); int ffmpeg_parse_options(int argc, char **argv); +int vdpau_init(AVCodecContext *s); + #endif /* FFMPEG_H */