ffmpeg2theora.h 2.31 KB
Newer Older
Jan Gerber's avatar
Jan Gerber committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef _F2T_FFMPEG2THEORA_H_
#define _F2T_FFMPEG2THEORA_H_

#include "subtitles.h"

typedef enum {
  ENC_UNSET,
  ENC_UTF8,
  ENC_ISO_8859_1,
} F2T_ENCODING;


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

typedef struct ff2theora_kate_stream{
    const char *filename;
    size_t num_subtitles;
    ff2theora_subtitle *subtitles;
    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;
37
38
    int disable_video;

Jan Gerber's avatar
Jan Gerber committed
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    int audiostream;
    int sample_rate;
    int channels;
    int disable_audio;
    float audio_quality;
    int audio_bitrate;
    int preset;

    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;
    double    frame_aspect;
56
    int xy_max;
Jan Gerber's avatar
Jan Gerber committed
57
58
59
60
61
62
63
64

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

65
    AVRational force_input_fps;
Jan Gerber's avatar
Jan Gerber committed
66
67
68
69
70
71
72
73
74
75
76
77
78
79
    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 */
80
81
    double start_time;
    double end_time;
Jan Gerber's avatar
Jan Gerber committed
82
83
84
85
86
87
88
89
90

    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;
91
92

    int ignore_non_utf8;
Jan Gerber's avatar
Jan Gerber committed
93
94
95
96
97
98
99
100
101
102
103
104
105
    // 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