Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 359743
Collapse All | Expand All

(-)tvtime-1.0.2.orig/src/videoinput.c (-43 / +121 lines)
Lines 35-41 Link Here
35
#ifdef HAVE_CONFIG_H
35
#ifdef HAVE_CONFIG_H
36
# include "config.h"
36
# include "config.h"
37
#endif
37
#endif
38
#ifdef HAVE_LINUX_VIDEODEV_H
38
#include <linux/videodev.h>
39
#include <linux/videodev.h>
40
#endif
39
#include <linux/videodev2.h>
41
#include <linux/videodev2.h>
40
#include "videoinput.h"
42
#include "videoinput.h"
41
#include "mixer.h"
43
#include "mixer.h"
Lines 101-107 Link Here
101
        return 0;
103
        return 0;
102
    }
104
    }
103
}
105
}
104
106
#ifdef HAVE_LINUX_VIDEODEV_H
105
static int videoinput_get_v4l1_norm( int norm )
107
static int videoinput_get_v4l1_norm( int norm )
106
{
108
{
107
    if( norm == VIDEOINPUT_NTSC ) {
109
    if( norm == VIDEOINPUT_NTSC ) {
Lines 122-128 Link Here
122
        return 0;
124
        return 0;
123
    }
125
    }
124
}
126
}
125
127
#endif
126
static int videoinput_get_audmode_v4l2( int mode )
128
static int videoinput_get_audmode_v4l2( int mode )
127
{
129
{
128
    if( mode == VIDEOINPUT_MONO ) {
130
    if( mode == VIDEOINPUT_MONO ) {
Lines 226-232 Link Here
226
    int have_mmap;
228
    int have_mmap;
227
    uint8_t *map;
229
    uint8_t *map;
228
    struct video_mmap *grab_buf;
230
    struct video_mmap *grab_buf;
231
#ifdef HAVE_LINUX_VIDEODEV_H
229
    struct video_mbuf gb_buffers;
232
    struct video_mbuf gb_buffers;
233
#endif
230
234
231
    /* V4L1 read-mode state. */
235
    /* V4L1 read-mode state. */
232
    int grab_size;
236
    int grab_size;
Lines 235-252 Link Here
235
239
236
const char *videoinput_get_audio_mode_name( videoinput_t *vidin, int mode )
240
const char *videoinput_get_audio_mode_name( videoinput_t *vidin, int mode )
237
{
241
{
238
    if( mode == VIDEO_SOUND_MONO ) {
242
    if( mode == VIDEOINPUT_MONO ) {
239
        return "Mono";
243
        return "Mono";
240
    } else if( mode == VIDEO_SOUND_STEREO ) {
244
    } else if( mode == VIDEOINPUT_STEREO ) {
241
        return "Stereo";
245
        return "Stereo";
242
    } else if( vidin->norm == VIDEOINPUT_NTSC ) {
246
    } else if( vidin->norm == VIDEOINPUT_NTSC ) {
243
        if( mode == VIDEO_SOUND_LANG2 ) {
247
        if( mode == VIDEOINPUT_LANG2 ) {
244
            return "SAP";
248
            return "SAP";
245
        }
249
        }
246
    } else {
250
    } else {
247
        if( mode == VIDEO_SOUND_LANG1 ) {
251
        if( mode == VIDEOINPUT_LANG1 ) {
248
            return "Language 1";
252
            return "Language 1";
249
        } else if( mode == VIDEO_SOUND_LANG2 ) {
253
        } else if( mode == VIDEOINPUT_LANG2 ) {
250
            return "Language 2";
254
            return "Language 2";
251
        }
255
        }
252
    }
256
    }
Lines 302-313 Link Here
302
                     frameid, strerror( errno ) );
306
                     frameid, strerror( errno ) );
303
        }
307
        }
304
        vidin->capbuffers[ frameid ].free = 1;
308
        vidin->capbuffers[ frameid ].free = 1;
305
    } else {
309
    } 
310
#ifdef HAVE_LINUX_VIDEODEV_H
311
    else {
306
        if( ioctl( vidin->grab_fd, VIDIOCMCAPTURE, vidin->grab_buf + frameid ) < 0 ) {
312
        if( ioctl( vidin->grab_fd, VIDIOCMCAPTURE, vidin->grab_buf + frameid ) < 0 ) {
307
            fprintf( stderr, "videoinput: Can't free frame %d: %s\n",
313
            fprintf( stderr, "videoinput: Can't free frame %d: %s\n",
308
                     frameid, strerror( errno ) );
314
                     frameid, strerror( errno ) );
309
        }
315
        }
310
    }
316
    }
