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
305 av_get_picture_type_char(ref->video->pict_type));305 av_get_picture_type_char(ref->video->pict_type));
306 }306 }
307 if (ref->audio) {307 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",
309 ref->audio->channel_layout,309 ref->audio->channel_layout,
310 ref->audio->nb_samples,310 ref->audio->nb_samples,
311 ref->audio->size,
312 ref->audio->sample_rate,311 ref->audio->sample_rate,
313 ref->audio->planar);312 ref->audio->planar);
314 }313 }
@@ -405,16 +404,16 @@ fail: · 90 unmodified lines
405}404}
406 405
407AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms,406AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms,
408 enum AVSampleFormat sample_fmt, int size,407 enum AVSampleFormat sample_fmt, int nb_samples,
409 int64_t channel_layout, int planar)408 int64_t channel_layout, int planar)
410{409{
411 AVFilterBufferRef *ret = NULL;410 AVFilterBufferRef *ret = NULL;
412 411
413 if (link->dstpad->get_audio_buffer)412 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);
415 414
416 if (!ret)415 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);
418 417
419 if (ret)418 if (ret)
420 ret->type = AVMEDIA_TYPE_AUDIO;419 ret->type = AVMEDIA_TYPE_AUDIO;
@@ -545,6 +544,7 @@ void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) · 124 unmodified lines
545{544{
546 void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *);545 void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *);
547 AVFilterPad *dst = link->dstpad;546 AVFilterPad *dst = link->dstpad;
547 int i;
548 548
549 FF_DPRINTF_START(NULL, filter_samples); ff_dlog_link(NULL, link, 1);549 FF_DPRINTF_START(NULL, filter_samples); ff_dlog_link(NULL, link, 1);
550 550
@@ -561,14 +561,15 @@ void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) · 10 unmodified lines
561 561
562 link->cur_buf = avfilter_default_get_audio_buffer(link, dst->min_perms,562 link->cur_buf = avfilter_default_get_audio_buffer(link, dst->min_perms,
563 samplesref->format,563 samplesref->format,
564 samplesref->audio->size,564 samplesref->audio->nb_samples,
565 samplesref->audio->channel_layout,565 samplesref->audio->channel_layout,
566 samplesref->audio->planar);566 samplesref->audio->planar);
567 link->cur_buf->pts = samplesref->pts;567 link->cur_buf->pts = samplesref->pts;
568 link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;568 link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
569 569
570 /* Copy actual data into new samples buffer */570 /* 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]);
572 573
573 avfilter_unref_buffer(samplesref);574 avfilter_unref_buffer(samplesref);
574 } else575 } 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