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

📄 ifowriter.cc

📁 Linux下比较早的基于命令行的DVD播放器
💻 CC
📖 第 1 页 / 共 2 页
字号:
//// Copyright (c) 2003 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//------------------------------------------------------------------------------#include "IFOWriter.h"//------------------------------------------------------------------------------using ifodump::IFOWriter;using dvd::DVDDump;//------------------------------------------------------------------------------// Hidden methods (for GCC <3.0)//------------------------------------------------------------------------------inline void IFOWriter::write(uint8_t x){    FileWriter::write(x);}inline void IFOWriter::write(uint16_t x){    FileWriter::write(x);}inline void IFOWriter::write(uint32_t x){    FileWriter::write(x);}inline void IFOWriter::write(uint64_t x){    FileWriter::write(x);}inline void IFOWriter::write(const void* buffer, size_t length){    FileWriter::write(buffer, length);}inline void IFOWriter::write(const vm_cmd_t& cmd){    Writer<IFOWriter>::write(cmd);}inline void IFOWriter::write(const user_ops_t& userOperations){    Writer<IFOWriter>::write(userOperations);}//------------------------------------------------------------------------------//------------------------------------------------------------------------------void IFOWriter::write(const dvd_time_t& t){    write(t.hour);    write(t.minute);    write(t.second);    write(t.frame_u);}//------------------------------------------------------------------------------void IFOWriter::write(const video_attr_t& attr){    write(&attr, sizeof(video_attr_t));}//------------------------------------------------------------------------------void IFOWriter::write(const audio_attr_t& attr){    write(&attr, 2);    write(attr.lang_code);    write(attr.lang_extension);    write(attr.code_extension);    write(attr.unknown3);    write(&attr.app_info, 1);}//------------------------------------------------------------------------------void IFOWriter::write(const subp_attr_t& attr){    write(attr.type);    write(attr.zero1);    write(attr.lang_code);    write(attr.lang_extension);    write(attr.zero2);}//------------------------------------------------------------------------------void IFOWriter::write(const pgc_command_tbl_t& commandTable){    write(commandTable.zero_1);    writeArray(commandTable.nr_of_pre, commandTable.pre_cmds);    writeArray(commandTable.nr_of_post, commandTable.post_cmds);    writeArray(commandTable.nr_of_cell, commandTable.cell_cmds);}//------------------------------------------------------------------------------void IFOWriter::write(const cell_playback_t& cellPlayback){    write(&cellPlayback, 2);    write(cellPlayback.still_time);    write(cellPlayback.cell_cmd_nr);    write(cellPlayback.playback_time);    write(cellPlayback.first_sector);    write(cellPlayback.first_ilvu_end_sector);    write(cellPlayback.last_vobu_start_sector);    write(cellPlayback.last_sector);}//------------------------------------------------------------------------------void IFOWriter::write(const cell_position_t& cellPosition){    write(cellPosition.vob_id_nr);    write(cellPosition.zero_1);    write(cellPosition.cell_nr);}//------------------------------------------------------------------------------void IFOWriter::write(const pgc_t& pgc){    write(pgc.zero_1);    write(pgc.playback_time);    write(pgc.prohibited_ops);    writeFixedArray(sizeof(pgc.audio_control), pgc.audio_control);    writeFixedArray(sizeof(pgc.subp_control), pgc.subp_control);    write(pgc.next_pgc_nr);    write(pgc.prev_pgc_nr);    write(pgc.goup_pgc_nr);    write(pgc.still_time);    write(pgc.pg_playback_mode);    writeFixedArray(sizeof(pgc.palette), pgc.palette);    write(pgc.command_tbl_offset);    write(pgc.program_map_offset);    write(pgc.cell_playback_offset);    write(pgc.cell_position_offset);    writePointer(pgc.command_tbl);    writeArray(pgc.nr_of_programs, pgc.program_map);    writeArray(pgc.nr_of_cells, pgc.cell_playback);    writeArray(pgc.nr_of_cells, pgc.cell_position);}//------------------------------------------------------------------------------void IFOWriter::write(const pgci_srp_t& pgciSRP){    write(pgciSRP.entry_id);    write((&pgciSRP.entry_id)+1, 1);    write(pgciSRP.ptl_id_mask);    write(pgciSRP.pgc_start_byte);    writePointer(pgciSRP.pgc);}//------------------------------------------------------------------------------void IFOWriter::write(const pgcit_t& pgci){    write(pgci.zero_1);    write(pgci.last_byte);    writeArray(pgci.nr_of_pgci_srp, pgci.pgci_srp);}//------------------------------------------------------------------------------void IFOWriter::write(const pgci_lu_t& pgciLanguageUnit){    write(pgciLanguageUnit.lang_code);    write(pgciLanguageUnit.lang_extension);    write(pgciLanguageUnit.exists);    write(pgciLanguageUnit.lang_start_byte);    writePointer(pgciLanguageUnit.pgcit);}//------------------------------------------------------------------------------void IFOWriter::write(const pgci_ut_t& pgciUnitTable){    write(pgciUnitTable.zero_1);    write(pgciUnitTable.last_byte);    writeArray(pgciUnitTable.nr_of_lus, pgciUnitTable.lu);}//------------------------------------------------------------------------------void IFOWriter::write(const cell_adr_t& cellAddress){    write(cellAddress.vob_id);    write(cellAddress.cell_id);    write(cellAddress.zero_1);    write(cellAddress.start_sector);    write(cellAddress.last_sector);}//------------------------------------------------------------------------------void IFOWriter::write(const c_adt_t& cellAddressTable){    write(cellAddressTable.nr_of_vobs);    write(cellAddressTable.zero_1);    writeLastArray(cellAddressTable.last_byte,                   cellAddressTable.cell_adr_table);}//------------------------------------------------------------------------------void IFOWriter::write(const vobu_admap_t& vobuAddressMap){    writeLastArray(vobuAddressMap.last_byte,                   vobuAddressMap.vobu_start_sectors);}//------------------------------------------------------------------------------void IFOWriter::write(const vmgi_mat_t& vmgiMat){    write(vmgiMat.vmg_identifier, sizeof(vmgiMat.vmg_identifier));    write(vmgiMat.vmg_last_sector);    write(vmgiMat.zero_1, sizeof(vmgiMat.zero_1));    write(vmgiMat.vmgi_last_sector);    write(vmgiMat.zero_2);    write(vmgiMat.specification_version);    write(vmgiMat.vmg_category);    write(vmgiMat.vmg_nr_of_volumes);    write(vmgiMat.vmg_this_volume_nr);    write(vmgiMat.disc_side);    write(vmgiMat.zero_3, sizeof(vmgiMat.zero_3));    write(vmgiMat.vmg_nr_of_title_sets);    write(vmgiMat.provider_identifier, sizeof(vmgiMat.provider_identifier));    write(vmgiMat.vmg_pos_code);    write(vmgiMat.zero_4, sizeof(vmgiMat.zero_4));    write(vmgiMat.vmgi_last_byte);    write(vmgiMat.first_play_pgc);    write(vmgiMat.zero_5, sizeof(vmgiMat.zero_5));    write(vmgiMat.vmgm_vobs);    write(vmgiMat.tt_srpt);    write(vmgiMat.vmgm_pgci_ut);    write(vmgiMat.ptl_mait);    write(vmgiMat.vts_atrt);    write(vmgiMat.txtdt_mgi);    write(vmgiMat.vmgm_c_adt);

⌨️ 快捷键说明

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