我有这个函数在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
如果我正在为函数i类型中的测试做: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++中它不应该是属性,我想在CSHARP中做一些事情,当我做f.t getcodec。然后它会显示一个包含所有编解码器类型名称的列表。
就像一个属性,当我在做。getcodec . add和查看属性列表,所以f.t getcodec。(这里我将列出所有类型的名称)
如果不可能,那么就在CSHARP中创建一个包含所有类型名称的列表。
但是现在我只得到一个名字"video",就是这样。
根据此,存在一个函数来完成此操作。
const char* av_get_media_type_string(enum AVMediaType media_type)