codecs: {h264,h265,mpeg2}decoder: Use GstFlowReturn everywhere
boolean return value is not sufficient for representing the reason of error in most cases. For instance, any errors around new_sequence() would mean negotiation error, not just ERROR. And some subclasses will allocate buffer/memory/surface on new_picture() but it could be failed because of expected error, likely flushing
Closes: #1578 (closed)
cc: @ndufresne @vjaquez @He_Junyan
Overall decision I made here:
- Change log level for non-OK cases from ERROR to WARNING if the flow-return value is returned by subclasses (which might not be an ERROR actually)
- Try to drain/empty DPB even if there was non-OK in the middle of processing
Tested using with VA (h264/h265), D3D11 (h264/h265) and NVDEC (h264/h265) via fluster, and using a few progressive/interlaced mpeg2 samples with VA/D3D11