0

私は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 つだけです。

4

1 に答える 1

1

thisによると、まさにそれを行う機能が存在します。

const char* av_get_media_type_string(enum AVMediaType media_type)
于 2013-05-05T21:29:59.597 に答える