1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:47:35 +00:00

LibVideo: Add the concept of codec identifiers

This is required for detecting which decoder should be used.
Only a small subset of codecs identifiers is added for now
This commit is contained in:
Stephan Vedder 2023-11-22 14:48:06 +01:00 committed by Luke Wilde
parent ff48b7333c
commit 1f55cc942d
5 changed files with 135 additions and 2 deletions

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2023, Stephan Vedder <stephan.vedder@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Format.h>
namespace Video {
enum class CodecID : u32 {
Unknown,
// On2 / Google
VP8,
VP9,
// MPEG
H261,
MPEG1,
H262,
H263,
H264,
H265,
// AOMedia
AV1,
// Xiph
Theora,
Vorbis,
Opus,
};
}
namespace AK {
template<>
struct Formatter<Video::CodecID> : Formatter<StringView> {
ErrorOr<void> format(FormatBuilder& builder, Video::CodecID value)
{
StringView codec;
switch (value) {
case Video::CodecID::Unknown:
codec = "Unknown"sv;
break;
case Video::CodecID::VP8:
codec = "VP8"sv;
break;
case Video::CodecID::VP9:
codec = "VP9"sv;
break;
case Video::CodecID::H261:
codec = "H.261"sv;
break;
case Video::CodecID::H262:
codec = "H.262"sv;
break;
case Video::CodecID::H263:
codec = "H.263"sv;
break;
case Video::CodecID::H264:
codec = "H.264"sv;
break;
case Video::CodecID::H265:
codec = "H.265"sv;
break;
case Video::CodecID::MPEG1:
codec = "MPEG1"sv;
break;
case Video::CodecID::AV1:
codec = "AV1"sv;
break;
case Video::CodecID::Theora:
codec = "Theora"sv;
break;
case Video::CodecID::Vorbis:
codec = "Vorbis"sv;
break;
case Video::CodecID::Opus:
codec = "Opus"sv;
break;
}
return builder.put_string(codec);
}
};
}