Files
fml13v01-buildroot/package/starfive/v4l2_test/common.h
T
Kevin.xie a2d183cea1 v4l2test: Solve blurred screen problem in 45 or 60 fps.
1. Fix the error buffer count for v4l2 when using pingpong buffer.
2. Add readable flag for pingpong buffers exchange to avoid overproduction.

Signed-off-by: Kevin.xie <kevin.xie@starfivetech.com>
2022-08-11 16:49:02 +08:00

91 lines
2.4 KiB
C

// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2021 StarFive Technology Co., Ltd.
*/
#ifndef __COMMON_H__
#define __COMMON_H__
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
#include <asm/types.h>
#include <linux/videodev2.h>
#include <linux/fb.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <fcntl.h>
#include <malloc.h>
#ifndef TEST_VERSION
#define TEST_VERSION "v0.0.1"
#endif
#define PINGPONG_BUFCOUNT 2 /* For pingpong buffer mapping in drm + mmap mode*/
#define BUFCOUNT 4
#define CLEAR(x) memset (&(x), 0, sizeof (x))
#define PCLEAR(x) memset ((x), 0, sizeof (*x))
struct buffer {
void* start;
size_t length;
int dmabuf_fd;
int index;
};
enum COLOR_FORMAT{
COLOR_YUV422_UYVY = 0, // 00={Y1,V0,Y0,U0}
COLOR_YUV422_VYUY = 1, // 01={Y1,U0,Y0,V0}
COLOR_YUV422_YUYV = 2, // 10={V0,Y1,U0,Y0}
COLOR_YUV422_YVYU = 3, // 11={U0,Y1,V0,Y0}
COLOR_YUV420P, // 4
COLOR_YUV420_NV21, // 5
COLOR_YUV420_NV12, // 6
COLOR_RGB888_ARGB, // 7
COLOR_RGB888_ABGR, // 8
COLOR_RGB888_RGBA, // 9
COLOR_RGB888_BGRA, // 10
COLOR_RGB565, // 11
};
typedef enum IOMethod {
IO_METHOD_MMAP,
IO_METHOD_USERPTR,
IO_METHOD_DMABUF,
IO_METHOD_READ
} IOMethod;
typedef enum STF_DISP_TYPE {
STF_DISP_NONE = 0, // Not display
STF_DISP_FB, // Use framebuffer framework display
STF_DISP_DRM // Use drm framework display
} STF_DISP_TYPE;
extern void dump_fourcc(uint32_t fourcc);
extern int v4l2fmt_to_fbfmt(uint32_t format);
extern uint32_t v4l2fmt_to_drmfmt(uint32_t v4l2_fmt);
extern void test_performance();
extern void errno_exit(const char* s);
extern void errno_print(const char *s);
extern int write_file(char * filename, const unsigned char *image_buffer, int size);
// extern void jpegWrite(unsigned char* img, char* jpegFilename);
extern void jpegWrite(unsigned char* img, char* jpegFilename,
uint32_t width, uint32_t height, int jpegQuality);
extern int write_JPEG_file(char * filename,unsigned char *image_buffer,
int image_width, int image_height, int quality);
extern int is_raw_v4l2fmt(uint32_t format);
// inline int clip(int value, int min, int max) {
// return (value > max ? max : value < min ? min : value);
// }
#endif // __COMMON_H__