0

次のようにコーディングしますが、rec_settings.profileが期待するように、rb_gst_get_encoding_profileはgchar*を返しません。

typedef struct Recording_Settings recording_settings;
struct Recording_Settings
{
    gchar *profile;
    gchar *destination;
};
recording_settings rec_settings;

typedef struct _GstEncodingProfile GstEncodingProfile;
GstEncodingProfile *rb_gst_get_encoding_profile (const char *media_type);

警告:互換性のないポインタ型からの割り当て:

rec_settings.profile = gconf_client_get_string(client, "/apps/sound/recording/profile", NULL);
if (!rec_settings.profile)
    rec_settings.profile = g_strdup("audio/x-vorbis");

static void profile_combo_change_cb(GtkComboBox *combo, gpointer userdata)
{
    GtkTreeIter iter;
    GtkTreeModel *model;

    /* Grab the encoding profile choosen */
    model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
    if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo), &iter)) {
        gchar *media_type;
        gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 0, &media_type, -1);
        rec_settings.profile = rb_gst_get_encoding_profile(media_type); // Warning: assignment from incompatible pointer type
        g_free (media_type);
    }
}

私はそれらを修正しようとします。これを行う方法は何ですか?

ありがとう

audio_profile_combo = audio_profile_chooser_new();
gchar *media_type;
media_type = rb_gst_encoding_profile_get_media_type(rec_settings.profile); // Warning: assignment from incompatible pointer type
audio_profile_chooser_set_active(audio_profile_combo, media_type);
g_free (media_type);
4

2 に答える 2

0

この行で:

rec_settings.profile = rb_gst_get_encoding_profile(media_type);

media_typeはですgchar *が、関数rb_gst_get_encoding_profileはを必要としconst char *ます。それがエラーの原因です。

編集:関数自体がを返すことは言うまでもなく、GstEncodingProfile *あなたはそれをに割り当てようとしています。rec_settings.profileこれはgchar *です。

于 2013-02-11T03:06:23.403 に答える
0

Recording_Settings構造体を次のように変更します。

struct Recording_Settings
{
    GstEncodingProfile *profile;
    gchar *destination;
};

少なくとも、それは私が入手可能な小さな情報から行うべきことです。

于 2013-02-11T03:08:32.787 に答える