|
FFmpeg
|
H.264 / AVC / MPEG-4 part10 codec. More...
#include "libavutil/buffer.h"#include "libavutil/intreadwrite.h"#include "libavutil/thread.h"#include "cabac.h"#include "error_resilience.h"#include "h264_parse.h"#include "h264_ps.h"#include "h264_sei.h"#include "h2645_parse.h"#include "h264chroma.h"#include "h264dsp.h"#include "h264pred.h"#include "h264qpel.h"#include "internal.h"#include "mpegutils.h"#include "parser.h"#include "qpeldsp.h"#include "rectangle.h"#include "videodsp.h"Go to the source code of this file.
Classes | |
| struct | MMCO |
| Memory management control operation. More... | |
| struct | H264Picture |
| struct | H264Ref |
| struct | H264SliceContext |
| struct | H264Context |
| H264Context. More... | |
Macros | |
| #define | H264_MAX_PICTURE_COUNT 36 |
| #define | MAX_MMCO_COUNT 66 |
| #define | MAX_DELAYED_PIC_COUNT 16 |
| #define | ALLOW_INTERLACE |
| #define | FMO 0 |
| #define | MAX_SLICES 32 |
| The maximum number of slices supported by the decoder. More... | |
| #define | MB_MBAFF(h) (h)->mb_mbaff |
| #define | MB_FIELD(sl) (sl)->mb_field_decoding_flag |
| #define | FRAME_MBAFF(h) (h)->mb_aff_frame |
| #define | FIELD_PICTURE(h) ((h)->picture_structure != PICT_FRAME) |
| #define | LEFT_MBS 2 |
| #define | LTOP 0 |
| #define | LBOT 1 |
| #define | LEFT(i) (i) |
| #define | FIELD_OR_MBAFF_PICTURE(h) (FRAME_MBAFF(h) || FIELD_PICTURE(h)) |
| #define | CABAC(h) (h)->ps.pps->cabac |
| #define | CHROMA(h) ((h)->ps.sps->chroma_format_idc) |
| #define | CHROMA422(h) ((h)->ps.sps->chroma_format_idc == 2) |
| #define | CHROMA444(h) ((h)->ps.sps->chroma_format_idc == 3) |
| #define | MB_TYPE_REF0 MB_TYPE_ACPRED |
| #define | MB_TYPE_8x8DCT 0x01000000 |
| #define | IS_REF0(a) ((a) & MB_TYPE_REF0) |
| #define | IS_8x8DCT(a) ((a) & MB_TYPE_8x8DCT) |
| #define | LIST_NOT_USED -1 |
| #define | PART_NOT_AVAILABLE -2 |
| #define | FRAME_RECOVERED_IDR (1 << 0) |
| We have seen an IDR, so all the following frames in coded order are correctly decodable. | |
| #define | FRAME_RECOVERED_SEI (1 << 1) |
| Sufficient number of frames have been decoded since a SEI recovery point, so all the following frames in presentation order are correct. | |
| #define | LUMA_DC_BLOCK_INDEX 48 |
| #define | CHROMA_DC_BLOCK_INDEX 49 |
Typedefs | |
| typedef enum MMCOOpcode | MMCOOpcode |
| Memory management control operation opcode. | |
| typedef struct MMCO | MMCO |
| Memory management control operation. | |
| typedef struct H264Picture | H264Picture |
| typedef struct H264Ref | H264Ref |
| typedef struct H264SliceContext | H264SliceContext |
| typedef struct H264Context | H264Context |
| H264Context. | |
Enumerations | |
| enum | MMCOOpcode { MMCO_END = 0, MMCO_SHORT2UNUSED, MMCO_LONG2UNUSED, MMCO_SHORT2LONG, MMCO_SET_MAX_LONG, MMCO_RESET, MMCO_LONG } |
| Memory management control operation opcode. | |
Functions | |
| int | ff_h264_get_slice_type (const H264SliceContext *sl) |
| Reconstruct bitstream slice_type. | |
| int | ff_h264_alloc_tables (H264Context *h) |
| Allocate tables. More... | |
| int | ff_h264_decode_ref_pic_list_reordering (H264SliceContext *sl, void *logctx) |
| int | ff_h264_build_ref_list (H264Context *h, H264SliceContext *sl) |
| void | ff_h264_remove_all_refs (H264Context *h) |
| int | ff_h264_execute_ref_pic_marking (H264Context *h) |
| Execute the reference picture marking (memory management control operations). | |
| int | ff_h264_decode_ref_pic_marking (H264SliceContext *sl, GetBitContext *gb, const H2645NAL *nal, void *logctx) |
| void | ff_h264_hl_decode_mb (const H264Context *h, H264SliceContext *sl) |
| void | ff_h264_decode_init_vlc (void) |
| int | ff_h264_decode_mb_cavlc (const H264Context *h, H264SliceContext *sl) |
| Decode a macroblock. More... | |
| int | ff_h264_decode_mb_cabac (const H264Context *h, H264SliceContext *sl) |
| Decode a CABAC coded macroblock. More... | |
| void | ff_h264_init_cabac_states (const H264Context *h, H264SliceContext *sl) |
| void | ff_h264_direct_dist_scale_factor (const H264Context *const h, H264SliceContext *sl) |
| void | ff_h264_direct_ref_list_init (const H264Context *const h, H264SliceContext *sl) |
| void | ff_h264_pred_direct_motion (const H264Context *const h, H264SliceContext *sl, int *mb_type) |
| void | ff_h264_filter_mb_fast (const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize) |
| void | ff_h264_filter_mb (const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize) |
| int | ff_h264_field_end (H264Context *h, H264SliceContext *sl, int in_setup) |
| int | ff_h264_ref_picture (H264Context *h, H264Picture *dst, H264Picture *src) |
| void | ff_h264_unref_picture (H264Context *h, H264Picture *pic) |
| int | ff_h264_slice_context_init (H264Context *h, H264SliceContext *sl) |
| Init context Allocate buffers which are not shared amongst multiple threads. | |
| void | ff_h264_draw_horiz_band (const H264Context *h, H264SliceContext *sl, int y, int height) |
| int | ff_h264_decode_slice_header (H264Context *h, H264SliceContext *sl, const H2645NAL *nal) |
| int | ff_h264_queue_decode_slice (H264Context *h, const H2645NAL *nal) |
| Submit a slice for decoding. More... | |
| int | ff_h264_execute_decode_slices (H264Context *h) |
| Call decode_slice() for each context. More... | |
| int | ff_h264_update_thread_context (AVCodecContext *dst, const AVCodecContext *src) |
| void | ff_h264_flush_change (H264Context *h) |
| void | ff_h264_free_tables (H264Context *h) |
| void | ff_h264_set_erpic (ERPicture *dst, H264Picture *src) |
Variables | |
| const uint16_t | ff_h264_mb_sizes [4] |
H.264 / AVC / MPEG-4 part10 codec.
| #define MAX_SLICES 32 |
The maximum number of slices supported by the decoder.
must be a power of 2
| int ff_h264_alloc_tables | ( | H264Context * | h | ) |
Allocate tables.
needs width/height
| int ff_h264_decode_mb_cabac | ( | const H264Context * | h, |
| H264SliceContext * | sl | ||
| ) |
Decode a CABAC coded macroblock.
Decode a CABAC coded macroblock.
| int ff_h264_decode_mb_cavlc | ( | const H264Context * | h, |
| H264SliceContext * | sl | ||
| ) |
Decode a macroblock.
| int ff_h264_execute_decode_slices | ( | H264Context * | h | ) |
Call decode_slice() for each context.
| h | h264 master context |
| int ff_h264_queue_decode_slice | ( | H264Context * | h, |
| const H2645NAL * | nal | ||
| ) |
Submit a slice for decoding.
Parse the slice header, starting a new field/frame if necessary. If any slices are queued for the previous field, they are decoded.
1.8.12