avcodec.h (112853B)
1 /* 2 * copyright (c) 2001 Fabrice Bellard 3 * 4 * This file is part of FFmpeg. 5 * 6 * FFmpeg is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * FFmpeg 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 GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with FFmpeg; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21 #ifndef AVCODEC_AVCODEC_H 22 #define AVCODEC_AVCODEC_H 23 24 /** 25 * @file 26 * @ingroup libavc 27 * Libavcodec external API header 28 */ 29 30 #include "libavutil/samplefmt.h" 31 #include "libavutil/attributes.h" 32 #include "libavutil/avutil.h" 33 #include "libavutil/buffer.h" 34 #include "libavutil/channel_layout.h" 35 #include "libavutil/dict.h" 36 #include "libavutil/frame.h" 37 #include "libavutil/log.h" 38 #include "libavutil/pixfmt.h" 39 #include "libavutil/rational.h" 40 41 #include "codec.h" 42 #include "codec_id.h" 43 #include "defs.h" 44 #include "packet.h" 45 #include "version_major.h" 46 #ifndef HAVE_AV_CONFIG_H 47 /* When included as part of the ffmpeg build, only include the major version 48 * to avoid unnecessary rebuilds. When included externally, keep including 49 * the full version information. */ 50 #include "version.h" 51 52 #include "codec_desc.h" 53 #include "codec_par.h" 54 #endif 55 56 struct AVCodecParameters; 57 58 /** 59 * @defgroup libavc libavcodec 60 * Encoding/Decoding Library 61 * 62 * @{ 63 * 64 * @defgroup lavc_decoding Decoding 65 * @{ 66 * @} 67 * 68 * @defgroup lavc_encoding Encoding 69 * @{ 70 * @} 71 * 72 * @defgroup lavc_codec Codecs 73 * @{ 74 * @defgroup lavc_codec_native Native Codecs 75 * @{ 76 * @} 77 * @defgroup lavc_codec_wrappers External library wrappers 78 * @{ 79 * @} 80 * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge 81 * @{ 82 * @} 83 * @} 84 * @defgroup lavc_internal Internal 85 * @{ 86 * @} 87 * @} 88 */ 89 90 /** 91 * @ingroup libavc 92 * @defgroup lavc_encdec send/receive encoding and decoding API overview 93 * @{ 94 * 95 * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/ 96 * avcodec_receive_packet() functions provide an encode/decode API, which 97 * decouples input and output. 98 * 99 * The API is very similar for encoding/decoding and audio/video, and works as 100 * follows: 101 * - Set up and open the AVCodecContext as usual. 102 * - Send valid input: 103 * - For decoding, call avcodec_send_packet() to give the decoder raw 104 * compressed data in an AVPacket. 105 * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame 106 * containing uncompressed audio or video. 107 * 108 * In both cases, it is recommended that AVPackets and AVFrames are 109 * refcounted, or libavcodec might have to copy the input data. (libavformat 110 * always returns refcounted AVPackets, and av_frame_get_buffer() allocates 111 * refcounted AVFrames.) 112 * - Receive output in a loop. Periodically call one of the avcodec_receive_*() 113 * functions and process their output: 114 * - For decoding, call avcodec_receive_frame(). On success, it will return 115 * an AVFrame containing uncompressed audio or video data. 116 * - For encoding, call avcodec_receive_packet(). On success, it will return 117 * an AVPacket with a compressed frame. 118 * 119 * Repeat this call until it returns AVERROR(EAGAIN) or an error. The 120 * AVERROR(EAGAIN) return value means that new input data is required to 121 * return new output. In this case, continue with sending input. For each 122 * input frame/packet, the codec will typically return 1 output frame/packet, 123 * but it can also be 0 or more than 1. 124 * 125 * At the beginning of decoding or encoding, the codec might accept multiple 126 * input frames/packets without returning a frame, until its internal buffers 127 * are filled. This situation is handled transparently if you follow the steps 128 * outlined above. 129 * 130 * In theory, sending input can result in EAGAIN - this should happen only if 131 * not all output was received. You can use this to structure alternative decode 132 * or encode loops other than the one suggested above. For example, you could 133 * try sending new input on each iteration, and try to receive output if that 134 * returns EAGAIN. 135 * 136 * End of stream situations. These require "flushing" (aka draining) the codec, 137 * as the codec might buffer multiple frames or packets internally for 138 * performance or out of necessity (consider B-frames). 139 * This is handled as follows: 140 * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding) 141 * or avcodec_send_frame() (encoding) functions. This will enter draining 142 * mode. 143 * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet() 144 * (encoding) in a loop until AVERROR_EOF is returned. The functions will 145 * not return AVERROR(EAGAIN), unless you forgot to enter draining mode. 146 * - Before decoding can be resumed again, the codec has to be reset with 147 * avcodec_flush_buffers(). 148 * 149 * Using the API as outlined above is highly recommended. But it is also 150 * possible to call functions outside of this rigid schema. For example, you can 151 * call avcodec_send_packet() repeatedly without calling 152 * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed 153 * until the codec's internal buffer has been filled up (which is typically of 154 * size 1 per output frame, after initial input), and then reject input with 155 * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to 156 * read at least some output. 157 * 158 * Not all codecs will follow a rigid and predictable dataflow; the only 159 * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on 160 * one end implies that a receive/send call on the other end will succeed, or 161 * at least will not fail with AVERROR(EAGAIN). In general, no codec will 162 * permit unlimited buffering of input or output. 163 * 164 * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This 165 * would be an invalid state, which could put the codec user into an endless 166 * loop. The API has no concept of time either: it cannot happen that trying to 167 * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second 168 * later accepts the packet (with no other receive/flush API calls involved). 169 * The API is a strict state machine, and the passage of time is not supposed 170 * to influence it. Some timing-dependent behavior might still be deemed 171 * acceptable in certain cases. But it must never result in both send/receive 172 * returning EAGAIN at the same time at any point. It must also absolutely be 173 * avoided that the current state is "unstable" and can "flip-flop" between 174 * the send/receive APIs allowing progress. For example, it's not allowed that 175 * the codec randomly decides that it actually wants to consume a packet now 176 * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an 177 * avcodec_send_packet() call. 178 * @} 179 */ 180 181 /** 182 * @defgroup lavc_core Core functions/structures. 183 * @ingroup libavc 184 * 185 * Basic definitions, functions for querying libavcodec capabilities, 186 * allocating core structures, etc. 187 * @{ 188 */ 189 190 #if FF_API_BUFFER_MIN_SIZE 191 /** 192 * @ingroup lavc_encoding 193 * minimum encoding buffer size 194 * Used to avoid some checks during header writing. 195 * @deprecated Unused: avcodec_receive_packet() does not work 196 * with preallocated packet buffers. 197 */ 198 #define AV_INPUT_BUFFER_MIN_SIZE 16384 199 #endif 200 201 /** 202 * @ingroup lavc_encoding 203 */ 204 typedef struct RcOverride{ 205 int start_frame; 206 int end_frame; 207 int qscale; // If this is 0 then quality_factor will be used instead. 208 float quality_factor; 209 } RcOverride; 210 211 /* encoding support 212 These flags can be passed in AVCodecContext.flags before initialization. 213 Note: Not everything is supported yet. 214 */ 215 216 /** 217 * Allow decoders to produce frames with data planes that are not aligned 218 * to CPU requirements (e.g. due to cropping). 219 */ 220 #define AV_CODEC_FLAG_UNALIGNED (1 << 0) 221 /** 222 * Use fixed qscale. 223 */ 224 #define AV_CODEC_FLAG_QSCALE (1 << 1) 225 /** 226 * 4 MV per MB allowed / advanced prediction for H.263. 227 */ 228 #define AV_CODEC_FLAG_4MV (1 << 2) 229 /** 230 * Output even those frames that might be corrupted. 231 */ 232 #define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) 233 /** 234 * Use qpel MC. 235 */ 236 #define AV_CODEC_FLAG_QPEL (1 << 4) 237 #if FF_API_DROPCHANGED 238 /** 239 * Don't output frames whose parameters differ from first 240 * decoded frame in stream. 241 * 242 * @deprecated callers should implement this functionality in their own code 243 */ 244 #define AV_CODEC_FLAG_DROPCHANGED (1 << 5) 245 #endif 246 /** 247 * Request the encoder to output reconstructed frames, i.e.\ frames that would 248 * be produced by decoding the encoded bistream. These frames may be retrieved 249 * by calling avcodec_receive_frame() immediately after a successful call to 250 * avcodec_receive_packet(). 251 * 252 * Should only be used with encoders flagged with the 253 * @ref AV_CODEC_CAP_ENCODER_RECON_FRAME capability. 254 * 255 * @note 256 * Each reconstructed frame returned by the encoder corresponds to the last 257 * encoded packet, i.e. the frames are returned in coded order rather than 258 * presentation order. 259 * 260 * @note 261 * Frame parameters (like pixel format or dimensions) do not have to match the 262 * AVCodecContext values. Make sure to use the values from the returned frame. 263 */ 264 #define AV_CODEC_FLAG_RECON_FRAME (1 << 6) 265 /** 266 * @par decoding 267 * Request the decoder to propagate each packet's AVPacket.opaque and 268 * AVPacket.opaque_ref to its corresponding output AVFrame. 269 * 270 * @par encoding: 271 * Request the encoder to propagate each frame's AVFrame.opaque and 272 * AVFrame.opaque_ref values to its corresponding output AVPacket. 273 * 274 * @par 275 * May only be set on encoders that have the 276 * @ref AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability flag. 277 * 278 * @note 279 * While in typical cases one input frame produces exactly one output packet 280 * (perhaps after a delay), in general the mapping of frames to packets is 281 * M-to-N, so 282 * - Any number of input frames may be associated with any given output packet. 283 * This includes zero - e.g. some encoders may output packets that carry only 284 * metadata about the whole stream. 285 * - A given input frame may be associated with any number of output packets. 286 * Again this includes zero - e.g. some encoders may drop frames under certain 287 * conditions. 288 * . 289 * This implies that when using this flag, the caller must NOT assume that 290 * - a given input frame's opaques will necessarily appear on some output packet; 291 * - every output packet will have some non-NULL opaque value. 292 * . 293 * When an output packet contains multiple frames, the opaque values will be 294 * taken from the first of those. 295 * 296 * @note 297 * The converse holds for decoders, with frames and packets switched. 298 */ 299 #define AV_CODEC_FLAG_COPY_OPAQUE (1 << 7) 300 /** 301 * Signal to the encoder that the values of AVFrame.duration are valid and 302 * should be used (typically for transferring them to output packets). 303 * 304 * If this flag is not set, frame durations are ignored. 305 */ 306 #define AV_CODEC_FLAG_FRAME_DURATION (1 << 8) 307 /** 308 * Use internal 2pass ratecontrol in first pass mode. 309 */ 310 #define AV_CODEC_FLAG_PASS1 (1 << 9) 311 /** 312 * Use internal 2pass ratecontrol in second pass mode. 313 */ 314 #define AV_CODEC_FLAG_PASS2 (1 << 10) 315 /** 316 * loop filter. 317 */ 318 #define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) 319 /** 320 * Only decode/encode grayscale. 321 */ 322 #define AV_CODEC_FLAG_GRAY (1 << 13) 323 /** 324 * error[?] variables will be set during encoding. 325 */ 326 #define AV_CODEC_FLAG_PSNR (1 << 15) 327 /** 328 * Use interlaced DCT. 329 */ 330 #define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) 331 /** 332 * Force low delay. 333 */ 334 #define AV_CODEC_FLAG_LOW_DELAY (1 << 19) 335 /** 336 * Place global headers in extradata instead of every keyframe. 337 */ 338 #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) 339 /** 340 * Use only bitexact stuff (except (I)DCT). 341 */ 342 #define AV_CODEC_FLAG_BITEXACT (1 << 23) 343 /* Fx : Flag for H.263+ extra options */ 344 /** 345 * H.263 advanced intra coding / MPEG-4 AC prediction 346 */ 347 #define AV_CODEC_FLAG_AC_PRED (1 << 24) 348 /** 349 * interlaced motion estimation 350 */ 351 #define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) 352 #define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) 353 354 /** 355 * Allow non spec compliant speedup tricks. 356 */ 357 #define AV_CODEC_FLAG2_FAST (1 << 0) 358 /** 359 * Skip bitstream encoding. 360 */ 361 #define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) 362 /** 363 * Place global headers at every keyframe instead of in extradata. 364 */ 365 #define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3) 366 367 /** 368 * Input bitstream might be truncated at a packet boundaries 369 * instead of only at frame boundaries. 370 */ 371 #define AV_CODEC_FLAG2_CHUNKS (1 << 15) 372 /** 373 * Discard cropping information from SPS. 374 */ 375 #define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16) 376 377 /** 378 * Show all frames before the first keyframe 379 */ 380 #define AV_CODEC_FLAG2_SHOW_ALL (1 << 22) 381 /** 382 * Export motion vectors through frame side data 383 */ 384 #define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28) 385 /** 386 * Do not skip samples and export skip information as frame side data 387 */ 388 #define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29) 389 /** 390 * Do not reset ASS ReadOrder field on flush (subtitles decoding) 391 */ 392 #define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30) 393 /** 394 * Generate/parse ICC profiles on encode/decode, as appropriate for the type of 395 * file. No effect on codecs which cannot contain embedded ICC profiles, or 396 * when compiled without support for lcms2. 397 */ 398 #define AV_CODEC_FLAG2_ICC_PROFILES (1U << 31) 399 400 /* Exported side data. 401 These flags can be passed in AVCodecContext.export_side_data before initialization. 402 */ 403 /** 404 * Export motion vectors through frame side data 405 */ 406 #define AV_CODEC_EXPORT_DATA_MVS (1 << 0) 407 /** 408 * Export encoder Producer Reference Time through packet side data 409 */ 410 #define AV_CODEC_EXPORT_DATA_PRFT (1 << 1) 411 /** 412 * Decoding only. 413 * Export the AVVideoEncParams structure through frame side data. 414 */ 415 #define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2) 416 /** 417 * Decoding only. 418 * Do not apply film grain, export it instead. 419 */ 420 #define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3) 421 422 /** 423 * The decoder will keep a reference to the frame and may reuse it later. 424 */ 425 #define AV_GET_BUFFER_FLAG_REF (1 << 0) 426 427 /** 428 * The encoder will keep a reference to the packet and may reuse it later. 429 */ 430 #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0) 431 432 /** 433 * main external API structure. 434 * New fields can be added to the end with minor version bumps. 435 * Removal, reordering and changes to existing fields require a major 436 * version bump. 437 * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user 438 * applications. 439 * The name string for AVOptions options matches the associated command line 440 * parameter name and can be found in libavcodec/options_table.h 441 * The AVOption/command line parameter names differ in some cases from the C 442 * structure field names for historic reasons or brevity. 443 * sizeof(AVCodecContext) must not be used outside libav*. 444 */ 445 typedef struct AVCodecContext { 446 /** 447 * information on struct for av_log 448 * - set by avcodec_alloc_context3 449 */ 450 const AVClass *av_class; 451 int log_level_offset; 452 453 enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ 454 const struct AVCodec *codec; 455 enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ 456 457 /** 458 * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). 459 * This is used to work around some encoder bugs. 460 * A demuxer should set this to what is stored in the field used to identify the codec. 461 * If there are multiple such fields in a container then the demuxer should choose the one 462 * which maximizes the information about the used codec. 463 * If the codec tag field in a container is larger than 32 bits then the demuxer should 464 * remap the longer ID to 32 bits with a table or other structure. Alternatively a new 465 * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated 466 * first. 467 * - encoding: Set by user, if not then the default based on codec_id will be used. 468 * - decoding: Set by user, will be converted to uppercase by libavcodec during init. 469 */ 470 unsigned int codec_tag; 471 472 void *priv_data; 473 474 /** 475 * Private context used for internal data. 476 * 477 * Unlike priv_data, this is not codec-specific. It is used in general 478 * libavcodec functions. 479 */ 480 struct AVCodecInternal *internal; 481 482 /** 483 * Private data of the user, can be used to carry app specific stuff. 484 * - encoding: Set by user. 485 * - decoding: Set by user. 486 */ 487 void *opaque; 488 489 /** 490 * the average bitrate 491 * - encoding: Set by user; unused for constant quantizer encoding. 492 * - decoding: Set by user, may be overwritten by libavcodec 493 * if this info is available in the stream 494 */ 495 int64_t bit_rate; 496 497 /** 498 * AV_CODEC_FLAG_*. 499 * - encoding: Set by user. 500 * - decoding: Set by user. 501 */ 502 int flags; 503 504 /** 505 * AV_CODEC_FLAG2_* 506 * - encoding: Set by user. 507 * - decoding: Set by user. 508 */ 509 int flags2; 510 511 /** 512 * some codecs need / can use extradata like Huffman tables. 513 * MJPEG: Huffman tables 514 * rv10: additional flags 515 * MPEG-4: global headers (they can be in the bitstream or here) 516 * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger 517 * than extradata_size to avoid problems if it is read with the bitstream reader. 518 * The bytewise contents of extradata must not depend on the architecture or CPU endianness. 519 * Must be allocated with the av_malloc() family of functions. 520 * - encoding: Set/allocated/freed by libavcodec. 521 * - decoding: Set/allocated/freed by user. 522 */ 523 uint8_t *extradata; 524 int extradata_size; 525 526 /** 527 * This is the fundamental unit of time (in seconds) in terms 528 * of which frame timestamps are represented. For fixed-fps content, 529 * timebase should be 1/framerate and timestamp increments should be 530 * identically 1. 531 * This often, but not always is the inverse of the frame rate or field rate 532 * for video. 1/time_base is not the average frame rate if the frame rate is not 533 * constant. 534 * 535 * Like containers, elementary streams also can store timestamps, 1/time_base 536 * is the unit in which these timestamps are specified. 537 * As example of such codec time base see ISO/IEC 14496-2:2001(E) 538 * vop_time_increment_resolution and fixed_vop_rate 539 * (fixed_vop_rate == 0 implies that it is different from the framerate) 540 * 541 * - encoding: MUST be set by user. 542 * - decoding: unused. 543 */ 544 AVRational time_base; 545 546 /** 547 * Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed. 548 * - encoding: unused. 549 * - decoding: set by user. 550 */ 551 AVRational pkt_timebase; 552 553 /** 554 * - decoding: For codecs that store a framerate value in the compressed 555 * bitstream, the decoder may export it here. { 0, 1} when 556 * unknown. 557 * - encoding: May be used to signal the framerate of CFR content to an 558 * encoder. 559 */ 560 AVRational framerate; 561 562 #if FF_API_TICKS_PER_FRAME 563 /** 564 * For some codecs, the time base is closer to the field rate than the frame rate. 565 * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration 566 * if no telecine is used ... 567 * 568 * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. 569 * 570 * @deprecated 571 * - decoding: Use AVCodecDescriptor.props & AV_CODEC_PROP_FIELDS 572 * - encoding: Set AVCodecContext.framerate instead 573 * 574 */ 575 attribute_deprecated 576 int ticks_per_frame; 577 #endif 578 579 /** 580 * Codec delay. 581 * 582 * Encoding: Number of frames delay there will be from the encoder input to 583 * the decoder output. (we assume the decoder matches the spec) 584 * Decoding: Number of frames delay in addition to what a standard decoder 585 * as specified in the spec would produce. 586 * 587 * Video: 588 * Number of frames the decoded output will be delayed relative to the 589 * encoded input. 590 * 591 * Audio: 592 * For encoding, this field is unused (see initial_padding). 593 * 594 * For decoding, this is the number of samples the decoder needs to 595 * output before the decoder's output is valid. When seeking, you should 596 * start decoding this many samples prior to your desired seek point. 597 * 598 * - encoding: Set by libavcodec. 599 * - decoding: Set by libavcodec. 600 */ 601 int delay; 602 603 604 /* video only */ 605 /** 606 * picture width / height. 607 * 608 * @note Those fields may not match the values of the last 609 * AVFrame output by avcodec_receive_frame() due frame 610 * reordering. 611 * 612 * - encoding: MUST be set by user. 613 * - decoding: May be set by the user before opening the decoder if known e.g. 614 * from the container. Some decoders will require the dimensions 615 * to be set by the caller. During decoding, the decoder may 616 * overwrite those values as required while parsing the data. 617 */ 618 int width, height; 619 620 /** 621 * Bitstream width / height, may be different from width/height e.g. when 622 * the decoded frame is cropped before being output or lowres is enabled. 623 * 624 * @note Those field may not match the value of the last 625 * AVFrame output by avcodec_receive_frame() due frame 626 * reordering. 627 * 628 * - encoding: unused 629 * - decoding: May be set by the user before opening the decoder if known 630 * e.g. from the container. During decoding, the decoder may 631 * overwrite those values as required while parsing the data. 632 */ 633 int coded_width, coded_height; 634 635 /** 636 * sample aspect ratio (0 if unknown) 637 * That is the width of a pixel divided by the height of the pixel. 638 * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. 639 * - encoding: Set by user. 640 * - decoding: Set by libavcodec. 641 */ 642 AVRational sample_aspect_ratio; 643 644 /** 645 * Pixel format, see AV_PIX_FMT_xxx. 646 * May be set by the demuxer if known from headers. 647 * May be overridden by the decoder if it knows better. 648 * 649 * @note This field may not match the value of the last 650 * AVFrame output by avcodec_receive_frame() due frame 651 * reordering. 652 * 653 * - encoding: Set by user. 654 * - decoding: Set by user if known, overridden by libavcodec while 655 * parsing the data. 656 */ 657 enum AVPixelFormat pix_fmt; 658 659 /** 660 * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. 661 * - encoding: unused. 662 * - decoding: Set by libavcodec before calling get_format() 663 */ 664 enum AVPixelFormat sw_pix_fmt; 665 666 /** 667 * Chromaticity coordinates of the source primaries. 668 * - encoding: Set by user 669 * - decoding: Set by libavcodec 670 */ 671 enum AVColorPrimaries color_primaries; 672 673 /** 674 * Color Transfer Characteristic. 675 * - encoding: Set by user 676 * - decoding: Set by libavcodec 677 */ 678 enum AVColorTransferCharacteristic color_trc; 679 680 /** 681 * YUV colorspace type. 682 * - encoding: Set by user 683 * - decoding: Set by libavcodec 684 */ 685 enum AVColorSpace colorspace; 686 687 /** 688 * MPEG vs JPEG YUV range. 689 * - encoding: Set by user to override the default output color range value, 690 * If not specified, libavcodec sets the color range depending on the 691 * output format. 692 * - decoding: Set by libavcodec, can be set by the user to propagate the 693 * color range to components reading from the decoder context. 694 */ 695 enum AVColorRange color_range; 696 697 /** 698 * This defines the location of chroma samples. 699 * - encoding: Set by user 700 * - decoding: Set by libavcodec 701 */ 702 enum AVChromaLocation chroma_sample_location; 703 704 /** Field order 705 * - encoding: set by libavcodec 706 * - decoding: Set by user. 707 */ 708 enum AVFieldOrder field_order; 709 710 /** 711 * number of reference frames 712 * - encoding: Set by user. 713 * - decoding: Set by lavc. 714 */ 715 int refs; 716 717 /** 718 * Size of the frame reordering buffer in the decoder. 719 * For MPEG-2 it is 1 IPB or 0 low delay IP. 720 * - encoding: Set by libavcodec. 721 * - decoding: Set by libavcodec. 722 */ 723 int has_b_frames; 724 725 /** 726 * slice flags 727 * - encoding: unused 728 * - decoding: Set by user. 729 */ 730 int slice_flags; 731 #define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display 732 #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics) 733 #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) 734 735 /** 736 * If non NULL, 'draw_horiz_band' is called by the libavcodec 737 * decoder to draw a horizontal band. It improves cache usage. Not 738 * all codecs can do that. You must check the codec capabilities 739 * beforehand. 740 * When multithreading is used, it may be called from multiple threads 741 * at the same time; threads might draw different parts of the same AVFrame, 742 * or multiple AVFrames, and there is no guarantee that slices will be drawn 743 * in order. 744 * The function is also used by hardware acceleration APIs. 745 * It is called at least once during frame decoding to pass 746 * the data needed for hardware render. 747 * In that mode instead of pixel data, AVFrame points to 748 * a structure specific to the acceleration API. The application 749 * reads the structure and can change some fields to indicate progress 750 * or mark state. 751 * - encoding: unused 752 * - decoding: Set by user. 753 * @param height the height of the slice 754 * @param y the y position of the slice 755 * @param type 1->top field, 2->bottom field, 3->frame 756 * @param offset offset into the AVFrame.data from which the slice should be read 757 */ 758 void (*draw_horiz_band)(struct AVCodecContext *s, 759 const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], 760 int y, int type, int height); 761 762 /** 763 * Callback to negotiate the pixel format. Decoding only, may be set by the 764 * caller before avcodec_open2(). 765 * 766 * Called by some decoders to select the pixel format that will be used for 767 * the output frames. This is mainly used to set up hardware acceleration, 768 * then the provided format list contains the corresponding hwaccel pixel 769 * formats alongside the "software" one. The software pixel format may also 770 * be retrieved from \ref sw_pix_fmt. 771 * 772 * This callback will be called when the coded frame properties (such as 773 * resolution, pixel format, etc.) change and more than one output format is 774 * supported for those new properties. If a hardware pixel format is chosen 775 * and initialization for it fails, the callback may be called again 776 * immediately. 777 * 778 * This callback may be called from different threads if the decoder is 779 * multi-threaded, but not from more than one thread simultaneously. 780 * 781 * @param fmt list of formats which may be used in the current 782 * configuration, terminated by AV_PIX_FMT_NONE. 783 * @warning Behavior is undefined if the callback returns a value other 784 * than one of the formats in fmt or AV_PIX_FMT_NONE. 785 * @return the chosen format or AV_PIX_FMT_NONE 786 */ 787 enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); 788 789 /** 790 * maximum number of B-frames between non-B-frames 791 * Note: The output will be delayed by max_b_frames+1 relative to the input. 792 * - encoding: Set by user. 793 * - decoding: unused 794 */ 795 int max_b_frames; 796 797 /** 798 * qscale factor between IP and B-frames 799 * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). 800 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). 801 * - encoding: Set by user. 802 * - decoding: unused 803 */ 804 float b_quant_factor; 805 806 /** 807 * qscale offset between IP and B-frames 808 * - encoding: Set by user. 809 * - decoding: unused 810 */ 811 float b_quant_offset; 812 813 /** 814 * qscale factor between P- and I-frames 815 * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset). 816 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). 817 * - encoding: Set by user. 818 * - decoding: unused 819 */ 820 float i_quant_factor; 821 822 /** 823 * qscale offset between P and I-frames 824 * - encoding: Set by user. 825 * - decoding: unused 826 */ 827 float i_quant_offset; 828 829 /** 830 * luminance masking (0-> disabled) 831 * - encoding: Set by user. 832 * - decoding: unused 833 */ 834 float lumi_masking; 835 836 /** 837 * temporary complexity masking (0-> disabled) 838 * - encoding: Set by user. 839 * - decoding: unused 840 */ 841 float temporal_cplx_masking; 842 843 /** 844 * spatial complexity masking (0-> disabled) 845 * - encoding: Set by user. 846 * - decoding: unused 847 */ 848 float spatial_cplx_masking; 849 850 /** 851 * p block masking (0-> disabled) 852 * - encoding: Set by user. 853 * - decoding: unused 854 */ 855 float p_masking; 856 857 /** 858 * darkness masking (0-> disabled) 859 * - encoding: Set by user. 860 * - decoding: unused 861 */ 862 float dark_masking; 863 864 /** 865 * noise vs. sse weight for the nsse comparison function 866 * - encoding: Set by user. 867 * - decoding: unused 868 */ 869 int nsse_weight; 870 871 /** 872 * motion estimation comparison function 873 * - encoding: Set by user. 874 * - decoding: unused 875 */ 876 int me_cmp; 877 /** 878 * subpixel motion estimation comparison function 879 * - encoding: Set by user. 880 * - decoding: unused 881 */ 882 int me_sub_cmp; 883 /** 884 * macroblock comparison function (not supported yet) 885 * - encoding: Set by user. 886 * - decoding: unused 887 */ 888 int mb_cmp; 889 /** 890 * interlaced DCT comparison function 891 * - encoding: Set by user. 892 * - decoding: unused 893 */ 894 int ildct_cmp; 895 #define FF_CMP_SAD 0 896 #define FF_CMP_SSE 1 897 #define FF_CMP_SATD 2 898 #define FF_CMP_DCT 3 899 #define FF_CMP_PSNR 4 900 #define FF_CMP_BIT 5 901 #define FF_CMP_RD 6 902 #define FF_CMP_ZERO 7 903 #define FF_CMP_VSAD 8 904 #define FF_CMP_VSSE 9 905 #define FF_CMP_NSSE 10 906 #define FF_CMP_W53 11 907 #define FF_CMP_W97 12 908 #define FF_CMP_DCTMAX 13 909 #define FF_CMP_DCT264 14 910 #define FF_CMP_MEDIAN_SAD 15 911 #define FF_CMP_CHROMA 256 912 913 /** 914 * ME diamond size & shape 915 * - encoding: Set by user. 916 * - decoding: unused 917 */ 918 int dia_size; 919 920 /** 921 * amount of previous MV predictors (2a+1 x 2a+1 square) 922 * - encoding: Set by user. 923 * - decoding: unused 924 */ 925 int last_predictor_count; 926 927 /** 928 * motion estimation prepass comparison function 929 * - encoding: Set by user. 930 * - decoding: unused 931 */ 932 int me_pre_cmp; 933 934 /** 935 * ME prepass diamond size & shape 936 * - encoding: Set by user. 937 * - decoding: unused 938 */ 939 int pre_dia_size; 940 941 /** 942 * subpel ME quality 943 * - encoding: Set by user. 944 * - decoding: unused 945 */ 946 int me_subpel_quality; 947 948 /** 949 * maximum motion estimation search range in subpel units 950 * If 0 then no limit. 951 * 952 * - encoding: Set by user. 953 * - decoding: unused 954 */ 955 int me_range; 956 957 /** 958 * macroblock decision mode 959 * - encoding: Set by user. 960 * - decoding: unused 961 */ 962 int mb_decision; 963 #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp 964 #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits 965 #define FF_MB_DECISION_RD 2 ///< rate distortion 966 967 /** 968 * custom intra quantization matrix 969 * Must be allocated with the av_malloc() family of functions, and will be freed in 970 * avcodec_free_context(). 971 * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. 972 * - decoding: Set/allocated/freed by libavcodec. 973 */ 974 uint16_t *intra_matrix; 975 976 /** 977 * custom inter quantization matrix 978 * Must be allocated with the av_malloc() family of functions, and will be freed in 979 * avcodec_free_context(). 980 * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. 981 * - decoding: Set/allocated/freed by libavcodec. 982 */ 983 uint16_t *inter_matrix; 984 985 /** 986 * custom intra quantization matrix 987 * - encoding: Set by user, can be NULL. 988 * - decoding: unused. 989 */ 990 uint16_t *chroma_intra_matrix; 991 992 /** 993 * precision of the intra DC coefficient - 8 994 * - encoding: Set by user. 995 * - decoding: Set by libavcodec 996 */ 997 int intra_dc_precision; 998 999 /** 1000 * minimum MB Lagrange multiplier 1001 * - encoding: Set by user. 1002 * - decoding: unused 1003 */ 1004 int mb_lmin; 1005 1006 /** 1007 * maximum MB Lagrange multiplier 1008 * - encoding: Set by user. 1009 * - decoding: unused 1010 */ 1011 int mb_lmax; 1012 1013 /** 1014 * - encoding: Set by user. 1015 * - decoding: unused 1016 */ 1017 int bidir_refine; 1018 1019 /** 1020 * minimum GOP size 1021 * - encoding: Set by user. 1022 * - decoding: unused 1023 */ 1024 int keyint_min; 1025 1026 /** 1027 * the number of pictures in a group of pictures, or 0 for intra_only 1028 * - encoding: Set by user. 1029 * - decoding: unused 1030 */ 1031 int gop_size; 1032 1033 /** 1034 * Note: Value depends upon the compare function used for fullpel ME. 1035 * - encoding: Set by user. 1036 * - decoding: unused 1037 */ 1038 int mv0_threshold; 1039 1040 /** 1041 * Number of slices. 1042 * Indicates number of picture subdivisions. Used for parallelized 1043 * decoding. 1044 * - encoding: Set by user 1045 * - decoding: unused 1046 */ 1047 int slices; 1048 1049 /* audio only */ 1050 int sample_rate; ///< samples per second 1051 1052 /** 1053 * audio sample format 1054 * - encoding: Set by user. 1055 * - decoding: Set by libavcodec. 1056 */ 1057 enum AVSampleFormat sample_fmt; ///< sample format 1058 1059 /** 1060 * Audio channel layout. 1061 * - encoding: must be set by the caller, to one of AVCodec.ch_layouts. 1062 * - decoding: may be set by the caller if known e.g. from the container. 1063 * The decoder can then override during decoding as needed. 1064 */ 1065 AVChannelLayout ch_layout; 1066 1067 /* The following data should not be initialized. */ 1068 /** 1069 * Number of samples per channel in an audio frame. 1070 * 1071 * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame 1072 * except the last must contain exactly frame_size samples per channel. 1073 * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the 1074 * frame size is not restricted. 1075 * - decoding: may be set by some decoders to indicate constant frame size 1076 */ 1077 int frame_size; 1078 1079 /** 1080 * number of bytes per packet if constant and known or 0 1081 * Used by some WAV based audio codecs. 1082 */ 1083 int block_align; 1084 1085 /** 1086 * Audio cutoff bandwidth (0 means "automatic") 1087 * - encoding: Set by user. 1088 * - decoding: unused 1089 */ 1090 int cutoff; 1091 1092 /** 1093 * Type of service that the audio stream conveys. 1094 * - encoding: Set by user. 1095 * - decoding: Set by libavcodec. 1096 */ 1097 enum AVAudioServiceType audio_service_type; 1098 1099 /** 1100 * desired sample format 1101 * - encoding: Not used. 1102 * - decoding: Set by user. 1103 * Decoder will decode to this format if it can. 1104 */ 1105 enum AVSampleFormat request_sample_fmt; 1106 1107 /** 1108 * Audio only. The number of "priming" samples (padding) inserted by the 1109 * encoder at the beginning of the audio. I.e. this number of leading 1110 * decoded samples must be discarded by the caller to get the original audio 1111 * without leading padding. 1112 * 1113 * - decoding: unused 1114 * - encoding: Set by libavcodec. The timestamps on the output packets are 1115 * adjusted by the encoder so that they always refer to the 1116 * first sample of the data actually contained in the packet, 1117 * including any added padding. E.g. if the timebase is 1118 * 1/samplerate and the timestamp of the first input sample is 1119 * 0, the timestamp of the first output packet will be 1120 * -initial_padding. 1121 */ 1122 int initial_padding; 1123 1124 /** 1125 * Audio only. The amount of padding (in samples) appended by the encoder to 1126 * the end of the audio. I.e. this number of decoded samples must be 1127 * discarded by the caller from the end of the stream to get the original 1128 * audio without any trailing padding. 1129 * 1130 * - decoding: unused 1131 * - encoding: unused 1132 */ 1133 int trailing_padding; 1134 1135 /** 1136 * Number of samples to skip after a discontinuity 1137 * - decoding: unused 1138 * - encoding: set by libavcodec 1139 */ 1140 int seek_preroll; 1141 1142 /** 1143 * This callback is called at the beginning of each frame to get data 1144 * buffer(s) for it. There may be one contiguous buffer for all the data or 1145 * there may be a buffer per each data plane or anything in between. What 1146 * this means is, you may set however many entries in buf[] you feel necessary. 1147 * Each buffer must be reference-counted using the AVBuffer API (see description 1148 * of buf[] below). 1149 * 1150 * The following fields will be set in the frame before this callback is 1151 * called: 1152 * - format 1153 * - width, height (video only) 1154 * - sample_rate, channel_layout, nb_samples (audio only) 1155 * Their values may differ from the corresponding values in 1156 * AVCodecContext. This callback must use the frame values, not the codec 1157 * context values, to calculate the required buffer size. 1158 * 1159 * This callback must fill the following fields in the frame: 1160 * - data[] 1161 * - linesize[] 1162 * - extended_data: 1163 * * if the data is planar audio with more than 8 channels, then this 1164 * callback must allocate and fill extended_data to contain all pointers 1165 * to all data planes. data[] must hold as many pointers as it can. 1166 * extended_data must be allocated with av_malloc() and will be freed in 1167 * av_frame_unref(). 1168 * * otherwise extended_data must point to data 1169 * - buf[] must contain one or more pointers to AVBufferRef structures. Each of 1170 * the frame's data and extended_data pointers must be contained in these. That 1171 * is, one AVBufferRef for each allocated chunk of memory, not necessarily one 1172 * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), 1173 * and av_buffer_ref(). 1174 * - extended_buf and nb_extended_buf must be allocated with av_malloc() by 1175 * this callback and filled with the extra buffers if there are more 1176 * buffers than buf[] can hold. extended_buf will be freed in 1177 * av_frame_unref(). 1178 * 1179 * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call 1180 * avcodec_default_get_buffer2() instead of providing buffers allocated by 1181 * some other means. 1182 * 1183 * Each data plane must be aligned to the maximum required by the target 1184 * CPU. 1185 * 1186 * @see avcodec_default_get_buffer2() 1187 * 1188 * Video: 1189 * 1190 * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused 1191 * (read and/or written to if it is writable) later by libavcodec. 1192 * 1193 * avcodec_align_dimensions2() should be used to find the required width and 1194 * height, as they normally need to be rounded up to the next multiple of 16. 1195 * 1196 * Some decoders do not support linesizes changing between frames. 1197 * 1198 * If frame multithreading is used, this callback may be called from a 1199 * different thread, but not from more than one at once. Does not need to be 1200 * reentrant. 1201 * 1202 * @see avcodec_align_dimensions2() 1203 * 1204 * Audio: 1205 * 1206 * Decoders request a buffer of a particular size by setting 1207 * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, 1208 * however, utilize only part of the buffer by setting AVFrame.nb_samples 1209 * to a smaller value in the output frame. 1210 * 1211 * As a convenience, av_samples_get_buffer_size() and 1212 * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() 1213 * functions to find the required data size and to fill data pointers and 1214 * linesize. In AVFrame.linesize, only linesize[0] may be set for audio 1215 * since all planes must be the same size. 1216 * 1217 * @see av_samples_get_buffer_size(), av_samples_fill_arrays() 1218 * 1219 * - encoding: unused 1220 * - decoding: Set by libavcodec, user can override. 1221 */ 1222 int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags); 1223 1224 /* - encoding parameters */ 1225 /** 1226 * number of bits the bitstream is allowed to diverge from the reference. 1227 * the reference can be CBR (for CBR pass1) or VBR (for pass2) 1228 * - encoding: Set by user; unused for constant quantizer encoding. 1229 * - decoding: unused 1230 */ 1231 int bit_rate_tolerance; 1232 1233 /** 1234 * Global quality for codecs which cannot change it per frame. 1235 * This should be proportional to MPEG-1/2/4 qscale. 1236 * - encoding: Set by user. 1237 * - decoding: unused 1238 */ 1239 int global_quality; 1240 1241 /** 1242 * - encoding: Set by user. 1243 * - decoding: unused 1244 */ 1245 int compression_level; 1246 #define FF_COMPRESSION_DEFAULT -1 1247 1248 float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) 1249 float qblur; ///< amount of qscale smoothing over time (0.0-1.0) 1250 1251 /** 1252 * minimum quantizer 1253 * - encoding: Set by user. 1254 * - decoding: unused 1255 */ 1256 int qmin; 1257 1258 /** 1259 * maximum quantizer 1260 * - encoding: Set by user. 1261 * - decoding: unused 1262 */ 1263 int qmax; 1264 1265 /** 1266 * maximum quantizer difference between frames 1267 * - encoding: Set by user. 1268 * - decoding: unused 1269 */ 1270 int max_qdiff; 1271 1272 /** 1273 * decoder bitstream buffer size 1274 * - encoding: Set by user. 1275 * - decoding: May be set by libavcodec. 1276 */ 1277 int rc_buffer_size; 1278 1279 /** 1280 * ratecontrol override, see RcOverride 1281 * - encoding: Allocated/set/freed by user. 1282 * - decoding: unused 1283 */ 1284 int rc_override_count; 1285 RcOverride *rc_override; 1286 1287 /** 1288 * maximum bitrate 1289 * - encoding: Set by user. 1290 * - decoding: Set by user, may be overwritten by libavcodec. 1291 */ 1292 int64_t rc_max_rate; 1293 1294 /** 1295 * minimum bitrate 1296 * - encoding: Set by user. 1297 * - decoding: unused 1298 */ 1299 int64_t rc_min_rate; 1300 1301 /** 1302 * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. 1303 * - encoding: Set by user. 1304 * - decoding: unused. 1305 */ 1306 float rc_max_available_vbv_use; 1307 1308 /** 1309 * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow. 1310 * - encoding: Set by user. 1311 * - decoding: unused. 1312 */ 1313 float rc_min_vbv_overflow_use; 1314 1315 /** 1316 * Number of bits which should be loaded into the rc buffer before decoding starts. 1317 * - encoding: Set by user. 1318 * - decoding: unused 1319 */ 1320 int rc_initial_buffer_occupancy; 1321 1322 /** 1323 * trellis RD quantization 1324 * - encoding: Set by user. 1325 * - decoding: unused 1326 */ 1327 int trellis; 1328 1329 /** 1330 * pass1 encoding statistics output buffer 1331 * - encoding: Set by libavcodec. 1332 * - decoding: unused 1333 */ 1334 char *stats_out; 1335 1336 /** 1337 * pass2 encoding statistics input buffer 1338 * Concatenated stuff from stats_out of pass1 should be placed here. 1339 * - encoding: Allocated/set/freed by user. 1340 * - decoding: unused 1341 */ 1342 char *stats_in; 1343 1344 /** 1345 * Work around bugs in encoders which sometimes cannot be detected automatically. 1346 * - encoding: Set by user 1347 * - decoding: Set by user 1348 */ 1349 int workaround_bugs; 1350 #define FF_BUG_AUTODETECT 1 ///< autodetection 1351 #define FF_BUG_XVID_ILACE 4 1352 #define FF_BUG_UMP4 8 1353 #define FF_BUG_NO_PADDING 16 1354 #define FF_BUG_AMV 32 1355 #define FF_BUG_QPEL_CHROMA 64 1356 #define FF_BUG_STD_QPEL 128 1357 #define FF_BUG_QPEL_CHROMA2 256 1358 #define FF_BUG_DIRECT_BLOCKSIZE 512 1359 #define FF_BUG_EDGE 1024 1360 #define FF_BUG_HPEL_CHROMA 2048 1361 #define FF_BUG_DC_CLIP 4096 1362 #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. 1363 #define FF_BUG_TRUNCATED 16384 1364 #define FF_BUG_IEDGE 32768 1365 1366 /** 1367 * strictly follow the standard (MPEG-4, ...). 1368 * - encoding: Set by user. 1369 * - decoding: Set by user. 1370 * Setting this to STRICT or higher means the encoder and decoder will 1371 * generally do stupid things, whereas setting it to unofficial or lower 1372 * will mean the encoder might produce output that is not supported by all 1373 * spec-compliant decoders. Decoders don't differentiate between normal, 1374 * unofficial and experimental (that is, they always try to decode things 1375 * when they can) unless they are explicitly asked to behave stupidly 1376 * (=strictly conform to the specs) 1377 * This may only be set to one of the FF_COMPLIANCE_* values in defs.h. 1378 */ 1379 int strict_std_compliance; 1380 1381 /** 1382 * error concealment flags 1383 * - encoding: unused 1384 * - decoding: Set by user. 1385 */ 1386 int error_concealment; 1387 #define FF_EC_GUESS_MVS 1 1388 #define FF_EC_DEBLOCK 2 1389 #define FF_EC_FAVOR_INTER 256 1390 1391 /** 1392 * debug 1393 * - encoding: Set by user. 1394 * - decoding: Set by user. 1395 */ 1396 int debug; 1397 #define FF_DEBUG_PICT_INFO 1 1398 #define FF_DEBUG_RC 2 1399 #define FF_DEBUG_BITSTREAM 4 1400 #define FF_DEBUG_MB_TYPE 8 1401 #define FF_DEBUG_QP 16 1402 #define FF_DEBUG_DCT_COEFF 0x00000040 1403 #define FF_DEBUG_SKIP 0x00000080 1404 #define FF_DEBUG_STARTCODE 0x00000100 1405 #define FF_DEBUG_ER 0x00000400 1406 #define FF_DEBUG_MMCO 0x00000800 1407 #define FF_DEBUG_BUGS 0x00001000 1408 #define FF_DEBUG_BUFFERS 0x00008000 1409 #define FF_DEBUG_THREADS 0x00010000 1410 #define FF_DEBUG_GREEN_MD 0x00800000 1411 #define FF_DEBUG_NOMC 0x01000000 1412 1413 /** 1414 * Error recognition; may misdetect some more or less valid parts as errors. 1415 * This is a bitfield of the AV_EF_* values defined in defs.h. 1416 * 1417 * - encoding: Set by user. 1418 * - decoding: Set by user. 1419 */ 1420 int err_recognition; 1421 1422 /** 1423 * Hardware accelerator in use 1424 * - encoding: unused. 1425 * - decoding: Set by libavcodec 1426 */ 1427 const struct AVHWAccel *hwaccel; 1428 1429 /** 1430 * Legacy hardware accelerator context. 1431 * 1432 * For some hardware acceleration methods, the caller may use this field to 1433 * signal hwaccel-specific data to the codec. The struct pointed to by this 1434 * pointer is hwaccel-dependent and defined in the respective header. Please 1435 * refer to the FFmpeg HW accelerator documentation to know how to fill 1436 * this. 1437 * 1438 * In most cases this field is optional - the necessary information may also 1439 * be provided to libavcodec through @ref hw_frames_ctx or @ref 1440 * hw_device_ctx (see avcodec_get_hw_config()). However, in some cases it 1441 * may be the only method of signalling some (optional) information. 1442 * 1443 * The struct and its contents are owned by the caller. 1444 * 1445 * - encoding: May be set by the caller before avcodec_open2(). Must remain 1446 * valid until avcodec_free_context(). 1447 * - decoding: May be set by the caller in the get_format() callback. 1448 * Must remain valid until the next get_format() call, 1449 * or avcodec_free_context() (whichever comes first). 1450 */ 1451 void *hwaccel_context; 1452 1453 /** 1454 * A reference to the AVHWFramesContext describing the input (for encoding) 1455 * or output (decoding) frames. The reference is set by the caller and 1456 * afterwards owned (and freed) by libavcodec - it should never be read by 1457 * the caller after being set. 1458 * 1459 * - decoding: This field should be set by the caller from the get_format() 1460 * callback. The previous reference (if any) will always be 1461 * unreffed by libavcodec before the get_format() call. 1462 * 1463 * If the default get_buffer2() is used with a hwaccel pixel 1464 * format, then this AVHWFramesContext will be used for 1465 * allocating the frame buffers. 1466 * 1467 * - encoding: For hardware encoders configured to use a hwaccel pixel 1468 * format, this field should be set by the caller to a reference 1469 * to the AVHWFramesContext describing input frames. 1470 * AVHWFramesContext.format must be equal to 1471 * AVCodecContext.pix_fmt. 1472 * 1473 * This field should be set before avcodec_open2() is called. 1474 */ 1475 AVBufferRef *hw_frames_ctx; 1476 1477 /** 1478 * A reference to the AVHWDeviceContext describing the device which will 1479 * be used by a hardware encoder/decoder. The reference is set by the 1480 * caller and afterwards owned (and freed) by libavcodec. 1481 * 1482 * This should be used if either the codec device does not require 1483 * hardware frames or any that are used are to be allocated internally by 1484 * libavcodec. If the user wishes to supply any of the frames used as 1485 * encoder input or decoder output then hw_frames_ctx should be used 1486 * instead. When hw_frames_ctx is set in get_format() for a decoder, this 1487 * field will be ignored while decoding the associated stream segment, but 1488 * may again be used on a following one after another get_format() call. 1489 * 1490 * For both encoders and decoders this field should be set before 1491 * avcodec_open2() is called and must not be written to thereafter. 1492 * 1493 * Note that some decoders may require this field to be set initially in 1494 * order to support hw_frames_ctx at all - in that case, all frames 1495 * contexts used must be created on the same device. 1496 */ 1497 AVBufferRef *hw_device_ctx; 1498 1499 /** 1500 * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated 1501 * decoding (if active). 1502 * - encoding: unused 1503 * - decoding: Set by user (either before avcodec_open2(), or in the 1504 * AVCodecContext.get_format callback) 1505 */ 1506 int hwaccel_flags; 1507 1508 /** 1509 * Video decoding only. Sets the number of extra hardware frames which 1510 * the decoder will allocate for use by the caller. This must be set 1511 * before avcodec_open2() is called. 1512 * 1513 * Some hardware decoders require all frames that they will use for 1514 * output to be defined in advance before decoding starts. For such 1515 * decoders, the hardware frame pool must therefore be of a fixed size. 1516 * The extra frames set here are on top of any number that the decoder 1517 * needs internally in order to operate normally (for example, frames 1518 * used as reference pictures). 1519 */ 1520 int extra_hw_frames; 1521 1522 /** 1523 * error 1524 * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR. 1525 * - decoding: unused 1526 */ 1527 uint64_t error[AV_NUM_DATA_POINTERS]; 1528 1529 /** 1530 * DCT algorithm, see FF_DCT_* below 1531 * - encoding: Set by user. 1532 * - decoding: unused 1533 */ 1534 int dct_algo; 1535 #define FF_DCT_AUTO 0 1536 #define FF_DCT_FASTINT 1 1537 #define FF_DCT_INT 2 1538 #define FF_DCT_MMX 3 1539 #define FF_DCT_ALTIVEC 5 1540 #define FF_DCT_FAAN 6 1541 1542 /** 1543 * IDCT algorithm, see FF_IDCT_* below. 1544 * - encoding: Set by user. 1545 * - decoding: Set by user. 1546 */ 1547 int idct_algo; 1548 #define FF_IDCT_AUTO 0 1549 #define FF_IDCT_INT 1 1550 #define FF_IDCT_SIMPLE 2 1551 #define FF_IDCT_SIMPLEMMX 3 1552 #define FF_IDCT_ARM 7 1553 #define FF_IDCT_ALTIVEC 8 1554 #define FF_IDCT_SIMPLEARM 10 1555 #define FF_IDCT_XVID 14 1556 #define FF_IDCT_SIMPLEARMV5TE 16 1557 #define FF_IDCT_SIMPLEARMV6 17 1558 #define FF_IDCT_FAAN 20 1559 #define FF_IDCT_SIMPLENEON 22 1560 #define FF_IDCT_SIMPLEAUTO 128 1561 1562 /** 1563 * bits per sample/pixel from the demuxer (needed for huffyuv). 1564 * - encoding: Set by libavcodec. 1565 * - decoding: Set by user. 1566 */ 1567 int bits_per_coded_sample; 1568 1569 /** 1570 * Bits per sample/pixel of internal libavcodec pixel/sample format. 1571 * - encoding: set by user. 1572 * - decoding: set by libavcodec. 1573 */ 1574 int bits_per_raw_sample; 1575 1576 /** 1577 * thread count 1578 * is used to decide how many independent tasks should be passed to execute() 1579 * - encoding: Set by user. 1580 * - decoding: Set by user. 1581 */ 1582 int thread_count; 1583 1584 /** 1585 * Which multithreading methods to use. 1586 * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, 1587 * so clients which cannot provide future frames should not use it. 1588 * 1589 * - encoding: Set by user, otherwise the default is used. 1590 * - decoding: Set by user, otherwise the default is used. 1591 */ 1592 int thread_type; 1593 #define FF_THREAD_FRAME 1 ///< Decode more than one frame at once 1594 #define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once 1595 1596 /** 1597 * Which multithreading methods are in use by the codec. 1598 * - encoding: Set by libavcodec. 1599 * - decoding: Set by libavcodec. 1600 */ 1601 int active_thread_type; 1602 1603 /** 1604 * The codec may call this to execute several independent things. 1605 * It will return only after finishing all tasks. 1606 * The user may replace this with some multithreaded implementation, 1607 * the default implementation will execute the parts serially. 1608 * @param count the number of things to execute 1609 * - encoding: Set by libavcodec, user can override. 1610 * - decoding: Set by libavcodec, user can override. 1611 */ 1612 int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); 1613 1614 /** 1615 * The codec may call this to execute several independent things. 1616 * It will return only after finishing all tasks. 1617 * The user may replace this with some multithreaded implementation, 1618 * the default implementation will execute the parts serially. 1619 * @param c context passed also to func 1620 * @param count the number of things to execute 1621 * @param arg2 argument passed unchanged to func 1622 * @param ret return values of executed functions, must have space for "count" values. May be NULL. 1623 * @param func function that will be called count times, with jobnr from 0 to count-1. 1624 * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no 1625 * two instances of func executing at the same time will have the same threadnr. 1626 * @return always 0 currently, but code should handle a future improvement where when any call to func 1627 * returns < 0 no further calls to func may be done and < 0 is returned. 1628 * - encoding: Set by libavcodec, user can override. 1629 * - decoding: Set by libavcodec, user can override. 1630 */ 1631 int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); 1632 1633 /** 1634 * profile 1635 * - encoding: Set by user. 1636 * - decoding: Set by libavcodec. 1637 * See the AV_PROFILE_* defines in defs.h. 1638 */ 1639 int profile; 1640 #if FF_API_FF_PROFILE_LEVEL 1641 /** @deprecated The following defines are deprecated; use AV_PROFILE_* 1642 * in defs.h instead. */ 1643 #define FF_PROFILE_UNKNOWN -99 1644 #define FF_PROFILE_RESERVED -100 1645 1646 #define FF_PROFILE_AAC_MAIN 0 1647 #define FF_PROFILE_AAC_LOW 1 1648 #define FF_PROFILE_AAC_SSR 2 1649 #define FF_PROFILE_AAC_LTP 3 1650 #define FF_PROFILE_AAC_HE 4 1651 #define FF_PROFILE_AAC_HE_V2 28 1652 #define FF_PROFILE_AAC_LD 22 1653 #define FF_PROFILE_AAC_ELD 38 1654 #define FF_PROFILE_MPEG2_AAC_LOW 128 1655 #define FF_PROFILE_MPEG2_AAC_HE 131 1656 1657 #define FF_PROFILE_DNXHD 0 1658 #define FF_PROFILE_DNXHR_LB 1 1659 #define FF_PROFILE_DNXHR_SQ 2 1660 #define FF_PROFILE_DNXHR_HQ 3 1661 #define FF_PROFILE_DNXHR_HQX 4 1662 #define FF_PROFILE_DNXHR_444 5 1663 1664 #define FF_PROFILE_DTS 20 1665 #define FF_PROFILE_DTS_ES 30 1666 #define FF_PROFILE_DTS_96_24 40 1667 #define FF_PROFILE_DTS_HD_HRA 50 1668 #define FF_PROFILE_DTS_HD_MA 60 1669 #define FF_PROFILE_DTS_EXPRESS 70 1670 #define FF_PROFILE_DTS_HD_MA_X 61 1671 #define FF_PROFILE_DTS_HD_MA_X_IMAX 62 1672 1673 1674 #define FF_PROFILE_EAC3_DDP_ATMOS 30 1675 1676 #define FF_PROFILE_TRUEHD_ATMOS 30 1677 1678 #define FF_PROFILE_MPEG2_422 0 1679 #define FF_PROFILE_MPEG2_HIGH 1 1680 #define FF_PROFILE_MPEG2_SS 2 1681 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3 1682 #define FF_PROFILE_MPEG2_MAIN 4 1683 #define FF_PROFILE_MPEG2_SIMPLE 5 1684 1685 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag 1686 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag 1687 1688 #define FF_PROFILE_H264_BASELINE 66 1689 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) 1690 #define FF_PROFILE_H264_MAIN 77 1691 #define FF_PROFILE_H264_EXTENDED 88 1692 #define FF_PROFILE_H264_HIGH 100 1693 #define FF_PROFILE_H264_HIGH_10 110 1694 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) 1695 #define FF_PROFILE_H264_MULTIVIEW_HIGH 118 1696 #define FF_PROFILE_H264_HIGH_422 122 1697 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) 1698 #define FF_PROFILE_H264_STEREO_HIGH 128 1699 #define FF_PROFILE_H264_HIGH_444 144 1700 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 1701 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) 1702 #define FF_PROFILE_H264_CAVLC_444 44 1703 1704 #define FF_PROFILE_VC1_SIMPLE 0 1705 #define FF_PROFILE_VC1_MAIN 1 1706 #define FF_PROFILE_VC1_COMPLEX 2 1707 #define FF_PROFILE_VC1_ADVANCED 3 1708 1709 #define FF_PROFILE_MPEG4_SIMPLE 0 1710 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 1711 #define FF_PROFILE_MPEG4_CORE 2 1712 #define FF_PROFILE_MPEG4_MAIN 3 1713 #define FF_PROFILE_MPEG4_N_BIT 4 1714 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 1715 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 1716 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 1717 #define FF_PROFILE_MPEG4_HYBRID 8 1718 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 1719 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10 1720 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11 1721 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12 1722 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 1723 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 1724 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 1725 1726 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1 1727 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2 1728 #define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768 1729 #define FF_PROFILE_JPEG2000_DCINEMA_2K 3 1730 #define FF_PROFILE_JPEG2000_DCINEMA_4K 4 1731 1732 #define FF_PROFILE_VP9_0 0 1733 #define FF_PROFILE_VP9_1 1 1734 #define FF_PROFILE_VP9_2 2 1735 #define FF_PROFILE_VP9_3 3 1736 1737 #define FF_PROFILE_HEVC_MAIN 1 1738 #define FF_PROFILE_HEVC_MAIN_10 2 1739 #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 1740 #define FF_PROFILE_HEVC_REXT 4 1741 #define FF_PROFILE_HEVC_SCC 9 1742 1743 #define FF_PROFILE_VVC_MAIN_10 1 1744 #define FF_PROFILE_VVC_MAIN_10_444 33 1745 1746 #define FF_PROFILE_AV1_MAIN 0 1747 #define FF_PROFILE_AV1_HIGH 1 1748 #define FF_PROFILE_AV1_PROFESSIONAL 2 1749 1750 #define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0 1751 #define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1 1752 #define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2 1753 #define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3 1754 #define FF_PROFILE_MJPEG_JPEG_LS 0xf7 1755 1756 #define FF_PROFILE_SBC_MSBC 1 1757 1758 #define FF_PROFILE_PRORES_PROXY 0 1759 #define FF_PROFILE_PRORES_LT 1 1760 #define FF_PROFILE_PRORES_STANDARD 2 1761 #define FF_PROFILE_PRORES_HQ 3 1762 #define FF_PROFILE_PRORES_4444 4 1763 #define FF_PROFILE_PRORES_XQ 5 1764 1765 #define FF_PROFILE_ARIB_PROFILE_A 0 1766 #define FF_PROFILE_ARIB_PROFILE_C 1 1767 1768 #define FF_PROFILE_KLVA_SYNC 0 1769 #define FF_PROFILE_KLVA_ASYNC 1 1770 1771 #define FF_PROFILE_EVC_BASELINE 0 1772 #define FF_PROFILE_EVC_MAIN 1 1773 #endif 1774 1775 /** 1776 * Encoding level descriptor. 1777 * - encoding: Set by user, corresponds to a specific level defined by the 1778 * codec, usually corresponding to the profile level, if not specified it 1779 * is set to FF_LEVEL_UNKNOWN. 1780 * - decoding: Set by libavcodec. 1781 * See AV_LEVEL_* in defs.h. 1782 */ 1783 int level; 1784 #if FF_API_FF_PROFILE_LEVEL 1785 /** @deprecated The following define is deprecated; use AV_LEVEL_UNKOWN 1786 * in defs.h instead. */ 1787 #define FF_LEVEL_UNKNOWN -99 1788 #endif 1789 1790 /** 1791 * Properties of the stream that gets decoded 1792 * - encoding: unused 1793 * - decoding: set by libavcodec 1794 */ 1795 unsigned properties; 1796 #define FF_CODEC_PROPERTY_LOSSLESS 0x00000001 1797 #define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 1798 #define FF_CODEC_PROPERTY_FILM_GRAIN 0x00000004 1799 1800 /** 1801 * Skip loop filtering for selected frames. 1802 * - encoding: unused 1803 * - decoding: Set by user. 1804 */ 1805 enum AVDiscard skip_loop_filter; 1806 1807 /** 1808 * Skip IDCT/dequantization for selected frames. 1809 * - encoding: unused 1810 * - decoding: Set by user. 1811 */ 1812 enum AVDiscard skip_idct; 1813 1814 /** 1815 * Skip decoding for selected frames. 1816 * - encoding: unused 1817 * - decoding: Set by user. 1818 */ 1819 enum AVDiscard skip_frame; 1820 1821 /** 1822 * Skip processing alpha if supported by codec. 1823 * Note that if the format uses pre-multiplied alpha (common with VP6, 1824 * and recommended due to better video quality/compression) 1825 * the image will look as if alpha-blended onto a black background. 1826 * However for formats that do not use pre-multiplied alpha 1827 * there might be serious artefacts (though e.g. libswscale currently 1828 * assumes pre-multiplied alpha anyway). 1829 * 1830 * - decoding: set by user 1831 * - encoding: unused 1832 */ 1833 int skip_alpha; 1834 1835 /** 1836 * Number of macroblock rows at the top which are skipped. 1837 * - encoding: unused 1838 * - decoding: Set by user. 1839 */ 1840 int skip_top; 1841 1842 /** 1843 * Number of macroblock rows at the bottom which are skipped. 1844 * - encoding: unused 1845 * - decoding: Set by user. 1846 */ 1847 int skip_bottom; 1848 1849 /** 1850 * low resolution decoding, 1-> 1/2 size, 2->1/4 size 1851 * - encoding: unused 1852 * - decoding: Set by user. 1853 */ 1854 int lowres; 1855 1856 /** 1857 * AVCodecDescriptor 1858 * - encoding: unused. 1859 * - decoding: set by libavcodec. 1860 */ 1861 const struct AVCodecDescriptor *codec_descriptor; 1862 1863 /** 1864 * Character encoding of the input subtitles file. 1865 * - decoding: set by user 1866 * - encoding: unused 1867 */ 1868 char *sub_charenc; 1869 1870 /** 1871 * Subtitles character encoding mode. Formats or codecs might be adjusting 1872 * this setting (if they are doing the conversion themselves for instance). 1873 * - decoding: set by libavcodec 1874 * - encoding: unused 1875 */ 1876 int sub_charenc_mode; 1877 #define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) 1878 #define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself 1879 #define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv 1880 #define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8 1881 1882 /** 1883 * Header containing style information for text subtitles. 1884 * For SUBTITLE_ASS subtitle type, it should contain the whole ASS 1885 * [Script Info] and [V4+ Styles] section, plus the [Events] line and 1886 * the Format line following. It shouldn't include any Dialogue line. 1887 * - encoding: Set/allocated/freed by user (before avcodec_open2()) 1888 * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) 1889 */ 1890 int subtitle_header_size; 1891 uint8_t *subtitle_header; 1892 1893 /** 1894 * dump format separator. 1895 * can be ", " or "\n " or anything else 1896 * - encoding: Set by user. 1897 * - decoding: Set by user. 1898 */ 1899 uint8_t *dump_separator; 1900 1901 /** 1902 * ',' separated list of allowed decoders. 1903 * If NULL then all are allowed 1904 * - encoding: unused 1905 * - decoding: set by user 1906 */ 1907 char *codec_whitelist; 1908 1909 /** 1910 * Additional data associated with the entire coded stream. 1911 * 1912 * - decoding: may be set by user before calling avcodec_open2(). 1913 * - encoding: may be set by libavcodec after avcodec_open2(). 1914 */ 1915 AVPacketSideData *coded_side_data; 1916 int nb_coded_side_data; 1917 1918 /** 1919 * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of 1920 * metadata exported in frame, packet, or coded stream side data by 1921 * decoders and encoders. 1922 * 1923 * - decoding: set by user 1924 * - encoding: set by user 1925 */ 1926 int export_side_data; 1927 1928 /** 1929 * The number of pixels per image to maximally accept. 1930 * 1931 * - decoding: set by user 1932 * - encoding: set by user 1933 */ 1934 int64_t max_pixels; 1935 1936 /** 1937 * Video decoding only. Certain video codecs support cropping, meaning that 1938 * only a sub-rectangle of the decoded frame is intended for display. This 1939 * option controls how cropping is handled by libavcodec. 1940 * 1941 * When set to 1 (the default), libavcodec will apply cropping internally. 1942 * I.e. it will modify the output frame width/height fields and offset the 1943 * data pointers (only by as much as possible while preserving alignment, or 1944 * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that 1945 * the frames output by the decoder refer only to the cropped area. The 1946 * crop_* fields of the output frames will be zero. 1947 * 1948 * When set to 0, the width/height fields of the output frames will be set 1949 * to the coded dimensions and the crop_* fields will describe the cropping 1950 * rectangle. Applying the cropping is left to the caller. 1951 * 1952 * @warning When hardware acceleration with opaque output frames is used, 1953 * libavcodec is unable to apply cropping from the top/left border. 1954 * 1955 * @note when this option is set to zero, the width/height fields of the 1956 * AVCodecContext and output AVFrames have different meanings. The codec 1957 * context fields store display dimensions (with the coded dimensions in 1958 * coded_width/height), while the frame fields store the coded dimensions 1959 * (with the display dimensions being determined by the crop_* fields). 1960 */ 1961 int apply_cropping; 1962 1963 /** 1964 * The percentage of damaged samples to discard a frame. 1965 * 1966 * - decoding: set by user 1967 * - encoding: unused 1968 */ 1969 int discard_damaged_percentage; 1970 1971 /** 1972 * The number of samples per frame to maximally accept. 1973 * 1974 * - decoding: set by user 1975 * - encoding: set by user 1976 */ 1977 int64_t max_samples; 1978 1979 /** 1980 * This callback is called at the beginning of each packet to get a data 1981 * buffer for it. 1982 * 1983 * The following field will be set in the packet before this callback is 1984 * called: 1985 * - size 1986 * This callback must use the above value to calculate the required buffer size, 1987 * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes. 1988 * 1989 * In some specific cases, the encoder may not use the entire buffer allocated by this 1990 * callback. This will be reflected in the size value in the packet once returned by 1991 * avcodec_receive_packet(). 1992 * 1993 * This callback must fill the following fields in the packet: 1994 * - data: alignment requirements for AVPacket apply, if any. Some architectures and 1995 * encoders may benefit from having aligned data. 1996 * - buf: must contain a pointer to an AVBufferRef structure. The packet's 1997 * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(), 1998 * and av_buffer_ref(). 1999 * 2000 * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call 2001 * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by 2002 * some other means. 2003 * 2004 * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags. 2005 * They may be used for example to hint what use the buffer may get after being 2006 * created. 2007 * Implementations of this callback may ignore flags they don't understand. 2008 * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused 2009 * (read and/or written to if it is writable) later by libavcodec. 2010 * 2011 * This callback must be thread-safe, as when frame threading is used, it may 2012 * be called from multiple threads simultaneously. 2013 * 2014 * @see avcodec_default_get_encode_buffer() 2015 * 2016 * - encoding: Set by libavcodec, user can override. 2017 * - decoding: unused 2018 */ 2019 int (*get_encode_buffer)(struct AVCodecContext *s, AVPacket *pkt, int flags); 2020 2021 /** 2022 * Frame counter, set by libavcodec. 2023 * 2024 * - decoding: total number of frames returned from the decoder so far. 2025 * - encoding: total number of frames passed to the encoder so far. 2026 * 2027 * @note the counter is not incremented if encoding/decoding resulted in 2028 * an error. 2029 */ 2030 int64_t frame_num; 2031 2032 /** 2033 * Decoding only. May be set by the caller before avcodec_open2() to an 2034 * av_malloc()'ed array (or via AVOptions). Owned and freed by the decoder 2035 * afterwards. 2036 * 2037 * Side data attached to decoded frames may come from several sources: 2038 * 1. coded_side_data, which the decoder will for certain types translate 2039 * from packet-type to frame-type and attach to frames; 2040 * 2. side data attached to an AVPacket sent for decoding (same 2041 * considerations as above); 2042 * 3. extracted from the coded bytestream. 2043 * The first two cases are supplied by the caller and typically come from a 2044 * container. 2045 * 2046 * This array configures decoder behaviour in cases when side data of the 2047 * same type is present both in the coded bytestream and in the 2048 * user-supplied side data (items 1. and 2. above). In all cases, at most 2049 * one instance of each side data type will be attached to output frames. By 2050 * default it will be the bytestream side data. Adding an 2051 * AVPacketSideDataType value to this array will flip the preference for 2052 * this type, thus making the decoder prefer user-supplied side data over 2053 * bytestream. In case side data of the same type is present both in 2054 * coded_data and attacked to a packet, the packet instance always has 2055 * priority. 2056 * 2057 * The array may also contain a single -1, in which case the preference is 2058 * switched for all side data types. 2059 */ 2060 int *side_data_prefer_packet; 2061 /** 2062 * Number of entries in side_data_prefer_packet. 2063 */ 2064 unsigned nb_side_data_prefer_packet; 2065 2066 /** 2067 * Array containing static side data, such as HDR10 CLL / MDCV structures. 2068 * Side data entries should be allocated by usage of helpers defined in 2069 * libavutil/frame.h. 2070 * 2071 * - encoding: may be set by user before calling avcodec_open2() for 2072 * encoder configuration. Afterwards owned and freed by the 2073 * encoder. 2074 * - decoding: unused 2075 */ 2076 AVFrameSideData **decoded_side_data; 2077 int nb_decoded_side_data; 2078 } AVCodecContext; 2079 2080 /** 2081 * @defgroup lavc_hwaccel AVHWAccel 2082 * 2083 * @note Nothing in this structure should be accessed by the user. At some 2084 * point in future it will not be externally visible at all. 2085 * 2086 * @{ 2087 */ 2088 typedef struct AVHWAccel { 2089 /** 2090 * Name of the hardware accelerated codec. 2091 * The name is globally unique among encoders and among decoders (but an 2092 * encoder and a decoder can share the same name). 2093 */ 2094 const char *name; 2095 2096 /** 2097 * Type of codec implemented by the hardware accelerator. 2098 * 2099 * See AVMEDIA_TYPE_xxx 2100 */ 2101 enum AVMediaType type; 2102 2103 /** 2104 * Codec implemented by the hardware accelerator. 2105 * 2106 * See AV_CODEC_ID_xxx 2107 */ 2108 enum AVCodecID id; 2109 2110 /** 2111 * Supported pixel format. 2112 * 2113 * Only hardware accelerated formats are supported here. 2114 */ 2115 enum AVPixelFormat pix_fmt; 2116 2117 /** 2118 * Hardware accelerated codec capabilities. 2119 * see AV_HWACCEL_CODEC_CAP_* 2120 */ 2121 int capabilities; 2122 } AVHWAccel; 2123 2124 /** 2125 * HWAccel is experimental and is thus avoided in favor of non experimental 2126 * codecs 2127 */ 2128 #define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 2129 2130 /** 2131 * Hardware acceleration should be used for decoding even if the codec level 2132 * used is unknown or higher than the maximum supported level reported by the 2133 * hardware driver. 2134 * 2135 * It's generally a good idea to pass this flag unless you have a specific 2136 * reason not to, as hardware tends to under-report supported levels. 2137 */ 2138 #define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0) 2139 2140 /** 2141 * Hardware acceleration can output YUV pixel formats with a different chroma 2142 * sampling than 4:2:0 and/or other than 8 bits per component. 2143 */ 2144 #define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1) 2145 2146 /** 2147 * Hardware acceleration should still be attempted for decoding when the 2148 * codec profile does not match the reported capabilities of the hardware. 2149 * 2150 * For example, this can be used to try to decode baseline profile H.264 2151 * streams in hardware - it will often succeed, because many streams marked 2152 * as baseline profile actually conform to constrained baseline profile. 2153 * 2154 * @warning If the stream is actually not supported then the behaviour is 2155 * undefined, and may include returning entirely incorrect output 2156 * while indicating success. 2157 */ 2158 #define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2) 2159 2160 /** 2161 * Some hardware decoders (namely nvdec) can either output direct decoder 2162 * surfaces, or make an on-device copy and return said copy. 2163 * There is a hard limit on how many decoder surfaces there can be, and it 2164 * cannot be accurately guessed ahead of time. 2165 * For some processing chains, this can be okay, but others will run into the 2166 * limit and in turn produce very confusing errors that require fine tuning of 2167 * more or less obscure options by the user, or in extreme cases cannot be 2168 * resolved at all without inserting an avfilter that forces a copy. 2169 * 2170 * Thus, the hwaccel will by default make a copy for safety and resilience. 2171 * If a users really wants to minimize the amount of copies, they can set this 2172 * flag and ensure their processing chain does not exhaust the surface pool. 2173 */ 2174 #define AV_HWACCEL_FLAG_UNSAFE_OUTPUT (1 << 3) 2175 2176 /** 2177 * @} 2178 */ 2179 2180 enum AVSubtitleType { 2181 SUBTITLE_NONE, 2182 2183 SUBTITLE_BITMAP, ///< A bitmap, pict will be set 2184 2185 /** 2186 * Plain text, the text field must be set by the decoder and is 2187 * authoritative. ass and pict fields may contain approximations. 2188 */ 2189 SUBTITLE_TEXT, 2190 2191 /** 2192 * Formatted text, the ass field must be set by the decoder and is 2193 * authoritative. pict and text fields may contain approximations. 2194 */ 2195 SUBTITLE_ASS, 2196 }; 2197 2198 #define AV_SUBTITLE_FLAG_FORCED 0x00000001 2199 2200 typedef struct AVSubtitleRect { 2201 int x; ///< top left corner of pict, undefined when pict is not set 2202 int y; ///< top left corner of pict, undefined when pict is not set 2203 int w; ///< width of pict, undefined when pict is not set 2204 int h; ///< height of pict, undefined when pict is not set 2205 int nb_colors; ///< number of colors in pict, undefined when pict is not set 2206 2207 /** 2208 * data+linesize for the bitmap of this subtitle. 2209 * Can be set for text/ass as well once they are rendered. 2210 */ 2211 uint8_t *data[4]; 2212 int linesize[4]; 2213 2214 int flags; 2215 enum AVSubtitleType type; 2216 2217 char *text; ///< 0 terminated plain UTF-8 text 2218 2219 /** 2220 * 0 terminated ASS/SSA compatible event line. 2221 * The presentation of this is unaffected by the other values in this 2222 * struct. 2223 */ 2224 char *ass; 2225 } AVSubtitleRect; 2226 2227 typedef struct AVSubtitle { 2228 uint16_t format; /* 0 = graphics */ 2229 uint32_t start_display_time; /* relative to packet pts, in ms */ 2230 uint32_t end_display_time; /* relative to packet pts, in ms */ 2231 unsigned num_rects; 2232 AVSubtitleRect **rects; 2233 int64_t pts; ///< Same as packet pts, in AV_TIME_BASE 2234 } AVSubtitle; 2235 2236 /** 2237 * Return the LIBAVCODEC_VERSION_INT constant. 2238 */ 2239 unsigned avcodec_version(void); 2240 2241 /** 2242 * Return the libavcodec build-time configuration. 2243 */ 2244 const char *avcodec_configuration(void); 2245 2246 /** 2247 * Return the libavcodec license. 2248 */ 2249 const char *avcodec_license(void); 2250 2251 /** 2252 * Allocate an AVCodecContext and set its fields to default values. The 2253 * resulting struct should be freed with avcodec_free_context(). 2254 * 2255 * @param codec if non-NULL, allocate private data and initialize defaults 2256 * for the given codec. It is illegal to then call avcodec_open2() 2257 * with a different codec. 2258 * If NULL, then the codec-specific defaults won't be initialized, 2259 * which may result in suboptimal default settings (this is 2260 * important mainly for encoders, e.g. libx264). 2261 * 2262 * @return An AVCodecContext filled with default values or NULL on failure. 2263 */ 2264 AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); 2265 2266 /** 2267 * Free the codec context and everything associated with it and write NULL to 2268 * the provided pointer. 2269 */ 2270 void avcodec_free_context(AVCodecContext **avctx); 2271 2272 /** 2273 * Get the AVClass for AVCodecContext. It can be used in combination with 2274 * AV_OPT_SEARCH_FAKE_OBJ for examining options. 2275 * 2276 * @see av_opt_find(). 2277 */ 2278 const AVClass *avcodec_get_class(void); 2279 2280 /** 2281 * Get the AVClass for AVSubtitleRect. It can be used in combination with 2282 * AV_OPT_SEARCH_FAKE_OBJ for examining options. 2283 * 2284 * @see av_opt_find(). 2285 */ 2286 const AVClass *avcodec_get_subtitle_rect_class(void); 2287 2288 /** 2289 * Fill the parameters struct based on the values from the supplied codec 2290 * context. Any allocated fields in par are freed and replaced with duplicates 2291 * of the corresponding fields in codec. 2292 * 2293 * @return >= 0 on success, a negative AVERROR code on failure 2294 */ 2295 int avcodec_parameters_from_context(struct AVCodecParameters *par, 2296 const AVCodecContext *codec); 2297 2298 /** 2299 * Fill the codec context based on the values from the supplied codec 2300 * parameters. Any allocated fields in codec that have a corresponding field in 2301 * par are freed and replaced with duplicates of the corresponding field in par. 2302 * Fields in codec that do not have a counterpart in par are not touched. 2303 * 2304 * @return >= 0 on success, a negative AVERROR code on failure. 2305 */ 2306 int avcodec_parameters_to_context(AVCodecContext *codec, 2307 const struct AVCodecParameters *par); 2308 2309 /** 2310 * Initialize the AVCodecContext to use the given AVCodec. Prior to using this 2311 * function the context has to be allocated with avcodec_alloc_context3(). 2312 * 2313 * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), 2314 * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for 2315 * retrieving a codec. 2316 * 2317 * Depending on the codec, you might need to set options in the codec context 2318 * also for decoding (e.g. width, height, or the pixel or audio sample format in 2319 * the case the information is not available in the bitstream, as when decoding 2320 * raw audio or video). 2321 * 2322 * Options in the codec context can be set either by setting them in the options 2323 * AVDictionary, or by setting the values in the context itself, directly or by 2324 * using the av_opt_set() API before calling this function. 2325 * 2326 * Example: 2327 * @code 2328 * av_dict_set(&opts, "b", "2.5M", 0); 2329 * codec = avcodec_find_decoder(AV_CODEC_ID_H264); 2330 * if (!codec) 2331 * exit(1); 2332 * 2333 * context = avcodec_alloc_context3(codec); 2334 * 2335 * if (avcodec_open2(context, codec, opts) < 0) 2336 * exit(1); 2337 * @endcode 2338 * 2339 * In the case AVCodecParameters are available (e.g. when demuxing a stream 2340 * using libavformat, and accessing the AVStream contained in the demuxer), the 2341 * codec parameters can be copied to the codec context using 2342 * avcodec_parameters_to_context(), as in the following example: 2343 * 2344 * @code 2345 * AVStream *stream = ...; 2346 * context = avcodec_alloc_context3(codec); 2347 * if (avcodec_parameters_to_context(context, stream->codecpar) < 0) 2348 * exit(1); 2349 * if (avcodec_open2(context, codec, NULL) < 0) 2350 * exit(1); 2351 * @endcode 2352 * 2353 * @note Always call this function before using decoding routines (such as 2354 * @ref avcodec_receive_frame()). 2355 * 2356 * @param avctx The context to initialize. 2357 * @param codec The codec to open this context for. If a non-NULL codec has been 2358 * previously passed to avcodec_alloc_context3() or 2359 * for this context, then this parameter MUST be either NULL or 2360 * equal to the previously passed codec. 2361 * @param options A dictionary filled with AVCodecContext and codec-private 2362 * options, which are set on top of the options already set in 2363 * avctx, can be NULL. On return this object will be filled with 2364 * options that were not found in the avctx codec context. 2365 * 2366 * @return zero on success, a negative value on error 2367 * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), 2368 * av_dict_set(), av_opt_set(), av_opt_find(), avcodec_parameters_to_context() 2369 */ 2370 int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); 2371 2372 #if FF_API_AVCODEC_CLOSE 2373 /** 2374 * Close a given AVCodecContext and free all the data associated with it 2375 * (but not the AVCodecContext itself). 2376 * 2377 * Calling this function on an AVCodecContext that hasn't been opened will free 2378 * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL 2379 * codec. Subsequent calls will do nothing. 2380 * 2381 * @deprecated Do not use this function. Use avcodec_free_context() to destroy a 2382 * codec context (either open or closed). Opening and closing a codec context 2383 * multiple times is not supported anymore -- use multiple codec contexts 2384 * instead. 2385 */ 2386 attribute_deprecated 2387 int avcodec_close(AVCodecContext *avctx); 2388 #endif 2389 2390 /** 2391 * Free all allocated data in the given subtitle struct. 2392 * 2393 * @param sub AVSubtitle to free. 2394 */ 2395 void avsubtitle_free(AVSubtitle *sub); 2396 2397 /** 2398 * @} 2399 */ 2400 2401 /** 2402 * @addtogroup lavc_decoding 2403 * @{ 2404 */ 2405 2406 /** 2407 * The default callback for AVCodecContext.get_buffer2(). It is made public so 2408 * it can be called by custom get_buffer2() implementations for decoders without 2409 * AV_CODEC_CAP_DR1 set. 2410 */ 2411 int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags); 2412 2413 /** 2414 * The default callback for AVCodecContext.get_encode_buffer(). It is made public so 2415 * it can be called by custom get_encode_buffer() implementations for encoders without 2416 * AV_CODEC_CAP_DR1 set. 2417 */ 2418 int avcodec_default_get_encode_buffer(AVCodecContext *s, AVPacket *pkt, int flags); 2419 2420 /** 2421 * Modify width and height values so that they will result in a memory 2422 * buffer that is acceptable for the codec if you do not use any horizontal 2423 * padding. 2424 * 2425 * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. 2426 */ 2427 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); 2428 2429 /** 2430 * Modify width and height values so that they will result in a memory 2431 * buffer that is acceptable for the codec if you also ensure that all 2432 * line sizes are a multiple of the respective linesize_align[i]. 2433 * 2434 * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. 2435 */ 2436 void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, 2437 int linesize_align[AV_NUM_DATA_POINTERS]); 2438 2439 /** 2440 * Decode a subtitle message. 2441 * Return a negative value on error, otherwise return the number of bytes used. 2442 * If no subtitle could be decompressed, got_sub_ptr is zero. 2443 * Otherwise, the subtitle is stored in *sub. 2444 * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for 2445 * simplicity, because the performance difference is expected to be negligible 2446 * and reusing a get_buffer written for video codecs would probably perform badly 2447 * due to a potentially very different allocation pattern. 2448 * 2449 * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input 2450 * and output. This means that for some packets they will not immediately 2451 * produce decoded output and need to be flushed at the end of decoding to get 2452 * all the decoded data. Flushing is done by calling this function with packets 2453 * with avpkt->data set to NULL and avpkt->size set to 0 until it stops 2454 * returning subtitles. It is safe to flush even those decoders that are not 2455 * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned. 2456 * 2457 * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() 2458 * before packets may be fed to the decoder. 2459 * 2460 * @param avctx the codec context 2461 * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored, 2462 * must be freed with avsubtitle_free if *got_sub_ptr is set. 2463 * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. 2464 * @param[in] avpkt The input AVPacket containing the input buffer. 2465 */ 2466 int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, 2467 int *got_sub_ptr, const AVPacket *avpkt); 2468 2469 /** 2470 * Supply raw packet data as input to a decoder. 2471 * 2472 * Internally, this call will copy relevant AVCodecContext fields, which can 2473 * influence decoding per-packet, and apply them when the packet is actually 2474 * decoded. (For example AVCodecContext.skip_frame, which might direct the 2475 * decoder to drop the frame contained by the packet sent with this function.) 2476 * 2477 * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE 2478 * larger than the actual read bytes because some optimized bitstream 2479 * readers read 32 or 64 bits at once and could read over the end. 2480 * 2481 * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() 2482 * before packets may be fed to the decoder. 2483 * 2484 * @param avctx codec context 2485 * @param[in] avpkt The input AVPacket. Usually, this will be a single video 2486 * frame, or several complete audio frames. 2487 * Ownership of the packet remains with the caller, and the 2488 * decoder will not write to the packet. The decoder may create 2489 * a reference to the packet data (or copy it if the packet is 2490 * not reference-counted). 2491 * Unlike with older APIs, the packet is always fully consumed, 2492 * and if it contains multiple frames (e.g. some audio codecs), 2493 * will require you to call avcodec_receive_frame() multiple 2494 * times afterwards before you can send a new packet. 2495 * It can be NULL (or an AVPacket with data set to NULL and 2496 * size set to 0); in this case, it is considered a flush 2497 * packet, which signals the end of the stream. Sending the 2498 * first flush packet will return success. Subsequent ones are 2499 * unnecessary and will return AVERROR_EOF. If the decoder 2500 * still has frames buffered, it will return them after sending 2501 * a flush packet. 2502 * 2503 * @retval 0 success 2504 * @retval AVERROR(EAGAIN) input is not accepted in the current state - user 2505 * must read output with avcodec_receive_frame() (once 2506 * all output is read, the packet should be resent, 2507 * and the call will not fail with EAGAIN). 2508 * @retval AVERROR_EOF the decoder has been flushed, and no new packets can be 2509 * sent to it (also returned if more than 1 flush 2510 * packet is sent) 2511 * @retval AVERROR(EINVAL) codec not opened, it is an encoder, or requires flush 2512 * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar 2513 * @retval "another negative error code" legitimate decoding errors 2514 */ 2515 int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); 2516 2517 /** 2518 * Return decoded output data from a decoder or encoder (when the 2519 * @ref AV_CODEC_FLAG_RECON_FRAME flag is used). 2520 * 2521 * @param avctx codec context 2522 * @param frame This will be set to a reference-counted video or audio 2523 * frame (depending on the decoder type) allocated by the 2524 * codec. Note that the function will always call 2525 * av_frame_unref(frame) before doing anything else. 2526 * 2527 * @retval 0 success, a frame was returned 2528 * @retval AVERROR(EAGAIN) output is not available in this state - user must 2529 * try to send new input 2530 * @retval AVERROR_EOF the codec has been fully flushed, and there will be 2531 * no more output frames 2532 * @retval AVERROR(EINVAL) codec not opened, or it is an encoder without the 2533 * @ref AV_CODEC_FLAG_RECON_FRAME flag enabled 2534 * @retval "other negative error code" legitimate decoding errors 2535 */ 2536 int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame); 2537 2538 /** 2539 * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet() 2540 * to retrieve buffered output packets. 2541 * 2542 * @param avctx codec context 2543 * @param[in] frame AVFrame containing the raw audio or video frame to be encoded. 2544 * Ownership of the frame remains with the caller, and the 2545 * encoder will not write to the frame. The encoder may create 2546 * a reference to the frame data (or copy it if the frame is 2547 * not reference-counted). 2548 * It can be NULL, in which case it is considered a flush 2549 * packet. This signals the end of the stream. If the encoder 2550 * still has packets buffered, it will return them after this 2551 * call. Once flushing mode has been entered, additional flush 2552 * packets are ignored, and sending frames will return 2553 * AVERROR_EOF. 2554 * 2555 * For audio: 2556 * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame 2557 * can have any number of samples. 2558 * If it is not set, frame->nb_samples must be equal to 2559 * avctx->frame_size for all frames except the last. 2560 * The final frame may be smaller than avctx->frame_size. 2561 * @retval 0 success 2562 * @retval AVERROR(EAGAIN) input is not accepted in the current state - user must 2563 * read output with avcodec_receive_packet() (once all 2564 * output is read, the packet should be resent, and the 2565 * call will not fail with EAGAIN). 2566 * @retval AVERROR_EOF the encoder has been flushed, and no new frames can 2567 * be sent to it 2568 * @retval AVERROR(EINVAL) codec not opened, it is a decoder, or requires flush 2569 * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar 2570 * @retval "another negative error code" legitimate encoding errors 2571 */ 2572 int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame); 2573 2574 /** 2575 * Read encoded data from the encoder. 2576 * 2577 * @param avctx codec context 2578 * @param avpkt This will be set to a reference-counted packet allocated by the 2579 * encoder. Note that the function will always call 2580 * av_packet_unref(avpkt) before doing anything else. 2581 * @retval 0 success 2582 * @retval AVERROR(EAGAIN) output is not available in the current state - user must 2583 * try to send input 2584 * @retval AVERROR_EOF the encoder has been fully flushed, and there will be no 2585 * more output packets 2586 * @retval AVERROR(EINVAL) codec not opened, or it is a decoder 2587 * @retval "another negative error code" legitimate encoding errors 2588 */ 2589 int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt); 2590 2591 /** 2592 * Create and return a AVHWFramesContext with values adequate for hardware 2593 * decoding. This is meant to get called from the get_format callback, and is 2594 * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx. 2595 * This API is for decoding with certain hardware acceleration modes/APIs only. 2596 * 2597 * The returned AVHWFramesContext is not initialized. The caller must do this 2598 * with av_hwframe_ctx_init(). 2599 * 2600 * Calling this function is not a requirement, but makes it simpler to avoid 2601 * codec or hardware API specific details when manually allocating frames. 2602 * 2603 * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx, 2604 * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes 2605 * it unnecessary to call this function or having to care about 2606 * AVHWFramesContext initialization at all. 2607 * 2608 * There are a number of requirements for calling this function: 2609 * 2610 * - It must be called from get_format with the same avctx parameter that was 2611 * passed to get_format. Calling it outside of get_format is not allowed, and 2612 * can trigger undefined behavior. 2613 * - The function is not always supported (see description of return values). 2614 * Even if this function returns successfully, hwaccel initialization could 2615 * fail later. (The degree to which implementations check whether the stream 2616 * is actually supported varies. Some do this check only after the user's 2617 * get_format callback returns.) 2618 * - The hw_pix_fmt must be one of the choices suggested by get_format. If the 2619 * user decides to use a AVHWFramesContext prepared with this API function, 2620 * the user must return the same hw_pix_fmt from get_format. 2621 * - The device_ref passed to this function must support the given hw_pix_fmt. 2622 * - After calling this API function, it is the user's responsibility to 2623 * initialize the AVHWFramesContext (returned by the out_frames_ref parameter), 2624 * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done 2625 * before returning from get_format (this is implied by the normal 2626 * AVCodecContext.hw_frames_ctx API rules). 2627 * - The AVHWFramesContext parameters may change every time time get_format is 2628 * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So 2629 * you are inherently required to go through this process again on every 2630 * get_format call. 2631 * - It is perfectly possible to call this function without actually using 2632 * the resulting AVHWFramesContext. One use-case might be trying to reuse a 2633 * previously initialized AVHWFramesContext, and calling this API function 2634 * only to test whether the required frame parameters have changed. 2635 * - Fields that use dynamically allocated values of any kind must not be set 2636 * by the user unless setting them is explicitly allowed by the documentation. 2637 * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque, 2638 * the new free callback must call the potentially set previous free callback. 2639 * This API call may set any dynamically allocated fields, including the free 2640 * callback. 2641 * 2642 * The function will set at least the following fields on AVHWFramesContext 2643 * (potentially more, depending on hwaccel API): 2644 * 2645 * - All fields set by av_hwframe_ctx_alloc(). 2646 * - Set the format field to hw_pix_fmt. 2647 * - Set the sw_format field to the most suited and most versatile format. (An 2648 * implication is that this will prefer generic formats over opaque formats 2649 * with arbitrary restrictions, if possible.) 2650 * - Set the width/height fields to the coded frame size, rounded up to the 2651 * API-specific minimum alignment. 2652 * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size 2653 * field to the number of maximum reference surfaces possible with the codec, 2654 * plus 1 surface for the user to work (meaning the user can safely reference 2655 * at most 1 decoded surface at a time), plus additional buffering introduced 2656 * by frame threading. If the hwaccel does not require pre-allocation, the 2657 * field is left to 0, and the decoder will allocate new surfaces on demand 2658 * during decoding. 2659 * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying 2660 * hardware API. 2661 * 2662 * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but 2663 * with basic frame parameters set. 2664 * 2665 * The function is stateless, and does not change the AVCodecContext or the 2666 * device_ref AVHWDeviceContext. 2667 * 2668 * @param avctx The context which is currently calling get_format, and which 2669 * implicitly contains all state needed for filling the returned 2670 * AVHWFramesContext properly. 2671 * @param device_ref A reference to the AVHWDeviceContext describing the device 2672 * which will be used by the hardware decoder. 2673 * @param hw_pix_fmt The hwaccel format you are going to return from get_format. 2674 * @param out_frames_ref On success, set to a reference to an _uninitialized_ 2675 * AVHWFramesContext, created from the given device_ref. 2676 * Fields will be set to values required for decoding. 2677 * Not changed if an error is returned. 2678 * @return zero on success, a negative value on error. The following error codes 2679 * have special semantics: 2680 * AVERROR(ENOENT): the decoder does not support this functionality. Setup 2681 * is always manual, or it is a decoder which does not 2682 * support setting AVCodecContext.hw_frames_ctx at all, 2683 * or it is a software format. 2684 * AVERROR(EINVAL): it is known that hardware decoding is not supported for 2685 * this configuration, or the device_ref is not supported 2686 * for the hwaccel referenced by hw_pix_fmt. 2687 */ 2688 int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, 2689 AVBufferRef *device_ref, 2690 enum AVPixelFormat hw_pix_fmt, 2691 AVBufferRef **out_frames_ref); 2692 2693 2694 2695 /** 2696 * @defgroup lavc_parsing Frame parsing 2697 * @{ 2698 */ 2699 2700 enum AVPictureStructure { 2701 AV_PICTURE_STRUCTURE_UNKNOWN, ///< unknown 2702 AV_PICTURE_STRUCTURE_TOP_FIELD, ///< coded as top field 2703 AV_PICTURE_STRUCTURE_BOTTOM_FIELD, ///< coded as bottom field 2704 AV_PICTURE_STRUCTURE_FRAME, ///< coded as frame 2705 }; 2706 2707 typedef struct AVCodecParserContext { 2708 void *priv_data; 2709 const struct AVCodecParser *parser; 2710 int64_t frame_offset; /* offset of the current frame */ 2711 int64_t cur_offset; /* current offset 2712 (incremented by each av_parser_parse()) */ 2713 int64_t next_frame_offset; /* offset of the next frame */ 2714 /* video info */ 2715 int pict_type; /* XXX: Put it back in AVCodecContext. */ 2716 /** 2717 * This field is used for proper frame duration computation in lavf. 2718 * It signals, how much longer the frame duration of the current frame 2719 * is compared to normal frame duration. 2720 * 2721 * frame_duration = (1 + repeat_pict) * time_base 2722 * 2723 * It is used by codecs like H.264 to display telecined material. 2724 */ 2725 int repeat_pict; /* XXX: Put it back in AVCodecContext. */ 2726 int64_t pts; /* pts of the current frame */ 2727 int64_t dts; /* dts of the current frame */ 2728 2729 /* private data */ 2730 int64_t last_pts; 2731 int64_t last_dts; 2732 int fetch_timestamp; 2733 2734 #define AV_PARSER_PTS_NB 4 2735 int cur_frame_start_index; 2736 int64_t cur_frame_offset[AV_PARSER_PTS_NB]; 2737 int64_t cur_frame_pts[AV_PARSER_PTS_NB]; 2738 int64_t cur_frame_dts[AV_PARSER_PTS_NB]; 2739 2740 int flags; 2741 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001 2742 #define PARSER_FLAG_ONCE 0x0002 2743 /// Set if the parser has a valid file offset 2744 #define PARSER_FLAG_FETCHED_OFFSET 0x0004 2745 #define PARSER_FLAG_USE_CODEC_TS 0x1000 2746 2747 int64_t offset; ///< byte offset from starting packet start 2748 int64_t cur_frame_end[AV_PARSER_PTS_NB]; 2749 2750 /** 2751 * Set by parser to 1 for key frames and 0 for non-key frames. 2752 * It is initialized to -1, so if the parser doesn't set this flag, 2753 * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames 2754 * will be used. 2755 */ 2756 int key_frame; 2757 2758 // Timestamp generation support: 2759 /** 2760 * Synchronization point for start of timestamp generation. 2761 * 2762 * Set to >0 for sync point, 0 for no sync point and <0 for undefined 2763 * (default). 2764 * 2765 * For example, this corresponds to presence of H.264 buffering period 2766 * SEI message. 2767 */ 2768 int dts_sync_point; 2769 2770 /** 2771 * Offset of the current timestamp against last timestamp sync point in 2772 * units of AVCodecContext.time_base. 2773 * 2774 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must 2775 * contain a valid timestamp offset. 2776 * 2777 * Note that the timestamp of sync point has usually a nonzero 2778 * dts_ref_dts_delta, which refers to the previous sync point. Offset of 2779 * the next frame after timestamp sync point will be usually 1. 2780 * 2781 * For example, this corresponds to H.264 cpb_removal_delay. 2782 */ 2783 int dts_ref_dts_delta; 2784 2785 /** 2786 * Presentation delay of current frame in units of AVCodecContext.time_base. 2787 * 2788 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must 2789 * contain valid non-negative timestamp delta (presentation time of a frame 2790 * must not lie in the past). 2791 * 2792 * This delay represents the difference between decoding and presentation 2793 * time of the frame. 2794 * 2795 * For example, this corresponds to H.264 dpb_output_delay. 2796 */ 2797 int pts_dts_delta; 2798 2799 /** 2800 * Position of the packet in file. 2801 * 2802 * Analogous to cur_frame_pts/dts 2803 */ 2804 int64_t cur_frame_pos[AV_PARSER_PTS_NB]; 2805 2806 /** 2807 * Byte position of currently parsed frame in stream. 2808 */ 2809 int64_t pos; 2810 2811 /** 2812 * Previous frame byte position. 2813 */ 2814 int64_t last_pos; 2815 2816 /** 2817 * Duration of the current frame. 2818 * For audio, this is in units of 1 / AVCodecContext.sample_rate. 2819 * For all other types, this is in units of AVCodecContext.time_base. 2820 */ 2821 int duration; 2822 2823 enum AVFieldOrder field_order; 2824 2825 /** 2826 * Indicate whether a picture is coded as a frame, top field or bottom field. 2827 * 2828 * For example, H.264 field_pic_flag equal to 0 corresponds to 2829 * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag 2830 * equal to 1 and bottom_field_flag equal to 0 corresponds to 2831 * AV_PICTURE_STRUCTURE_TOP_FIELD. 2832 */ 2833 enum AVPictureStructure picture_structure; 2834 2835 /** 2836 * Picture number incremented in presentation or output order. 2837 * This field may be reinitialized at the first picture of a new sequence. 2838 * 2839 * For example, this corresponds to H.264 PicOrderCnt. 2840 */ 2841 int output_picture_number; 2842 2843 /** 2844 * Dimensions of the decoded video intended for presentation. 2845 */ 2846 int width; 2847 int height; 2848 2849 /** 2850 * Dimensions of the coded video. 2851 */ 2852 int coded_width; 2853 int coded_height; 2854 2855 /** 2856 * The format of the coded data, corresponds to enum AVPixelFormat for video 2857 * and for enum AVSampleFormat for audio. 2858 * 2859 * Note that a decoder can have considerable freedom in how exactly it 2860 * decodes the data, so the format reported here might be different from the 2861 * one returned by a decoder. 2862 */ 2863 int format; 2864 } AVCodecParserContext; 2865 2866 typedef struct AVCodecParser { 2867 int codec_ids[7]; /* several codec IDs are permitted */ 2868 int priv_data_size; 2869 int (*parser_init)(AVCodecParserContext *s); 2870 /* This callback never returns an error, a negative value means that 2871 * the frame start was in a previous packet. */ 2872 int (*parser_parse)(AVCodecParserContext *s, 2873 AVCodecContext *avctx, 2874 const uint8_t **poutbuf, int *poutbuf_size, 2875 const uint8_t *buf, int buf_size); 2876 void (*parser_close)(AVCodecParserContext *s); 2877 int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); 2878 } AVCodecParser; 2879 2880 /** 2881 * Iterate over all registered codec parsers. 2882 * 2883 * @param opaque a pointer where libavcodec will store the iteration state. Must 2884 * point to NULL to start the iteration. 2885 * 2886 * @return the next registered codec parser or NULL when the iteration is 2887 * finished 2888 */ 2889 const AVCodecParser *av_parser_iterate(void **opaque); 2890 2891 AVCodecParserContext *av_parser_init(int codec_id); 2892 2893 /** 2894 * Parse a packet. 2895 * 2896 * @param s parser context. 2897 * @param avctx codec context. 2898 * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. 2899 * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. 2900 * @param buf input buffer. 2901 * @param buf_size buffer size in bytes without the padding. I.e. the full buffer 2902 size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE. 2903 To signal EOF, this should be 0 (so that the last frame 2904 can be output). 2905 * @param pts input presentation timestamp. 2906 * @param dts input decoding timestamp. 2907 * @param pos input byte position in stream. 2908 * @return the number of bytes of the input bitstream used. 2909 * 2910 * Example: 2911 * @code 2912 * while(in_len){ 2913 * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, 2914 * in_data, in_len, 2915 * pts, dts, pos); 2916 * in_data += len; 2917 * in_len -= len; 2918 * 2919 * if(size) 2920 * decode_frame(data, size); 2921 * } 2922 * @endcode 2923 */ 2924 int av_parser_parse2(AVCodecParserContext *s, 2925 AVCodecContext *avctx, 2926 uint8_t **poutbuf, int *poutbuf_size, 2927 const uint8_t *buf, int buf_size, 2928 int64_t pts, int64_t dts, 2929 int64_t pos); 2930 2931 void av_parser_close(AVCodecParserContext *s); 2932 2933 /** 2934 * @} 2935 * @} 2936 */ 2937 2938 /** 2939 * @addtogroup lavc_encoding 2940 * @{ 2941 */ 2942 2943 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, 2944 const AVSubtitle *sub); 2945 2946 2947 /** 2948 * @} 2949 */ 2950 2951 /** 2952 * @defgroup lavc_misc Utility functions 2953 * @ingroup libavc 2954 * 2955 * Miscellaneous utility functions related to both encoding and decoding 2956 * (or neither). 2957 * @{ 2958 */ 2959 2960 /** 2961 * @defgroup lavc_misc_pixfmt Pixel formats 2962 * 2963 * Functions for working with pixel formats. 2964 * @{ 2965 */ 2966 2967 /** 2968 * Return a value representing the fourCC code associated to the 2969 * pixel format pix_fmt, or 0 if no associated fourCC code can be 2970 * found. 2971 */ 2972 unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); 2973 2974 /** 2975 * Find the best pixel format to convert to given a certain source pixel 2976 * format. When converting from one pixel format to another, information loss 2977 * may occur. For example, when converting from RGB24 to GRAY, the color 2978 * information will be lost. Similarly, other losses occur when converting from 2979 * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of 2980 * the given pixel formats should be used to suffer the least amount of loss. 2981 * The pixel formats from which it chooses one, are determined by the 2982 * pix_fmt_list parameter. 2983 * 2984 * 2985 * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from 2986 * @param[in] src_pix_fmt source pixel format 2987 * @param[in] has_alpha Whether the source pixel format alpha channel is used. 2988 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. 2989 * @return The best pixel format to convert to or -1 if none was found. 2990 */ 2991 enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, 2992 enum AVPixelFormat src_pix_fmt, 2993 int has_alpha, int *loss_ptr); 2994 2995 enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); 2996 2997 /** 2998 * @} 2999 */ 3000 3001 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); 3002 3003 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); 3004 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); 3005 //FIXME func typedef 3006 3007 /** 3008 * Fill AVFrame audio data and linesize pointers. 3009 * 3010 * The buffer buf must be a preallocated buffer with a size big enough 3011 * to contain the specified samples amount. The filled AVFrame data 3012 * pointers will point to this buffer. 3013 * 3014 * AVFrame extended_data channel pointers are allocated if necessary for 3015 * planar audio. 3016 * 3017 * @param frame the AVFrame 3018 * frame->nb_samples must be set prior to calling the 3019 * function. This function fills in frame->data, 3020 * frame->extended_data, frame->linesize[0]. 3021 * @param nb_channels channel count 3022 * @param sample_fmt sample format 3023 * @param buf buffer to use for frame data 3024 * @param buf_size size of buffer 3025 * @param align plane size sample alignment (0 = default) 3026 * @return >=0 on success, negative error code on failure 3027 * @todo return the size in bytes required to store the samples in 3028 * case of success, at the next libavutil bump 3029 */ 3030 int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, 3031 enum AVSampleFormat sample_fmt, const uint8_t *buf, 3032 int buf_size, int align); 3033 3034 /** 3035 * Reset the internal codec state / flush internal buffers. Should be called 3036 * e.g. when seeking or when switching to a different stream. 3037 * 3038 * @note for decoders, this function just releases any references the decoder 3039 * might keep internally, but the caller's references remain valid. 3040 * 3041 * @note for encoders, this function will only do something if the encoder 3042 * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder 3043 * will drain any remaining packets, and can then be re-used for a different 3044 * stream (as opposed to sending a null frame which will leave the encoder 3045 * in a permanent EOF state after draining). This can be desirable if the 3046 * cost of tearing down and replacing the encoder instance is high. 3047 */ 3048 void avcodec_flush_buffers(AVCodecContext *avctx); 3049 3050 /** 3051 * Return audio frame duration. 3052 * 3053 * @param avctx codec context 3054 * @param frame_bytes size of the frame, or 0 if unknown 3055 * @return frame duration, in samples, if known. 0 if not able to 3056 * determine. 3057 */ 3058 int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); 3059 3060 /* memory */ 3061 3062 /** 3063 * Same behaviour av_fast_malloc but the buffer has additional 3064 * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. 3065 * 3066 * In addition the whole buffer will initially and after resizes 3067 * be 0-initialized so that no uninitialized data will ever appear. 3068 */ 3069 void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); 3070 3071 /** 3072 * Same behaviour av_fast_padded_malloc except that buffer will always 3073 * be 0-initialized after call. 3074 */ 3075 void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); 3076 3077 /** 3078 * @return a positive value if s is open (i.e. avcodec_open2() was called on it 3079 * with no corresponding avcodec_close()), 0 otherwise. 3080 */ 3081 int avcodec_is_open(AVCodecContext *s); 3082 3083 /** 3084 * @} 3085 */ 3086 3087 #endif /* AVCODEC_AVCODEC_H */