亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pvr.c

?? VLC Player Source Code
?? C
?? 第 1 頁 / 共 3 頁
字號:
                if ( !strncmp( psz_parser_init, "vbr" ,                               psz_parser - psz_parser_init ) )                {                     p_sys->i_bitrate_mode = 0;                }                else if ( !strncmp( psz_parser_init, "cbr" ,                                    psz_parser - psz_parser_init ) )                {                    p_sys->i_bitrate_mode = 1;                }            }            else if( !strncmp( psz_parser, "size=",                               strlen( "size=" ) ) )            {                p_sys->i_width =                    strtol( psz_parser + strlen( "size=" ),                            &psz_parser, 0 );                p_sys->i_height =                    strtol( psz_parser + 1 ,                            &psz_parser, 0 );            }            else            {                char *psz_parser_init;                psz_parser_init = psz_parser;                while ( (*psz_parser != ':') &&                        (*psz_parser != ',') &&                        (*psz_parser != '\0') )                {                    psz_parser++;                }                psz_device = calloc( psz_parser - psz_parser_init + 1, 1 );                if( !psz_device )                    return VLC_ENOMEM;                strncpy( psz_device, psz_parser_init,                         psz_parser - psz_parser_init );            }            if( *psz_parser )                psz_parser++;            else                break;        }    }    free( psz_tofree );    if( psz_device )    {        free( p_sys->psz_videodev );        p_sys->psz_videodev = psz_device;    }    /* open the device */    p_sys->i_fd = open( p_sys->psz_videodev, O_RDWR );    if( p_sys->i_fd < 0 )    {        msg_Err( p_access, "Cannot open device (%m)." );        Close( VLC_OBJECT(p_access) );        return VLC_EGENERIC;    }    msg_Dbg( p_access, "Using video device: %s.", p_sys->psz_videodev);    /* See what version of ivtvdriver is running */    result = ioctl( p_sys->i_fd, VIDIOC_QUERYCAP, &device_capability );    if( result < 0 )    {        msg_Err( p_access, "unknown ivtv/pvr driver version in use" );        Close( VLC_OBJECT(p_access) );        return VLC_EGENERIC;    }    msg_Dbg( p_access, "%s driver (%s on %s) version %02x.%02x.%02x",              device_capability.driver,              device_capability.card,              device_capability.bus_info,            ( device_capability.version >> 16 ) & 0xff,            ( device_capability.version >>  8 ) & 0xff,            ( device_capability.version       ) & 0xff);    if ( strncmp( (char *) device_capability.driver, "ivtv", 4 )           || device_capability.version >= 0x000800 )    {        /* Drivers > 0.8.0 use v4l2 API instead of IVTV ioctls */        msg_Dbg( p_access, "this driver uses the v4l2 API" );        p_sys->b_v4l2_api = true;    }    else    {        p_sys->b_v4l2_api = false;    }    /* set the input */    if ( p_sys->i_input != -1 )    {        result = ioctl( p_sys->i_fd, VIDIOC_S_INPUT, &p_sys->i_input );        if ( result < 0 )            msg_Warn( p_access, "Failed to select the requested input pin." );        else            msg_Dbg( p_access, "input set to: %d", p_sys->i_input );    }    /* set the video standard */    if ( p_sys->i_standard != V4L2_STD_UNKNOWN )    {        result = ioctl( p_sys->i_fd, VIDIOC_S_STD, &p_sys->i_standard );        if ( result  < 0 )            msg_Warn( p_access, "Failed to set the requested video standard." );        else            msg_Dbg( p_access, "video standard set to: %x",                     p_sys->i_standard);    }    /* set the picture size */    if ( (p_sys->i_width != -1) || (p_sys->i_height != -1) )    {        struct v4l2_format vfmt;        memset( &vfmt, 0, sizeof(struct v4l2_format) );        vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;        result = ioctl( p_sys->i_fd, VIDIOC_G_FMT, &vfmt );        if ( result < 0 )        {            msg_Warn( p_access, "Failed to read current picture size." );        }        else        {            if ( p_sys->i_width != -1 )            {                vfmt.fmt.pix.width = p_sys->i_width;            }            if ( p_sys->i_height != -1 )            {                vfmt.fmt.pix.height = p_sys->i_height;            }            result = ioctl( p_sys->i_fd, VIDIOC_S_FMT, &vfmt );            if ( result < 0 )            {                msg_Warn( p_access, "Failed to set requested picture size." );            }            else            {                msg_Dbg( p_access, "picture size set to: %dx%d",                         vfmt.fmt.pix.width, vfmt.fmt.pix.height );            }        }    }    /* set the frequency */    if ( p_sys->i_frequency != -1 )    {        int i_fd;        struct v4l2_tuner vt;         /* TODO: let the user choose the tuner */        memset( &vt, 0, sizeof(struct v4l2_tuner) );        if ( (p_sys->i_frequency >= pi_radio_range[0])              && (p_sys->i_frequency <= pi_radio_range[1]) )        {            p_sys->i_radio_fd = open( p_sys->psz_radiodev, O_RDWR );            if( p_sys->i_radio_fd < 0 )            {                msg_Err( p_access, "Cannot open radio device (%m)." );                Close( VLC_OBJECT(p_access) );                return VLC_EGENERIC;            }            msg_Dbg( p_access, "using radio device: %s",                     p_sys->psz_radiodev );            i_fd = p_sys->i_radio_fd;        }        else        {            i_fd = p_sys->i_fd;            p_sys->i_radio_fd = -1;        }        result = ioctl( i_fd, VIDIOC_G_TUNER, &vt );        if ( result < 0 )        {            msg_Warn( p_access, "Failed to read tuner information (%m)." );        }        else        {            struct v4l2_frequency vf;            memset( &vf, 0, sizeof(struct v4l2_frequency) );            vf.tuner = vt.index;            result = ioctl( i_fd, VIDIOC_G_FREQUENCY, &vf );            if ( result < 0 )            {                msg_Warn( p_access, "Failed to read tuner frequency (%m)." );            }            else            {                if( vt.capability & V4L2_TUNER_CAP_LOW )                    vf.frequency = p_sys->i_frequency * 16;                else                    vf.frequency = (p_sys->i_frequency * 16 + 500) / 1000;                result = ioctl( i_fd, VIDIOC_S_FREQUENCY, &vf );                if( result < 0 )                {                    msg_Warn( p_access, "Failed to set tuner frequency (%m)." );                }                else                {                    msg_Dbg( p_access, "tuner frequency set to: %d",                             p_sys->i_frequency );                }            }        }    }    /* control parameters */    if ( p_sys->i_volume != -1 )    {        struct v4l2_control ctrl;        memset( &ctrl, 0, sizeof(struct v4l2_control) );        ctrl.id = V4L2_CID_AUDIO_VOLUME;        ctrl.value = p_sys->i_volume;        result = ioctl( p_sys->i_fd, VIDIOC_S_CTRL, &ctrl );        if ( result < 0 )        {            msg_Warn( p_access, "Failed to set the volume." );        }    }    /* codec parameters */    if ( (p_sys->i_framerate != -1)            || (p_sys->i_bitrate_mode != -1)            || (p_sys->i_bitrate_peak != -1)            || (p_sys->i_keyint != -1)            || (p_sys->i_bframes != -1)            || (p_sys->i_bitrate != -1)            || (p_sys->i_audio_bitmask != -1) )    {        if( p_sys->b_v4l2_api )        {#ifdef HAVE_NEW_LINUX_VIDEODEV2_H            result = ConfigureV4L2( p_access );            if( result != VLC_SUCCESS )            {                Close( VLC_OBJECT(p_access) );                return result;            }#else            msg_Warn( p_access, "You have new ivtvdrivers, "                      "but this vlc was built against an old v4l2 version." );#endif        }        else        {            result = ConfigureIVTV( p_access );            if( result != VLC_SUCCESS )            {                Close( VLC_OBJECT(p_access) );                return result;            }        }    }    return VLC_SUCCESS;}/***************************************************************************** * Close: close the device *****************************************************************************/static void Close( vlc_object_t * p_this ){    access_t *p_access = (access_t*) p_this;    access_sys_t *p_sys = (access_sys_t *) p_access->p_sys;    if ( p_sys->i_fd != -1 )        close( p_sys->i_fd );    if ( p_sys->i_radio_fd != -1 )        close( p_sys->i_radio_fd );    free( p_sys->psz_videodev );    free( p_sys->psz_radiodev );    free( p_sys );}/***************************************************************************** * Read *****************************************************************************/static ssize_t Read( access_t * p_access, uint8_t * p_buffer, size_t i_len ){    access_sys_t *p_sys = (access_sys_t *) p_access->p_sys;    struct pollfd ufd;    int i_ret;    ufd.fd = p_sys->i_fd;    ufd.events = POLLIN;    if( p_access->info.b_eof )        return 0;    do    {        if( !vlc_object_alive (p_access) )            return 0;        ufd.revents = 0;    }    while( ( i_ret = poll( &ufd, 1, 500 ) ) == 0 );    if( i_ret < 0 )    {        msg_Err( p_access, "Polling error (%m)." );        return -1;    }    i_ret = read( p_sys->i_fd, p_buffer, i_len );    if( i_ret == 0 )    {        p_access->info.b_eof = true;    }    else if( i_ret > 0 )    {        p_access->info.i_pos += i_ret;    }    return i_ret;}/***************************************************************************** * Control *****************************************************************************/static int Control( access_t *p_access, int i_query, va_list args ){    bool   *pb_bool;    int          *pi_int;    int64_t      *pi_64;    switch( i_query )    {        /* */        case ACCESS_CAN_SEEK:        case ACCESS_CAN_FASTSEEK:            pb_bool = (bool*)va_arg( args, bool* );            *pb_bool = false;            break;        case ACCESS_CAN_PAUSE:            pb_bool = (bool*)va_arg( args, bool* );            *pb_bool = false;            break;        case ACCESS_CAN_CONTROL_PACE:            pb_bool = (bool*)va_arg( args, bool* );            *pb_bool = false;            break;        /* */        case ACCESS_GET_MTU:            pi_int = (int*)va_arg( args, int * );            *pi_int = 0;            break;        case ACCESS_GET_PTS_DELAY:            pi_64 = (int64_t*)va_arg( args, int64_t * );            *pi_64 = (int64_t)var_GetInteger( p_access, "pvr-caching" ) * 1000;            break;        /* */        case ACCESS_SET_PAUSE_STATE:            /* Nothing to do */            break;        case ACCESS_GET_TITLE_INFO:        case ACCESS_SET_TITLE:        case ACCESS_SET_SEEKPOINT:        case ACCESS_SET_PRIVATE_ID_STATE:        case ACCESS_GET_CONTENT_TYPE:            return VLC_EGENERIC;        default:            msg_Warn( p_access, "Unimplemented query in control." );            return VLC_EGENERIC;    }    return VLC_SUCCESS;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍亚洲综合| 亚洲一区二区三区四区在线观看| 99热这里都是精品| 麻豆免费看一区二区三区| 国产精品二三区| 精品国产乱码久久久久久浪潮| 色先锋aa成人| 国产精品一区在线观看你懂的| 婷婷中文字幕一区三区| 国产精品国产a| 久久久天堂av| 日韩一区二区在线看| 欧美午夜精品电影| 色综合天天综合网国产成人综合天 | 91精品中文字幕一区二区三区| 成人丝袜视频网| 久久99国产精品麻豆| 青椒成人免费视频| 午夜影院久久久| 亚洲免费观看在线视频| 中文字幕免费观看一区| 久久久av毛片精品| 欧美成人性福生活免费看| 欧美剧情电影在线观看完整版免费励志电影 | 另类综合日韩欧美亚洲| 丝袜国产日韩另类美女| 亚洲一区二区三区四区在线免费观看| 亚洲欧洲一区二区在线播放| 欧美极品aⅴ影院| 国产亚洲综合色| 久久午夜色播影院免费高清| 精品免费视频.| 日韩你懂的在线播放| 777欧美精品| 欧美一区二区三区色| 91精品蜜臀在线一区尤物| 欧美精品一卡二卡| 在线成人免费观看| 欧美精品粉嫩高潮一区二区| 8x8x8国产精品| 欧美大片顶级少妇| 久久久久久久久一| 欧美国产禁国产网站cc| 国产精品二三区| 亚洲精品欧美综合四区| 亚洲国产视频直播| 日韩精品国产精品| 久久疯狂做爰流白浆xx| 国内外成人在线视频| 国产91精品在线观看| 色综合欧美在线| 欧美精品777| 精品美女在线播放| 国产女人aaa级久久久级| 国产精品久久久一区麻豆最新章节| 国产精品久久久久aaaa| 亚洲欧美电影院| 日韩精品视频网| 国产福利视频一区二区三区| 91日韩在线专区| 欧美男女性生活在线直播观看| 日韩一区二区免费高清| 久久久久久久精| 亚洲精品成人精品456| 三级影片在线观看欧美日韩一区二区| 美国毛片一区二区三区| 国产精品一级在线| 色哟哟精品一区| 欧美一区二区在线不卡| 国产精品乱人伦中文| 亚洲图片有声小说| 国产一区欧美日韩| 91福利区一区二区三区| 日韩一区二区三区视频在线观看| 久久久久久久电影| 亚洲综合一区二区精品导航| 青青国产91久久久久久 | 色成人在线视频| 日韩精品中文字幕在线不卡尤物 | 亚洲午夜在线视频| 国产一区二区免费看| 欧美性受xxxx黑人xyx性爽| 26uuu色噜噜精品一区| 一区二区三区中文字幕精品精品 | 国产麻豆精品在线| 欧美在线视频日韩| 国产日韩欧美精品电影三级在线| 亚洲一区影音先锋| 成人动漫精品一区二区| 日韩欧美一区二区视频| 亚洲丝袜精品丝袜在线| 国产在线精品一区二区不卡了| 91免费视频观看| 久久精品综合网| 三级精品在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲欧美日韩中文播放 | 男女激情视频一区| 欧美在线三级电影| 国产精品无码永久免费888| 人人超碰91尤物精品国产| 欧美午夜精品久久久久久孕妇| 中文久久乱码一区二区| 精品一区二区三区免费| 欧美另类变人与禽xxxxx| 亚洲激情网站免费观看| 国产成人av影院| 精品国偷自产国产一区| 日韩不卡一区二区三区| 欧美三片在线视频观看 | 亚洲美女视频在线观看| 国产精品99久久久| 欧美成人精品福利| 亚洲二区在线视频| 一本大道久久a久久综合| 国产精品女上位| 国产激情91久久精品导航| 精品三级av在线| 日韩电影在线一区二区三区| 欧美三级视频在线| 亚洲自拍偷拍麻豆| 欧美性xxxxxxxx| 亚洲一区二区三区中文字幕| 色综合久久88色综合天天免费| 国产精品动漫网站| 波多野结衣亚洲一区| 国产精品理论在线观看| 国产福利一区二区三区视频在线 | 中文字幕乱码亚洲精品一区| 国产精品伊人色| 国产欧美日韩另类视频免费观看| 国产一区二区三区免费看| 欧美成人a视频| 精品在线亚洲视频| 精品久久一区二区三区| 精品亚洲porn| 国产日韩欧美精品综合| 成人av在线网| ㊣最新国产の精品bt伙计久久| 99久久综合精品| 亚洲色图清纯唯美| 欧美影院精品一区| 青青草原综合久久大伊人精品优势 | 色综合色综合色综合色综合色综合 | 性欧美疯狂xxxxbbbb| 欧美日韩三级视频| 亚洲第一主播视频| 日韩精品一区二区三区在线观看| 九九九精品视频| 国产精品网站在线| 色94色欧美sute亚洲线路二 | 久久99精品国产.久久久久久| 精品va天堂亚洲国产| 丰满少妇在线播放bd日韩电影| 国产精品久久久久9999吃药| 91久久香蕉国产日韩欧美9色| 午夜精品一区二区三区免费视频| 日韩一区二区三区高清免费看看| 国产资源在线一区| 中文字幕一区av| 欧美挠脚心视频网站| 国产一区二区导航在线播放| 最新高清无码专区| 欧美高清视频一二三区| 国产一区二区三区观看| 亚洲天堂2014| 日韩一级二级三级| 成人涩涩免费视频| 午夜精品免费在线观看| 久久久欧美精品sm网站| 色综合久久88色综合天天6| 奇米色一区二区三区四区| 欧美国产日韩a欧美在线观看| 在线区一区二视频| 国产乱码精品一区二区三区av | 精品综合久久久久久8888| 国产精品久久久久9999吃药| 91精品久久久久久久99蜜桃 | 91黄色在线观看| 麻豆精品一二三| 亚洲三级电影全部在线观看高清| 制服视频三区第一页精品| 国产91高潮流白浆在线麻豆| 午夜欧美电影在线观看| 国产精品无码永久免费888| 欧美肥妇毛茸茸| 99久久久国产精品免费蜜臀| 美女mm1313爽爽久久久蜜臀| 日韩毛片视频在线看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产一区二区三区免费看| 亚洲电影激情视频网站| 国产精品丝袜91| 日韩精品资源二区在线| 欧美日韩一区成人| 91在线观看污| 国产精品18久久久| 久久电影国产免费久久电影| 亚洲电影你懂得| 亚洲精品国产精华液|