vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Aug 21 16:38:24 2012 +0300| [601d3874410dd032c711236cd0110aee43284560] | committer: Rémi Denis-Courmont
v4l2: revector tuner setup So the code is reusable for radio device nodes. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=601d3874410dd032c711236cd0110aee43284560 --- modules/access/v4l2/video.c | 51 ++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/modules/access/v4l2/video.c b/modules/access/v4l2/video.c index c6bb29d..e7329d5 100644 --- a/modules/access/v4l2/video.c +++ b/modules/access/v4l2/video.c @@ -116,28 +116,13 @@ static int SetupAudio (vlc_object_t *obj, int fd, return 0; } -static int SetupTuner (vlc_object_t *obj, int fd, - const struct v4l2_input *restrict input) +static int SetupTuner (vlc_object_t *obj, int fd, uint32_t idx) { - switch (input->type) - { - case V4L2_INPUT_TYPE_TUNER: - msg_Dbg (obj, "tuning required: tuner %"PRIu32, input->tuner); - break; - case V4L2_INPUT_TYPE_CAMERA: - msg_Dbg (obj, "no tuning required (analog baseband input)"); - return 0; - default: - msg_Err (obj, "unknown input tuning type %"PRIu32, input->type); - return 0; // hopefully we can stream regardless... - } - - struct v4l2_tuner tuner = { .index = input->tuner }; + struct v4l2_tuner tuner = { .index = idx }; if (v4l2_ioctl (fd, VIDIOC_G_TUNER, &tuner) < 0) { - msg_Err (obj, "cannot get tuner %"PRIu32" properties: %m", - input->tuner); + msg_Err (obj, "cannot get tuner %"PRIu32" properties: %m", idx); return -1; } @@ -194,31 +179,29 @@ static int SetupTuner (vlc_object_t *obj, int fd, if (v4l2_ioctl (fd, VIDIOC_S_TUNER, &tuner) < 0) { - msg_Err (obj, "cannot set tuner %"PRIu32" audio mode: %m", - input->tuner); + msg_Err (obj, "cannot set tuner %"PRIu32" audio mode: %m", idx); return -1; } - msg_Dbg (obj, "tuner %"PRIu32" audio mode %u set", input->tuner, - tuner.audmode); + msg_Dbg (obj, "tuner %"PRIu32" audio mode %u set", idx, tuner.audmode); /* Tune to the requested frequency */ uint32_t freq = var_InheritInteger (obj, CFG_PREFIX"tuner-frequency"); if (freq != (uint32_t)-1) { struct v4l2_frequency frequency = { - .tuner = input->tuner, + .tuner = idx, .type = V4L2_TUNER_ANALOG_TV, .frequency = freq * 125 / 2 }; if (v4l2_ioctl (fd, VIDIOC_S_FREQUENCY, &frequency) < 0) { - msg_Err (obj, "cannot tune tuner %u to frequency %u %sHz: %m", - input->tuner, freq, mult); + msg_Err (obj, "cannot tune tuner %"PRIu32 + " to frequency %u %sHz: %m", idx, freq, mult); return -1; } msg_Dbg (obj, "tuner %"PRIu32" tuned to frequency %"PRIu32" %sHz", - input->tuner, freq, mult); + idx, freq, mult); } else msg_Dbg (obj, "tuner not tuned"); @@ -285,7 +268,21 @@ int SetupInput (vlc_object_t *obj, int fd) msg_Dbg (obj, "selected input %"PRIu32, input.index); SetupStandard (obj, fd, &input); - SetupTuner (obj, fd, &input); + + switch (input.type) + { + case V4L2_INPUT_TYPE_TUNER: + msg_Dbg (obj, "tuning required: tuner %"PRIu32, input.tuner); + SetupTuner (obj, fd, input.tuner); + break; + case V4L2_INPUT_TYPE_CAMERA: + msg_Dbg (obj, "no tuning required (analog baseband input)"); + break; + default: + msg_Err (obj, "unknown input tuning type %"PRIu32, input.type); + break; // hopefully we can stream regardless... + } + SetupAudio (obj, fd, &input); return 0; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
