34 #define NUMBER_OF_FRAMES 200
35 #define NAME_BUFF_SIZE 100
44 frame_data[channels * j] = 10000 * ((j / 10 * i) % 2);
45 for (k = 1; k < channels; k++)
46 frame_data[channels * j + k] = frame_data[channels * j] * (k + 1);
114 int in_offset = 0, out_offset = 0;
118 int in_frame_bytes, out_frame_bytes;
160 if (in_frame_bytes > in_frame->
linesize[0]) {
164 memcpy(raw_in + in_offset, in_frame->
data[0], in_frame_bytes);
165 in_offset += in_frame_bytes;
181 if (result != enc_pkt.
size) {
182 av_log(
NULL,
AV_LOG_INFO,
"Decoder consumed only part of a packet, it is allowed to do so -- need to update this test\n");
201 if (out_frame_bytes > out_frame->
linesize[0]) {
205 memcpy(raw_out + out_offset, out_frame->
data[0], out_frame_bytes);
206 out_offset += out_frame_bytes;
212 if (memcmp(raw_in, raw_out, out_frame_bytes * NUMBER_OF_FRAMES) != 0) {
264 if (
init_encoder(enc, &enc_ctx, channel_layouts[cl], sample_rates[sr]) != 0)
266 if (
init_decoder(dec, &dec_ctx, channel_layouts[cl]) != 0)
268 if (
run_test(enc, dec, enc_ctx, dec_ctx) != 0)
This structure describes decoded (raw) audio or video data.
AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID.
static int run_test(AVCodec *enc, AVCodec *dec, AVCodecContext *enc_ctx, AVCodecContext *dec_ctx)
#define AV_CH_LAYOUT_SURROUND
attribute_deprecated int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of audio.
attribute_deprecated int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, const AVPacket *avpkt)
Decode the audio frame of size avpkt->size from avpkt->data into frame.
#define AV_CH_LAYOUT_STEREO
void avcodec_register_all(void)
Register all the codecs, parsers and bitstream filters which were enabled at configuration time...
enum AVSampleFormat sample_fmt
audio sample format
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
int avcodec_close(AVCodecContext *avctx)
Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext its...
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
enum AVSampleFormat request_sample_fmt
desired sample format
static const int sample_rates[]
uint64_t channel_layout
Audio channel layout.
uint64_t channel_layout
Channel layout of the audio data.
#define AV_CH_LAYOUT_STEREO_DOWNMIX
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
#define AV_CH_LAYOUT_5POINT1_BACK
#define FF_ARRAY_ELEMS(a)
void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout)
Return a description of a channel layout.
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int frame_size
Number of samples per channel in an audio frame.
#define AV_LOG_INFO
Standard information.
Libavcodec external API header.
int sample_rate
samples per second
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
static int close_encoder(AVCodecContext **enc_ctx)
main external API structure.
AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
static const uint16_t channel_layouts[7]
int av_frame_get_channels(const AVFrame *frame)
static int init_encoder(AVCodec *enc, AVCodecContext **enc_ctx, int64_t ch_layout, int sample_rate)
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
int av_frame_get_buffer(AVFrame *frame, int align)
Allocate new buffer(s) for audio or video data.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
common internal and external API header
static AVCodecContext * dec_ctx
void av_init_packet(AVPacket *pkt)
Initialize optional fields of a packet with default values.
#define AVERROR_UNKNOWN
Unknown error, typically from an external library.
static int generate_raw_frame(uint16_t *frame_data, int i, int sample_rate, int channels, int frame_size)
int channels
number of audio channels
static int close_decoder(AVCodecContext **dec_ctx)
static int init_decoder(AVCodec *dec, AVCodecContext **dec_ctx, int64_t ch_layout)
uint64_t request_channel_layout
Request decoder to use this channel layout if it can (0 for default)
This structure stores compressed data.
int nb_samples
number of audio samples (per channel) described by this frame