2012-07-27 32 views
5

Tôi đang cố gắng viết một plugin gstreamer trong C++, sử dụng các liên kết GStreamermm. Bây giờ, có một hướng dẫn người viết plugin tốt (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/) và trên web có nhiều ví dụ và mẫu khác nhau, nhưng đối với gstreamermm, có rất ít lượng tài liệu nào.GStreamer plugin với GStreamermm (C++)

Tôi biết tôi chỉ có thể sử dụng hỗn hợp của C và C++, nhưng việc sử dụng các ràng buộc C++ có vẻ thanh lịch hơn rất nhiều.

Đơn giản chỉ cần 'dịch' các ví dụ được tìm thấy trong gstreamer pwg thành gstreamermm là loại kết thúc chết; gstreamer yêu cầu sử dụng một vài macro để xác định các loại, mà tôi không thể nhìn thấy một bản dịch gstreamermm ngay lập tức. Ngoài ra, tôi chỉ có ít kinh nghiệm với gstreamer, và hoàn toàn không có kinh nghiệm với gobj (cho đến nay).

Có ai có thể đưa tôi đi đúng hướng không? Ngay cả những ví dụ hay giải thích nhỏ nhất sẽ làm.

Cảm ơn

+1

Có thể yêu cầu kênh #gstreamer trên irc.freenode.net có thể giúp bạn trả lời. Nếu bạn làm thế, nó sẽ tuyệt vời nếu bạn trả lời câu hỏi này với nó. – joar

+0

Xem câu trả lời cho [câu hỏi của tôi] (http://stackoverflow.com/questions/9609201/gstreamermm-creating-a-new-element-type-in-plugin-by-deriving-from-gstele). Bạn có thể quan tâm đến bản vá của tôi. – peper0

Trả lời

3

Tôi đã yêu cầu này vào danh sách gửi thư gtkmm một vài ngày trước đây, và nhận được câu trả lời sau đây (từ José Alburquerque):

Hiện nay, chỉ plug-in mà có một khả năng (có thể không tồn tại) được phát triển bằng cách sử dụng gstreamermm là những người là riêng cho các ứng dụng. Nếu có thể, các plugin này sẽ được đăng ký bằng phương pháp Gst :: Plugin :: register_static() [1] và không phải là quy trình mà bạn đã mô tả ở trên.

[1] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Plugin.html#ac0728bb285ae1bed9298c0f9ea522ad9

Về lý thuyết, người ta sẽ mở rộng một trong các lớp cơ sở gstreamermm [2] và gọi GST :: ElementFactory :: register_element() [3] phương pháp trong GST :: Plugin :: Khe SlotInit (gọi lại) sao cho một nhà máy phần tử có thể tạo ra các phần tử này có thể được tạo ra . Sau đó, nhà máy đó có thể được thêm vào sổ đăng ký bằng cách sử dụng Gst :: Registry :: add_feature() [4] trong các khe cắm Gst :: Plugin :: SlotInit giống nhau như .

[2] http://developer.gnome.org/gstreamermm/unstable/group__GstBaseClasses.html

[3] Phương pháp GST :: ElementFactory :: register_element() là một phương pháp rằng Chưa thực hiện nhưng sẽ quấn gst_element_register() chức năng. Đó sẽ là một phần của bản phát hành sắp tới.

[4] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Registry.html#ae1f9a1ddd60ef5a7e1f8cddf14ec404f

tôi đã không kiểm tra này và không thực sự biết chính xác làm thế nào nó sẽ làm việc (hoặc nếu nó thực sự sẽ) nhưng nó là cách tôi muốn thử nếu tôi phải làm thế. Tuy nhiên, Tôi nghĩ sẽ dễ dàng hơn khi viết trình cắm trong C, nhưng đó là chỉ là vấn đề giúp mọi thứ trở nên dễ dàng hơn.