<div dir="ltr">Hello,<div><br></div><div>I have a problem related to element called vaapipostproc. The problem is as follows:</div><div><br></div><div>I have a pipeline and for specified time intervals I attempt to change pipeline dynamically in order to change write location of the filesink. I have implemented this functionality and everything works well in case I do not use vaapipostproc element. If I use vaapipostproc element, the pipeline crashes unexpectedly. An error message is thrown from the element vaapipostproc: "failed to create output video buffer" at the immediate point the pipeline is changed dynamically. </div><div><br></div><div>My pipeline change strategy is as follows:</div><div>0. Create a bin and place mux and filesink elements inside it. Moreover create a queue element before this bin.</div><div>1. For specified intervals, fire a clock event and catch it in a handler</div><div>2. In clock handler place a blocking probe to queue's source pad and register a blocking data handler</div><div>3. In blocking data handler unlink queue and bin and send an EOS event to bin's sink pad. </div><div>4. Handle EOS event on bin element. In this handler, destroy bin, create a new bin with an updated filesink location connect bin with queue. And remove the blocking probe. </div><div><br></div><div>This strategy for dynamic pipeline changing works well when I do not use vaapipostproc element. But I want to do encoding process on GPU and using vaapipostproc is a mandatory. <br></div><div><br></div><div>I have inspected the source code  gstvaapipostproc.c for element vaapipostproc and It seem the problem is related to function named as <b><i>GstBuffer * create_output_buffer(GstVaapiPostproc*)</i></b>. </div><div><br></div><div>You can find output messages when GST_DEBUG environment variable is set to 4. In addition to this, you can also find my implementation to change the pipeline dynamically. The implementation won't compile, I just want to share a pseudo-code for your well understanding of the implementation. <br></div><div><br></div><div>I want to share the most interesting part of the out.log file:</div><div><div>0:00:11.075920072  [334m11325 [00m      0x1dcc720  [36mINFO    [00m <b><i> [00m       vaapipostproc gstvaapipluginbase.c:532:gst_vaapi_plugin_base_decide_allocation:<GPUPostProcessing> [00m no pool or doesn't support GstVaapiVideoMeta, making new pool</i></b></div><div>0:00:11.076231088  [334m11325 [00m      0x1dcc720  [36mINFO    [00m  [00m    vaapivideomemory gstvaapivideomemory.c:627:gst_vaapi_video_allocator_new: [00m has direct-rendering for NV12 surfaces: no</div><div><b><i>0:00:11.076568949  [334m11325 [00m      0x1dcc720  [31;01mERROR   [00m  [00m       vaapipostproc gstvaapipostproc.c:412:create_output_buffer: [00m failed to create output video buffer</i></b></div><div>0:00:11.076723161  [334m11325 [00m      0x1dcc720  [33;01mWARN    [00m  [00m       basetransform gstbasetransform.c:2130:gst_base_transform_handle_buffer:<GPUPostProcessing> [00m could not get buffer from pool: error</div><div>0:00:11.076773273  [334m11325 [00m      0x1dcc720  [36mINFO    [00m <b><i> [00m                task gsttask.c:300:gst_task_func:<queue0:src> [00m Task going to paused</i></b></div></div><div><br></div><div>How can I solve this problem? Any help will be appreciated. </div><div><br></div><div>Regards.</div><br>Engin FIRAT</div>