/* dir : 0 -> vertical edge, 1 -> horizontal edge */
for( dir = 0; dir < 2; dir++ )
{
- int start = 0;
int edge;
+ const int mbm_xy = dir == 0 ? mb_xy -1 : mb_xy - s->mb_stride;
+ int start = h->slice_table[mbm_xy] == 255 ? 1 : 0;
- /* test picture boundary */
- if( ( dir == 0 && mb_x == 0 ) || ( dir == 1 && mb_y == 0 ) ) {
+ if (h->deblocking_filter==2 && h->slice_table[mbm_xy] != h->slice_table[mb_xy])
start = 1;
- }
- if( 0 == start && 2 == h->deblocking_filter) {
- const int mbn_xy = dir == 0 ? mb_xy -1 : mb_xy - s->mb_stride;
- if (h->slice_table[mbn_xy] != h->slice_table[mb_xy]) {
- start = 1;
- }
- }
/* Calculate bS */
for( edge = start; edge < 4; edge++ ) {
/* mbn_xy: neighbour macroblock (how that works for field ?) */
- int mbn_xy = edge > 0 ? mb_xy : ( dir == 0 ? mb_xy -1 : mb_xy - s->mb_stride );
+ int mbn_xy = edge > 0 ? mb_xy : mbm_xy;
int bS[4];
int qp;