Commit fa3bfeb1 authored by Lukasz Marek's avatar Lukasz Marek

lavd/fbdev_enc: add default device

Use device specified by environment variable FRAMEBUFFER or /dev/fb0 as default.
Signed-off-by: 's avatarLukasz Marek <lukasz.m.luki@gmail.com>
parent 90539cea
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include <stdlib.h>
#include "fbdev_common.h" #include "fbdev_common.h"
#include "libavutil/common.h" #include "libavutil/common.h"
...@@ -55,3 +56,12 @@ enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varin ...@@ -55,3 +56,12 @@ enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varin
return AV_PIX_FMT_NONE; return AV_PIX_FMT_NONE;
} }
const char* ff_fbdev_default_device()
{
const char *dev = getenv("FRAMEBUFFER");
if (!dev)
dev = "/dev/fb0";
return dev;
}
...@@ -29,4 +29,6 @@ ...@@ -29,4 +29,6 @@
enum AVPixelFormat ff_get_pixfmt_from_fb_varinfo(struct fb_var_screeninfo *varinfo); 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 */ #endif /* AVDEVICE_FBDEV_COMMON_H */
...@@ -45,17 +45,23 @@ static av_cold int fbdev_write_header(AVFormatContext *h) ...@@ -45,17 +45,23 @@ static av_cold int fbdev_write_header(AVFormatContext *h)
FBDevContext *fbdev = h->priv_data; FBDevContext *fbdev = h->priv_data;
enum AVPixelFormat pix_fmt; enum AVPixelFormat pix_fmt;
int ret, flags = O_RDWR; int ret, flags = O_RDWR;
const char* device;
if (h->nb_streams != 1 || h->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO) { 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"); av_log(fbdev, AV_LOG_ERROR, "Only a single video stream is supported.\n");
return AVERROR(EINVAL); 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); ret = AVERROR(errno);
av_log(h, AV_LOG_ERROR, av_log(h, AV_LOG_ERROR,
"Could not open framebuffer device '%s': %s\n", "Could not open framebuffer device '%s': %s\n",
h->filename, av_err2str(ret)); device, av_err2str(ret));
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment