Skip to main content

mpeg2ts/es/
stream_type.rs

1use crate::{Error, Result};
2
3/// Elementary stream type.
4#[allow(missing_docs)]
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub enum StreamType {
7    Mpeg1Video = 0x01,
8    Mpeg2Video = 0x02,
9    Mpeg1Audio = 0x03,
10    Mpeg2HalvedSampleRateAudio = 0x04,
11    Mpeg2TabledData = 0x05,
12    Mpeg2PacketizedData = 0x06,
13    Mheg = 0x07,
14    DsmCc = 0x08,
15    AuxiliaryData09 = 0x09,
16    DsmCcMultiprotocolEncapsulation = 0x0A,
17    DsmCcUnMessages = 0x0B,
18    DsmCcStreamDescriptors = 0x0C,
19    DsmCcTabledData = 0x0D,
20    AuxiliaryData0e = 0x0E,
21    AdtsAac = 0x0F,
22    Mpeg4H263BasedVideo = 0x10,
23    Mpeg4LoasMultiFormatFramedAudio = 0x11,
24    Mpeg4FlexMux = 0x12,
25    Mpeg4FlexMuxInTable = 0x13,
26    DsmCcSynchronizedDownloadProtocol = 0x14,
27    PacketizedMetadata = 0x15,
28    SectionedMetadata = 0x16,
29    DsmCcDataCarouselMetadata = 0x17,
30    DsmCcObjectCarouselMetadata = 0x18,
31    SynchronizedDownloadProtocolMetadata = 0x19,
32    Ipmp = 0x1A,
33    H264 = 0x1B,
34    H265 = 0x24,
35    ChineseVideoStandard = 0x42,
36    PcmAudio = 0x80,
37    DolbyDigitalUpToSixChannelAudio = 0x81,
38    Dts6ChannelAudio = 0x82,
39    DolbyTrueHdLosslessAudio = 0x83,
40    DolbyDigitalPlusUpTo16ChannelAudio = 0x84,
41    Dts8ChannelAudio = 0x85,
42    Dts8ChannelLosslessAudio = 0x86,
43    DolbyDigitalPlusUpTo16ChannelAudioForAtsc = 0x87,
44    PresentationGraphicStream = 0x90,
45    AtscDsmCcNetworkResourcesTable = 0x91,
46    DigiCipher2Text = 0xC0,
47    DolbyDigitalUpToSixChannelAudioWithAes128Cbc = 0xC1,
48    DolbyDigitalPlusUpToSixChannelAudioWithAes128Cbc = 0xC2,
49    AdtsAacWithAes128Cbc = 0xCF,
50    UltraHdVideo = 0xD1,
51    H264WithAes128Cbc = 0xDB,
52    MicrosoftWindowsMediaVideo9 = 0xEA,
53}
54impl StreamType {
55    /// Makes a `StreamType` instance that associated with the given number.
56    pub fn from_u8(n: u8) -> Result<Self> {
57        Ok(match n {
58            0x01 => StreamType::Mpeg1Video,
59            0x02 => StreamType::Mpeg2Video,
60            0x03 => StreamType::Mpeg1Audio,
61            0x04 => StreamType::Mpeg2HalvedSampleRateAudio,
62            0x05 => StreamType::Mpeg2TabledData,
63            0x06 => StreamType::Mpeg2PacketizedData,
64            0x07 => StreamType::Mheg,
65            0x08 => StreamType::DsmCc,
66            0x09 => StreamType::AuxiliaryData09,
67            0x0A => StreamType::DsmCcMultiprotocolEncapsulation,
68            0x0B => StreamType::DsmCcUnMessages,
69            0x0C => StreamType::DsmCcStreamDescriptors,
70            0x0D => StreamType::DsmCcTabledData,
71            0x0E => StreamType::AuxiliaryData0e,
72            0x0F => StreamType::AdtsAac,
73            0x10 => StreamType::Mpeg4H263BasedVideo,
74            0x11 => StreamType::Mpeg4LoasMultiFormatFramedAudio,
75            0x12 => StreamType::Mpeg4FlexMux,
76            0x13 => StreamType::Mpeg4FlexMuxInTable,
77            0x14 => StreamType::DsmCcSynchronizedDownloadProtocol,
78            0x15 => StreamType::PacketizedMetadata,
79            0x16 => StreamType::SectionedMetadata,
80            0x17 => StreamType::DsmCcDataCarouselMetadata,
81            0x18 => StreamType::DsmCcObjectCarouselMetadata,
82            0x19 => StreamType::SynchronizedDownloadProtocolMetadata,
83            0x1A => StreamType::Ipmp,
84            0x1B => StreamType::H264,
85            0x24 => StreamType::H265,
86            0x42 => StreamType::ChineseVideoStandard,
87            0x80 => StreamType::PcmAudio,
88            0x81 => StreamType::DolbyDigitalUpToSixChannelAudio,
89            0x82 => StreamType::Dts6ChannelAudio,
90            0x83 => StreamType::DolbyTrueHdLosslessAudio,
91            0x84 => StreamType::DolbyDigitalPlusUpTo16ChannelAudio,
92            0x85 => StreamType::Dts8ChannelAudio,
93            0x86 => StreamType::Dts8ChannelLosslessAudio,
94            0x87 => StreamType::DolbyDigitalPlusUpTo16ChannelAudioForAtsc,
95            0x90 => StreamType::PresentationGraphicStream,
96            0x91 => StreamType::AtscDsmCcNetworkResourcesTable,
97            0xC0 => StreamType::DigiCipher2Text,
98            0xC1 => StreamType::DolbyDigitalUpToSixChannelAudioWithAes128Cbc,
99            0xC2 => StreamType::DolbyDigitalPlusUpToSixChannelAudioWithAes128Cbc,
100            0xCF => StreamType::AdtsAacWithAes128Cbc,
101            0xD1 => StreamType::UltraHdVideo,
102            0xDB => StreamType::H264WithAes128Cbc,
103            0xEA => StreamType::MicrosoftWindowsMediaVideo9,
104            _ => return Err(Error::invalid_input(format!("Unknown stream type: {n}"))),
105        })
106    }
107}