37 #define FAAC_DELAY_SAMPLES 1024 68 faacEncConfigurationPtr faac_cfg;
69 unsigned long samples_input, max_bytes_output;
81 &samples_input, &max_bytes_output);
89 faac_cfg = faacEncGetCurrentConfiguration(s->
faac_handle);
90 if (faac_cfg->version != FAAC_CFG_VERSION) {
91 av_log(avctx,
AV_LOG_ERROR,
"wrong libfaac version (compiled for: %d, using %d)\n", FAAC_CFG_VERSION, faac_cfg->version);
99 faac_cfg->aacObjectType =
MAIN;
103 faac_cfg->aacObjectType = LOW;
106 faac_cfg->aacObjectType = SSR;
109 faac_cfg->aacObjectType = LTP;
116 faac_cfg->mpegVersion = MPEG4;
117 faac_cfg->useTns = 0;
118 faac_cfg->allowMidside = 1;
120 faac_cfg->bandWidth = avctx->
cutoff;
122 faac_cfg->bitRate = 0;
125 faac_cfg->outputFormat = 1;
126 faac_cfg->inputFormat = FAAC_INPUT_16BIT;
138 unsigned long decoder_specific_info_size;
140 if (!faacEncGetDecoderSpecificInfo(s->
faac_handle, &buffer,
141 &decoder_specific_info_size)) {
149 faac_cfg->outputFormat = 0;
154 if (!faacEncSetConfiguration(s->
faac_handle, faac_cfg)) {
170 const AVFrame *frame,
int *got_packet_ptr)
173 int bytes_written, ret;
174 int num_samples = frame ? frame->
nb_samples : 0;
175 void *samples = frame ? frame->
data[0] :
NULL;
182 bytes_written = faacEncEncode(s->
faac_handle, samples,
185 if (bytes_written < 0) {
187 return bytes_written;
203 avpkt->
size = bytes_written;
faacEncHandle faac_handle
void * av_malloc(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
This structure describes decoded (raw) audio or video data.
#define AV_CH_LAYOUT_SURROUND
static av_cold int Faac_encode_init(AVCodecContext *avctx)
#define FF_PROFILE_AAC_MAIN
#define AV_CH_LAYOUT_4POINT0
#define AV_CH_LAYOUT_STEREO
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
#define CODEC_FLAG_GLOBAL_HEADER
Place global headers in extradata instead of every keyframe.
av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq)
Initialize AudioFrameQueue.
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
static av_cold int Faac_encode_close(AVCodecContext *avctx)
AVCodec ff_libfaac_encoder
#define FF_PROFILE_AAC_LTP
int duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
static int Faac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
#define CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define FAAC_DELAY_SAMPLES
#define CODEC_FLAG_QSCALE
Use fixed qscale.
void av_log(void *avcl, int level, const char *fmt,...)
const char * name
Name of the codec implementation.
int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
Add a frame to the queue.
#define FF_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
int bit_rate
the average bitrate
audio channel layout utility functions
#define FF_PROFILE_AAC_LOW
#define FF_PROFILE_UNKNOWN
static const uint64_t faac_channel_layouts[]
int ff_alloc_packet(AVPacket *avpkt, int size)
Check AVPacket size and/or allocate data.
#define AV_CH_LAYOUT_5POINT1_BACK
int frame_size
Number of samples per channel in an audio frame.
Libavcodec external API header.
AVSampleFormat
Audio Sample Formats.
int sample_rate
samples per second
main external API structure.
static void close(AVCodecParserContext *s)
#define FF_PROFILE_AAC_SSR
#define AV_CH_LAYOUT_5POINT0_BACK
int global_quality
Global quality for codecs which cannot change it per frame.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static const AVProfile profiles[]
common internal api header.
common internal and external API header
static const int channel_maps[][6]
#define AVERROR_UNKNOWN
Unknown error, typically from an external library.
static av_cold int init(AVCodecParserContext *s)
int cutoff
Audio cutoff bandwidth (0 means "automatic")
void ff_af_queue_remove(AudioFrameQueue *afq, int nb_samples, int64_t *pts, int *duration)
Remove frame(s) from the queue.
int channels
number of audio channels
#define FF_QP2LAMBDA
factor to convert from H.263 QP to lambda
void ff_af_queue_close(AudioFrameQueue *afq)
Close AudioFrameQueue.
#define AV_CH_LAYOUT_MONO
This structure stores compressed data.
int nb_samples
number of audio samples (per channel) described by this frame
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...