FFmpeg
Data Structures | Macros | Functions | Variables
audiotoolboxenc.c File Reference
#include <AudioToolbox/AudioToolbox.h>
#include "libavfilter/bufferqueue.h"
#include "config.h"
#include "audio_frame_queue.h"
#include "avcodec.h"
#include "bytestream.h"
#include "codec_internal.h"
#include "encode.h"
#include "internal.h"
#include "libavformat/isom.h"
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
#include "libavutil/log.h"

Go to the source code of this file.

Data Structures

struct  ATDecodeContext
 

Macros

#define FF_BUFQUEUE_SIZE   256
 
#define AE   AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 
#define FFAT_ENC_CLASS(NAME)
 
#define FFAT_ENC(NAME, ID, PROFILES, CAPS, CHANNEL_LAYOUTS, CH_LAYOUTS)
 

Functions

static UInt32 ffat_get_format_id (enum AVCodecID codec, int profile)
 
static void ffat_update_ctx (AVCodecContext *avctx)
 
static int read_descr (GetByteContext *gb, int *tag)
 
static int get_ilbc_mode (AVCodecContext *avctx)
 
static av_cold int get_channel_label (int channel)
 
static int remap_layout (AudioChannelLayout *layout, const AVChannelLayout *in_layout)
 
static int get_aac_tag (const AVChannelLayout *in_layout)
 
static av_cold int ffat_init_encoder (AVCodecContext *avctx)
 
static OSStatus ffat_encode_callback (AudioConverterRef converter, UInt32 *nb_packets, AudioBufferList *data, AudioStreamPacketDescription **packets, void *inctx)
 
static int ffat_encode (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 
static av_cold void ffat_encode_flush (AVCodecContext *avctx)
 
static av_cold int ffat_close_encoder (AVCodecContext *avctx)
 

Variables

static const AVProfile aac_profiles []
 
static const AVOption options []
 
static const AVChannelLayout aac_at_ch_layouts []
 

Macro Definition Documentation

◆ FF_BUFQUEUE_SIZE

#define FF_BUFQUEUE_SIZE   256

Definition at line 25 of file audiotoolboxenc.c.

◆ AE

Definition at line 593 of file audiotoolboxenc.c.

◆ FFAT_ENC_CLASS

#define FFAT_ENC_CLASS (   NAME)
Value:
static const AVClass ffat_##NAME##_enc_class = { \
.class_name = "at_" #NAME "_enc", \
.item_name = av_default_item_name, \
.option = options, \
.version = LIBAVUTIL_VERSION_INT, \
};

Definition at line 607 of file audiotoolboxenc.c.

◆ FFAT_ENC

#define FFAT_ENC (   NAME,
  ID,
  PROFILES,
  CAPS,
  CHANNEL_LAYOUTS,
  CH_LAYOUTS 
)
Value:
const FFCodec ff_##NAME##_at_encoder = { \
.p.name = #NAME "_at", \
CODEC_LONG_NAME(#NAME " (AudioToolbox)"), \
.p.type = AVMEDIA_TYPE_AUDIO, \
.p.id = ID, \
.priv_data_size = sizeof(ATDecodeContext), \
.close = ffat_close_encoder, \
.flush = ffat_encode_flush, \
.p.priv_class = &ffat_##NAME##_enc_class, \
.p.capabilities = AV_CODEC_CAP_DELAY | \
AV_CODEC_CAP_ENCODER_FLUSH CAPS, \
CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(CHANNEL_LAYOUTS) \
.p.ch_layouts = CH_LAYOUTS, \
.p.sample_fmts = (const enum AVSampleFormat[]) { \
AV_SAMPLE_FMT_S16, \
AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_NONE \
}, \
.p.profiles = PROFILES, \
.p.wrapper_name = "at", \
};

Definition at line 615 of file audiotoolboxenc.c.

Function Documentation

◆ ffat_get_format_id()

static UInt32 ffat_get_format_id ( enum AVCodecID  codec,
int  profile 
)
static

Definition at line 58 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ ffat_update_ctx()

static void ffat_update_ctx ( AVCodecContext avctx)
static

Definition at line 91 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ read_descr()

static int read_descr ( GetByteContext gb,
int tag 
)
static

Definition at line 131 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ get_ilbc_mode()

static int get_ilbc_mode ( AVCodecContext avctx)
static

Definition at line 145 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ get_channel_label()

static av_cold int get_channel_label ( int  channel)
static

Definition at line 157 of file audiotoolboxenc.c.

Referenced by remap_layout().

◆ remap_layout()

static int remap_layout ( AudioChannelLayout *  layout,
const AVChannelLayout in_layout 
)
static

Definition at line 182 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ get_aac_tag()

static int get_aac_tag ( const AVChannelLayout in_layout)
static

Definition at line 202 of file audiotoolboxenc.c.

Referenced by ffat_init_encoder().

◆ ffat_init_encoder()

static av_cold int ffat_init_encoder ( AVCodecContext avctx)
static

Definition at line 231 of file audiotoolboxenc.c.

◆ ffat_encode_callback()

static OSStatus ffat_encode_callback ( AudioConverterRef  converter,
UInt32 *  nb_packets,
AudioBufferList *  data,
AudioStreamPacketDescription **  packets,
void *  inctx 
)
static

Definition at line 451 of file audiotoolboxenc.c.

Referenced by ffat_encode().

◆ ffat_encode()

static int ffat_encode ( AVCodecContext avctx,
AVPacket avpkt,
const AVFrame frame,
int got_packet_ptr 
)
static

Definition at line 494 of file audiotoolboxenc.c.

◆ ffat_encode_flush()

static av_cold void ffat_encode_flush ( AVCodecContext avctx)
static

Definition at line 565 of file audiotoolboxenc.c.

◆ ffat_close_encoder()

static av_cold int ffat_close_encoder ( AVCodecContext avctx)
static

Definition at line 573 of file audiotoolboxenc.c.

Variable Documentation

◆ aac_profiles

const AVProfile aac_profiles[]
static
Initial value:
= {
{ FF_PROFILE_AAC_LOW, "LC" },
{ FF_PROFILE_AAC_HE, "HE-AAC" },
{ FF_PROFILE_AAC_HE_V2, "HE-AACv2" },
{ FF_PROFILE_AAC_LD, "LD" },
{ FF_PROFILE_AAC_ELD, "ELD" },
}

Definition at line 584 of file audiotoolboxenc.c.

◆ options

const AVOption options[]
static
Initial value:
= {
{"aac_at_mode", "ratecontrol mode", 0x42, AV_OPT_TYPE_INT, {.i64 = -1}, -1, kAudioCodecBitRateControlMode_Variable, AE, "mode"},
{"auto", "VBR if global quality is given; CBR otherwise", 0, AV_OPT_TYPE_CONST, {.i64 = -1}, INT_MIN, INT_MAX, AE, "mode"},
{"cbr", "constant bitrate", 0, AV_OPT_TYPE_CONST, {.i64 = kAudioCodecBitRateControlMode_Constant}, INT_MIN, INT_MAX, AE, "mode"},
{"abr", "long-term average bitrate", 0, AV_OPT_TYPE_CONST, {.i64 = kAudioCodecBitRateControlMode_LongTermAverage}, INT_MIN, INT_MAX, AE, "mode"},
{"cvbr", "constrained variable bitrate", 0, AV_OPT_TYPE_CONST, {.i64 = kAudioCodecBitRateControlMode_VariableConstrained}, INT_MIN, INT_MAX, AE, "mode"},
{"vbr" , "variable bitrate", 0, AV_OPT_TYPE_CONST, {.i64 = kAudioCodecBitRateControlMode_Variable}, INT_MIN, INT_MAX, AE, "mode"},
{"aac_at_quality", "quality vs speed control", 0x42, AV_OPT_TYPE_INT, {.i64 = 0}, 0, 2, AE},
{ NULL },
}

Definition at line 594 of file audiotoolboxenc.c.

◆ aac_at_ch_layouts

