[FFmpeg-cvslog] lavd/fbdev_enc: add default device

Lukasz Marek git at videolan.org
Fri Dec 6 20:34:15 CET 2013


ffmpeg | branch: master | Lukasz Marek <lukasz.m.luki at gmail.com> | Thu Nov  7 19:06:38 2013 +0100| [fa3bfeb1c152c03cd98430992dd670d59007b051] | committer: Lukasz Marek

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 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa3bfeb1c152c03cd98430992dd670d59007b051
---

 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 eb8f3d2..45ae08b 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 b6eea2f..40a1ded 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 098eedb..8291b59 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;
     }
 



More information about the ffmpeg-cvslog mailing list