History

lavfi: prefer nb_samples over size in AVFilterBufferRefAudioProps

Remove AVFilterBufferRefAudioProps.size, and use nb_samples in avfilter_get_audio_buffer() and avfilter_default_get_audio_buffer() in place of size. This is required as the size in the audio buffer may be aligned, so it may not contain a well defined number of samples.

Stefano Sabatini committed 15 years ago

Commit 95a02421 parent 0bc2cca4 files · +24 −20Browse files

Showing the changes to libavfilter/avfilter.c (1 of 4 files). Show all

Unified · Split

libavfilter/avfilter.c+8−7
@@ -305,10 +305,9 @@ static void ff_dlog_ref(void *ctx, AVFilterBufferRef *ref, int end) · 304 unmodified lines
305305 av_get_picture_type_char(ref->video->pict_type));
306306 }
307307 if (ref->audio) {
308− av_dlog(ctx, " cl:%"PRId64"d sn:%d s:%d sr:%d p:%d",
308+ av_dlog(ctx, " cl:%"PRId64"d n:%d r:%d p:%d",
309309 ref->audio->channel_layout,
310310 ref->audio->nb_samples,
311− ref->audio->size,
312311 ref->audio->sample_rate,
313312 ref->audio->planar);
314313 }
@@ -405,16 +404,16 @@ fail: · 90 unmodified lines
405404 }
406405
407406 AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms,
408− enum AVSampleFormat sample_fmt, int size,
407+ enum AVSampleFormat sample_fmt, int nb_samples,
409408 int64_t channel_layout, int planar)
410409 {
411410 AVFilterBufferRef *ret = NULL;
412411
413412 if (link->dstpad->get_audio_buffer)
414− ret = link->dstpad->get_audio_buffer(link, perms, sample_fmt, size, channel_layout, planar);
413+ ret = link->dstpad->get_audio_buffer(link, perms, sample_fmt, nb_samples, channel_layout, planar);
415414
416415 if (!ret)
417− ret = avfilter_default_get_audio_buffer(link, perms, sample_fmt, size, channel_layout, planar);
416+ ret = avfilter_default_get_audio_buffer(link, perms, sample_fmt, nb_samples, channel_layout, planar);
418417
419418 if (ret)
420419 ret->type = AVMEDIA_TYPE_AUDIO;
@@ -545,6 +544,7 @@ void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) · 124 unmodified lines
545544 {
546545 void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *);
547546 AVFilterPad *dst = link->dstpad;
547+ int i;
548548
549549 FF_DPRINTF_START(NULL, filter_samples); ff_dlog_link(NULL, link, 1);
550550
@@ -561,14 +561,15 @@ void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) · 10 unmodified lines
561561
562562 link->cur_buf = avfilter_default_get_audio_buffer(link, dst->min_perms,
563563 samplesref->format,
564− samplesref->audio->size,
564+ samplesref->audio->nb_samples,
565565 samplesref->audio->channel_layout,
566566 samplesref->audio->planar);
567567 link->cur_buf->pts = samplesref->pts;
568568 link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
569569
570570 /* Copy actual data into new samples buffer */
571− memcpy(link->cur_buf->data[0], samplesref->data[0], samplesref->audio->size);
571+ for (i = 0; samplesref->data[i]; i++)
572+ memcpy(link->cur_buf->data[i], samplesref->data[i], samplesref->linesize[0]);
572573
573574 avfilter_unref_buffer(samplesref);
574575 } else

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t