Originally committed as revision 11659 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -337,10 +337,12 @@ OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o | |||||
| OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o | OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o | ||||
| OBJS-$(CONFIG_IMX_DUMP_HEADER_BSF) += imx_dump_header_bsf.o | OBJS-$(CONFIG_IMX_DUMP_HEADER_BSF) += imx_dump_header_bsf.o | ||||
| OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += mjpega_dump_header_bsf.o | OBJS-$(CONFIG_MJPEGA_DUMP_HEADER_BSF) += mjpega_dump_header_bsf.o | ||||
| OBJS-$(CONFIG_MOV2TEXTSUB_BSF) += movsub_bsf.o | |||||
| OBJS-$(CONFIG_MP3_HEADER_COMPRESS_BSF) += mp3_header_compress_bsf.o | OBJS-$(CONFIG_MP3_HEADER_COMPRESS_BSF) += mp3_header_compress_bsf.o | ||||
| OBJS-$(CONFIG_MP3_HEADER_DECOMPRESS_BSF) += mp3_header_decompress_bsf.o mpegaudiodata.o | OBJS-$(CONFIG_MP3_HEADER_DECOMPRESS_BSF) += mp3_header_decompress_bsf.o mpegaudiodata.o | ||||
| OBJS-$(CONFIG_NOISE_BSF) += noise_bsf.o | OBJS-$(CONFIG_NOISE_BSF) += noise_bsf.o | ||||
| OBJS-$(CONFIG_REMOVE_EXTRADATA_BSF) += remove_extradata_bsf.o | OBJS-$(CONFIG_REMOVE_EXTRADATA_BSF) += remove_extradata_bsf.o | ||||
| OBJS-$(CONFIG_TEXT2MOVSUB_BSF) += movsub_bsf.o | |||||
| OBJS-$(HAVE_BEOSTHREADS) += beosthread.o | OBJS-$(HAVE_BEOSTHREADS) += beosthread.o | ||||
| OBJS-$(HAVE_OS2THREADS) += os2thread.o | OBJS-$(HAVE_OS2THREADS) += os2thread.o | ||||
| @@ -305,7 +305,9 @@ void avcodec_register_all(void) | |||||
| REGISTER_BSF (MJPEGA_DUMP_HEADER, mjpega_dump_header); | REGISTER_BSF (MJPEGA_DUMP_HEADER, mjpega_dump_header); | ||||
| REGISTER_BSF (MP3_HEADER_COMPRESS, mp3_header_compress); | REGISTER_BSF (MP3_HEADER_COMPRESS, mp3_header_compress); | ||||
| REGISTER_BSF (MP3_HEADER_DECOMPRESS, mp3_header_decompress); | REGISTER_BSF (MP3_HEADER_DECOMPRESS, mp3_header_decompress); | ||||
| REGISTER_BSF (MOV2TEXTSUB, mov2textsub); | |||||
| REGISTER_BSF (NOISE, noise); | REGISTER_BSF (NOISE, noise); | ||||
| REGISTER_BSF (REMOVE_EXTRADATA, remove_extradata); | REGISTER_BSF (REMOVE_EXTRADATA, remove_extradata); | ||||
| REGISTER_BSF (TEXT2MOVSUB, text2movsub); | |||||
| } | } | ||||
| @@ -0,0 +1,55 @@ | |||||
| /* | |||||
| * Copyright (c) 2008 Reimar Döffinger | |||||
| * | |||||
| * This file is part of FFmpeg. | |||||
| * | |||||
| * FFmpeg is free software; you can redistribute it and/or | |||||
| * modify it under the terms of the GNU Lesser General Public | |||||
| * License as published by the Free Software Foundation; either | |||||
| * version 2.1 of the License, or (at your option) any later version. | |||||
| * | |||||
| * FFmpeg is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| * Lesser General Public License for more details. | |||||
| * | |||||
| * You should have received a copy of the GNU Lesser General Public | |||||
| * License along with FFmpeg; if not, write to the Free Software | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
| */ | |||||
| #include "avcodec.h" | |||||
| static int text2movsub(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, | |||||
| uint8_t **poutbuf, int *poutbuf_size, | |||||
| const uint8_t *buf, int buf_size, int keyframe){ | |||||
| if (buf_size > 0xffff) return 0; | |||||
| *poutbuf_size = buf_size + 2; | |||||
| *poutbuf = av_malloc(*poutbuf_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||||
| AV_WB16(*poutbuf, buf_size); | |||||
| memcpy(*poutbuf + 2, buf, buf_size); | |||||
| return 1; | |||||
| } | |||||
| AVBitStreamFilter text2movsub_bsf={ | |||||
| "text2movsub", | |||||
| 0, | |||||
| text2movsub, | |||||
| }; | |||||
| static int mov2textsub(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, | |||||
| uint8_t **poutbuf, int *poutbuf_size, | |||||
| const uint8_t *buf, int buf_size, int keyframe){ | |||||
| if (buf_size < 2) return 0; | |||||
| *poutbuf_size = FFMIN(buf_size - 2, AV_RB16(buf)); | |||||
| *poutbuf = av_malloc(*poutbuf_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||||
| memcpy(*poutbuf, buf + 2, *poutbuf_size); | |||||
| return 1; | |||||
| } | |||||
| AVBitStreamFilter mov2textsub_bsf={ | |||||
| "mov2textsub", | |||||
| 0, | |||||
| mov2textsub, | |||||
| }; | |||||