af_hdcd: support s16p (WavPack) directly
The buffer is already being copied anyway, so interlace the planar format during the copy and remove one use of auto-convert. Signed-off-by: Burt P <pburt0@gmail.com>
This commit is contained in:
@ -1665,10 +1665,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
|||||||
}
|
}
|
||||||
out->format = outlink->format; // is this needed?
|
out->format = outlink->format; // is this needed?
|
||||||
|
|
||||||
in_data = (int16_t*)in->data[0];
|
|
||||||
out_data = (int32_t*)out->data[0];
|
out_data = (int32_t*)out->data[0];
|
||||||
for (c = n = 0; n < in->nb_samples * in->channels; n++)
|
if (inlink->format == AV_SAMPLE_FMT_S16P) {
|
||||||
|
for (n = 0; n < in->nb_samples; n++)
|
||||||
|
for (c = 0; c < in->channels; c++) {
|
||||||
|
in_data = (int16_t*)in->extended_data[c];
|
||||||
|
out_data[(n * in->channels) + c] = in_data[n];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
in_data = (int16_t*)in->data[0];
|
||||||
|
for (n = 0; n < in->nb_samples * in->channels; n++)
|
||||||
out_data[n] = in_data[n];
|
out_data[n] = in_data[n];
|
||||||
|
}
|
||||||
|
|
||||||
if (s->process_stereo) {
|
if (s->process_stereo) {
|
||||||
hdcd_detect_start(&s->detect);
|
hdcd_detect_start(&s->detect);
|
||||||
@ -1707,6 +1715,7 @@ static int query_formats(AVFilterContext *ctx)
|
|||||||
|
|
||||||
static const enum AVSampleFormat sample_fmts_in[] = {
|
static const enum AVSampleFormat sample_fmts_in[] = {
|
||||||
AV_SAMPLE_FMT_S16,
|
AV_SAMPLE_FMT_S16,
|
||||||
|
AV_SAMPLE_FMT_S16P,
|
||||||
AV_SAMPLE_FMT_NONE
|
AV_SAMPLE_FMT_NONE
|
||||||
};
|
};
|
||||||
static const enum AVSampleFormat sample_fmts_out[] = {
|
static const enum AVSampleFormat sample_fmts_out[] = {
|
||||||
|
Reference in New Issue
Block a user