summaryrefslogtreecommitdiff
path: root/libavdevice
diff options
context:
space:
mode:
authorLukasz Marek <lukasz.m.luki@gmail.com>2013-11-07 19:06:38 +0100
committerLukasz Marek <lukasz.m.luki@gmail.com>2013-12-06 19:15:47 +0100
commitfa3bfeb1c152c03cd98430992dd670d59007b051 (patch)
treef701aa180b9af2f128b252dc6b43366d379484fb /libavdevice
parent90539cea336fd513c47295a03c164cb4a851166f (diff)
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.c10
-rw-r--r--libavdevice/fbdev_common.h2
-rw-r--r--libavdevice/fbdev_enc.c10
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;
}