6 // This must be separate from qtprivate.h to keep everyone from
7 // depending on avcodec.h
8 // FFMPEG front end for quicktime.
9 // Getting ffmpeg to do all the things it needs to do is so labor
10 // intensive, we have a front end for the ffmpeg front end.
13 // This front end is bastardized to support alternating fields with
14 // alternating ffmpeg instances. It drastically reduces the bitrate
15 // required to store interlaced video but nothing can read it but
21 #include "qtprivate.h"
29 AVCodec
*encoder
[FIELDS
];
30 AVCodecContext
*encoder_context
[FIELDS
];
34 AVCodec
*decoder
[FIELDS
];
35 AVCodecContext
*decoder_context
[FIELDS
];
36 AVFrame picture
[FIELDS
];
39 int64_t last_frame
[FIELDS
];
43 // Original dimensions
49 // Temporary storage for color conversions
51 // Storage of compressed data
52 unsigned char *work_buffer
;
53 // Allocation of work_buffer
58 extern int ffmpeg_initialized
;
59 extern pthread_mutex_t ffmpeg_lock
;
62 quicktime_ffmpeg_t
* quicktime_new_ffmpeg(
68 // FFmpeg needs this for the header
69 quicktime_stsd_table_t
*stsd_table
);
70 void quicktime_delete_ffmpeg(quicktime_ffmpeg_t
*ptr
);
71 int quicktime_ffmpeg_decode(quicktime_ffmpeg_t
*ffmpeg
,
73 unsigned char **row_pointers
,