Lines Matching refs:frame

24 #include "libavutil/frame.h"
111 * Pad last frame with silence.
113 static int pad_last_frame(AVCodecContext *s, AVFrame *frame, const AVFrame *src)
117 frame->format = src->format;
118 frame->nb_samples = s->frame_size;
119 ret = av_channel_layout_copy(&frame->ch_layout, &s->ch_layout);
122 ret = av_frame_get_buffer(frame, 0);
126 ret = av_frame_copy_props(frame, src);
130 if ((ret = av_samples_copy(frame->extended_data, src->extended_data, 0, 0,
134 if ((ret = av_samples_set_silence(frame->extended_data, src->nb_samples,
135 frame->nb_samples - src->nb_samples,
142 av_frame_unref(frame);
160 int ff_encode_get_frame(AVCodecContext *avctx, AVFrame *frame)
170 av_frame_move_ref(frame, avci->buffer_frame);
178 AVFrame *frame = avci->in_frame;
186 if (!frame->buf[0] && !avci->draining) {
187 av_frame_unref(frame);
188 ret = ff_encode_get_frame(avctx, frame);
193 if (!frame->buf[0]) {
198 // Flushing is signaled with a NULL frame
199 frame = NULL;
208 /* This might modify frame, but it doesn't matter, because
209 * the frame properties used below are not used for video
210 * (due to the delay inherent in frame threaded encoding, it makes
211 * no sense to use the properties of the current frame anyway). */
212 ret = ff_thread_video_encode_frame(avctx, avpkt, frame, &got_packet);
214 ret = codec->cb.encode(avctx, avpkt, frame, &got_packet);
217 avpkt->pts = avpkt->dts = frame->pts;
231 if (frame && !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY)) {
234 avpkt->pts = frame->pts;
237 frame->nb_samples);
253 if (frame)
254 av_frame_unref(frame);
323 /* check for valid frame size */
326 av_log(avctx, AV_LOG_ERROR, "more samples than frame size\n");
330 /* if we already got an undersized frame, that must have been the last */
332 av_log(avctx, AV_LOG_ERROR, "frame_size (%d) was not respected for a non-last frame\n", avctx->frame_size);
357 int attribute_align_arg avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame)
371 if (!frame) {
374 ret = encode_send_frame_internal(avctx, frame);
600 int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame)
606 frame->format = avctx->pix_fmt;
607 if (frame->width <= 0 || frame->height <= 0) {
608 frame->width = FFMAX(avctx->width, avctx->coded_width);
609 frame->height = FFMAX(avctx->height, avctx->coded_height);
614 frame->sample_rate = avctx->sample_rate;
615 frame->format = avctx->sample_fmt;
616 if (!frame->ch_layout.nb_channels) {
617 ret = av_channel_layout_copy(&frame->ch_layout, &avctx->ch_layout);
624 ret = avcodec_default_get_buffer2(avctx, frame, 0);
627 av_frame_unref(frame);