FFmpeg
|
Modules | |
Frame parsing | |
Macros | |
#define | AV_INPUT_BUFFER_PADDING_SIZE 32 |
Required number of additionally allocated bytes at the end of the input bitstream for decoding. More... | |
Enumerations | |
enum | AVDiscard { AVDISCARD_NONE =-16, AVDISCARD_DEFAULT = 0, AVDISCARD_NONREF = 8, AVDISCARD_BIDIR = 16, AVDISCARD_NONINTRA = 24, AVDISCARD_NONKEY = 32, AVDISCARD_ALL = 48 } |
Functions | |
AVCodec * | avcodec_find_decoder (enum AVCodecID id) |
Find a registered decoder with a matching codec ID. More... | |
AVCodec * | avcodec_find_decoder_by_name (const char *name) |
Find a registered decoder with the specified name. More... | |
int | avcodec_default_get_buffer2 (AVCodecContext *s, AVFrame *frame, int flags) |
The default callback for AVCodecContext.get_buffer2(). More... | |
attribute_deprecated unsigned | avcodec_get_edge_width (void) |
Return the amount of padding in pixels which the get_buffer callback must provide around the edge of the image for codecs which do not have the CODEC_FLAG_EMU_EDGE flag. More... | |
void | avcodec_align_dimensions (AVCodecContext *s, int *width, int *height) |
Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you do not use any horizontal padding. More... | |
void | avcodec_align_dimensions2 (AVCodecContext *s, int *width, int *height, int linesize_align[AV_NUM_DATA_POINTERS]) |
Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you also ensure that all line sizes are a multiple of the respective linesize_align[i]. More... | |
int | avcodec_enum_to_chroma_pos (int *xpos, int *ypos, enum AVChromaLocation pos) |
Converts AVChromaLocation to swscale x/y chroma position. More... | |
enum AVChromaLocation | avcodec_chroma_pos_to_enum (int xpos, int ypos) |
Converts swscale x/y chroma position to AVChromaLocation. More... | |
attribute_deprecated int | avcodec_decode_audio4 (AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, const AVPacket *avpkt) |
Decode the audio frame of size avpkt->size from avpkt->data into frame. More... | |
attribute_deprecated int | avcodec_decode_video2 (AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt) |
Decode the video frame of size avpkt->size from avpkt->data into picture. More... | |
int | avcodec_decode_subtitle2 (AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt) |
Decode a subtitle message. More... | |
int | avcodec_send_packet (AVCodecContext *avctx, const AVPacket *avpkt) |
Supply raw packet data as input to a decoder. More... | |
int | avcodec_receive_frame (AVCodecContext *avctx, AVFrame *frame) |
Return decoded output data from a decoder. More... | |
int | avcodec_send_frame (AVCodecContext *avctx, const AVFrame *frame) |
Supply a raw video or audio frame to the encoder. More... | |
int | avcodec_receive_packet (AVCodecContext *avctx, AVPacket *avpkt) |
Read encoded data from the encoder. More... | |
#define AV_INPUT_BUFFER_PADDING_SIZE 32 |
Required number of additionally allocated bytes at the end of the input bitstream for decoding.
This is mainly needed because some optimized bitstream readers read 32 or 64 bit at once and could read over the end.
Note: If the first 23 bits of the additional bytes are not 0, then damaged MPEG bitstreams could cause overread and segfault.
Definition at line 731 of file avcodec.h.
Referenced by a64multi_encode_init(), aac_adtstoasc_filter(), aac_decode_frame(), aac_encode_init(), aac_sync(), ac3_sync(), adpcm_encode_init(), alac_encode_init(), alloc_buffers(), allocate_buffers(), ape_tag_read_field(), apng_read_header(), append_extradata(), asf_parse_packet(), asf_read_stream_properties(), atrac3_decode_init(), audio_decode_example(), av_bitstream_filter_filter(), av_fast_padded_malloc(), av_fast_padded_mallocz(), av_grow_packet(), av_packet_from_data(), av_packet_merge_side_data(), av_packet_new_side_data(), av_packet_split_side_data(), av_parser_change(), av_parser_parse2(), av_shrink_packet(), avcodec_copy_context(), avcodec_decode_subtitle2(), avcodec_encode_audio2(), avcodec_encode_video2(), avcodec_parameters_copy(), avcodec_parameters_from_context(), avcodec_parameters_to_context(), avformat_find_stream_info(), avi_read_header(), avio_close_dyn_buf(), avui_encode_init(), cdxl_decode_frame(), codec_reinit(), cook_decode_init(), copy_to_pbr(), create_new_buffer(), daala_header(), dca_parse_params(), decode_extradata_ps_mp4(), decode_frame(), decode_init(), decode_plane(), decode_plane10(), dshow_add_device(), dts_probe(), dv_decode_video_segment(), encode_init(), extract_header(), extract_mpeg4_header(), Faac_encode_init(), ff_alloc_extradata(), ff_alloc_packet2(), ff_avc_write_annexb_extradata(), ff_combine_frame(), ff_flac_parse_picture(), ff_h2645_extract_rbsp(), ff_h264_parse_sprop_parameter_sets(), ff_id3v2_parse_apic(), ff_jpeg2000_init_component(), ff_mjpeg_find_marker(), ff_mpeg_update_thread_context(), ff_mpv_encode_picture(), ff_parse_mpeg2_descriptor(), ffat_init_encoder(), ffm2_read_header(), ffm_read_header(), fixup_vorbis_headers(), flac_read_header(), flic_decode_frame_8BPP(), flv_queue_extradata(), flv_write_packet(), g2m_init_buffers(), generate_fake_vps(), h264_mp4toannexb_init(), handle_packets(), hevc_extradata_to_annexb(), hevc_parse_sdp_line(), id3_has_changed_values(), iff_read_header(), imc_decode_frame(), init(), init_fps(), jacosub_read_header(), jpg_decode_data(), latm_decode_audio_specific_config(), libkvazaar_init(), libopus_encode_init(), libvorbis_encode_init(), libx265_encode_init(), main(), matroska_parse_tracks(), mov_read_atom_into_extradata(), mov_read_stsz(), mov_read_wave(), mov_realloc_extradata(), mov_rewrite_dvd_sub_extradata(), mov_text_encode_init(), mov_write_dvc1_structs(), mp3_header_decompress(), mpc8_parse_seektable(), mpegts_push_data(), mss2_decode_frame(), mxg_update_cache(), nal_unit_extract_rbsp(), new_pes_packet(), nvenc_setup_extradata(), ogg_new_buf(), ogg_new_stream(), ogg_read_page(), ogg_save(), ogm_header(), omx_encode_frame(), omx_encode_init(), packet_alloc(), parse_fmtp_config(), parse_packed_headers(), parse_video_info(), parse_vtrk(), pcx_decode_frame(), qsv_retrieve_enc_params(), qt_rtp_parse_packet(), rdt_parse_b64buf(), read_apic(), read_header(), read_kuki_chunk(), read_packet(), read_sl_header(), recode_subtitle(), rm_read_audio_stream_info(), sao_edge_filter(), sao_filter_CTB(), set_extradata(), shn_probe(), shorten_decode_frame(), spdif_write_packet(), svc_encode_init(), svq3_decode_slice_header(), tak_read_header(), theora_header(), tiff_unpack_fax(), transcode_init(), utvideo_encode_init(), vc1_decode_frame(), vc1_decode_init(), vfw_read_header(), video_decode_example(), wma_decode_superframe(), wmv2_encode_init(), write_extradata(), write_frame(), wv_get_value_float(), and X264_init().
enum AVDiscard |
Find a registered decoder with a matching codec ID.
id | AVCodecID of the requested decoder |
Definition at line 3063 of file utils.c.
Referenced by add_input_streams(), audio_decode_example(), avcodec_get_name(), avcodec_open2(), choose_decoder(), dshow_cycle_formats(), ff_load_image(), filter_codec_opts(), find_codec_or_die(), find_decoder(), init(), main(), open_codec_context(), open_input_file(), open_stream(), seek_test(), show_codecs(), smvjpeg_decode_init(), stream_component_open(), tdsc_init(), try_decode_video_frame(), video_decode(), and video_decode_example().
AVCodec* avcodec_find_decoder_by_name | ( | const char * | name | ) |
Find a registered decoder with the specified name.
name | name of the requested decoder |
Definition at line 3068 of file utils.c.
Referenced by find_codec_or_die(), main(), show_help_codec(), stream_component_open(), and v4l2_read_header().
int avcodec_default_get_buffer2 | ( | AVCodecContext * | s, |
AVFrame * | frame, | ||
int | flags | ||
) |
The default callback for AVCodecContext.get_buffer2().
It is made public so it can be called by custom get_buffer2() implementations for decoders without AV_CODEC_CAP_DR1 set.
Definition at line 723 of file utils.c.
Referenced by alloc_frame_buffer(), ff_thread_release_buffer(), get_buffer(), init_context_defaults(), submit_packet(), and thread_get_buffer_internal().
attribute_deprecated unsigned avcodec_get_edge_width | ( | void | ) |
Return the amount of padding in pixels which the get_buffer callback must provide around the edge of the image for codecs which do not have the CODEC_FLAG_EMU_EDGE flag.
void avcodec_align_dimensions | ( | AVCodecContext * | s, |
int * | width, | ||
int * | height | ||
) |
void avcodec_align_dimensions2 | ( | AVCodecContext * | s, |
int * | width, | ||
int * | height, | ||
int | linesize_align[AV_NUM_DATA_POINTERS] | ||
) |
Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you also ensure that all line sizes are a multiple of the respective linesize_align[i].
May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
Definition at line 260 of file utils.c.
Referenced by avcodec_align_dimensions(), and update_frame_pool().
int avcodec_enum_to_chroma_pos | ( | int * | xpos, |
int * | ypos, | ||
enum AVChromaLocation | pos | ||
) |
Converts AVChromaLocation to swscale x/y chroma position.
The positions represent the chroma (0,0) position in a coordinates system with luma (0,0) representing the origin and luma(1,1) representing 256,256
xpos | horizontal chroma sample position |
ypos | vertical chroma sample position |
Definition at line 447 of file utils.c.
Referenced by avcodec_chroma_pos_to_enum().
enum AVChromaLocation avcodec_chroma_pos_to_enum | ( | int | xpos, |
int | ypos | ||
) |
Converts swscale x/y chroma position to AVChromaLocation.
The positions represent the chroma (0,0) position in a coordinates system with luma (0,0) representing the origin and luma(1,1) representing 256,256
xpos | horizontal chroma sample position |
ypos | vertical chroma sample position |
attribute_deprecated int avcodec_decode_audio4 | ( | AVCodecContext * | avctx, |
AVFrame * | frame, | ||
int * | got_frame_ptr, | ||
const AVPacket * | avpkt | ||
) |
Decode the audio frame of size avpkt->size from avpkt->data into frame.
Some decoders may support multiple frames in a single AVPacket. Such decoders would then just decode the first frame and the return value would be less than the packet size. In this case, avcodec_decode_audio4 has to be called again with an AVPacket containing the remaining data in order to decode the second frame, etc... Even if no frames are returned, the packet needs to be fed to the decoder with remaining data until it is completely consumed or an error occurs.
Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input and output. This means that for some packets they will not immediately produce decoded output and need to be flushed at the end of decoding to get all the decoded data. Flushing is done by calling this function with packets with avpkt->data set to NULL and avpkt->size set to 0 until it stops returning samples. It is safe to flush even those decoders that are not marked with AV_CODEC_CAP_DELAY, then no samples will be returned.
avctx | the codec context | |
[out] | frame | The AVFrame in which to store decoded audio samples. The decoder will allocate a buffer for the decoded frame by calling the AVCodecContext.get_buffer2() callback. When AVCodecContext.refcounted_frames is set to 1, the frame is reference counted and the returned reference belongs to the caller. The caller must release the frame using av_frame_unref() when the frame is no longer needed. The caller may safely write to the frame if av_frame_is_writable() returns 1. When AVCodecContext.refcounted_frames is set to 0, the returned reference belongs to the decoder and is valid only until the next call to this function or until closing or flushing the decoder. The caller may not write to it. |
[out] | got_frame_ptr | Zero if no frame could be decoded, otherwise it is non-zero. Note that this field being set to zero does not mean that an error has occurred. For decoders with AV_CODEC_CAP_DELAY set, no given decode call is guaranteed to produce a frame. |
[in] | avpkt | The input AVPacket containing the input buffer. At least avpkt->data and avpkt->size should be set. Some decoders might also require additional fields to be set. |
Definition at line 2281 of file utils.c.
Referenced by audio_decode_example(), decode_audio(), decode_audio_frame(), decode_packet(), decoder_decode_frame(), do_decode(), main(), movie_push_frame(), process_frame(), run_test(), and wrap().
attribute_deprecated int avcodec_decode_video2 | ( | AVCodecContext * | avctx, |
AVFrame * | picture, | ||
int * | got_picture_ptr, | ||
const AVPacket * | avpkt | ||
) |
Decode the video frame of size avpkt->size from avpkt->data into picture.
Some decoders may support multiple frames in a single AVPacket, such decoders would then just decode the first frame.
avctx | the codec context | |
[out] | picture | The AVFrame in which the decoded video frame will be stored. Use av_frame_alloc() to get an AVFrame. The codec will allocate memory for the actual bitmap by calling the AVCodecContext.get_buffer2() callback. When AVCodecContext.refcounted_frames is set to 1, the frame is reference counted and the returned reference belongs to the caller. The caller must release the frame using av_frame_unref() when the frame is no longer needed. The caller may safely write to the frame if av_frame_is_writable() returns 1. When AVCodecContext.refcounted_frames is set to 0, the returned reference belongs to the decoder and is valid only until the next call to this function or until closing or flushing the decoder. The caller may not write to it. |
[in] | avpkt | The input AVPacket containing the input buffer. You can create such packet with av_init_packet() and by then setting data and size, some decoders might in addition need other fields like flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least fields possible. |
[in,out] | got_picture_ptr | Zero if no frame could be decompressed, otherwise, it is nonzero. |
Definition at line 2180 of file utils.c.
Referenced by compute_crc_of_packets(), decode_frame(), decode_packet(), decode_video(), decode_write_frame(), decoder_decode_frame(), do_decode(), ff_load_image(), main(), movie_push_frame(), process_frame(), smvjpeg_decode_frame(), tdsc_decode_jpeg_tile(), try_decode_video_frame(), video_decode(), video_decode_example(), and wrap().
int avcodec_decode_subtitle2 | ( | AVCodecContext * | avctx, |
AVSubtitle * | sub, | ||
int * | got_sub_ptr, | ||
AVPacket * | avpkt | ||
) |
Decode a subtitle message.
Return a negative value on error, otherwise return the number of bytes used. If no subtitle could be decompressed, got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for simplicity, because the performance difference is expect to be negligible and reusing a get_buffer written for video codecs would probably perform badly due to a potentially very different allocation pattern.
Some decoders (those marked with CODEC_CAP_DELAY) have a delay between input and output. This means that for some packets they will not immediately produce decoded output and need to be flushed at the end of decoding to get all the decoded data. Flushing is done by calling this function with packets with avpkt->data set to NULL and avpkt->size set to 0 until it stops returning subtitles. It is safe to flush even those decoders that are not marked with CODEC_CAP_DELAY, then no subtitles will be returned.
avctx | the codec context | |
[out] | sub | The Preallocated AVSubtitle in which the decoded subtitle will be stored, must be freed with avsubtitle_free if *got_sub_ptr is set. |
[in,out] | got_sub_ptr | Zero if no subtitle could be decompressed, otherwise, it is nonzero. |
[in] | avpkt | The input AVPacket containing the input buffer. |
Definition at line 2589 of file utils.c.
Referenced by decoder_decode_frame(), process_frame(), transcode_subtitles(), try_decode_frame(), and wrap().
int avcodec_send_packet | ( | AVCodecContext * | avctx, |
const AVPacket * | avpkt | ||
) |
Supply raw packet data as input to a decoder.
Internally, this call will copy relevant AVCodecContext fields, which can influence decoding per-packet, and apply them when the packet is actually decoded. (For example AVCodecContext.skip_frame, which might direct the decoder to drop the frame contained by the packet sent with this function.)
avctx | codec context | |
[in] | avpkt | The input AVPacket. Usually, this will be a single video frame, or several complete audio frames. Ownership of the packet remains with the caller, and the decoder will not write to the packet. The decoder may create a reference to the packet data (or copy it if the packet is not reference-counted). Unlike with older APIs, the packet is always fully consumed, and if it contains multiple frames (e.g. some audio codecs), will require you to call avcodec_receive_frame() multiple times afterwards before you can send a new packet. It can be NULL (or an AVPacket with data set to NULL and size set to 0); in this case, it is considered a flush packet, which signals the end of the stream. Sending the first flush packet will return success. Subsequent ones are unnecessary and will return AVERROR_EOF. If the decoder still has frames buffered, it will return them after sending a flush packet. |
Definition at line 2777 of file utils.c.
Referenced by try_decode_frame().
int avcodec_receive_frame | ( | AVCodecContext * | avctx, |
AVFrame * | frame | ||
) |
Return decoded output data from a decoder.
avctx | codec context |
frame | This will be set to a reference-counted video or audio frame (depending on the decoder type) allocated by the decoder. Note that the function will always call av_frame_unref(frame) before doing anything else. |
Definition at line 2823 of file utils.c.
Referenced by try_decode_frame().
int avcodec_send_frame | ( | AVCodecContext * | avctx, |
const AVFrame * | frame | ||
) |
Supply a raw video or audio frame to the encoder.
Use avcodec_receive_packet() to retrieve buffered output packets.
avctx | codec context | |
[in] | frame | AVFrame containing the raw audio or video frame to be encoded. Ownership of the frame remains with the caller, and the encoder will not write to the frame. The encoder may create a reference to the frame data (or copy it if the frame is not reference-counted). It can be NULL, in which case it is considered a flush packet. This signals the end of the stream. If the encoder still has packets buffered, it will return them after this call. Once flushing mode has been entered, additional flush packets are ignored, and sending frames will return AVERROR_EOF. |
For audio: If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame can have any number of samples. If it is not set, frame->nb_samples must be equal to avctx->frame_size for all frames except the last. The final frame may be smaller than avctx->frame_size.
int avcodec_receive_packet | ( | AVCodecContext * | avctx, |
AVPacket * | avpkt | ||
) |
Read encoded data from the encoder.
avctx | codec context |
avpkt | This will be set to a reference-counted packet allocated by the encoder. Note that the function will always call av_frame_unref(frame) before doing anything else. |