<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p><br>
</p>
<p></p>
<p class="p1"><span class="s1">Hi ,</span></p>
<p class="p1"><span class="s1"><br>
</span></p>
<p class="p1"><span class="s1">  We are trying to capture frame in ios from Gstreamer Pipeline but not able to convert buffer in to CIImage.</span></p>
<p class="p1"><span class="s1">Please find the code below for reference:</span></p>
<p class="p1"><span class="s1"> </span></p>
<p class="p1"><span class="s1"></span></p>
<p class="p1"><span class="s1">static</span><span class="s2"> </span><span class="s3">GstFlowReturn</span><span class="s2"> new_sample(</span><span class="s3">GstAppSink</span><span class="s2"> *appsink,
</span><span class="s3">gpointer</span><span class="s2"> data1)</span></p>
<p class="p1"><span class="s2">{</span></p>
<p class="p2"><span class="s2"> </span></p>
<p class="p2"><span class="s2"> </span></p>
<p class="p3"><span class="s4">    </span><span class="s2">CMSampleBufferRef</span><span class="s4"> *buffer =</span><span class="s1">Nil</span><span class="s4">;</span></p>
<p class="p1"><span class="s2">    </span><span class="s3">g_signal_emit_by_name</span><span class="s2"> (appsink,
</span><span class="s5">"pull-buffer"</span><span class="s2">, &buffer);</span></p>
<p class="p1"><span class="s2">    </span><span class="s1">if</span><span class="s2"> (buffer) {</span></p>
<p class="p4"><span class="s4">        </span><span class="s2">/* The only thing we do in this example is print a * to indicate a received buffer */</span></p>
<p class="p4"><span class="s4">    </span><span class="s2">//g    g_print ("*");</span></p>
<p class="p2"><span class="s2">        </span></p>
<p class="p3"><span class="s4">        </span><span class="s2">CVPixelBufferRef</span><span class="s4"> pixelBuffer = (</span><span class="s2">CVPixelBufferRef</span><span class="s4">)</span><span class="s2">CMSampleBufferGetImageBuffer</span><span class="s4">(*buffer);</span></p>
<p class="p3"><span class="s4">        </span><span class="s2">CIImage</span><span class="s4">* image = [</span><span class="s2">CIImage</span><span class="s4">
</span><span class="s2">imageWithCVPixelBuffer</span><span class="s4">:pixelBuffer];</span></p>
<p class="p4"><span class="s4">      </span><span class="s2">//  NSLog(@"image...%@",image);</span></p>
<p class="p1"><span class="s2">        </span><span class="s3">gst_buffer_unref</span><span class="s2"> (buffer);</span></p>
<p class="p1"><span class="s2">    }</span></p>
<p class="p4"> </p>
<p class="p4"><span class="s2"></span></p>
<p class="p3"><span class="s4">    </span><span class="s1">return</span><span class="s4">
</span><span class="s2">GST_FLOW_OK</span><span class="s4">;</span></p>
<p class="p1"><span class="s2">}</span></p>
<p class="p1"><span class="s2"><br>
</span></p>
<p class="p1"><span class="s2"><br>
</span></p>
<p class="p1"><span class="s2">Pipeline and setting Callabck:</span></p>
<p class="p1"><span class="s2"></p>
<p class="p1"><span class="s1"> pipeline = gst_parse_launch("udpsrc port=5000 caps =\"application/x-rtp, media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264\" ! rtph264depay ! ffdec_h264 !  appsink name=sink sync=false  async=false",&error
 );</span></p>
<br>
</span>
<p></p>
<p class="p1"><span class="s2"></p>
<p class="p1"><span class="s1"> sink = </span><span class="s2">gst_bin_get_by_name</span><span class="s1"> (</span><span class="s3">GST_BIN</span><span class="s1"> (</span><span class="s2">pipeline</span><span class="s1">),
</span><span class="s4">"sink"</span><span class="s1">);</span></p>
<p class="p2"><span class="s2">    </span></p>
<p class="p1"><span class="s1">    </span><span class="s2">gst_app_sink_set_emit_signals</span><span class="s1">((</span><span class="s2">GstAppSink</span><span class="s1">*)sink,
</span><span class="s3">true</span><span class="s1">);</span></p>
<p class="p1"><span class="s1">    </span><span class="s2">gst_app_sink_set_drop</span><span class="s1">((</span><span class="s2">GstAppSink</span><span class="s1">*)sink,
</span><span class="s3">true</span><span class="s1">);</span></p>
<p class="p1"><span class="s1">    </span><span class="s2">gst_app_sink_set_max_buffers</span><span class="s1">((</span><span class="s2">GstAppSink</span><span class="s1">*)sink, 1);</span></p>
<p class="p1"><span class="s1">    </span><span class="s2">GstAppSinkCallbacks</span><span class="s1"> callbacks = {
</span><span class="s3">NULL</span><span class="s1">, </span><span class="s2">new_preroll</span><span class="s1">,</span><span class="s2">new_sample</span><span class="s1"> };</span></p>
<p class="p3"><span class="s2">    </span><span class="s5">gst_app_sink_set_callbacks</span><span class="s2"> (</span><span class="s3">GST_APP_SINK</span><span class="s2">(sink), &callbacks, (</span><span class="s3">__bridge</span><span class="s2">
</span><span class="s5">gpointer</span><span class="s2">)(</span><span class="s3">self</span><span class="s2">),
</span><span class="s3">NULL</span><span class="s2">);</span></p>
<p class="p2"><span class="s2"></span><br>
</p>
<br>
</span>
<p></p>
<p class="p1"><span class="s2">Please let me know how we can solve this problem.If you have any more process please let me know how we convert buffer to CIImage.</span></p>
<p class="p1"><span class="s2"><br>
</span></p>
<p></p>
<p></p>
<div id="Signature">
<div id="divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
Thanks,<br>
<div>Raushan<br>
</div>
</div>
</div>
</div>
</body>
</html>