FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
videotoolboxenc.c File Reference
#include <VideoToolbox/VideoToolbox.h>
#include <CoreVideo/CoreVideo.h>
#include <CoreMedia/CoreMedia.h>
#include <TargetConditionals.h>
#include <Availability.h>
#include "avcodec.h"
#include "libavutil/opt.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/pixdesc.h"
#include "internal.h"
#include <pthread.h>
#include "h264.h"
#include "h264_sei.h"
#include <dlfcn.h>

Go to the source code of this file.

Data Structures

struct  ExtraSEI
 
struct  BufNode
 
struct  VTEncContext
 

Macros

#define GET_SYM(symbol, defaultVal)
 
#define OFFSET(x)   offsetof(VTEncContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Enumerations

enum  VT_H264Profile {
  H264_PROF_AUTO, H264_PROF_BASELINE, H264_PROF_MAIN, H264_PROF_HIGH,
  H264_PROF_COUNT
}
 
enum  VTH264Entropy { VT_ENTROPY_NOT_SET, VT_CAVLC, VT_CABAC }
 

Functions

static void loadVTEncSymbols ()
 
static int vtenc_populate_extradata (AVCodecContext *avctx, CMVideoCodecType codec_type, CFStringRef profile_level, CFNumberRef gamma_level, CFDictionaryRef enc_info, CFDictionaryRef pixel_buffer_info)
 
static void vt_release_num (CFNumberRef *refPtr)
 NULL-safe release of *refPtr, and sets value to NULL. More...
 
static void set_async_error (VTEncContext *vtctx, int err)
 
static void clear_frame_queue (VTEncContext *vtctx)
 
static int vtenc_q_pop (VTEncContext *vtctx, bool wait, CMSampleBufferRef *buf, ExtraSEI **sei)
 
static void vtenc_q_push (VTEncContext *vtctx, CMSampleBufferRef buffer, ExtraSEI *sei)
 
static int count_nalus (size_t length_code_size, CMSampleBufferRef sample_buffer, int *count)
 
static CMVideoCodecType get_cm_codec_type (enum AVCodecID id)
 
static int get_params_size (AVCodecContext *avctx, CMVideoFormatDescriptionRef vid_fmt, size_t *size)
 Get the parameter sets from a CMSampleBufferRef. More...
 
static int copy_param_sets (AVCodecContext *avctx, CMVideoFormatDescriptionRef vid_fmt, uint8_t *dst, size_t dst_size)
 
static int set_extradata (AVCodecContext *avctx, CMSampleBufferRef sample_buffer)
 
static void vtenc_output_callback (void *ctx, void *sourceFrameCtx, OSStatus status, VTEncodeInfoFlags flags, CMSampleBufferRef sample_buffer)
 
static int get_length_code_size (AVCodecContext *avctx, CMSampleBufferRef sample_buffer, size_t *size)
 
static bool get_vt_profile_level (AVCodecContext *avctx, CFStringRef *profile_level_val)
 
static int get_cv_pixel_format (AVCodecContext *avctx, enum AVPixelFormat fmt, enum AVColorRange range, int *av_pixel_format, int *range_guessed)
 
static void add_color_attr (AVCodecContext *avctx, CFMutableDictionaryRef dict)
 
static int create_cv_pixel_buffer_info (AVCodecContext *avctx, CFMutableDictionaryRef *dict)
 
static int get_cv_color_primaries (AVCodecContext *avctx, CFStringRef *primaries)
 
static int get_cv_transfer_function (AVCodecContext *avctx, CFStringRef *transfer_fnc, CFNumberRef *gamma_level)
 
static int get_cv_ycbcr_matrix (AVCodecContext *avctx, CFStringRef *matrix)
 
static int vtenc_create_encoder (AVCodecContext *avctx, CMVideoCodecType codec_type, CFStringRef profile_level, CFNumberRef gamma_level, CFDictionaryRef enc_info, CFDictionaryRef pixel_buffer_info, VTCompressionSessionRef *session)
 
static av_cold int vtenc_init (AVCodecContext *avctx)
 
static void vtenc_get_frame_info (CMSampleBufferRef buffer, bool *is_key_frame)
 
static int is_post_sei_nal_type (int nal_type)
 
static int find_sei_end (AVCodecContext *avctx, uint8_t *nal_data, size_t nal_size, uint8_t **sei_end)
 
static int copy_emulation_prev (const uint8_t *src, size_t src_size, uint8_t *dst, ssize_t dst_offset, size_t dst_size)
 Copies the data inserting emulation prevention bytes as needed. More...
 
