Lines Matching defs:frame

26 #include "libavutil/frame.h"
84 static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame)
92 int planar = av_sample_fmt_is_planar(frame->format);
93 ch = frame->ch_layout.nb_channels;
97 ch = frame->channels;
103 if (pool && pool->format == frame->format) {
105 pool->width == frame->width && pool->height == frame->height)
108 pool->channels == ch && frame->nb_samples == pool->samples)
120 int w = frame->width;
121 int h = frame->height;
165 pool->format = frame->format;
166 pool->width = frame->width;
167 pool->height = frame->height;
173 frame->nb_samples, frame->format, 0);
183 pool->format = frame->format;
186 pool->samples = frame->nb_samples;
201 static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame)
207 frame->linesize[0] = pool->linesize[0];
210 frame->extended_data = av_calloc(planes, sizeof(*frame->extended_data));
211 frame->nb_extended_buf = planes - AV_NUM_DATA_POINTERS;
212 frame->extended_buf = av_calloc(frame->nb_extended_buf,
213 sizeof(*frame->extended_buf));
214 if (!frame->extended_data || !frame->extended_buf) {
215 av_freep(&frame->extended_data);
216 av_freep(&frame->extended_buf);
220 frame->extended_data = frame->data;
221 av_assert0(frame->nb_extended_buf == 0);
225 frame->buf[i] = av_buffer_pool_get(pool->pools[0]);
226 if (!frame->buf[i])
228 frame->extended_data[i] = frame->data[i] = frame->buf[i]->data;
230 for (i = 0; i < frame->nb_extended_buf; i++) {
231 frame->extended_buf[i] = av_buffer_pool_get(pool->pools[0]);
232 if (!frame->extended_buf[i])
234 frame->extended_data[i + AV_NUM_DATA_POINTERS] = frame->extended_buf[i]->data;
238 av_log(avctx, AV_LOG_DEBUG, "default_get_buffer called on frame %p", frame);
242 av_frame_unref(frame);
290 int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags)
295 ret = av_hwframe_get_buffer(avctx->hw_frames_ctx, frame, 0);
296 frame->width = avctx->coded_width;
297 frame->height = avctx->coded_height;
301 if ((ret = update_frame_pool(avctx, frame)) < 0)
306 return video_get_buffer(avctx, frame);
308 return audio_get_buffer(avctx, frame);