Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
c21324ee
Commit
c21324ee
authored
May 24, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
v4l2: add a framerate private option.
parent
121ef2e2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
12 deletions
+20
-12
v4l2.c
libavdevice/v4l2.c
+20
-12
No files found.
libavdevice/v4l2.c
View file @
c21324ee
...
...
@@ -73,6 +73,7 @@ struct video_data {
int
channel
;
char
*
video_size
;
/**< String describing video size, set by a private option. */
char
*
pixel_format
;
/**< Set by a private option. */
char
*
framerate
;
/**< Set by a private option. */
};
struct
buff_data
{
...
...
@@ -453,13 +454,20 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
struct
v4l2_standard
standard
;
struct
v4l2_streamparm
streamparm
=
{
0
};
struct
v4l2_fract
*
tpf
=
&
streamparm
.
parm
.
capture
.
timeperframe
;
int
i
;
int
i
,
ret
;
AVRational
fps
;
streamparm
.
type
=
V4L2_BUF_TYPE_VIDEO_CAPTURE
;
if
(
s
->
framerate
&&
(
ret
=
av_parse_video_rate
(
&
fps
,
s
->
framerate
))
<
0
)
{
av_log
(
s1
,
AV_LOG_ERROR
,
"Couldn't parse framerate.
\n
"
);
return
ret
;
}
#if FF_API_FORMAT_PARAMETERS
if
(
ap
->
channel
>
0
)
s
->
channel
=
ap
->
channel
;
if
(
ap
->
time_base
.
num
)
fps
=
(
AVRational
){
ap
->
time_base
.
den
,
ap
->
time_base
.
num
};
#endif
/* set tv video input */
...
...
@@ -512,34 +520,32 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
}
}
if
(
ap
->
time_base
.
num
&&
ap
->
time_base
.
den
)
{
if
(
fps
.
num
&&
fps
.
den
)
{
av_log
(
s1
,
AV_LOG_DEBUG
,
"Setting time per frame to %d/%d
\n
"
,
ap
->
time_base
.
num
,
ap
->
time_base
.
den
);
tpf
->
numerator
=
ap
->
time_base
.
num
;
tpf
->
denominator
=
ap
->
time_base
.
den
;
fps
.
den
,
fps
.
num
);
tpf
->
numerator
=
fps
.
den
;
tpf
->
denominator
=
fps
.
num
;
if
(
ioctl
(
s
->
fd
,
VIDIOC_S_PARM
,
&
streamparm
)
!=
0
)
{
av_log
(
s1
,
AV_LOG_ERROR
,
"ioctl set time per frame(%d/%d) failed
\n
"
,
ap
->
time_base
.
num
,
ap
->
time_base
.
den
);
fps
.
den
,
fps
.
num
);
return
AVERROR
(
EIO
);
}
if
(
ap
->
time_base
.
den
!=
tpf
->
denominator
||
ap
->
time_base
.
num
!=
tpf
->
numerator
)
{
if
(
fps
.
num
!=
tpf
->
denominator
||
fps
.
den
!=
tpf
->
numerator
)
{
av_log
(
s1
,
AV_LOG_INFO
,
"The driver changed the time per frame from %d/%d to %d/%d
\n
"
,
ap
->
time_base
.
num
,
ap
->
time_base
.
den
,
fps
.
den
,
fps
.
num
,
tpf
->
numerator
,
tpf
->
denominator
);
}
}
else
{
/* if timebase value is not set
in ap
, read the timebase value from the driver */
/* if timebase value is not set, read the timebase value from the driver */
if
(
ioctl
(
s
->
fd
,
VIDIOC_G_PARM
,
&
streamparm
)
!=
0
)
{
av_log
(
s1
,
AV_LOG_ERROR
,
"ioctl(VIDIOC_G_PARM): %s
\n
"
,
strerror
(
errno
));
return
AVERROR
(
errno
);
}
}
ap
->
time_base
.
num
=
tpf
->
numerator
;
ap
->
time_base
.
den
=
tpf
->
denominator
;
return
0
;
}
...
...
@@ -681,6 +687,7 @@ out:
av_freep
(
&
s
->
video_size
);
av_freep
(
&
s
->
pixel_format
);
av_freep
(
&
s
->
standard
);
av_freep
(
&
s
->
framerate
);
return
res
;
}
...
...
@@ -731,6 +738,7 @@ static const AVOption options[] = {
{
"channel"
,
""
,
offsetof
(
struct
video_data
,
channel
),
FF_OPT_TYPE_INT
,
{.
dbl
=
0
},
0
,
INT_MAX
,
AV_OPT_FLAG_DECODING_PARAM
},
{
"video_size"
,
"A string describing frame size, such as 640x480 or hd720."
,
OFFSET
(
video_size
),
FF_OPT_TYPE_STRING
,
{.
str
=
NULL
},
0
,
0
,
DEC
},
{
"pixel_format"
,
""
,
OFFSET
(
pixel_format
),
FF_OPT_TYPE_STRING
,
{.
str
=
NULL
},
0
,
0
,
DEC
},
{
"framerate"
,
""
,
OFFSET
(
framerate
),
FF_OPT_TYPE_STRING
,
{.
str
=
NULL
},
0
,
0
,
DEC
},
{
NULL
},
};
...
...
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