⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.cxx

📁 很不错的播放代玛
💻 CXX
📖 第 1 页 / 共 5 页
字号:
}/// Demuxer name (RO)static int mp_property_demuxer(m_option_t* prop,int action,void* arg) {    if(!demuxer) return M_PROPERTY_UNAVAILABLE;    return m_property_string_ro(prop,action,arg,(char*)demuxer->desc->name);}/// Position in the stream (RW)static int mp_property_stream_pos(m_option_t* prop,int action,void* arg) {    if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE;    if (!arg) return M_PROPERTY_ERROR;    switch (action) {    case M_PROPERTY_GET:        *(off_t*)arg = stream_tell(demuxer->stream);        return M_PROPERTY_OK;    case M_PROPERTY_SET:        M_PROPERTY_CLAMP(prop,*(off_t*)arg);        stream_seek(demuxer->stream, *(off_t*)arg);        return M_PROPERTY_OK;    }    return M_PROPERTY_NOT_IMPLEMENTED;}/// Stream start offset (RO)static int mp_property_stream_start(m_option_t* prop,int action,void* arg) {    if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE;    switch (action) {    case M_PROPERTY_GET:        *(off_t*)arg = demuxer->stream->start_pos;        return M_PROPERTY_OK;    }    return M_PROPERTY_NOT_IMPLEMENTED;}/// Stream end offset (RO)static int mp_property_stream_end(m_option_t* prop,int action,void* arg) {    if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE;    switch (action) {    case M_PROPERTY_GET:        *(off_t*)arg = demuxer->stream->end_pos;        return M_PROPERTY_OK;    }    return M_PROPERTY_NOT_IMPLEMENTED;}/// Stream length (RO)static int mp_property_stream_length(m_option_t* prop,int action,void* arg) {    if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE;    switch (action) {    case M_PROPERTY_GET:        *(off_t*)arg = demuxer->stream->end_pos - demuxer->stream->start_pos;        return M_PROPERTY_OK;    }    return M_PROPERTY_NOT_IMPLEMENTED;}/// Media length in seconds (RO)static int mp_property_length(m_option_t* prop,int action,void* arg) {    double len;        if(!demuxer ||       !(int)(len = demuxer_get_time_length(demuxer)))        return M_PROPERTY_UNAVAILABLE;        switch(action) {    case M_PROPERTY_PRINT:        if(!arg) return 0;        else {            int h, m, s = len;            h = s/3600;            s -= h*3600;            m = s/60;            s -= m*60;            *(char**)arg = malloc(20);            if(h > 0) sprintf(*(char**)arg,"%d:%02d:%02d",h,m,s);            else if(m > 0) sprintf(*(char**)arg,"%d:%02d",m,s);            else sprintf(*(char**)arg,"%d",s);            return 1;        }        break;    }    return m_property_double_ro(prop,action,arg,len);}///@}/// \defgroup AudioProperties Audio properties/// \ingroup Properties///@{/// Volume (RW)static int mp_property_volume(m_option_t* prop,int action,void* arg) {    if(!sh_audio) return M_PROPERTY_UNAVAILABLE;        switch(action) {    case M_PROPERTY_GET:        if(!arg) return 0;        mixer_getbothvolume(&mixer,arg);        return 1;    case M_PROPERTY_PRINT:{        float vol;        if(!arg) return 0;        mixer_getbothvolume(&mixer,&vol);        return m_property_float_range(prop,action,arg,&vol);    }            case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:    case M_PROPERTY_SET:        break;    default:        return M_PROPERTY_NOT_IMPLEMENTED;    }    if (edl_muted) return M_PROPERTY_DISABLED;    user_muted = 0;    switch(action) {   case M_PROPERTY_SET:        if(!arg) return 0;        M_PROPERTY_CLAMP(prop,*(float*)arg);        mixer_setvolume(&mixer,*(float*)arg,*(float*)arg);        return 1;    case M_PROPERTY_STEP_UP:        if(arg && *(float*)arg <= 0)            mixer_decvolume(&mixer);        else            mixer_incvolume(&mixer);        return 1;    case M_PROPERTY_STEP_DOWN:        if(arg && *(float*)arg <= 0)            mixer_incvolume(&mixer);        else            mixer_decvolume(&mixer);        return 1;    }    return M_PROPERTY_NOT_IMPLEMENTED;}/// Mute (RW)static int mp_property_mute(m_option_t* prop,int action,void* arg) {        if(!sh_audio) return M_PROPERTY_UNAVAILABLE;        switch(action) {    case M_PROPERTY_SET:        if(edl_muted) return M_PROPERTY_DISABLED;        if(!arg) return 0;        if((!!*(int*)arg) != mixer.muted)            mixer_mute(&mixer);        return 1;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        if(edl_muted) return M_PROPERTY_DISABLED;        mixer_mute(&mixer);        return 1;    case M_PROPERTY_PRINT:        if(!arg) return 0;        if(edl_muted) {            *(char**)arg = strdup(MSGTR_EnabledEdl);            return 1;        }    default:        return m_property_flag(prop,action,arg,&mixer.muted);    }}/// Audio delay (RW)static int mp_property_audio_delay(m_option_t* prop,int action,void* arg) {    if(!(sh_audio && sh_video)) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_SET:    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        if(!arg) return 0;        else {            float delay = audio_delay;            m_property_delay(prop,action,arg,&audio_delay);            if(sh_audio) sh_audio->delay -= audio_delay-delay;        }        return 1;    default:        return m_property_delay(prop,action,arg,&audio_delay);    }}/// Audio codec tag (RO)static int mp_property_audio_format(m_option_t* prop,int action,void* arg) {    if(!sh_audio) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_audio->format);}/// Audio bitrate (RO)static int mp_property_audio_bitrate(m_option_t* prop,int action,void* arg) {    if(!sh_audio) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_audio->i_bps);}/// Samplerate (RO)static int mp_property_samplerate(m_option_t* prop,int action,void* arg) {    if(!sh_audio) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_audio->samplerate);}/// Number of channels (RO)static int mp_property_channels(m_option_t* prop,int action,void* arg) {    if(!sh_audio) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_PRINT:        if(!arg) return 0;        switch(sh_audio->channels) {        case 1: *(char**)arg = strdup("mono"); break;        case 2: *(char**)arg = strdup("stereo"); break;        default:            *(char**)arg = malloc(32);            sprintf(*(char**)arg,"%d channels",sh_audio->channels);        }        return 1;    }    return m_property_int_ro(prop,action,arg,sh_audio->channels);}///@}/// \defgroup VideoProperties Video properties/// \ingroup Properties///@{/// Fullscreen state (RW)static int mp_property_fullscreen(m_option_t* prop,int action,void* arg) {    if(!video_out) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_SET:        if(!arg) return 0;        M_PROPERTY_CLAMP(prop,*(int*)arg);        if(vo_fs == !!*(int*)arg) return 1;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:#ifdef HAVE_NEW_GUI        if(use_gui) guiGetEvent(guiIEvent,(char*)MP_CMD_GUI_FULLSCREEN);        else#endif        if(vo_config_count) video_out->control(VOCTRL_FULLSCREEN, 0);        return 1;    default:        return m_property_flag(prop,action,arg,&vo_fs);    }}/// Panscan (RW)static int mp_property_panscan(m_option_t* prop,int action,void* arg) {    if(!video_out || video_out->control(VOCTRL_GET_PANSCAN,NULL ) != VO_TRUE)        return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_SET:        if(!arg) return 0;        M_PROPERTY_CLAMP(prop,*(float*)arg);        vo_panscan = *(float*)arg;        video_out->control(VOCTRL_SET_PANSCAN,NULL);        return 1;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        vo_panscan += (arg ? *(float*)arg : 0.1) *            (action == M_PROPERTY_STEP_DOWN ? -1 : 1);        if(vo_panscan > 1) vo_panscan = 1;        else if(vo_panscan < 0) vo_panscan = 0;        video_out->control(VOCTRL_SET_PANSCAN,NULL);        return 1;    default:        return m_property_float_range(prop,action,arg,&vo_panscan);    }}/// Helper to set vo flags./** \ingroup PropertyImplHelper */static int mp_property_vo_flag(m_option_t* prop,int action,void* arg,                               int vo_ctrl,int* vo_var) {    if(!video_out) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_SET:        if(!arg) return 0;        M_PROPERTY_CLAMP(prop,*(int*)arg);        if(*vo_var == !!*(int*)arg) return 1;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        if(vo_config_count) video_out->control(vo_ctrl, 0);        return 1;    default:        return m_property_flag(prop,action,arg,vo_var);    }}/// Window always on top (RW)static int mp_property_ontop(m_option_t* prop,int action,void* arg) {    return mp_property_vo_flag(prop,action,arg,VOCTRL_ONTOP,&vo_ontop);}/// Display in the root window (RW)static int mp_property_rootwin(m_option_t* prop,int action,void* arg) {    return mp_property_vo_flag(prop,action,arg,VOCTRL_ROOTWIN,&vo_rootwin);}/// Show window borders (RW)static int mp_property_border(m_option_t* prop,int action,void* arg) {    return mp_property_vo_flag(prop,action,arg,VOCTRL_BORDER,&vo_border);}/// Framedropping state (RW)static int mp_property_framedropping(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;        switch(action) {    case M_PROPERTY_PRINT:        if(!arg) return 0;        *(char**)arg = strdup(frame_dropping == 1 ? MSGTR_Enabled :                              (frame_dropping == 2 ? MSGTR_HardFrameDrop  : MSGTR_Disabled));        return 1;    default:        return m_property_choice(prop,action,arg,&frame_dropping);    }}/// Color settings, try to use vf/vo then fall back on TV. (RW)static int mp_property_gamma(m_option_t* prop,int action,void* arg) {    int* gamma = prop->priv, r;    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    if(gamma[0] == 1000) {        gamma[0] = 0;        get_video_colors (sh_video, prop->name, gamma);    }    switch(action) {    case M_PROPERTY_SET:        if(!arg) return 0;        M_PROPERTY_CLAMP(prop,*(int*)arg);        *gamma = *(int*)arg;        r = set_video_colors(sh_video, prop->name, *gamma);        if(r <= 0) break;        return r;    case M_PROPERTY_GET:        if(!arg) return 0;        r = get_video_colors (sh_video, prop->name, arg);        if(r <= 0) break;        return r;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        *gamma += (arg ? *(int*)arg : 1) *            (action == M_PROPERTY_STEP_DOWN ? -1 : 1);        M_PROPERTY_CLAMP(prop,*gamma);        r = set_video_colors(sh_video, prop->name, *gamma);        if(r <= 0) break;        return r;    default:        return M_PROPERTY_NOT_IMPLEMENTED;    }    #ifdef USE_TV    if(demuxer->type == DEMUXER_TYPE_TV) {        int l = strlen(prop->name);        char tv_prop[3+l+1];        sprintf(tv_prop,"tv_%s",prop->name);        return mp_property_do(tv_prop,action,arg);    }#endif        return M_PROPERTY_UNAVAILABLE;}/// VSync (RW)static int mp_property_vsync(m_option_t* prop,int action,void* arg) {    return m_property_flag(prop,action,arg,&vo_vsync);}/// Video codec tag (RO)static int mp_property_video_format(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_video->format);}/// Video bitrate (RO)static int mp_property_video_bitrate(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_video->i_bps);}/// Video display width (RO)static int mp_property_width(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_video->disp_w);}/// Video display height (RO)static int mp_property_height(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_int_ro(prop,action,arg,sh_video->disp_h);}/// Video fps (RO)static int mp_property_fps(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_float_ro(prop,action,arg,sh_video->fps);}/// Video aspect (RO)static int mp_property_aspect(m_option_t* prop,int action,void* arg) {    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    return m_property_float_ro(prop,action,arg,sh_video->aspect);}///@}/// \defgroup SubProprties Subtitles properties/// \ingroup Properties///@{/// Text subtitle position (RW)static int mp_property_sub_pos(m_option_t* prop,int action,void* arg) {#ifdef USE_SUB    if(!sh_video) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_SET:        if(!arg) return 0;    case M_PROPERTY_STEP_UP:    case M_PROPERTY_STEP_DOWN:        vo_osd_changed(OSDTYPE_SUBTITLE);    default:        return m_property_int_range(prop,action,arg,&sub_pos);    }#else    return M_PROPERTY_UNAVAILABLE;#endif}/// Selected subtitles (RW)static int mp_property_sub(m_option_t* prop,int action,void* arg) {    int source = -1, reset_spu = 0;    if(global_sub_size <= 0) return M_PROPERTY_UNAVAILABLE;    switch(action) {    case M_PROPERTY_GET:        if(!arg) return 0;        *(int*)arg = global_sub_pos;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -