Browse code

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>

Lukasz Marek authored on 2013/11/08 03:06:38
Showing 3 changed files
... ...
@@ -20,6 +20,7 @@
20 20
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 21
  */
22 22
 
23
+#include <stdlib.h>
23 24
 #include "fbdev_common.h"
24 25
 #include "libavutil/common.h"
25 26
 
... ...
@@ -55,3 +56,12 @@ enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varin
55 55
 
56 56
     return AV_PIX_FMT_NONE;
57 57
 }
58
+
59
+const char* ff_fbdev_default_device()
60
+{
61
+    const char *dev = getenv("FRAMEBUFFER");
62
+    if (!dev)
63
+        dev = "/dev/fb0";
64
+    return dev;
65
+}
66
+
... ...
@@ -29,4 +29,6 @@
29 29
 
30 30
 enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varinfo);
31 31
 
32
+const char* ff_fbdev_default_device(void);
33
+
32 34
 #endif /* AVDEVICE_FBDEV_COMMON_H */
... ...
@@ -45,17 +45,23 @@ static av_cold int fbdev_write_header(AVFormatContext *h)
45 45
     FBDevContext *fbdev = h->priv_data;
46 46
     enum AVPixelFormat pix_fmt;
47 47
     int ret, flags = O_RDWR;
48
+    const char* device;
48 49
 
49 50
     if (h->nb_streams != 1 || h->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO) {
50 51
         av_log(fbdev, AV_LOG_ERROR, "Only a single video stream is supported.\n");
51 52
         return AVERROR(EINVAL);
52 53
     }
53 54
 
54
-    if ((fbdev->fd = avpriv_open(h->filename, flags)) == -1) {
55
+    if (h->filename[0])
56
+        device = h->filename;
57
+    else
58
+        device = ff_fbdev_default_device();
59
+
60
+    if ((fbdev->fd = avpriv_open(device, flags)) == -1) {
55 61
         ret = AVERROR(errno);
56 62
         av_log(h, AV_LOG_ERROR,
57 63
                "Could not open framebuffer device '%s': %s\n",
58
-               h->filename, av_err2str(ret));
64
+               device, av_err2str(ret));
59 65
         return ret;
60 66
     }
61 67