/src/vlc/include/vlc_ancillary.h
Line | Count | Source |
1 | | /***************************************************************************** |
2 | | * vlc_ancillary.h: ancillary management functions |
3 | | ***************************************************************************** |
4 | | * Copyright (C) 2021 VLC authors and VideoLAN |
5 | | * |
6 | | * This program is free software; you can redistribute it and/or modify it |
7 | | * under the terms of the GNU Lesser General Public License as published by |
8 | | * the Free Software Foundation; either version 2.1 of the License, or |
9 | | * (at your option) any later version. |
10 | | * |
11 | | * This program is distributed in the hope that it will be useful, |
12 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | | * GNU Lesser General Public License for more details. |
15 | | * |
16 | | * You should have received a copy of the GNU Lesser General Public License |
17 | | * along with this program; if not, write to the Free Software Foundation, |
18 | | * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. |
19 | | *****************************************************************************/ |
20 | | |
21 | | #ifndef VLC_ANCILLARY_H |
22 | | #define VLC_ANCILLARY_H 1 |
23 | | |
24 | | #include <vlc_vector.h> |
25 | | #include <stdint.h> |
26 | | |
27 | | /** |
28 | | * \defgroup ancillary Ancillary |
29 | | * \ingroup input |
30 | | * |
31 | | * Ancillary that can be attached to any vlc_frame_t or picture_t. |
32 | | * |
33 | | * Ancillaries can be created from: |
34 | | * - packetized demuxer modules, |
35 | | * - packetizer modules, |
36 | | * - decoder modules. |
37 | | * |
38 | | * @warning Ancillaries should not be attached from a non packetized demuxer |
39 | | * module since the attachment to the vlc_frame will be lost by the packetizer |
40 | | * module that will be automatically inserted. |
41 | | * |
42 | | * Ancillaries are automatically forwarded from a vlc_frame_t to an other |
43 | | * vlc_frame_t and from a picture_t to an other picture_t. This allow to keep |
44 | | * ancillaries untouched when audio filters or video filters are used (these |
45 | | * filters don't have to know about the ancillary). |
46 | | * |
47 | | * Ancillary readers can be either: |
48 | | * - A decoder module, |
49 | | * - An audio output, |
50 | | * - A video output, |
51 | | * - A video or audio filter. |
52 | | * |
53 | | * @{ |
54 | | * \file |
55 | | * Ancillary definition and functions |
56 | | * \defgroup ancillary_api Ancillary API |
57 | | * @{ |
58 | | */ |
59 | | |
60 | | /** |
61 | | * Ancillary opaque struct, refcounted struct that hold user data with a free |
62 | | * callback. |
63 | | */ |
64 | | struct vlc_ancillary; |
65 | | |
66 | | typedef struct VLC_VECTOR(struct vlc_ancillary *) vlc_ancillary_array; |
67 | | #define VLC_ANCILLARY_ARRAY_INITIALIZER VLC_VECTOR_INITIALIZER |
68 | | |
69 | | /** |
70 | | * ID of an ancillary. Each ancillary user can create its own unique ID via |
71 | | * VLC_ANCILLARY_ID. |
72 | | */ |
73 | | typedef uint32_t vlc_ancillary_id; |
74 | | #define VLC_ANCILLARY_ID(a,b,c,d) VLC_FOURCC(a,b,c,d) |
75 | | |
76 | | /** |
77 | | * Callback to free an ancillary data |
78 | | */ |
79 | | typedef void (*vlc_ancillary_free_cb)(void *data); |
80 | | |
81 | | /** |
82 | | * Create an ancillary |
83 | | * |
84 | | * @param data an opaque ancillary, can't be NULL |
85 | | * @param id id of ancillary |
86 | | * @param free_cb callback to release the data, can be NULL |
87 | | * @return a valid vlc_ancillary pointer or NULL in case of allocation error |
88 | | */ |
89 | | VLC_API struct vlc_ancillary * |
90 | | vlc_ancillary_CreateWithFreeCb(void *data, vlc_ancillary_id id, |
91 | | vlc_ancillary_free_cb free_cb); |
92 | | |
93 | | /** |
94 | | * Helper to create an ancillary holding an allocated data |
95 | | */ |
96 | | static inline struct vlc_ancillary * |
97 | | vlc_ancillary_Create(void *data, vlc_ancillary_id id) |
98 | 0 | { |
99 | 0 | return vlc_ancillary_CreateWithFreeCb(data, id, free); |
100 | 0 | } Unexecuted instantiation: demux-run.c:vlc_ancillary_Create Unexecuted instantiation: var.c:vlc_ancillary_Create Unexecuted instantiation: decoder.c:vlc_ancillary_Create Unexecuted instantiation: aiff.c:vlc_ancillary_Create Unexecuted instantiation: asf.c:vlc_ancillary_Create Unexecuted instantiation: libasf.c:vlc_ancillary_Create Unexecuted instantiation: asfpacket.c:vlc_ancillary_Create Unexecuted instantiation: au.c:vlc_ancillary_Create Unexecuted instantiation: avi.c:vlc_ancillary_Create Unexecuted instantiation: libavi.c:vlc_ancillary_Create Unexecuted instantiation: caf.c:vlc_ancillary_Create Unexecuted instantiation: cdg.c:vlc_ancillary_Create Unexecuted instantiation: es.c:vlc_ancillary_Create Unexecuted instantiation: dts_header.c:vlc_ancillary_Create Unexecuted instantiation: flac.c:vlc_ancillary_Create Unexecuted instantiation: xiph_metadata.c:vlc_ancillary_Create Unexecuted instantiation: h26x.c:vlc_ancillary_Create Unexecuted instantiation: mjpeg.c:vlc_ancillary_Create Unexecuted instantiation: mp4.c:vlc_ancillary_Create Unexecuted instantiation: fragments.c:vlc_ancillary_Create Unexecuted instantiation: attachments.c:vlc_ancillary_Create Unexecuted instantiation: heif.c:vlc_ancillary_Create Unexecuted instantiation: essetup.c:vlc_ancillary_Create Unexecuted instantiation: meta.c:vlc_ancillary_Create Unexecuted instantiation: libmp4.c:vlc_ancillary_Create Unexecuted instantiation: nsv.c:vlc_ancillary_Create Unexecuted instantiation: ps.c:vlc_ancillary_Create Unexecuted instantiation: pva.c:vlc_ancillary_Create Unexecuted instantiation: sap.c:vlc_ancillary_Create Unexecuted instantiation: smf.c:vlc_ancillary_Create Unexecuted instantiation: subtitle.c:vlc_ancillary_Create Unexecuted instantiation: tta.c:vlc_ancillary_Create Unexecuted instantiation: encttml.c:vlc_ancillary_Create Unexecuted instantiation: substtml.c:vlc_ancillary_Create Unexecuted instantiation: ttml.c:vlc_ancillary_Create Unexecuted instantiation: ty.c:vlc_ancillary_Create Unexecuted instantiation: voc.c:vlc_ancillary_Create Unexecuted instantiation: wav.c:vlc_ancillary_Create Unexecuted instantiation: webvtt.c:vlc_ancillary_Create Unexecuted instantiation: encvtt.c:vlc_ancillary_Create Unexecuted instantiation: subsvtt.c:vlc_ancillary_Create Unexecuted instantiation: xa.c:vlc_ancillary_Create Unexecuted instantiation: a52.c:vlc_ancillary_Create Unexecuted instantiation: copy.c:vlc_ancillary_Create Unexecuted instantiation: dts.c:vlc_ancillary_Create Unexecuted instantiation: h264.c:vlc_ancillary_Create Unexecuted instantiation: hxxx_sei.c:vlc_ancillary_Create Unexecuted instantiation: hxxx_common.c:vlc_ancillary_Create Unexecuted instantiation: h264_nal.c:vlc_ancillary_Create Unexecuted instantiation: hevc.c:vlc_ancillary_Create Unexecuted instantiation: mlp.c:vlc_ancillary_Create Unexecuted instantiation: mpeg4audio.c:vlc_ancillary_Create Unexecuted instantiation: mpeg4video.c:vlc_ancillary_Create Unexecuted instantiation: mpegaudio.c:vlc_ancillary_Create Unexecuted instantiation: mpegvideo.c:vlc_ancillary_Create Unexecuted instantiation: vc1.c:vlc_ancillary_Create Unexecuted instantiation: rawaud.c:vlc_ancillary_Create Unexecuted instantiation: rawvid.c:vlc_ancillary_Create Unexecuted instantiation: file.c:vlc_ancillary_Create Unexecuted instantiation: directory.c:vlc_ancillary_Create Unexecuted instantiation: libxml.c:vlc_ancillary_Create Unexecuted instantiation: ogg.c:vlc_ancillary_Create Unexecuted instantiation: oggseek.c:vlc_ancillary_Create Unexecuted instantiation: mkv.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: util.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: virtual_segment.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: matroska_segment.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: matroska_segment_parse.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: matroska_segment_seeker.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: demux.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: events.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: Ebml_parser.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: chapters.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: chapter_command.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: chapter_command_dvd.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: chapter_command_script.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: chapter_command_script_common.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: stream_io_callback.cpp:vlc_ancillary_Create(void*, unsigned int) Unexecuted instantiation: adpcm.c:vlc_ancillary_Create Unexecuted instantiation: aes3.c:vlc_ancillary_Create Unexecuted instantiation: araw.c:vlc_ancillary_Create Unexecuted instantiation: g711.c:vlc_ancillary_Create Unexecuted instantiation: lpcm.c:vlc_ancillary_Create Unexecuted instantiation: uleaddvaudio.c:vlc_ancillary_Create Unexecuted instantiation: rawvideo.c:vlc_ancillary_Create Unexecuted instantiation: cc.c:vlc_ancillary_Create Unexecuted instantiation: cea708.c:vlc_ancillary_Create Unexecuted instantiation: cvdsub.c:vlc_ancillary_Create Unexecuted instantiation: dvbsub.c:vlc_ancillary_Create Unexecuted instantiation: scte18.c:vlc_ancillary_Create Unexecuted instantiation: scte27.c:vlc_ancillary_Create Unexecuted instantiation: spudec.c:vlc_ancillary_Create Unexecuted instantiation: parse.c:vlc_ancillary_Create Unexecuted instantiation: stl.c:vlc_ancillary_Create Unexecuted instantiation: subsdec.c:vlc_ancillary_Create Unexecuted instantiation: subsusf.c:vlc_ancillary_Create Unexecuted instantiation: svcdsub.c:vlc_ancillary_Create Unexecuted instantiation: textst.c:vlc_ancillary_Create Unexecuted instantiation: substx3g.c:vlc_ancillary_Create Unexecuted instantiation: libvlc.c:vlc_ancillary_Create Unexecuted instantiation: media_source.c:vlc_ancillary_Create Unexecuted instantiation: media_tree.c:vlc_ancillary_Create Unexecuted instantiation: bank.c:vlc_ancillary_Create Unexecuted instantiation: content.c:vlc_ancillary_Create Unexecuted instantiation: control.c:vlc_ancillary_Create Unexecuted instantiation: notify.c:vlc_ancillary_Create Unexecuted instantiation: player.c:vlc_ancillary_Create Unexecuted instantiation: playlist.c:vlc_ancillary_Create Unexecuted instantiation: preparse.c:vlc_ancillary_Create Unexecuted instantiation: preparser.c:vlc_ancillary_Create Unexecuted instantiation: item.c:vlc_ancillary_Create Unexecuted instantiation: access.c:vlc_ancillary_Create Unexecuted instantiation: decoder_prevframe.c:vlc_ancillary_Create Unexecuted instantiation: decoder_device.c:vlc_ancillary_Create Unexecuted instantiation: decoder_helpers.c:vlc_ancillary_Create Unexecuted instantiation: demux.c:vlc_ancillary_Create Unexecuted instantiation: input.c:vlc_ancillary_Create Unexecuted instantiation: attachment.c:vlc_ancillary_Create Unexecuted instantiation: timer.c:vlc_ancillary_Create Unexecuted instantiation: track.c:vlc_ancillary_Create Unexecuted instantiation: title.c:vlc_ancillary_Create Unexecuted instantiation: aout.c:vlc_ancillary_Create Unexecuted instantiation: vout.c:vlc_ancillary_Create Unexecuted instantiation: osd.c:vlc_ancillary_Create Unexecuted instantiation: medialib.c:vlc_ancillary_Create Unexecuted instantiation: resource.c:vlc_ancillary_Create Unexecuted instantiation: services_discovery.c:vlc_ancillary_Create Unexecuted instantiation: stats.c:vlc_ancillary_Create Unexecuted instantiation: stream.c:vlc_ancillary_Create Unexecuted instantiation: stream_extractor.c:vlc_ancillary_Create Unexecuted instantiation: stream_filter.c:vlc_ancillary_Create Unexecuted instantiation: stream_memory.c:vlc_ancillary_Create Unexecuted instantiation: subtitles.c:vlc_ancillary_Create Unexecuted instantiation: common.c:vlc_ancillary_Create Unexecuted instantiation: dec.c:vlc_ancillary_Create Unexecuted instantiation: filters.c:vlc_ancillary_Create Unexecuted instantiation: meter.c:vlc_ancillary_Create Unexecuted instantiation: output.c:vlc_ancillary_Create Unexecuted instantiation: volume.c:vlc_ancillary_Create Unexecuted instantiation: video_output.c:vlc_ancillary_Create Unexecuted instantiation: video_text.c:vlc_ancillary_Create Unexecuted instantiation: video_widgets.c:vlc_ancillary_Create Unexecuted instantiation: vout_subpictures.c:vlc_ancillary_Create Unexecuted instantiation: video_window.c:vlc_ancillary_Create Unexecuted instantiation: vout_intf.c:vlc_ancillary_Create Unexecuted instantiation: vout_wrapper.c:vlc_ancillary_Create Unexecuted instantiation: strings.c:vlc_ancillary_Create Unexecuted instantiation: ancillary.c:vlc_ancillary_Create Unexecuted instantiation: frame.c:vlc_ancillary_Create Unexecuted instantiation: fifo.c:vlc_ancillary_Create Unexecuted instantiation: picture.c:vlc_ancillary_Create Unexecuted instantiation: picture_fifo.c:vlc_ancillary_Create Unexecuted instantiation: picture_pool.c:vlc_ancillary_Create Unexecuted instantiation: renderer_discovery.c:vlc_ancillary_Create Unexecuted instantiation: image.c:vlc_ancillary_Create Unexecuted instantiation: objects.c:vlc_ancillary_Create Unexecuted instantiation: filter.c:vlc_ancillary_Create Unexecuted instantiation: filter_chain.c:vlc_ancillary_Create Unexecuted instantiation: subpicture.c:vlc_ancillary_Create Unexecuted instantiation: stream_output.c:vlc_ancillary_Create Unexecuted instantiation: vlm.c:vlc_ancillary_Create Unexecuted instantiation: vlm_event.c:vlc_ancillary_Create Unexecuted instantiation: vlmshell.c:vlc_ancillary_Create Unexecuted instantiation: libvlc-module.c:vlc_ancillary_Create Unexecuted instantiation: fetcher.c:vlc_ancillary_Create Unexecuted instantiation: clock.c:vlc_ancillary_Create Unexecuted instantiation: es_out.c:vlc_ancillary_Create Unexecuted instantiation: es_out_source.c:vlc_ancillary_Create Unexecuted instantiation: es_out_timeshift.c:vlc_ancillary_Create Unexecuted instantiation: display.c:vlc_ancillary_Create Unexecuted instantiation: interlacing.c:vlc_ancillary_Create Unexecuted instantiation: snapshot.c:vlc_ancillary_Create Unexecuted instantiation: input_clock.c:vlc_ancillary_Create |
101 | | |
102 | | /** |
103 | | * Release an ancillary |
104 | | * |
105 | | * If the refcount reaches 0, the free_cb provided by |
106 | | * vlc_ancillary_CreateWithFreeCb() is called. |
107 | | * |
108 | | * @param ancillary ancillary to release |
109 | | */ |
110 | | VLC_API void |
111 | | vlc_ancillary_Release(struct vlc_ancillary *ancillary); |
112 | | |
113 | | /** |
114 | | * Hold an ancillary |
115 | | * |
116 | | * @param ancillary ancillary to hold |
117 | | * @return the same ancillary |
118 | | */ |
119 | | VLC_API struct vlc_ancillary * |
120 | | vlc_ancillary_Hold(struct vlc_ancillary *ancillary); |
121 | | |
122 | | /** |
123 | | * Get the data of the ancillary |
124 | | * |
125 | | * @param ancillary ancillary to get data from |
126 | | * @return data used when created the ancillary, same lifetime than the ancillary |
127 | | */ |
128 | | VLC_API void * |
129 | | vlc_ancillary_GetData(const struct vlc_ancillary *ancillary); |
130 | | |
131 | | /** |
132 | | * @} |
133 | | * \defgroup ancillary_array Ancillary array API |
134 | | * @{ |
135 | | */ |
136 | | |
137 | | /** |
138 | | * Init an ancillary array |
139 | | * |
140 | | * @param array pointer to the ancillary array to initialize |
141 | | */ |
142 | | static inline void |
143 | | vlc_ancillary_array_Init(vlc_ancillary_array *array) |
144 | 290M | { |
145 | 290M | vlc_vector_init(array); |
146 | 290M | } Unexecuted instantiation: demux-run.c:vlc_ancillary_array_Init Unexecuted instantiation: var.c:vlc_ancillary_array_Init Unexecuted instantiation: decoder.c:vlc_ancillary_array_Init Unexecuted instantiation: aiff.c:vlc_ancillary_array_Init Unexecuted instantiation: asf.c:vlc_ancillary_array_Init Unexecuted instantiation: libasf.c:vlc_ancillary_array_Init Unexecuted instantiation: asfpacket.c:vlc_ancillary_array_Init Unexecuted instantiation: au.c:vlc_ancillary_array_Init Unexecuted instantiation: avi.c:vlc_ancillary_array_Init Unexecuted instantiation: libavi.c:vlc_ancillary_array_Init Unexecuted instantiation: caf.c:vlc_ancillary_array_Init Unexecuted instantiation: cdg.c:vlc_ancillary_array_Init Unexecuted instantiation: es.c:vlc_ancillary_array_Init Unexecuted instantiation: dts_header.c:vlc_ancillary_array_Init Unexecuted instantiation: flac.c:vlc_ancillary_array_Init Unexecuted instantiation: xiph_metadata.c:vlc_ancillary_array_Init Unexecuted instantiation: h26x.c:vlc_ancillary_array_Init Unexecuted instantiation: mjpeg.c:vlc_ancillary_array_Init Unexecuted instantiation: mp4.c:vlc_ancillary_array_Init Unexecuted instantiation: fragments.c:vlc_ancillary_array_Init Unexecuted instantiation: attachments.c:vlc_ancillary_array_Init Unexecuted instantiation: heif.c:vlc_ancillary_array_Init Unexecuted instantiation: essetup.c:vlc_ancillary_array_Init Unexecuted instantiation: meta.c:vlc_ancillary_array_Init Unexecuted instantiation: libmp4.c:vlc_ancillary_array_Init Unexecuted instantiation: nsv.c:vlc_ancillary_array_Init Unexecuted instantiation: ps.c:vlc_ancillary_array_Init Unexecuted instantiation: pva.c:vlc_ancillary_array_Init Unexecuted instantiation: sap.c:vlc_ancillary_array_Init Unexecuted instantiation: smf.c:vlc_ancillary_array_Init Unexecuted instantiation: subtitle.c:vlc_ancillary_array_Init Unexecuted instantiation: tta.c:vlc_ancillary_array_Init Unexecuted instantiation: encttml.c:vlc_ancillary_array_Init Unexecuted instantiation: substtml.c:vlc_ancillary_array_Init Unexecuted instantiation: ttml.c:vlc_ancillary_array_Init Unexecuted instantiation: ty.c:vlc_ancillary_array_Init Unexecuted instantiation: voc.c:vlc_ancillary_array_Init Unexecuted instantiation: wav.c:vlc_ancillary_array_Init Unexecuted instantiation: webvtt.c:vlc_ancillary_array_Init Unexecuted instantiation: encvtt.c:vlc_ancillary_array_Init Unexecuted instantiation: subsvtt.c:vlc_ancillary_array_Init Unexecuted instantiation: xa.c:vlc_ancillary_array_Init Unexecuted instantiation: a52.c:vlc_ancillary_array_Init Unexecuted instantiation: copy.c:vlc_ancillary_array_Init Unexecuted instantiation: dts.c:vlc_ancillary_array_Init Unexecuted instantiation: h264.c:vlc_ancillary_array_Init Unexecuted instantiation: hxxx_sei.c:vlc_ancillary_array_Init Unexecuted instantiation: hxxx_common.c:vlc_ancillary_array_Init Unexecuted instantiation: h264_nal.c:vlc_ancillary_array_Init Unexecuted instantiation: hevc.c:vlc_ancillary_array_Init Unexecuted instantiation: mlp.c:vlc_ancillary_array_Init Unexecuted instantiation: mpeg4audio.c:vlc_ancillary_array_Init Unexecuted instantiation: mpeg4video.c:vlc_ancillary_array_Init Unexecuted instantiation: mpegaudio.c:vlc_ancillary_array_Init Unexecuted instantiation: mpegvideo.c:vlc_ancillary_array_Init Unexecuted instantiation: vc1.c:vlc_ancillary_array_Init Unexecuted instantiation: rawaud.c:vlc_ancillary_array_Init Unexecuted instantiation: rawvid.c:vlc_ancillary_array_Init Unexecuted instantiation: file.c:vlc_ancillary_array_Init Unexecuted instantiation: directory.c:vlc_ancillary_array_Init Unexecuted instantiation: libxml.c:vlc_ancillary_array_Init Unexecuted instantiation: ogg.c:vlc_ancillary_array_Init Unexecuted instantiation: oggseek.c:vlc_ancillary_array_Init Unexecuted instantiation: mkv.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: util.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: virtual_segment.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: matroska_segment.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: matroska_segment_parse.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: matroska_segment_seeker.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: demux.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: events.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: Ebml_parser.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: chapters.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: chapter_command.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: chapter_command_dvd.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: chapter_command_script.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: chapter_command_script_common.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: stream_io_callback.cpp:vlc_ancillary_array_Init(vlc_ancillary_array*) Unexecuted instantiation: adpcm.c:vlc_ancillary_array_Init Unexecuted instantiation: aes3.c:vlc_ancillary_array_Init Unexecuted instantiation: araw.c:vlc_ancillary_array_Init Unexecuted instantiation: g711.c:vlc_ancillary_array_Init Unexecuted instantiation: lpcm.c:vlc_ancillary_array_Init Unexecuted instantiation: uleaddvaudio.c:vlc_ancillary_array_Init Unexecuted instantiation: rawvideo.c:vlc_ancillary_array_Init Unexecuted instantiation: cc.c:vlc_ancillary_array_Init Unexecuted instantiation: cea708.c:vlc_ancillary_array_Init Unexecuted instantiation: cvdsub.c:vlc_ancillary_array_Init Unexecuted instantiation: dvbsub.c:vlc_ancillary_array_Init Unexecuted instantiation: scte18.c:vlc_ancillary_array_Init Unexecuted instantiation: scte27.c:vlc_ancillary_array_Init Unexecuted instantiation: spudec.c:vlc_ancillary_array_Init Unexecuted instantiation: parse.c:vlc_ancillary_array_Init Unexecuted instantiation: stl.c:vlc_ancillary_array_Init Unexecuted instantiation: subsdec.c:vlc_ancillary_array_Init Unexecuted instantiation: subsusf.c:vlc_ancillary_array_Init Unexecuted instantiation: svcdsub.c:vlc_ancillary_array_Init Unexecuted instantiation: textst.c:vlc_ancillary_array_Init Unexecuted instantiation: substx3g.c:vlc_ancillary_array_Init Unexecuted instantiation: libvlc.c:vlc_ancillary_array_Init Unexecuted instantiation: media_source.c:vlc_ancillary_array_Init Unexecuted instantiation: media_tree.c:vlc_ancillary_array_Init Unexecuted instantiation: bank.c:vlc_ancillary_array_Init Unexecuted instantiation: content.c:vlc_ancillary_array_Init Unexecuted instantiation: control.c:vlc_ancillary_array_Init Unexecuted instantiation: notify.c:vlc_ancillary_array_Init Unexecuted instantiation: player.c:vlc_ancillary_array_Init Unexecuted instantiation: playlist.c:vlc_ancillary_array_Init Unexecuted instantiation: preparse.c:vlc_ancillary_array_Init Unexecuted instantiation: preparser.c:vlc_ancillary_array_Init Unexecuted instantiation: item.c:vlc_ancillary_array_Init Unexecuted instantiation: access.c:vlc_ancillary_array_Init Unexecuted instantiation: decoder_prevframe.c:vlc_ancillary_array_Init Unexecuted instantiation: decoder_device.c:vlc_ancillary_array_Init Unexecuted instantiation: decoder_helpers.c:vlc_ancillary_array_Init Unexecuted instantiation: demux.c:vlc_ancillary_array_Init Unexecuted instantiation: input.c:vlc_ancillary_array_Init Unexecuted instantiation: attachment.c:vlc_ancillary_array_Init Unexecuted instantiation: timer.c:vlc_ancillary_array_Init Unexecuted instantiation: track.c:vlc_ancillary_array_Init Unexecuted instantiation: title.c:vlc_ancillary_array_Init Unexecuted instantiation: aout.c:vlc_ancillary_array_Init Unexecuted instantiation: vout.c:vlc_ancillary_array_Init Unexecuted instantiation: osd.c:vlc_ancillary_array_Init Unexecuted instantiation: medialib.c:vlc_ancillary_array_Init Unexecuted instantiation: resource.c:vlc_ancillary_array_Init Unexecuted instantiation: services_discovery.c:vlc_ancillary_array_Init Unexecuted instantiation: stats.c:vlc_ancillary_array_Init Unexecuted instantiation: stream.c:vlc_ancillary_array_Init Unexecuted instantiation: stream_extractor.c:vlc_ancillary_array_Init Unexecuted instantiation: stream_filter.c:vlc_ancillary_array_Init Unexecuted instantiation: stream_memory.c:vlc_ancillary_array_Init Unexecuted instantiation: subtitles.c:vlc_ancillary_array_Init Unexecuted instantiation: common.c:vlc_ancillary_array_Init Unexecuted instantiation: dec.c:vlc_ancillary_array_Init Unexecuted instantiation: filters.c:vlc_ancillary_array_Init Unexecuted instantiation: meter.c:vlc_ancillary_array_Init Unexecuted instantiation: output.c:vlc_ancillary_array_Init Unexecuted instantiation: volume.c:vlc_ancillary_array_Init Unexecuted instantiation: video_output.c:vlc_ancillary_array_Init Unexecuted instantiation: video_text.c:vlc_ancillary_array_Init Unexecuted instantiation: video_widgets.c:vlc_ancillary_array_Init Unexecuted instantiation: vout_subpictures.c:vlc_ancillary_array_Init Unexecuted instantiation: video_window.c:vlc_ancillary_array_Init Unexecuted instantiation: vout_intf.c:vlc_ancillary_array_Init Unexecuted instantiation: vout_wrapper.c:vlc_ancillary_array_Init Unexecuted instantiation: strings.c:vlc_ancillary_array_Init Unexecuted instantiation: ancillary.c:vlc_ancillary_array_Init frame.c:vlc_ancillary_array_Init Line | Count | Source | 144 | 290M | { | 145 | | vlc_vector_init(array); | 146 | 290M | } |
Unexecuted instantiation: fifo.c:vlc_ancillary_array_Init picture.c:vlc_ancillary_array_Init Line | Count | Source | 144 | 15.4k | { | 145 | | vlc_vector_init(array); | 146 | 15.4k | } |
Unexecuted instantiation: picture_fifo.c:vlc_ancillary_array_Init Unexecuted instantiation: picture_pool.c:vlc_ancillary_array_Init Unexecuted instantiation: renderer_discovery.c:vlc_ancillary_array_Init Unexecuted instantiation: image.c:vlc_ancillary_array_Init Unexecuted instantiation: objects.c:vlc_ancillary_array_Init Unexecuted instantiation: filter.c:vlc_ancillary_array_Init Unexecuted instantiation: filter_chain.c:vlc_ancillary_array_Init Unexecuted instantiation: subpicture.c:vlc_ancillary_array_Init Unexecuted instantiation: stream_output.c:vlc_ancillary_array_Init Unexecuted instantiation: vlm.c:vlc_ancillary_array_Init Unexecuted instantiation: vlm_event.c:vlc_ancillary_array_Init Unexecuted instantiation: vlmshell.c:vlc_ancillary_array_Init Unexecuted instantiation: libvlc-module.c:vlc_ancillary_array_Init Unexecuted instantiation: fetcher.c:vlc_ancillary_array_Init Unexecuted instantiation: clock.c:vlc_ancillary_array_Init Unexecuted instantiation: es_out.c:vlc_ancillary_array_Init Unexecuted instantiation: es_out_source.c:vlc_ancillary_array_Init Unexecuted instantiation: es_out_timeshift.c:vlc_ancillary_array_Init Unexecuted instantiation: display.c:vlc_ancillary_array_Init Unexecuted instantiation: interlacing.c:vlc_ancillary_array_Init Unexecuted instantiation: snapshot.c:vlc_ancillary_array_Init Unexecuted instantiation: input_clock.c:vlc_ancillary_array_Init |
147 | | |
148 | | /** |
149 | | * Clear an ancillary array |
150 | | * |
151 | | * This will release the refcount on all ancillaries and free the vector data |
152 | | * |
153 | | * @param array pointer to the ancillary array to clear |
154 | | */ |
155 | | VLC_API void |
156 | | vlc_ancillary_array_Clear(vlc_ancillary_array *array); |
157 | | |
158 | | /** |
159 | | * Merge two ancillary arrays |
160 | | * |
161 | | * Copy all ancillaries from src_array to dst_array, preserving all previous |
162 | | * ancillaries. In case of ancillary id conflict, the one from src_array will |
163 | | * have precedence. |
164 | | * |
165 | | * @param dst_array pointer to an initialized ancillary array, if not empty, |
166 | | * previous ancillaries will be preserved. |
167 | | * @param src_array pointer to the source ancillary array |
168 | | * @return VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error |
169 | | */ |
170 | | VLC_API int |
171 | | vlc_ancillary_array_Merge(vlc_ancillary_array *dst_array, |
172 | | const vlc_ancillary_array *src_array); |
173 | | |
174 | | /** |
175 | | * Merge and clear two ancillary arrays |
176 | | * |
177 | | * The src array will be moved to the dst array if the dst array is empty (fast |
178 | | * path). Otherwise, both arrays will be merged into dst_array and the |
179 | | * src_array will be cleared afterward. |
180 | | * |
181 | | * @param dst_array pointer to a valid ancillary array, if not empty, previous |
182 | | * ancillaries will be preserved. |
183 | | * @param src_array pointer to the source ancillary array, will point to empty |
184 | | * data after this call. |
185 | | * @return VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error |
186 | | */ |
187 | | VLC_API int |
188 | | vlc_ancillary_array_MergeAndClear(vlc_ancillary_array *dst_array, |
189 | | vlc_ancillary_array *src_array); |
190 | | |
191 | | /** |
192 | | * Insert a new ancillary in the array |
193 | | * |
194 | | * @note Several ancillaries can be attached to an array, but if two ancillaries |
195 | | * are identified by the same ID, only the last one take precedence. |
196 | | * |
197 | | * @param array pointer to the ancillary array |
198 | | * @param ancillary pointer to the ancillary to add |
199 | | * @return VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error |
200 | | */ |
201 | | VLC_API int |
202 | | vlc_ancillary_array_Insert(vlc_ancillary_array *array, |
203 | | struct vlc_ancillary *ancillary); |
204 | | |
205 | | /** |
206 | | * Get a specific ancillary from the array |
207 | | * |
208 | | * @param array pointer to the ancillary array |
209 | | * @param id id of the ancillary |
210 | | * @return a valid ancillary or NULL if not found, no need to release it. |
211 | | */ |
212 | | VLC_API struct vlc_ancillary * |
213 | | vlc_ancillary_array_Get(const vlc_ancillary_array *array, |
214 | | vlc_ancillary_id id); |
215 | | |
216 | | /** |
217 | | * @} |
218 | | * \defgroup ancillary_data Ancillary IDs and data |
219 | | * @{ |
220 | | */ |
221 | | |
222 | | /** |
223 | | * Dolby Vision metadata description |
224 | | */ |
225 | | enum vlc_dovi_reshape_method_t |
226 | | { |
227 | | VLC_DOVI_RESHAPE_POLYNOMIAL = 0, |
228 | | VLC_DOVI_RESHAPE_MMR = 1, |
229 | | }; |
230 | | |
231 | | enum vlc_dovi_nlq_method_t |
232 | | { |
233 | | VLC_DOVI_NLQ_NONE = -1, |
234 | | VLC_DOVI_NLQ_LINEAR_DZ = 0, |
235 | | }; |
236 | | |
237 | | #define VLC_ANCILLARY_ID_DOVI VLC_FOURCC('D','o','V','i') |
238 | | |
239 | | typedef struct vlc_video_dovi_metadata_t |
240 | | { |
241 | | /* Common header fields */ |
242 | | uint8_t coef_log2_denom; |
243 | | uint8_t bl_bit_depth; |
244 | | uint8_t el_bit_depth; |
245 | | enum vlc_dovi_nlq_method_t nlq_method_idc; |
246 | | |
247 | | /* Colorspace metadata */ |
248 | | float nonlinear_offset[3]; |
249 | | float nonlinear_matrix[9]; |
250 | | float linear_matrix[9]; |
251 | | uint16_t source_min_pq; /* 12-bit PQ values */ |
252 | | uint16_t source_max_pq; |
253 | | |
254 | | /** |
255 | | * Do not reorder or modify the following structs, they are intentionally |
256 | | * specified to be identical to AVDOVIReshapingCurve / AVDOVINLQParams. |
257 | | */ |
258 | | struct vlc_dovi_reshape_t { |
259 | | uint8_t num_pivots; |
260 | | uint16_t pivots[9]; |
261 | | enum vlc_dovi_reshape_method_t mapping_idc[8]; |
262 | | uint8_t poly_order[8]; |
263 | | int64_t poly_coef[8][3]; |
264 | | uint8_t mmr_order[8]; |
265 | | int64_t mmr_constant[8]; |
266 | | int64_t mmr_coef[8][3][7]; |
267 | | } curves[3]; |
268 | | |
269 | | struct vlc_dovi_nlq_t { |
270 | | uint8_t offset_depth; /* bit depth of offset value */ |
271 | | uint16_t offset; |
272 | | uint64_t hdr_in_max; |
273 | | uint64_t dz_slope; |
274 | | uint64_t dz_threshold; |
275 | | } nlq[3]; |
276 | | } vlc_video_dovi_metadata_t; |
277 | | |
278 | | /** |
279 | | * HDR10+ Dynamic metadata (based on ATSC A/341 Amendment 2094-40) |
280 | | * |
281 | | * This is similar to SMPTE ST2094-40:2016, but omits the mastering display and |
282 | | * target display actual peak luminance LUTs, the rectangular boundaries and |
283 | | * ellipse coefficients, and support for multiple processing windows, as these |
284 | | * are intentionally left unused in this version of the specification. |
285 | | */ |
286 | | |
287 | | #define VLC_ANCILLARY_ID_HDR10PLUS VLC_FOURCC('H','D','R','+') |
288 | | |
289 | | typedef struct vlc_video_hdr_dynamic_metadata_t |
290 | | { |
291 | | uint8_t country_code; /* ITU-T T.35 Annex A */ |
292 | | uint8_t application_version; |
293 | | float targeted_luminance; /* in cd/m² */ |
294 | | |
295 | | /* parameters for the first processing window (encompassing the frame) */ |
296 | | float maxscl[3]; /* in linearized range [0,1] */ |
297 | | float average_maxrgb; /* in linearized range [0,1] */ |
298 | | uint8_t num_histogram; /* in range [0,15] */ |
299 | | struct { |
300 | | uint8_t percentage; /* in range [1,100] */ |
301 | | float percentile; /* in linearized range [0,1] */ |
302 | | } histogram[15]; |
303 | | float fraction_bright_pixels;/* in range [0,1] */ |
304 | | uint8_t tone_mapping_flag; |
305 | | float knee_point_x; /* in ootf range [0,1] */ |
306 | | float knee_point_y; /* in ootf range [0,1] */ |
307 | | uint8_t num_bezier_anchors; /* in range [1,15] */ |
308 | | float bezier_curve_anchors[15]; /* in range [0,1] */ |
309 | | } vlc_video_hdr_dynamic_metadata_t; |
310 | | |
311 | | /** |
312 | | * Embedded ICC profiles |
313 | | */ |
314 | | |
315 | 3.61k | #define VLC_ANCILLARY_ID_ICC VLC_FOURCC('i','C','C','P') |
316 | | |
317 | | typedef struct vlc_icc_profile_t |
318 | | { |
319 | | size_t size; |
320 | | uint8_t data[]; /* binary profile data, see ICC.1:2022 (or later) */ |
321 | | } vlc_icc_profile_t; |
322 | | |
323 | | /** |
324 | | * VPx alpha data |
325 | | */ |
326 | | |
327 | 2.32k | #define VLC_ANCILLARY_ID_VPX_ALPHA VLC_FOURCC('v','p','x','A') |
328 | | |
329 | | typedef struct vlc_vpx_alpha_t |
330 | | { |
331 | | size_t size; |
332 | | uint8_t *data; |
333 | | } vlc_vpx_alpha_t; |
334 | | |
335 | | /** |
336 | | * @} |
337 | | * @} |
338 | | */ |
339 | | #endif /* VLC_ANCILLARY_H */ |