C++ Utility Classes and Functions

This topic lists the utility classes and functions used by the C++ code snippets on this site. The functions are from the info_stream_file and info_metadata_file macOS samples.

Classes

stdout_utf16

class stdout_utf16
{
public:
    stdout_utf16()
    {
        // Change stdout to Unicode. 
        // Cyrillic and Ideographic characters will appear in the console (console is unicode).
        _setmode(_fileno(stdout), _O_U16TEXT);
    }

    ~stdout_utf16()
    {
        // restore ANSI mode
        _setmode(_fileno(stdout), _O_TEXT); 
    }
};

Functions

bitrateModeName

static const char* bitrateModeName(BitrateMode::Enum mode)
{
    switch (mode)
    {
        case BitrateMode::Unknown:  return "Unknown";
        case BitrateMode::ABR:      return "ABR";
        case BitrateMode::CBR:      return "CBR";
        case BitrateMode::VBR:      return "VBR";
        default:                    return "???";
    }
}

colorFormatName

static const char* colorFormatName(ColorFormat::Enum color)
{
    switch (color)
    {
        case ColorFormat::GRAY:     return "GRAY";
        case ColorFormat::Unknown:  return "Unknown";
        case ColorFormat::NV12:     return "NV12";
        case ColorFormat::BGR24:    return "BGR24";
        case ColorFormat::BGR32:    return "BGR32";
        case ColorFormat::BGRA32:   return "BGRA32";
        case ColorFormat::BGR444:   return "BGR444";
        case ColorFormat::BGR555:   return "BGR555";
        case ColorFormat::BGR565:   return "BGR565";
        case ColorFormat::UYVY:     return "UYVY";
        case ColorFormat::Y411:     return "Y411";
        case ColorFormat::Y41P:     return "Y41P";
        case ColorFormat::YUV411:   return "YUV411";
        case ColorFormat::YUV420:   return "YUV420";
        case ColorFormat::YUV420A:  return "YUV420A";
        case ColorFormat::YUV422:   return "YUV422";
        case ColorFormat::YUV422A:  return "YUV422A";
        case ColorFormat::YUV444:   return "YUV444";
        case ColorFormat::YUV444A:  return "YUV444A";
        case ColorFormat::YUY2:     return "YUY2";
        case ColorFormat::YV12:     return "YV12";
        case ColorFormat::YVU9:     return "YVU9";
        default:                    return "???";
    }
}

scanTypeName

static const char* scanTypeName(ScanType::Enum scan)
{
    switch (scan)
    {
        case ScanType::Progressive:       return "Progressive";
        case ScanType::BottomFieldFirst:  return "BottomFieldFirst";
        case ScanType::TopFieldFirst:     return "TopFieldFirst";
        case ScanType::Unknown:           return "Unknown";
        default:                          return "???";
    }
}

mediaTypeName

static const char* mediaTypeName(MediaType::Enum mt)
{
    switch (mt)
    {
        case MediaType::Unknown: return "Unknown";
        case MediaType::Audio:   return "Audio";
        case MediaType::Video:   return "Video";
        case MediaType::Text:    return "Text";
        case MediaType::Data:    return "Data";
        default:                 return "???";
    }
}

metaPictureTypeName

const char* metaPictureTypeName(MetaPictureType::Enum pictype)
{
    switch (pictype)
    {
        case MetaPictureType::Other:               return "Other";
        case MetaPictureType::FileIcon:            return "FileIcon";
        case MetaPictureType::OtherFileIcon:       return "OtherFileIcon";
        case MetaPictureType::FrontCover:          return "FrontCover";
        case MetaPictureType::BackCover:           return "BackCover";
        case MetaPictureType::LeafletPage:         return "LeafletPage";
        case MetaPictureType::Media:               return "Media";
        case MetaPictureType::LeadArtist:          return "LeadArtist";
        case MetaPictureType::Artist:              return "Artist";
        case MetaPictureType::Conductor:           return "Conductor";
        case MetaPictureType::Band:                return "Band";
        case MetaPictureType::Composer:            return "Composer";
        case MetaPictureType::TextWriter:          return "TextWriter";
        case MetaPictureType::RecordingLocation:   return "RecordingLocation";
        case MetaPictureType::DuringRecording:     return "DuringRecording";
        case MetaPictureType::DuringPerformance:   return "DuringPerformance";
        case MetaPictureType::VideoCapture:        return "VideoCapture";
        case MetaPictureType::BrightColoredFish:   return "BrightColoredFish";
        case MetaPictureType::Illustration:        return "Illustration";
        case MetaPictureType::ArtistLogotype:      return "ArtistLogotype";
        case MetaPictureType::PublisherLogotype:   return "PublisherLogotype";
        default:                                   return "unknown";
    }
}

