+
+ // make sure the frame is clean even if we fail to free it
+ // this leaks, but it is better than crashing
+ if (ret < 0) {
+ av_log(avctx, AV_LOG_ERROR, "Could not queue a frame for freeing, this will leak\n");
+ memset(f->f->buf, 0, sizeof(f->f->buf));
+ if (f->f->extended_buf)
+ memset(f->f->extended_buf, 0, f->f->nb_extended_buf * sizeof(*f->f->extended_buf));
+ av_frame_unref(f->f);
+ }
+#endif