#include "libavutil/intreadwrite.h"
#include "cabac.h"
-#include "dsputil.h"
#include "error_resilience.h"
#include "get_bits.h"
-#include "mpegvideo.h"
#include "h264chroma.h"
#include "h264dsp.h"
#include "h264pred.h"
#include "h264qpel.h"
+#include "me_cmp.h"
+#include "mpegutils.h"
+#include "parser.h"
+#include "qpeldsp.h"
#include "rectangle.h"
+#include "videodsp.h"
#define H264_MAX_PICTURE_COUNT 32
#define H264_MAX_THREADS 16
SEI_TYPE_USER_DATA_UNREGISTERED = 5, ///< unregistered user data
SEI_TYPE_RECOVERY_POINT = 6, ///< recovery point (frame # to decoder sync)
SEI_TYPE_FRAME_PACKING = 45, ///< frame packing arrangement
+ SEI_TYPE_DISPLAY_ORIENTATION = 47, ///< display orientation
} SEI_Type;
/**
*/
typedef struct H264Context {
AVCodecContext *avctx;
- DSPContext dsp;
+ MECmpContext mecc;
VideoDSPContext vdsp;
H264DSPContext h264dsp;
H264ChromaContext h264chroma;
int content_interpretation_type;
int quincunx_subsampling;
+ /**
+ * display orientation SEI message
+ */
+ int sei_display_orientation_present;
+ int sei_anticlockwise_rotation;
+ int sei_hflip, sei_vflip;
+
/**
* Bit set of clock types for fields/frames in picture timing SEI message.
* For each found ct_type, appropriate bit is set (e.g., bit 1 for
void ff_h264_init_cabac_states(H264Context *h);
+void h264_init_dequant_tables(H264Context *h);
+
void ff_h264_direct_dist_scale_factor(H264Context *const h);
void ff_h264_direct_ref_list_init(H264Context *const h);
void ff_h264_pred_direct_motion(H264Context *const h, int *mb_type);
0x0001000100010001ULL));
}
+int ff_h264_field_end(H264Context *h, int in_setup);
+
+int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src);
+void ff_h264_unref_picture(H264Context *h, H264Picture *pic);
+
+int ff_h264_context_init(H264Context *h);
+int ff_h264_set_parameter_from_sps(H264Context *h);
+
void ff_h264_draw_horiz_band(H264Context *h, int y, int height);
int ff_init_poc(H264Context *h, int pic_field_poc[2], int *pic_poc);
int ff_pred_weight_table(H264Context *h);
int ff_set_ref_count(H264Context *h);
+int ff_h264_decode_slice_header(H264Context *h, H264Context *h0);
+int ff_h264_execute_decode_slices(H264Context *h, unsigned context_count);
+int ff_h264_update_thread_context(AVCodecContext *dst,
+ const AVCodecContext *src);
+
+void ff_h264_flush_change(H264Context *h);
+
+void ff_h264_free_tables(H264Context *h, int free_rbsp);
+
#endif /* AVCODEC_H264_H */