On 30/01/2021 11:01, Nuo Mi wrote:
On Wed, Jan 27, 2021 at 9:52 PM Nuo Mi <nuomi2...@gmail.com> wrote:
On Wed, Jan 27, 2021 at 7:06 AM Mark Thompson <s...@jkqxz.net> wrote:

+
+    err = ff_cbs_make_unit_refcounted(ctx, unit);
+    if (err < 0)
+        return err;
+
+    ref_array =
+         (AVBufferRef**)((uint8_t*)ctx->priv_data +
ps_type->ref_array_offset);
+    ptr_array = (void**)((uint8_t*)ctx->priv_data +
ps_type->ptr_array_offset);
+    active    = (void**)((uint8_t*)ctx->priv_data +
ps_type->active_offset);
+
+    if (ptr_array[id] == *active) {
+        // The old active parameter set is being overwritten, so it can't
+        // be active after this point.
+        *active = NULL;
+    }
+    av_buffer_unref(&ref_array[id]);
+
+    ref_array[id] = av_buffer_ref(unit->content_ref);
+    if (!ref_array[id])
+        return AVERROR(ENOMEM);

This happend after ff_cbs_make_unit_refcounted, do we need urnef 
unit->content_ref
before return?

I don't think so?  The content_ref will be freed by the next call to 
fragment_reset/fragment_free, and we don't want to unset it here because that 
would force us to also clear unit->content as well (which doesn't matter for 
reading, but is a very strange side-effect if you are writing).

+    ptr_array[id] = ref_array[id]->data;
+
+    return 0;
+}

> Hi Mark,
Will this fix and merged?

Do you prefer it to what is presently there?

My intent was to suggest it and ask the question given the trouble with many 
versions of this in H.266, not to prescribe a particular answer.

- Mark
_______________________________________________
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