On 5/29/2020 5:37 PM, Michael Niedermayer wrote:
On Fri, May 29, 2020 at 02:20:37PM -0300, James Almer wrote:
current_picture was not writable here because a reference existed in
at least avctx->coded_frame, and potentially elsewhere if the caller
created new ones from it.

Please elaborate when and how the encoder internal buffer becomes
read only
i simply took your code and replaced

-        ret = av_frame_make_writable(s->current_picture);
-        if (ret < 0)
-            return ret;
+        ret = av_frame_is_writable(s->current_picture);
+        if (ret <= 0)
+            return -1;

and fate is fully happy which tests both the encoder and the filters
using it
also if this is for coded_frame then shouldnt it be under FF_API_CODED_FRAME?
iam clearly missing something here

You need to also move the av_frame_unref(avctx->coded_frame) line back to where it was before my patch. I moved it before this check to ensure at least the reference stored there is freed before current_picture is written to, but there of course could still exist other references created by the user, and that's what this make_writable() call is for.

And since this specific chunk is not strictly coded_frame related, it doesn't need to be under that guard.


thx

[...]


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to