2016-03-30 35 views
2

ウェブカメラからデータを取り込んで処理するパイプラインがあります。 iはappsinkにそのバッファを引くとappsrc要素を使用してパイプラインにそれをプッシュする必要がある処理についてgstbufferの使用中にメモリリークが発生する

私は押しているうちにgst_buffer_new_wrappedの機能を使用していました。

次に、データをプッシュするたびに新しいバッファが割り当てられます。しかし、その記憶を解放する方法が問題です。

私はgst_buffer_unref(バッファ)を試みました。

次に、以下のエラーが発生しました。

Error in `./uuHiesSoaServer': free(): invalid pointer: 0x00007fddf52f6000 

私はデータを符号なしのcharポインタに入れてから、そのサイズに基づいてgstbufferにラップしました。

割り当てられたメモリを解放するにはどうすればいいですか?

g_signal_emit_by_name (Source, "push-buffer", Buffer, &ret); 

上記の関数をソース(appsrc)にプッシュするために使用しました。

この関数は、別のスレッドで継続的に呼び出します。

それに利用可能なデータは、その後、スレッド関数が

gst_buffer_new_wrapped((void *)data, Size); 

を使用してバッファを作成するvalgrindのチェックイン時と、メモリリークのために、上記の行が漏れとして示されました。

これを解決するにはどうすればよいですか?

答えて

1

どのようにバッファをappsrcにプッシュしますか?

あなたがgst_app_src_push_buffer機能を使用する場合、私はgst_app_src_push_bufferが(それはまたそれを解放することを意味する)必要なデータのコールバックを使用する場合は、あなたがする必要があるかもしれませんthis example

チェックのバッファを所有することになるので、あなたが自由なリソースを持っていないと思います無料のデータ - あなたが私の答えで必要データについての第二の例をチェックしたthis example

HTH

+0

チェック一度質問をチェックし、私はそれ –

+0

@PrasanthKumarArisetti更新しますか?彼らはあなたとまったく同じ方法を使用している;) – nayana

+0

ありがとう。今は正常に動作します。 –

関連する問題