317
#endif
311
}
318
}
312
319
313
void videoinput_free_frame( videoinput_t *vidin, int frameid )
320
void videoinput_free_frame( videoinput_t *vidin, int frameid )
Lines 327-332 Link Here
327
    vidin->curframe = 0;
334
    vidin->curframe = 0;
328
}
335
}
329
336
337
#ifdef HAVE_LINUX_VIDEODEV_H
330
static void wait_for_frame_v4l1( videoinput_t *vidin, int frameid )
338
static void wait_for_frame_v4l1( videoinput_t *vidin, int frameid )
331
{
339
{
332
    alarms = 0;
340
    alarms = 0;
Lines 347-352 Link Here
347
    }
355
    }
348
    alarm( 0 );
356
    alarm( 0 );
349
}
357
}
358
#endif
350
359
351
static void wait_for_frame_v4l2( videoinput_t * vidin )
360
static void wait_for_frame_v4l2( videoinput_t * vidin )
352
{
361
{
Lines 394-400 Link Here
394
        vidin->capbuffers[ cur_buf.index ].free = 0;
403
        vidin->capbuffers[ cur_buf.index ].free = 0;
395
        *frameid = cur_buf.index;
404
        *frameid = cur_buf.index;
396
        return vidin->capbuffers[ cur_buf.index ].data;
405
        return vidin->capbuffers[ cur_buf.index ].data;
397
    } else {
406
    } 
407
#ifdef HAVE_LINUX_VIDEODEV_H
408
	else {
398
        if( vidin->have_mmap ) {
409
        if( vidin->have_mmap ) {
399
            uint8_t *cur;
410
            uint8_t *cur;
400
            wait_for_frame_v4l1( vidin, vidin->curframe );
411
            wait_for_frame_v4l1( vidin, vidin->curframe );
Lines 413-425 Link Here
413
            }
424
            }
414
        }
425
        }
415
    }
426
    }
427
#endif
428
	return 0;
416
}
429
}
417
430
418
int videoinput_buffer_invalid( videoinput_t *vidin, int frameid )
431
int videoinput_buffer_invalid( videoinput_t *vidin, int frameid )
419
{
432
{
420
    if( !vidin->isv4l2 ) {
433
    if( !vidin->isv4l2 ) {
421
        return 0;
434
        return 0;
422
    } else {
435
    } 
436
    else {
423
        return vidin->capbuffers[ frameid ].free;
437
        return vidin->capbuffers[ frameid ].free;
424
    }
438
    }
425
}
439
}
Lines 428-437 Link Here
428
                              int volume, int norm, int verbose, char *error_string )
442
                              int volume, int norm, int verbose, char *error_string )
