mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
rgb2rgb: rgb12to15()
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
parent
06b0246da0
commit
0cc1a86dc3
@ -183,6 +183,25 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, int src_size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rgb12to15(const uint8_t *src, uint8_t *dst, int src_size)
|
||||||
|
{
|
||||||
|
const uint16_t *end;
|
||||||
|
uint16_t *d = (uint16_t *)dst;
|
||||||
|
const uint16_t *s = (const uint16_t *)src;
|
||||||
|
uint16_t rgb, r, g, b;
|
||||||
|
end = s + src_size / 2;
|
||||||
|
while (s < end) {
|
||||||
|
rgb = *s++;
|
||||||
|
r = rgb & 0xF00;
|
||||||
|
g = rgb & 0x0F0;
|
||||||
|
b = rgb & 0x00F;
|
||||||
|
r = (r << 3) | ((r & 0x800) >> 1);
|
||||||
|
g = (g << 2) | ((g & 0x080) >> 2);
|
||||||
|
b = (b << 1) | ( b >> 3);
|
||||||
|
*d++ = r | g | b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void rgb16to24(const uint8_t *src, uint8_t *dst, int src_size)
|
void rgb16to24(const uint8_t *src, uint8_t *dst, int src_size)
|
||||||
{
|
{
|
||||||
const uint16_t *end;
|
const uint16_t *end;
|
||||||
|
@ -63,6 +63,7 @@ void rgb15to24(const uint8_t *src, uint8_t *dst, int src_size);
|
|||||||
void rgb15tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
|
void rgb15tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
void rgb15tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
|
void rgb15tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
void rgb12tobgr12(const uint8_t *src, uint8_t *dst, int src_size);
|
void rgb12tobgr12(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
|
void rgb12to15(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
void bgr8torgb8(const uint8_t *src, uint8_t *dst, int src_size);
|
void bgr8torgb8(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
|
|
||||||
void shuffle_bytes_0321(const uint8_t *src, uint8_t *dst, int src_size);
|
void shuffle_bytes_0321(const uint8_t *src, uint8_t *dst, int src_size);
|
||||||
|
@ -389,6 +389,7 @@ static rgbConvFn findRgbConvFn(SwsContext *c)
|
|||||||
if ((isBGRinInt(srcFormat) && isBGRinInt(dstFormat)) ||
|
if ((isBGRinInt(srcFormat) && isBGRinInt(dstFormat)) ||
|
||||||
(isRGBinInt(srcFormat) && isRGBinInt(dstFormat))) {
|
(isRGBinInt(srcFormat) && isRGBinInt(dstFormat))) {
|
||||||
switch (srcId | (dstId << 16)) {
|
switch (srcId | (dstId << 16)) {
|
||||||
|
case 0x000F000C: conv = rgb12to15; break;
|
||||||
case 0x000F0010: conv = rgb16to15; break;
|
case 0x000F0010: conv = rgb16to15; break;
|
||||||
case 0x000F0018: conv = rgb24to15; break;
|
case 0x000F0018: conv = rgb24to15; break;
|
||||||
case 0x000F0020: conv = rgb32to15; break;
|
case 0x000F0020: conv = rgb32to15; break;
|
||||||
|
Loading…
Reference in New Issue
Block a user