<div>Hi All,</div>
<div> This is regarding dynamic resolution change while decoding a stream. For Example CIF to D1.</div>
<div>I am using the following:</div>
<div>IL client : gst-openmax.10.1 </div>
<div>Openmax Core : libomxil-bellagio-0.9.3</div>
<div>Video decoder component : libomxffmpegdist-0.1</div>
<div>In my setup, the IL client is allocating the openmax buffers(i.e port->omx_allocate = false) and this is my requirement.</div>
<div> </div>
<div> </div>
<div>Dynamic resolution change is currrently not working. Hence, I tried the following:</div>
<div>Step 1 : In Video Decoder component, returning the Output buffer. Changing the inPort and outPort settings.</div>
<div> Changed the WxH in both the ports and the outPort's buffer size. </div>
<div>Step 2: Send the "OMX_EventPortSettingsChanged" using the event handler callback.</div>
<div>Step 3: As a result, the IL client(gst-openmax) settings_changed_cb() is called. In this function,</div>
<div> I am doing the following, before gst_pad_set_caps (omx_base->srcpad, new_caps) :</div>
<div> {</div>
<div> port = get_port (core, 1);</div>
<div> GST_INFO_OBJECT (omx_base, "Calling g_omx_port_disable(port) in %s\n",__func__);<br> g_omx_port_disable(port);<br> GST_INFO_OBJECT (omx_base, "g_omx_port_disable(port) completed in %s\n",__func__);</div>
<div> port->buffer_size = 352*288*1.5;</div>
<div> GST_INFO_OBJECT (omx_base, "Calling g_omx_port_enable(port) in %s\n",__func__);<br> g_omx_port_enable(port);<br> GST_INFO_OBJECT (omx_base, "g_omx_port_enable(port) completed in %s\n",__func__);</div>
<div> }</div>
<div> </div>
<div>The result of this change is, after g_omx_port_disable(port), gstreamer is hanging. The ending logs is as shown below:</div>
<div> </div>
<div>0:00:00.163039163 [331m24012[00m 0xb3d73400 [36mDEBUG [00m [00m omx gstomx_util.c:848:EventHandler:<omxh264dec0>[00m OMX_EventPortSettingsChanged<br>0:00:00.163082596 [331m24012[00m 0xb3d73400 [36mDEBUG [00m [00m omx gstomx_base_videodec.c:119:settings_changed_cb:<omxh264dec0>[00m settings changed<br>
0:00:00.163098457 [331m24012[00m 0xb3d73400 [32;01mINFO [00m [00m omx gstomx_base_videodec.c:153:settings_changed_cb:<omxh264dec0>[00m Calling g_omx_port_disable(port) in settings_changed_cb<br>
0:00:00.163165246 [331m24012[00m 0x949c8c0 [37mLOG [00m [00m omx gstomx_base_filter.c:347:output_loop:<omxh264dec0>[00m omx_buffer: (nil)<br>0:00:00.163267648 [331m24012[00m 0x949c8c0 [33;01mWARN [00m [00m omx gstomx_base_filter.c:350:output_loop:<omxh264dec0>[00m null buffer: leaving<br>
0:00:00.163283411 [331m24012[00m 0x949c8c0 [32;01mINFO [00m [00m omx gstomx_base_filter.c:504:output_loop:<omxh264dec0>[00m pause task, reason: wrong-state<br>0:00:00.163299207 [331m24012[00m 0x949c8c0 [37mLOG [00m [00m omx gstomx_base_filter.c:508:output_loop:<omxh264dec0>[00m end<br>
</div>
<div> </div>
<div>Please let me know, how to get the dynamic resolution change work. Let me know if you need additional details.</div>
<div> </div>
<div>Thanking you,</div>
<div>Deepak T Y</div>
<div> </div>
<div> </div>