streamSubTypeName

static const char* streamSubTypeName(StreamSubType::Enum sst)
{
    switch (sst)
    {
        case StreamSubType::Unknown:                 return "Unknown";
        case StreamSubType::None:                    return "None";
        case StreamSubType::AVC1:                    return "AVC1";
        case StreamSubType::AVC_Annex_B:             return "AVC_Annex_B";
        case StreamSubType::HVC1:                    return "HVC1";
        case StreamSubType::HEVC_Annex_B:            return "HEVC_Annex_B";
        case StreamSubType::AAC_RAW:                 return "AAC_RAW";
        case StreamSubType::AAC_ADTS:                return "AAC_ADTS";
        case StreamSubType::AAC_ADIF:                return "AAC_ADIF";
        case StreamSubType::AAC_MP4:                 return "AAC_MP4";
        case StreamSubType::MPEG_TS_BDAV:            return "MPEG_TS_BDAV";
        case StreamSubType::MPEG_Audio_Layer1:       return "MPEG_Audio_Layer1";
        case StreamSubType::MPEG_Audio_Layer2:       return "MPEG_Audio_Layer2";
        case StreamSubType::MPEG_Audio_Layer3:       return "MPEG_Audio_Layer3";
        case StreamSubType::G726_PACKED_AAL2:        return "G726_PACKED_AAL2";
        case StreamSubType::G726_PACKED_RFC3551:     return "G726_PACKED_RFC3551";
        case StreamSubType::MPEG1_System:            return "MPEG1_System";
        case StreamSubType::MPEG2_System:            return "MPEG2_System";
        default:                                     return "???";
    }
}

streamTypeName

static const char* streamTypeName(StreamType::Enum st)
{
    switch (st)
    {
        // video
        case StreamType::H261:              return "H261";
        case StreamType::H263:              return "H263";
        case StreamType::H264:              return "H264";
        case StreamType::H265:              return "H265";
        case StreamType::MJPEG:             return "MJPEG";
        case StreamType::MPEG1_Video:       return "MPEG1_Video";
        case StreamType::MPEG2_Video:       return "MPEG2_Video";
        case StreamType::MPEG4_Video:       return "MPEG4_Video";
        case StreamType::UncompressedVideo: return "UncompressedVideo";
        case StreamType::VC1:               return "VC1";
        case StreamType::WMV:               return "WMV";
        case StreamType::AVS:               return "AVS";
        case StreamType::VP8:               return "VP8";
        case StreamType::VP9:               return "VP9";
        case StreamType::AV1:               return "AV1";
        case StreamType::Theora:            return "Theora";
        // audio
        case StreamType::LPCM:              return "LPCM";
        case StreamType::ALAW_PCM:          return "ALAW_PCM";
        case StreamType::MULAW_PCM:         return "MULAW_PCM";
        case StreamType::G726_ADPCM:        return "G726_ADPCM";
        case StreamType::VIDEO_DVD_PCM:     return "VIDEO_DVD_PCM";
        case StreamType::AC3:               return "AC3";
        case StreamType::DTS:               return "DTS";
        case StreamType::MPEG_Audio:        return "MPEG_Audio";
        case StreamType::Vorbis:            return "Vorbis";
        case StreamType::Opus:              return "Opus";
        case StreamType::AAC:               return "AAC";
        case StreamType::AMRNB:             return "AMRNB";
        case StreamType::AMRWB:             return "AMRWB";
        case StreamType::WMA:               return "WMA";
        // images
        case StreamType::BMP:               return "BMP";
        case StreamType::GIF:               return "GIF";
        case StreamType::JPEG:              return "JPEG";
        case StreamType::PNG:               return "PNG";
        case StreamType::TIFF:              return "TIFF";
        // containers
        case StreamType::AVI:               return "AVI";
        case StreamType::MP4:               return "MP4";
        case StreamType::ASF:               return "ASF";
        case StreamType::MPEG_PS:           return "MPEG_PS";
        case StreamType::MPEG_TS:           return "MPEG_TS";
        case StreamType::MPEG_PES:          return "MPEG_PES";
        case StreamType::WAVE:              return "WAVE";
        case StreamType::FLV:               return "FLV";
        case StreamType::WebM:              return "WebM";
        case StreamType::OGG:               return "Ogg";
        case StreamType::IVF:               return "IVF";
        // data
        case StreamType::MPEG_PSI_PACKETS:  return "MPEG_PSI_PACKETS";
        case StreamType::MPEG_TS_PACKETS:   return "MPEG_TS_PACKETS";
        case StreamType::Teletext:          return "Teletext";
        case StreamType::Unknown:           return "Unknown";
        default:                            return "???";
    }
}