Bonjour,

J'effectue le rendu de mon flux à l'aide d'un wxWidget ImagePanel (m_renderwindow dans mon code) comme dans l'image :

Nom : W4n3X.jpeg
Affichages : 323
Taille : 81,3 Ko

Le problème est qu'il y a des bandes noires en haut et en bas que je ne parviens pas à supprimer. J'ai essayé gst_video_overlay_set_render_rectangle, mais tout est noir et le flux ne s'affiche pas. Quelqu'un a-t-il une idée ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    GstState state;
    GstState pending;
    GstPad* pad = nullptr;
    GError* error = NULL;
    GstElement* source;
    GstElement* clocktime;
    GstElement* textoverlay;
    GstCaps* caps = gst_caps_new_simple("application/x-rtp",
        "media", G_TYPE_STRING, "video",
        "payload", G_TYPE_INT, 96,
        "encoding-name", G_TYPE_STRING, "H264",
        NULL);
 
    (*ptrstats).pipeline = gst_parse_launch("udpsrc name=source !rtph264depay !h264parse !avdec_h264 ! videoconvert !d3dvideosink name=mysink sync=false ", &error);
 
    if (!(*ptrstats).pipeline) {
        outfile << "Load video : ", error->message, "\n";
        exit(1);
    }
 
    source = gst_bin_get_by_name(GST_BIN((*ptrstats).pipeline), "source");
    g_object_set(G_OBJECT(source), "caps", caps, NULL);
    g_object_set(G_OBJECT(source), "port", m_port, NULL);
 
    pad = gst_element_get_static_pad(source, "src");
    gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, (GstPadProbeCallback)buffer_out_cb, ptrstats, NULL);
    gst_object_unref(pad);
 
#ifdef __WXGTK__
    outfile << "__WXGTK__\n";
    GstElement* sink = gst_bin_get_by_name((GstBin*)(*ptrstats).pipeline, "mysink");
    gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), m_xid);
#elif defined __WXMSW__
    GstElement* sink = gst_bin_get_by_name((GstBin*)(*ptrstats).pipeline, "mysink");
    WXWidget hwnd = m_renderWindow->GetHandle();
    //gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(sink), 0, 0, 1224, 1024);
    gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink),
        reinterpret_cast<guintptr>(hwnd));
#endif
 
 
    gst_element_set_state((*ptrstats).pipeline, GST_STATE_PLAYING);