On 14/09/17 22:54, Marton Balint wrote: > > On Thu, 14 Sep 2017, Mark Thompson wrote: > >> --- >> There are more around, but this marks all of the obvious ones in avcodec.h. >> > > [...] > >> +av_warn_unused_result >> int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); > >> */ >> +av_warn_unused_result >> int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame); > > I am not sure about these, these can only fail with ENOMEM if the user always > gets all available frames/packets, but even if there is no memory, no state > will be changed, the ownership of the packet/frame will remain with the > caller, no null pointer will be returned, so if ignoring these is what the > user wants, then so be it, no "undefined" behaviour will occur and we are not > breaking the API contract by continuing like nothing happened.
I was primarily thinking of the EAGAIN case, where the input data will just have been silently discarded if the user ignores the return value. I admit that isn't quite the same as the failed-allocation ones which result in undefined behaviour, but I don't think ignoring the return value of any of the send/receive functions is sane on the part of the user. What do you think? (I could also split the patch into ENOMEM and other cases if that helps.) - Mark _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel