| @@ -23,35 +23,43 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "libavutil/mem.h" | #include "libavutil/mem.h" | ||||
| static AVBitStreamFilter *first_bitstream_filter= NULL; | |||||
| static AVBitStreamFilter *first_bitstream_filter = NULL; | |||||
| AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f){ | |||||
| if(f) return f->next; | |||||
| else return first_bitstream_filter; | |||||
| AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f) | |||||
| { | |||||
| if (f) | |||||
| return f->next; | |||||
| else | |||||
| return first_bitstream_filter; | |||||
| } | } | ||||
| void av_register_bitstream_filter(AVBitStreamFilter *bsf){ | |||||
| bsf->next = first_bitstream_filter; | |||||
| first_bitstream_filter= bsf; | |||||
| void av_register_bitstream_filter(AVBitStreamFilter *bsf) | |||||
| { | |||||
| bsf->next = first_bitstream_filter; | |||||
| first_bitstream_filter = bsf; | |||||
| } | } | ||||
| AVBitStreamFilterContext *av_bitstream_filter_init(const char *name){ | |||||
| AVBitStreamFilter *bsf= first_bitstream_filter; | |||||
| AVBitStreamFilterContext *av_bitstream_filter_init(const char *name) | |||||
| { | |||||
| AVBitStreamFilter *bsf = first_bitstream_filter; | |||||
| while(bsf){ | |||||
| if(!strcmp(name, bsf->name)){ | |||||
| AVBitStreamFilterContext *bsfc= av_mallocz(sizeof(AVBitStreamFilterContext)); | |||||
| bsfc->filter= bsf; | |||||
| bsfc->priv_data = bsf->priv_data_size ? av_mallocz(bsf->priv_data_size) : NULL; | |||||
| while (bsf) { | |||||
| if (!strcmp(name, bsf->name)) { | |||||
| AVBitStreamFilterContext *bsfc = | |||||
| av_mallocz(sizeof(AVBitStreamFilterContext)); | |||||
| bsfc->filter = bsf; | |||||
| bsfc->priv_data = | |||||
| bsf->priv_data_size ? av_mallocz(bsf->priv_data_size) : NULL; | |||||
| return bsfc; | return bsfc; | ||||
| } | } | ||||
| bsf= bsf->next; | |||||
| bsf = bsf->next; | |||||
| } | } | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc){ | |||||
| if(bsfc->filter->close) | |||||
| void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc) | |||||
| { | |||||
| if (bsfc->filter->close) | |||||
| bsfc->filter->close(bsfc); | bsfc->filter->close(bsfc); | ||||
| av_freep(&bsfc->priv_data); | av_freep(&bsfc->priv_data); | ||||
| av_parser_close(bsfc->parser); | av_parser_close(bsfc->parser); | ||||
| @@ -60,9 +68,11 @@ void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc){ | |||||
| int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, | int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, | ||||
| AVCodecContext *avctx, const char *args, | AVCodecContext *avctx, const char *args, | ||||
| uint8_t **poutbuf, int *poutbuf_size, | |||||
| const uint8_t *buf, int buf_size, int keyframe){ | |||||
| *poutbuf= (uint8_t *) buf; | |||||
| *poutbuf_size= buf_size; | |||||
| return bsfc->filter->filter(bsfc, avctx, args, poutbuf, poutbuf_size, buf, buf_size, keyframe); | |||||
| uint8_t **poutbuf, int *poutbuf_size, | |||||
| const uint8_t *buf, int buf_size, int keyframe) | |||||
| { | |||||
| *poutbuf = (uint8_t *)buf; | |||||
| *poutbuf_size = buf_size; | |||||
| return bsfc->filter->filter(bsfc, avctx, args, poutbuf, poutbuf_size, | |||||
| buf, buf_size, keyframe); | |||||
| } | } | ||||