#include <stdatomic.h>#include <stdint.h>#include <string.h>#include "refstruct.h"#include "libavutil/avassert.h"#include "libavutil/error.h"#include "libavutil/macros.h"#include "libavutil/mem.h"#include "libavutil/mem_internal.h"#include "libavutil/thread.h"Go to the source code of this file.
Definition at line 34 of file refstruct.c.
Definition at line 36 of file refstruct.c.
Definition at line 42 of file refstruct.c.
Definition at line 51 of file refstruct.c.
Definition at line 70 of file refstruct.c.
Referenced by ff_refstruct_pool_alloc_ext_c(), ff_refstruct_ref(), ff_refstruct_ref_c(), ff_refstruct_unref(), pool_free(), and refstruct_pool_get_ext().
Definition at line 77 of file refstruct.c.
Referenced by ff_refstruct_exclusive().
Definition at line 84 of file refstruct.c.
Referenced by ff_refstruct_alloc_ext_c(), pool_free_entry(), pool_unref(), and refstruct_pool_get_ext().
Definition at line 89 of file refstruct.c.
Referenced by ff_refstruct_alloc_ext_c().
Allocate a refcounted object of usable size size managed via the RefStruct API.
By default (in the absence of flags to the contrary), the returned object is initially zeroed.
Definition at line 102 of file refstruct.c.
Referenced by cbs_alloc_content(), and ff_refstruct_alloc_ext().
Decrement the reference count of the underlying object and automatically free the object if there are no more references to it.
*objp == NULL is legal and a no-op.
*objp is set to NULL on return. Definition at line 120 of file refstruct.c.
Referenced by alloc_progress(), aps_decode_alf(), aps_decode_scaling(), av1_decode_free(), av1_frame_unref(), cbs_av1_close(), cbs_av1_write_obu(), cbs_clone_noncomplex_unit_content(), cbs_free_user_data_registered(), cbs_free_user_data_unregistered(), cbs_h264_close(), cbs_h264_flush(), cbs_h265_close(), cbs_h265_flush(), cbs_h266_flush(), cbs_read_fragment_content(), cbs_sei_delete_message(), cbs_unit_uninit(), decode_pps(), decode_sps(), ff_cbs_make_unit_writable(), ff_cbs_sei_free_message_list(), ff_codec_close(), ff_dovi_ctx_flush(), ff_dovi_ctx_unref(), ff_frame_thread_free(), ff_h264_decode_picture_parameter_set(), ff_h264_decode_seq_parameter_set(), ff_h264_ps_uninit(), ff_h264_unref_picture(), ff_hevc_decode_nal_pps(), ff_hevc_decode_nal_sps(), ff_hevc_decode_nal_vps(), ff_hevc_ps_uninit(), ff_hevc_unref_frame(), ff_mpeg_unref_picture(), ff_nvdec_decode_uninit(), ff_nvdec_start_frame_sep_ref(), ff_refstruct_pool_uninit(), ff_refstruct_replace(), ff_thread_get_ext_buffer(), ff_thread_release_ext_buffer(), ff_vk_decode_uninit(), ff_vvc_ctu_free_cus(), ff_vvc_frame_ps_free(), ff_vvc_ps_uninit(), ff_vvc_unref_frame(), nvdec_decoder_create(), nvdec_fdd_priv_free(), nvdec_unmap_mapped_frame(), pps_alloc(), pps_free(), remove_pps(), remove_sps(), remove_vps(), slices_free(), sps_alloc(), sps_free(), update_frame_pool(), vaapi_encode_discard(), vaapi_encode_get_coded_data(), vaapi_encode_issue(), vaapi_encode_output(), vp3_decode_end(), vp8_alloc_frame(), vp8_release_frame(), vp9_frame_unref(), vulkan_decode_bootstrap(), wavpack_decode_end(), and wv_dsd_reset().
Create a new reference to an object managed via this API, i.e.
increment the reference count of the underlying object and return obj.
Definition at line 140 of file refstruct.c.
Referenced by cbs_av1_write_obu(), ff_cbs_insert_unit_content(), ff_cbs_sei_add_message(), ff_nvdec_start_frame(), ff_thread_ref_frame(), get_current_frame(), hevc_ref_frame(), vaapi_encode_output(), and vp9_frame_ref().
Analog of ff_refstruct_ref(), but for constant objects.
Definition at line 149 of file refstruct.c.
Referenced by alloc_picture(), ff_h264_decode_picture_parameter_set(), and ff_refstruct_replace().
Ensure *dstp refers to the same object as src.
If *dstp is already equal to src, do nothing. Otherwise unreference *dstp and replace it with a new reference to src in case src != NULL (this involves incrementing the reference count of src's underlying object) or with NULL otherwise.
Definition at line 160 of file refstruct.c.
Referenced by aps_decode_alf(), aps_decode_scaling(), av1_frame_ref(), av1_receive_frame_internal(), cbs_av1_read_unit(), cbs_h2645_replace_ps(), decode_frame_ps(), decode_ph(), ff_dovi_ctx_replace(), ff_h264_update_thread_context(), ff_mpeg_ref_picture(), ff_thread_replace_frame(), ff_vk_update_thread_context(), ff_vvc_decode_aps(), ff_vvc_decode_sh(), h264_copy_picture_params(), h264_init_ps(), hevc_ref_frame(), parse_nal_units(), pps_alloc(), ref_frame(), slice_start(), sps_alloc(), update_context_from_thread(), and vp9_frame_ref().
Check whether the reference count of an object managed via this API is 1.
Definition at line 174 of file refstruct.c.
Referenced by ff_cbs_make_unit_writable().
Definition at line 208 of file refstruct.c.
Referenced by av_buffer_pool_init2(), pool_return_entry(), and pool_unref().
Definition at line 216 of file refstruct.c.
Referenced by pool_return_entry(), and refstruct_pool_uninit().
Definition at line 223 of file refstruct.c.
Referenced by refstruct_pool_get_ext().
Definition at line 243 of file refstruct.c.
Referenced by refstruct_pool_get_ext().
Definition at line 250 of file refstruct.c.
Referenced by ff_refstruct_pool_get().
Get an object from the pool, reusing an old one from the pool when available.
Every call to this function must happen before ff_refstruct_pool_uninit(). Otherwise undefined behaviour may occur.
Definition at line 297 of file refstruct.c.
Referenced by alloc_cu(), alloc_frame(), alloc_picture(), alloc_tu(), ff_nvdec_start_frame(), ff_nvdec_start_frame_sep_ref(), vaapi_encode_issue(), and vp9_frame_alloc().
Hint: The content of pool_unref() and refstruct_pool_uninit() could currently be merged; they are only separate functions in case we would ever introduce weak references.
Definition at line 309 of file refstruct.c.
Referenced by ff_refstruct_pool_alloc_ext_c().
Definition at line 316 of file refstruct.c.
Referenced by ff_refstruct_pool_alloc_ext_c().
Equivalent to ff_refstruct_pool_alloc(size, flags, NULL, NULL, NULL, NULL, NULL)
Definition at line 335 of file refstruct.c.
Referenced by frame_context_init(), h264_init_context(), init_table_pools(), pic_arrays_init(), and vp9_frame_alloc().
Allocate an FFRefStructPool, potentially using complex callbacks.
Definition at line 340 of file refstruct.c.
Referenced by ff_refstruct_pool_alloc_ext().