Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * All Video Processing kernels
  3.  * Copyright © <2010>, Intel Corporation.
  4.  *
  5.  * This program is licensed under the terms and conditions of the
  6.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  7.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  8.  *
  9.  */
  10.  
  11. // Module name: IMC3_Load_9x5.asm
  12. //
  13. //----------------------------------------------------------------
  14. //  This module loads 16x8 Y, 9x5 U and 9x5 V planar data blocks for CSC module
  15. //      and stores it in byte-aligned format.
  16. //----------------------------------------------------------------
  17.  
  18. #define  IMC3_LOAD_9x5
  19. #include "PL3_Load.inc"
  20.  
  21. // Load 16x8 planar Y ----------------------------------------------------------
  22.     add  (2) rMSGSRC.0<1>:d     wORIX<2;2,1>:w    wSRC_H_ORI_OFFSET<2;2,1>:w       // Source Y Block origin
  23. #if !defined(LOAD_UV_ONLY)
  24.     mov  (1) rMSGSRC.2<1>:ud    nDPR_BLOCK_SIZE_Y:ud                               // Block width and height (16x8)
  25.  
  26.     mov  (8) mMSGHDRY<1>:ud     rMSGSRC<8;8,1>:ud
  27.     send (8) udSRC_Y(0)<1>      mMSGHDRY    udDUMMY_NULL    nDATAPORT_READ    nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
  28. #endif
  29.  
  30. // Load 9x5 planar U and V -----------------------------------------------------
  31.     asr (2)  rMSGSRC.0<1>:d     rMSGSRC.0<2;2,1>:d       1:w   // U/V block origin should be half of Y's
  32.     mov (1)  rMSGSRC.2<1>:ud    nDPR_BLOCK_SIZE_UV:ud          // U/V block width and height (12x5)
  33.  
  34.     mov  (8) mMSGHDRU<1>:ud     rMSGSRC<8;8,1>:ud
  35.     send (8) udSRC_U(0)<1>      mMSGHDRU    udDUMMY_NULL    nDATAPORT_READ    nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
  36.     mov  (8) mMSGHDRV<1>:ud     rMSGSRC<8;8,1>:ud
  37.     send (8) udSRC_V(0)<1>      mMSGHDRU    udDUMMY_NULL    nDATAPORT_READ    nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
  38.  
  39. // Convert to word-aligned format ----------------------------------------------
  40. #if !defined(LOAD_UV_ONLY)
  41.     $for (nY_NUM_OF_ROWS-1; >-1; -1) {
  42.         mov (16)  uwDEST_Y(0,%1*16)<1>         ubSRC_Y(0,%1*16)
  43.     }
  44. #endif
  45.     $for(nUV_NUM_OF_ROWS-2; >-1; -1) {
  46.         mov (16)  uwDEST_U(0, %1*16)<1>        ubSRC_U(0, %1*16)
  47.         mov (16)  uwDEST_V(0, %1*16)<1>        ubSRC_V(0, %1*16)
  48.     }
  49.  
  50. // End of IMC3_Load_9x5
  51.