📄 img_ycbcr422p_rgb565.h64
字号:
;* ======================================================================== *;
;* TEXAS INSTRUMENTS, INC. *;
;* *;
;* IMGLIB DSP Image/Video Processing Library *;
;* *;
;* Release: Revision 1.04b *;
;* CVS Revision: 1.12 Mon Oct 21 15:28:45 2002 (UTC) *;
;* Snapshot date: 23-Oct-2003 *;
;* *;
;* This library contains proprietary intellectual property of Texas *;
;* Instruments, Inc. The library and its source code are protected by *;
;* various copyrights, and portions may also be protected by patents or *;
;* other legal protections. *;
;* *;
;* This software is licensed for use with Texas Instruments TMS320 *;
;* family DSPs. This license was provided to you prior to installing *;
;* the software. You may review this license by consulting the file *;
;* TI_license.PDF which accompanies the files in this library. *;
;* ------------------------------------------------------------------------ *;
;* Copyright (C) 2003 Texas Instruments, Incorporated. *;
;* All Rights Reserved. *;
;* ======================================================================== *;
;* ======================================================================== *;
;* Assembler compatibility shim for assembling 4.30 and later code on *;
;* tools prior to 4.30. *;
;* ======================================================================== *;
;* ======================================================================== *;
;* End of assembler compatibility shim. *;
;* ======================================================================== *;
* ========================================================================= *
* TEXAS INSTRUMENTS, INC. *
* *
* NAME *
* IMG_ycbcr422p_rgb565 -- Planarized YCbCr 4:2:2/4:2:0 to 16-bit *
* RGB 5:6:5 color space conversion. *
* *
* REVISION DATE *
* 21-Oct-2002 *
* *
* USAGE *
* This function is C callable, and is called according to this *
* C prototype: *
* *
* void IMG_ycbcr422p_rgb565 *
* ( *
* const short coeff[5], /* Matrix coefficients. */ *
* const unsigned char *y_data, /* Luminence data (Y') */ *
* const unsigned char *cb_data, /* Blue color-diff (B'-Y') */ *
* const unsigned char *cr_data, /* Red color-diff (R'-Y') */ *
* unsigned short *
* *restrict rgb_data, /* RGB 5:6:5 packed pixel out. */ *
* unsigned num_pixels /* # of luma pixels to process */ *
* ); *
* *
* The 'coeff[]' array contains the color-space-conversion matrix *
* coefficients. The 'y_data', 'cb_data' and 'cr_data' pointers *
* point to the separate input image planes. The 'rgb_data' pointer *
* *
* The kernel is designed to process arbitrary amounts of 4:2:2 *
* image data, although 4:2:0 image data may be processed as well. *
* For 4:2:2 input data, the 'y_data', 'cb_data' and 'cr_data' *
* arrays may hold an arbitrary amount of image data, including *
* multiple scan lines of image data. *
* *
* For 4:2:0 input data, only a single scan-line (or portion *
* thereof) may be processed at a time. This is achieved by *
* calling the function twice using the same row data for *
* 'cr_data' and 'cb_data', and providing new row data for *
* 'y_data'. This is numerically equivalent to replicating the Cr *
* and Cb pixels vertically. *
* *
* The coefficients in the coeff array must be in signed Q13 form. *
* These coefficients correspond to the following matrix equation: *
* *
* [ coeff[0] 0.0000 coeff[1] ] [ Y' - 16 ] [ R'] *
* [ coeff[0] coeff[2] coeff[3] ] * [ Cb - 128 ] = [ G'] *
* [ coeff[0] coeff[4] 0.0000 ] [ Cr - 128 ] [ B'] *
* *
* The output from this kernel is 16-bit RGB in 5:6:5 format. *
* The RGB components are packed into halfwords as shown below. *
* *
* 15 11 10 5 4 0 *
* +----------+----------+----------+ *
* | Red | Green | Blue | *
* +----------+----------+----------+ *
* *
* This kernel can also return the red, green, and blue values in *
* the opposite order if a particular application requires it. *
* This is achieved by exchanging the 'cb_data' and 'cr_data' *
* arguments when calling the function, and by reversing the order *
* of coefficients in coeff[1] through coeff[4]. This essentially *
* implements the following matrix multiply: *
* *
* [ coeff[0] 0.0000 coeff[4] ] [ Y' - 16 ] [ B'] *
* [ coeff[0] coeff[3] coeff[2] ] * [ Cr - 128 ] = [ G'] *
* [ coeff[0] coeff[1] 0.0000 ] [ Cb - 128 ] [ R'] *
* *
* The reversed RGB ordering output by this mode is as follows: *
* *
* 15 11 10 5 4 0 *
* +----------+----------+----------+ *
* | Blue | Green | Red | *
* +----------+----------+----------+ *
* *
* DESCRIPTION *
* This kernel performs Y'CbCr to RGB conversion. From the Color *
* FAQ, http://home.inforamp.net/~poynton/ColorFAQ.html : *
* *
* Various scale factors are applied to (B'-Y') and (R'-Y') *
* for different applications. The Y'PbPr scale factors are *
* optimized for component analog video. The Y'CbCr scaling *
* is appropriate for component digital video, JPEG and MPEG. *
* Kodak's PhotoYCC(tm) uses scale factors optimized for the *
* gamut of film colors. Y'UV scaling is appropriate as an *
* intermediate step in the formation of composite NTSC or PAL *
* video signals, but is not appropriate when the components *
* are keps separate. Y'UV nomenclature is now used rather *
* loosely, and it sometimes denotes any scaling of (B'-Y') *
* and (R'-Y'). Y'IQ coding is obsolete. *
* *
* This code can perform various flavors of Y'CbCr to RGB *
* conversion as long as the offsets on Y, Cb, and Cr are -16, *
* -128, and -128, respectively, and the coefficients match the *
* pattern shown. *
* *
* The kernel implements the following matrix form, which involves 5 *
* unique coefficients: *
* *
* [ coeff[0] 0.0000 coeff[1] ] [ Y' - 16 ] [ R'] *
* [ coeff[0] coeff[2] coeff[3] ] * [ Cb - 128 ] = [ G'] *
* [ coeff[0] coeff[4] 0.0000 ] [ Cr - 128 ] [ B'] *
* *
* *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -