pass d3dvideosink a window id
jacob s
jacobhameiri at gmail.com
Wed Jun 26 08:53:41 PDT 2013
OK, I was missing ShowWindow()
Thanks for you help.
2013/6/26 jacob s <jacobhameiri at gmail.com>
> I forgot to name the d3dvideosink.
> fixed to:
> pipeline = gst_parse_launch ("videotestsrc ! videoconvert ! d3dvideosink
> name=thed3dvideosink",NULL);
> d3dvideosink_element =
> gst_bin_get_by_name((GstBin*)pipeline,"thed3dvideosink");
>
> now it doesn't show a window at all ( also no error reported )
>
>
> 2013/6/26 jacob s <jacobhameiri at gmail.com>
>
>> Thanks,
>>
>> Tried this code, but it still opens the default windows:
>>
>> #include <gst/gst.h>
>> #include <gst/video/videooverlay.h>
>> #include "windows.h"
>>
>> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
>> lParam)
>> {
>> switch(msg)
>> {
>> case WM_CLOSE:
>> DestroyWindow(hwnd);
>> break;
>> case WM_DESTROY:
>> PostQuitMessage(0);
>> break;
>> default:
>> return DefWindowProc(hwnd, msg, wParam, lParam);
>> }
>> return 0;
>> }
>>
>>
>> int main(int argc, char *argv[]) {
>> GstElement *pipeline;
>> GstBus *bus;
>> GstMessage *msg;
>> GstElement* d3dvideosink_element;
>> HWND video_window;
>> WNDCLASS WndClass;
>> DWORD err = 0 ;
>> WNDCLASSEX wc;
>>
>> /* Initialize GStreamer */
>> gst_init (&argc, &argv);
>>
>> /* Build the pipeline */
>> pipeline = gst_parse_launch ("videotestsrc ! videoconvert !
>> d3dvideosink",NULL);
>> d3dvideosink_element =
>> gst_bin_get_by_name((GstBin*)pipeline,"d3dvideosink");
>>
>>
>> wc.cbSize = sizeof(WNDCLASSEX);
>> wc.style = 0;
>> wc.lpfnWndProc = WndProc;
>> wc.cbClsExtra = 0;
>> wc.cbWndExtra = 0;
>> wc.hInstance = GetModuleHandle(NULL);
>> wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
>> wc.hCursor = LoadCursor(NULL, IDC_ARROW);
>> wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
>> wc.lpszMenuName = NULL;
>> wc.lpszClassName = L"myWindowClass";
>> wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
>>
>> if(!RegisterClassEx(&wc))
>> {
>> MessageBox(NULL, L"Window Registration Failed!", L"Error!",
>> MB_ICONEXCLAMATION | MB_OK);
>> return 0;
>> }
>>
>>
>> video_window = CreateWindowEx(
>> WS_EX_CLIENTEDGE,
>> L"myWindowClass",
>> L"The title of my window",
>> WS_OVERLAPPEDWINDOW,
>> CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
>> NULL, NULL, GetModuleHandle(NULL), NULL);
>>
>>
>> err = GetLastError();
>>
>>
>> gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(d3dvideosink_element),(guintptr)video_window);
>>
>> /* Start playing */
>> gst_element_set_state(pipeline, GST_STATE_PLAYING);
>>
>> /* Wait until error or EOS */
>> bus = gst_element_get_bus (pipeline);
>> msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
>> GST_MESSAGE_EOS);
>>
>> /* Free resources */
>> if (msg != NULL)
>> gst_message_unref (msg);
>> gst_object_unref (bus);
>> gst_element_set_state (pipeline, GST_STATE_NULL);
>> gst_object_unref (pipeline);
>>
>> return 0;
>> }
>>
>>
>>
>>
>> 2013/6/26 Sebastian Dröge <slomo at circular-chaos.org>
>>
>>> On Mi, 2013-06-26 at 12:06 +0300, jacob s wrote:
>>> > Hi,
>>> >
>>> >
>>> > Is it possible to pass d3dvideosink a windows id ? how ?
>>> >
>>> > if not what sink should I use to show my own custom window ( version
>>> > 1.0 on windows ) and how ?
>>>
>>> You can use gst_video_overlay_set_window_handle() on the sink, the same
>>> way you do it on other platforms. Alternative you can also set it on
>>> playbin and it will propagate that value to the sink.
>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20130626/21b48d7c/attachment-0001.html>
More information about the gstreamer-devel
mailing list