Data Structures | Functions

Simple key:value store. More...

Data Structures

struct  AVDictionaryEntry


AVDictionaryEntryav_dict_get (const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
 Get a dictionary entry with matching key. More...
const AVDictionaryEntryav_dict_iterate (const AVDictionary *m, const AVDictionaryEntry *prev)
 Iterate over a dictionary. More...
int av_dict_count (const AVDictionary *m)
 Get number of entries in dictionary. More...
int av_dict_set (AVDictionary **pm, const char *key, const char *value, int flags)
 Set the given entry in *pm, overwriting an existing entry. More...
int av_dict_set_int (AVDictionary **pm, const char *key, int64_t value, int flags)
 Convenience wrapper for av_dict_set() that converts the value to a string and stores it. More...
int av_dict_parse_string (AVDictionary **pm, const char *str, const char *key_val_sep, const char *pairs_sep, int flags)
 Parse the key/value pairs list and add the parsed entries to a dictionary. More...
int av_dict_copy (AVDictionary **dst, const AVDictionary *src, int flags)
 Copy entries from one AVDictionary struct into another. More...
void av_dict_free (AVDictionary **m)
 Free all the memory allocated for an AVDictionary struct and all keys and values. More...
int av_dict_get_string (const AVDictionary *m, char **buffer, const char key_val_sep, const char pairs_sep)
 Get dictionary entries as a string. More...

AVDictionary Flags

Flags that influence behavior of the matching of keys or insertion to the dictionary.

#define AV_DICT_MATCH_CASE   1
 Only get an entry with exact-case key match. More...
 Return first entry in a dictionary whose first part corresponds to the search key, ignoring the suffix of the found key string. More...
 Take ownership of a key that's been allocated with av_malloc() or another memory allocation function. More...
 Take ownership of a value that's been allocated with av_malloc() or another memory allocation function. More...
 Don't overwrite existing entries. More...
#define AV_DICT_APPEND   32
 If the entry already exists, append to it. More...
#define AV_DICT_MULTIKEY   64
 Allow to store several equal keys in the dictionary. More...

Detailed Description

Simple key:value store.

Dictionaries are used for storing key-value pairs.

AVDictionary *d = NULL; // "create" an empty dictionary
av_dict_set(&d, "foo", "bar", 0); // add an entry
char *k = av_strdup("key"); // if your strings are already allocated,
char *v = av_strdup("value"); // you can avoid copying them like this
while ((t = av_dict_iterate(d, t))) {
<....> // iterate over all entries in d

Macro Definition Documentation


#define AV_DICT_MATCH_CASE   1

Only get an entry with exact-case key match.

Only relevant in av_dict_get().

Definition at line 74 of file dict.h.



Return first entry in a dictionary whose first part corresponds to the search key, ignoring the suffix of the found key string.

Only relevant in av_dict_get().

Definition at line 75 of file dict.h.



Take ownership of a key that's been allocated with av_malloc() or another memory allocation function.

Definition at line 77 of file dict.h.



Take ownership of a value that's been allocated with av_malloc() or another memory allocation function.

Definition at line 79 of file dict.h.



Don't overwrite existing entries.

Definition at line 81 of file dict.h.


#define AV_DICT_APPEND   32

If the entry already exists, append to it.

Note that no delimiter is added, the strings are simply concatenated.

Definition at line 82 of file dict.h.


#define AV_DICT_MULTIKEY   64

Allow to store several equal keys in the dictionary.

Definition at line 84 of file dict.h.

Function Documentation

◆ av_dict_get()

AVDictionaryEntry* av_dict_get ( const AVDictionary m,
const char *  key,
const AVDictionaryEntry prev,
int  flags 

Get a dictionary entry with matching key.

The returned entry key or value must not be changed, or it will cause undefined behavior.

prevSet to the previous matching element to find the next. If set to NULL the first matching element is returned.
keyMatching key
flagsA collection of AV_DICT_* flags controlling how the entry is retrieved
Found entry or NULL in case no matching entry was found in the dictionary

Definition at line 62 of file dict.c.

Referenced by aea_write_header(), asf_write_header1(), asf_write_markers(), av_dict_set(), av_dump_format(), avi_read_header(), avi_write_header(), bitstream_switching(), check_extensions(), check_opt_bitexact(), check_validation_layers(), cuda_flags_from_opts(), d3d11va_device_create(), d3d12va_device_create(), dec_enc(), dec_open(), dict_copy_entry(), dict_iterate(), dump_attachment(), dump_metadata(), dump_stream_format(), dv_write_header(), dynamic_set_parameter(), enc_open(), export_orphan_timecode(), ff_decklink_read_packet(), ff_id3v2_write_apic(), ff_mjpeg_decode_frame_from_buf(), ff_parse_creation_time_metadata(), ff_qsv_enc_init(), ff_replaygain_export(), ff_riff_write_info(), ffurl_connect(), ffurl_open_whitelist(), filter_frame(), find_compressor(), flac_init(), flac_read_header(), flac_write_picture(), flv_read_packet(), func_frame_metadata(), get_concatdec_select(), get_cookies(), get_date_tag(), get_duration(), get_metadata_duration(), get_metadata_lang(), get_mimetype(), gxf_write_header(), id3_has_changed_values(), id3v1_create_tag(), id3v1_set_string(), ifile_open(), imf_read_header(), init_muxer(), main(), match_stream_specifier(), mkv_write_attachments(), mkv_write_chapters(), mkv_write_header(), mkv_write_info(), mkv_write_stereo_mode(), mkv_write_track(), mkv_write_track_video(), mov_create_chapter_track(), mov_init(), mov_parse_stsd_audio(), mov_read_header(), mov_write_3gp_udta_tag(), mov_write_chpl_tag(), mov_write_hdlr_tag(), mov_write_header(), mov_write_int8_metadata(), mov_write_isml_manifest(), mov_write_raw_metadata_tag(), mov_write_SA3D_tag(), mov_write_tmcd_tag(), mov_write_tmpo_tag(), mov_write_track_metadata(), mov_write_trkn_tag(), mov_write_uuidusmt_tag(), mp3_write_xing(), mpegts_add_service(), mpegts_init(), mpegts_write_pmt(), mxf_init(), mxf_init_timecode(), mxf_write_header_metadata_sets(), mxf_write_identification(), mxf_write_user_comments(), of_add_programs(), of_parse_group_token(), of_parse_iamf_submixes(), open_input_file(), open_slave(), opencl_filter_device(), opencl_filter_platform(), ost_add(), parse_cookie(), png_write_iccp(), print_frame_side_data(), put_meta(), qsv_device_create(), read_thread(), receiver_thread(), redirect_cache_get(), riff_has_valid_tags(), rv10_write_header(), sap_write_header(), segment_end(), set_encoder_id(), set_skip_frame_encode_ctrl(), sox_write_header(), stream_component_open(), subsegment_alignment(), ttml_write_header(), update_settings(), vaapi_device_create(), vorbis_parse_single_comment(), vpx_encode(), vulkan_device_create_internal(), write_adaptation_set(), write_manifest(), write_representation(), write_table_entries_attrib(), write_table_redirector_legacy_attrib(), writer_print_integer(), and writer_print_string().

◆ av_dict_iterate()

const AVDictionaryEntry* av_dict_iterate ( const AVDictionary m,
const AVDictionaryEntry prev 

Iterate over a dictionary.

Iterates through all entries in the dictionary.

The returned AVDictionaryEntry key/value must not be changed.
As av_dict_set() invalidates all previous entries returned by this function, it must not be called while iterating over the dict.

Typical usage:

while ((e = av_dict_iterate(m, e))) {
// ...
mThe dictionary to iterate over
prevPointer to the previous AVDictionaryEntry, NULL initially
Return values
AVDictionaryEntry*The next element in the dictionary
NULLNo more elements in the dictionary

Definition at line 44 of file dict.c.

Referenced by aom_init(), asf_write_header1(), av_dict_copy(), av_dict_get(), av_dict_get_string(), av_opt_is_set_to_default(), av_opt_set_dict2(), av_packet_pack_dictionary(), avfilter_init_str(), caf_write_header(), check_avoptions(), config_enc_params(), configure_audio_filters(), configure_output_video_filter(), configure_video_filters(), cookie_string(), create_filter(), dict_iterate(), dump_dictionary(), ff_ape_write_tag(), ff_metadata_conv(), ff_vorbiscomment_length(), ff_vorbiscomment_write(), fifo_thread_write_header(), filter_codec_opts(), filter_frame(), get_cookies(), graph_opts_apply(), iamf_write_mixing_presentation(), id3_has_changed_values(), id3v2_3_metadata_split_date(), ifile_open(), init(), libkvazaar_init(), librav1e_encode_init(), libx265_encode_init(), libxeve_init(), log_unknown_opt(), lrc_write_header(), main(), mc_device_create(), mkv_write_tag(), mov_write_mdta_ilst_tag(), mov_write_mdta_keys_tag(), of_add_programs(), of_parse_group_token(), of_parse_iamf_audio_element_layers(), of_parse_iamf_submixes(), open_input_file(), open_slave(), parse_cookie(), parse_features(), parse_models(), print_iamf_mix_presentation_params(), print_iamf_submix_params(), remove_avoptions(), show_tags(), smjpeg_write_header(), strip_specifiers(), validate_enc_avopt(), vpx_init(), write_chapter(), write_globalinfo(), write_metadata(), write_streaminfo(), write_table_entries_attrib(), write_table_redirector_legacy_attrib(), write_tags(), writer_open(), X264_init(), and xavs2_init().

◆ av_dict_count()

int av_dict_count ( const AVDictionary m)

◆ av_dict_set()

int av_dict_set ( AVDictionary **  pm,
const char *  key,
const char *  value,
int  flags 

Set the given entry in *pm, overwriting an existing entry.

Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set, these arguments will be freed on error.

Adding a new entry to a dictionary invalidates all existing entries previously returned with av_dict_get() or av_dict_iterate().
pmPointer to a pointer to a dictionary struct. If *pm is NULL a dictionary struct is allocated and put in *pm.
keyEntry key to add to *pm (will either be av_strduped or added as a new key depending on flags)
valueEntry value to add to *pm (will be av_strduped or added as a new key depending on flags). Passing a NULL value will cause an existing entry to be deleted.
>= 0 on success otherwise an error code <0

Definition at line 88 of file dict.c.

Referenced by aa_read_header(), add_filename_as_pkt_side_data(), add_meta(), add_metadata(), add_metadata_from_renditions(), add_timecode_metadata(), aea_read_header(), amf_parse_object(), ape_tag_read_field(), asf_read_header(), asf_read_metadata(), asf_read_picture(), asf_read_properties(), asf_read_value(), asf_set_metadata(), asf_write_header1(), av_dict_copy(), av_dict_set_fxp(), av_dict_set_int(), av_opt_set_dict2(), av_packet_unpack_dictionary(), avformat_find_stream_info(), avi_metadata_creation_time(), avi_read_nikon(), avi_read_tag(), avpriv_dict_set_timestamp(), avpriv_new_chapter(), bprint_to_avdict(), chunk_end(), cine_read_header(), concat_parse_script(), config_input(), config_props(), copy_meta(), dash_init(), dash_read_header(), dashenc_delete_file(), dec_open(), decode_frame(), decode_frame_common(), decode_header(), decode_info_header(), decode_text_chunk(), dict_copy_entry(), dict_set_if_not_null(), dss_read_metadata_date(), dss_read_metadata_string(), dtshd_read_header(), dvdvideo_audio_stream_add(), dvdvideo_subp_stream_add(), enc_open(), export_orphan_timecode(), ff_filter_opt_parse(), ff_flac_parse_picture(), ff_id3v2_parse_apic(), ff_id3v2_parse_priv_dict(), ff_load_image(), ff_metadata_conv(), ff_parse_mpeg2_descriptor(), ff_read_riff_info(), ff_rm_read_mdpr_codecdata(), ff_rtp_chain_mux_open(), ff_sauce_read(), ff_tadd_string_metadata(), ff_tee_parse_slave_options(), ff_wms_parse_sdp_a_line(), ffio_copy_url_options(), ffurl_connect(), ffurl_open_whitelist(), filter(), filter_codec_opts(), filter_frame(), flac_init(), flac_read_header(), get_attachment(), get_meta(), get_metadata(), get_string(), get_tag(), gif_read_header(), h264_export_frame_props(), heif_add_stream(), hls_delete_file(), hls_mux_init(), hls_read_header(), hls_start(), hls_write_packet(), hls_write_trailer(), http_open_cnx_internal(), icecast_open(), id3v2_3_metadata_split_date(), iff_read_header(), ifile_open(), imf_read_header(), init_filter_graph(), init_muxer(), ism_seek(), ism_write_header(), ist_add(), ist_use(), lavfi_read_header(), LLVMFuzzerTestOneInput(), lrc_read_header(), lrc_write_header(), main(), map_to_opts(), merge_date(), mix_presentation_obu(), modplug_load_metadata(), mov_metadata_gnre(), mov_metadata_loci(), mov_metadata_track_or_disc_number(), mov_parse_stsd_audio(), mov_parse_stsd_data(), mov_parse_stsd_video(), mov_parse_tiles(), mov_read_custom(), mov_read_ftyp(), mov_read_hdlr(), mov_read_header(), mov_read_mdhd(), mov_read_rtmd_track(), mov_read_udta_string(), mov_read_uuid(), move_metadata(), mp3_parse_info_tag(), mpeg_decode_frame(), mxf_add_metadata_stream(), mxf_add_timecode_metadata(), mxf_add_umid_metadata(), mxf_parse_package_comments(), mxf_parse_physical_source_package(), mxf_parse_structural_metadata(), mxf_read_partition_pack(), new_stream_video(), nist_read_header(), nsp_read_header(), nsv_parse_NSVf_header(), of_add_attachments(), of_add_metadata(), of_add_programs(), of_parse_group_token(), of_parse_iamf_submixes(), offset_fn(), ofilter_bind_ost(), ogm_chapter(), open_codec_context(), open_input(), open_input_file(), open_slave(), open_url(), opencl_device_derive(), opt_bitrate(), opt_default(), opt_profile(), opt_show_entries(), opt_streamid(), opt_timecode(), ost_add(), output_frame(), parse_chunks(), parse_cookie(), parse_dsd_prop(), parse_icy(), parse_key_value_pair(), parse_playlist(), parse_programinformation(), parse_set_cookie(), parse_tag(), parse_timecode_in_framenum_format(), populate_avctx_color_fields(), qsv_device_create(), r3d_read_red1(), read_comment(), read_gab2_sub(), read_header(), read_info_chunk(), read_string(), read_tag(), read_thread(), read_ttag(), read_uslt(), redirect_cache_set(), remove_avoptions(), reopen_demux_for_component(), rm_read_metadata(), rpl_read_header(), rtmp_open(), run_test(), sap_write_header(), scan_file(), sdt_cb(), seg_init(), segment_end(), segment_start(), select_frame(), sender_thread(), set_colorquant_ratio_meta(), set_encoder_id(), set_http_options(), set_language(), set_meta(), set_metadata_float(), set_side_data(), smjpeg_read_header(), sox_read_header(), str_to_dict(), stream_component_open(), strip_specifiers(), subviewer_read_header(), try_decode_frame(), update_metadata(), validate_enc_avopt(), var_read_metadata(), decklink_input_callback::VideoInputFrameArrived(), vivo_read_header(), vorbis_parse_single_comment(), wc3_read_header(), webm_chunk_init(), and wsd_read_header().

◆ av_dict_set_int()

int av_dict_set_int ( AVDictionary **  pm,
const char *  key,
int64_t  value,
int  flags 

◆ av_dict_parse_string()

int av_dict_parse_string ( AVDictionary **  pm,
const char *  str,
const char *  key_val_sep,
const char *  pairs_sep,
int  flags 

Parse the key/value pairs list and add the parsed entries to a dictionary.

In case of failure, all the successfully set entries are stored in *pm. You may need to manually free the created dictionary.

key_val_sepA 0-terminated list of characters used to separate key from value
pairs_sepA 0-terminated list of characters used to separate two pairs from each other
flagsFlags to use when adding to the dictionary. AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL are ignored since the key/value tokens will always be duplicated.
0 on success, negative AVERROR code on failure

Definition at line 200 of file dict.c.

Referenced by av_opt_is_set_to_default(), concat_parse_script(), delimited_dict_parse(), hw_device_init_from_string(), init(), libkvazaar_init(), main(), of_add_programs(), of_map_group(), of_parse_group_token(), of_parse_iamf_audio_element_layers(), of_parse_iamf_submixes(), parse_slave_fifo_options(), rtp_open(), run_test(), set_string_dict(), test_separators(), and writer_open().

◆ av_dict_copy()

int av_dict_copy ( AVDictionary **  dst,
const AVDictionary src,
int  flags 

Copy entries from one AVDictionary struct into another.

Metadata is read using the AV_DICT_IGNORE_SUFFIX flag
dstPointer to a pointer to a AVDictionary struct to copy into. If *dst is NULL, this function will allocate a struct for you and put it in *dst
srcPointer to the source AVDictionary struct to copy items from.
flagsFlags to use when setting entries in *dst
0 on success, negative AVERROR code on failure. If dst was allocated by this function, callers should free the associated memory.

Definition at line 237 of file dict.c.

Referenced by asf_read_header(), av_frame_side_data_clone(), av_opt_get_dict_val(), av_opt_set_dict_val(), avformat_open_input(), copy_chapters(), copy_meta(), copy_metadata(), copy_stream_props(), dash_init(), dec_create(), ff_id3v2_parse_chapters(), ff_mjpeg_decode_frame_from_buf(), ff_wms_parse_sdp_a_line(), fifo_mux_init(), fifo_thread_write_header(), frame_copy_props(), handle_id3(), hls_mux_init(), hls_read_header(), hls_read_packet(), http_open(), http_open_cnx(), init_muxer(), list_devices_for_context(), mark_section_show_entries(), of_open(), of_parse_group_token(), ofilter_bind_ost(), ogg_init(), open_audio(), open_file(), open_slave(), open_track_resource_context(), open_url(), open_video(), opt_copy_elem(), opt_default_new(), opt_target(), parse_assetmap(), parse_manifest(), parse_playlist(), read_frame_internal(), rtp_mpegts_write_header(), seg_init(), segment_mux_init(), segment_start(), set_http_options(), set_stream_info_from_input_stream(), stream_params_copy(), tee_write_header(), test_separators(), webm_chunk_init(), webp_decode_frame(), and write_packet().

◆ av_dict_free()

void av_dict_free ( AVDictionary **  m)

Free all the memory allocated for an AVDictionary struct and all keys and values.

Definition at line 223 of file dict.c.

Referenced by add_filename_as_pkt_side_data(), asf_read_close(), av_frame_replace(), av_frame_side_data_clone(), av_frame_unref(), av_opt_is_set_to_default(), av_opt_set_dict2(), av_opt_set_dict_val(), avfilter_init_str(), avformat_find_stream_info(), avformat_free_context(), avformat_open_input(), chunk_end(), clear_frame_metadata(), close_slave(), concat_read_close(), config_input(), config_props(), create_master_playlist(), dash_close(), dash_free(), dash_init(), dash_write_packet(), dashenc_delete_file(), dec_enc(), dec_free(), decode_header(), delimited_dict_parse(), do_encrypt(), ds_free(), dynamic_set_parameter(), ff_free_stream(), ff_free_stream_group(), ff_http_do_new_request2(), ff_load_image(), ff_metadata_conv(), ff_mjpeg_decode_end(), ff_mjpeg_decode_frame_from_buf(), ff_rtp_chain_mux_open(), ff_tee_parse_slave_options(), ff_wms_parse_sdp_a_line(), fg_free(), fifo_thread_write_header(), filter_codec_opts(), filter_frame(), filter_params_free(), free_chapter(), free_playlist_list(), free_side_data(), ftp_connect_control_connection(), ftp_connect_data_connection(), get_cookies(), graph_opts_apply(), handle_id3(), hls_close(), hls_delete_file(), hls_encryption_start(), hls_init_file_resend(), hls_mux_init(), hls_read_header(), hls_start(), hls_window(), hls_write_packet(), hls_write_trailer(), http_close(), http_listen(), http_open(), http_read_header(), http_seek_internal(), hw_device_init_from_string(), icecast_open(), id3v2_3_metadata_split_date(), ifile_open(), imf_close(), init(), init_filter_graph(), init_fps(), init_muxer(), ism_seek(), ism_write_header(), ist_free(), lavfi_read_header(), libkvazaar_init(), list_devices_for_context(), LLVMFuzzerTestOneInput(), main(), of_add_programs(), of_free(), of_parse_group_token(), of_parse_iamf_audio_element_layers(), of_parse_iamf_submixes(), open_audio(), open_codec_context(), open_file(), open_input(), open_input_file(), open_slave(), open_track_resource_context(), open_url(), open_video(), opencl_device_derive(), opt_copy_elem(), opt_default_new(), opt_free_elem(), opt_show_entries(), ost_free(), parse_assetmap(), parse_cookie(), parse_features(), parse_manifest(), parse_models(), parse_playlist(), png_dec_end(), prompeg_open(), qsv_device_create(), read_frame_internal(), read_thread(), reopen_demux_for_component(), replace_side_data_from_buf(), rtmp_open(), rtp_mpegts_write_header(), rtp_open(), rtsp_read_setup(), run_test(), seg_init(), segment_start(), set_string_dict(), setup_find_stream_info_opts(), show_packet(), stream_component_open(), stream_params_copy(), streamcopy_init(), tee_open(), test_separators(), try_decode_frame(), uninit_options(), uninit_opts(), uninit_parse_context(), validate_enc_avopt(), decklink_input_callback::VideoInputFrameArrived(), vorbis_update_metadata(), webm_chunk_init(), webp_decode_frame(), write_hls_media_playlist(), write_manifest(), write_packet(), and writer_open().

◆ av_dict_get_string()

int av_dict_get_string ( const AVDictionary m,
char **  buffer,
const char  key_val_sep,
const char  pairs_sep 

Get dictionary entries as a string.

Create a string containing dictionary's entries. Such string may be passed back to av_dict_parse_string().

String is escaped with backslashes ('\').
Separators cannot be neither '\' nor '\0'. They also cannot be the same.
[in]mThe dictionary
[out]bufferPointer to buffer that will be allocated with string containg entries. Buffer must be freed by the caller when is no longer needed.
[in]key_val_sepCharacter used to separate key from value
[in]pairs_sepCharacter used to separate two pairs from each other
>= 0 on success, negative on error

Definition at line 250 of file dict.c.

Referenced by configure_filtergraph(), main(), open_slave(), opt_get_elem(), and test_separators().

Definition: dict.c:34
Take ownership of a value that's been allocated with av_malloc() or another memory allocation functio...
Definition: dict.h:79
#define NULL
Definition: coverity.c:32
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
Definition: dict.c:223
char * av_strdup(const char *s)
Duplicate a string.
Definition: mem.c:272
Definition: dict.h:89
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
Definition: dict.c:88
Definition: ffmpeg_filter.c:424
const AVDictionaryEntry * av_dict_iterate(const AVDictionary *m, const AVDictionaryEntry *prev)
Iterate over a dictionary.
Definition: dict.c:44
Take ownership of a key that's been allocated with av_malloc() or another memory allocation function.
Definition: dict.h:77