#include "libavutil/intreadwrite.h"
#include "cabac.h"
-#include "dsputil.h"
#include "error_resilience.h"
#include "get_bits.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"
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;
+ MECmpContext mecc;
VideoDSPContext vdsp;
H264DSPContext h264dsp;
H264ChromaContext h264chroma;
H264QpelContext h264qpel;
ParseContext parse_context;
GetBitContext gb;
- DSPContext dsp;
ERContext er;
H264Picture *DPB;
GetBitContext *inter_gb_ptr;
const uint8_t *intra_pcm_ptr;
- DECLARE_ALIGNED(16, int16_t, mb)[16 * 48 * 2]; ///< as a dct coeffecient is int32_t in high depth, we need to reserve twice the space.
+ DECLARE_ALIGNED(16, int16_t, mb)[16 * 48 * 2]; ///< as a dct coefficient is int32_t in high depth, we need to reserve twice the space.
DECLARE_ALIGNED(16, int16_t, mb_luma_dc)[3][16 * 2];
int16_t mb_padding[256 * 2]; ///< as mb is addressed by scantable[i] and scantable is uint8_t we can either check that i is not too large or ensure that there is some unused stuff after mb
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
int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low
- uint8_t parse_history[4];
+ uint8_t parse_history[6];
int parse_history_count;
int parse_last_mb;
uint8_t *edge_emu_buffer;