Go to the documentation of this file.
60 const char *
usage =
"floatimg_cmp -pixel_format <pix_fmt> -size <image_size> -ref <testfile>\n";
62 int main(
int argc,
char **argv)
77 int i, x, y, p,
size, count;
84 float minimum, maximum,
diff;
90 for (
i = 1;
i < argc;
i += 2) {
91 if (argv[
i][0] !=
'-' ||
i + 1 == argc)
93 if (!strcmp(argv[
i],
"-ref")) {
94 fp = fopen(argv[
i + 1],
"rb");
96 fprintf(stderr,
"could not open '%s'\n", argv[
i + 1]);
99 }
else if (!strcmp(argv[
i],
"-size")) {
102 fprintf(stderr,
"invalid video size %s\n", argv[
i + 1]);
105 }
else if (!strcmp(argv[
i],
"-pixel_format")) {
108 fprintf(stderr,
"invalid pixel format %s\n", argv[
i + 1]);
113 fprintf(stderr,
"%s",
usage);
114 fprintf(stderr,
"bad option or argument missing (%s)\n", argv[
i]);
125 if (
w <= 0 ||
h <= 0) {
126 fprintf(stderr,
"%s",
usage);
127 fprintf(stderr,
"invalid -video_size\n");
132 fprintf(stderr,
"%s",
usage);
133 fprintf(stderr,
"invalid input pixel format\n");
139 fprintf(stderr,
"input pixel format not floating point.\n");
145 fprintf(stderr,
"av_image_fill_linesizes failed\n");
148 for (p = 0; p < 4; p++) {
149 rgbStride[p] =
FFALIGN(rgbStride[p], 16);
154 if (rgbStride[p] && (!rgbIn[p] || !rgbOut[p])) {
162 fseek(fp, 0, SEEK_SET);
163 for (p = 0; p < 4; p++) {
168 for (y = 0; y <
h; y++) {
169 size = fread(ptr, 1,
w*4, fp);
171 fprintf(stderr,
"read error: %d\n",
size);
180 for (p = 0; p < 4; p++) {
184 for (y = 0; y <
h; y++) {
185 in = (uint32_t*)(rgbIn[p] + y * rgbStride[p]);
186 for (x = 0; x <
w; x++) {
195 for (p = 0; p < 4; p++) {
201 fprintf(stderr,
"av_image_fill_linesizes failed\n");
204 for (p = 0; p < 4; p++) {
205 dstStride[p] =
FFALIGN(dstStride[p], 16);
209 if (dstStride[p] && !
dst[p]) {
222 res =
sws_scale(
sws, (
const uint8_t *
const *)rgbIn, rgbStride, 0,
h,
dst, dstStride);
223 if (res < 0 || res !=
h) {
224 fprintf(stderr,
"sws_scale failed\n");
238 res =
sws_scale(
sws, (
const uint8_t *
const *)
dst, dstStride, 0,
h, rgbOut, rgbStride);
239 if (res < 0 || res !=
h) {
240 fprintf(stderr,
"sws_scale failed\n");
252 for (p = 0; p < 4; p++) {
256 for (y = 0; y <
h; y++) {
257 in = (uint32_t*)(rgbIn[p] + y * rgbStride[p]);
258 out = (uint32_t*)(rgbOut[p] + y * rgbStride[p]);
259 for (x = 0; x <
w; x++) {
281 fprintf(stdout,
"avg diff: %f\nmin diff: %f\nmax diff: %f\n", sum / count, minimum, maximum);
287 for (p = 0; p < 4; p++) {
AVPixelFormat
Pixel format.
@ AV_PIX_FMT_BGR48LE
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as lit...
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
int main(int argc, char **argv)
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
#define AV_PIX_FMT_FLAG_FLOAT
The pixel format contains IEEE-754 floating point values.
void sws_freeContext(SwsContext *swsContext)
Free the swscaler context swsContext.
@ SWS_BILINEAR
bilinear filtering
@ AV_PIX_FMT_BGR24
packed RGB 8:8:8, 24bpp, BGRBGR...
@ AV_PIX_FMT_BGRA
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
@ AV_PIX_FMT_YUV444P16LE
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_GBRAP12LE
planar GBR 4:4:4:4 48bpp, little-endian
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
static __device__ float fabsf(float a)
@ AV_PIX_FMT_YUV444P12LE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_YUV444P14LE
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
#define FF_ARRAY_ELEMS(a)
int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width)
Fill plane linesizes for an image with pixel format pix_fmt and width width.
@ AV_PIX_FMT_GBRP16LE
planar GBR 4:4:4 48bpp, little-endian
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
@ AV_PIX_FMT_GBRP12LE
planar GBR 4:4:4 36bpp, little-endian
@ AV_PIX_FMT_GBRP10LE
planar GBR 4:4:4 30bpp, little-endian
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
@ AV_PIX_FMT_YUV444P10LE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_RGB48LE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as lit...
@ AV_PIX_FMT_RGBA64LE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
@ AV_PIX_FMT_BGR0
packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
Context structure for the Lagged Fibonacci PRNG.
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
static av_always_inline int diff(const struct color_info *a, const struct color_info *b, const int trans_thresh)
@ AV_PIX_FMT_GBRP9LE
planar GBR 4:4:4 27bpp, little-endian
@ AV_PIX_FMT_GBRAP10LE
planar GBR 4:4:4:4 40bpp, little-endian
@ AV_PIX_FMT_RGB0
packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str)
Parse str and put in width_ptr and height_ptr the detected values.
@ AV_PIX_FMT_ARGB
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
@ AV_PIX_FMT_BGRA64LE
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
static SwsContext * sws[3]
#define i(width, name, range_min, range_max)
#define AV_PIX_FMT_FLAG_BE
Pixel format is big-endian.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
@ AV_PIX_FMT_GBRPF32LE
IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian.
@ AV_PIX_FMT_GBRAP16LE
planar GBRA 4:4:4:4 64bpp, little-endian
@ AV_PIX_FMT_0BGR
packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
SwsContext * sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
Allocate and return an SwsContext.
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
int attribute_align_arg sws_scale(SwsContext *sws, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
swscale wrapper, so we don't need to export the SwsContext.
@ AV_PIX_FMT_YUV444P9LE
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
@ AV_PIX_FMT_GBRP14LE
planar GBR 4:4:4 42bpp, little-endian
@ AV_PIX_FMT_0RGB
packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
Main external API structure.
static enum AVPixelFormat pix_fmts[]
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.