/*
- * Copyright (C) 2003 the ffmpeg project
+ * Copyright (C) 2003 Mike Melanson
+ * Copyright (C) 2003 Dr. Tim Ferguson
*
* This file is part of FFmpeg.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
*/
+#ifndef AVCODEC_ROQVIDEO_H
+#define AVCODEC_ROQVIDEO_H
+
#include "avcodec.h"
#include "dsputil.h"
+#include "random.h"
typedef struct {
- unsigned char y[4];
- unsigned char u, v;
+ unsigned char y[4];
+ unsigned char u, v;
} roq_cell;
typedef struct {
- int idx[4];
+ int idx[4];
} roq_qcell;
+typedef struct {
+ int d[2];
+} motion_vect;
+
typedef struct RoqContext {
AVCodecContext *avctx;
AVFrame *last_frame;
AVFrame *current_frame;
int first_frame;
- int y_stride;
- int c_stride;
- roq_cell cells[256];
- roq_qcell qcells[256];
+ roq_cell cb2x2[256];
+ roq_qcell cb4x4[256];
unsigned char *buf;
int size;
+ int width, height;
+
+ /* Encoder only data */
+ AVRandomState randctx;
+ uint64_t lambda;
+ motion_vect *this_motion4;
+ motion_vect *last_motion4;
+
+ motion_vect *this_motion8;
+ motion_vect *last_motion8;
+
+ unsigned int framesSinceKeyframe;
+
+ AVFrame *frame_to_enc;
+ uint8_t *out_buf;
} RoqContext;
#define RoQ_INFO 0x1001
void ff_apply_motion_4x4(RoqContext *ri, int x, int y, int deltax, int deltay);
void ff_apply_motion_8x8(RoqContext *ri, int x, int y, int deltax, int deltay);
+
+#endif // AVCODEC_ROQVIDEO_H