Lines Matching defs:avctx

51 static av_cold int libcodec2_init_common(AVCodecContext *avctx, int mode)
53 LibCodec2Context *c2 = avctx->priv_data;
64 avctx->frame_size = codec2_samples_per_frame(c2->codec);
65 avctx->block_align = (codec2_bits_per_frame(c2->codec) + 7) / 8;
67 if (avctx->frame_size <= 0 || avctx->block_align <= 0) {
80 av_log(avctx, AV_LOG_ERROR,
86 static av_cold int libcodec2_init_decoder(AVCodecContext *avctx)
88 avctx->sample_rate = 8000;
89 avctx->sample_fmt = AV_SAMPLE_FMT_S16;
90 av_channel_layout_uninit(&avctx->ch_layout);
91 avctx->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO;
93 if (avctx->extradata_size != CODEC2_EXTRADATA_SIZE) {
94 av_log(avctx, AV_LOG_ERROR, "must have exactly %i bytes of extradata (got %i)\n",
95 CODEC2_EXTRADATA_SIZE, avctx->extradata_size);
99 return libcodec2_init_common(avctx, codec2_mode_from_extradata(avctx->extradata));
102 static av_cold int libcodec2_init_encoder(AVCodecContext *avctx)
104 LibCodec2Context *c2 = avctx->priv_data;
107 if (avctx->sample_rate != 8000 ||
108 avctx->ch_layout.nb_channels != 1 ||
109 avctx->sample_fmt != AV_SAMPLE_FMT_S16) {
110 av_log(avctx, AV_LOG_ERROR, "only 8 kHz 16-bit mono allowed\n");
114 avctx->extradata = av_mallocz(CODEC2_EXTRADATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE);
115 if (!avctx->extradata) {
119 avctx->extradata_size = CODEC2_EXTRADATA_SIZE;
120 codec2_make_extradata(avctx->extradata, c2->mode);
122 return libcodec2_init_common(avctx, c2->mode);
125 static av_cold int libcodec2_close(AVCodecContext *avctx)
127 LibCodec2Context *c2 = avctx->priv_data;
133 static int libcodec2_decode(AVCodecContext *avctx, AVFrame *frame,
136 LibCodec2Context *c2 = avctx->priv_data;
141 nframes = pkt->size / avctx->block_align;
142 frame->nb_samples = avctx->frame_size * nframes;
144 ret = ff_get_buffer(avctx, frame, 0);
154 input += avctx->block_align;
155 output += avctx->frame_size;
159 return nframes * avctx->block_align;
162 static int libcodec2_encode(AVCodecContext *avctx, AVPacket *avpkt,
165 LibCodec2Context *c2 = avctx->priv_data;
168 int ret = ff_get_encode_buffer(avctx, avpkt, avctx->block_align, 0);