diff --git a/src/codec/id.rs b/src/codec/id.rs new file mode 100644 index 0000000..19e53a3 --- /dev/null +++ b/src/codec/id.rs @@ -0,0 +1,1330 @@ +use std::ffi::CStr; +use std::str::from_utf8_unchecked; + +use ffi::*; +use ::util::media; + +#[allow(non_camel_case_types)] +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Id { + None, + + // video codecs + MPEG1VIDEO, + MPEG2VIDEO, + MPEG2VIDEO_XVMC, + H261, + H263, + RV10, + RV20, + MJPEG, + MJPEGB, + LJPEG, + SP5X, + JPEGLS, + MPEG4, + RAWVIDEO, + MSMPEG4V1, + MSMPEG4V2, + MSMPEG4V3, + WMV1, + WMV2, + H263P, + H263I, + FLV1, + SVQ1, + SVQ3, + DVVIDEO, + HUFFYUV, + CYUV, + H264, + INDEO3, + VP3, + THEORA, + ASV1, + ASV2, + FFV1, + XM4, + VCR1, + CLJR, + MDEC, + ROQ, + INTERPLAY_VIDEO, + XAN_WC3, + XAN_WC4, + RPZA, + CINEPAK, + WS_VQA, + MSRLE, + MSVIDEO1, + IDCIN, + BPS8, + SMC, + FLIC, + TRUEMOTION1, + VMDVIDEO, + MSZH, + ZLIB, + QTRLE, + TSCC, + ULTI, + QDRAW, + VIXL, + QPEG, + PNG, + PPM, + PBM, + PGM, + PGMYUV, + PAM, + FFVHUFF, + RV30, + RV40, + VC1, + WMV3, + LOCO, + WNV1, + AASC, + INDEO2, + FRAPS, + TRUEMOTION2, + BMP, + CSCD, + MMVIDEO, + ZMBV, + AVS, + SMACKVIDEO, + NUV, + KMVC, + FLASHSV, + CAVS, + JPEG2000, + VMNC, + VP5, + VP6, + VP6F, + TARGA, + DSICINVIDEO, + TIERTEXSEQVIDEO, + TIFF, + GIF, + DXA, + DNXHD, + THP, + SGI, + C93, + BETHSOFTVID, + PTX, + TXD, + VP6A, + AMV, + VB, + PCX, + SUNRAST, + INDEO4, + INDEO5, + MIMIC, + RL2, + ESCAPE124, + DIRAC, + BFI, + CMV, + MOTIONPIXELS, + TGV, + TGQ, + TQI, + AURA, + AURA2, + V210X, + TMV, + V210, + DPX, + MAD, + FRWU, + FLASHSV2, + CDGRAPHICS, + R210, + ANM, + BINKVIDEO, + IFF_ILBM, + IFF_BYTERUN1, + KGV1, + YOP, + VP8, + PICTOR, + ANSI, + A64_MULTI, + A64_MULTI5, + R10K, + MXPEG, + LAGARITH, + PRORES, + JV, + DFA, + WMV3IMAGE, + VC1IMAGE, + UTVIDEO, + BMV_VIDEO, + VBLE, + DXTORY, + V410, + XWD, + CDXL, + XBM, + ZEROCODEC, + MSS1, + MSA1, + TSCC2, + MTS2, + CLLC, + MSS2, + VP9, + AIC, + ESCAPE130_DEPRECATED, + G2M_DEPRECATED, + WEBP_DEPRECATED, + HNM4_VIDEO, + HEVC_DEPRECATED, + FIC, + ALIAS_PIX, + BRENDER_PIX_DEPRECATED, + PAF_VIDEO_DEPRECATED, + EXR_DEPRECATED, + VP7_DEPRECATED, + SANM_DEPRECATED, + SGIRLE_DEPRECATED, + MVC1_DEPRECATED, + MVC2_DEPRECATED, + HQX, + + BRENDER_PIX, + Y41P, + ESCAPE130, + EXR, + AVRP, + + V012, + G2M, + AVUI, + AYUV, + TARGA_Y216, + V308, + V408, + YUV4, + SANM, + PAF_VIDEO, + AVRN, + CPIA, + XFACE, + SGIRLE, + MVC1, + MVC2, + SNOW, + WEBP, + SMVJPEG, + HEVC, + VP7, + APNG, + + // various PCM "codecs" + PCM_S16LE, + PCM_S16BE, + PCM_U16LE, + PCM_U16BE, + PCM_S8, + PCM_U8, + PCM_MULAW, + PCM_ALAW, + PCM_S32LE, + PCM_S32BE, + PCM_U32LE, + PCM_U32BE, + PCM_S24LE, + PCM_S24BE, + PCM_U24LE, + PCM_U24BE, + PCM_S24DAUD, + PCM_ZORK, + PCM_S16LE_PLANAR, + PCM_DVD, + PCM_F32BE, + PCM_F32LE, + PCM_F64BE, + PCM_F64LE, + PCM_BLURAY, + PCM_LXF, + S302M, + PCM_S8_PLANAR, + PCM_S24LE_PLANAR_DEPRECATED, + PCM_S32LE_PLANAR_DEPRECATED, + PCM_S24LE_PLANAR, + PCM_S32LE_PLANAR, + PCM_S16BE_PLANAR, + + // various ADPCM codecs + ADPCM_IMA_QT, + ADPCM_IMA_WAV, + ADPCM_IMA_DK3, + ADPCM_IMA_DK4, + ADPCM_IMA_WS, + ADPCM_IMA_SMJPEG, + ADPCM_MS, + ADPCM_4XM, + ADPCM_XA, + ADPCM_ADX, + ADPCM_EA, + ADPCM_G726, + ADPCM_CT, + ADPCM_SWF, + ADPCM_YAMAHA, + ADPCM_SBPRO_4, + ADPCM_SBPRO_3, + ADPCM_SBPRO_2, + ADPCM_THP, + ADPCM_IMA_AMV, + ADPCM_EA_R1, + ADPCM_EA_R3, + ADPCM_EA_R2, + ADPCM_IMA_EA_SEAD, + ADPCM_IMA_EA_EACS, + ADPCM_EA_XAS, + ADPCM_EA_MAXIS_XA, + ADPCM_IMA_ISS, + ADPCM_G722, + ADPCM_IMA_APC, + ADPCM_VIMA_DEPRECATED, + ADPCM_VIMA, + VIMA, + ADPCM_AFC, + ADPCM_IMA_OKI, + ADPCM_DTK, + ADPCM_IMA_RAD, + ADPCM_G726LE, + + // AMR + AMR_NB, + AMR_WB, + + // RealAudio codecs + RA_144, + RA_288, + + // various DPCM codecs + ROQ_DPCM, + INTERPLAY_DPCM, + XAN_DPCM, + SOL_DPCM, + + // audio codecs + MP2, + MP3, + AAC, + AC3, + DTS, + VORBIS, + DVAUDIO, + WMAV1, + WMAV2, + MACE3, + MACE6, + VMDAUDIO, + FLAC, + MP3ADU, + MP3ON4, + SHORTEN, + ALAC, + WESTWOOD_SND1, + GSM, + QDM2, + COOK, + TRUESPEECH, + TTA, + SMACKAUDIO, + QCELP, + WAVPACK, + DSICINAUDIO, + IMC, + MUSEPACK7, + MLP, + GSM_MS, + ATRAC3, + VOXWARE, + APE, + NELLYMOSER, + MUSEPACK8, + SPEEX, + WMAVOICE, + WMAPRO, + WMALOSSLESS, + ATRAC3P, + EAC3, + SIPR, + MP1, + TWINVQ, + TRUEHD, + MP4ALS, + ATRAC1, + BINKAUDIO_RDFT, + BINKAUDIO_DCT, + AAC_LATM, + QDMC, + CELT, + G723_1, + G729, + SVX_EXP8, + SVX_FIB8, + BMV_AUDIO, + RALF, + IAC, + ILBC, + OPUS_DEPRECATED, + COMFORT_NOISE, + TAK_DEPRECATED, + METASOUND, + PAF_AUDIO_DEPRECATED, + ON2AVC, + DSS_SP, + FFWAVESYNTH, + SONIC, + SONIC_LS, + PAF_AUDIO, + OPUS, + TAK, + EVRC, + SMV, + DSD_LSBF, + DSD_MSBF, + DSD_LSBF_PLANAR, + DSD_MSBF_PLANAR, + + // subtitle codecs + DVD_SUBTITLE, + DVB_SUBTITLE, + TEXT, + XSUB, + SSA, + MOV_TEXT, + HDMV_PGS_SUBTITLE, + DVB_TELETEXT, + SRT, + MICRODVD, + EIA_608, + JACOSUB, + SAMI, + REALTEXT, + STL, + SUBVIEWER1, + SUBVIEWER, + SUBRIP, + WEBVTT, + MPL2, + VPLAYER, + PJS, + ASS, + + // other specific kind of codecs (generally used for attachments) + TTF, + BINTEXT, + XBIN, + IDF, + OTF, + SMPTE_KLV, + DVD_NAV, + TIMED_ID3, + BIN_DATA, + + PROBE, + + MPEG2TS, + MPEG4SYSTEMS, + FFMETADATA, +} + +impl Id { + pub fn kind(&self) -> media::Type { + unsafe { + media::Type::from(avcodec_get_type((*self).into())) + } + } + + pub fn name(&self) -> &'static str { + unsafe { + from_utf8_unchecked(CStr::from_ptr(avcodec_get_name((*self).into())).to_bytes()) + } + } +} + +impl From for Id { + fn from(value: AVCodecID) -> Self { + match value { + AV_CODEC_ID_NONE => Id::None, + + /* video codecs */ + AV_CODEC_ID_MPEG1VIDEO => Id::MPEG1VIDEO, + AV_CODEC_ID_MPEG2VIDEO => Id::MPEG2VIDEO, + AV_CODEC_ID_MPEG2VIDEO_XVMC => Id::MPEG2VIDEO_XVMC, + AV_CODEC_ID_H261 => Id::H261, + AV_CODEC_ID_H263 => Id::H263, + AV_CODEC_ID_RV10 => Id::RV10, + AV_CODEC_ID_RV20 => Id::RV20, + AV_CODEC_ID_MJPEG => Id::MJPEG, + AV_CODEC_ID_MJPEGB => Id::MJPEGB, + AV_CODEC_ID_LJPEG => Id::LJPEG, + AV_CODEC_ID_SP5X => Id::SP5X, + AV_CODEC_ID_JPEGLS => Id::JPEGLS, + AV_CODEC_ID_MPEG4 => Id::MPEG4, + AV_CODEC_ID_RAWVIDEO => Id::RAWVIDEO, + AV_CODEC_ID_MSMPEG4V1 => Id::MSMPEG4V1, + AV_CODEC_ID_MSMPEG4V2 => Id::MSMPEG4V2, + AV_CODEC_ID_MSMPEG4V3 => Id::MSMPEG4V3, + AV_CODEC_ID_WMV1 => Id::WMV1, + AV_CODEC_ID_WMV2 => Id::WMV2, + AV_CODEC_ID_H263P => Id::H263P, + AV_CODEC_ID_H263I => Id::H263I, + AV_CODEC_ID_FLV1 => Id::FLV1, + AV_CODEC_ID_SVQ1 => Id::SVQ1, + AV_CODEC_ID_SVQ3 => Id::SVQ3, + AV_CODEC_ID_DVVIDEO => Id::DVVIDEO, + AV_CODEC_ID_HUFFYUV => Id::HUFFYUV, + AV_CODEC_ID_CYUV => Id::CYUV, + AV_CODEC_ID_H264 => Id::H264, + AV_CODEC_ID_INDEO3 => Id::INDEO3, + AV_CODEC_ID_VP3 => Id::VP3, + AV_CODEC_ID_THEORA => Id::THEORA, + AV_CODEC_ID_ASV1 => Id::ASV1, + AV_CODEC_ID_ASV2 => Id::ASV2, + AV_CODEC_ID_FFV1 => Id::FFV1, + AV_CODEC_ID_4XM => Id::XM4, + AV_CODEC_ID_VCR1 => Id::VCR1, + AV_CODEC_ID_CLJR => Id::CLJR, + AV_CODEC_ID_MDEC => Id::MDEC, + AV_CODEC_ID_ROQ => Id::ROQ, + AV_CODEC_ID_INTERPLAY_VIDEO => Id::INTERPLAY_VIDEO, + AV_CODEC_ID_XAN_WC3 => Id::XAN_WC3, + AV_CODEC_ID_XAN_WC4 => Id::XAN_WC4, + AV_CODEC_ID_RPZA => Id::RPZA, + AV_CODEC_ID_CINEPAK => Id::CINEPAK, + AV_CODEC_ID_WS_VQA => Id::WS_VQA, + AV_CODEC_ID_MSRLE => Id::MSRLE, + AV_CODEC_ID_MSVIDEO1 => Id::MSVIDEO1, + AV_CODEC_ID_IDCIN => Id::IDCIN, + AV_CODEC_ID_8BPS => Id::BPS8, + AV_CODEC_ID_SMC => Id::SMC, + AV_CODEC_ID_FLIC => Id::FLIC, + AV_CODEC_ID_TRUEMOTION1 => Id::TRUEMOTION1, + AV_CODEC_ID_VMDVIDEO => Id::VMDVIDEO, + AV_CODEC_ID_MSZH => Id::MSZH, + AV_CODEC_ID_ZLIB => Id::ZLIB, + AV_CODEC_ID_QTRLE => Id::QTRLE, + AV_CODEC_ID_TSCC => Id::TSCC, + AV_CODEC_ID_ULTI => Id::ULTI, + AV_CODEC_ID_QDRAW => Id::QDRAW, + AV_CODEC_ID_VIXL => Id::VIXL, + AV_CODEC_ID_QPEG => Id::QPEG, + AV_CODEC_ID_PNG => Id::PNG, + AV_CODEC_ID_PPM => Id::PPM, + AV_CODEC_ID_PBM => Id::PBM, + AV_CODEC_ID_PGM => Id::PGM, + AV_CODEC_ID_PGMYUV => Id::PGMYUV, + AV_CODEC_ID_PAM => Id::PAM, + AV_CODEC_ID_FFVHUFF => Id::FFVHUFF, + AV_CODEC_ID_RV30 => Id::RV30, + AV_CODEC_ID_RV40 => Id::RV40, + AV_CODEC_ID_VC1 => Id::VC1, + AV_CODEC_ID_WMV3 => Id::WMV3, + AV_CODEC_ID_LOCO => Id::LOCO, + AV_CODEC_ID_WNV1 => Id::WNV1, + AV_CODEC_ID_AASC => Id::AASC, + AV_CODEC_ID_INDEO2 => Id::INDEO2, + AV_CODEC_ID_FRAPS => Id::FRAPS, + AV_CODEC_ID_TRUEMOTION2 => Id::TRUEMOTION2, + AV_CODEC_ID_BMP => Id::BMP, + AV_CODEC_ID_CSCD => Id::CSCD, + AV_CODEC_ID_MMVIDEO => Id::MMVIDEO, + AV_CODEC_ID_ZMBV => Id::ZMBV, + AV_CODEC_ID_AVS => Id::AVS, + AV_CODEC_ID_SMACKVIDEO => Id::SMACKVIDEO, + AV_CODEC_ID_NUV => Id::NUV, + AV_CODEC_ID_KMVC => Id::KMVC, + AV_CODEC_ID_FLASHSV => Id::FLASHSV, + AV_CODEC_ID_CAVS => Id::CAVS, + AV_CODEC_ID_JPEG2000 => Id::JPEG2000, + AV_CODEC_ID_VMNC => Id::VMNC, + AV_CODEC_ID_VP5 => Id::VP5, + AV_CODEC_ID_VP6 => Id::VP6, + AV_CODEC_ID_VP6F => Id::VP6F, + AV_CODEC_ID_TARGA => Id::TARGA, + AV_CODEC_ID_DSICINVIDEO => Id::DSICINVIDEO, + AV_CODEC_ID_TIERTEXSEQVIDEO => Id::TIERTEXSEQVIDEO, + AV_CODEC_ID_TIFF => Id::TIFF, + AV_CODEC_ID_GIF => Id::GIF, + AV_CODEC_ID_DXA => Id::DXA, + AV_CODEC_ID_DNXHD => Id::DNXHD, + AV_CODEC_ID_THP => Id::THP, + AV_CODEC_ID_SGI => Id::SGI, + AV_CODEC_ID_C93 => Id::C93, + AV_CODEC_ID_BETHSOFTVID => Id::BETHSOFTVID, + AV_CODEC_ID_PTX => Id::PTX, + AV_CODEC_ID_TXD => Id::TXD, + AV_CODEC_ID_VP6A => Id::VP6A, + AV_CODEC_ID_AMV => Id::AMV, + AV_CODEC_ID_VB => Id::VB, + AV_CODEC_ID_PCX => Id::PCX, + AV_CODEC_ID_SUNRAST => Id::SUNRAST, + AV_CODEC_ID_INDEO4 => Id::INDEO4, + AV_CODEC_ID_INDEO5 => Id::INDEO5, + AV_CODEC_ID_MIMIC => Id::MIMIC, + AV_CODEC_ID_RL2 => Id::RL2, + AV_CODEC_ID_ESCAPE124 => Id::ESCAPE124, + AV_CODEC_ID_DIRAC => Id::DIRAC, + AV_CODEC_ID_BFI => Id::BFI, + AV_CODEC_ID_CMV => Id::CMV, + AV_CODEC_ID_MOTIONPIXELS => Id::MOTIONPIXELS, + AV_CODEC_ID_TGV => Id::TGV, + AV_CODEC_ID_TGQ => Id::TGQ, + AV_CODEC_ID_TQI => Id::TQI, + AV_CODEC_ID_AURA => Id::AURA, + AV_CODEC_ID_AURA2 => Id::AURA2, + AV_CODEC_ID_V210X => Id::V210X, + AV_CODEC_ID_TMV => Id::TMV, + AV_CODEC_ID_V210 => Id::V210, + AV_CODEC_ID_DPX => Id::DPX, + AV_CODEC_ID_MAD => Id::MAD, + AV_CODEC_ID_FRWU => Id::FRWU, + AV_CODEC_ID_FLASHSV2 => Id::FLASHSV2, + AV_CODEC_ID_CDGRAPHICS => Id::CDGRAPHICS, + AV_CODEC_ID_R210 => Id::R210, + AV_CODEC_ID_ANM => Id::ANM, + AV_CODEC_ID_BINKVIDEO => Id::BINKVIDEO, + AV_CODEC_ID_IFF_ILBM => Id::IFF_ILBM, + AV_CODEC_ID_IFF_BYTERUN1 => Id::IFF_BYTERUN1, + AV_CODEC_ID_KGV1 => Id::KGV1, + AV_CODEC_ID_YOP => Id::YOP, + AV_CODEC_ID_VP8 => Id::VP8, + AV_CODEC_ID_PICTOR => Id::PICTOR, + AV_CODEC_ID_ANSI => Id::ANSI, + AV_CODEC_ID_A64_MULTI => Id::A64_MULTI, + AV_CODEC_ID_A64_MULTI5 => Id::A64_MULTI5, + AV_CODEC_ID_R10K => Id::R10K, + AV_CODEC_ID_MXPEG => Id::MXPEG, + AV_CODEC_ID_LAGARITH => Id::LAGARITH, + AV_CODEC_ID_PRORES => Id::PRORES, + AV_CODEC_ID_JV => Id::JV, + AV_CODEC_ID_DFA => Id::DFA, + AV_CODEC_ID_WMV3IMAGE => Id::WMV3IMAGE, + AV_CODEC_ID_VC1IMAGE => Id::VC1IMAGE, + AV_CODEC_ID_UTVIDEO => Id::UTVIDEO, + AV_CODEC_ID_BMV_VIDEO => Id::BMV_VIDEO, + AV_CODEC_ID_VBLE => Id::VBLE, + AV_CODEC_ID_DXTORY => Id::DXTORY, + AV_CODEC_ID_V410 => Id::V410, + AV_CODEC_ID_XWD => Id::XWD, + AV_CODEC_ID_CDXL => Id::CDXL, + AV_CODEC_ID_XBM => Id::XBM, + AV_CODEC_ID_ZEROCODEC => Id::ZEROCODEC, + AV_CODEC_ID_MSS1 => Id::MSS1, + AV_CODEC_ID_MSA1 => Id::MSA1, + AV_CODEC_ID_TSCC2 => Id::TSCC2, + AV_CODEC_ID_MTS2 => Id::MTS2, + AV_CODEC_ID_CLLC => Id::CLLC, + AV_CODEC_ID_MSS2 => Id::MSS2, + AV_CODEC_ID_VP9 => Id::VP9, + AV_CODEC_ID_AIC => Id::AIC, + AV_CODEC_ID_ESCAPE130_DEPRECATED => Id::ESCAPE130_DEPRECATED, + AV_CODEC_ID_G2M_DEPRECATED => Id::G2M_DEPRECATED, + AV_CODEC_ID_WEBP_DEPRECATED => Id::WEBP_DEPRECATED, + AV_CODEC_ID_HNM4_VIDEO => Id::HNM4_VIDEO, + AV_CODEC_ID_HEVC_DEPRECATED => Id::HEVC_DEPRECATED, + AV_CODEC_ID_FIC => Id::FIC, + AV_CODEC_ID_ALIAS_PIX => Id::ALIAS_PIX, + AV_CODEC_ID_BRENDER_PIX_DEPRECATED => Id::BRENDER_PIX_DEPRECATED, + AV_CODEC_ID_PAF_VIDEO_DEPRECATED => Id::PAF_VIDEO_DEPRECATED, + AV_CODEC_ID_EXR_DEPRECATED => Id::EXR_DEPRECATED, + AV_CODEC_ID_VP7_DEPRECATED => Id::VP7_DEPRECATED, + AV_CODEC_ID_SANM_DEPRECATED => Id::SANM_DEPRECATED, + AV_CODEC_ID_SGIRLE_DEPRECATED => Id::SGIRLE_DEPRECATED, + AV_CODEC_ID_MVC1_DEPRECATED => Id::MVC1_DEPRECATED, + AV_CODEC_ID_MVC2_DEPRECATED => Id::MVC2_DEPRECATED, + AV_CODEC_ID_HQX => Id::HQX, + + AV_CODEC_ID_BRENDER_PIX => Id::BRENDER_PIX, + AV_CODEC_ID_Y41P => Id::Y41P, + AV_CODEC_ID_ESCAPE130 => Id::ESCAPE130, + AV_CODEC_ID_EXR => Id::EXR, + AV_CODEC_ID_AVRP => Id::AVRP, + + AV_CODEC_ID_012V => Id::V012, + AV_CODEC_ID_G2M => Id::G2M, + AV_CODEC_ID_AVUI => Id::AVUI, + AV_CODEC_ID_AYUV => Id::AYUV, + AV_CODEC_ID_TARGA_Y216 => Id::TARGA_Y216, + AV_CODEC_ID_V308 => Id::V308, + AV_CODEC_ID_V408 => Id::V408, + AV_CODEC_ID_YUV4 => Id::YUV4, + AV_CODEC_ID_SANM => Id::SANM, + AV_CODEC_ID_PAF_VIDEO => Id::PAF_VIDEO, + AV_CODEC_ID_AVRN => Id::AVRN, + AV_CODEC_ID_CPIA => Id::CPIA, + AV_CODEC_ID_XFACE => Id::XFACE, + AV_CODEC_ID_SGIRLE => Id::SGIRLE, + AV_CODEC_ID_MVC1 => Id::MVC1, + AV_CODEC_ID_MVC2 => Id::MVC2, + AV_CODEC_ID_SNOW => Id::SNOW, + AV_CODEC_ID_WEBP => Id::WEBP, + AV_CODEC_ID_SMVJPEG => Id::SMVJPEG, + AV_CODEC_ID_HEVC => Id::HEVC, + AV_CODEC_ID_VP7 => Id::VP7, + AV_CODEC_ID_APNG => Id::APNG, + + /* various PCM "codecs" */ + AV_CODEC_ID_PCM_S16LE => Id::PCM_S16LE, + AV_CODEC_ID_PCM_S16BE => Id::PCM_S16BE, + AV_CODEC_ID_PCM_U16LE => Id::PCM_U16LE, + AV_CODEC_ID_PCM_U16BE => Id::PCM_U16BE, + AV_CODEC_ID_PCM_S8 => Id::PCM_S8, + AV_CODEC_ID_PCM_U8 => Id::PCM_U8, + AV_CODEC_ID_PCM_MULAW => Id::PCM_MULAW, + AV_CODEC_ID_PCM_ALAW => Id::PCM_ALAW, + AV_CODEC_ID_PCM_S32LE => Id::PCM_S32LE, + AV_CODEC_ID_PCM_S32BE => Id::PCM_S32BE, + AV_CODEC_ID_PCM_U32LE => Id::PCM_U32LE, + AV_CODEC_ID_PCM_U32BE => Id::PCM_U32BE, + AV_CODEC_ID_PCM_S24LE => Id::PCM_S24LE, + AV_CODEC_ID_PCM_S24BE => Id::PCM_S24BE, + AV_CODEC_ID_PCM_U24LE => Id::PCM_U24LE, + AV_CODEC_ID_PCM_U24BE => Id::PCM_U24BE, + AV_CODEC_ID_PCM_S24DAUD => Id::PCM_S24DAUD, + AV_CODEC_ID_PCM_ZORK => Id::PCM_ZORK, + AV_CODEC_ID_PCM_S16LE_PLANAR => Id::PCM_S16LE_PLANAR, + AV_CODEC_ID_PCM_DVD => Id::PCM_DVD, + AV_CODEC_ID_PCM_F32BE => Id::PCM_F32BE, + AV_CODEC_ID_PCM_F32LE => Id::PCM_F32LE, + AV_CODEC_ID_PCM_F64BE => Id::PCM_F64BE, + AV_CODEC_ID_PCM_F64LE => Id::PCM_F64LE, + AV_CODEC_ID_PCM_BLURAY => Id::PCM_BLURAY, + AV_CODEC_ID_PCM_LXF => Id::PCM_LXF, + AV_CODEC_ID_S302M => Id::S302M, + AV_CODEC_ID_PCM_S8_PLANAR => Id::PCM_S8_PLANAR, + AV_CODEC_ID_PCM_S24LE_PLANAR_DEPRECATED => Id::PCM_S24LE_PLANAR_DEPRECATED, + AV_CODEC_ID_PCM_S32LE_PLANAR_DEPRECATED => Id::PCM_S32LE_PLANAR_DEPRECATED, + AV_CODEC_ID_PCM_S24LE_PLANAR => Id::PCM_S24LE_PLANAR, + AV_CODEC_ID_PCM_S32LE_PLANAR => Id::PCM_S32LE_PLANAR, + AV_CODEC_ID_PCM_S16BE_PLANAR => Id::PCM_S16BE_PLANAR, + + /* various ADPCM codecs */ + AV_CODEC_ID_ADPCM_IMA_QT => Id::ADPCM_IMA_QT, + AV_CODEC_ID_ADPCM_IMA_WAV => Id::ADPCM_IMA_WAV, + AV_CODEC_ID_ADPCM_IMA_DK3 => Id::ADPCM_IMA_DK3, + AV_CODEC_ID_ADPCM_IMA_DK4 => Id::ADPCM_IMA_DK4, + AV_CODEC_ID_ADPCM_IMA_WS => Id::ADPCM_IMA_WS, + AV_CODEC_ID_ADPCM_IMA_SMJPEG => Id::ADPCM_IMA_SMJPEG, + AV_CODEC_ID_ADPCM_MS => Id::ADPCM_MS, + AV_CODEC_ID_ADPCM_4XM => Id::ADPCM_4XM, + AV_CODEC_ID_ADPCM_XA => Id::ADPCM_XA, + AV_CODEC_ID_ADPCM_ADX => Id::ADPCM_ADX, + AV_CODEC_ID_ADPCM_EA => Id::ADPCM_EA, + AV_CODEC_ID_ADPCM_G726 => Id::ADPCM_G726, + AV_CODEC_ID_ADPCM_CT => Id::ADPCM_CT, + AV_CODEC_ID_ADPCM_SWF => Id::ADPCM_SWF, + AV_CODEC_ID_ADPCM_YAMAHA => Id::ADPCM_YAMAHA, + AV_CODEC_ID_ADPCM_SBPRO_4 => Id::ADPCM_SBPRO_4, + AV_CODEC_ID_ADPCM_SBPRO_3 => Id::ADPCM_SBPRO_3, + AV_CODEC_ID_ADPCM_SBPRO_2 => Id::ADPCM_SBPRO_2, + AV_CODEC_ID_ADPCM_THP => Id::ADPCM_THP, + AV_CODEC_ID_ADPCM_IMA_AMV => Id::ADPCM_IMA_AMV, + AV_CODEC_ID_ADPCM_EA_R1 => Id::ADPCM_EA_R1, + AV_CODEC_ID_ADPCM_EA_R3 => Id::ADPCM_EA_R3, + AV_CODEC_ID_ADPCM_EA_R2 => Id::ADPCM_EA_R2, + AV_CODEC_ID_ADPCM_IMA_EA_SEAD => Id::ADPCM_IMA_EA_SEAD, + AV_CODEC_ID_ADPCM_IMA_EA_EACS => Id::ADPCM_IMA_EA_EACS, + AV_CODEC_ID_ADPCM_EA_XAS => Id::ADPCM_EA_XAS, + AV_CODEC_ID_ADPCM_EA_MAXIS_XA => Id::ADPCM_EA_MAXIS_XA, + AV_CODEC_ID_ADPCM_IMA_ISS => Id::ADPCM_IMA_ISS, + AV_CODEC_ID_ADPCM_G722 => Id::ADPCM_G722, + AV_CODEC_ID_ADPCM_IMA_APC => Id::ADPCM_IMA_APC, + AV_CODEC_ID_ADPCM_VIMA_DEPRECATED => Id::ADPCM_VIMA_DEPRECATED, + AV_CODEC_ID_ADPCM_VIMA => Id::ADPCM_VIMA, + AV_CODEC_ID_ADPCM_AFC => Id::ADPCM_AFC, + AV_CODEC_ID_ADPCM_IMA_OKI => Id::ADPCM_IMA_OKI, + AV_CODEC_ID_ADPCM_DTK => Id::ADPCM_DTK, + AV_CODEC_ID_ADPCM_IMA_RAD => Id::ADPCM_IMA_RAD, + AV_CODEC_ID_ADPCM_G726LE => Id::ADPCM_G726LE, + + /* AMR */ + AV_CODEC_ID_AMR_NB => Id::AMR_NB, + AV_CODEC_ID_AMR_WB => Id::AMR_WB, + + /* RealAudio codecs*/ + AV_CODEC_ID_RA_144 => Id::RA_144, + AV_CODEC_ID_RA_288 => Id::RA_288, + + /* various DPCM codecs */ + AV_CODEC_ID_ROQ_DPCM => Id::ROQ_DPCM, + AV_CODEC_ID_INTERPLAY_DPCM => Id::INTERPLAY_DPCM, + AV_CODEC_ID_XAN_DPCM => Id::XAN_DPCM, + AV_CODEC_ID_SOL_DPCM => Id::SOL_DPCM, + + /* audio codecs */ + AV_CODEC_ID_MP2 => Id::MP2, + AV_CODEC_ID_MP3 => Id::MP3, + AV_CODEC_ID_AAC => Id::AAC, + AV_CODEC_ID_AC3 => Id::AC3, + AV_CODEC_ID_DTS => Id::DTS, + AV_CODEC_ID_VORBIS => Id::VORBIS, + AV_CODEC_ID_DVAUDIO => Id::DVAUDIO, + AV_CODEC_ID_WMAV1 => Id::WMAV1, + AV_CODEC_ID_WMAV2 => Id::WMAV2, + AV_CODEC_ID_MACE3 => Id::MACE3, + AV_CODEC_ID_MACE6 => Id::MACE6, + AV_CODEC_ID_VMDAUDIO => Id::VMDAUDIO, + AV_CODEC_ID_FLAC => Id::FLAC, + AV_CODEC_ID_MP3ADU => Id::MP3ADU, + AV_CODEC_ID_MP3ON4 => Id::MP3ON4, + AV_CODEC_ID_SHORTEN => Id::SHORTEN, + AV_CODEC_ID_ALAC => Id::ALAC, + AV_CODEC_ID_WESTWOOD_SND1 => Id::WESTWOOD_SND1, + AV_CODEC_ID_GSM => Id::GSM, + AV_CODEC_ID_QDM2 => Id::QDM2, + AV_CODEC_ID_COOK => Id::COOK, + AV_CODEC_ID_TRUESPEECH => Id::TRUESPEECH, + AV_CODEC_ID_TTA => Id::TTA, + AV_CODEC_ID_SMACKAUDIO => Id::SMACKAUDIO, + AV_CODEC_ID_QCELP => Id::QCELP, + AV_CODEC_ID_WAVPACK => Id::WAVPACK, + AV_CODEC_ID_DSICINAUDIO => Id::DSICINAUDIO, + AV_CODEC_ID_IMC => Id::IMC, + AV_CODEC_ID_MUSEPACK7 => Id::MUSEPACK7, + AV_CODEC_ID_MLP => Id::MLP, + AV_CODEC_ID_GSM_MS => Id::GSM_MS, + AV_CODEC_ID_ATRAC3 => Id::ATRAC3, + AV_CODEC_ID_VOXWARE => Id::VOXWARE, + AV_CODEC_ID_APE => Id::APE, + AV_CODEC_ID_NELLYMOSER => Id::NELLYMOSER, + AV_CODEC_ID_MUSEPACK8 => Id::MUSEPACK8, + AV_CODEC_ID_SPEEX => Id::SPEEX, + AV_CODEC_ID_WMAVOICE => Id::WMAVOICE, + AV_CODEC_ID_WMAPRO => Id::WMAPRO, + AV_CODEC_ID_WMALOSSLESS => Id::WMALOSSLESS, + AV_CODEC_ID_ATRAC3P => Id::ATRAC3P, + AV_CODEC_ID_EAC3 => Id::EAC3, + AV_CODEC_ID_SIPR => Id::SIPR, + AV_CODEC_ID_MP1 => Id::MP1, + AV_CODEC_ID_TWINVQ => Id::TWINVQ, + AV_CODEC_ID_TRUEHD => Id::TRUEHD, + AV_CODEC_ID_MP4ALS => Id::MP4ALS, + AV_CODEC_ID_ATRAC1 => Id::ATRAC1, + AV_CODEC_ID_BINKAUDIO_RDFT => Id::BINKAUDIO_RDFT, + AV_CODEC_ID_BINKAUDIO_DCT => Id::BINKAUDIO_DCT, + AV_CODEC_ID_AAC_LATM => Id::AAC_LATM, + AV_CODEC_ID_QDMC => Id::QDMC, + AV_CODEC_ID_CELT => Id::CELT, + AV_CODEC_ID_G723_1 => Id::G723_1, + AV_CODEC_ID_G729 => Id::G729, + AV_CODEC_ID_8SVX_EXP => Id::SVX_EXP8, + AV_CODEC_ID_8SVX_FIB => Id::SVX_FIB8, + AV_CODEC_ID_BMV_AUDIO => Id::BMV_AUDIO, + AV_CODEC_ID_RALF => Id::RALF, + AV_CODEC_ID_IAC => Id::IAC, + AV_CODEC_ID_ILBC => Id::ILBC, + AV_CODEC_ID_OPUS_DEPRECATED => Id::OPUS_DEPRECATED, + AV_CODEC_ID_COMFORT_NOISE => Id::COMFORT_NOISE, + AV_CODEC_ID_TAK_DEPRECATED => Id::TAK_DEPRECATED, + AV_CODEC_ID_METASOUND => Id::METASOUND, + AV_CODEC_ID_PAF_AUDIO_DEPRECATED => Id::PAF_AUDIO_DEPRECATED, + AV_CODEC_ID_ON2AVC => Id::ON2AVC, + AV_CODEC_ID_DSS_SP => Id::DSS_SP, + AV_CODEC_ID_FFWAVESYNTH => Id::FFWAVESYNTH, + AV_CODEC_ID_SONIC => Id::SONIC, + AV_CODEC_ID_SONIC_LS => Id::SONIC_LS, + AV_CODEC_ID_PAF_AUDIO => Id::PAF_AUDIO, + AV_CODEC_ID_OPUS => Id::OPUS, + AV_CODEC_ID_TAK => Id::TAK, + AV_CODEC_ID_EVRC => Id::EVRC, + AV_CODEC_ID_SMV => Id::SMV, + AV_CODEC_ID_DSD_LSBF => Id::DSD_LSBF, + AV_CODEC_ID_DSD_MSBF => Id::DSD_MSBF, + AV_CODEC_ID_DSD_LSBF_PLANAR => Id::DSD_LSBF_PLANAR, + AV_CODEC_ID_DSD_MSBF_PLANAR => Id::DSD_MSBF_PLANAR, + + /* subtitle codecs */ + AV_CODEC_ID_DVD_SUBTITLE => Id::DVD_SUBTITLE, + AV_CODEC_ID_DVB_SUBTITLE => Id::DVB_SUBTITLE, + AV_CODEC_ID_TEXT => Id::TEXT, + AV_CODEC_ID_XSUB => Id::XSUB, + AV_CODEC_ID_SSA => Id::SSA, + AV_CODEC_ID_MOV_TEXT => Id::MOV_TEXT, + AV_CODEC_ID_HDMV_PGS_SUBTITLE => Id::HDMV_PGS_SUBTITLE, + AV_CODEC_ID_DVB_TELETEXT => Id::DVB_TELETEXT, + AV_CODEC_ID_SRT => Id::SRT, + AV_CODEC_ID_MICRODVD => Id::MICRODVD, + AV_CODEC_ID_EIA_608 => Id::EIA_608, + AV_CODEC_ID_JACOSUB => Id::JACOSUB, + AV_CODEC_ID_SAMI => Id::SAMI, + AV_CODEC_ID_REALTEXT => Id::REALTEXT, + AV_CODEC_ID_STL => Id::STL, + AV_CODEC_ID_SUBVIEWER1 => Id::SUBVIEWER1, + AV_CODEC_ID_SUBVIEWER => Id::SUBVIEWER, + AV_CODEC_ID_SUBRIP => Id::SUBRIP, + AV_CODEC_ID_WEBVTT => Id::WEBVTT, + AV_CODEC_ID_MPL2 => Id::MPL2, + AV_CODEC_ID_VPLAYER => Id::VPLAYER, + AV_CODEC_ID_PJS => Id::PJS, + AV_CODEC_ID_ASS => Id::ASS, + + /* other specific kind of codecs (generally used for attachments) */ + AV_CODEC_ID_TTF => Id::TTF, + AV_CODEC_ID_BINTEXT => Id::BINTEXT, + AV_CODEC_ID_XBIN => Id::XBIN, + AV_CODEC_ID_IDF => Id::IDF, + AV_CODEC_ID_OTF => Id::OTF, + AV_CODEC_ID_SMPTE_KLV => Id::SMPTE_KLV, + AV_CODEC_ID_DVD_NAV => Id::DVD_NAV, + AV_CODEC_ID_TIMED_ID3 => Id::TIMED_ID3, + AV_CODEC_ID_BIN_DATA => Id::BIN_DATA, + + AV_CODEC_ID_PROBE => Id::PROBE, + + AV_CODEC_ID_MPEG2TS => Id::MPEG2TS, + AV_CODEC_ID_MPEG4SYSTEMS => Id::MPEG4SYSTEMS, + AV_CODEC_ID_FFMETADATA => Id::FFMETADATA + } + } +} + +impl Into for Id { + fn into(self) -> AVCodecID { + match self { + Id::None => AV_CODEC_ID_NONE, + + /* video codecs */ + Id::MPEG1VIDEO => AV_CODEC_ID_MPEG1VIDEO, + Id::MPEG2VIDEO => AV_CODEC_ID_MPEG2VIDEO, + Id::MPEG2VIDEO_XVMC => AV_CODEC_ID_MPEG2VIDEO_XVMC, + Id::H261 => AV_CODEC_ID_H261, + Id::H263 => AV_CODEC_ID_H263, + Id::RV10 => AV_CODEC_ID_RV10, + Id::RV20 => AV_CODEC_ID_RV20, + Id::MJPEG => AV_CODEC_ID_MJPEG, + Id::MJPEGB => AV_CODEC_ID_MJPEGB, + Id::LJPEG => AV_CODEC_ID_LJPEG, + Id::SP5X => AV_CODEC_ID_SP5X, + Id::JPEGLS => AV_CODEC_ID_JPEGLS, + Id::MPEG4 => AV_CODEC_ID_MPEG4, + Id::RAWVIDEO => AV_CODEC_ID_RAWVIDEO, + Id::MSMPEG4V1 => AV_CODEC_ID_MSMPEG4V1, + Id::MSMPEG4V2 => AV_CODEC_ID_MSMPEG4V2, + Id::MSMPEG4V3 => AV_CODEC_ID_MSMPEG4V3, + Id::WMV1 => AV_CODEC_ID_WMV1, + Id::WMV2 => AV_CODEC_ID_WMV2, + Id::H263P => AV_CODEC_ID_H263P, + Id::H263I => AV_CODEC_ID_H263I, + Id::FLV1 => AV_CODEC_ID_FLV1, + Id::SVQ1 => AV_CODEC_ID_SVQ1, + Id::SVQ3 => AV_CODEC_ID_SVQ3, + Id::DVVIDEO => AV_CODEC_ID_DVVIDEO, + Id::HUFFYUV => AV_CODEC_ID_HUFFYUV, + Id::CYUV => AV_CODEC_ID_CYUV, + Id::H264 => AV_CODEC_ID_H264, + Id::INDEO3 => AV_CODEC_ID_INDEO3, + Id::VP3 => AV_CODEC_ID_VP3, + Id::THEORA => AV_CODEC_ID_THEORA, + Id::ASV1 => AV_CODEC_ID_ASV1, + Id::ASV2 => AV_CODEC_ID_ASV2, + Id::FFV1 => AV_CODEC_ID_FFV1, + Id::XM4 => AV_CODEC_ID_4XM, + Id::VCR1 => AV_CODEC_ID_VCR1, + Id::CLJR => AV_CODEC_ID_CLJR, + Id::MDEC => AV_CODEC_ID_MDEC, + Id::ROQ => AV_CODEC_ID_ROQ, + Id::INTERPLAY_VIDEO => AV_CODEC_ID_INTERPLAY_VIDEO, + Id::XAN_WC3 => AV_CODEC_ID_XAN_WC3, + Id::XAN_WC4 => AV_CODEC_ID_XAN_WC4, + Id::RPZA => AV_CODEC_ID_RPZA, + Id::CINEPAK => AV_CODEC_ID_CINEPAK, + Id::WS_VQA => AV_CODEC_ID_WS_VQA, + Id::MSRLE => AV_CODEC_ID_MSRLE, + Id::MSVIDEO1 => AV_CODEC_ID_MSVIDEO1, + Id::IDCIN => AV_CODEC_ID_IDCIN, + Id::BPS8 => AV_CODEC_ID_8BPS, + Id::SMC => AV_CODEC_ID_SMC, + Id::FLIC => AV_CODEC_ID_FLIC, + Id::TRUEMOTION1 => AV_CODEC_ID_TRUEMOTION1, + Id::VMDVIDEO => AV_CODEC_ID_VMDVIDEO, + Id::MSZH => AV_CODEC_ID_MSZH, + Id::ZLIB => AV_CODEC_ID_ZLIB, + Id::QTRLE => AV_CODEC_ID_QTRLE, + Id::TSCC => AV_CODEC_ID_TSCC, + Id::ULTI => AV_CODEC_ID_ULTI, + Id::QDRAW => AV_CODEC_ID_QDRAW, + Id::VIXL => AV_CODEC_ID_VIXL, + Id::QPEG => AV_CODEC_ID_QPEG, + Id::PNG => AV_CODEC_ID_PNG, + Id::PPM => AV_CODEC_ID_PPM, + Id::PBM => AV_CODEC_ID_PBM, + Id::PGM => AV_CODEC_ID_PGM, + Id::PGMYUV => AV_CODEC_ID_PGMYUV, + Id::PAM => AV_CODEC_ID_PAM, + Id::FFVHUFF => AV_CODEC_ID_FFVHUFF, + Id::RV30 => AV_CODEC_ID_RV30, + Id::RV40 => AV_CODEC_ID_RV40, + Id::VC1 => AV_CODEC_ID_VC1, + Id::WMV3 => AV_CODEC_ID_WMV3, + Id::LOCO => AV_CODEC_ID_LOCO, + Id::WNV1 => AV_CODEC_ID_WNV1, + Id::AASC => AV_CODEC_ID_AASC, + Id::INDEO2 => AV_CODEC_ID_INDEO2, + Id::FRAPS => AV_CODEC_ID_FRAPS, + Id::TRUEMOTION2 => AV_CODEC_ID_TRUEMOTION2, + Id::BMP => AV_CODEC_ID_BMP, + Id::CSCD => AV_CODEC_ID_CSCD, + Id::MMVIDEO => AV_CODEC_ID_MMVIDEO, + Id::ZMBV => AV_CODEC_ID_ZMBV, + Id::AVS => AV_CODEC_ID_AVS, + Id::SMACKVIDEO => AV_CODEC_ID_SMACKVIDEO, + Id::NUV => AV_CODEC_ID_NUV, + Id::KMVC => AV_CODEC_ID_KMVC, + Id::FLASHSV => AV_CODEC_ID_FLASHSV, + Id::CAVS => AV_CODEC_ID_CAVS, + Id::JPEG2000 => AV_CODEC_ID_JPEG2000, + Id::VMNC => AV_CODEC_ID_VMNC, + Id::VP5 => AV_CODEC_ID_VP5, + Id::VP6 => AV_CODEC_ID_VP6, + Id::VP6F => AV_CODEC_ID_VP6F, + Id::TARGA => AV_CODEC_ID_TARGA, + Id::DSICINVIDEO => AV_CODEC_ID_DSICINVIDEO, + Id::TIERTEXSEQVIDEO => AV_CODEC_ID_TIERTEXSEQVIDEO, + Id::TIFF => AV_CODEC_ID_TIFF, + Id::GIF => AV_CODEC_ID_GIF, + Id::DXA => AV_CODEC_ID_DXA, + Id::DNXHD => AV_CODEC_ID_DNXHD, + Id::THP => AV_CODEC_ID_THP, + Id::SGI => AV_CODEC_ID_SGI, + Id::C93 => AV_CODEC_ID_C93, + Id::BETHSOFTVID => AV_CODEC_ID_BETHSOFTVID, + Id::PTX => AV_CODEC_ID_PTX, + Id::TXD => AV_CODEC_ID_TXD, + Id::VP6A => AV_CODEC_ID_VP6A, + Id::AMV => AV_CODEC_ID_AMV, + Id::VB => AV_CODEC_ID_VB, + Id::PCX => AV_CODEC_ID_PCX, + Id::SUNRAST => AV_CODEC_ID_SUNRAST, + Id::INDEO4 => AV_CODEC_ID_INDEO4, + Id::INDEO5 => AV_CODEC_ID_INDEO5, + Id::MIMIC => AV_CODEC_ID_MIMIC, + Id::RL2 => AV_CODEC_ID_RL2, + Id::ESCAPE124 => AV_CODEC_ID_ESCAPE124, + Id::DIRAC => AV_CODEC_ID_DIRAC, + Id::BFI => AV_CODEC_ID_BFI, + Id::CMV => AV_CODEC_ID_CMV, + Id::MOTIONPIXELS => AV_CODEC_ID_MOTIONPIXELS, + Id::TGV => AV_CODEC_ID_TGV, + Id::TGQ => AV_CODEC_ID_TGQ, + Id::TQI => AV_CODEC_ID_TQI, + Id::AURA => AV_CODEC_ID_AURA, + Id::AURA2 => AV_CODEC_ID_AURA2, + Id::V210X => AV_CODEC_ID_V210X, + Id::TMV => AV_CODEC_ID_TMV, + Id::V210 => AV_CODEC_ID_V210, + Id::DPX => AV_CODEC_ID_DPX, + Id::MAD => AV_CODEC_ID_MAD, + Id::FRWU => AV_CODEC_ID_FRWU, + Id::FLASHSV2 => AV_CODEC_ID_FLASHSV2, + Id::CDGRAPHICS => AV_CODEC_ID_CDGRAPHICS, + Id::R210 => AV_CODEC_ID_R210, + Id::ANM => AV_CODEC_ID_ANM, + Id::BINKVIDEO => AV_CODEC_ID_BINKVIDEO, + Id::IFF_ILBM => AV_CODEC_ID_IFF_ILBM, + Id::IFF_BYTERUN1 => AV_CODEC_ID_IFF_BYTERUN1, + Id::KGV1 => AV_CODEC_ID_KGV1, + Id::YOP => AV_CODEC_ID_YOP, + Id::VP8 => AV_CODEC_ID_VP8, + Id::PICTOR => AV_CODEC_ID_PICTOR, + Id::ANSI => AV_CODEC_ID_ANSI, + Id::A64_MULTI => AV_CODEC_ID_A64_MULTI, + Id::A64_MULTI5 => AV_CODEC_ID_A64_MULTI5, + Id::R10K => AV_CODEC_ID_R10K, + Id::MXPEG => AV_CODEC_ID_MXPEG, + Id::LAGARITH => AV_CODEC_ID_LAGARITH, + Id::PRORES => AV_CODEC_ID_PRORES, + Id::JV => AV_CODEC_ID_JV, + Id::DFA => AV_CODEC_ID_DFA, + Id::WMV3IMAGE => AV_CODEC_ID_WMV3IMAGE, + Id::VC1IMAGE => AV_CODEC_ID_VC1IMAGE, + Id::UTVIDEO => AV_CODEC_ID_UTVIDEO, + Id::BMV_VIDEO => AV_CODEC_ID_BMV_VIDEO, + Id::VBLE => AV_CODEC_ID_VBLE, + Id::DXTORY => AV_CODEC_ID_DXTORY, + Id::V410 => AV_CODEC_ID_V410, + Id::XWD => AV_CODEC_ID_XWD, + Id::CDXL => AV_CODEC_ID_CDXL, + Id::XBM => AV_CODEC_ID_XBM, + Id::ZEROCODEC => AV_CODEC_ID_ZEROCODEC, + Id::MSS1 => AV_CODEC_ID_MSS1, + Id::MSA1 => AV_CODEC_ID_MSA1, + Id::TSCC2 => AV_CODEC_ID_TSCC2, + Id::MTS2 => AV_CODEC_ID_MTS2, + Id::CLLC => AV_CODEC_ID_CLLC, + Id::MSS2 => AV_CODEC_ID_MSS2, + Id::VP9 => AV_CODEC_ID_VP9, + Id::AIC => AV_CODEC_ID_AIC, + Id::ESCAPE130_DEPRECATED => AV_CODEC_ID_ESCAPE130_DEPRECATED, + Id::G2M_DEPRECATED => AV_CODEC_ID_G2M_DEPRECATED, + Id::WEBP_DEPRECATED => AV_CODEC_ID_WEBP_DEPRECATED, + Id::HNM4_VIDEO => AV_CODEC_ID_HNM4_VIDEO, + Id::HEVC_DEPRECATED => AV_CODEC_ID_HEVC_DEPRECATED, + Id::FIC => AV_CODEC_ID_FIC, + Id::ALIAS_PIX => AV_CODEC_ID_ALIAS_PIX, + Id::BRENDER_PIX_DEPRECATED => AV_CODEC_ID_BRENDER_PIX_DEPRECATED, + Id::PAF_VIDEO_DEPRECATED => AV_CODEC_ID_PAF_VIDEO_DEPRECATED, + Id::EXR_DEPRECATED => AV_CODEC_ID_EXR_DEPRECATED, + Id::VP7_DEPRECATED => AV_CODEC_ID_VP7_DEPRECATED, + Id::SANM_DEPRECATED => AV_CODEC_ID_SANM_DEPRECATED, + Id::SGIRLE_DEPRECATED => AV_CODEC_ID_SGIRLE_DEPRECATED, + Id::MVC1_DEPRECATED => AV_CODEC_ID_MVC1_DEPRECATED, + Id::MVC2_DEPRECATED => AV_CODEC_ID_MVC2_DEPRECATED, + Id::HQX => AV_CODEC_ID_HQX, + + Id::BRENDER_PIX => AV_CODEC_ID_BRENDER_PIX, + Id::Y41P => AV_CODEC_ID_Y41P, + Id::ESCAPE130 => AV_CODEC_ID_ESCAPE130, + Id::EXR => AV_CODEC_ID_EXR, + Id::AVRP => AV_CODEC_ID_AVRP, + + Id::V012 => AV_CODEC_ID_012V, + Id::G2M => AV_CODEC_ID_G2M, + Id::AVUI => AV_CODEC_ID_AVUI, + Id::AYUV => AV_CODEC_ID_AYUV, + Id::TARGA_Y216 => AV_CODEC_ID_TARGA_Y216, + Id::V308 => AV_CODEC_ID_V308, + Id::V408 => AV_CODEC_ID_V408, + Id::YUV4 => AV_CODEC_ID_YUV4, + Id::SANM => AV_CODEC_ID_SANM, + Id::PAF_VIDEO => AV_CODEC_ID_PAF_VIDEO, + Id::AVRN => AV_CODEC_ID_AVRN, + Id::CPIA => AV_CODEC_ID_CPIA, + Id::XFACE => AV_CODEC_ID_XFACE, + Id::SGIRLE => AV_CODEC_ID_SGIRLE, + Id::MVC1 => AV_CODEC_ID_MVC1, + Id::MVC2 => AV_CODEC_ID_MVC2, + Id::SNOW => AV_CODEC_ID_SNOW, + Id::WEBP => AV_CODEC_ID_WEBP, + Id::SMVJPEG => AV_CODEC_ID_SMVJPEG, + Id::HEVC => AV_CODEC_ID_HEVC, + Id::VP7 => AV_CODEC_ID_VP7, + Id::APNG => AV_CODEC_ID_APNG, + + /* various PCM "codecs" */ + Id::PCM_S16LE => AV_CODEC_ID_PCM_S16LE, + Id::PCM_S16BE => AV_CODEC_ID_PCM_S16BE, + Id::PCM_U16LE => AV_CODEC_ID_PCM_U16LE, + Id::PCM_U16BE => AV_CODEC_ID_PCM_U16BE, + Id::PCM_S8 => AV_CODEC_ID_PCM_S8, + Id::PCM_U8 => AV_CODEC_ID_PCM_U8, + Id::PCM_MULAW => AV_CODEC_ID_PCM_MULAW, + Id::PCM_ALAW => AV_CODEC_ID_PCM_ALAW, + Id::PCM_S32LE => AV_CODEC_ID_PCM_S32LE, + Id::PCM_S32BE => AV_CODEC_ID_PCM_S32BE, + Id::PCM_U32LE => AV_CODEC_ID_PCM_U32LE, + Id::PCM_U32BE => AV_CODEC_ID_PCM_U32BE, + Id::PCM_S24LE => AV_CODEC_ID_PCM_S24LE, + Id::PCM_S24BE => AV_CODEC_ID_PCM_S24BE, + Id::PCM_U24LE => AV_CODEC_ID_PCM_U24LE, + Id::PCM_U24BE => AV_CODEC_ID_PCM_U24BE, + Id::PCM_S24DAUD => AV_CODEC_ID_PCM_S24DAUD, + Id::PCM_ZORK => AV_CODEC_ID_PCM_ZORK, + Id::PCM_S16LE_PLANAR => AV_CODEC_ID_PCM_S16LE_PLANAR, + Id::PCM_DVD => AV_CODEC_ID_PCM_DVD, + Id::PCM_F32BE => AV_CODEC_ID_PCM_F32BE, + Id::PCM_F32LE => AV_CODEC_ID_PCM_F32LE, + Id::PCM_F64BE => AV_CODEC_ID_PCM_F64BE, + Id::PCM_F64LE => AV_CODEC_ID_PCM_F64LE, + Id::PCM_BLURAY => AV_CODEC_ID_PCM_BLURAY, + Id::PCM_LXF => AV_CODEC_ID_PCM_LXF, + Id::S302M => AV_CODEC_ID_S302M, + Id::PCM_S8_PLANAR => AV_CODEC_ID_PCM_S8_PLANAR, + Id::PCM_S24LE_PLANAR_DEPRECATED => AV_CODEC_ID_PCM_S24LE_PLANAR_DEPRECATED, + Id::PCM_S32LE_PLANAR_DEPRECATED => AV_CODEC_ID_PCM_S32LE_PLANAR_DEPRECATED, + Id::PCM_S24LE_PLANAR => AV_CODEC_ID_PCM_S24LE_PLANAR, + Id::PCM_S32LE_PLANAR => AV_CODEC_ID_PCM_S32LE_PLANAR, + Id::PCM_S16BE_PLANAR => AV_CODEC_ID_PCM_S16BE_PLANAR, + + /* various ADPCM codecs */ + Id::ADPCM_IMA_QT => AV_CODEC_ID_ADPCM_IMA_QT, + Id::ADPCM_IMA_WAV => AV_CODEC_ID_ADPCM_IMA_WAV, + Id::ADPCM_IMA_DK3 => AV_CODEC_ID_ADPCM_IMA_DK3, + Id::ADPCM_IMA_DK4 => AV_CODEC_ID_ADPCM_IMA_DK4, + Id::ADPCM_IMA_WS => AV_CODEC_ID_ADPCM_IMA_WS, + Id::ADPCM_IMA_SMJPEG => AV_CODEC_ID_ADPCM_IMA_SMJPEG, + Id::ADPCM_MS => AV_CODEC_ID_ADPCM_MS, + Id::ADPCM_4XM => AV_CODEC_ID_ADPCM_4XM, + Id::ADPCM_XA => AV_CODEC_ID_ADPCM_XA, + Id::ADPCM_ADX => AV_CODEC_ID_ADPCM_ADX, + Id::ADPCM_EA => AV_CODEC_ID_ADPCM_EA, + Id::ADPCM_G726 => AV_CODEC_ID_ADPCM_G726, + Id::ADPCM_CT => AV_CODEC_ID_ADPCM_CT, + Id::ADPCM_SWF => AV_CODEC_ID_ADPCM_SWF, + Id::ADPCM_YAMAHA => AV_CODEC_ID_ADPCM_YAMAHA, + Id::ADPCM_SBPRO_4 => AV_CODEC_ID_ADPCM_SBPRO_4, + Id::ADPCM_SBPRO_3 => AV_CODEC_ID_ADPCM_SBPRO_3, + Id::ADPCM_SBPRO_2 => AV_CODEC_ID_ADPCM_SBPRO_2, + Id::ADPCM_THP => AV_CODEC_ID_ADPCM_THP, + Id::ADPCM_IMA_AMV => AV_CODEC_ID_ADPCM_IMA_AMV, + Id::ADPCM_EA_R1 => AV_CODEC_ID_ADPCM_EA_R1, + Id::ADPCM_EA_R3 => AV_CODEC_ID_ADPCM_EA_R3, + Id::ADPCM_EA_R2 => AV_CODEC_ID_ADPCM_EA_R2, + Id::ADPCM_IMA_EA_SEAD => AV_CODEC_ID_ADPCM_IMA_EA_SEAD, + Id::ADPCM_IMA_EA_EACS => AV_CODEC_ID_ADPCM_IMA_EA_EACS, + Id::ADPCM_EA_XAS => AV_CODEC_ID_ADPCM_EA_XAS, + Id::ADPCM_EA_MAXIS_XA => AV_CODEC_ID_ADPCM_EA_MAXIS_XA, + Id::ADPCM_IMA_ISS => AV_CODEC_ID_ADPCM_IMA_ISS, + Id::ADPCM_G722 => AV_CODEC_ID_ADPCM_G722, + Id::ADPCM_IMA_APC => AV_CODEC_ID_ADPCM_IMA_APC, + Id::ADPCM_VIMA_DEPRECATED => AV_CODEC_ID_ADPCM_VIMA_DEPRECATED, + Id::ADPCM_VIMA => AV_CODEC_ID_ADPCM_VIMA, + Id::VIMA => AV_CODEC_ID_VIMA, + Id::ADPCM_AFC => AV_CODEC_ID_ADPCM_AFC, + Id::ADPCM_IMA_OKI => AV_CODEC_ID_ADPCM_IMA_OKI, + Id::ADPCM_DTK => AV_CODEC_ID_ADPCM_DTK, + Id::ADPCM_IMA_RAD => AV_CODEC_ID_ADPCM_IMA_RAD, + Id::ADPCM_G726LE => AV_CODEC_ID_ADPCM_G726LE, + + /* AMR */ + Id::AMR_NB => AV_CODEC_ID_AMR_NB, + Id::AMR_WB => AV_CODEC_ID_AMR_WB, + + /* RealAudio codecs*/ + Id::RA_144 => AV_CODEC_ID_RA_144, + Id::RA_288 => AV_CODEC_ID_RA_288, + + /* various DPCM codecs */ + Id::ROQ_DPCM => AV_CODEC_ID_ROQ_DPCM, + Id::INTERPLAY_DPCM => AV_CODEC_ID_INTERPLAY_DPCM, + Id::XAN_DPCM => AV_CODEC_ID_XAN_DPCM, + Id::SOL_DPCM => AV_CODEC_ID_SOL_DPCM, + + /* audio codecs */ + Id::MP2 => AV_CODEC_ID_MP2, + Id::MP3 => AV_CODEC_ID_MP3, + Id::AAC => AV_CODEC_ID_AAC, + Id::AC3 => AV_CODEC_ID_AC3, + Id::DTS => AV_CODEC_ID_DTS, + Id::VORBIS => AV_CODEC_ID_VORBIS, + Id::DVAUDIO => AV_CODEC_ID_DVAUDIO, + Id::WMAV1 => AV_CODEC_ID_WMAV1, + Id::WMAV2 => AV_CODEC_ID_WMAV2, + Id::MACE3 => AV_CODEC_ID_MACE3, + Id::MACE6 => AV_CODEC_ID_MACE6, + Id::VMDAUDIO => AV_CODEC_ID_VMDAUDIO, + Id::FLAC => AV_CODEC_ID_FLAC, + Id::MP3ADU => AV_CODEC_ID_MP3ADU, + Id::MP3ON4 => AV_CODEC_ID_MP3ON4, + Id::SHORTEN => AV_CODEC_ID_SHORTEN, + Id::ALAC => AV_CODEC_ID_ALAC, + Id::WESTWOOD_SND1 => AV_CODEC_ID_WESTWOOD_SND1, + Id::GSM => AV_CODEC_ID_GSM, + Id::QDM2 => AV_CODEC_ID_QDM2, + Id::COOK => AV_CODEC_ID_COOK, + Id::TRUESPEECH => AV_CODEC_ID_TRUESPEECH, + Id::TTA => AV_CODEC_ID_TTA, + Id::SMACKAUDIO => AV_CODEC_ID_SMACKAUDIO, + Id::QCELP => AV_CODEC_ID_QCELP, + Id::WAVPACK => AV_CODEC_ID_WAVPACK, + Id::DSICINAUDIO => AV_CODEC_ID_DSICINAUDIO, + Id::IMC => AV_CODEC_ID_IMC, + Id::MUSEPACK7 => AV_CODEC_ID_MUSEPACK7, + Id::MLP => AV_CODEC_ID_MLP, + Id::GSM_MS => AV_CODEC_ID_GSM_MS, + Id::ATRAC3 => AV_CODEC_ID_ATRAC3, + Id::VOXWARE => AV_CODEC_ID_VOXWARE, + Id::APE => AV_CODEC_ID_APE, + Id::NELLYMOSER => AV_CODEC_ID_NELLYMOSER, + Id::MUSEPACK8 => AV_CODEC_ID_MUSEPACK8, + Id::SPEEX => AV_CODEC_ID_SPEEX, + Id::WMAVOICE => AV_CODEC_ID_WMAVOICE, + Id::WMAPRO => AV_CODEC_ID_WMAPRO, + Id::WMALOSSLESS => AV_CODEC_ID_WMALOSSLESS, + Id::ATRAC3P => AV_CODEC_ID_ATRAC3P, + Id::EAC3 => AV_CODEC_ID_EAC3, + Id::SIPR => AV_CODEC_ID_SIPR, + Id::MP1 => AV_CODEC_ID_MP1, + Id::TWINVQ => AV_CODEC_ID_TWINVQ, + Id::TRUEHD => AV_CODEC_ID_TRUEHD, + Id::MP4ALS => AV_CODEC_ID_MP4ALS, + Id::ATRAC1 => AV_CODEC_ID_ATRAC1, + Id::BINKAUDIO_RDFT => AV_CODEC_ID_BINKAUDIO_RDFT, + Id::BINKAUDIO_DCT => AV_CODEC_ID_BINKAUDIO_DCT, + Id::AAC_LATM => AV_CODEC_ID_AAC_LATM, + Id::QDMC => AV_CODEC_ID_QDMC, + Id::CELT => AV_CODEC_ID_CELT, + Id::G723_1 => AV_CODEC_ID_G723_1, + Id::G729 => AV_CODEC_ID_G729, + Id::SVX_EXP8 => AV_CODEC_ID_8SVX_EXP, + Id::SVX_FIB8 => AV_CODEC_ID_8SVX_FIB, + Id::BMV_AUDIO => AV_CODEC_ID_BMV_AUDIO, + Id::RALF => AV_CODEC_ID_RALF, + Id::IAC => AV_CODEC_ID_IAC, + Id::ILBC => AV_CODEC_ID_ILBC, + Id::OPUS_DEPRECATED => AV_CODEC_ID_OPUS_DEPRECATED, + Id::COMFORT_NOISE => AV_CODEC_ID_COMFORT_NOISE, + Id::TAK_DEPRECATED => AV_CODEC_ID_TAK_DEPRECATED, + Id::METASOUND => AV_CODEC_ID_METASOUND, + Id::PAF_AUDIO_DEPRECATED => AV_CODEC_ID_PAF_AUDIO_DEPRECATED, + Id::ON2AVC => AV_CODEC_ID_ON2AVC, + Id::DSS_SP => AV_CODEC_ID_DSS_SP, + Id::FFWAVESYNTH => AV_CODEC_ID_FFWAVESYNTH, + Id::SONIC => AV_CODEC_ID_SONIC, + Id::SONIC_LS => AV_CODEC_ID_SONIC_LS, + Id::PAF_AUDIO => AV_CODEC_ID_PAF_AUDIO, + Id::OPUS => AV_CODEC_ID_OPUS, + Id::TAK => AV_CODEC_ID_TAK, + Id::EVRC => AV_CODEC_ID_EVRC, + Id::SMV => AV_CODEC_ID_SMV, + Id::DSD_LSBF => AV_CODEC_ID_DSD_LSBF, + Id::DSD_MSBF => AV_CODEC_ID_DSD_MSBF, + Id::DSD_LSBF_PLANAR => AV_CODEC_ID_DSD_LSBF_PLANAR, + Id::DSD_MSBF_PLANAR => AV_CODEC_ID_DSD_MSBF_PLANAR, + + /* subtitle codecs */ + Id::DVD_SUBTITLE => AV_CODEC_ID_DVD_SUBTITLE, + Id::DVB_SUBTITLE => AV_CODEC_ID_DVB_SUBTITLE, + Id::TEXT => AV_CODEC_ID_TEXT, + Id::XSUB => AV_CODEC_ID_XSUB, + Id::SSA => AV_CODEC_ID_SSA, + Id::MOV_TEXT => AV_CODEC_ID_MOV_TEXT, + Id::HDMV_PGS_SUBTITLE => AV_CODEC_ID_HDMV_PGS_SUBTITLE, + Id::DVB_TELETEXT => AV_CODEC_ID_DVB_TELETEXT, + Id::SRT => AV_CODEC_ID_SRT, + Id::MICRODVD => AV_CODEC_ID_MICRODVD, + Id::EIA_608 => AV_CODEC_ID_EIA_608, + Id::JACOSUB => AV_CODEC_ID_JACOSUB, + Id::SAMI => AV_CODEC_ID_SAMI, + Id::REALTEXT => AV_CODEC_ID_REALTEXT, + Id::STL => AV_CODEC_ID_STL, + Id::SUBVIEWER1 => AV_CODEC_ID_SUBVIEWER1, + Id::SUBVIEWER => AV_CODEC_ID_SUBVIEWER, + Id::SUBRIP => AV_CODEC_ID_SUBRIP, + Id::WEBVTT => AV_CODEC_ID_WEBVTT, + Id::MPL2 => AV_CODEC_ID_MPL2, + Id::VPLAYER => AV_CODEC_ID_VPLAYER, + Id::PJS => AV_CODEC_ID_PJS, + Id::ASS => AV_CODEC_ID_ASS, + + /* other specific kind of codecs (generally used for attachments) */ + Id::TTF => AV_CODEC_ID_TTF, + Id::BINTEXT => AV_CODEC_ID_BINTEXT, + Id::XBIN => AV_CODEC_ID_XBIN, + Id::IDF => AV_CODEC_ID_IDF, + Id::OTF => AV_CODEC_ID_OTF, + Id::SMPTE_KLV => AV_CODEC_ID_SMPTE_KLV, + Id::DVD_NAV => AV_CODEC_ID_DVD_NAV, + Id::TIMED_ID3 => AV_CODEC_ID_TIMED_ID3, + Id::BIN_DATA => AV_CODEC_ID_BIN_DATA, + + Id::PROBE => AV_CODEC_ID_PROBE, + + Id::MPEG2TS => AV_CODEC_ID_MPEG2TS, + Id::MPEG4SYSTEMS => AV_CODEC_ID_MPEG4SYSTEMS, + Id::FFMETADATA => AV_CODEC_ID_FFMETADATA + } + } +} diff --git a/src/codec/mod.rs b/src/codec/mod.rs index c97d1d6..5d1508b 100644 --- a/src/codec/mod.rs +++ b/src/codec/mod.rs @@ -1,3 +1,6 @@ +pub mod id; +pub use self::id::Id; + use std::ffi::CStr; use std::str::from_utf8_unchecked;