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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? processor.h

?? Linux下比較早的基于命令行的DVD播放器
?? H
字號(hào):
//// Copyright (c) 2002 by Istv醤 V醨adi//// This file is part of dxr3Player, a DVD player written specifically // for the DXR3 (aka Hollywood+) decoder card.// 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#ifndef DXR3PLAYER_DVD_VM_PROCESSOR_H#define DXR3PLAYER_DVD_VM_PROCESSOR_H//------------------------------------------------------------------------------#include "dvd/vm/State.h"#include "dvd/vm/Instruction.h"#include "dvd/vm/Scheduler.h"//------------------------------------------------------------------------------namespace dvd { namespace vm {class TargetPosition;//------------------------------------------------------------------------------/** * The Virtual Machine processor. */class Processor{private:    /**     * Evaluate the given comparison     */    static bool evaluateComparison(Instruction::cmpOp_t cmpOp,                                   unsigned value1, unsigned value2);private:    /**     * The state of the virtual machine.     */    State state;    /**     * The instruction scheduler.     */    Scheduler scheduler;    /**     * The number of branches since the last query of this value.     */    unsigned numberOfBranches;public:    /**     * Construct the processor.     */    Processor(DVD* dvd);    /**     * Construct a processor with the given initial state.     */    Processor(const State& state);    /**     * Copy the given processor.     */    Processor(const Processor& other);    /**     * Get the current position.     */    const Position& getPosition() const;    /**     * Get the System Parameter Register file.     */    const SPRM& getSPRM() const;    /**     * Get the state of the processor.     */    const State& getState() const;    /**     * Set the processor's state to the given state.     */    void setState(const State& s);    /**     * Get the physical audio stream number based on the current     * position and register contents. If an audio language is forced,     * a suitable stream is searched for. If not forced or found, the     * ASTN register's value will be used to find a stream.     *     * @param logicalStream will contain the logical stream number for     * the stream found.     */    unsigned getAudioStreamNumber(unsigned& logicalStream) const;    /**     * Get the physical audio stream number (see getAudioStreamNumber(unsigned)).     */    unsigned getAudioStreamNumber() const;    /**     * Get the physical SPU stream number based on the current     * position and register contents. If an SPU language is forced,     * a suitable stream is searched for. If not forced or found, the     * SPSTN register's value will be used to find a stream.     *     * @param forcedOnly will be set to indicate that only forced SPUs     * are to be shown.     */    unsigned getSPUStreamNumber(aspectRatio_t aspectRatio,                                displayFormat_t displayFormat,                                bool& forcedOnly) const;    /**     * Reset the processor.     */    void reset();    /**     * Go to the first play PGC and start that.     */    void executeFirstPlayPGC();    /**     * Set the sector number.     */    void setSectorNumber(size_t sectorNumber);    /**     * Set the highlighted button number.     */    void setHighlightedButtonNumber(size_t buttonNo);    /**     * Finish the current cell and go to the next one.     *     * @return if there was a next cell. If not, the processor jumps     * to the first play PGC     */    bool nextCell(unsigned& stillTime);    /**     * Go to the previous cell. Cell commands are not played, neither     * are PGC post and pre commands.     *     * @return if there was a previous cell. If not, the position     * remains where it was     */    bool previousCell();    /**     * Enter the next program.     *     * @return if there was a next program and it was valid.     */    bool nextProgram();    /**     * Enter the previous program.     *     * @return if there was a previous program and it was valid.     */    bool previousProgram();    /**     * Repeat the current program.     *     * @return if the current program could be repeated     */    bool repeatProgram();    /**     * Enter the menu with the given ID.     *     * @param forced if true, and the current VTS does not have a menu     *               with the given ID, it will be searched for     *     * @return if the menu exists and it was entered     */    bool enterMenu(unsigned menuID, bool forced = false);    /**     * Go to the next angle.     *     * @return if there was a next angle and it was entered     */    bool nextAngle();    /**     * "Select" the next audio stream.     *     * @param reversed if true, the previous ("next in reversed     * order") audio stream will be selected     *     * @return if there was a next stream     */    bool nextAudioStream(bool reversed);    /**     * "Select" the next subpicture stream.     *     * @param reversed if true, the previous ("next in reversed     * order") subpicture stream will be selected     *     * @return if there was a next stream     */    bool nextSPUStream(bool reversed);    /**     * Execute the given instructions and any others that follow from     * them.     *     * @return if there was some jump during the execution of the     * instruction set.     */    void execute(const Instruction* instruction, size_t length = 1);    /**     * Clear the branch counter.     */    void clearBranches();    /**     * Determine if there have been any branches since queried last     * time.     */    bool hasBranched();private:    /**     * Map the given logical audio stream number to the corresponding     * physical stream number, and check if it matches the given     * language code. If found, set <tt>candidate</tt> to the physical     * stream number, unless it is already set. If it matches the     *  language code, return it, otherwise PGC::INVALID_STREAM_NUMBER.     *      * @param languageCode the 2-byte language code. If 0xffff, the     * language will fit     * @param ifo this is passed to avoid looking it up several times     * @param pgc this is passed to avoid looking it up several times     */    unsigned mapAudioStreamNumber(unsigned streamNo, unsigned languageCode,                                  const IFO* ifo, PGC pgc,                                  unsigned& candidate) const;    /**     * Map the given logical SPU stream number to the corresponding     * physical stream number, and check if it matches the given     * language code. If found, set <tt>candidate</tt> to the physical     * stream number, unless it is already set. If it matches the     * language code, return it, otherwise PGC::INVALID_STREAM_NUMBER.     *      * @param ifo this is passed to avoid looking it up several times     * @param pgc this is passed to avoid looking it up several times     * @param languageCode the 2-byte language code. If 0xffff, the     * language will fit     */    unsigned mapSPUStreamNumber(unsigned streamNo,                                 aspectRatio_t aspectRatio,                                displayFormat_t displayFormat,                                unsigned languageCode,                                const IFO* ifo, PGC pgc,                                unsigned& candidate) const;        /**     * Set the position to the given one.     */    void setPosition(const Position& position);    /**     * Process the given instruction and determine what to do next.     */    void process(const Instruction* instruction);    /**     * Execute the given special instruction     */    void executeSpecial(const Instruction* instruction);    /**     * Execute the given branch (link, jump or call) instruction     */    void executeBranch(const Instruction* instruction);    /**     * Execute the given link instruction.     */    void executeLink(const Instruction* instruction);    /**     * Execute the given link instruction without checking the conditions.     */    void executeLinkUnconditionally(const Instruction* instruction);    /**     * Link to the previous cell, i.e. set up the given target     * position to go to the previous cell, if any     *     * This has its own method, because it is used both by     * executeLinkSubset() and previousCell().     *     * @return if there was a previous cell, i.e. either one in the     * current PGC, or in a previous PGC      */    bool linkPreviousCell(TargetPosition& targetPosition);    /**     * Execute the given instruction if it is a link subset     * instruction.     */    void executeLinkSubset(const Instruction* instruction);    /**     * Execute the given jump or call instruction.     */    void executeJumpCall(const Instruction* instruction);    /**     * Execute a JumpSS or CallSS instruction.     */    void executeJumpCallSS(const Instruction* instruction,                            bool isJump);    /**     * Execute a JumpSS instruction.     */    void executeJumpSS(const Instruction* instruction);    /**     * Execute a CallSS instruction.     */    void executeCallSS(const Instruction* instruction);    /**     * Execute the given system register setting instruction     */    void executeSetSysReg(const Instruction* instruction);    /**     * Execute the given set instruction     */    void executeSet(const Instruction* instruction);    /**     * Execute the set operation in the instruction     */    bool executeSet(const Instruction* instruction,                     GPR& destRegister,                    unsigned sourceValue, Register* sourceRegister);    /**     * Execute the given set & conditional link instruction     */    void executeSetCLnk(const Instruction* instruction);    /**     * Execute the given set instruction, which is one combined with a     * (conditional) link instruction.     */    bool executeSetWithLink(const Instruction* instruction);    /**     * Execute the given conditional set & condition link instruction     */    void executeCSetCLnk(const Instruction* instruction);    /**     * Execute the given compare & set & link instruction     */    void executeCmpSetLnk(const Instruction* instruction);    /**     * Evaluate the condition version 1. This takes register 1 from     * operand 1 and register 2/constant from operand 2.     */    bool evaluateConditionV1(const Instruction* instruction) const;    /**     * Evaluate the condition version 2. This takes register 1 and 2 from     * operand 3.     */    bool evaluateConditionV2(const Instruction* instruction) const;    /**     * Evaluate the condition version 2. This takes register 1 form     * operand 1 and register / value 2 from operand 3.     */    bool evaluateConditionV3(const Instruction* instruction) const;    /**     * Evaluate the condition version 2. This takes register 1 form     * the instruction (from the CMD field) and register / value 2 from operand 2.     */    bool evaluateConditionV4(const Instruction* instruction) const;    /**     * Evaluate the condition of a special instruction.     */    bool evaluateSpecialCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a link instruction     */    bool evaluateLinkCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a jump/call instruction     */    bool evaluateJumpCallCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a set system register instruction     */    bool evaluateSetSysRegCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a set instruction     */    bool evaluateSetCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a set with a conditional link instruction     */    bool evaluateSetCLnkCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a conditional set with a conditional     * link instruction     */    bool evaluateCSetCLnkCondition(const Instruction* instruction) const;    /**     * Evaluate the condition of a compare, set and link instruction.     */    bool evaluateCmpSetLnkCondition(const Instruction* instruction) const;    friend class Scheduler;};//------------------------------------------------------------------------------// Inline definitions//------------------------------------------------------------------------------inline Processor::Processor(const State& state) :    state(state),    scheduler(*this),    numberOfBranches(0){}//------------------------------------------------------------------------------inline Processor::Processor(const Processor& other) :    state(other.state),    scheduler(*this),    numberOfBranches(0){}//------------------------------------------------------------------------------inline unsigned Processor::getAudioStreamNumber() const{    unsigned logicalStream;    return getAudioStreamNumber(logicalStream);}//------------------------------------------------------------------------------inline const Position& Processor::getPosition() const{    return state.getPosition();}//------------------------------------------------------------------------------inline const SPRM& Processor::getSPRM() const{    return state.getSPRM();}//------------------------------------------------------------------------------inline const State& Processor::getState() const{    return state;}//------------------------------------------------------------------------------inline void Processor::setState(const State& s){    state = s;}//------------------------------------------------------------------------------inline void Processor::setSectorNumber(size_t sectorNumber){    state.setSectorNumber(sectorNumber);}//------------------------------------------------------------------------------inline void Processor::setHighlightedButtonNumber(size_t buttonNo){    state.setHighlightedButtonNumber(buttonNo);}//------------------------------------------------------------------------------} /* namespace dvd::vm */ } /* namespace dvd *///------------------------------------------------------------------------------#endif // DXR3PLAYER_DVD_VM_PROCESSOR_H// Local variables:// mode: c++// End:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜精品久久久久久孕妇| 天天影视色香欲综合网老头| 国产精品白丝jk白祙喷水网站| 日韩精品中文字幕一区二区三区| 日韩中文字幕av电影| 欧美精品乱码久久久久久按摩| 日本欧美一区二区在线观看| 日韩欧美亚洲国产另类| 国产最新精品免费| 国产精品美女视频| 91精品1区2区| 美女爽到高潮91| 久久久久久久久伊人| 成人黄色大片在线观看| 亚洲午夜在线电影| 日韩欧美视频在线| 国产91清纯白嫩初高中在线观看| 中文字幕在线视频一区| 在线观看视频一区二区欧美日韩| 三级精品在线观看| 久久久久久久综合| 欧美最新大片在线看 | 国产精品欧美一区喷水| 欧美偷拍一区二区| 国内外成人在线| 亚洲精品精品亚洲| 日韩一区二区三区免费看 | 日韩综合在线视频| 国产欧美日韩中文久久| 在线一区二区三区做爰视频网站| 美国十次了思思久久精品导航| 久久久不卡网国产精品一区| 色88888久久久久久影院野外| 三级欧美韩日大片在线看| 欧美韩国日本不卡| 欧美一区二区三区免费视频| 丁香六月综合激情| 日本人妖一区二区| 亚洲欧美另类小说视频| 久久先锋影音av| 欧美少妇xxx| 成人免费视频一区二区| 丝袜美腿高跟呻吟高潮一区| 国产精品国产自产拍高清av | 在线免费视频一区二区| 欧美一区二区在线看| 久久久久88色偷偷免费 | 99久久久精品免费观看国产蜜| 777亚洲妇女| 久久综合狠狠综合久久综合88| 老司机午夜精品99久久| 国产精品久久久久久久浪潮网站| 制服视频三区第一页精品| 成人午夜看片网址| 另类小说综合欧美亚洲| 亚洲一区二区四区蜜桃| 亚洲欧美综合在线精品| 久久精品在线观看| 欧美本精品男人aⅴ天堂| 在线观看精品一区| 成人国产免费视频| 国产精品一区二区三区四区| 视频一区在线播放| 亚洲国产精品久久不卡毛片 | 一本大道久久a久久综合婷婷 | 成人国产一区二区三区精品| 极品美女销魂一区二区三区 | 在线看国产一区二区| 成人激情黄色小说| 成人综合在线观看| 国产成a人亚洲精| 国产成人亚洲综合a∨婷婷图片| 日本不卡一二三区黄网| 三级亚洲高清视频| 日本不卡的三区四区五区| 午夜精品久久一牛影视| 五月天久久比比资源色| 日韩有码一区二区三区| 五月天激情综合网| 日韩电影一区二区三区四区| 日韩成人精品在线观看| 日韩1区2区日韩1区2区| 奇米888四色在线精品| 久久精品国产亚洲a| 蜜臀精品一区二区三区在线观看| 麻豆视频一区二区| 激情六月婷婷久久| 国产精品996| 成人精品视频网站| 色综合久久久久综合体桃花网| 91麻豆福利精品推荐| 色94色欧美sute亚洲13| 欧美军同video69gay| 欧美tickle裸体挠脚心vk| 久久精品欧美一区二区三区麻豆| 亚洲国产激情av| 综合分类小说区另类春色亚洲小说欧美| 亚洲欧美一区二区三区孕妇| 亚洲一级二级在线| 蜜桃91丨九色丨蝌蚪91桃色| 国产麻豆日韩欧美久久| 成人晚上爱看视频| 日本丰满少妇一区二区三区| 91精品在线观看入口| 精品国产免费人成电影在线观看四季| 国产情人综合久久777777| 国产精品久久久久影院色老大 | 中文av一区特黄| 亚洲欧美日韩精品久久久久| 亚洲国产一区二区视频| 精品写真视频在线观看| 99久久精品国产精品久久| 欧美精品久久99久久在免费线| 久久日韩粉嫩一区二区三区| 亚洲免费观看高清完整版在线观看| 亚洲aaa精品| 成人午夜视频免费看| 欧洲一区二区av| 久久久久九九视频| 亚洲一区二区三区免费视频| 黑人巨大精品欧美黑白配亚洲| 一本色道久久综合亚洲aⅴ蜜桃| 日韩欧美一卡二卡| 亚洲国产精品视频| 亚洲视频免费观看| 成人免费在线播放视频| 日韩精品一级二级| 99久久99久久久精品齐齐| 日韩一级二级三级| 亚洲精品视频自拍| 国产精品亚洲成人| 欧美乱熟臀69xxxxxx| 18涩涩午夜精品.www| 精品一区二区三区视频 | 欧美激情在线观看视频免费| 香蕉成人啪国产精品视频综合网| 国产精品系列在线播放| 91精品在线麻豆| 一区二区免费在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲国产另类av| 欧美日韩成人激情| 久久精品亚洲乱码伦伦中文| 亚洲午夜激情网站| 久久精品欧美一区二区三区麻豆| 亚洲不卡一区二区三区| 本田岬高潮一区二区三区| 精品少妇一区二区三区日产乱码 | 午夜精品福利在线| 97精品视频在线观看自产线路二| 久久精品亚洲精品国产欧美kt∨ | 国产一区二区三区黄视频| 欧美日韩中文另类| 一区二区在线看| 91在线小视频| 国产精品美女久久福利网站| 国产九色sp调教91| 久久久久久免费毛片精品| 激情综合色丁香一区二区| 91精品国产综合久久福利| 一区二区成人在线观看| av成人老司机| 337p亚洲精品色噜噜噜| 91在线你懂得| 在线播放视频一区| 亚洲女同ⅹxx女同tv| jizz一区二区| 中文字幕精品一区二区精品绿巨人 | 一区二区免费视频| 国产精品一区二区在线看| 欧美一区二区三区四区在线观看 | 欧美精品一区二区在线播放| 亚洲观看高清完整版在线观看| 成人av资源站| 亚洲欧美日韩一区二区| k8久久久一区二区三区| 欧美韩日一区二区三区四区| 男女男精品网站| 久久人人97超碰com| 美国三级日本三级久久99| 在线播放91灌醉迷j高跟美女| 亚洲综合久久av| 欧美日韩一区二区在线视频| 亚洲精品国产无套在线观| 91视频在线观看| 婷婷亚洲久悠悠色悠在线播放| 91香蕉视频黄| 亚洲免费观看高清完整版在线| av毛片久久久久**hd| 亚洲一区免费视频| 欧美亚洲动漫另类| 亚洲国产精品久久久久秋霞影院| 成人免费视频一区二区| 一区二区三区欧美| 欧美色图一区二区三区| 天堂蜜桃91精品| 国产精品日日摸夜夜摸av| 成人av动漫网站| 一级女性全黄久久生活片免费| 国产精品一区二区久久精品爱涩|