28 #ifndef AVCODEC_H264_H
29 #define AVCODEC_H264_H
39 #define interlaced_dct interlaced_dct_is_a_bad_name
40 #define mb_intra mb_intra_is_not_initialized_see_mb_type
42 #define MAX_SPS_COUNT 32
43 #define MAX_PPS_COUNT 256
45 #define MAX_MMCO_COUNT 66
47 #define MAX_DELAYED_PIC_COUNT 16
49 #define MAX_MBPAIR_SIZE (256*1024) // a tighter bound could be calculated if someone cares about a few bytes
53 #define ALLOW_INTERLACE
63 #ifdef ALLOW_INTERLACE
64 #define MB_MBAFF h->mb_mbaff
65 #define MB_FIELD h->mb_field_decoding_flag
66 #define FRAME_MBAFF h->mb_aff_frame
67 #define FIELD_PICTURE (s->picture_structure != PICT_FRAME)
76 #define FIELD_PICTURE 0
78 #define IS_INTERLACED(mb_type) 0
84 #define FIELD_OR_MBAFF_PICTURE (FRAME_MBAFF || FIELD_PICTURE)
87 #define CABAC h->pps.cabac
90 #define CHROMA (h->sps.chroma_format_idc)
91 #define CHROMA422 (h->sps.chroma_format_idc == 2)
92 #define CHROMA444 (h->sps.chroma_format_idc == 3)
94 #define EXTENDED_SAR 255
96 #define MB_TYPE_REF0 MB_TYPE_ACPRED // dirty but it fits in 16 bit
97 #define MB_TYPE_8x8DCT 0x01000000
98 #define IS_REF0(a) ((a) & MB_TYPE_REF0)
99 #define IS_8x8DCT(a) ((a) & MB_TYPE_8x8DCT)
101 #define QP_MAX_NUM (51 + 6*6) // The maximum supported qp
308 #define LIST_NOT_USED -1 // FIXME rename?
309 #define PART_NOT_AVAILABLE -2
639 int *dst_length,
int *consumed,
int length);
715 unsigned int linesize,
unsigned int uvlinesize);
718 unsigned int linesize,
unsigned int uvlinesize);
757 #define LUMA_DC_BLOCK_INDEX 48
758 #define CHROMA_DC_BLOCK_INDEX 49
762 4 + 1 * 8, 5 + 1 * 8, 4 + 2 * 8, 5 + 2 * 8,
763 6 + 1 * 8, 7 + 1 * 8, 6 + 2 * 8, 7 + 2 * 8,
764 4 + 3 * 8, 5 + 3 * 8, 4 + 4 * 8, 5 + 4 * 8,
765 6 + 3 * 8, 7 + 3 * 8, 6 + 4 * 8, 7 + 4 * 8,
766 4 + 6 * 8, 5 + 6 * 8, 4 + 7 * 8, 5 + 7 * 8,
767 6 + 6 * 8, 7 + 6 * 8, 6 + 7 * 8, 7 + 7 * 8,
768 4 + 8 * 8, 5 + 8 * 8, 4 + 9 * 8, 5 + 9 * 8,
769 6 + 8 * 8, 7 + 8 * 8, 6 + 9 * 8, 7 + 9 * 8,
770 4 + 11 * 8, 5 + 11 * 8, 4 + 12 * 8, 5 + 12 * 8,
771 6 + 11 * 8, 7 + 11 * 8, 6 + 12 * 8, 7 + 12 * 8,
772 4 + 13 * 8, 5 + 13 * 8, 4 + 14 * 8, 5 + 14 * 8,
773 6 + 13 * 8, 7 + 13 * 8, 6 + 14 * 8, 7 + 14 * 8,
774 0 + 0 * 8, 0 + 5 * 8, 0 + 10 * 8
780 return (b & 0xFFFF) + (a << 16);
782 return (a & 0xFFFF) + (b << 16);
789 return (b & 0xFF) + (a << 8);
791 return (a & 0xFF) + (b << 8);
808 const int index8 =
scan8[n];
827 i4x4[4] = i4x4_cache[7 + 8 * 3];
828 i4x4[5] = i4x4_cache[7 + 8 * 2];
829 i4x4[6] = i4x4_cache[7 + 8 * 1];
838 AV_COPY32(&nnz[ 0], &nnz_cache[4 + 8 * 1]);
839 AV_COPY32(&nnz[ 4], &nnz_cache[4 + 8 * 2]);
840 AV_COPY32(&nnz[ 8], &nnz_cache[4 + 8 * 3]);
841 AV_COPY32(&nnz[12], &nnz_cache[4 + 8 * 4]);
842 AV_COPY32(&nnz[16], &nnz_cache[4 + 8 * 6]);
843 AV_COPY32(&nnz[20], &nnz_cache[4 + 8 * 7]);
844 AV_COPY32(&nnz[32], &nnz_cache[4 + 8 * 11]);
845 AV_COPY32(&nnz[36], &nnz_cache[4 + 8 * 12]);
848 AV_COPY32(&nnz[24], &nnz_cache[4 + 8 * 8]);
849 AV_COPY32(&nnz[28], &nnz_cache[4 + 8 * 9]);
850 AV_COPY32(&nnz[40], &nnz_cache[4 + 8 * 13]);
851 AV_COPY32(&nnz[44], &nnz_cache[4 + 8 * 14]);
859 int mb_type,
int list)
863 AV_COPY128(mv_dst + 0 * b_stride, mv_src + 8 * 0);
864 AV_COPY128(mv_dst + 1 * b_stride, mv_src + 8 * 1);
865 AV_COPY128(mv_dst + 2 * b_stride, mv_src + 8 * 2);
866 AV_COPY128(mv_dst + 3 * b_stride, mv_src + 8 * 3);
875 AV_COPY16(mvd_dst + 3 + 3, mvd_src + 3 + 8 * 0);
876 AV_COPY16(mvd_dst + 3 + 2, mvd_src + 3 + 8 * 1);
877 AV_COPY16(mvd_dst + 3 + 1, mvd_src + 3 + 8 * 2);
884 ref_index[0 + 0 * 2] = ref_cache[
scan8[0]];
885 ref_index[1 + 0 * 2] = ref_cache[scan8[4]];
886 ref_index[0 + 1 * 2] = ref_cache[scan8[8]];
887 ref_index[1 + 1 * 2] = ref_cache[scan8[12]];
896 const int b8_xy = 4 * h->
mb_xy;
922 0x0001000100010001ULL));
926 0x0001000100010001ULL));