diff options
author | Lukasz Marek <lukasz.m.luki@gmail.com> | 2013-11-07 19:06:38 +0100 |
---|---|---|
committer | Lukasz Marek <lukasz.m.luki@gmail.com> | 2013-12-06 19:15:47 +0100 |
commit | fa3bfeb1c152c03cd98430992dd670d59007b051 (patch) | |
tree | f701aa180b9af2f128b252dc6b43366d379484fb /libavdevice | |
parent | 90539cea336fd513c47295a03c164cb4a851166f (diff) | |
download | ffmpeg-fa3bfeb1c152c03cd98430992dd670d59007b051.tar.gz |
lavd/fbdev_enc: add default device
Use device specified by environment variable FRAMEBUFFER or /dev/fb0 as default.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Diffstat (limited to 'libavdevice')
-rw-r--r-- | libavdevice/fbdev_common.c | 10 | ||||
-rw-r--r-- | libavdevice/fbdev_common.h | 2 | ||||
-rw-r--r-- | 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 <stdlib.h> #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; } |