429
{
443
{
430
    videoinput_t *vidin = malloc( sizeof( videoinput_t ) );
444
    videoinput_t *vidin = malloc( sizeof( videoinput_t ) );
445
#ifdef HAVE_LINUX_VIDEODEV_H
431
    struct video_capability caps_v4l1;
446
    struct video_capability caps_v4l1;
432
    struct v4l2_capability caps_v4l2;
433
    struct video_picture grab_pict;
447
    struct video_picture grab_pict;
434
    struct video_window grab_win;
448
    struct video_window grab_win;
449
#endif
450
    struct v4l2_capability caps_v4l2;
435
    int i;
451
    int i;
436
452
437
    if( capwidth & 1 ) {
453
    if( capwidth & 1 ) {
Lines 497-502 Link Here
497
     * device. 
513
     * device. 
498
     */
514
     */
499
    if( ioctl( vidin->grab_fd, VIDIOC_QUERYCAP, &caps_v4l2 ) < 0 ) {
515
    if( ioctl( vidin->grab_fd, VIDIOC_QUERYCAP, &caps_v4l2 ) < 0 ) {
516
#ifdef HAVE_LINUX_VIDEODEV_H
500
        /* Can't get V4L2 capabilities, maybe this is a V4L1 device? */
517
        /* Can't get V4L2 capabilities, maybe this is a V4L1 device? */
501
        if( ioctl( vidin->grab_fd, VIDIOCGCAP, &caps_v4l1 ) < 0 ) {
518
        if( ioctl( vidin->grab_fd, VIDIOCGCAP, &caps_v4l1 ) < 0 ) {
502
            fprintf( stderr, "videoinput: %s is not a video4linux device.\n",
519
            fprintf( stderr, "videoinput: %s is not a video4linux device.\n",
Lines 514-519 Link Here
514
                  "%s", caps_v4l1.name );
531
                  "%s", caps_v4l1.name );
515
        snprintf( vidin->shortdriver, sizeof( vidin->shortdriver ),
532
        snprintf( vidin->shortdriver, sizeof( vidin->shortdriver ),
516
                  "%s", caps_v4l1.name );
533
                  "%s", caps_v4l1.name );
534
#else
535
		return 0;
536
#endif
517
    } else {
537
    } else {
518
        if( vidin->verbose ) {
538
        if( vidin->verbose ) {
519
            fprintf( stderr, "videoinput: Using video4linux2 driver '%s', card '%s' (bus %s).\n"
539
            fprintf( stderr, "videoinput: Using video4linux2 driver '%s', card '%s' (bus %s).\n"
Lines 553-559 Link Here
553
            free( vidin );
573
            free( vidin );
554
            return 0;
574
            return 0;
555
        }
575
        }
556
    } else {
576
    } 
577
#ifdef HAVE_LINUX_VIDEODEV_H
578
    else {
557
        /* The capabilities should tell us how many inputs this card has. */
579
        /* The capabilities should tell us how many inputs this card has. */
558
        vidin->numinputs = caps_v4l1.channels;
580
        vidin->numinputs = caps_v4l1.channels;
559
        if( vidin->numinputs == 0 ) {
581
        if( vidin->numinputs == 0 ) {
Lines 565-571 Link Here
565
            return 0;
587
            return 0;
566
        }
588
        }
567
    }
589
    }
590
#endif                     
568
591
592
#ifdef HAVE_LINUX_VIDEODEV_H
569
    /* Check if this is a bttv-based card.  Code taken from xawtv. */
593
    /* Check if this is a bttv-based card.  Code taken from xawtv. */
570
#define BTTV_VERSION            _IOR('v' , BASE_VIDIOCPRIVATE+6, int)
594
#define BTTV_VERSION            _IOR('v' , BASE_VIDIOCPRIVATE+6, int)
571
    /* dirty hack time / v4l design flaw -- works with bttv only
595
    /* dirty hack time / v4l design flaw -- works with bttv only
Lines 595-605 Link Here
595
            return 0;
619
            return 0;
596
        }
620
        }
597
    }
621
    }
622
#endif                     
598
623
599
    /* On initialization, set to input 0.  This is just to start things up. */
624
    /* On initialization, set to input 0.  This is just to start things up. */
600
    videoinput_set_input_num( vidin, 0 );
625
    videoinput_set_input_num( vidin, 0 );
601
626
602
    /* Test for audio support. */
627
#ifdef HAVE_LINUX_VIDEODEV_H
628
   /* Test for audio support. */
603
    if( !vidin->isv4l2 ) {
629
    if( !vidin->isv4l2 ) {
604
        struct video_audio audio;
630
        struct video_audio audio;
605
631
Lines 623-631 Link Here
623
            fprintf( stderr, "\n" );
649
            fprintf( stderr, "\n" );
624
        }
650
        }
625
    }
651
    }
626
652
#endif                     
627
    /* Set to stereo by default. */
653
    /* Set to stereo by default. */
628
    videoinput_set_audio_mode( vidin, VIDEO_SOUND_STEREO );
654
    videoinput_set_audio_mode( vidin, VIDEOINPUT_STEREO );
655
629
656
630
    /**
657
    /**
631
     * Once we're here, we've set the hardware norm.  Now confirm that
658
     * Once we're here, we've set the hardware norm.  Now confirm that
Lines 702-708 Link Here
702
            }
729
            }
703
        }
730
        }
704
731
705
    } else {
732
    } 
733
#ifdef HAVE_LINUX_VIDEODEV_H
734
    else {
706
        if( ioctl( vidin->grab_fd, VIDIOCGCAP, &caps_v4l1 ) < 0 ) {
735
        if( ioctl( vidin->grab_fd, VIDIOCGCAP, &caps_v4l1 ) < 0 ) {
707
            fprintf( stderr, "videoinput: video4linux device '%s' refuses "
736
            fprintf( stderr, "videoinput: video4linux device '%s' refuses "
708
                     "to provide set capability information, giving up.\n",
737
                     "to provide set capability information, giving up.\n",
Lines 790-795 Link Here
790
            return 0;
819
            return 0;
791
        }
820
        }
792
    }
821
    }
822
#endif
793
823
794
    if( vidin->isv4l2 ) {
824
    if( vidin->isv4l2 ) {
795
        struct v4l2_requestbuffers req;
825
        struct v4l2_requestbuffers req;
Lines 866-872 Link Here
866
        videoinput_start_capture_v4l2( vidin );
896
        videoinput_start_capture_v4l2( vidin );
867
897
868
        return vidin;
898
        return vidin;
869
    } else {
899
    } 
900
#ifdef HAVE_LINUX_VIDEODEV_H
901
    else {
870
        /* Try to set up mmap-based capture. */
902
        /* Try to set up mmap-based capture. */
871
        if( ioctl( vidin->grab_fd, VIDIOCGMBUF, &(vidin->gb_buffers) ) < 0 ) {
903
        if( ioctl( vidin->grab_fd, VIDIOCGMBUF, &(vidin->gb_buffers) ) < 0 ) {
872
            fprintf( stderr, "videoinput: Can't get capture buffer properties.  No mmap support?\n"
904
            fprintf( stderr, "videoinput: Can't get capture buffer properties.  No mmap support?\n"
Lines 931-936 Link Here
931
963
932
        return vidin;
964
        return vidin;
933
    }
965
    }
966
#endif
967
	return 0;
934
}
968
}
935
969
936
void videoinput_delete( videoinput_t *vidin )
970
void videoinput_delete( videoinput_t *vidin )
Lines 947-953 Link Here
947
        for( i = 0; i < vidin->numframes; i++ ) {
981
        for( i = 0; i < vidin->numframes; i++ ) {
948
            munmap( vidin->capbuffers[ i ].data, vidin->capbuffers[ i ].length );
982
            munmap( vidin->capbuffers[ i ].data, vidin->capbuffers[ i ].length );
949
        }
983
        }
950
    } else {
984
    } 
985
#ifdef HAVE_LINUX_VIDEODEV_H
986
    else {
951
        if( vidin->have_mmap ) {
987
        if( vidin->have_mmap ) {
952
            munmap( vidin->map, vidin->gb_buffers.size );
988
            munmap( vidin->map, vidin->gb_buffers.size );
953
            free( vidin->grab_buf );
989
            free( vidin->grab_buf );
Lines 955-961 Link Here
955
            free( vidin->grab_data );
991
            free( vidin->grab_data );
956
        }
992
        }
957
    }
993
    }
958
994
#endif
959
    close( vidin->grab_fd );
995
    close( vidin->grab_fd );
960
    free( vidin );
996
    free( vidin );
961
}
997
}
Lines 992-1005 Link Here
992
{
1028
{
993
    if( vidin->isv4l2 ) {
1029
    if( vidin->isv4l2 ) {
994
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_HUE ) * 100.0) + 0.5);
1030
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_HUE ) * 100.0) + 0.5);
995
    } else {
1031
    } 
