34 #include <sys/ioctl.h>
92 struct fb_var_screeninfo varinfo;
93 struct fb_fix_screeninfo fixinfo;
104 int ret,
flags = O_RDONLY;
120 if ((fbdev->
fd = open(avctx->
filename, flags)) == -1) {
123 "Could not open framebuffer device '%s': %s\n",
128 if (ioctl(fbdev->
fd, FBIOGET_VSCREENINFO, &fbdev->
varinfo) < 0) {
131 "FBIOGET_VSCREENINFO: %s\n", strerror(errno));
135 if (ioctl(fbdev->
fd, FBIOGET_FSCREENINFO, &fbdev->
fixinfo) < 0) {
138 "FBIOGET_FSCREENINFO: %s\n", strerror(errno));
146 "Framebuffer pixel format not supported.\n");
156 fbdev->
data = mmap(
NULL, fbdev->
fixinfo.smem_len, PROT_READ, MAP_SHARED, fbdev->
fd, 0);
157 if (fbdev->
data == MAP_FAILED) {
173 "w:%d h:%d bpp:%d pixfmt:%s fps:%d/%d bit_rate:%d\n",
188 int64_t curtime, delay;
200 "time_frame:%"PRId64
" curtime:%"PRId64
" delay:%"PRId64
"\n",
205 ts.tv_sec = delay / 1000000;
206 ts.tv_nsec = (delay % 1000000) * 1000;
207 while (nanosleep(&ts, &ts) < 0 && errno == EINTR);
216 if (ioctl(fbdev->
fd, FBIOGET_VSCREENINFO, &fbdev->
varinfo) < 0)
218 "Error refreshing variable info: %s\n", strerror(errno));
228 for (i = 0; i < fbdev->
height; i++) {
230 pin += fbdev->
fixinfo.line_length;
247 #define OFFSET(x) offsetof(FBDevContext, x)
248 #define DEC AV_OPT_FLAG_DECODING_PARAM
269 .priv_class = &fbdev_class,