1#![deny(unsafe_code)]
84#![warn(missing_debug_implementations)]
85
86pub mod ac3;
87pub mod disc;
88pub mod error;
89pub mod ifo;
90pub mod iso9660;
91pub mod lpcm;
92pub mod nav;
93pub mod source;
94pub mod spu;
95pub mod udf;
96pub mod uops;
97pub mod vm;
98pub mod vob;
99
100#[cfg(feature = "mkv-output")]
101pub mod mkv_writer;
102#[cfg(feature = "mkv-output")]
103pub mod pipeline;
104
105pub use ac3::{Ac3AudioCodingMode, Ac3BitstreamMode, Ac3Header, Ac3SampleRate, AC3_SYNC_WORD};
106pub use disc::{DvdDisc, DvdFile, DvdFileKind};
107pub use error::{Error, Result};
108pub use ifo::{
109 menu_existence, AudioApplicationMode, AudioAttributes, AudioCodingMode, AudioLanguageType,
110 AudioQuantizationDrc, CellAddrEntry, CellPlaybackInfo, CellPositionInfo, DvdChapter, DvdTitle,
111 DvdTitleEntry, FrameRate, McExtensionEntry, MenuAttributes, MenuType, NavCommand, PaletteEntry,
112 Pgc, PgcCommandTable, PgcTime, Pgci, PgciLu, PgciLuSrp, PgciSrp, PgciUt, PgciUtSrp, PtlMait,
113 Ptt, PttTitle, SubpictureAttributes, SubpictureCodingMode, SubpictureLanguageType,
114 TitleAttributes, TmapEntry, TtSrpt, VideoAspectRatio, VideoAttributes, VideoCodingMode,
115 VideoResolution, VideoStandard, VmgIfo, VmgPtlMait, VmgVtsAtrt, VmgVtsAtrtEntry, VobuAdmap,
116 VtsCAdt, VtsIfo, VtsPttSrpt, VtsTmap, VtsTmapti, VtsiMat, DVD_SECTOR, VMG_MAGIC, VTS_MAGIC,
117};
118pub use iso9660::{
119 DirectoryRecord, Iso9660Entry, Iso9660Volume, PathTableEntry, PrimaryVolumeDescriptor,
120 VolumeDescriptorType,
121};
122pub use lpcm::{
123 peel_lpcm_payload, LpcmHeader, LpcmQuantisation, LpcmSampleFrequency,
124 DVD_LPCM_MAX_BITRATE_KBPS, LPCM_HEADER_LEN,
125};
126pub use nav::{
127 CallSSTarget, CmpOp, JumpSSTarget, LinkSubset, NavInstruction, Operand, Register, SetOp,
128};
129pub use source::{parse_dvd_uri, DvdDiscSource, DvdUri};
130pub use spu::{
131 decode_rle_field, render_field, spdcsq_stm_to_ms, ycbcr_to_rgb, PixelRun, SpDcSq, SpuBitmap,
132 SpuCommand, SpuHeader, SubPictureUnit,
133};
134pub use udf::{
135 AdType, AnchorVolumeDescriptorPointer, DescriptorTag, ExtAd, Extent, FileEntry,
136 FileIdentifierDescriptor, FileSetDescriptor, IcbTag, LbAddr, LogicalVolumeDescriptor, LongAd,
137 PartitionDescriptor, ShortAd, TagId, UdfFile, UdfVolume,
138};
139pub use uops::{
140 title_type_uop_mask, UopIter, UopLevel, UopMask, UserOp, UOP_ANGLE_CHANGE,
141 UOP_AUDIO_STREAM_CHANGE, UOP_BACKWARD_SCAN, UOP_BIT_COUNT, UOP_BUTTON_SELECT_OR_ACTIVATE,
142 UOP_DEFINED_BITS, UOP_FORWARD_SCAN, UOP_GO_UP, UOP_KARAOKE_AUDIO_MIX_CHANGE,
143 UOP_MENU_CALL_ANGLE, UOP_MENU_CALL_AUDIO, UOP_MENU_CALL_PTT, UOP_MENU_CALL_ROOT,
144 UOP_MENU_CALL_SUBPICTURE, UOP_MENU_CALL_TITLE, UOP_NEXT_PG_SEARCH, UOP_PAUSE_ON,
145 UOP_PTT_PLAY_OR_SEARCH, UOP_RESUME, UOP_STILL_OFF, UOP_STOP, UOP_SUBPICTURE_STREAM_CHANGE,
146 UOP_TIME_OR_PTT_SEARCH, UOP_TIME_PLAY_OR_SEARCH, UOP_TITLE_PLAY, UOP_TOP_PG_OR_PREV_PG_SEARCH,
147 UOP_VIDEO_PRESENTATION_MODE_CHANGE,
148};
149pub use vm::{
150 AspectRatio, AudioCapabilities, AudioLanguageExt, AudioMixMode, AudioStreamSelector,
151 DisplayMode, LanguageCode, LinkAction, ParentalLevel, RegisterFile, ResumePoint,
152 SubpictureLanguageExt, SubpictureStreamView, VideoPreference, Vm, VmAction, GPRM_COUNT,
153 MAX_RSM_DEPTH, SPRM_AMXMD, SPRM_ANGLE, SPRM_AUDIO_CAPS, SPRM_AUDIO_STREAM, SPRM_CC_PLT,
154 SPRM_COUNT, SPRM_HL_BTNN, SPRM_MENU_LANG, SPRM_NV_PGCN, SPRM_NV_TIMER, SPRM_PARENTAL_LEVEL,
155 SPRM_PGCN, SPRM_PREF_AUDIO_LANG, SPRM_PREF_AUDIO_LANG_EXT, SPRM_PREF_SUBP_LANG,
156 SPRM_PREF_SUBP_LANG_EXT, SPRM_PTT, SPRM_REGION_MASK, SPRM_SUBPICTURE_STREAM, SPRM_TITLE,
157 SPRM_VIDEO_PREF, SPRM_VTS_TITLE,
158};
159pub use vob::{
160 demux_vobs, demux_vobs_path, looks_like_nav_pack, ButtonInfo, ButtonMode, CellId, DsiGi,
161 DsiPacket, DvdSubstream, ElementaryStream, HighlightInfo, HighlightStatus, NavPack, NsmlAgli,
162 NsmlAngleCell, PackHeader, PciPacket, PesPacket, SlColi, SlColiCell, SmlAgli, SmlAngleCell,
163 SmlAudioGap, SmlPbi, Synci, VobDemuxer, VobId, VobStreams, VobuSri,
164};
165
166#[cfg(feature = "registry")]
167pub use source::register;
168
169#[cfg(feature = "mkv-output")]
170pub use mkv_writer::{pgc_time_to_ns, write_title_to_mkv};
171#[cfg(feature = "mkv-output")]
172pub use pipeline::{convert_dvd_to_mkv, list_titles};
173
174#[cfg(feature = "registry")]
177oxideav_core::register!("dvd", source::register);