1032
#ifdef HAVE_LINUX_VIDEODEV_H
1033
    else {
996
        struct video_picture grab_pict;
1034
        struct video_picture grab_pict;
997
1035
998
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1036
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
999
            return (int) ((((double) grab_pict.hue / 65535.0) * 100.0) + 0.5);
1037
            return (int) ((((double) grab_pict.hue / 65535.0) * 100.0) + 0.5);
1000
        }
1038
        }
1001
    }
1039
    }
1002
1040
#endif
1003
    return 0;
1041
    return 0;
1004
}
1042
}
1005
1043
Lines 1010-1016 Link Here
1010
1048
1011
    if( vidin->isv4l2 ) {
1049
    if( vidin->isv4l2 ) {
1012
        videoinput_set_control_v4l2( vidin, V4L2_CID_HUE, ((double) newhue) / 100.0 );
1050
        videoinput_set_control_v4l2( vidin, V4L2_CID_HUE, ((double) newhue) / 100.0 );
1013
    } else {
1051
    } 
1052
#ifdef HAVE_LINUX_VIDEODEV_H
1053
    else {
1014
        struct video_picture grab_pict;
1054
        struct video_picture grab_pict;
1015
1055
1016
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1056
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
Lines 1018-1023 Link Here
1018
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1058
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1019
        }
1059
        }
