From fa3bfeb1c152c03cd98430992dd670d59007b051 Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Thu, 7 Nov 2013 19:06:38 +0100 Subject: [PATCH] lavd/fbdev_enc: add default device Use device specified by environment variable FRAMEBUFFER or /dev/fb0 as default. Signed-off-by: Lukasz Marek --- libavdevice/fbdev_common.c | 10 ++++++++++ libavdevice/fbdev_common.h | 2 ++ libavdevice/fbdev_enc.c | 10 ++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libavdevice/fbdev_common.c b/libavdevice/fbdev_common.c index eb8f3d2581..45ae08b698 100644 --- a/libavdevice/fbdev_common.c +++ b/libavdevice/fbdev_common.c @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include "fbdev_common.h" #include "libavutil/common.h" @@ -55,3 +56,12 @@ enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varin return AV_PIX_FMT_NONE; } + +const char* ff_fbdev_default_device() +{ + const char *dev = getenv("FRAMEBUFFER"); + if (!dev) + dev = "/dev/fb0"; + return dev; +} + diff --git a/libavdevice/fbdev_common.h b/libavdevice/fbdev_common.h index b6eea2f1c1..40a1ded847 100644 --- a/libavdevice/fbdev_common.h +++ b/libavdevice/fbdev_common.h @@ -29,4 +29,6 @@ enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varinfo); +const char* ff_fbdev_default_device(void); + #endif /* AVDEVICE_FBDEV_COMMON_H */ diff --git a/libavdevice/fbdev_enc.c b/libavdevice/fbdev_enc.c index 098eedb5f5..8291b59759 100644 --- a/libavdevice/fbdev_enc.c +++ b/libavdevice/fbdev_enc.c @@ -45,17 +45,23 @@ static av_cold int fbdev_write_header(AVFormatContext *h) FBDevContext *fbdev = h->priv_data; enum AVPixelFormat pix_fmt; int ret, flags = O_RDWR; + const char* device; if (h->nb_streams != 1 || h->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO) { av_log(fbdev, AV_LOG_ERROR, "Only a single video stream is supported.\n"); return AVERROR(EINVAL); } - if ((fbdev->fd = avpriv_open(h->filename, flags)) == -1) { + if (h->filename[0]) + device = h->filename; + else + device = ff_fbdev_default_device(); + + if ((fbdev->fd = avpriv_open(device, flags)) == -1) { ret = AVERROR(errno); av_log(h, AV_LOG_ERROR, "Could not open framebuffer device '%s': %s\n", - h->filename, av_err2str(ret)); + device, av_err2str(ret)); return ret; }