ffmpeg2theora.h 2.58 KB
Newer Older
Jan Gerber's avatar
Jan Gerber committed
1
2
3
4
5
6
#ifndef _F2T_FFMPEG2THEORA_H_
#define _F2T_FFMPEG2THEORA_H_

#include "subtitles.h"

typedef enum {
Jan Gerber's avatar
Jan Gerber committed
7
8
9
    ENC_UNSET,
    ENC_UTF8,
    ENC_ISO_8859_1,
Jan Gerber's avatar
Jan Gerber committed
10
11
12
13
14
15
16
17
18
19
20
} F2T_ENCODING;


typedef struct ff2theora_subtitle{
    char *text;
    size_t len;
    double t0;
    double t1;
} ff2theora_subtitle;

typedef struct ff2theora_kate_stream{
21
    /* this block valid for subtitles loaded from a file */
Jan Gerber's avatar
Jan Gerber committed
22
23
24
    const char *filename;
    size_t num_subtitles;
    ff2theora_subtitle *subtitles;
25
26
27
28
29

    /* this block valid for subtitles coming from the source video */
    int stream_index;

    /* this block valid for all subtitle sources */
Jan Gerber's avatar
Jan Gerber committed
30
31
32
33
34
35
36
37
38
39
40
41
42
    size_t subtitles_count; /* total subtitles output so far */
    F2T_ENCODING subtitles_encoding;
    char subtitles_language[16];
    char subtitles_category[16];
} ff2theora_kate_stream;

typedef struct ff2theora{
    AVFormatContext *context;
    int video_index;
    int audio_index;

    int deinterlace;
    int vhook;
43
    int disable_video;
Jan Gerber's avatar
Jan Gerber committed
44
    int no_upscaling;
45

Jan Gerber's avatar
Jan Gerber committed
46
47
48
49
50
51
52
53
    int audiostream;
    int sample_rate;
    int channels;
    int disable_audio;
    float audio_quality;
    int audio_bitrate;
    int preset;

54
55
    int disable_subtitles;

Jan Gerber's avatar
Jan Gerber committed
56
    int videostream;
Jan Gerber's avatar
Jan Gerber committed
57
58
59
60
61
62
63
64
    int picture_width;
    int picture_height;
    double fps;
    struct SwsContext *sws_colorspace_ctx; /* for image resampling/resizing */
    struct SwsContext *sws_scale_ctx; /* for image resampling/resizing */
    ReSampleContext *audio_resample_ctx;
    ogg_int32_t aspect_numerator;
    ogg_int32_t aspect_denominator;
Jan Gerber's avatar
Jan Gerber committed
65
    double frame_aspect;
66
    int max_size;
Jan Gerber's avatar
Jan Gerber committed
67
68
69
70
71
72
73
74

    int pix_fmt;
    int video_quality;
    int video_bitrate;
    int sharpness;
    int keyint;
    char pp_mode[255];

75
    AVRational force_input_fps;
Jan Gerber's avatar
Jan Gerber committed
76
77
78
79
80
81
82
83
84
85
86
87
88
89
    int sync;

    /* cropping */
    int frame_topBand;
    int frame_bottomBand;
    int frame_leftBand;
    int frame_rightBand;

    int frame_width;
    int frame_height;
    int frame_x_offset;
    int frame_y_offset;

    /* In seconds */
90
91
    double start_time;
    double end_time;
Jan Gerber's avatar
Jan Gerber committed
92
93
94
95
96
97
98
99
100

    AVRational framerate_new;

    double pts_offset; /* between given input pts and calculated output pts */
    int64_t frame_count; /* total video frames output so far */
    int64_t sample_count; /* total audio samples output so far */

    size_t n_kate_streams;
    ff2theora_kate_stream *kate_streams;
101
102

    int ignore_non_utf8;
Jan Gerber's avatar
Jan Gerber committed
103
104
105
106
107
108
109
110
111
112
113
114
115
    // ffmpeg2theora --nosound -f dv -H 32000 -S 0 -v 8 -x 384 -y 288 -G 1.5 input.dv
    double video_gamma;
    double video_bright;
    double video_contr;
    double video_satur;
    int y_lut_used;
    int uv_lut_used;
    unsigned char y_lut[256];
    unsigned char uv_lut[256];
}
*ff2theora;

#endif