1020
    }
1060
    }
1061
#endif
1021
}
1062
}
1022
1063
1023
void videoinput_set_hue_relative( videoinput_t *vidin, int offset )
1064
void videoinput_set_hue_relative( videoinput_t *vidin, int offset )
Lines 1032-1045 Link Here
1032
{
1073
{
1033
    if( vidin->isv4l2 ) {
1074
    if( vidin->isv4l2 ) {
1034
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_BRIGHTNESS ) * 100.0) + 0.5);
1075
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_BRIGHTNESS ) * 100.0) + 0.5);
1035
    } else {
1076
    } 
1077
#ifdef HAVE_LINUX_VIDEODEV_H
1078
    else {
1036
        struct video_picture grab_pict;
1079
        struct video_picture grab_pict;
1037
1080
1038
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1081
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1039
            return (int) ((((double) grab_pict.brightness / 65535.0) * 100.0) + 0.5);
1082
            return (int) ((((double) grab_pict.brightness / 65535.0) * 100.0) + 0.5);
1040
        }
1083
        }
1041
    }
1084
    }
1042
1085
#endif
1043
    return 0;
1086
    return 0;
1044
}
1087
}
1045
1088
Lines 1050-1056 Link Here
1050
1093
1051
    if( vidin->isv4l2 ) {
1094
    if( vidin->isv4l2 ) {
1052
        videoinput_set_control_v4l2( vidin, V4L2_CID_BRIGHTNESS, ((double) newbright) / 100.0 );
1095
        videoinput_set_control_v4l2( vidin, V4L2_CID_BRIGHTNESS, ((double) newbright) / 100.0 );
1053
    } else {
1096
    } 
1097
#ifdef HAVE_LINUX_VIDEODEV_H
1098
    else {
1054
        struct video_picture grab_pict;
1099
        struct video_picture grab_pict;
1055
1100
1056
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1101
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
Lines 1058-1063 Link Here
1058
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1103
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1059
        }
1104
        }
1060
    }
1105
    }
1106
#endif
1061
}
1107
}
1062
1108
1063
void videoinput_set_brightness_relative( videoinput_t *vidin, int offset )
1109
void videoinput_set_brightness_relative( videoinput_t *vidin, int offset )
Lines 1072-1085 Link Here
1072
{
1118
{
1073
    if( vidin->isv4l2 ) {
1119
    if( vidin->isv4l2 ) {
1074
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_CONTRAST ) * 100.0) + 0.5);
1120
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_CONTRAST ) * 100.0) + 0.5);
1075
    } else {
1121
    } 
1122
#ifdef HAVE_LINUX_VIDEODEV_H
1123
    else {
1076
        struct video_picture grab_pict;
1124
        struct video_picture grab_pict;
1077
1125
1078
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1126
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1079
            return (int) ((((double) grab_pict.contrast / 65535.0) * 100.0) + 0.5);
1127
            return (int) ((((double) grab_pict.contrast / 65535.0) * 100.0) + 0.5);
1080
        }
1128
        }
1081
    }
1129
    }
1082
1130
#endif
1083
    return 0;
1131
    return 0;
1084
}
1132
}
1085
1133
Lines 1090-1096 Link Here
1090
1138
1091
    if( vidin->isv4l2 ) {
1139
    if( vidin->isv4l2 ) {
1092
        videoinput_set_control_v4l2( vidin, V4L2_CID_CONTRAST, ((double) newcont) / 100.0 );
1140
        videoinput_set_control_v4l2( vidin, V4L2_CID_CONTRAST, ((double) newcont) / 100.0 );
1093
    } else {
1141
    } 
1142
#ifdef HAVE_LINUX_VIDEODEV_H
1143
    else {
1094
        struct video_picture grab_pict;
1144
        struct video_picture grab_pict;
1095
1145
1096
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1146
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
Lines 1098-1103 Link Here
1098
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1148
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1099
        }
1149
        }
1100
    }
1150
    }
