私はCでこの機能を持っています
int Encoder_GetCurrentCodecType()
{
if (current_codec != NULL)
return (int) current_codec->type;
return AVMEDIA_TYPE_UNKNOWN;
}
ただし、関数は各コーデック タイプのコードを返します。いいね: 0,1,2,3,4,5,6,7
関数でテストを行っている場合は、次のように入力します。AVMediaType::
次に、7つのコーデックのタイプすべてのリストが表示されます。たとえば、次のとおりです。
AVMEDIA_TYPE_AUDIO
だから私は int のような関数を作りたいのですが、string
それconst char*
はコードではなく型の名前を返します。
どうすればできますか?
編集
Cファイルで私がした:
const char* Encoder_av_get_media_type_string(enum AVMediaType media_type)
{
switch (media_type) {
case AVMEDIA_TYPE_VIDEO: return "video";
case AVMEDIA_TYPE_AUDIO: return "audio";
case AVMEDIA_TYPE_DATA: return "data";
case AVMEDIA_TYPE_SUBTITLE: return "subtitle";
case AVMEDIA_TYPE_ATTACHMENT: return "attachment";
default: return NULL;
}
}
次に、C と C++ を接続するヘッダー ファイルで、次のことを行いました。
const char* Encoder_av_get_media_type_string(enum AVMediaType media_type);
次に、C++ ヘッダー ファイルで次のことを行いました。
property List<String^> ^GetCodec
{
List<String^>^ get()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
s = gcnew String(Encoder_av_get_media_type_string(avm));
l->Add(s);
return l;
}
}
次に、CSHARP で次のことを行いました。
for (int i = 0; i < f.GetCodec.Count; i++)
{
ss.Add(f.GetCodec[i]);
}
したがって、C++ では、f.GetCodec を作成するときに CSHARP で何かを行うと考えていたプロパティであってはなりません。次に、すべてのコーデックのタイプ名のリストが表示されます。
私が f.GetCodec.Add を行っているときのようなプロパティのように、プロパティのリストを見る f.GetCodec. (そして、ここですべてのタイプ名のリストになります)
それが不可能な場合は、CSHARP ですべての型名を含むリストを作成するだけです。
しかし、今のところ、「ビデオ」という名前は 1 つだけです。