Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
70065a2f
Commit
70065a2f
authored
Apr 21, 2004
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/access/pvr/pvr.c: Code conventions; added :audio= option to
specify the audio bitmask (0xA9 seems a good value).
parent
60c1f0cd
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
189 additions
and
172 deletions
+189
-172
modules/access/pvr/pvr.c
modules/access/pvr/pvr.c
+189
-172
No files found.
modules/access/pvr/pvr.c
View file @
70065a2f
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* pvr.c
* pvr.c
*****************************************************************************
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* Copyright (C) 2001, 2002 VideoLAN
* $Id
: pvr.c,v 1.13 2004/02/20 16:29:31 bigben Exp
$
* $Id$
*
*
* Authors: Eric Petit <titer@videolan.org>
* Authors: Eric Petit <titer@videolan.org>
*
*
...
@@ -97,6 +97,7 @@ struct access_sys_t
...
@@ -97,6 +97,7 @@ struct access_sys_t
int
i_bitrate
;
int
i_bitrate
;
int
i_bitrate_peak
;
int
i_bitrate_peak
;
int
i_bitrate_mode
;
int
i_bitrate_mode
;
int
i_audio_bitmask
;
int
i_input
;
int
i_input
;
};
};
...
@@ -108,6 +109,7 @@ static int Open( vlc_object_t * p_this )
...
@@ -108,6 +109,7 @@ static int Open( vlc_object_t * p_this )
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
access_sys_t
*
p_sys
;
access_sys_t
*
p_sys
;
char
*
psz_tofree
,
*
psz_parser
,
*
psz_device
;
char
*
psz_tofree
,
*
psz_parser
,
*
psz_device
;
char
psz_tmp
[
5
];
struct
v4l2_format
vfmt
;
struct
v4l2_format
vfmt
;
struct
v4l2_frequency
vf
;
struct
v4l2_frequency
vf
;
...
@@ -156,25 +158,26 @@ static int Open( vlc_object_t * p_this )
...
@@ -156,25 +158,26 @@ static int Open( vlc_object_t * p_this )
psz_parser
++
;
psz_parser
++
;
}
}
if
(
!
strncmp
(
psz_parser_init
,
"secam"
,
if
(
!
strncmp
(
psz_parser_init
,
"secam"
,
psz_parser
-
psz_parser_init
)
)
psz_parser
-
psz_parser_init
)
)
{
{
p_sys
->
i_standard
=
V4L2_STD_SECAM
;
p_sys
->
i_standard
=
V4L2_STD_SECAM
;
}
}
else
if
(
!
strncmp
(
psz_parser_init
,
"pal"
,
else
if
(
!
strncmp
(
psz_parser_init
,
"pal"
,
psz_parser
-
psz_parser_init
)
)
psz_parser
-
psz_parser_init
)
)
{
{
p_sys
->
i_standard
=
V4L2_STD_PAL
;
p_sys
->
i_standard
=
V4L2_STD_PAL
;
}
}
else
if
(
!
strncmp
(
psz_parser_init
,
"ntsc"
,
else
if
(
!
strncmp
(
psz_parser_init
,
"ntsc"
,
psz_parser
-
psz_parser_init
)
)
psz_parser
-
psz_parser_init
)
)
{
{
p_sys
->
i_standard
=
V4L2_STD_NTSC
;
p_sys
->
i_standard
=
V4L2_STD_NTSC
;
}
}
else
else
{
p_sys
->
i_standard
=
strtol
(
psz_parser_init
,
{
&
psz_parser
,
0
);}
p_sys
->
i_standard
=
strtol
(
psz_parser_init
,
&
psz_parser
,
0
);
}
}
}
else
if
(
!
strncmp
(
psz_parser
,
"channel="
,
else
if
(
!
strncmp
(
psz_parser
,
"channel="
,
strlen
(
"channel="
)
)
)
strlen
(
"channel="
)
)
)
...
@@ -218,6 +221,13 @@ static int Open( vlc_object_t * p_this )
...
@@ -218,6 +221,13 @@ static int Open( vlc_object_t * p_this )
strtol
(
psz_parser
+
strlen
(
"height="
),
strtol
(
psz_parser
+
strlen
(
"height="
),
&
psz_parser
,
0
);
&
psz_parser
,
0
);
}
}
else
if
(
!
strncmp
(
psz_parser
,
"audio="
,
strlen
(
"audio="
)
)
)
{
p_sys
->
i_audio_bitmask
=
strtol
(
psz_parser
+
strlen
(
"audio="
),
&
psz_parser
,
0
);
}
else
if
(
!
strncmp
(
psz_parser
,
"bitrate="
,
else
if
(
!
strncmp
(
psz_parser
,
"bitrate="
,
strlen
(
"bitrate="
)
)
)
strlen
(
"bitrate="
)
)
)
{
{
...
@@ -244,18 +254,17 @@ static int Open( vlc_object_t * p_this )
...
@@ -244,18 +254,17 @@ static int Open( vlc_object_t * p_this )
psz_parser
++
;
psz_parser
++
;
}
}
if
(
!
strncmp
(
psz_parser_init
,
"vbr"
,
if
(
!
strncmp
(
psz_parser_init
,
"vbr"
,
psz_parser
-
psz_parser_init
)
)
psz_parser
-
psz_parser_init
)
)
{
{
p_sys
->
i_bitrate_mode
=
0
;
p_sys
->
i_bitrate_mode
=
0
;
}
}
else
if
(
!
strncmp
(
psz_parser_init
,
"cbr"
,
else
if
(
!
strncmp
(
psz_parser_init
,
"cbr"
,
psz_parser
-
psz_parser_init
)
)
psz_parser
-
psz_parser_init
)
)
{
{
p_sys
->
i_bitrate_mode
=
1
;
p_sys
->
i_bitrate_mode
=
1
;
}
}
}
}
else
if
(
!
strncmp
(
psz_parser
,
"size="
,
else
if
(
!
strncmp
(
psz_parser
,
"size="
,
strlen
(
"size="
)
)
)
strlen
(
"size="
)
)
)
{
{
...
@@ -265,7 +274,6 @@ static int Open( vlc_object_t * p_this )
...
@@ -265,7 +274,6 @@ static int Open( vlc_object_t * p_this )
p_sys
->
i_height
=
p_sys
->
i_height
=
strtol
(
psz_parser
+
1
,
strtol
(
psz_parser
+
1
,
&
psz_parser
,
0
);
&
psz_parser
,
0
);
}
}
else
else
{
{
...
@@ -276,7 +284,8 @@ static int Open( vlc_object_t * p_this )
...
@@ -276,7 +284,8 @@ static int Open( vlc_object_t * p_this )
psz_parser
++
;
psz_parser
++
;
}
}
psz_device
=
calloc
(
psz_parser
-
psz_parser_init
+
1
,
1
);
psz_device
=
calloc
(
psz_parser
-
psz_parser_init
+
1
,
1
);
strncpy
(
psz_device
,
psz_parser_init
,
psz_parser
-
psz_parser_init
);
strncpy
(
psz_device
,
psz_parser_init
,
psz_parser
-
psz_parser_init
);
}
}
if
(
*
psz_parser
)
if
(
*
psz_parser
)
psz_parser
++
;
psz_parser
++
;
...
@@ -309,66 +318,67 @@ static int Open( vlc_object_t * p_this )
...
@@ -309,66 +318,67 @@ static int Open( vlc_object_t * p_this )
free
(
psz_device
);
free
(
psz_device
);
/* set the input */
/* set the input */
if
(
p_sys
->
i_input
!=
-
1
)
if
(
p_sys
->
i_input
!=
-
1
)
{
{
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_INPUT
,
&
p_sys
->
i_input
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_INPUT
,
&
p_sys
->
i_input
)
<
0
)
{
{
msg_Warn
(
p_input
,
"VIDIOC_S_INPUT failed"
);
msg_Warn
(
p_input
,
"VIDIOC_S_INPUT failed"
);
}
}
else
else
{
{
msg_Dbg
(
p_input
,
"input set to:%d"
,
p_sys
->
i_input
);
msg_Dbg
(
p_input
,
"input set to:%d"
,
p_sys
->
i_input
);
}
}
}
}
/* set the video standard */
/* set the video standard */
if
(
p_sys
->
i_standard
!=
V4L2_STD_UNKNOWN
)
if
(
p_sys
->
i_standard
!=
V4L2_STD_UNKNOWN
)
{
{
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_STD
,
&
p_sys
->
i_standard
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_STD
,
&
p_sys
->
i_standard
)
<
0
)
{
{
msg_Warn
(
p_input
,
"VIDIOC_S_STD failed"
);
msg_Warn
(
p_input
,
"VIDIOC_S_STD failed"
);
}
}
else
else
{
{
msg_Dbg
(
p_input
,
"video standard set to:%x"
,
p_sys
->
i_standard
);
msg_Dbg
(
p_input
,
"video standard set to:%x"
,
p_sys
->
i_standard
);
}
}
}
}
/* set the picture size */
/* set the picture size */
if
(
p_sys
->
i_width
!=
-
1
||
p_sys
->
i_height
!=
-
1
)
if
(
p_sys
->
i_width
!=
-
1
||
p_sys
->
i_height
!=
-
1
)
{
{
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_G_FMT
,
&
vfmt
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_G_FMT
,
&
vfmt
)
<
0
)
{
{
msg_Warn
(
p_input
,
"VIDIOC_G_FMT failed"
);
msg_Warn
(
p_input
,
"VIDIOC_G_FMT failed"
);
}
}
else
else
{
{
if
(
p_sys
->
i_width
!=
-
1
)
if
(
p_sys
->
i_width
!=
-
1
)
{
{
vfmt
.
fmt
.
pix
.
width
=
p_sys
->
i_width
;
vfmt
.
fmt
.
pix
.
width
=
p_sys
->
i_width
;
}
}
if
(
p_sys
->
i_height
!=
-
1
)
if
(
p_sys
->
i_height
!=
-
1
)
{
{
vfmt
.
fmt
.
pix
.
height
=
p_sys
->
i_height
;
vfmt
.
fmt
.
pix
.
height
=
p_sys
->
i_height
;
}
}
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_FMT
,
&
vfmt
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_S_FMT
,
&
vfmt
)
<
0
)
{
{
msg_Warn
(
p_input
,
"VIDIOC_S_FMT failed"
);
msg_Warn
(
p_input
,
"VIDIOC_S_FMT failed"
);
}
}
else
else
{
{
msg_Dbg
(
p_input
,
"picture size set to:%dx%d"
,
vfmt
.
fmt
.
pix
.
width
,
vfmt
.
fmt
.
pix
.
height
);
msg_Dbg
(
p_input
,
"picture size set to:%dx%d"
,
vfmt
.
fmt
.
pix
.
width
,
vfmt
.
fmt
.
pix
.
height
);
}
}
}
}
}
}
/* set the frequency */
/* set the frequency */
if
(
p_sys
->
i_frequency
!=
-
1
)
if
(
p_sys
->
i_frequency
!=
-
1
)
{
{
vf
.
tuner
=
0
;
/* TODO: let the user choose the tuner */
vf
.
tuner
=
0
;
/* TODO: let the user choose the tuner */
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_G_FREQUENCY
,
&
vf
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
VIDIOC_G_FREQUENCY
,
&
vf
)
<
0
)
{
{
msg_Warn
(
p_input
,
"VIDIOC_G_FREQUENCY failed (%s)"
,
msg_Warn
(
p_input
,
"VIDIOC_G_FREQUENCY failed (%s)"
,
strerror
(
errno
)
);
strerror
(
errno
)
);
...
@@ -383,26 +393,28 @@ static int Open( vlc_object_t * p_this )
...
@@ -383,26 +393,28 @@ static int Open( vlc_object_t * p_this )
}
}
else
else
{
{
msg_Dbg
(
p_input
,
"Tuner frequency set to:%d"
,
p_sys
->
i_frequency
);
msg_Dbg
(
p_input
,
"Tuner frequency set to:%d"
,
p_sys
->
i_frequency
);
}
}
}
}
}
}
/* codec parameters */
/* codec parameters */
if
(
p_sys
->
i_framerate
!=
-
1
if
(
p_sys
->
i_framerate
!=
-
1
||
p_sys
->
i_bitrate_mode
!=
-
1
||
p_sys
->
i_bitrate_mode
!=
-
1
||
p_sys
->
i_bitrate_peak
!=
-
1
||
p_sys
->
i_bitrate_peak
!=
-
1
||
p_sys
->
i_bitrate
!=
-
1
)
||
p_sys
->
i_bitrate
!=
-
1
||
p_sys
->
i_audio_bitmask
!=
-
1
)
{
{
if
(
ioctl
(
p_sys
->
i_fd
,
IVTV_IOC_G_CODEC
,
&
codec
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
IVTV_IOC_G_CODEC
,
&
codec
)
<
0
)
{
{
msg_Warn
(
p_input
,
"IVTV_IOC_G_CODEC failed"
);
msg_Warn
(
p_input
,
"IVTV_IOC_G_CODEC failed"
);
}
}
else
else
{
{
if
(
p_sys
->
i_framerate
!=
-
1
)
if
(
p_sys
->
i_framerate
!=
-
1
)
{
{
switch
(
p_sys
->
i_framerate
)
switch
(
p_sys
->
i_framerate
)
{
{
case
30
:
case
30
:
codec
.
framerate
=
0
;
codec
.
framerate
=
0
;
...
@@ -419,21 +431,26 @@ static int Open( vlc_object_t * p_this )
...
@@ -419,21 +431,26 @@ static int Open( vlc_object_t * p_this )
}
}
}
}
if
(
p_sys
->
i_bitrate
!=
-
1
)
if
(
p_sys
->
i_bitrate
!=
-
1
)
{
{
codec
.
bitrate
=
p_sys
->
i_bitrate
;
codec
.
bitrate
=
p_sys
->
i_bitrate
;
}
}
if
(
p_sys
->
i_bitrate_peak
!=
-
1
)
if
(
p_sys
->
i_bitrate_peak
!=
-
1
)
{
{
codec
.
bitrate_peak
=
p_sys
->
i_bitrate_peak
;
codec
.
bitrate_peak
=
p_sys
->
i_bitrate_peak
;
}
}
if
(
p_sys
->
i_bitrate_mode
!=
-
1
)
if
(
p_sys
->
i_bitrate_mode
!=
-
1
)
{
{
codec
.
bitrate_mode
=
p_sys
->
i_bitrate_mode
;
codec
.
bitrate_mode
=
p_sys
->
i_bitrate_mode
;
}
}
if
(
p_sys
->
i_audio_bitmask
!=
-
1
)
{
codec
.
audio_bitmask
=
p_sys
->
i_audio_bitmask
;
}
if
(
ioctl
(
p_sys
->
i_fd
,
IVTV_IOC_S_CODEC
,
&
codec
)
<
0
)
if
(
ioctl
(
p_sys
->
i_fd
,
IVTV_IOC_S_CODEC
,
&
codec
)
<
0
)
{
{
msg_Warn
(
p_input
,
"IVTV_IOC_S_CODEC failed"
);
msg_Warn
(
p_input
,
"IVTV_IOC_S_CODEC failed"
);
...
@@ -441,15 +458,15 @@ static int Open( vlc_object_t * p_this )
...
@@ -441,15 +458,15 @@ static int Open( vlc_object_t * p_this )
else
else
{
{
msg_Dbg
(
p_input
,
"Setting codec parameters to: framerate: %d, bitrate: %d/%d/%d"
,
msg_Dbg
(
p_input
,
"Setting codec parameters to: framerate: %d, bitrate: %d/%d/%d"
,
codec
.
framerate
,
codec
.
bitrate
,
codec
.
bitrate_peak
,
codec
.
bitrate_mode
);
codec
.
framerate
,
codec
.
bitrate
,
codec
.
bitrate_peak
,
codec
.
bitrate_mode
);
}
}
}
}
}
}
/* do a quick read */
/* do a quick read */
if
(
p_sys
->
i_fd
)
if
(
p_sys
->
i_fd
)
{
{
if
(
read
(
p_sys
->
i_fd
,
&
" "
,
1
)
)
if
(
read
(
p_sys
->
i_fd
,
psz_tmp
,
1
)
)
{
{
msg_Dbg
(
p_input
,
"Could read byte from device"
);
msg_Dbg
(
p_input
,
"Could read byte from device"
);
}
}
...
...
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