static int write_sei (const ExtraSEI *sei, int sei_type, uint8_t *dst, size_t dst_size)
 
static int copy_replace_length_codes (AVCodecContext *avctx, size_t length_code_size, CMSampleBufferRef sample_buffer, ExtraSEI *sei, uint8_t *dst_data, size_t dst_size)
 Copies NAL units and replaces length codes with H.264 Annex B start codes. More...
 
static int get_sei_msg_bytes (const ExtraSEI *sei, int type)
 Returns a sufficient number of bytes to contain the sei data. More...
 
static int vtenc_cm_to_avpacket (AVCodecContext *avctx, CMSampleBufferRef sample_buffer, AVPacket *pkt, ExtraSEI *sei)
 
static int get_cv_pixel_info (AVCodecContext *avctx, const AVFrame *frame, int *color, int *plane_count, size_t *widths, size_t *heights, size_t *strides, size_t *contiguous_buf_size)
 
static void free_avframe (void *release_ctx, const void *data, size_t size, size_t plane_count, const void *plane_addresses[])
 
static int create_cv_pixel_buffer (AVCodecContext *avctx, const AVFrame *frame, CVPixelBufferRef *cv_img)
 TARGET_OS_IPHONE. More...
 
static int create_encoder_dict_h264 (const AVFrame *frame, CFDictionaryRef *dict_out)
 
static int vtenc_send_frame (AVCodecContext *avctx, VTEncContext *vtctx, const AVFrame *frame)
 
static av_cold int vtenc_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 
static av_cold int vtenc_close (AVCodecContext *avctx)
 

Variables

struct {
   CFStringRef   kCVImageBufferColorPrimaries_ITU_R_2020
 
   CFStringRef   kCVImageBufferTransferFunction_ITU_R_2020
 
   CFStringRef   kCVImageBufferYCbCrMatrix_ITU_R_2020
 
   CFStringRef   kVTCompressionPropertyKey_H264EntropyMode
 
   CFStringRef   kVTH264EntropyMode_CAVLC
 
   CFStringRef   kVTH264EntropyMode_CABAC
 
   CFStringRef   kVTProfileLevel_H264_Baseline_4_0
 
   CFStringRef   kVTProfileLevel_H264_Baseline_4_2
 
   CFStringRef   kVTProfileLevel_H264_Baseline_5_0
 
   CFStringRef   kVTProfileLevel_H264_Baseline_5_1
 
   CFStringRef   kVTProfileLevel_H264_Baseline_5_2
 
   CFStringRef   kVTProfileLevel_H264_Baseline_AutoLevel
 
   CFStringRef   kVTProfileLevel_H264_Main_4_2
 
   CFStringRef   kVTProfileLevel_H264_Main_5_1
 
   CFStringRef   kVTProfileLevel_H264_Main_5_2
 
   CFStringRef   kVTProfileLevel_H264_Main_AutoLevel
 
   CFStringRef   kVTProfileLevel_H264_High_3_0
 
   CFStringRef   kVTProfileLevel_H264_High_3_1
 
   CFStringRef   kVTProfileLevel_H264_High_3_2
 
   CFStringRef   kVTProfileLevel_H264_High_4_0
 
   CFStringRef   kVTProfileLevel_H264_High_4_1
 
   CFStringRef   kVTProfileLevel_H264_High_4_2
 
   CFStringRef   kVTProfileLevel_H264_High_5_1
 
   CFStringRef   kVTProfileLevel_H264_High_5_2
 
   CFStringRef   kVTProfileLevel_H264_High_AutoLevel
 
   CFStringRef   kVTCompressionPropertyKey_RealTime
 
   CFStringRef   kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder
 
