@@ -229,55 +229,43 @@ impl<'a, T: Pixel> TileStateMut<'a, T> {
229
229
} )
230
230
}
231
231
232
+ /// Returns above block information for context during prediction.
233
+ /// If there is no above block, returns `None`.
234
+ /// `xdec` and `ydec` are the decimation factors of the targeted plane.
232
235
pub fn above_block_info (
233
- & self , bo : TileBlockOffset , plane : usize ,
236
+ & self , bo : TileBlockOffset , xdec : usize , ydec : usize ,
234
237
) -> Option < CodedBlockInfo > {
235
- let ( bo_x, bo_y) = ( bo. 0 . x , bo. 0 . y ) ;
236
- if plane == 0 {
237
- if bo_y == 0 {
238
- None
239
- } else {
240
- Some ( self . coded_block_info [ bo_y - 1 ] [ bo_x] )
241
- }
238
+ let ( mut bo_x, mut bo_y) = ( bo. 0 . x , bo. 0 . y ) ;
239
+ if bo_x & 1 == 0 {
240
+ bo_x += xdec
241
+ } ;
242
+ if bo_y & 1 == 1 {
243
+ bo_y -= ydec
244
+ } ;
245
+ if bo_y == 0 {
246
+ None
242
247
} else {
243
- let ( mut bo_x_uv, mut bo_y_uv) = ( bo_x, bo_y) ;
244
- if bo_x & 1 == 0 {
245
- bo_x_uv += 1
246
- } ;
247
- if bo_y & 1 == 1 {
248
- bo_y_uv -= 1
249
- } ;
250
- if bo_y_uv == 0 {
251
- None
252
- } else {
253
- Some ( self . coded_block_info [ bo_y_uv - 1 ] [ bo_x_uv] )
254
- }
248
+ Some ( self . coded_block_info [ bo_y - 1 ] [ bo_x] )
255
249
}
256
250
}
257
251
252
+ /// Returns left block information for context during prediction.
253
+ /// If there is no left block, returns `None`.
254
+ /// `xdec` and `ydec` are the decimation factors of the targeted plane.
258
255
pub fn left_block_info (
259
- & self , bo : TileBlockOffset , plane : usize ,
256
+ & self , bo : TileBlockOffset , xdec : usize , ydec : usize ,
260
257
) -> Option < CodedBlockInfo > {
261
- let ( bo_x, bo_y) = ( bo. 0 . x , bo. 0 . y ) ;
262
- if plane == 0 {
263
- if bo_x == 0 {
264
- None
265
- } else {
266
- Some ( self . coded_block_info [ bo_y] [ bo_x - 1 ] )
267
- }
258
+ let ( mut bo_x, mut bo_y) = ( bo. 0 . x , bo. 0 . y ) ;
259
+ if bo_x & 1 == 1 {
260
+ bo_x -= xdec
261
+ } ;
262
+ if bo_y & 1 == 0 {
263
+ bo_y += ydec
264
+ } ;
265
+ if bo_x == 0 {
266
+ None
268
267
} else {
269
- let ( mut bo_x_uv, mut bo_y_uv) = ( bo_x, bo_y) ;
270
- if bo_x & 1 == 1 {
271
- bo_x_uv -= 1
272
- } ;
273
- if bo_y & 1 == 0 {
274
- bo_y_uv += 1
275
- } ;
276
- if bo_x_uv == 0 {
277
- None
278
- } else {
279
- Some ( self . coded_block_info [ bo_y_uv] [ bo_x_uv - 1 ] )
280
- }
268
+ Some ( self . coded_block_info [ bo_y] [ bo_x - 1 ] )
281
269
}
282
270
}
283
271
}
0 commit comments