[FFmpeg-devel] [PATCHv2 4/4] lavc: add teletext decoder using libzvbi
Michael Niedermayer
michaelni at gmx.at
Mon Aug 5 02:49:03 CEST 2013
On Sun, Aug 04, 2013 at 06:37:47PM +0200, Marton Balint wrote:
> Based on a patch by Wolfram Gloger <wmglo at dent.med.uni-muenchen.de>.
> http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2012-December/136677.html
>
> The original patch was rebased by Tudor SUCIU <tudor.suciu at gmail.com>.
>
> Lots of additional features and fixes are made by me.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> Changelog | 1 +
> configure | 5 +
> libavcodec/Makefile | 1 +
> libavcodec/allcodecs.c | 1 +
> libavcodec/avcodec.h | 6 +
> libavcodec/teletextdec.c | 468 +++++++++++++++++++++++++++++++++++++++++++++++
> libavformat/mpegts.c | 8 +
> libavformat/version.h | 2 +-
> 8 files changed, 491 insertions(+), 1 deletion(-)
> create mode 100644 libavcodec/teletextdec.c
>
> diff --git a/Changelog b/Changelog
> index 48f93c7..0cbfffb 100644
> --- a/Changelog
> +++ b/Changelog
> @@ -8,6 +8,7 @@ version <next>
> - ffprobe -show_programs option
> - compand filter
> - RTMP seek support
> +- dvb teletext decoder
>
>
> version 2.0:
> diff --git a/configure b/configure
> index 539c581..0895b61 100755
> --- a/configure
> +++ b/configure
> @@ -241,6 +241,7 @@ External library support:
> --enable-libxvid enable Xvid encoding via xvidcore,
> native MPEG-4/Xvid encoder exists [no]
> --enable-libzmq enable message passing via libzmq [no]
> + --enable-libzvbi enable teletext support via libzvbi [no]
> --enable-openal enable OpenAL 1.1 capture support [no]
> --enable-opencl enable OpenCL code
> --enable-openssl enable openssl [no]
> @@ -1204,6 +1205,7 @@ EXTERNAL_LIBRARY_LIST="
> libxavs
> libxvid
> libzmq
> + libzvbi
> openal
> opencl
> openssl
> @@ -2031,6 +2033,7 @@ libxavs_encoder_deps="libxavs"
> libxvid_encoder_deps="libxvid"
> libutvideo_decoder_deps="libutvideo"
> libutvideo_encoder_deps="libutvideo"
> +teletext_decoder_deps="libzvbi"
>
> # demuxers / muxers
> ac3_demuxer_select="ac3_parser"
> @@ -4206,6 +4209,7 @@ enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &
> enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
> enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
> enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
> +enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi
> enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
> check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
> die "ERROR: openal not found"; } &&
> @@ -4596,6 +4600,7 @@ echo "threading support ${thread_type-no}"
> echo "safe bitstream reader ${safe_bitstream_reader-no}"
> echo "SDL support ${sdl-no}"
> echo "opencl enabled ${opencl-no}"
> +echo "libzvbi enabled ${libzvbi-no}"
> echo "texi2html enabled ${texi2html-no}"
> echo "perl enabled ${perl-no}"
> echo "pod2man enabled ${pod2man-no}"
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 31477ac..62fb250 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -719,6 +719,7 @@ OBJS-$(CONFIG_LIBWAVPACK_ENCODER) += libwavpackenc.o
> OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o
> OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o
> OBJS-$(CONFIG_LIBXVID_ENCODER) += libxvid.o
> +OBJS-$(CONFIG_TELETEXT_DECODER) += teletextdec.o
>
> # parsers
> OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \
> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
> index 5cdf778..daf5915 100644
> --- a/libavcodec/allcodecs.c
> +++ b/libavcodec/allcodecs.c
> @@ -470,6 +470,7 @@ void avcodec_register_all(void)
> REGISTER_ENCDEC (SUBRIP, subrip);
> REGISTER_DECODER(SUBVIEWER, subviewer);
> REGISTER_DECODER(SUBVIEWER1, subviewer1);
> + REGISTER_DECODER(TELETEXT, teletext);
> REGISTER_DECODER(TEXT, text);
> REGISTER_DECODER(VPLAYER, vplayer);
> REGISTER_DECODER(WEBVTT, webvtt);
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index ae6625f..0704639 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -1001,6 +1001,12 @@ enum AVPacketSideDataType {
> * follow the timestamp specifier of a WebVTT cue.
> */
> AV_PKT_DATA_WEBVTT_SETTINGS,
> +
> + /**
> + * PES header of the packet generated by the mpegts demuxer. Only set for
> + * dvb teletext subtitles. (libzvbi needs also the pes header for decoding)
> + */
> + AV_PKT_DATA_MPEGTS_PESHEADER,
why does libzvbi need the header ?
what if the stream comes from a non PES based container ?
like if someone transcodes mpeg->mkv/nut whatever and then tries to
play that
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130805/d807db46/attachment.asc>
More information about the ffmpeg-devel
mailing list