1151
#endif
1101
}
1152
}
1102
1153
1103
void videoinput_set_contrast_relative( videoinput_t *vidin, int offset )
1154
void videoinput_set_contrast_relative( videoinput_t *vidin, int offset )
Lines 1112-1125 Link Here
1112
{
1163
{
1113
    if( vidin->isv4l2 ) {
1164
    if( vidin->isv4l2 ) {
1114
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_SATURATION ) * 100.0) + 0.5);
1165
        return (int) ((videoinput_get_control_v4l2( vidin, V4L2_CID_SATURATION ) * 100.0) + 0.5);
1115
    } else {
1166
    } 
1167
#ifdef HAVE_LINUX_VIDEODEV_H
1168
    else {
1116
        struct video_picture grab_pict;
1169
        struct video_picture grab_pict;
1117
1170
1118
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1171
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1119
            return (int) ((((double) grab_pict.colour / 65535.0) * 100.0) + 0.5);
1172
            return (int) ((((double) grab_pict.colour / 65535.0) * 100.0) + 0.5);
1120
        }
1173
        }
1121
    }
1174
    }
1122
1175
#endif
1123
    return 0;
1176
    return 0;
1124
}
1177
}
1125
1178
Lines 1130-1136 Link Here
1130
1183
1131
    if( vidin->isv4l2 ) {
1184
    if( vidin->isv4l2 ) {
1132
        videoinput_set_control_v4l2( vidin, V4L2_CID_SATURATION, ((double) newsaturation) / 100.0 );
1185
        videoinput_set_control_v4l2( vidin, V4L2_CID_SATURATION, ((double) newsaturation) / 100.0 );
1133
    } else {
1186
    } 
1187
#ifdef HAVE_LINUX_VIDEODEV_H
1188
    else {
1134
        struct video_picture grab_pict;
1189
        struct video_picture grab_pict;
1135
1190
1136
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
1191
        if( ioctl( vidin->grab_fd, VIDIOCGPICT, &grab_pict ) >= 0 ) {
Lines 1138-1143 Link Here
1138
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1193
            ioctl( vidin->grab_fd, VIDIOCSPICT, &grab_pict );
1139
        }
1194
        }
1140
    }
1195
    }
1196
#endif
1141
}
1197
}
1142
1198
1143
void videoinput_set_saturation_relative( videoinput_t *vidin, int offset )
1199
void videoinput_set_saturation_relative( videoinput_t *vidin, int offset )
Lines 1166-1172 Link Here
1166
            if( !mute && vidin->volume > 0 ) {
1222
            if( !mute && vidin->volume > 0 ) {
1167
                videoinput_set_control_v4l2( vidin, V4L2_CID_AUDIO_VOLUME, ((double) vidin->volume) / 100.0 );
1223
                videoinput_set_control_v4l2( vidin, V4L2_CID_AUDIO_VOLUME, ((double) vidin->volume) / 100.0 );
1168
            }
1224
            }
1169
        } else {
1225
        } 
1226
 #ifdef HAVE_LINUX_VIDEODEV_H
1227
       else {
1170
            struct video_audio audio;
1228
            struct video_audio audio;
1171
1229
1172
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
1230
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
Lines 1190-1195 Link Here
1190
                }
1248
                }
1191
            }
1249
            }
1192
        }
1250
        }
1251
#endif
1193
        vidin->hw_muted = mute;
1252
        vidin->hw_muted = mute;
1194
    }
1253
    }
1195
}
1254
}
Lines 1219-1225 Link Here
1219
                    vidin->audiomode = mode;
1278
                    vidin->audiomode = mode;
1220
                }
1279
                }
1221
            }
1280
            }
1222
        } else {
1281
        } 
1282
#ifdef HAVE_LINUX_VIDEODEV_H
1283
        else {
1223
            struct video_audio audio;
1284
            struct video_audio audio;
1224
1285
1225
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
1286
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
Lines 1248-1253 Link Here
1248
                }
1309
                }
1249
            }
1310
            }
1250
        }
1311
        }
1312
#endif
1251
    }
1313
    }
1252
}
1314
}
1253
1315
Lines 1294-1306 Link Here
1294
                videoinput_free_all_frames( vidin );
1356
                videoinput_free_all_frames( vidin );
1295
                videoinput_start_capture_v4l2( vidin );
