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

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

?? motion.c

?? VLC Player Source Code
?? C
字號:
/***************************************************************************** * motion.c: control VLC with laptop built-in motion sensors ***************************************************************************** * Copyright (C) 2006 - 2007 the VideoLAN team * $Id: 59d6ba2c516f5ffcdcee03407d25e0ae1f2613f8 $ * * Author: Sam Hocevar <sam@zoy.org> *         Jér?me Decoodt <djc@videolan.org> (unimotion integration) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <math.h>#include <vlc_common.h>#include <vlc_plugin.h>#include <vlc_interface.h>#include <vlc_vout.h>#ifdef HAVE_UNISTD_H#    include <unistd.h>#endif#ifdef __APPLE__#include "unimotion.h"#endif/***************************************************************************** * intf_sys_t: description and status of interface *****************************************************************************/struct intf_sys_t{    enum { NO_SENSOR, HDAPS_SENSOR, AMS_SENSOR, APPLESMC_SENSOR,           UNIMOTION_SENSOR } sensor;#ifdef __APPLE__    enum sms_hardware unimotion_hw;#endif    int i_calibrate;    bool b_use_rotate;};/***************************************************************************** * Local prototypes. *****************************************************************************/static int  Open   ( vlc_object_t * );static void Close  ( vlc_object_t * );static void RunIntf( intf_thread_t *p_intf );static int GetOrientation( intf_thread_t *p_intf );#define USE_ROTATE_TEXT N_("Use the rotate video filter instead of transform")/***************************************************************************** * Module descriptor *****************************************************************************/vlc_module_begin();    set_shortname( N_("motion"));    set_category( CAT_INTERFACE );    set_description( N_("motion control interface") );    set_help( N_("Use HDAPS, AMS, APPLESMC or UNIMOTION motion sensors " \                 "to rotate the video") )    add_bool( "motion-use-rotate", 0, NULL,              USE_ROTATE_TEXT, USE_ROTATE_TEXT, false );    set_capability( "interface", 0 );    set_callbacks( Open, Close );vlc_module_end();/***************************************************************************** * OpenIntf: initialise interface *****************************************************************************/int Open ( vlc_object_t *p_this ){    intf_thread_t *p_intf = (intf_thread_t *)p_this;    FILE *f;    int i_x, i_y;    p_intf->p_sys = malloc( sizeof( intf_sys_t ) );    if( p_intf->p_sys == NULL )    {        return VLC_ENOMEM;    }    if( access( "/sys/devices/platform/hdaps/position", R_OK ) == 0 )    {        /* IBM HDAPS support */        f = fopen( "/sys/devices/platform/hdaps/calibrate", "r" );        if( f )        {            i_x = i_y = 0;            fscanf( f, "(%d,%d)", &i_x, &i_y );            fclose( f );            p_intf->p_sys->i_calibrate = i_x;            p_intf->p_sys->sensor = HDAPS_SENSOR;        }        else        {            p_intf->p_sys->sensor = NO_SENSOR;        }    }    else if( access( "/sys/devices/ams/x", R_OK ) == 0 )    {        /* Apple Motion Sensor support */        p_intf->p_sys->sensor = AMS_SENSOR;    }    else if( access( "/sys/devices/applesmc.768/position", R_OK ) == 0 )    {        /* Apple SMC (newer macbooks) */        /* Should be factorised with HDAPS */        f = fopen( "/sys/devices/applesmc.768/calibrate", "r" );        if( f )        {            i_x = i_y = 0;            fscanf( f, "(%d,%d)", &i_x, &i_y );            fclose( f );            p_intf->p_sys->i_calibrate = i_x;            p_intf->p_sys->sensor = APPLESMC_SENSOR;        }        else        {            p_intf->p_sys->sensor = NO_SENSOR;        }    }#ifdef __APPLE__    else if( p_intf->p_sys->unimotion_hw = detect_sms() )        p_intf->p_sys->sensor = UNIMOTION_SENSOR;#endif    else    {        /* No motion sensor support */        p_intf->p_sys->sensor = NO_SENSOR;    }    p_intf->pf_run = RunIntf;    p_intf->p_sys->b_use_rotate = config_GetInt( p_intf, "motion-use-rotate" );    return VLC_SUCCESS;}/***************************************************************************** * CloseIntf: destroy interface *****************************************************************************/void Close ( vlc_object_t *p_this ){    intf_thread_t *p_intf = (intf_thread_t *)p_this;    free( p_intf->p_sys );}/***************************************************************************** * RunIntf: main loop *****************************************************************************/#define FILTER_LENGTH 16#define LOW_THRESHOLD 800#define HIGH_THRESHOLD 1000static void RunIntf( intf_thread_t *p_intf ){    int i_x, i_oldx = 0, i_sum = 0, i = 0;    int p_oldx[FILTER_LENGTH];    memset( p_oldx, 0, FILTER_LENGTH * sizeof( int ) );    while( !intf_ShouldDie( p_intf ) )    {        vout_thread_t *p_vout;        const char *psz_filter, *psz_type;        bool b_change = false;        /* Wait a bit, get orientation, change filter if necessary */        msleep( INTF_IDLE_SLEEP );        i_x = GetOrientation( p_intf );        i_sum += i_x - p_oldx[i];        p_oldx[i++] = i_x;        if( i == FILTER_LENGTH ) i = 0;        i_x = i_sum / FILTER_LENGTH;        if( p_intf->p_sys->b_use_rotate )        {            if( i_oldx != i_x )            {                /* TODO: cache object pointer */                vlc_object_t *p_obj =                vlc_object_find_name( p_intf->p_libvlc, "rotate", FIND_CHILD );                if( p_obj )                {                    var_SetInteger( p_obj, "rotate-deciangle",                            ((3600+i_x/2)%3600) );                    i_oldx = i_x;                    vlc_object_release( p_obj );                }            }            continue;        }        if( i_x < -HIGH_THRESHOLD && i_oldx > -LOW_THRESHOLD )        {            b_change = true;            psz_filter = "transform";            psz_type = "270";        }        else if( ( i_x > -LOW_THRESHOLD && i_oldx < -HIGH_THRESHOLD )                 || ( i_x < LOW_THRESHOLD && i_oldx > HIGH_THRESHOLD ) )        {            b_change = true;            psz_filter = "";            psz_type = "";        }        else if( i_x > HIGH_THRESHOLD && i_oldx < LOW_THRESHOLD )        {            b_change = true;            psz_filter = "transform";            psz_type = "90";        }        if( !b_change )        {            continue;        }        p_vout = (vout_thread_t *)            vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE );        if( !p_vout )        {            continue;        }        config_PutPsz( p_vout, "transform-type", psz_type );        var_SetString( p_vout, "vout-filter", psz_filter );        vlc_object_release( p_vout );        i_oldx = i_x;    }}#undef FILTER_LENGTH#undef LOW_THRESHOLD#undef HIGH_THRESHOLD/***************************************************************************** * GetOrientation: get laptop orientation, range -1800 / +1800 *****************************************************************************/static int GetOrientation( intf_thread_t *p_intf ){    FILE *f;    int i_x, i_y, i_z = 0;    switch( p_intf->p_sys->sensor )    {    case HDAPS_SENSOR:        f = fopen( "/sys/devices/platform/hdaps/position", "r" );        if( !f )        {            return 0;        }        i_x = i_y = 0;        fscanf( f, "(%d,%d)", &i_x, &i_y );        fclose( f );        return ( i_x - p_intf->p_sys->i_calibrate ) * 10;    case AMS_SENSOR:        f = fopen( "/sys/devices/ams/x", "r" );        if( !f )        {            return 0;        }        fscanf( f, "%d", &i_x);        fclose( f );        return - i_x * 30; /* FIXME: arbitrary */    case APPLESMC_SENSOR:        f = fopen( "/sys/devices/applesmc.768/position", "r" );        if( !f )        {            return 0;        }        i_x = i_y = i_z = 0;        fscanf( f, "(%d,%d,%d)", &i_x, &i_y, &i_z );        fclose( f );        return ( i_x - p_intf->p_sys->i_calibrate ) * 10;#ifdef __APPLE__    case UNIMOTION_SENSOR:        if( read_sms_raw( p_intf->p_sys->unimotion_hw, &i_x, &i_y, &i_z ) )        {            double d_norm = sqrt( i_x*i_x+i_z*i_z );            if( d_norm < 100 )                return 0;            double d_x = i_x / d_norm;            if( i_z > 0 )                return -asin(d_x)*3600/3.141;            else                return 3600 + asin(d_x)*3600/3.141;        }        else            return 0;#endif    default:        return 0;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久夜色精品国产欧美乱极品| 色婷婷久久久久swag精品| 欧美电影免费观看高清完整版在| 日韩精品电影一区亚洲| 337p亚洲精品色噜噜| 久久精品国产免费| 欧美经典一区二区| 成人v精品蜜桃久久一区| 国产精品久久久久aaaa樱花| 在线看一区二区| 首页国产欧美久久| 久久蜜臀精品av| 色综合久久久久| 久久99精品国产.久久久久| 中文字幕不卡在线观看| 欧美三级电影精品| 国产精品影视在线观看| 亚洲图片激情小说| 日韩欧美亚洲国产精品字幕久久久| 粉嫩av一区二区三区粉嫩| 亚洲欧美日韩系列| 精品国产伦一区二区三区免费| 成人sese在线| 国产自产v一区二区三区c| 悠悠色在线精品| 亚洲国产成人自拍| 欧美变态凌虐bdsm| 久久精品一级爱片| 欧美日韩精品福利| 99久久久国产精品| 国产精品一区二区视频| 五月天亚洲婷婷| 亚洲免费观看高清完整| 久久久久久**毛片大全| 在线播放/欧美激情| 在线观看一区二区精品视频| 国产精品一二一区| 美国十次综合导航| 婷婷夜色潮精品综合在线| 国产精品美女久久久久aⅴ| 亚洲精品在线电影| 日韩欧美国产三级电影视频| 欧美日韩国产在线播放网站| 99精品视频在线免费观看| 国产高清不卡一区| 国产精品主播直播| 国产在线麻豆精品观看| 麻豆免费精品视频| 日本在线不卡视频一二三区| 亚洲图片自拍偷拍| 五月激情丁香一区二区三区| 一区二区三区欧美日| 夜夜嗨av一区二区三区中文字幕| 亚洲欧美在线观看| 亚洲精品videosex极品| 亚洲黄色免费网站| 亚洲高清在线视频| 男男gaygay亚洲| 国产美女视频91| 不卡的电影网站| 在线观看精品一区| 欧美久久久久中文字幕| 日韩女优av电影在线观看| 日韩视频免费观看高清在线视频| 欧美电影精品一区二区 | 亚瑟在线精品视频| 美美哒免费高清在线观看视频一区二区 | 国产成人综合在线| aaa亚洲精品一二三区| 日本高清无吗v一区| 91精品国产91热久久久做人人 | 国产成人免费在线观看不卡| 成人免费视频app| 欧美日韩激情一区| 久久亚洲综合色| 亚洲精品日韩综合观看成人91| 亚洲一区二区欧美激情| 久久国产精品无码网站| 北条麻妃一区二区三区| 欧美一区二区三区四区高清 | 欧美色视频在线| 久久久99精品免费观看不卡| 亚洲精品成人悠悠色影视| 久久精品国产99国产精品| 高清不卡一区二区在线| 欧美人与z0zoxxxx视频| 国产欧美精品国产国产专区| 亚洲一区二区三区在线| 成人污污视频在线观看| 91精品国产综合久久香蕉的特点 | 欧美日韩中文字幕一区二区| 2023国产精品自拍| 日韩黄色片在线观看| 99国产麻豆精品| 国产日韩精品一区| 久久99精品久久久| 制服丝袜日韩国产| 亚洲黄色小说网站| 99精品视频中文字幕| 亚洲国产高清在线| 激情成人综合网| 日韩精品专区在线影院重磅| 亚洲午夜在线视频| 久久99精品久久久久久动态图| 亚洲日本丝袜连裤袜办公室| 久久99深爱久久99精品| 成人综合在线观看| 国产日本亚洲高清| 国产做a爰片久久毛片 | 午夜精品一区在线观看| 日本韩国欧美三级| 亚洲国产精品久久艾草纯爱| 99re8在线精品视频免费播放| 欧美国产精品一区| voyeur盗摄精品| 自拍视频在线观看一区二区| 成人精品国产一区二区4080| 国产精品福利影院| 91丨porny丨首页| 亚洲一二三专区| 欧美日韩你懂得| 美女精品一区二区| 国产色综合一区| 91麻豆国产自产在线观看| 亚洲日本丝袜连裤袜办公室| 欧美丝袜丝交足nylons| 午夜a成v人精品| 久久综合久久99| 99久久免费精品高清特色大片| 一区二区三区国产| 欧美一区二区精品在线| 国产成人鲁色资源国产91色综| 亚洲欧美在线aaa| 欧美人成免费网站| 国产一区二区三区香蕉| 中文字幕一区二区日韩精品绯色| 色综合久久综合中文综合网| 日韩精品三区四区| 欧美国产一区二区在线观看 | 久久综合久久综合久久综合| caoporn国产精品| 五月综合激情日本mⅴ| 国产三级一区二区| 欧美美女一区二区| 粉嫩嫩av羞羞动漫久久久| 无码av免费一区二区三区试看| 国产午夜精品福利| 欧美一区国产二区| 99re视频精品| 国产盗摄精品一区二区三区在线 | 亚洲欧美视频在线观看| 日韩女优视频免费观看| 欧美午夜寂寞影院| 丁香六月综合激情| 韩国成人福利片在线播放| 亚洲1区2区3区4区| 亚洲综合一区二区三区| 中文字幕在线一区二区三区| 久久伊人蜜桃av一区二区| 欧美日韩国产一区二区三区地区| 99re热这里只有精品免费视频| 国产精品一区不卡| 黄色日韩三级电影| 久久精品国产99国产精品| 亚洲h在线观看| 亚洲福利电影网| 一区二区三区欧美日韩| 亚洲精品免费在线观看| 亚洲欧洲在线观看av| 国产精品乱人伦| 国产精品国产馆在线真实露脸| 久久精品人人做人人综合| 久久先锋资源网| 国产亚洲午夜高清国产拍精品 | 欧美日韩高清影院| 欧美日韩视频不卡| 777色狠狠一区二区三区| 欧美喷潮久久久xxxxx| 欧美日韩高清在线| 欧美一级欧美一级在线播放| 日韩午夜激情视频| 久久综合中文字幕| 欧美国产精品一区二区| 亚洲日本va在线观看| 亚洲在线成人精品| 天天av天天翘天天综合网 | 日韩一区精品字幕| 蜜桃视频一区二区| 国产iv一区二区三区| 91免费视频观看| 欧美精品 日韩| 久久综合九色综合欧美98| 国产精品久线在线观看| 亚洲国产欧美在线| 国产一区二区三区高清播放| 国产激情一区二区三区| 在线精品视频免费播放| 欧美mv和日韩mv的网站| 亚洲丝袜精品丝袜在线| 奇米综合一区二区三区精品视频|