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

📄 bdrom_app.cpp

📁 这是DVD中伺服部分的核心代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        {
            /* Player is surround capable for Dolby Lossless */
            regAudioCapability |= 0x00008000;
        }
        else
        {
            /* Player is stereo capable for Dolby Lossless */
            regAudioCapability |= 0x00004000;
        }
    }

    /* Check TextST Unsupported Languages capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_UNSUPPORTED_LANG) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00010000;
    }

    /* Check TextST User style change capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_USER_STYLE_CHANGE) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00008000;
    }

    /* Check TextST text flow and align capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_TEXT_FLOW_ALIGN) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00004000;
    }

    /* Check TextST outline border capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_OUTLINE_BORDER) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00002000;
    }

    /* Check TextST inline style change capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_INLINE_STYLE) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00001000;
    }

    /* Check TextST BIG5 encoding capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_BIG5) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00000080;
    }

    /* Check TextST CN-GB encoding capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_CN_GB) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00000040;
    }

    /* Check TextST GB18030-2000 encoding capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_GB18030_2000) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00000020;
    }

    /* Check TextST EUC-KR encoding capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_EUC_KR) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00000010;
    }

    /* Check TextST Shift JIS encoding capability */
    if ( (iconfigTextSTCapable & TEXTST_CAPABLE_SHIFT_JIS) != TEXTST_CAPABLE_INVALID)
    {
        regTextSTCapability |= 0x00000008;
    }

    /* Configure the BDROM Navigator with player's audio capabilites */
    if (ModMgrConfigAudioCapability(regAudioCapability) != MODMGR_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("bdromappLoadPlayerCapabilities: failed to set audio capabilites!\n"));
        return (OS_FAILURE);
    }

    /* Configure the BDROM Navigator with player's text subtitle capabilites */
    if (ModMgrConfigTextSTCapability(regTextSTCapability) != MODMGR_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("bdromappLoadPlayerCapabilities: failed to set textst capabilites!\n"));
        return (OS_FAILURE);
    }

    /* Configure the BDROM Navigator with player version
     *
     *   BD-ROM Player which complies with BD-ROM Profile 1 without functions indicated
     *   by Note1 in Annex D
     *
     *   BD-ROM Player which complies with System Description Blu-ray Disc Read-Only Format,
     *   Part 3: Audio Visual Basic Specifications Version 1.0
     */
    if (ModMgrConfigPlayerVersion(BDROM_PROFILE_1_WITHOUT_OPTIONAL_FEATURES) != MODMGR_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("bdromappLoadPlayerCapabilities: failed to set player version!\n"));
        return (OS_FAILURE);
    }

    /*
     * Set language capabilities.  For now, allow only english.  This will
     * need to be updated.  Decision of what languages are supported should be
     * moved to the PE.
     */
    ModMgrConfigPSRValue(48, 0x00000000);
    ModMgrConfigPSRValue(49, 0x00000000);
    ModMgrConfigPSRValue(50, 0x00000000);
    ModMgrConfigPSRValue(51, 0x00020000);
    ModMgrConfigPSRValue(52, 0x00000000);
    ModMgrConfigPSRValue(53, 0x00000000);
    ModMgrConfigPSRValue(54, 0x00000000);
    ModMgrConfigPSRValue(55, 0x00000000);
    ModMgrConfigPSRValue(56, 0x00000000);
    ModMgrConfigPSRValue(57, 0x00000000);
    ModMgrConfigPSRValue(58, 0x00000000);
    ModMgrConfigPSRValue(59, 0x00000000);
    ModMgrConfigPSRValue(60, 0x00000000);
    ModMgrConfigPSRValue(61, 0x00000000);

    return (OS_OK);
}

/**
 * bdromappMapLanguageCode -- Map a language code to the corresponding language code
 *                            defined in ISO 639-2.
 *
 * @param
 *      ucLangCode -- language code
 *
 * @retval
 *      corresponding language code defined in ISO 639-2, coded according to ISO 646
 */
