#ifndef _FRAME_H
#define _FRAME_H 1
+#include <inttypes.h>
+
typedef struct
{
/* */
int i_qpplus1;
int64_t i_pts;
int i_frame; /* Presentation frame number */
+ int i_frame_num; /* Coded frame number */
+ int b_kept_as_ref;
/* YUV buffer */
int i_plane;
int i_stride[4];
int i_lines[4];
+ int i_stride_lowres;
+ int i_lines_lowres;
uint8_t *plane[4];
+ uint8_t *filtered[4]; /* plane[0], H, V, HV */
+ uint8_t *lowres[4]; /* half-size copy of input frame: Orig, H, V, HV */
/* for unrestricted mv we allocate more data than needed
* allocated data are stored in buffer */
- void *buffer[4];
+ void *buffer[11];
+
+ /* motion data */
+ int8_t *mb_type;
+ int16_t (*mv[2])[2];
+ int8_t *ref[2];
+ int i_ref[2];
+ int ref_poc[2][16];
+
+ /* for adaptive B-frame decision.
+ * contains the SATD cost of the lowres frame encoded in various modes
+ * FIXME: how big an array do we need? */
+ int i_cost_est[16][16];
+ int i_intra_mbs[16];
} x264_frame_t;
+typedef void (*x264_deblock_inter_t)( uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0 );
+typedef void (*x264_deblock_intra_t)( uint8_t *pix, int stride, int alpha, int beta );
+typedef struct
+{
+ x264_deblock_inter_t deblock_v_luma;
+ x264_deblock_inter_t deblock_h_luma;
+ x264_deblock_inter_t deblock_v_chroma;
+ x264_deblock_inter_t deblock_h_chroma;
+ x264_deblock_intra_t deblock_v_luma_intra;
+ x264_deblock_intra_t deblock_h_luma_intra;
+ x264_deblock_intra_t deblock_v_chroma_intra;
+ x264_deblock_intra_t deblock_h_chroma_intra;
+} x264_deblock_function_t;
+
x264_frame_t *x264_frame_new( x264_t *h );
void x264_frame_delete( x264_frame_t *frame );
void x264_frame_copy_picture( x264_t *h, x264_frame_t *dst, x264_picture_t *src );
void x264_frame_expand_border( x264_frame_t *frame );
+void x264_frame_expand_border_filtered( x264_frame_t *frame );
+void x264_frame_expand_border_lowres( x264_frame_t *frame );
+void x264_frame_expand_border_mod16( x264_t *h, x264_frame_t *frame );
void x264_frame_deblocking_filter( x264_t *h, int i_slice_type );
+void x264_frame_filter( int cpu, x264_frame_t *frame );
+void x264_frame_init_lowres( int cpu, x264_frame_t *frame );
+
+void x264_deblock_init( int cpu, x264_deblock_function_t *pf );
+
#endif