FFmpeg
|
#include "libavcodec/get_bits.h"
#include "libavcodec/golomb.h"
#include "libavcodec/hevc/hevc.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "avc.h"
#include "avio.h"
#include "avio_internal.h"
#include "hevc.h"
#include "nal.h"
Go to the source code of this file.
Data Structures | |
struct | HVCCNALUnit |
struct | HVCCNALUnitArray |
struct | HEVCDecoderConfigurationRecord |
struct | HVCCProfileTierLevel |
Macros | |
#define | MAX_SPATIAL_SEGMENTATION 4096 |
#define | FLAG_ARRAY_COMPLETENESS (1 << 0) |
#define | FLAG_IS_NALFF (1 << 1) |
#define | FLAG_IS_LHVC (1 << 2) |
Enumerations | |
enum | { VPS_INDEX, SPS_INDEX, PPS_INDEX, SEI_PREFIX_INDEX, SEI_SUFFIX_INDEX, NB_ARRAYS } |
Functions | |
static void | hvcc_update_ptl (HEVCDecoderConfigurationRecord *hvcc, HVCCProfileTierLevel *ptl) |
static void | hvcc_parse_ptl (GetBitContext *gb, HEVCDecoderConfigurationRecord *hvcc, int profile_present_flag, unsigned int max_sub_layers_minus1) |
static void | skip_sub_layer_hrd_parameters (GetBitContext *gb, unsigned int cpb_cnt_minus1, uint8_t sub_pic_hrd_params_present_flag) |
static int | skip_hrd_parameters (GetBitContext *gb, uint8_t cprms_present_flag, unsigned int max_sub_layers_minus1) |
static void | skip_timing_info (GetBitContext *gb) |
static void | hvcc_parse_vui (GetBitContext *gb, HEVCDecoderConfigurationRecord *hvcc, unsigned int max_sub_layers_minus1) |
static void | skip_sub_layer_ordering_info (GetBitContext *gb) |
static int | hvcc_parse_vps_extension (GetBitContext *gb, HVCCNALUnit *nal, HEVCDecoderConfigurationRecord *hvcc, uint8_t vps_max_layers_minus1, uint8_t vps_base_layer_internal_flag) |
static int | hvcc_parse_vps (GetBitContext *gb, HVCCNALUnit *nal, HEVCDecoderConfigurationRecord *hvcc) |
static void | skip_scaling_list_data (GetBitContext *gb) |
static int | parse_rps (GetBitContext *gb, unsigned int rps_idx, unsigned int num_rps, unsigned int num_delta_pocs[HEVC_MAX_SHORT_TERM_REF_PIC_SETS]) |
static int | hvcc_parse_sps (GetBitContext *gb, HVCCNALUnit *nal, HEVCDecoderConfigurationRecord *hvcc) |
static int | hvcc_parse_pps (GetBitContext *gb, HVCCNALUnit *nal, HEVCDecoderConfigurationRecord *hvcc) |
static void | nal_unit_parse_header (GetBitContext *gb, uint8_t *nal_type, uint8_t *nuh_layer_id) |
static int | hvcc_array_add_nal_unit (const uint8_t *nal_buf, uint32_t nal_size, HVCCNALUnitArray *array) |
static int | hvcc_add_nal_unit (const uint8_t *nal_buf, uint32_t nal_size, HEVCDecoderConfigurationRecord *hvcc, int flags, unsigned array_idx) |
static void | hvcc_init (HEVCDecoderConfigurationRecord *hvcc) |
static void | hvcc_close (HEVCDecoderConfigurationRecord *hvcc) |
static int | hvcc_write (void *logctx, AVIOContext *pb, HEVCDecoderConfigurationRecord *hvcc, int flags) |
int | ff_hevc_annexb2mp4 (AVIOContext *pb, const uint8_t *buf_in, int size, int filter_ps, int *ps_count) |
Writes Annex B formatted HEVC NAL units to the provided AVIOContext. More... | |
int | ff_hevc_annexb2mp4_buf (const uint8_t *buf_in, uint8_t **buf_out, int *size, int filter_ps, int *ps_count) |
Writes Annex B formatted HEVC NAL units to a data buffer. More... | |
static int | hvcc_parse_nal_unit (const uint8_t *buf, uint32_t len, int type, HEVCDecoderConfigurationRecord *hvcc, int flags) |
static int | write_configuration_record (void *logctx, AVIOContext *pb, const uint8_t *data, int size, int flags) |
int | ff_isom_write_hvcc (AVIOContext *pb, const uint8_t *data, int size, int ps_array_completeness, void *logctx) |
Writes HEVC extradata (parameter sets and declarative SEI NAL units with nuh_layer_id == 0, as a HEVCDecoderConfigurationRecord) to the provided AVIOContext. More... | |
int | ff_isom_write_lhvc (AVIOContext *pb, const uint8_t *data, int size, int ps_array_completeness, void *logctx) |
Writes L-HEVC extradata (parameter sets with nuh_layer_id > 0, as a LHEVCDecoderConfigurationRecord) to the provided AVIOContext. More... | |
anonymous enum |
|
static |
Definition at line 98 of file hevc.c.
Referenced by hvcc_parse_ptl().
|
static |
Definition at line 152 of file hevc.c.
Referenced by hvcc_parse_sps(), hvcc_parse_vps(), and hvcc_parse_vps_extension().
|
static |
Definition at line 205 of file hevc.c.
Referenced by skip_hrd_parameters().
|
static |
Definition at line 224 of file hevc.c.
Referenced by hvcc_parse_vps(), and hvcc_parse_vui().
|
static |
Definition at line 299 of file hevc.c.
Referenced by hvcc_parse_vui().
|
static |
Definition at line 308 of file hevc.c.
Referenced by hvcc_parse_sps().
|
static |
Definition at line 386 of file hevc.c.
Referenced by hvcc_parse_sps().
|
static |
Definition at line 393 of file hevc.c.
Referenced by hvcc_parse_vps().
|
static |
Definition at line 460 of file hevc.c.
Referenced by hvcc_add_nal_unit().
|
static |
Definition at line 542 of file hevc.c.
Referenced by hvcc_parse_sps().
|
static |
Definition at line 561 of file hevc.c.
Referenced by hvcc_parse_sps().
|
static |
Definition at line 628 of file hevc.c.
Referenced by hvcc_add_nal_unit().
|
static |
Definition at line 769 of file hevc.c.
Referenced by hvcc_add_nal_unit().
|
static |
Definition at line 826 of file hevc.c.
Referenced by hvcc_add_nal_unit().
|
static |
Definition at line 840 of file hevc.c.
Referenced by hvcc_add_nal_unit().
|
static |
Definition at line 859 of file hevc.c.
Referenced by hvcc_parse_nal_unit().
|
static |
Definition at line 932 of file hevc.c.
Referenced by write_configuration_record().
|
static |
Definition at line 952 of file hevc.c.
Referenced by write_configuration_record().
|
static |
Definition at line 961 of file hevc.c.
Referenced by write_configuration_record().
int ff_hevc_annexb2mp4 | ( | AVIOContext * | pb, |
const uint8_t * | buf_in, | ||
int | size, | ||
int | filter_ps, | ||
int * | ps_count | ||
) |
Writes Annex B formatted HEVC NAL units to the provided AVIOContext.
The NAL units are converted to an MP4-compatible format (start code prefixes are replaced by 4-byte size fields, as per ISO/IEC 14496-15).
If filter_ps is non-zero, any HEVC parameter sets found in the input will be discarded, and *ps_count will be set to the number of discarded PS NAL units.
pb | address of the AVIOContext where the data shall be written |
buf_in | address of the buffer holding the input data |
size | size (in bytes) of the input buffer |
filter_ps | whether to write parameter set NAL units to the output (0) or to discard them (non-zero) |
ps_count | address of the variable where the number of discarded parameter set NAL units shall be written, may be NULL |
Definition at line 1204 of file hevc.c.
Referenced by ff_hevc_annexb2mp4_buf(), and ff_mov_write_packet().
int ff_hevc_annexb2mp4_buf | ( | const uint8_t * | buf_in, |
uint8_t ** | buf_out, | ||
int * | size, | ||
int | filter_ps, | ||
int * | ps_count | ||
) |
Writes Annex B formatted HEVC NAL units to a data buffer.
The NAL units are converted to an MP4-compatible format (start code prefixes are replaced by 4-byte size fields, as per ISO/IEC 14496-15).
If filter_ps is non-zero, any HEVC parameter sets found in the input will be discarded, and *ps_count will be set to the number of discarded PS NAL units.
On success, *size holds the size (in bytes) of the output data buffer.
buf_in | address of the buffer holding the input data |
size | address of the variable holding the size (in bytes) of the input buffer (on input) and of the output buffer (on success) |
buf_out | on success, address of the variable holding the address of the output buffer |
filter_ps | whether to write parameter set NAL units to the output (0) or to discard them (non-zero) |
ps_count | address of the variable where the number of discarded parameter set NAL units shall be written, may be NULL |
Definition at line 1252 of file hevc.c.
Referenced by ff_mov_write_packet(), and flv_write_packet().
|
static |
Definition at line 1273 of file hevc.c.
Referenced by write_configuration_record().
|
static |
Definition at line 1293 of file hevc.c.
Referenced by ff_isom_write_hvcc(), and ff_isom_write_lhvc().
int ff_isom_write_hvcc | ( | AVIOContext * | pb, |
const uint8_t * | data, | ||
int | size, | ||
int | ps_array_completeness, | ||
void * | logctx | ||
) |
Writes HEVC extradata (parameter sets and declarative SEI NAL units with nuh_layer_id == 0, as a HEVCDecoderConfigurationRecord) to the provided AVIOContext.
If the extradata is Annex B format, it gets converted to hvcC format before writing.
pb | address of the AVIOContext where the hvcC shall be written |
data | address of the buffer holding the data needed to write the hvcC |
size | size (in bytes) of the data buffer |
ps_array_completeness | whether all parameter sets are in the hvcC (1) or there may be additional parameter sets in the bitstream (0) |
logctx | opaque struct starting with an AVClass element, used for logging |
Definition at line 1401 of file hevc.c.
Referenced by flv_write_codec_header(), mkv_assemble_native_codecprivate(), and mov_write_hvcc_tag().
int ff_isom_write_lhvc | ( | AVIOContext * | pb, |
const uint8_t * | data, | ||
int | size, | ||
int | ps_array_completeness, | ||
void * | logctx | ||
) |
Writes L-HEVC extradata (parameter sets with nuh_layer_id > 0, as a LHEVCDecoderConfigurationRecord) to the provided AVIOContext.
If the extradata is Annex B format, it gets converted to lhvC format before writing. Otherwise, hvcC formated extradata is expected, not lhvC.
pb | address of the AVIOContext where the lhvC shall be written |
data | address of the buffer holding the data needed to write the lhvC |
size | size (in bytes) of the data buffer |
ps_array_completeness | whether all parameter sets are in the lhvC (1) or there may be additional parameter sets in the bitstream (0) |
logctx | opaque struct starting with an AVClass element, used for logging |
Definition at line 1408 of file hevc.c.
Referenced by mov_write_lhvc_tag().