static int bdromappMapLanguageCode(UCHAR ucLangCode)
{
    int iso_langcode;

    switch (ucLangCode)
    {
    case 1:
        iso_langcode = 0x00656e67; /* English */
        break;
    case 2:
        iso_langcode = 0x00667261; /* French */
        break;
    case 3:
        iso_langcode = 0x00737061; /* Spanish */
        break;
    case 4:
        iso_langcode = 0x00697461; /* Italian */
        break;
    case 5:
        iso_langcode = 0x00676572; /* German */
        break;
    case 6:
        iso_langcode = 0x00647574; /* Dutch */
        break;
    case 7:
        iso_langcode = 0x00706f72; /* Portuguese */
        break;
    case 8:
        iso_langcode = 0x00636869; /* Chinese */
        break;
    case 9:
        iso_langcode = 0x006a706e; /* Japanese */
        break;
    case 10:
        iso_langcode = 0x00746861; /* Thai */
        break;
    case 11:
        iso_langcode = 0x00737665; /* Swedish */
        break;
    case 12:
        iso_langcode = 0x006e6f72; /* Norwegain */
        break;
    case 13:
        iso_langcode = 0x0064616e; /* Danish */
        break;
    case 14:
        iso_langcode = 0x0066696e; /* Finnish */
        break;
    case 15:
        iso_langcode = 0x00686562; /* Hebrew */
        break;
    case 17:
        iso_langcode = 0x00616172; /* Afar */
        break;
    case 18:
        iso_langcode = 0x0061626b; /* Abkhazian */
        break;
    case 19:
        iso_langcode = 0x00616672; /* Afrikaans */
        break;
    case 20:
        iso_langcode = 0x00617261; /* Arabic */
        break;
    case 22:
        iso_langcode = 0x0061736d; /* Assamese */
        break;
    case 23:
        iso_langcode = 0x0061796d; /* Aymara */
        break;
    case 24:
        iso_langcode = 0x00617a65; /* Azebraijani */
        break;
    case 25:
        iso_langcode = 0x0062616b; /* Bashkir */
        break;
    case 26:
        iso_langcode = 0x0062656c; /* Byelorussian */
        break;
    case 27:
        iso_langcode = 0x0062756c; /* Bulgarian */
        break;
    case 28:
        iso_langcode = 0x00626968; /* Bihari */
        break;
    case 29:
        iso_langcode = 0x00626973; /* Bislama */
        break;
    case 30:
        iso_langcode = 0x0062656e; /* Bengali */
        break;
    case 31:
        iso_langcode = 0x00746962; /* Tibetan */
        break;
    case 32:
        iso_langcode = 0x00627265; /* Breton */
        break;
    case 33:
        iso_langcode = 0x00636174; /* Catalan */
        break;
    case 34:
        iso_langcode = 0x00636f73; /* Corsican */
        break;
    case 35:
        iso_langcode = 0x00636573; /* Czech */
        break;
    case 36:
        iso_langcode = 0x0063796d; /* Welsh */
        break;
    case 38:
        iso_langcode = 0x00656c6c; /* Greek */
        break;
    case 39:
        iso_langcode = 0x0065706f; /* Esperanto */
        break;
    case 40:
        iso_langcode = 0x00657374; /* Estonian */
        break;
    case 41:
        iso_langcode = 0x00657573; /* Basque */
        break;
    case 42:
        iso_langcode = 0x00666173; /* Persian */
        break;
    case 43:
        iso_langcode = 0x0066696a; /* Fiji */
        break;
    case 44:
        iso_langcode = 0x0066616f; /* Faeroese */
        break;
    case 45:
        iso_langcode = 0x00667279; /* Frisian */
        break;
    case 46:
        iso_langcode = 0x00676169; /* Irish */
        break;
    case 47:
        iso_langcode = 0x00676165; /* Scots Gaelic */
        break;
    case 48:
        iso_langcode = 0x00676c67; /* Gallegan */
        break;
    case 49:
        iso_langcode = 0x0067726e; /* Guarani */
        break;
    case 50:
        iso_langcode = 0x0067756a; /* Gujarati */
        break;
    case 51:
        iso_langcode = 0x00686175; /* Hausa */
        break;
    case 52:
        iso_langcode = 0x0068696e; /* Hindi */
        break;
    case 54:
        iso_langcode = 0x0068756e; /* Hungarian */
        break;
    case 55:
        iso_langcode = 0x00687965; /* Armenian */
        break;
    case 56:
        iso_langcode = 0x00696e61; /* Interlingua */
        break;
    case 57:
        iso_langcode = 0x00696e65; /* Interlingue */
        break;
    case 58:
        iso_langcode = 0x0069706b; /* Inupiak */
        break;
    case 59:
        iso_langcode = 0x00696e64; /* Indonesian */
        break;
    case 60:
        iso_langcode = 0x00696365; /* Icelandic */
        break;
    case 61:
        iso_langcode = 0x00796964; /* Yiddish */
        break;
    case 62:
        iso_langcode = 0x006a6177; /* Javanese */
        break;
    case 63:
        iso_langcode = 0x006b6174; /* Georgian */
        break;
    case 64:
        iso_langcode = 0x006b617a; /* Kazakh */
        break;
    case 65:
        iso_langcode = 0x006b616c; /* Greenlandic */
        break;
    case 67:
        iso_langcode = 0x006b616e; /* Kannada */
        break;
    case 68:
        iso_langcode = 0x006b6f72; /* Korean */
        break;
    case 69:
        iso_langcode = 0x006b6173; /* Kashmiri */
        break;
    case 70:
        iso_langcode = 0x006b7572; /* Kurdish */
        break;
    case 71:
        iso_langcode = 0x006b7972; /* Kirghiz */
        break;
    case 72:
        iso_langcode = 0x006c6174; /* Latin */
        break;
    case 73:
        iso_langcode = 0x006c696e; /* Lingala */
        break;
    case 74:
        iso_langcode = 0x006c616f; /* Lao */
        break;
    case 75:
        iso_langcode = 0x006c6974; /* Lithuanian */
        break;
    case 76:
        iso_langcode = 0x006c6176; /* Latvian */
        break;
    case 77:
        iso_langcode = 0x006d6c67; /* Malagasy */
        break;
    case 78:
        iso_langcode = 0x006d616f; /* Maori */
        break;
    case 79:
        iso_langcode = 0x006d616b; /* Macedonian */
        break;
    case 80:
        iso_langcode = 0x006d616c; /* Malayalam */
        break;
    case 81:
        iso_langcode = 0x006d6f6e; /* Mongolian */
        break;
    case 82:
        iso_langcode = 0x006d6f6c; /* Moldavian */
        break;
    case 83:
        iso_langcode = 0x006d6172; /* Marathi */
        break;
    case 84:
        iso_langcode = 0x006d6179; /* Malay */
        break;
    case 85:
        iso_langcode = 0x006d6c74; /* Maltese */
        break;
    case 86:
        iso_langcode = 0x006d7961; /* Burmese */
        break;
    case 87:
        iso_langcode = 0x006e6175; /* Nauru */
        break;
    case 88:
        iso_langcode = 0x006e6570; /* Nepali */
        break;
    case 90:
        iso_langcode = 0x006f726d; /* Oromo */
        break;
    case 91:
        iso_langcode = 0x006f7269; /* Oriya */
        break;
    case 92:
        iso_langcode = 0x0070616e; /* Panjabi */
        break;
    case 93:
        iso_langcode = 0x00706f6c; /* Polish */
        break;
    case 94:
        iso_langcode = 0x00707573; /* Pashto */
        break;
    case 95:
        iso_langcode = 0x00706f72; /* Potuguese */
        break;
    case 96:
        iso_langcode = 0x00717565; /* Quechua */
        break;
    case 97:
        iso_langcode = 0x00726f68; /* Rhaeto-Romance */
        break;
    case 99:
        iso_langcode = 0x00726f6e; /* Romanian */
        break;
    case 100:
        iso_langcode = 0x00727573; /* Russian */
        break;
    case 101:
        iso_langcode = 0x006b696e; /* Kinyarwanda */
        break;
    case 102:
        iso_langcode = 0x0073616e; /* Sanskrit */
        break;
    case 103:
        iso_langcode = 0x00736e64; /* Sindhi */
        break;
    case 104:
        iso_langcode = 0x00736167; /* Sango */
        break;
    case 105:
        iso_langcode = 0x00736372; /* Serbo-Croatian */
        break;
    case 106:
        iso_langcode = 0x0073696e; /* Singhalese */
        break;
    case 107:
        iso_langcode = 0x00736c6b; /* Slovak */
        break;
    case 108:
        iso_langcode = 0x00736c6b; /* Slovenian */
        break;
    case 109:
        iso_langcode = 0x00736d6f; /* Samoan */
        break;
    case 110:
        iso_langcode = 0x00736e61; /* Shona */
        break;
    case 111:
        iso_langcode = 0x00736f6d; /* Somali */
        break;
    case 112:
        iso_langcode = 0x00737169; /* Albanian */
        break;
    case 114:
        iso_langcode = 0x00737377; /* Siswant */
        break;
    case 116:
        iso_langcode = 0x0073756e; /* Sudanese */
        break;
    case 117:
        iso_langcode = 0x00737761; /* Swahili */
        break;
    case 118:
        iso_langcode = 0x0074616d; /* Tamil */
        break;
    case 119:
        iso_langcode = 0x0074656c; /* Telugu */
        break;
    case 120:
        iso_langcode = 0x0074676b; /* Tajik */
        break;
    case 121:
        iso_langcode = 0x00746972; /* Tigrinya */
        break;
    case 122:
        iso_langcode = 0x0074756b; /* Turkmen */
        break;
    case 123:
        iso_langcode = 0x0074676c; /* Tagalog */
        break;
    case 125:
        iso_langcode = 0x00746f67; /* Tonga */
        break;
    case 126:
        iso_langcode = 0x00747572; /* Turkish */
        break;
    case 127:
        iso_langcode = 0x0074736f; /* Tsonga */
        break;
    case 128:
        iso_langcode = 0x00746174; /* Tatar */
        break;
    case 129:
        iso_langcode = 0x00747769; /* Twi */
        break;
    case 130:
        iso_langcode = 0x00756b72; /* Ukrainian */
        break;
    case 131:
        iso_langcode = 0x00757264; /* Urdu */
        break;
    case 132:
        iso_langcode = 0x00757a62; /* Uzbek */
        break;
    case 133:
        iso_langcode = 0x00766965; /* Vietnamese */
        break;
    case 134:
        iso_langcode = 0x00766f; /* Volapuk */
        break;
    case 135:
        iso_langcode = 0x00776f6c; /* Wolof */
        break;
    case 136:
        iso_langcode = 0x0078686f; /* Xhosa */
        break;
    case 137:
        iso_langcode = 0x00796f72; /* Yoruba */
        break;
    case 138:
        iso_langcode = 0x007a756c; /* Zulu */
        break;
    default:
        iso_langcode = 0xffffffff;
        break;
    }

    return (iso_langcode);
}

⌨️ 快捷键说明

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