summaryrefslogtreecommitdiff
path: root/ffmpeg/ffmpeg.h
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
commitf7813a5324be39d13ab536c245d15dfc602a7849 (patch)
treefad99148b88823d34a5df2f0a25881a002eb291b /ffmpeg/ffmpeg.h
parentb7a5a477b8ff4d4e3028b9dfb9a9df0a41463f92 (diff)
basic type mechanism working
Diffstat (limited to 'ffmpeg/ffmpeg.h')
-rw-r--r--ffmpeg/ffmpeg.h56
1 files changed, 54 insertions, 2 deletions
diff --git a/ffmpeg/ffmpeg.h b/ffmpeg/ffmpeg.h
index f7178ff..433baf8 100644
--- a/ffmpeg/ffmpeg.h
+++ b/ffmpeg/ffmpeg.h
@@ -37,7 +37,6 @@
#include "libavcodec/avcodec.h"
#include "libavfilter/avfilter.h"
-#include "libavfilter/avfiltergraph.h"
#include "libavutil/avutil.h"
#include "libavutil/dict.h"
@@ -52,10 +51,24 @@
#define VSYNC_PASSTHROUGH 0
#define VSYNC_CFR 1
#define VSYNC_VFR 2
+#define VSYNC_VSCFR 0xfe
#define VSYNC_DROP 0xff
#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 */
@@ -94,11 +107,16 @@ typedef struct OptionsContext {
/* input options */
int64_t input_ts_offset;
int rate_emu;
+ int accurate_seek;
SpecifierOpt *ts_scale;
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;
@@ -165,6 +183,8 @@ typedef struct OptionsContext {
int nb_copy_prior_start;
SpecifierOpt *filters;
int nb_filters;
+ SpecifierOpt *filter_scripts;
+ int nb_filter_scripts;
SpecifierOpt *reinit_filters;
int nb_reinit_filters;
SpecifierOpt *fix_sub_duration;
@@ -177,6 +197,8 @@ typedef struct OptionsContext {
int nb_passlogfiles;
SpecifierOpt *guess_layout_max;
int nb_guess_layout_max;
+ SpecifierOpt *apad;
+ int nb_apad;
} OptionsContext;
typedef struct InputFilter {
@@ -270,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 {
@@ -277,11 +312,16 @@ typedef struct InputFile {
int eof_reached; /* true if eof reached */
int eagain; /* true if last read attempt returned EAGAIN */
int ist_index; /* index of first stream in input_streams */
+ int64_t input_ts_offset;
int64_t ts_offset;
+ int64_t last_ts;
+ int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
+ int64_t recording_time;
int nb_streams; /* number of stream that ffmpeg is aware of; may be different
from ctx.nb_streams if new streams appear during av_read_frame() */
int nb_streams_warn; /* number of streams that the user was warned of */
int rate_emu;
+ int accurate_seek;
#if HAVE_PTHREADS
pthread_t thread; /* thread reading from this file */
@@ -318,6 +358,8 @@ typedef struct OutputStream {
/* pts of the first frame encoded for this stream, used for limiting
* recording time */
int64_t first_pts;
+ /* dts of the last packet sent to the muxer */
+ int64_t last_mux_dts;
AVBitStreamFilterContext *bitstream_filters;
AVCodec *enc;
int64_t max_frames;
@@ -328,7 +370,7 @@ typedef struct OutputStream {
int force_fps;
int top_field_first;
- float frame_aspect_ratio;
+ AVRational frame_aspect_ratio;
/* forced key frames */
int64_t *forced_kf_pts;
@@ -347,11 +389,14 @@ typedef struct OutputStream {
OutputFilter *filter;
char *avfilter;
+ char *filters; ///< filtergraph associated to the -filter option
+ char *filters_script; ///< filtergraph script associated to the -filter_script option
int64_t sws_flags;
AVDictionary *opts;
AVDictionary *swr_opts;
AVDictionary *resample_opts;
+ char *apad;
int finished; /* no more packets should be written for this stream */
int unavailable; /* true if the steram is unavailable (possibly temporarily) */
int stream_copy;
@@ -360,6 +405,8 @@ typedef struct OutputStream {
int copy_prior_start;
int keep_pix_fmt;
+
+ AVCodecParserContext *parser;
} OutputStream;
typedef struct OutputFile {
@@ -409,10 +456,13 @@ extern int qp_hist;
extern int stdin_interaction;
extern int frame_bits_per_raw_sample;
extern AVIOContext *progress_avio;
+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);
@@ -436,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 */