const AVChannelLayout aac_at_ch_layouts[]
static
AV_CHANNEL_LAYOUT_OCTAGONAL
#define AV_CHANNEL_LAYOUT_OCTAGONAL
Definition: channel_layout.h:394
AV_CHANNEL_LAYOUT_STEREO
#define AV_CHANNEL_LAYOUT_STEREO
Definition: channel_layout.h:369
ffat_init_encoder
static av_cold int ffat_init_encoder(AVCodecContext *avctx)
Definition: audiotoolboxenc.c:231
FFCodec
Definition: codec_internal.h:119
ffat_close_encoder
static av_cold int ffat_close_encoder(AVCodecContext *avctx)
Definition: audiotoolboxenc.c:573
FFCodec::p
AVCodec p
The public AVCodec.
Definition: codec_internal.h:123
AE
#define AE
Definition: audiotoolboxenc.c:593
FF_CODEC_ENCODE_CB
#define FF_CODEC_ENCODE_CB(func)
Definition: codec_internal.h:307
AV_CHANNEL_LAYOUT_SURROUND
#define AV_CHANNEL_LAYOUT_SURROUND
Definition: channel_layout.h:372
FFAT_ENC_CLASS
#define FFAT_ENC_CLASS(NAME)
Definition: audiotoolboxenc.c:607
options
static const AVOption options[]
Definition: audiotoolboxenc.c:594
FF_PROFILE_AAC_HE_V2
#define FF_PROFILE_AAC_HE_V2
Definition: avcodec.h:1559
AV_CHANNEL_LAYOUT_4POINT0
#define AV_CHANNEL_LAYOUT_4POINT0
Definition: channel_layout.h:374
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts_bsf.c:363
FF_PROFILE_UNKNOWN
#define FF_PROFILE_UNKNOWN
Definition: avcodec.h:1551
AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK
#define AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK
Definition: channel_layout.h:392
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
NULL
#define NULL
Definition: coverity.c:32
FF_PROFILE_AAC_LD
#define FF_PROFILE_AAC_LD
Definition: avcodec.h:1560
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
FF_PROFILE_AAC_ELD
#define FF_PROFILE_AAC_ELD
Definition: avcodec.h:1561
FF_PROFILE_AAC_LOW
#define FF_PROFILE_AAC_LOW
Definition: avcodec.h:1555
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:56
AV_CHANNEL_LAYOUT_6POINT0
#define AV_CHANNEL_LAYOUT_6POINT0
Definition: channel_layout.h:382
AV_CHANNEL_LAYOUT_QUAD
#define AV_CHANNEL_LAYOUT_QUAD
Definition: channel_layout.h:377
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:55
AVCodec::name
const char * name
Name of the codec implementation.
Definition: codec.h:211
FF_PROFILE_AAC_HE
#define FF_PROFILE_AAC_HE
Definition: avcodec.h:1558
AVClass::class_name
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
Definition: log.h:71
ffat_encode_flush
static av_cold void ffat_encode_flush(AVCodecContext *avctx)
Definition: audiotoolboxenc.c:565
AV_CHANNEL_LAYOUT_7POINT0
#define AV_CHANNEL_LAYOUT_7POINT0
Definition: channel_layout.h:388
ffat_encode
static int ffat_encode(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: audiotoolboxenc.c:494
ATDecodeContext
Definition: audiotoolboxdec.c:42
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:225
AV_CODEC_CAP_DELAY
#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: codec.h:82
ID
#define ID(x)
Definition: cast5.c:33
AV_CHANNEL_LAYOUT_MONO
#define AV_CHANNEL_LAYOUT_MONO
Definition: channel_layout.h:368
AV_CHANNEL_LAYOUT_6POINT1
#define AV_CHANNEL_LAYOUT_6POINT1
Definition: channel_layout.h:385
AV_CHANNEL_LAYOUT_5POINT0
#define AV_CHANNEL_LAYOUT_5POINT0
Definition: channel_layout.h:378
AV_CHANNEL_LAYOUT_5POINT1
#define AV_CHANNEL_LAYOUT_5POINT1
Definition: channel_layout.h:379
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:234