Lines Matching refs:sl

41 static av_noinline void FUNC(hl_decode_mb)(const H264Context *h, H264SliceContext *sl)
43 const int mb_x = sl->mb_x;
44 const int mb_y = sl->mb_y;
45 const int mb_xy = sl->mb_xy;
51 const int transform_bypass = !SIMPLE && (sl->qscale == 0 && h->ps.sps->transform_bypass);
56 dest_y = h->cur_pic.f->data[0] + ((mb_x << PIXEL_SHIFT) + mb_y * sl->linesize) * 16;
57 dest_cb = h->cur_pic.f->data[1] + (mb_x << PIXEL_SHIFT) * 8 + mb_y * sl->uvlinesize * block_h;
58 dest_cr = h->cur_pic.f->data[2] + (mb_x << PIXEL_SHIFT) * 8 + mb_y * sl->uvlinesize * block_h;
60 h->vdsp.prefetch(dest_y + (sl->mb_x & 3) * 4 * sl->linesize + (64 << PIXEL_SHIFT), sl->linesize, 4);
61 h->vdsp.prefetch(dest_cb + (sl->mb_x & 7) * sl->uvlinesize + (64 << PIXEL_SHIFT), dest_cr - dest_cb, 2);
63 h->list_counts[mb_xy] = sl->list_count;
65 if (!SIMPLE && MB_FIELD(sl)) {
66 linesize = sl->mb_linesize = sl->linesize * 2;
67 uvlinesize = sl->mb_uvlinesize = sl->uvlinesize * 2;
70 dest_y -= sl->linesize * 15;
71 dest_cb -= sl->uvlinesize * (block_h - 1);
72 dest_cr -= sl->uvlinesize * (block_h - 1);
76 for (list = 0; list < sl->list_count; list++) {
80 int8_t *ref = &sl->ref_cache[list][scan8[0]];
81 fill_rectangle(ref, 4, 4, 8, (16 + *ref) ^ (sl->mb_y & 1), 1);
84 int ref = sl->ref_cache[list][scan8[i]];
86 fill_rectangle(&sl->ref_cache[list][scan8[i]], 2, 2,
87 8, (16 + ref) ^ (sl->mb_y & 1), 1);
93 linesize = sl->mb_linesize = sl->linesize;
94 uvlinesize = sl->mb_uvlinesize = sl->uvlinesize;
103 init_get_bits(&gb, sl->intra_pcm_ptr,
135 memcpy(dest_y + i * linesize, sl->intra_pcm_ptr + i * 16, 16);
143 const uint8_t *src_cb = sl->intra_pcm_ptr + 256;
144 const uint8_t *src_cr = sl->intra_pcm_ptr + 256 + block_h * 8;
154 if (sl->deblocking_filter)
155 xchg_mb_border(h, sl, dest_y, dest_cb, dest_cr, linesize,
159 h->hpc.pred8x8[sl->chroma_pred_mode](dest_cb, uvlinesize);
160 h->hpc.pred8x8[sl->chroma_pred_mode](dest_cr, uvlinesize);
163 hl_decode_mb_predict_luma(h, sl, mb_type, SIMPLE,
167 if (sl->deblocking_filter)
168 xchg_mb_border(h, sl, dest_y, dest_cb, dest_cr, linesize,
172 FUNC(hl_motion_422)(h, sl, dest_y, dest_cb, dest_cr,
180 FUNC(hl_motion_420)(h, sl, dest_y, dest_cb, dest_cr,
190 hl_decode_mb_idct_luma(h, sl, mb_type, SIMPLE, transform_bypass,
194 (sl->cbp & 0x30)) {
198 (sl->chroma_pred_mode == VERT_PRED8x8 ||
199 sl->chroma_pred_mode == HOR_PRED8x8)) {
200 h->hpc.pred8x8_add[sl->chroma_pred_mode](dest[0],
202 sl->mb + (16 * 16 * 1 << PIXEL_SHIFT),
204 h->hpc.pred8x8_add[sl->chroma_pred_mode](dest[1],
206 sl->mb + (16 * 16 * 2 << PIXEL_SHIFT),
212 if (sl->non_zero_count_cache[scan8[i]] ||
213 dctcoef_get(sl->mb, PIXEL_SHIFT, i * 16))
215 sl->mb + (i * 16 << PIXEL_SHIFT),
219 if (sl->non_zero_count_cache[scan8[i + 4]] ||
220 dctcoef_get(sl->mb, PIXEL_SHIFT, i * 16))
222 sl->mb + (i * 16 << PIXEL_SHIFT),
230 qp[0] = sl->chroma_qp[0] + 3;
231 qp[1] = sl->chroma_qp[1] + 3;
233 qp[0] = sl->chroma_qp[0];
234 qp[1] = sl->chroma_qp[1];
236 if (sl->non_zero_count_cache[scan8[CHROMA_DC_BLOCK_INDEX + 0]])
237 h->h264dsp.h264_chroma_dc_dequant_idct(sl->mb + (16 * 16 * 1 << PIXEL_SHIFT),
239 if (sl->non_zero_count_cache[scan8[CHROMA_DC_BLOCK_INDEX + 1]])
240 h->h264dsp.h264_chroma_dc_dequant_idct(sl->mb + (16 * 16 * 2 << PIXEL_SHIFT),
243 sl->mb, uvlinesize,
244 sl->non_zero_count_cache);
256 static av_noinline void FUNC(hl_decode_mb_444)(const H264Context *h, H264SliceContext *sl)
258 const int mb_x = sl->mb_x;
259 const int mb_y = sl->mb_y;
260 const int mb_xy = sl->mb_xy;
266 const int transform_bypass = !SIMPLE && (sl->qscale == 0 && h->ps.sps->transform_bypass);
271 ((mb_x << PIXEL_SHIFT) + mb_y * sl->linesize) * 16;
272 h->vdsp.prefetch(dest[p] + (sl->mb_x & 3) * 4 * sl->linesize + (64 << PIXEL_SHIFT),
273 sl->linesize, 4);
276 h->list_counts[mb_xy] = sl->list_count;
278 if (!SIMPLE && MB_FIELD(sl)) {
279 linesize = sl->mb_linesize = sl->mb_uvlinesize = sl->linesize * 2;
283 dest[p] -= sl->linesize * 15;
286 for (list = 0; list < sl->list_count; list++) {
290 int8_t *ref = &sl->ref_cache[list][scan8[0]];
291 fill_rectangle(ref, 4, 4, 8, (16 + *ref) ^ (sl->mb_y & 1), 1);
294 int ref = sl->ref_cache[list][scan8[i]];
296 fill_rectangle(&sl->ref_cache[list][scan8[i]], 2, 2,
297 8, (16 + ref) ^ (sl->mb_y & 1), 1);
303 linesize = sl->mb_linesize = sl->mb_uvlinesize = sl->linesize;
310 init_get_bits(&gb, sl->intra_pcm_ptr, 768 * bit_depth);
322 sl->intra_pcm_ptr + p * 256 + i * 16, 16);
326 if (sl->deblocking_filter)
327 xchg_mb_border(h, sl, dest[0], dest[1], dest[2], linesize,
331 hl_decode_mb_predict_luma(h, sl, mb_type, SIMPLE,
335 if (sl->deblocking_filter)
336 xchg_mb_border(h, sl, dest[0], dest[1], dest[2], linesize,
339 FUNC(hl_motion_444)(h, sl, dest[0], dest[1], dest[2],
349 hl_decode_mb_idct_luma(h, sl, mb_type, SIMPLE, transform_bypass,