22 #include <shine/layer3.h>
31 #define BUFFER_SIZE (4096 * 20)
50 shine_set_config_mpeg_defaults(&s->
config.mpeg);
55 s->
config.wave.channels = avctx->
channels == 2 ? PCM_STEREO : PCM_MONO;
56 if (shine_check_config(s->
config.wave.samplerate, s->
config.mpeg.bitr) < 0) {
78 data = shine_encode_buffer(s->
shine, (int16_t **)frame->
data, &written);
80 data = shine_flush(s->
shine, &written);
103 len = hdr.frame_size;
104 if (len <= s->buffer_index) {
125 shine_close(s->
shine);
130 44100, 48000, 32000, 0
149 .wrapper_name =
"libshine",
void ff_af_queue_remove(AudioFrameQueue *afq, int nb_samples, int64_t *pts, int64_t *duration)
Remove frame(s) from the queue.
This structure describes decoded (raw) audio or video data.
ptrdiff_t const GLvoid * data
int64_t bit_rate
the average bitrate
static av_cold int init(AVCodecContext *avctx)
#define AV_CH_LAYOUT_STEREO
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data.
av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq)
Initialize AudioFrameQueue.
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
static av_cold int libshine_encode_close(AVCodecContext *avctx)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
preferred ID for decoding MPEG audio layer 1, 2 or 3
const char * name
Name of the codec implementation.
int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
Add a frame to the queue.
uint8_t buffer[BUFFER_SIZE]
static av_cold int libshine_encode_init(AVCodecContext *avctx)
int frame_size
Number of samples per channel in an audio frame.
Libavcodec external API header.
AVSampleFormat
Audio sample formats.
AVCodec ff_libshine_encoder
int sample_rate
samples per second
main external API structure.
#define AVERROR_BUG
Internal bug, also see AVERROR_BUG2.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
common internal api header.
static const int libshine_sample_rates[]
mpeg audio declarations for both encoder and decoder.
int channels
number of audio channels
void ff_af_queue_close(AudioFrameQueue *afq)
Close AudioFrameQueue.
static enum AVSampleFormat sample_fmts[]
static int libshine_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
#define AV_CH_LAYOUT_MONO
This structure stores compressed data.
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...