fix travis ci error
Showing the changes to codec/decoder/core/src/deblocking.cpp (1 of 11 files). Show all
Unified · Split
| @@ -332,13 +332,33 @@ void FilteringEdgeChromaH (SDeblockingFilter* pFilter, uint8_t* pPixCb, uint8_t* · 331 unmodified lines | |||
| 332 | int32_t iAlpha; | 332 | int32_t iAlpha; |
| 333 | int32_t iBeta; | 333 | int32_t iBeta; |
| 334 | ENFORCE_STACK_ALIGN_1D (int8_t, tc, 4, 16); | 334 | ENFORCE_STACK_ALIGN_1D (int8_t, tc, 4, 16); |
| 335 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { | ||
| 335 | 336 | ||
| 336 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP, pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | 337 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, |
| 337 | iBeta); | 338 | iBeta); |
| 339 | |||
| 340 | if (iAlpha | iBeta) { | ||
| 341 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | ||
| 342 | pFilter->pLoopf->pfChromaDeblockingLT4Ver (pPixCb, pPixCr, iStride, iAlpha, iBeta, tc); | ||
| 343 | } | ||
| 344 | } else { | ||
| 345 | |||
| 346 | for (int i = 0; i < 2; i++) { | ||
| 347 | |||
| 348 | |||
| 349 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 350 | iBeta); | ||
| 351 | |||
| 352 | if (iAlpha | iBeta) { | ||
| 353 | uint8_t* pPixCbCr = (i == 0) ? pPixCb : pPixCr; | ||
| 354 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | ||
| 355 | pFilter->pLoopf->pfChromaDeblockingLT4Ver2 (pPixCbCr, iStride, iAlpha, iBeta, tc); | ||
| 356 | } | ||
| 357 | |||
| 358 | |||
| 359 | |||
| 360 | } | ||
| 338 | 361 | ||
| 339 | if (iAlpha | iBeta) { | ||
| 340 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | ||
| 341 | pFilter->pLoopf->pfChromaDeblockingLT4Ver (pPixCb, pPixCr, iStride, iAlpha, iBeta, tc); | ||
| 342 | } | 362 | } |
| 343 | return; | 363 | return; |
| 344 | } | 364 | } |
| @@ -348,13 +368,33 @@ void FilteringEdgeChromaV (SDeblockingFilter* pFilter, uint8_t* pPixCb, uint8_t* · 3 unmodified lines | |||
| 348 | int32_t iAlpha; | 368 | int32_t iAlpha; |
| 349 | int32_t iBeta; | 369 | int32_t iBeta; |
| 350 | ENFORCE_STACK_ALIGN_1D (int8_t, tc, 4, 16); | 370 | ENFORCE_STACK_ALIGN_1D (int8_t, tc, 4, 16); |
| 371 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { | ||
| 351 | 372 | ||
| 352 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP, pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 353 | iBeta); | ||
| 354 | 373 | ||
| 355 | if (iAlpha | iBeta) { | 374 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, |
| 356 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | 375 | iBeta); |
| 357 | pFilter->pLoopf->pfChromaDeblockingLT4Hor (pPixCb, pPixCr, iStride, iAlpha, iBeta, tc); | 376 | |
| 377 | if (iAlpha | iBeta) { | ||
| 378 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | ||
| 379 | pFilter->pLoopf->pfChromaDeblockingLT4Hor (pPixCb, pPixCr, iStride, iAlpha, iBeta, tc); | ||
| 380 | } | ||
| 381 | |||
| 382 | |||
| 383 | } else { | ||
| 384 | |||
| 385 | for (int i = 0; i < 2; i++) { | ||
| 386 | |||
| 387 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 388 | iBeta); | ||
| 389 | |||
| 390 | if (iAlpha | iBeta) { | ||
| 391 | uint8_t* pPixCbCr = (i == 0) ? pPixCb : pPixCr; | ||
| 392 | TC0_TBL_LOOKUP (tc, iIndexA, pBS, 1); | ||
| 393 | pFilter->pLoopf->pfChromaDeblockingLT4Hor2 (pPixCbCr, iStride, iAlpha, iBeta, tc); | ||
| 394 | } | ||
| 395 | |||
| 396 | |||
| 397 | } | ||
| 358 | } | 398 | } |
| 359 | return; | 399 | return; |
| 360 | } | 400 | } |
| @@ -364,12 +404,27 @@ void FilteringEdgeChromaIntraH (SDeblockingFilter* pFilter, uint8_t* pPixCb, uin · 3 unmodified lines | |||
| 364 | int32_t iIndexA; | 404 | int32_t iIndexA; |
| 365 | int32_t iAlpha; | 405 | int32_t iAlpha; |
| 366 | int32_t iBeta; | 406 | int32_t iBeta; |
| 407 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { | ||
| 367 | 408 | ||
| 368 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP, pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | 409 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, |
| 369 | iBeta); | 410 | iBeta); |
| 370 | 411 | ||
| 371 | if (iAlpha | iBeta) { | 412 | if (iAlpha | iBeta) { |
| 372 | pFilter->pLoopf->pfChromaDeblockingEQ4Ver (pPixCb, pPixCr, iStride, iAlpha, iBeta); | 413 | pFilter->pLoopf->pfChromaDeblockingEQ4Ver (pPixCb, pPixCr, iStride, iAlpha, iBeta); |
| 414 | } | ||
| 415 | } else { | ||
| 416 | |||
| 417 | for (int i = 0; i < 2; i++) { | ||
| 418 | |||
| 419 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 420 | iBeta); | ||
| 421 | |||
| 422 | if (iAlpha | iBeta) { | ||
| 423 | uint8_t* pPixCbCr = (i == 0) ? pPixCb : pPixCr; | ||
| 424 | pFilter->pLoopf->pfChromaDeblockingEQ4Ver2 (pPixCbCr, iStride, iAlpha, iBeta); | ||
| 425 | } | ||
| 426 | |||
| 427 | } | ||
| 373 | } | 428 | } |
| 374 | return; | 429 | return; |
| 375 | } | 430 | } |
| @@ -379,12 +434,29 @@ void FilteringEdgeChromaIntraV (SDeblockingFilter* pFilter, uint8_t* pPixCb, uin · 3 unmodified lines | |||
| 379 | int32_t iIndexA; | 434 | int32_t iIndexA; |
| 380 | int32_t iAlpha; | 435 | int32_t iAlpha; |
| 381 | int32_t iBeta; | 436 | int32_t iBeta; |
| 437 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { // QP of cb and cr are the same | ||
| 382 | 438 | ||
| 383 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP, pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 384 | iBeta); | ||
| 385 | 439 | ||
| 386 | if (iAlpha | iBeta) { | 440 | |
| 387 | pFilter->pLoopf->pfChromaDeblockingEQ4Hor (pPixCb, pPixCr, iStride, iAlpha, iBeta); | 441 | |
| 442 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 443 | iBeta); | ||
| 444 | if (iAlpha | iBeta) { | ||
| 445 | pFilter->pLoopf->pfChromaDeblockingEQ4Hor (pPixCb, pPixCr, iStride, iAlpha, iBeta); | ||
| 446 | } | ||
| 447 | } else { | ||
| 448 | |||
| 449 | for (int i = 0; i < 2; i++) { | ||
| 450 | |||
| 451 | |||
| 452 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 453 | iBeta); | ||
| 454 | if (iAlpha | iBeta) { | ||
| 455 | uint8_t* pPixCbCr = (i == 0) ? pPixCb : pPixCr; | ||
| 456 | pFilter->pLoopf->pfChromaDeblockingEQ4Hor2 (pPixCbCr, iStride, iAlpha, iBeta); | ||
| 457 | } | ||
| 458 | } | ||
| 459 | |||
| 388 | } | 460 | } |
| 389 | return; | 461 | return; |
| 390 | } | 462 | } |
| @@ -397,7 +469,8 @@ void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_ · 6 unmodified lines | |||
| 397 | int32_t iMbY = pCurDqLayer->iMbY; | 469 | int32_t iMbY = pCurDqLayer->iMbY; |
| 398 | 470 | ||
| 399 | int32_t iCurLumaQp = pCurDqLayer->pLumaQp[iMbXyIndex]; | 471 | int32_t iCurLumaQp = pCurDqLayer->pLumaQp[iMbXyIndex]; |
| 400 | int32_t iCurChromaQp = pCurDqLayer->pChromaQp[iMbXyIndex]; | 472 | //int32_t* iCurChromaQp = pCurDqLayer->pChromaQp[iMbXyIndex]; |
| 473 | int8_t* pCurChromaQp = pCurDqLayer->pChromaQp[iMbXyIndex]; | ||
| 401 | int32_t iLineSize = pFilter->iCsStride[0]; | 474 | int32_t iLineSize = pFilter->iCsStride[0]; |
| 402 | int32_t iLineSizeUV = pFilter->iCsStride[1]; | 475 | int32_t iLineSizeUV = pFilter->iCsStride[1]; |
| 403 | 476 | ||
| @@ -406,11 +479,13 @@ void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_ · 2 unmodified lines | |||
| 406 | pDestCb = pFilter->pCsData[1] + ((iMbY * iLineSizeUV + iMbX) << 3); | 479 | pDestCb = pFilter->pCsData[1] + ((iMbY * iLineSizeUV + iMbX) << 3); |
| 407 | pDestCr = pFilter->pCsData[2] + ((iMbY * iLineSizeUV + iMbX) << 3); | 480 | pDestCr = pFilter->pCsData[2] + ((iMbY * iLineSizeUV + iMbX) << 3); |
| 408 | 481 | ||
| 482 | //Vertical margrin | ||
| 409 | if (iBoundryFlag & LEFT_FLAG_MASK) { | 483 | if (iBoundryFlag & LEFT_FLAG_MASK) { |
| 410 | int32_t iLeftXyIndex = iMbXyIndex - 1; | 484 | int32_t iLeftXyIndex = iMbXyIndex - 1; |
| 411 | pFilter->iLumaQP = (iCurLumaQp + pCurDqLayer->pLumaQp[iLeftXyIndex] + 1) >> 1; | 485 | pFilter->iLumaQP = (iCurLumaQp + pCurDqLayer->pLumaQp[iLeftXyIndex] + 1) >> 1; |
| 412 | pFilter->iChromaQP = (iCurChromaQp + pCurDqLayer->pChromaQp[iLeftXyIndex] + 1) >> 1; | 486 | for (int i = 0; i < 2; i++) { |
| 413 | 487 | pFilter->iChromaQP[i] = (pCurChromaQp[i] + pCurDqLayer->pChromaQp[iLeftXyIndex][i] + 1) >> 1; | |
| 488 | } | ||
| 414 | if (nBS[0][0][0] == 0x04) { | 489 | if (nBS[0][0][0] == 0x04) { |
| 415 | FilteringEdgeLumaIntraV (pFilter, pDestY, iLineSize, NULL); | 490 | FilteringEdgeLumaIntraV (pFilter, pDestY, iLineSize, NULL); |
| 416 | FilteringEdgeChromaIntraV (pFilter, pDestCb, pDestCr, iLineSizeUV, NULL); | 491 | FilteringEdgeChromaIntraV (pFilter, pDestCb, pDestCr, iLineSizeUV, NULL); |
| @@ -423,7 +498,8 @@ void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_ · 6 unmodified lines | |||
| 423 | } | 498 | } |
| 424 | 499 | ||
| 425 | pFilter->iLumaQP = iCurLumaQp; | 500 | pFilter->iLumaQP = iCurLumaQp; |
| 426 | pFilter->iChromaQP = iCurChromaQp; | 501 | pFilter->iChromaQP[0] = pCurChromaQp[0]; |
| 502 | pFilter->iChromaQP[1] = pCurChromaQp[1]; | ||
| 427 | 503 | ||
| 428 | if (* (uint32_t*)nBS[0][1] != 0) { | 504 | if (* (uint32_t*)nBS[0][1] != 0) { |
| 429 | FilteringEdgeLumaV (pFilter, &pDestY[1 << 2], iLineSize, nBS[0][1]); | 505 | FilteringEdgeLumaV (pFilter, &pDestY[1 << 2], iLineSize, nBS[0][1]); |
| @@ -441,7 +517,9 @@ void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_ · 11 unmodified lines | |||
| 441 | if (iBoundryFlag & TOP_FLAG_MASK) { | 517 | if (iBoundryFlag & TOP_FLAG_MASK) { |
| 442 | int32_t iTopXyIndex = iMbXyIndex - pCurDqLayer->iMbWidth; | 518 | int32_t iTopXyIndex = iMbXyIndex - pCurDqLayer->iMbWidth; |
| 443 | pFilter->iLumaQP = (iCurLumaQp + pCurDqLayer->pLumaQp[iTopXyIndex] + 1) >> 1; | 519 | pFilter->iLumaQP = (iCurLumaQp + pCurDqLayer->pLumaQp[iTopXyIndex] + 1) >> 1; |
| 444 | pFilter->iChromaQP = (iCurChromaQp + pCurDqLayer->pChromaQp[iTopXyIndex] + 1) >> 1; | 520 | for (int i = 0; i < 2; i++) { |
| 521 | pFilter->iChromaQP[i] = (pCurChromaQp[i] + pCurDqLayer->pChromaQp[iTopXyIndex][i] + 1) >> 1; | ||
| 522 | } | ||
| 445 | 523 | ||
| 446 | if (nBS[1][0][0] == 0x04) { | 524 | if (nBS[1][0][0] == 0x04) { |
| 447 | FilteringEdgeLumaIntraH (pFilter, pDestY, iLineSize, NULL); | 525 | FilteringEdgeLumaIntraH (pFilter, pDestY, iLineSize, NULL); |
| @@ -455,7 +533,8 @@ void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_ · 7 unmodified lines | |||
| 455 | } | 533 | } |
| 456 | 534 | ||
| 457 | pFilter->iLumaQP = iCurLumaQp; | 535 | pFilter->iLumaQP = iCurLumaQp; |
| 458 | pFilter->iChromaQP = iCurChromaQp; | 536 | pFilter->iChromaQP[0] = pCurChromaQp[0]; |
| 537 | pFilter->iChromaQP[1] = pCurChromaQp[1]; | ||
| 459 | 538 | ||
| 460 | if (* (uint32_t*)nBS[1][1] != 0) { | 539 | if (* (uint32_t*)nBS[1][1] != 0) { |
| 461 | FilteringEdgeLumaH (pFilter, &pDestY[ (1 << 2)*iLineSize], iLineSize, nBS[1][1]); | 540 | FilteringEdgeLumaH (pFilter, &pDestY[ (1 << 2)*iLineSize], iLineSize, nBS[1][1]); |
| @@ -527,8 +606,10 @@ void FilteringEdgeChromaHV (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, in · 65 unmodified lines | |||
| 527 | int32_t iMbWidth = pCurDqLayer->iMbWidth; | 606 | int32_t iMbWidth = pCurDqLayer->iMbWidth; |
| 528 | int32_t iLineSize = pFilter->iCsStride[1]; | 607 | int32_t iLineSize = pFilter->iCsStride[1]; |
| 529 | 608 | ||
| 530 | uint8_t* pDestCb, *pDestCr; | 609 | uint8_t* pDestCb; |
| 531 | int32_t iCurQp; | 610 | uint8_t* pDestCr; |
| 611 | //int32_t iCurQp; | ||
| 612 | int8_t* pCurQp; | ||
| 532 | int32_t iIndexA, iAlpha, iBeta; | 613 | int32_t iIndexA, iAlpha, iBeta; |
| 533 | 614 | ||
| 534 | ENFORCE_STACK_ALIGN_1D (int8_t, iTc, 4, 16); | 615 | ENFORCE_STACK_ALIGN_1D (int8_t, iTc, 4, 16); |
| @@ -536,33 +617,76 @@ void FilteringEdgeChromaHV (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, in · 1 unmodified line | |||
| 536 | 617 | ||
| 537 | pDestCb = pFilter->pCsData[1] + ((iMbY * iLineSize + iMbX) << 3); | 618 | pDestCb = pFilter->pCsData[1] + ((iMbY * iLineSize + iMbX) << 3); |
| 538 | pDestCr = pFilter->pCsData[2] + ((iMbY * iLineSize + iMbX) << 3); | 619 | pDestCr = pFilter->pCsData[2] + ((iMbY * iLineSize + iMbX) << 3); |
| 539 | iCurQp = pCurDqLayer->pChromaQp[iMbXyIndex]; | 620 | pCurQp = pCurDqLayer->pChromaQp[iMbXyIndex]; |
| 621 | |||
| 540 | * (uint32_t*)uiBSx4 = 0x03030303; | 622 | * (uint32_t*)uiBSx4 = 0x03030303; |
| 541 | 623 | ||
| 542 | // chroma v | 624 | |
| 625 | // chroma v | ||
| 543 | if (iBoundryFlag & LEFT_FLAG_MASK) { | 626 | if (iBoundryFlag & LEFT_FLAG_MASK) { |
| 544 | pFilter->iChromaQP = (iCurQp + pCurDqLayer->pChromaQp[iMbXyIndex - 1] + 1) >> 1; | 627 | |
| 628 | for (int i = 0; i < 2; i++) { | ||
| 629 | pFilter->iChromaQP[i] = (pCurQp[i] + pCurDqLayer->pChromaQp[iMbXyIndex - 1][i] + 1) >> 1; | ||
| 630 | |||
| 631 | } | ||
| 545 | FilteringEdgeChromaIntraV (pFilter, pDestCb, pDestCr, iLineSize, NULL); | 632 | FilteringEdgeChromaIntraV (pFilter, pDestCb, pDestCr, iLineSize, NULL); |
| 546 | } | 633 | } |
| 547 | 634 | ||
| 548 | pFilter->iChromaQP = iCurQp; | 635 | pFilter->iChromaQP[0] = pCurQp[0]; |
| 549 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP, pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | 636 | pFilter->iChromaQP[1] = pCurQp[1];; |
| 550 | iBeta); | 637 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { |
| 551 | if (iAlpha | iBeta) { | 638 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, |
| 552 | TC0_TBL_LOOKUP (iTc, iIndexA, uiBSx4, 1); | 639 | iBeta); |
| 553 | pFilter->pLoopf->pfChromaDeblockingLT4Hor (&pDestCb[2 << 1], &pDestCr[2 << 1], iLineSize, iAlpha, iBeta, iTc); | 640 | if (iAlpha | iBeta) { |
| 641 | TC0_TBL_LOOKUP (iTc, iIndexA, uiBSx4, 1); | ||
| 642 | pFilter->pLoopf->pfChromaDeblockingLT4Hor (&pDestCb[2 << 1], &pDestCr[2 << 1], iLineSize, iAlpha, iBeta, iTc); | ||
| 643 | } | ||
| 644 | } else { | ||
| 645 | |||
| 646 | for (int i = 0; i < 2; i++) { | ||
| 647 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 648 | iBeta); | ||
| 649 | if (iAlpha | iBeta) { | ||
| 650 | uint8_t* pDestCbCr = (i == 0) ? &pDestCb[2 << 1] : &pDestCr[2 << 1]; | ||
| 651 | TC0_TBL_LOOKUP (iTc, iIndexA, uiBSx4, 1); | ||
| 652 | pFilter->pLoopf->pfChromaDeblockingLT4Hor2 (pDestCbCr, iLineSize, iAlpha, iBeta, iTc); | ||
| 653 | } | ||
| 654 | |||
| 655 | } | ||
| 554 | } | 656 | } |
| 555 | 657 | ||
| 556 | // chroma h | 658 | // chroma h |
| 659 | |||
| 557 | if (iBoundryFlag & TOP_FLAG_MASK) { | 660 | if (iBoundryFlag & TOP_FLAG_MASK) { |
| 558 | pFilter->iChromaQP = (iCurQp + pCurDqLayer->pChromaQp[iMbXyIndex - iMbWidth] + 1) >> 1; | 661 | for (int i = 0; i < 2; i++) { |
| 662 | pFilter->iChromaQP[i] = (pCurQp[i] + pCurDqLayer->pChromaQp[iMbXyIndex - iMbWidth][i] + 1) >> 1; | ||
| 663 | } | ||
| 559 | FilteringEdgeChromaIntraH (pFilter, pDestCb, pDestCr, iLineSize, NULL); | 664 | FilteringEdgeChromaIntraH (pFilter, pDestCb, pDestCr, iLineSize, NULL); |
| 560 | } | 665 | } |
| 561 | 666 | ||
| 562 | pFilter->iChromaQP = iCurQp; | 667 | pFilter->iChromaQP[0] = pCurQp[0]; |
| 563 | if (iAlpha | iBeta) { | 668 | pFilter->iChromaQP[1] = pCurQp[1]; |
| 564 | pFilter->pLoopf->pfChromaDeblockingLT4Ver (&pDestCb[ (2 << 1)*iLineSize], &pDestCr[ (2 << 1)*iLineSize], iLineSize, | 669 | |
| 565 | iAlpha, iBeta, iTc); | 670 | if (pFilter->iChromaQP[0] == pFilter->iChromaQP[1]) { |
| 671 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[0], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 672 | iBeta); | ||
| 673 | if (iAlpha | iBeta) { | ||
| 674 | pFilter->pLoopf->pfChromaDeblockingLT4Ver (&pDestCb[ (2 << 1)*iLineSize], &pDestCr[ (2 << 1)*iLineSize], iLineSize, | ||
| 675 | iAlpha, iBeta, iTc); | ||
| 676 | } | ||
| 677 | } else { | ||
| 678 | for (int i = 0; i < 2; i++) { | ||
| 679 | |||
| 680 | GET_ALPHA_BETA_FROM_QP (pFilter->iChromaQP[i], pFilter->iSliceAlphaC0Offset, pFilter->iSliceBetaOffset, iIndexA, iAlpha, | ||
| 681 | iBeta); | ||
| 682 | if (iAlpha | iBeta) { | ||
| 683 | uint8_t* pDestCbCr = (i == 0) ? &pDestCb[ (2 << 1) * iLineSize] : &pDestCr[ (2 << 1) * iLineSize]; | ||
| 684 | pFilter->pLoopf->pfChromaDeblockingLT4Ver2 (pDestCbCr, iLineSize, | ||
| 685 | iAlpha, iBeta, iTc); | ||
| 686 | } | ||
| 687 | } | ||
| 688 | |||
| 689 | |||
| 566 | } | 690 | } |
| 567 | } | 691 | } |
| 568 | 692 | ||
| @@ -706,6 +830,11 @@ void DeblockingInit (SDeblockingFunc* pFunc, int32_t iCpu) { · 137 unmodified lines | |||
| 706 | pFunc->pfChromaDeblockingLT4Hor = DeblockChromaLt4H_c; | 830 | pFunc->pfChromaDeblockingLT4Hor = DeblockChromaLt4H_c; |
| 707 | pFunc->pfChromaDeblockingEQ4Hor = DeblockChromaEq4H_c; | 831 | pFunc->pfChromaDeblockingEQ4Hor = DeblockChromaEq4H_c; |
| 708 | 832 | ||
| 833 | pFunc->pfChromaDeblockingLT4Ver2 = DeblockChromaLt4V2_c; | ||
| 834 | pFunc->pfChromaDeblockingEQ4Ver2 = DeblockChromaEq4V2_c; | ||
| 835 | pFunc->pfChromaDeblockingLT4Hor2 = DeblockChromaLt4H2_c; | ||
| 836 | pFunc->pfChromaDeblockingEQ4Hor2 = DeblockChromaEq4H2_c; | ||
| 837 | |||
| 709 | #ifdef X86_ASM | 838 | #ifdef X86_ASM |
| 710 | if (iCpu & WELS_CPU_SSSE3) { | 839 | if (iCpu & WELS_CPU_SSSE3) { |
| 711 | pFunc->pfLumaDeblockingLT4Ver = DeblockLumaLt4V_ssse3; | 840 | pFunc->pfLumaDeblockingLT4Ver = DeblockLumaLt4V_ssse3; |