71 int ret,
flags = O_RDONLY;
90 "Could not open framebuffer device '%s': %s\n",
95 if (ioctl(fbdev->
fd, FBIOGET_VSCREENINFO, &fbdev->
varinfo) < 0) {
102 if (ioctl(fbdev->
fd, FBIOGET_FSCREENINFO, &fbdev->
fixinfo) < 0) {
105 "FBIOGET_FSCREENINFO: %s\n",
av_err2str(ret));
113 "Framebuffer pixel format not supported.\n");
123 fbdev->
data = mmap(
NULL, fbdev->
fixinfo.smem_len, PROT_READ, MAP_SHARED, fbdev->
fd, 0);
124 if (fbdev->
data == MAP_FAILED) {
140 "w:%d h:%d bpp:%d pixfmt:%s fps:%d/%d bit_rate:%"PRId64
"\n",
168 "time_frame:%"PRId64
" curtime:%"PRId64
" delay:%"PRId64
"\n",
176 ts.tv_sec = delay / 1000000;
177 ts.tv_nsec = (delay % 1000000) * 1000;
178 while (nanosleep(&ts, &ts) < 0 && errno == EINTR);
185 if (ioctl(fbdev->
fd, FBIOGET_VSCREENINFO, &fbdev->
varinfo) < 0) {
199 pin += fbdev->
fixinfo.line_length;
221#define OFFSET(x) offsetof(FBDevContext, x)
222#define DEC AV_OPT_FLAG_DECODING_PARAM
229 .class_name =
"fbdev indev",
const FFInputFormat ff_fbdev_demuxer
static av_cold void close(AVCodecParserContext *s)
Main libavdevice API header.
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
#define flags(name, subs,...)
#define i(width, name, range_min, range_max)
static enum AVPixelFormat pix_fmt
const char * ff_fbdev_default_device(void)
enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varinfo)
int ff_fbdev_get_device_list(AVDeviceInfoList *device_list)
static const AVClass fbdev_class
static int fbdev_read_packet(AVFormatContext *avctx, AVPacket *pkt)
static av_cold int fbdev_read_close(AVFormatContext *avctx)
static int fbdev_get_device_list(AVFormatContext *s, AVDeviceInfoList *device_list)
static av_cold int fbdev_read_header(AVFormatContext *avctx)
static int read_header(FFV1Context *f, RangeCoder *c)
@ AV_OPT_TYPE_VIDEO_RATE
Underlying C type is AVRational.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
#define AV_LOG_TRACE
Extremely verbose debugging, useful for libav* development.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_INFO
Standard information.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const char * av_default_item_name(void *ptr)
Return the context name.
static double av_q2d(AVRational a)
Convert an AVRational to a double.
#define AV_NOPTS_VALUE
Undefined timestamp value.
#define LIBAVUTIL_VERSION_INT
int avpriv_open(const char *filename, int flags,...)
A wrapper for open() setting O_CLOEXEC.
common internal API header
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static av_cold int read_close(AVFormatContext *ctx)
@ AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT
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.
AVPixelFormat
Pixel format.
Describe the class of an AVClass context structure.
int height
The height of the video frame in pixels.
int width
The width of the video frame in pixels.
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
enum AVMediaType codec_type
General type of the encoded data.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int flags
Flags modifying the (de)muxer behaviour.
char * url
input or output URL.
void * priv_data
Format private data.
This structure stores compressed data.
Rational number (pair of numerator and denominator).
AVCodecParameters * codecpar
Codec parameters associated with this stream.
AVRational avg_frame_rate
Average framerate.
int fd
framebuffer device file descriptor
int frame_linesize
linesize of the output frame, it is assumed to be constant
int frame_size
size in bytes of a grabbed frame
struct fb_fix_screeninfo fixinfo
fixed info;
AVRational framerate_q
framerate
struct fb_var_screeninfo varinfo
variable info;
int height
assumed frame resolution
uint8_t * data
framebuffer data
int64_t time_frame
time for the next frame to output (in 1/1000000 units)
int64_t av_gettime_relative(void)
Get the current time in microseconds since some unspecified starting point.
int64_t av_gettime(void)
Get the current time in microseconds.