1357
                videoinput_start_capture_v4l2( vidin );
1296
            }
1358
            }
1297
        } else {
1359
        } 
1360
#ifdef HAVE_LINUX_VIDEODEV_H
1361
        else {
1298
            if( ioctl( vidin->grab_fd, VIDIOCSFREQ, &frequency ) < 0 ) {
1362
            if( ioctl( vidin->grab_fd, VIDIOCSFREQ, &frequency ) < 0 ) {
1299
                fprintf( stderr, "videoinput: Tuner present, but our request to change "
1363
                fprintf( stderr, "videoinput: Tuner present, but our request to change "
1300
                                 "to frequency %d failed with this error: %s.\n", freqKHz, strerror( errno ) );
1364
                                 "to frequency %d failed with this error: %s.\n", freqKHz, strerror( errno ) );
1301
                fprintf( stderr, "videoinput: Please file a bug report at " PACKAGE_BUGREPORT "\n" );
1365
                fprintf( stderr, "videoinput: Please file a bug report at " PACKAGE_BUGREPORT "\n" );
1302
            }
1366
            }
1303
        }
1367
        }
1368
#endif
1304
    }
1369
    }
1305
}
1370
}
1306
1371
Lines 1322-1328 Link Here
1322
                return 0;
1387
                return 0;
1323
            }
1388
            }
1324
            frequency = freqinfo.frequency;
1389
            frequency = freqinfo.frequency;
1325
        } else {
1390
        } 
1391
#ifdef HAVE_LINUX_VIDEODEV_H
1392
        else {
1326
            if( ioctl( vidin->grab_fd, VIDIOCGFREQ, &frequency ) < 0 ) {
1393
            if( ioctl( vidin->grab_fd, VIDIOCGFREQ, &frequency ) < 0 ) {
1327
                fprintf( stderr, "videoinput: Tuner refuses to tell us the current frequency: %s\n",
1394
                fprintf( stderr, "videoinput: Tuner refuses to tell us the current frequency: %s\n",
1328
                         strerror( errno ) );
1395
                         strerror( errno ) );
Lines 1330-1336 Link Here
1330
                return 0;
1397
                return 0;
1331
            }
1398
            }
1332
        }
1399
        }
1333
1400
#endif
1334
        if( !vidin->tunerlow ) {
1401
        if( !vidin->tunerlow ) {
1335
            frequency *= 1000; /* switch from MHz to KHz */
1402
            frequency *= 1000; /* switch from MHz to KHz */
1336
        }
1403
        }
Lines 1355-1361 Link Here
1355
            } else if( !tuner.signal ) {
1422
            } else if( !tuner.signal ) {
1356
                return 0;
1423
                return 0;
1357
            }
1424
            }
1358
        } else {
1425
        } 
1426
#ifdef HAVE_LINUX_VIDEODEV_H
1427
        else {
1359
            struct video_tuner tuner;
1428
            struct video_tuner tuner;
1360
1429
1361
            if( ioctl( vidin->grab_fd, VIDIOCGTUNER, &tuner ) < 0 ) {
1430
            if( ioctl( vidin->grab_fd, VIDIOCGTUNER, &tuner ) < 0 ) {
Lines 1367-1372 Link Here
1367
                return 0;
1436
                return 0;
1368
            }
1437
            }
1369
        }
1438
        }
1439
#endif
1370
    }
1440
    }
1371
    return 1;
1441
    return 1;
1372
}
1442
}
Lines 1386-1392 Link Here
1386
        } else {
1456
        } else {
1387
            vidin->tunerlow = (tuner.capability & V4L2_TUNER_CAP_LOW) ? 1 : 0;
1457
            vidin->tunerlow = (tuner.capability & V4L2_TUNER_CAP_LOW) ? 1 : 0;
1388
        }
1458
        }
1389
    } else {
1459
    } 
1460
#ifdef HAVE_LINUX_VIDEODEV_H
1461
    else {
1390
        struct video_tuner tuner;
1462
        struct video_tuner tuner;
1391
        int tuner_number = -1;
1463
        int tuner_number = -1;
1392
        int found = 0;
1464
        int found = 0;
Lines 1498-1503 Link Here
1498
            vidin->hastuner = 1;
1570
            vidin->hastuner = 1;
1499
        }
1571
        }
1500
    }
1572
    }
