|
|
|
@ -32,6 +32,8 @@ |
|
|
|
|
#include "formats.h" |
|
|
|
|
#include "internal.h" |
|
|
|
|
|
|
|
|
|
typedef void (*filter_func)(t_bs2bdp bs2bdp, uint8_t *sample, int n); |
|
|
|
|
|
|
|
|
|
typedef struct Bs2bContext { |
|
|
|
|
const AVClass *class; |
|
|
|
|
|
|
|
|
@ -41,7 +43,7 @@ typedef struct Bs2bContext { |
|
|
|
|
|
|
|
|
|
t_bs2bdp bs2bp; |
|
|
|
|
|
|
|
|
|
void (*filter)(t_bs2bdp bs2bdp, uint8_t *sample, int n); |
|
|
|
|
filter_func filter; |
|
|
|
|
} Bs2bContext; |
|
|
|
|
|
|
|
|
|
#define OFFSET(x) offsetof(Bs2bContext, x) |
|
|
|
@ -165,19 +167,19 @@ static int config_output(AVFilterLink *outlink) |
|
|
|
|
|
|
|
|
|
switch (inlink->format) { |
|
|
|
|
case AV_SAMPLE_FMT_U8: |
|
|
|
|
bs2b->filter = bs2b_cross_feed_u8; |
|
|
|
|
bs2b->filter = (filter_func) bs2b_cross_feed_u8; |
|
|
|
|
break; |
|
|
|
|
case AV_SAMPLE_FMT_S16: |
|
|
|
|
bs2b->filter = (void*)bs2b_cross_feed_s16; |
|
|
|
|
bs2b->filter = (filter_func) bs2b_cross_feed_s16; |
|
|
|
|
break; |
|
|
|
|
case AV_SAMPLE_FMT_S32: |
|
|
|
|
bs2b->filter = (void*)bs2b_cross_feed_s32; |
|
|
|
|
bs2b->filter = (filter_func) bs2b_cross_feed_s32; |
|
|
|
|
break; |
|
|
|
|
case AV_SAMPLE_FMT_FLT: |
|
|
|
|
bs2b->filter = (void*)bs2b_cross_feed_f; |
|
|
|
|
bs2b->filter = (filter_func) bs2b_cross_feed_f; |
|
|
|
|
break; |
|
|
|
|
case AV_SAMPLE_FMT_DBL: |
|
|
|
|
bs2b->filter = (void*)bs2b_cross_feed_d; |
|
|
|
|
bs2b->filter = (filter_func) bs2b_cross_feed_d; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
return AVERROR_BUG; |
|
|
|
|