   CFStringRef   kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder
 
compat_keys
 
static pthread_once_t once_ctrl = PTHREAD_ONCE_INIT
 
static const uint8_t start_code [] = { 0, 0, 0, 1 }
 
static enum AVPixelFormat pix_fmts []
 
static const AVOption options []
 
static const AVClass h264_videotoolbox_class
 
AVCodec ff_h264_videotoolbox_encoder
 

Macro Definition Documentation

#define GET_SYM (   symbol,
  defaultVal 
)
Value:
do{ \
CFStringRef cfstr = *(CFStringRef*)dlsym(RTLD_DEFAULT, #symbol); \
if(!cfstr) \
compat_keys.symbol = CFSTR(defaultVal); \
compat_keys.symbol = cfstr; \
}while(0)
static struct @137 compat_keys
if(ret< 0)
Definition: vf_mcdeint.c:282

Definition at line 74 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

#define OFFSET (   x)    offsetof(VTEncContext, x)

Definition at line 2427 of file videotoolboxenc.c.

Definition at line 2428 of file videotoolboxenc.c.

Enumeration Type Documentation

Enumerator
H264_PROF_AUTO 
H264_PROF_BASELINE 
H264_PROF_MAIN 
H264_PROF_HIGH 
H264_PROF_COUNT 

Definition at line 122 of file videotoolboxenc.c.

Enumerator
VT_ENTROPY_NOT_SET 
VT_CAVLC 
VT_CABAC 

Definition at line 130 of file videotoolboxenc.c.

Function Documentation

static void loadVTEncSymbols ( )
static

Definition at line 85 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int vtenc_populate_extradata ( AVCodecContext avctx,
CMVideoCodecType  codec_type,
CFStringRef  profile_level,
CFNumberRef  gamma_level,
CFDictionaryRef  enc_info,
CFDictionaryRef  pixel_buffer_info 
)
static

Definition at line 2286 of file videotoolboxenc.c.

Referenced by vtenc_init().

static void vt_release_num ( CFNumberRef *  refPtr)
static

NULL-safe release of *refPtr, and sets value to NULL.

Definition at line 196 of file videotoolboxenc.c.

Referenced by create_cv_pixel_buffer_info().

static void set_async_error ( VTEncContext vtctx,
int  err 
)
static

Definition at line 205 of file videotoolboxenc.c.

Referenced by clear_frame_queue(), vtenc_output_callback(), and vtenc_q_push().

static void clear_frame_queue ( VTEncContext vtctx)
static

Definition at line 226 of file videotoolboxenc.c.

Referenced by vtenc_close().

static int vtenc_q_pop ( VTEncContext vtctx,
bool  wait,
CMSampleBufferRef *  buf,
ExtraSEI **  sei 
)
static

Definition at line 231 of file videotoolboxenc.c.

Referenced by vtenc_frame(), and vtenc_populate_extradata().

static void vtenc_q_push ( VTEncContext vtctx,
CMSampleBufferRef  buffer,
ExtraSEI sei 
)
static

Definition at line 281 of file videotoolboxenc.c.

Referenced by vtenc_output_callback().

static int count_nalus ( size_t  length_code_size,
CMSampleBufferRef  sample_buffer,
int count 
)
static

Definition at line 308 of file videotoolboxenc.c.

Referenced by vtenc_cm_to_avpacket().

static CMVideoCodecType get_cm_codec_type ( enum AVCodecID  id)
static

Definition at line 347 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int get_params_size ( AVCodecContext avctx,
CMVideoFormatDescriptionRef  vid_fmt,
size_t *  size 
)
static

Get the parameter sets from a CMSampleBufferRef.

Parameters
dstIf *dst isn't NULL, the parameters are copied into existing memory. *dst_size must be set accordingly when *dst != NULL. If *dst is NULL, it will be allocated. In all cases, *dst_size is set to the number of bytes used starting at *dst.

Definition at line 363 of file videotoolboxenc.c.

Referenced by set_extradata(), and vtenc_cm_to_avpacket().

static int copy_param_sets ( AVCodecContext avctx,
CMVideoFormatDescriptionRef  vid_fmt,
uint8_t dst,
size_t  dst_size 
)
static

Definition at line 416 of file videotoolboxenc.c.

Referenced by set_extradata(), and vtenc_cm_to_avpacket().

static int set_extradata ( AVCodecContext avctx,
CMSampleBufferRef  sample_buffer 
)
static

Definition at line 479 of file videotoolboxenc.c.

Referenced by vtenc_output_callback().

static void vtenc_output_callback ( void ctx,
void sourceFrameCtx,
OSStatus  status,
VTEncodeInfoFlags  flags,
CMSampleBufferRef  sample_buffer 
)
static

Definition at line 513 of file videotoolboxenc.c.

Referenced by vtenc_create_encoder().

static int get_length_code_size ( AVCodecContext avctx,
CMSampleBufferRef  sample_buffer,
size_t *  size 
)
static

Definition at line 546 of file videotoolboxenc.c.

Referenced by vtenc_cm_to_avpacket().

static bool get_vt_profile_level ( AVCodecContext avctx,
CFStringRef *  profile_level_val 
)
static

Definition at line 582 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int get_cv_pixel_format ( AVCodecContext avctx,
enum AVPixelFormat  fmt,
enum AVColorRange  range,
int av_pixel_format,
int range_guessed 
)
static

Definition at line 673 of file videotoolboxenc.c.

Referenced by create_cv_pixel_buffer_info(), and get_cv_pixel_info().

static void add_color_attr ( AVCodecContext avctx,
CFMutableDictionaryRef  dict 
)
static

Definition at line 698 of file videotoolboxenc.c.

Referenced by create_cv_pixel_buffer(), and create_cv_pixel_buffer_info().

static int create_cv_pixel_buffer_info ( AVCodecContext avctx,
CFMutableDictionaryRef *  dict 
)
static

Definition at line 720 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int get_cv_color_primaries ( AVCodecContext avctx,
CFStringRef *  primaries 
)
static

Definition at line 787 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int get_cv_transfer_function ( AVCodecContext avctx,
CFStringRef *  transfer_fnc,
CFNumberRef *  gamma_level 
)
static

Definition at line 813 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int get_cv_ycbcr_matrix ( AVCodecContext avctx,
CFStringRef *  matrix 
)
static

Definition at line 859 of file videotoolboxenc.c.

Referenced by vtenc_init().

static int vtenc_create_encoder ( AVCodecContext avctx,
CMVideoCodecType  codec_type,
CFStringRef  profile_level,
CFNumberRef  gamma_level,
CFDictionaryRef  enc_info,
CFDictionaryRef  pixel_buffer_info,
VTCompressionSessionRef *  session 
)
static

Definition at line 890 of file videotoolboxenc.c.

Referenced by vtenc_init(), and vtenc_populate_extradata().

static av_cold int vtenc_init ( AVCodecContext avctx)
static

Definition at line 1189 of file videotoolboxenc.c.

static void vtenc_get_frame_info ( CMSampleBufferRef  buffer,
bool *  is_key_frame 
)
static

Definition at line 1307 of file videotoolboxenc.c.

Referenced by vtenc_cm_to_avpacket().

static int is_post_sei_nal_type ( int  nal_type)
static

Definition at line 1334 of file videotoolboxenc.c.

Referenced by copy_replace_length_codes().

static int find_sei_end ( AVCodecContext avctx,
uint8_t nal_data,
size_t  nal_size,
uint8_t **  sei_end 
)
static

Definition at line 1345 of file videotoolboxenc.c.

Referenced by copy_replace_length_codes().

static int copy_emulation_prev ( const uint8_t src,
size_t  src_size,
uint8_t dst,
ssize_t  dst_offset,
size_t  dst_size 
)
static

Copies the data inserting emulation prevention bytes as needed.

Existing data in the destination can be taken into account by providing dst with a dst_offset > 0.

Returns
The number of bytes copied on success. On failure, the negative of the number of bytes needed to copy src is returned.

Definition at line 1409 of file videotoolboxenc.c.

Referenced by get_sei_msg_bytes(), and write_sei().

static int write_sei ( const ExtraSEI sei,
int  sei_type,
uint8_t dst,
size_t  dst_size 
)
static

Definition at line 1460 of file videotoolboxenc.c.

Referenced by copy_replace_length_codes().

static int copy_replace_length_codes ( AVCodecContext avctx,
size_t  length_code_size,
CMSampleBufferRef  sample_buffer,
ExtraSEI sei,
uint8_t dst_data,
size_t  dst_size 
)
static

Copies NAL units and replaces length codes with H.264 Annex B start codes.

On failure, the contents of dst_data may have been modified.

Parameters
length_code_sizeByte length of each length code
sample_bufferNAL units prefixed with length codes.
seiOptional A53 closed captions SEI data.
dst_dataMust be zeroed before calling this function. Contains the copied NAL units prefixed with start codes when the function returns successfully.
dst_sizeLength of dst_data
Returns
0 on success AVERROR_INVALIDDATA if length_code_size is invalid AVERROR_BUFFER_TOO_SMALL if dst_data is too small or if a length_code in src_data specifies data beyond the end of its buffer.

Definition at line 1533 of file videotoolboxenc.c.

Referenced by vtenc_cm_to_avpacket().

static int get_sei_msg_bytes ( const ExtraSEI sei,
int  type 
)
static

Returns a sufficient number of bytes to contain the sei data.

It may be greater than the minimum required.

Definition at line 1690 of file videotoolboxenc.c.

Referenced by vtenc_cm_to_avpacket().

static int vtenc_cm_to_avpacket ( AVCodecContext avctx,
CMSampleBufferRef  sample_buffer,
AVPacket pkt,
ExtraSEI sei 
)
static

Definition at line 1707 of file videotoolboxenc.c.

Referenced by vtenc_frame().

static int get_cv_pixel_info ( AVCodecContext avctx,
const AVFrame frame,
int color,
int plane_count,
size_t *  widths,
size_t *  heights,
size_t *  strides,
size_t *  contiguous_buf_size 
)
static

Definition at line 1817 of file videotoolboxenc.c.

Referenced by create_cv_pixel_buffer().

static void free_avframe ( void release_ctx,
const void data,
size_t  size,
size_t  plane_count,
const void plane_addresses[] 
)
static

Definition at line 1916 of file videotoolboxenc.c.

Referenced by create_cv_pixel_buffer().

static int create_cv_pixel_buffer ( AVCodecContext avctx,
const AVFrame frame,
CVPixelBufferRef *  cv_img 
)
static

TARGET_OS_IPHONE.

Definition at line 2021 of file videotoolboxenc.c.

Referenced by vtenc_send_frame().

static int create_encoder_dict_h264 ( const AVFrame frame,
CFDictionaryRef *  dict_out 
)
static

Definition at line 2147 of file videotoolboxenc.c.

Referenced by vtenc_send_frame().

static int vtenc_send_frame ( AVCodecContext avctx,
VTEncContext vtctx,
const AVFrame frame 
)
static

Definition at line 2163 of file videotoolboxenc.c.

Referenced by vtenc_frame(), and vtenc_populate_extradata().

static av_cold int vtenc_frame ( AVCodecContext avctx,
AVPacket pkt,
const AVFrame frame,
int got_packet 
)
static

Definition at line 2219 of file videotoolboxenc.c.

static av_cold int vtenc_close ( AVCodecContext avctx)
static

Definition at line 2388 of file videotoolboxenc.c.

Variable Documentation

CFStringRef kCVImageBufferColorPrimaries_ITU_R_2020

Definition at line 40 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kCVImageBufferTransferFunction_ITU_R_2020

Definition at line 41 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kCVImageBufferYCbCrMatrix_ITU_R_2020

Definition at line 42 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTCompressionPropertyKey_H264EntropyMode

Definition at line 44 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTH264EntropyMode_CAVLC

Definition at line 45 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTH264EntropyMode_CABAC

Definition at line 46 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_4_0

Definition at line 48 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_4_2

Definition at line 49 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_5_0

Definition at line 50 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_5_1

Definition at line 51 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_5_2

Definition at line 52 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Baseline_AutoLevel

Definition at line 53 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Main_4_2

Definition at line 54 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Main_5_1

Definition at line 55 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Main_5_2

Definition at line 56 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_Main_AutoLevel

Definition at line 57 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_3_0

Definition at line 58 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_3_1

Definition at line 59 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_3_2

Definition at line 60 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_4_0

Definition at line 61 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_4_1

Definition at line 62 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_4_2

Definition at line 63 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_5_1

Definition at line 64 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_5_2

Definition at line 65 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTProfileLevel_H264_High_AutoLevel

Definition at line 66 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTCompressionPropertyKey_RealTime

Definition at line 68 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder

Definition at line 70 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

CFStringRef kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder

Definition at line 71 of file videotoolboxenc.c.

Referenced by loadVTEncSymbols().

struct { ... } compat_keys
pthread_once_t once_ctrl = PTHREAD_ONCE_INIT
static

Definition at line 83 of file videotoolboxenc.c.

const uint8_t start_code[] = { 0, 0, 0, 1 }
static
enum AVPixelFormat pix_fmts[]
static
Initial value:
= {
}
hardware decoding through Videotoolbox
Definition: pixfmt.h:296
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
Definition: pixfmt.h:90
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62

Definition at line 2420 of file videotoolboxenc.c.

const AVOption options[]
static

Definition at line 2429 of file videotoolboxenc.c.

const AVClass h264_videotoolbox_class
static
Initial value:
= {
.class_name = "h264_videotoolbox",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
static const AVOption options[]
av_default_item_name

Definition at line 2469 of file videotoolboxenc.c.

AVCodec ff_h264_videotoolbox_encoder
Initial value:
= {
.name = "h264_videotoolbox",
.long_name = NULL_IF_CONFIG_SMALL("VideoToolbox H.264 Encoder"),
.priv_data_size = sizeof(VTEncContext),
.encode2 = vtenc_frame,
.close = vtenc_close,
.capabilities = AV_CODEC_CAP_DELAY,
.priv_class = &h264_videotoolbox_class,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
}
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: internal.h:48
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: avcodec.h:1019
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:40
static av_cold int vtenc_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:179
static enum AVPixelFormat pix_fmts[]
static const AVClass h264_videotoolbox_class
static av_cold int vtenc_close(AVCodecContext *avctx)
static av_cold int vtenc_init(AVCodecContext *avctx)

Definition at line 2476 of file videotoolboxenc.c.