Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
279ff8d2
Commit
279ff8d2
authored
Apr 27, 2014
by
Lukasz Marek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavd/fbdev_enc: move list device code to fbdev_common
Signed-off-by:
Lukasz Marek
<
lukasz.m.luki2@gmail.com
>
parent
3050e53f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
67 additions
and
55 deletions
+67
-55
fbdev_common.c
libavdevice/fbdev_common.c
+62
-0
fbdev_common.h
libavdevice/fbdev_common.h
+4
-0
fbdev_enc.c
libavdevice/fbdev_enc.c
+1
-55
No files found.
libavdevice/fbdev_common.c
View file @
279ff8d2
...
@@ -20,9 +20,13 @@
...
@@ -20,9 +20,13 @@
* 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 <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdlib.h>
#include "fbdev_common.h"
#include "fbdev_common.h"
#include "libavutil/common.h"
#include "libavutil/common.h"
#include "avdevice.h"
struct
rgb_pixfmt_map_entry
{
struct
rgb_pixfmt_map_entry
{
int
bits_per_pixel
;
int
bits_per_pixel
;
...
@@ -65,3 +69,61 @@ const char* ff_fbdev_default_device()
...
@@ -65,3 +69,61 @@ const char* ff_fbdev_default_device()
return
dev
;
return
dev
;
}
}
int
ff_fbdev_get_device_list
(
AVDeviceInfoList
*
device_list
)
{
struct
fb_var_screeninfo
varinfo
;
struct
fb_fix_screeninfo
fixinfo
;
char
device_file
[
12
];
AVDeviceInfo
*
device
=
NULL
;
int
i
,
fd
,
ret
=
0
;
const
char
*
default_device
=
ff_fbdev_default_device
();
if
(
!
device_list
)
return
AVERROR
(
EINVAL
);
for
(
i
=
0
;
i
<=
31
;
i
++
)
{
snprintf
(
device_file
,
sizeof
(
device_file
),
"/dev/fb%d"
,
i
);
if
((
fd
=
avpriv_open
(
device_file
,
O_RDWR
))
<
0
)
continue
;
if
(
ioctl
(
fd
,
FBIOGET_VSCREENINFO
,
&
varinfo
)
==
-
1
)
goto
fail_device
;
if
(
ioctl
(
fd
,
FBIOGET_FSCREENINFO
,
&
fixinfo
)
==
-
1
)
goto
fail_device
;
device
=
av_mallocz
(
sizeof
(
AVDeviceInfo
));
if
(
!
device
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail_device
;
}
device
->
device_name
=
av_strdup
(
device_file
);
device
->
device_description
=
av_strdup
(
fixinfo
.
id
);
if
(
!
device
->
device_name
||
!
device
->
device_description
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail_device
;
}
if
((
ret
=
av_dynarray_add_nofree
(
&
device_list
->
devices
,
&
device_list
->
nb_devices
,
device
))
<
0
)
goto
fail_device
;
if
(
default_device
&&
!
strcmp
(
device
->
device_name
,
default_device
))
{
device_list
->
default_device
=
device_list
->
nb_devices
-
1
;
default_device
=
NULL
;
}
close
(
fd
);
continue
;
fail_device:
if
(
device
)
{
av_free
(
device
->
device_name
);
av_free
(
device
->
device_description
);
av_freep
(
&
device
);
}
if
(
fd
>=
0
)
close
(
fd
);
if
(
ret
<
0
)
return
ret
;
}
return
0
;
}
libavdevice/fbdev_common.h
View file @
279ff8d2
...
@@ -27,8 +27,12 @@
...
@@ -27,8 +27,12 @@
#include <linux/fb.h>
#include <linux/fb.h>
#include "libavutil/pixfmt.h"
#include "libavutil/pixfmt.h"
struct
AVDeviceInfoList
;
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
);
const
char
*
ff_fbdev_default_device
(
void
);
int
ff_fbdev_get_device_list
(
struct
AVDeviceInfoList
*
device_list
);
#endif
/* AVDEVICE_FBDEV_COMMON_H */
#endif
/* AVDEVICE_FBDEV_COMMON_H */
libavdevice/fbdev_enc.c
View file @
279ff8d2
...
@@ -186,61 +186,7 @@ static av_cold int fbdev_write_trailer(AVFormatContext *h)
...
@@ -186,61 +186,7 @@ static av_cold int fbdev_write_trailer(AVFormatContext *h)
static
int
fbdev_get_device_list
(
AVFormatContext
*
s
,
AVDeviceInfoList
*
device_list
)
static
int
fbdev_get_device_list
(
AVFormatContext
*
s
,
AVDeviceInfoList
*
device_list
)
{
{
struct
fb_var_screeninfo
varinfo
;
return
ff_fbdev_get_device_list
(
device_list
);
struct
fb_fix_screeninfo
fixinfo
;
char
device_file
[
12
];
AVDeviceInfo
*
device
=
NULL
;
int
i
,
fd
,
ret
=
0
;
const
char
*
default_device
=
ff_fbdev_default_device
();
if
(
!
device_list
)
return
AVERROR
(
EINVAL
);
for
(
i
=
0
;
i
<=
31
;
i
++
)
{
snprintf
(
device_file
,
sizeof
(
device_file
),
"/dev/fb%d"
,
i
);
if
((
fd
=
avpriv_open
(
device_file
,
O_RDWR
))
<
0
)
continue
;
if
(
ioctl
(
fd
,
FBIOGET_VSCREENINFO
,
&
varinfo
)
==
-
1
)
goto
fail_device
;
if
(
ioctl
(
fd
,
FBIOGET_FSCREENINFO
,
&
fixinfo
)
==
-
1
)
goto
fail_device
;
device
=
av_mallocz
(
sizeof
(
AVDeviceInfo
));
if
(
!
device
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail_device
;
}
device
->
device_name
=
av_strdup
(
device_file
);
device
->
device_description
=
av_strdup
(
fixinfo
.
id
);
if
(
!
device
->
device_name
||
!
device
->
device_description
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail_device
;
}
if
((
ret
=
av_dynarray_add_nofree
(
&
device_list
->
devices
,
&
device_list
->
nb_devices
,
device
))
<
0
)
goto
fail_device
;
if
(
default_device
&&
!
strcmp
(
device
->
device_name
,
default_device
))
{
device_list
->
default_device
=
device_list
->
nb_devices
-
1
;
default_device
=
NULL
;
}
close
(
fd
);
continue
;
fail_device:
if
(
device
)
{
av_free
(
device
->
device_name
);
av_free
(
device
->
device_description
);
av_freep
(
&
device
);
}
if
(
fd
>=
0
)
close
(
fd
);
if
(
ret
<
0
)
return
ret
;
}
return
0
;
}
}
#define OFFSET(x) offsetof(FBDevContext, x)
#define OFFSET(x) offsetof(FBDevContext, x)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment