/* babl - dynamically extendable universal pixel conversion library.
* Copyright (C) 2016, Øyvind Kolås.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see
* .
*/
#include "config.h"
#include
#include
#include "babl.h"
#include "base/util.h"
#include "extensions/util.h"
static void
conv_rgbu16_rgbau16 (const Babl *conversion,
unsigned char *__restrict__ src,
unsigned char *__restrict__ dst,
long samples)
{
uint16_t *src16 = (uint16_t*) src;
uint16_t *dst16 = (uint16_t*) dst;
long n = samples;
while (n--)
{
*dst16++ = *src16++;
*dst16++ = *src16++;
*dst16++ = *src16++;
*dst16++ = 0xffff;
}
}
static void
conv_yu16_yau16 (const Babl *conversion,
unsigned char *__restrict__ src,
unsigned char *__restrict__ dst,
long samples)
{
uint16_t *src16 = (uint16_t*) src;
uint16_t *dst16 = (uint16_t*) dst;
long n = samples;
while (n--)
{
*dst16++ = *src16++;
*dst16++ = 0xffff;
}
}
int init (void);
#include "babl-verify-cpu.inc"
int
init (void)
{
BABL_VERIFY_CPU();
{
babl_conversion_new (
babl_format ("R'G'B' u16"),
babl_format ("R'G'B'A u16"),
"linear",
conv_rgbu16_rgbau16,
NULL);
babl_conversion_new (
babl_format ("R~G~B~ u16"),
babl_format ("R~G~B~A u16"),
"linear",
conv_rgbu16_rgbau16,
NULL);
babl_conversion_new (
babl_format ("Y' u16"),
babl_format ("Y'A u16"),
"linear",
conv_yu16_yau16,
NULL);
babl_conversion_new (
babl_format ("Y~ u16"),
babl_format ("Y~A u16"),
"linear",
conv_yu16_yau16,
NULL);
babl_conversion_new (
babl_format ("RGB u16"),
babl_format ("RGBA u16"),
"linear",
conv_rgbu16_rgbau16,
NULL);
babl_conversion_new (
babl_format ("Y u16"),
babl_format ("YA u16"),
"linear",
conv_yu16_yau16,
NULL);
}
return 0;
}