FFmpeg
vf_showinfo.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011 Stefano Sabatini
3  * This file is part of FFmpeg.
4  *
5  * FFmpeg is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * FFmpeg is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with FFmpeg; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 /**
21  * @file
22  * filter for showing textual video frame information
23  */
24 
25 #include <inttypes.h>
26 
27 #include "libavutil/adler32.h"
28 #include "libavutil/display.h"
29 #include "libavutil/imgutils.h"
30 #include "libavutil/internal.h"
31 #include "libavutil/opt.h"
32 #include "libavutil/pixdesc.h"
33 #include "libavutil/spherical.h"
34 #include "libavutil/stereo3d.h"
35 #include "libavutil/timestamp.h"
36 #include "libavutil/timecode.h"
37 
38 #include "avfilter.h"
39 #include "internal.h"
40 #include "video.h"
41 
42 typedef struct ShowInfoContext {
43  const AVClass *class;
46 
47 #define OFFSET(x) offsetof(ShowInfoContext, x)
48 #define VF AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
49 
50 static const AVOption showinfo_options[] = {
51  { "checksum", "calculate checksums", OFFSET(calculate_checksums), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, VF },
52  { NULL }
53 };
54 
55 AVFILTER_DEFINE_CLASS(showinfo);
56 
58 {
59  AVSphericalMapping *spherical = (AVSphericalMapping *)sd->data;
60  double yaw, pitch, roll;
61 
62  av_log(ctx, AV_LOG_INFO, "spherical information: ");
63  if (sd->size < sizeof(*spherical)) {
64  av_log(ctx, AV_LOG_INFO, "invalid data");
65  return;
66  }
67 
68  if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR)
69  av_log(ctx, AV_LOG_INFO, "equirectangular ");
70  else if (spherical->projection == AV_SPHERICAL_CUBEMAP)
71  av_log(ctx, AV_LOG_INFO, "cubemap ");
72  else if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE)
73  av_log(ctx, AV_LOG_INFO, "tiled equirectangular ");
74  else {
75  av_log(ctx, AV_LOG_WARNING, "unknown");
76  return;
77  }
78 
79  yaw = ((double)spherical->yaw) / (1 << 16);
80  pitch = ((double)spherical->pitch) / (1 << 16);
81  roll = ((double)spherical->roll) / (1 << 16);
82  av_log(ctx, AV_LOG_INFO, "(%f/%f/%f) ", yaw, pitch, roll);
83 
85  size_t l, t, r, b;
86  av_spherical_tile_bounds(spherical, frame->width, frame->height,
87  &l, &t, &r, &b);
90  l, t, r, b);
91  } else if (spherical->projection == AV_SPHERICAL_CUBEMAP) {
92  av_log(ctx, AV_LOG_INFO, "[pad %"PRIu32"] ", spherical->padding);
93  }
94 }
95 
97 {
98  AVStereo3D *stereo;
99 
100  av_log(ctx, AV_LOG_INFO, "stereoscopic information: ");
101  if (sd->size < sizeof(*stereo)) {
102  av_log(ctx, AV_LOG_INFO, "invalid data");
103  return;
104  }
105 
106  stereo = (AVStereo3D *)sd->data;
107 
108  av_log(ctx, AV_LOG_INFO, "type - %s", av_stereo3d_type_name(stereo->type));
109 
110  if (stereo->flags & AV_STEREO3D_FLAG_INVERT)
111  av_log(ctx, AV_LOG_INFO, " (inverted)");
112 }
113 
115 {
116  int nb_rois;
117  const AVRegionOfInterest *roi;
118  uint32_t roi_size;
119 
120  roi = (const AVRegionOfInterest *)sd->data;
121  roi_size = roi->self_size;
122  if (!roi_size || sd->size % roi_size != 0) {
123  av_log(ctx, AV_LOG_ERROR, "Invalid AVRegionOfInterest.self_size.\n");
124  return;
125  }
126  nb_rois = sd->size / roi_size;
127 
128  av_log(ctx, AV_LOG_INFO, "Regions Of Interest(RoI) information: ");
129  for (int i = 0; i < nb_rois; i++) {
130  roi = (const AVRegionOfInterest *)(sd->data + roi_size * i);
131  av_log(ctx, AV_LOG_INFO, "index: %d, region: (%d, %d)/(%d, %d), qp offset: %d/%d.\n",
132  i, roi->left, roi->top, roi->right, roi->bottom, roi->qoffset.num, roi->qoffset.den);
133  }
134 }
135 
137 {
138  const char *color_range_str = av_color_range_name(frame->color_range);
139  const char *colorspace_str = av_color_space_name(frame->colorspace);
140  const char *color_primaries_str = av_color_primaries_name(frame->color_primaries);
141  const char *color_trc_str = av_color_transfer_name(frame->color_trc);
142 
143  if (!color_range_str || frame->color_range == AVCOL_RANGE_UNSPECIFIED) {
144  av_log(ctx, AV_LOG_INFO, "color_range:unknown");
145  } else {
146  av_log(ctx, AV_LOG_INFO, "color_range:%s", color_range_str);
147  }
148 
149  if (!colorspace_str || frame->colorspace == AVCOL_SPC_UNSPECIFIED) {
150  av_log(ctx, AV_LOG_INFO, " color_space:unknown");
151  } else {
152  av_log(ctx, AV_LOG_INFO, " color_space:%s", colorspace_str);
153  }
154 
155  if (!color_primaries_str || frame->color_primaries == AVCOL_PRI_UNSPECIFIED) {
156  av_log(ctx, AV_LOG_INFO, " color_primaries:unknown");
157  } else {
158  av_log(ctx, AV_LOG_INFO, " color_primaries:%s", color_primaries_str);
159  }
160 
161  if (!color_trc_str || frame->color_trc == AVCOL_TRC_UNSPECIFIED) {
162  av_log(ctx, AV_LOG_INFO, " color_trc:unknown");
163  } else {
164  av_log(ctx, AV_LOG_INFO, " color_trc:%s", color_trc_str);
165  }
166  av_log(ctx, AV_LOG_INFO, "\n");
167 }
168 
169 static void update_sample_stats(const uint8_t *src, int len, int64_t *sum, int64_t *sum2)
170 {
171  int i;
172 
173  for (i = 0; i < len; i++) {
174  *sum += src[i];
175  *sum2 += src[i] * src[i];
176  }
177 }
178 
180 {
181  AVFilterContext *ctx = inlink->dst;
182  ShowInfoContext *s = ctx->priv;
184  uint32_t plane_checksum[4] = {0}, checksum = 0;
185  int64_t sum[4] = {0}, sum2[4] = {0};
186  int32_t pixelcount[4] = {0};
187  int i, plane, vsub = desc->log2_chroma_h;
188 
189  for (plane = 0; plane < 4 && s->calculate_checksums && frame->data[plane] && frame->linesize[plane]; plane++) {
190  uint8_t *data = frame->data[plane];
191  int h = plane == 1 || plane == 2 ? AV_CEIL_RSHIFT(inlink->h, vsub) : inlink->h;
192  int linesize = av_image_get_linesize(frame->format, frame->width, plane);
193 
194  if (linesize < 0)
195  return linesize;
196 
197  for (i = 0; i < h; i++) {
198  plane_checksum[plane] = av_adler32_update(plane_checksum[plane], data, linesize);
199  checksum = av_adler32_update(checksum, data, linesize);
200 
201  update_sample_stats(data, linesize, sum+plane, sum2+plane);
202  pixelcount[plane] += linesize;
203  data += frame->linesize[plane];
204  }
205  }
206 
208  "n:%4"PRId64" pts:%7s pts_time:%-7s pos:%9"PRId64" "
209  "fmt:%s sar:%d/%d s:%dx%d i:%c iskey:%d type:%c ",
210  inlink->frame_count_out,
211  av_ts2str(frame->pts), av_ts2timestr(frame->pts, &inlink->time_base), frame->pkt_pos,
212  desc->name,
213  frame->sample_aspect_ratio.num, frame->sample_aspect_ratio.den,
214  frame->width, frame->height,
215  !frame->interlaced_frame ? 'P' : /* Progressive */
216  frame->top_field_first ? 'T' : 'B', /* Top / Bottom */
217  frame->key_frame,
218  av_get_picture_type_char(frame->pict_type));
219 
220  if (s->calculate_checksums) {
222  "checksum:%08"PRIX32" plane_checksum:[%08"PRIX32,
223  checksum, plane_checksum[0]);
224 
225  for (plane = 1; plane < 4 && frame->data[plane] && frame->linesize[plane]; plane++)
226  av_log(ctx, AV_LOG_INFO, " %08"PRIX32, plane_checksum[plane]);
227  av_log(ctx, AV_LOG_INFO, "] mean:[");
228  for (plane = 0; plane < 4 && frame->data[plane] && frame->linesize[plane]; plane++)
229  av_log(ctx, AV_LOG_INFO, "%"PRId64" ", (sum[plane] + pixelcount[plane]/2) / pixelcount[plane]);
230  av_log(ctx, AV_LOG_INFO, "\b] stdev:[");
231  for (plane = 0; plane < 4 && frame->data[plane] && frame->linesize[plane]; plane++)
232  av_log(ctx, AV_LOG_INFO, "%3.1f ",
233  sqrt((sum2[plane] - sum[plane]*(double)sum[plane]/pixelcount[plane])/pixelcount[plane]));
234  av_log(ctx, AV_LOG_INFO, "\b]");
235  }
236  av_log(ctx, AV_LOG_INFO, "\n");
237 
238  for (i = 0; i < frame->nb_side_data; i++) {
239  AVFrameSideData *sd = frame->side_data[i];
240 
241  av_log(ctx, AV_LOG_INFO, " side data - ");
242  switch (sd->type) {
244  av_log(ctx, AV_LOG_INFO, "pan/scan");
245  break;
247  av_log(ctx, AV_LOG_INFO, "A/53 closed captions (%d bytes)", sd->size);
248  break;
250  dump_spherical(ctx, frame, sd);
251  break;
253  dump_stereo3d(ctx, sd);
254  break;
256  uint32_t *tc = (uint32_t*)sd->data;
257  for (int j = 1; j <= tc[0]; j++) {
258  char tcbuf[AV_TIMECODE_STR_SIZE];
259  av_timecode_make_smpte_tc_string(tcbuf, tc[j], 0);
260  av_log(ctx, AV_LOG_INFO, "timecode - %s%s", tcbuf, j != tc[0] ? ", " : "");
261  }
262  break;
263  }
265  av_log(ctx, AV_LOG_INFO, "displaymatrix: rotation of %.2f degrees",
267  break;
268  case AV_FRAME_DATA_AFD:
269  av_log(ctx, AV_LOG_INFO, "afd: value of %"PRIu8, sd->data[0]);
270  break;
272  dump_roi(ctx, sd);
273  break;
274  default:
275  av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d bytes)",
276  sd->type, sd->size);
277  break;
278  }
279 
280  av_log(ctx, AV_LOG_INFO, "\n");
281  }
282 
284 
285  return ff_filter_frame(inlink->dst->outputs[0], frame);
286 }
287 
289 {
290 
291  av_log(ctx, AV_LOG_INFO, "config %s time_base: %d/%d, frame_rate: %d/%d\n",
292  is_out ? "out" : "in",
293  link->time_base.num, link->time_base.den,
294  link->frame_rate.num, link->frame_rate.den);
295 
296  return 0;
297 }
298 
300 {
301  AVFilterContext *ctx = link->dst;
302  return config_props(ctx, link, 0);
303 }
304 
306 {
307  AVFilterContext *ctx = link->src;
308  return config_props(ctx, link, 1);
309 }
310 
312  {
313  .name = "default",
314  .type = AVMEDIA_TYPE_VIDEO,
315  .filter_frame = filter_frame,
316  .config_props = config_props_in,
317  },
318  { NULL }
319 };
320 
322  {
323  .name = "default",
324  .type = AVMEDIA_TYPE_VIDEO,
325  .config_props = config_props_out,
326  },
327  { NULL }
328 };
329 
331  .name = "showinfo",
332  .description = NULL_IF_CONFIG_SMALL("Show textual information for each video frame."),
333  .inputs = avfilter_vf_showinfo_inputs,
334  .outputs = avfilter_vf_showinfo_outputs,
335  .priv_size = sizeof(ShowInfoContext),
336  .priv_class = &showinfo_class,
337 };
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:182
AV_TIMECODE_STR_SIZE
#define AV_TIMECODE_STR_SIZE
Definition: timecode.h:33
r
const char * r
Definition: vf_curves.c:114
opt.h
AVSphericalMapping::projection
enum AVSphericalProjection projection
Projection type.
Definition: spherical.h:86
av_timecode_make_smpte_tc_string
char * av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df)
Get the timecode string from the SMPTE timecode format.
Definition: timecode.c:118
ff_vf_showinfo
AVFilter ff_vf_showinfo
Definition: vf_showinfo.c:330
ff_filter_frame
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
Definition: avfilter.c:1080
av_pix_fmt_desc_get
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
Definition: pixdesc.c:2522
AV_FRAME_DATA_A53_CC
@ AV_FRAME_DATA_A53_CC
ATSC A53 Part 4 Closed Captions.
Definition: frame.h:58
config_props_out
static int config_props_out(AVFilterLink *link)
Definition: vf_showinfo.c:305
inlink
The exact code depends on how similar the blocks are and how related they are to the and needs to apply these operations to the correct inlink or outlink if there are several Macros are available to factor that when no extra processing is inlink
Definition: filter_design.txt:212
AV_FRAME_DATA_S12M_TIMECODE
@ AV_FRAME_DATA_S12M_TIMECODE
Timecode which conforms to SMPTE ST 12-1.
Definition: frame.h:168
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:295
avfilter_vf_showinfo_inputs
static const AVFilterPad avfilter_vf_showinfo_inputs[]
Definition: vf_showinfo.c:311
pixdesc.h
av_spherical_tile_bounds
void av_spherical_tile_bounds(const AVSphericalMapping *map, size_t width, size_t height, size_t *left, size_t *top, size_t *right, size_t *bottom)
Convert the bounding fields from an AVSphericalVideo from 0.32 fixed point to pixels.
Definition: spherical.c:36
AVOption
AVOption.
Definition: opt.h:246
b
#define b
Definition: input.c:41
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:470
spherical.h
data
const char data[16]
Definition: mxf.c:91
AV_FRAME_DATA_DISPLAYMATRIX
@ AV_FRAME_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
Definition: frame.h:84
AV_SPHERICAL_EQUIRECTANGULAR_TILE
@ AV_SPHERICAL_EQUIRECTANGULAR_TILE
Video represents a portion of a sphere mapped on a flat surface using equirectangular projection.
Definition: spherical.h:72
AVFilter::name
const char * name
Filter name.
Definition: avfilter.h:148
dump_color_property
static void dump_color_property(AVFilterContext *ctx, AVFrame *frame)
Definition: vf_showinfo.c:136
AV_SPHERICAL_EQUIRECTANGULAR
@ AV_SPHERICAL_EQUIRECTANGULAR
Video represents a sphere mapped on a flat surface using equirectangular projection.
Definition: spherical.h:56
video.h
OFFSET
#define OFFSET(x)
Definition: vf_showinfo.c:47
dump_spherical
static void dump_spherical(AVFilterContext *ctx, AVFrame *frame, AVFrameSideData *sd)
Definition: vf_showinfo.c:57
av_color_space_name
const char * av_color_space_name(enum AVColorSpace space)
Definition: pixdesc.c:2915
timecode.h
plane
int plane
Definition: avisynth_c.h:384
AVRational::num
int num
Numerator.
Definition: rational.h:59
src
#define src
Definition: vp8dsp.c:254
AVFILTER_DEFINE_CLASS
AVFILTER_DEFINE_CLASS(showinfo)
AVFilterPad
A filter pad used for either input or output.
Definition: internal.h:54
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
config_props_in
static int config_props_in(AVFilterLink *link)
Definition: vf_showinfo.c:299
AVRegionOfInterest
Structure describing a single Region Of Interest.
Definition: frame.h:220
filter_frame
static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
Definition: vf_showinfo.c:179
stereo3d.h
s
#define s(width, name)
Definition: cbs_vp9.c:257
AV_CEIL_RSHIFT
#define AV_CEIL_RSHIFT(a, b)
Definition: common.h:58
AVRegionOfInterest::bottom
int bottom
Definition: frame.h:236
update_sample_stats
static void update_sample_stats(const uint8_t *src, int len, int64_t *sum, int64_t *sum2)
Definition: vf_showinfo.c:169
dump_stereo3d
static void dump_stereo3d(AVFilterContext *ctx, AVFrameSideData *sd)
Definition: vf_showinfo.c:96
VF
#define VF
Definition: vf_showinfo.c:48
ctx
AVFormatContext * ctx
Definition: movenc.c:48
AVCOL_PRI_UNSPECIFIED
@ AVCOL_PRI_UNSPECIFIED
Definition: pixfmt.h:446
link
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a link
Definition: filter_design.txt:23
int32_t
int32_t
Definition: audio_convert.c:194
AVStereo3D::flags
int flags
Additional information about the frame packing.
Definition: stereo3d.h:185
if
if(ret)
Definition: filter_design.txt:179
av_color_range_name
const char * av_color_range_name(enum AVColorRange range)
Definition: pixdesc.c:2848
config_props
static int config_props(AVFilterContext *ctx, AVFilterLink *link, int is_out)
Definition: vf_showinfo.c:288
AV_FRAME_DATA_SPHERICAL
@ AV_FRAME_DATA_SPHERICAL
The data represents the AVSphericalMapping structure defined in libavutil/spherical....
Definition: frame.h:130
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:67
NULL
#define NULL
Definition: coverity.c:32
AVRegionOfInterest::self_size
uint32_t self_size
Must be set to the size of this data structure (that is, sizeof(AVRegionOfInterest)).
Definition: frame.h:225
av_color_primaries_name
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
Definition: pixdesc.c:2867
adler32.h
ShowInfoContext::calculate_checksums
int calculate_checksums
Definition: vf_showinfo.c:44
AV_FRAME_DATA_AFD
@ AV_FRAME_DATA_AFD
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
Definition: frame.h:89
AVCOL_RANGE_UNSPECIFIED
@ AVCOL_RANGE_UNSPECIFIED
Definition: pixfmt.h:520
for
for(j=16;j >0;--j)
Definition: h264pred_template.c:469
dump_roi
static void dump_roi(AVFilterContext *ctx, AVFrameSideData *sd)
Definition: vf_showinfo.c:114
desc
const char * desc
Definition: nvenc.c:68
AV_SPHERICAL_CUBEMAP
@ AV_SPHERICAL_CUBEMAP
Video frame is split into 6 faces of a cube, and arranged on a 3x2 layout.
Definition: spherical.h:65
av_ts2timestr
#define av_ts2timestr(ts, tb)
Convenience macro, the return value should be used only directly in function arguments but never stan...
Definition: timestamp.h:76
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:188
AV_FRAME_DATA_PANSCAN
@ AV_FRAME_DATA_PANSCAN
The data is the AVPanScan struct defined in libavcodec.
Definition: frame.h:52
showinfo_options
static const AVOption showinfo_options[]
Definition: vf_showinfo.c:50
AVFrameSideData::data
uint8_t * data
Definition: frame.h:203
AVSphericalMapping::padding
uint32_t padding
Number of pixels to pad from the edge of each cube face.
Definition: spherical.h:182
AVRegionOfInterest::right
int right
Definition: frame.h:238
AV_STEREO3D_FLAG_INVERT
#define AV_STEREO3D_FLAG_INVERT
Inverted views, Right/Bottom represents the left view.
Definition: stereo3d.h:167
AV_LOG_INFO
#define AV_LOG_INFO
Standard information.
Definition: log.h:187
internal.h
av_image_get_linesize
int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane)
Compute the size of an image line with format pix_fmt and width width for the plane plane.
Definition: imgutils.c:76
av_get_picture_type_char
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
Definition: utils.c:88
AVRegionOfInterest::left
int left
Definition: frame.h:237
AVSphericalMapping::roll
int32_t roll
Rotation around the forward vector [-180, 180].
Definition: spherical.h:128
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:259
AVRegionOfInterest::top
int top
Distance in pixels from the top edge of the frame to the top and bottom edges and from the left edge ...
Definition: frame.h:235
internal.h
display.h
AV_FRAME_DATA_STEREO3D
@ AV_FRAME_DATA_STEREO3D
Stereoscopic 3d metadata.
Definition: frame.h:63
uint8_t
uint8_t
Definition: audio_convert.c:194
len
int len
Definition: vorbis_enc_data.h:452
AVFilterPad::name
const char * name
Pad name.
Definition: internal.h:60
AVCOL_SPC_UNSPECIFIED
@ AVCOL_SPC_UNSPECIFIED
Definition: pixfmt.h:499
avfilter_vf_showinfo_outputs
static const AVFilterPad avfilter_vf_showinfo_outputs[]
Definition: vf_showinfo.c:321
AVFilter
Filter definition.
Definition: avfilter.h:144
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
AVSphericalMapping::pitch
int32_t pitch
Rotation around the right vector [-90, 90].
Definition: spherical.h:127
AVStereo3D::type
enum AVStereo3DType type
How views are packed within the video.
Definition: stereo3d.h:180
checksum
static volatile int checksum
Definition: adler32.c:30
SIZE_SPECIFIER
#define SIZE_SPECIFIER
Definition: internal.h:264
av_adler32_update
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigned int len)
Calculate the Adler32 checksum of a buffer.
Definition: adler32.c:44
AVRational::den
int den
Denominator.
Definition: rational.h:60
avfilter.h
ShowInfoContext
Definition: vf_showinfo.c:42
AVFrameSideData::type
enum AVFrameSideDataType type
Definition: frame.h:202
AVFilterContext
An instance of a filter.
Definition: avfilter.h:338
tc
#define tc
Definition: regdef.h:69
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
AVFrameSideData
Structure to hold side data for an AVFrame.
Definition: frame.h:201
AVPixFmtDescriptor
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Definition: pixdesc.h:81
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:240
AVFrameSideData::size
int size
Definition: frame.h:204
AV_FRAME_DATA_REGIONS_OF_INTEREST
@ AV_FRAME_DATA_REGIONS_OF_INTEREST
Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of array element is ...
Definition: frame.h:181
imgutils.h
timestamp.h
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:28
av_ts2str
#define av_ts2str(ts)
Convenience macro, the return value should be used only directly in function arguments but never stan...
Definition: timestamp.h:54
av_stereo3d_type_name
const char * av_stereo3d_type_name(unsigned int type)
Provide a human-readable name of a given stereo3d type.
Definition: stereo3d.c:57
h
h
Definition: vp9dsp_template.c:2038
AVStereo3D
Stereo 3D type: this structure describes how two videos are packed within a single video surface,...
Definition: stereo3d.h:176
AVRegionOfInterest::qoffset
AVRational qoffset
Quantisation offset.
Definition: frame.h:262
AVSphericalMapping
This structure describes how to handle spherical videos, outlining information about projection,...
Definition: spherical.h:82
av_color_transfer_name
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
Definition: pixdesc.c:2891
AVSphericalMapping::yaw
int32_t yaw
Rotation around the up vector [-180, 180].
Definition: spherical.h:126
av_display_rotation_get
double av_display_rotation_get(const int32_t matrix[9])
Extract the rotation component of the transformation matrix.
Definition: display.c:34