1573
#endif
1501
}
1574
}
1502
1575
1503
1576
Lines 1560-1566 Link Here
1560
            videoinput_free_all_frames( vidin );
1633
            videoinput_free_all_frames( vidin );
1561
            videoinput_start_capture_v4l2( vidin );
1634
            videoinput_start_capture_v4l2( vidin );
1562
        }
1635
        }
1563
    } else {
1636
    } 
1637
#ifdef HAVE_LINUX_VIDEODEV_H
1638
    else {
1564
        if( inputnum >= vidin->numinputs ) {
1639
        if( inputnum >= vidin->numinputs ) {
1565
            fprintf( stderr, "videoinput: Requested input number %d not valid, "
1640
            fprintf( stderr, "videoinput: Requested input number %d not valid, "
1566
                     "max is %d.\n", inputnum, vidin->numinputs );
1641
                     "max is %d.\n", inputnum, vidin->numinputs );
Lines 1595-1601 Link Here
1595
            }
1670
            }
1596
        }
1671
        }
1597
    }
1672
    }
1598
1673
#endif
1599
    /* Once we've set the input, go look for a tuner. */
1674
    /* Once we've set the input, go look for a tuner. */
1600
    videoinput_find_and_set_tuner( vidin );
1675
    videoinput_find_and_set_tuner( vidin );
1601
}
1676
}
Lines 1678-1685 Link Here
1678
1753
1679
int videoinput_get_audio_mode( videoinput_t *vidin )
1754
int videoinput_get_audio_mode( videoinput_t *vidin )
1680
{
1755
{
1681
    if( !vidin->audiomode || vidin->audiomode > VIDEO_SOUND_LANG2 ) {
1756
    if( !vidin->audiomode || vidin->audiomode > VIDEOINPUT_LANG2 ) {
1682
        return VIDEO_SOUND_MONO;
1757
        return VIDEOINPUT_MONO;
1683
    } else {
1758
    } else {
1684
        return vidin->audiomode;
1759
        return vidin->audiomode;
1685
    }
1760
    }
Lines 1771-1777 Link Here
1771
        if( vidin->isv4l2 ) {
1846
        if( vidin->isv4l2 ) {
1772
            videoinput_set_control_v4l2( vidin, V4L2_CID_AUDIO_VOLUME,
1847
            videoinput_set_control_v4l2( vidin, V4L2_CID_AUDIO_VOLUME,
1773
                                         ((double) vidin->volume) / 100.0 );
1848
                                         ((double) vidin->volume) / 100.0 );
1774
        } else {
1849
        } 
1850
#ifdef HAVE_LINUX_VIDEODEV_H
1851
        else {
1775
            struct video_audio audio;
1852
            struct video_audio audio;
1776
1853
1777
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
1854
            if( ioctl( vidin->grab_fd, VIDIOCGAUDIO, &audio ) < 0 ) {
Lines 1790-1795 Link Here
1790
                }
1867
                }
1791
            }
1868
            }
1792
        }
1869
        }
1870
#endif
1793
    }
1871
    }
1794
}
1872
}
1795
1873
(-)tvtime-1.0.2.orig/configure.ac (-1 / +1 lines)
Lines 22-28 Link Here
22
22
23
# Checks for header files.
23
# Checks for header files.
24
AC_HEADER_STDC
24
AC_HEADER_STDC
25
AC_CHECK_HEADERS([ctype.h dirent.h errno.h fcntl.h getopt.h langinfo.h math.h netinet/in.h pwd.h signal.h stdint.h stdio.h stdlib.h string.h sys/ioctl.h sys/mman.h sys/resource.h sys/stat.h sys/time.h sys/wait.h sys/types.h unistd.h wordexp.h locale.h])
25
AC_CHECK_HEADERS([ctype.h dirent.h errno.h fcntl.h getopt.h langinfo.h math.h netinet/in.h pwd.h signal.h stdint.h stdio.h stdlib.h string.h sys/ioctl.h sys/mman.h sys/resource.h sys/stat.h sys/time.h sys/wait.h sys/types.h unistd.h wordexp.h locale.h linux/videodev.h])
26
26
27
# Checks for typedefs, structures, and compiler characteristics.
27
# Checks for typedefs, structures, and compiler characteristics.
28
AC_HEADER_TIME
28
AC_HEADER_TIME

Return to bug 359743