1mlib_VideoH263OverlappedMC_mSe1d6i_aUL8i(b3MLLiIbBrm)alriyb_FVuindcetoiHo2n6s3OverlappedMC_S16_U8(3MLIB)
2
3
4
6 mlib_VideoH263OverlappedMC_S16_U8 - generates the 8x8 luminance predic‐
7 tion block in the Advanced Prediction Mode for H.263 codec
8
10 cc [ flag... ] file... -lmlib [ library... ]
11 #include <mlib.h>
12
13 mlib_status mlib_VideoH263OverlappedMC_S16_U8(mlib_s16 mc_block[64],
14 const mlib_u8 *ref_frame, mlib_s32 mch, mlib_s32 mcv, mlib_s32 mah,
15 mlib_s32 mav, mlib_s32 mbh, mlib_s32 mbv, mlib_s32 mlh, mlib_s32 mlv,
16 mlib_s32 mrh, mlib_s32 mrv, mlib_s32 ref_stride);
17
18
20 The mlib_VideoH263OverlappedMC_S16_U8() function generates an 8x8 lumi‐
21 nance prediction block (motion-compensated block) in the Advanced Pre‐
22 diction Mode for H.263 codec. The reference frame in this function is
23 an interpolated frame. The output of this function must be added to the
24 IDCT output in order to reconstruct the block in the current frame.
25
26
27 The following equation is used:
28
29
30 for x = 0, 1, 2, 3; y = 0, 1, 2, 3
31
32 mc(x, y) = (ref(2x + mch, 2y + mcv)*H0(x, y) +
33 ref(2x + mah, 2y + mav)*H1(x, y) +
34 ref(2x + mlh, 2y + mlv)*H2(x, y)) / 8;
35
36
37
38 for x = 4, 5, 6, 7; y = 0, 1, 2, 3
39
40 mc(x, y) = (ref(2x + mch, 2y + mcv)*H0(x, y) +
41 ref(2x + mah, 2y + mav)*H1(x, y) +
42 ref(2x + mrh, 2y + mrv)*H2(x, y)) / 8;
43
44
45
46 for x = 0, 1, 2, 3; y = 4, 5, 6, 7
47
48 mc(x, y) = (ref(2x + mch, 2y + mcv)*H0(x, y) +
49 ref(2x + mbh, 2y + mbv)*H1(x, y) +
50 ref(2x + mlh, 2y + mlv)*H2(x, y)) / 8;
51
52
53
54 for x = 4, 5, 6, 7; y = 4, 5, 6, 7
55
56 mc(x, y) = (ref(2x + mch, 2y + mcv)*H0(x, y) +
57 ref(2x + mbh, 2y + mbv)*H1(x, y) +
58 ref(2x + mrh, 2y + mrv)*H2(x, y)) / 8;
59
60
61
62 where
63
64 [ 4 5 5 5 5 5 5 4 ]
65 | 5 5 5 5 5 5 5 5 |
66 | 5 5 6 6 6 6 5 5 |
67 H0 = | 5 5 6 6 6 6 5 5 |
68 | 5 5 6 6 6 6 5 5 |
69 | 5 5 6 6 6 6 5 5 |
70 | 5 5 5 5 5 5 5 5 |
71 [ 4 5 5 5 5 5 5 4 ]
72
73 [ 2 2 2 2 2 2 2 2 ]
74 | 1 1 2 2 2 2 1 1 |
75 | 1 1 1 1 1 1 1 1 |
76 H1 = | 1 1 1 1 1 1 1 1 |
77 | 1 1 1 1 1 1 1 1 |
78 | 1 1 1 1 1 1 1 1 |
79 | 1 1 2 2 2 2 1 1 |
80 [ 2 2 2 2 2 2 2 2 ]
81
82 [ 2 1 1 1 1 1 1 2 ]
83 | 2 2 1 1 1 1 2 2 |
84 | 2 2 1 1 1 1 2 2 |
85 H2 = | 2 2 1 1 1 1 2 2 |
86 | 2 2 1 1 1 1 2 2 |
87 | 2 2 1 1 1 1 2 2 |
88 | 2 2 1 1 1 1 2 2 |
89 [ 2 1 1 1 1 1 1 2 ]
90
91
93 The function takes the following arguments:
94
95 mc_block Pointer to the motion-compensated block.
96
97
98 ref_frame Pointer to the interpolated reference frame.
99
100
101 mch Horizontal coordinate of the motion vector for the cur‐
102 rent block.
103
104
105 mcv Vertical coordinate of the motion vector for the current
106 block.
107
108
109 mah Horizontal coordinate of the motion vector for the block
110 above the current block.
111
112
113 mav Vertical coordinate of the motion vector for the block
114 above the current block.
115
116
117 mbh Horizontal coordinate of the motion vector for the block
118 below the current block.
119
120
121 mbv Vertical coordinate of the motion vector for the block
122 below the current block.
123
124
125 mlh Horizontal coordinate of the motion vector for the block
126 to the left of the current block.
127
128
129 mlv Vertical coordinate of the motion vector for the block to
130 the left of the current block.
131
132
133 mrh Horizontal coordinate of the motion vector for the block
134 to the right of the current block.
135
136
137 mrv Vertical coordinate of the motion vector for the block to
138 the right of the current block.
139
140
141 ref_stride Stride, in bytes, between adjacent rows in the interpo‐
142 lated reference frame.
143
144
146 The function returns MLIB_SUCCESS if successful. Otherwise it returns
147 MLIB_FAILURE.
148
150 See attributes(5) for descriptions of the following attributes:
151
152
153
154
155 ┌─────────────────────────────┬─────────────────────────────┐
156 │ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
157 ├─────────────────────────────┼─────────────────────────────┤
158 │Interface Stability │Committed │
159 ├─────────────────────────────┼─────────────────────────────┤
160 │MT-Level │MT-Safe │
161 └─────────────────────────────┴─────────────────────────────┘
162
164 mlib_VideoAddBlock_U8_S16(3MLIB), mlib_VideoCopyRef_S16_U8(3MLIB),
165 mlib_VideoCopyRef_S16_U8_16x16(3MLIB), mlib_VideoCopy‐
166 Ref_U8_U8_16x16(3MLIB), mlib_VideoCopyRefAve_U8_U8_16x16(3MLIB),
167 mlib_VideoH263OverlappedMC_U8_U8(3MLIB), mlib_VideoInter‐
168 pAveX_U8_U8(3MLIB), mlib_VideoInterpAveX_U8_U8_16x16(3MLIB),
169 mlib_VideoInterpAveXY_U8_U8(3MLIB), mlib_VideoInter‐
170 pAveXY_U8_U8_16x16(3MLIB), mlib_VideoInterpAveY_U8_U8(3MLIB),
171 mlib_VideoInterpAveY_U8_U8_16x16(3MLIB), mlib_VideoInt‐
172 erpX_S16_U8(3MLIB), mlib_VideoInterpX_S16_U8_16x16(3MLIB),
173 mlib_VideoInterpX_U8_U8(3MLIB), mlib_VideoInterpXY_S16_U8(3MLIB),
174 mlib_VideoInterpXY_S16_U8_16x16(3MLIB), mlib_VideoInter‐
175 pXY_U8_U8(3MLIB), mlib_VideoInterpXY_U8_U8_16x16(3MLIB), mlib_VideoInt‐
176 erpY_S16_U8(3MLIB), mlib_VideoInterpY_S16_U8_16x16(3MLIB),
177 mlib_VideoInterpY_U8_U8(3MLIB), mlib_VideoInterpY_U8_U8_16x16(3MLIB),
178 mlib_VideoP64Decimate_U8_U8(3MLIB), mlib_VideoP64Loop_S16_U8(3MLIB),
179 mlib_VideoP64Loop_U8_U8(3MLIB), attributes(5)
180
181
182
183SunOS 5.11 2 Marml2i0b0_7VideoH263OverlappedMC_S16_U8(3MLIB)