diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-04-09 20:40:24 +0200 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-04-09 20:40:24 +0200 |
commit | 1836b8ffe31f393d256c8021aaf7a2308561a0c2 (patch) | |
tree | 6a80efd3b4ed8a29d55a7b331a43ac7bd5ed4855 /contrib/ffmpeg/libavformat/crc.c | |
parent | a89f36b0b3e9008cd7f8378e4fa40a3c37d7a23e (diff) | |
parent | 199dc87abe65001f7ef9ec56bca7c3d80af39bcf (diff) | |
download | xine-lib-1836b8ffe31f393d256c8021aaf7a2308561a0c2.tar.gz xine-lib-1836b8ffe31f393d256c8021aaf7a2308561a0c2.tar.bz2 |
Merge the FFmpeg integration branch into the nopadding branch.
Diffstat (limited to 'contrib/ffmpeg/libavformat/crc.c')
-rw-r--r-- | contrib/ffmpeg/libavformat/crc.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/contrib/ffmpeg/libavformat/crc.c b/contrib/ffmpeg/libavformat/crc.c new file mode 100644 index 000000000..bdbe8bcff --- /dev/null +++ b/contrib/ffmpeg/libavformat/crc.c @@ -0,0 +1,98 @@ +/* + * CRC decoder (for codec/format testing) + * Copyright (c) 2002 Fabrice Bellard. + * + * 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 "avformat.h" +#include "adler32.h" + +#ifdef CONFIG_CRC_MUXER +typedef struct CRCState { + uint32_t crcval; +} CRCState; + +static int crc_write_header(struct AVFormatContext *s) +{ + CRCState *crc = s->priv_data; + + /* init CRC */ + crc->crcval = 1; + + return 0; +} + +static int crc_write_packet(struct AVFormatContext *s, AVPacket *pkt) +{ + CRCState *crc = s->priv_data; + crc->crcval = av_adler32_update(crc->crcval, pkt->data, pkt->size); + return 0; +} + +static int crc_write_trailer(struct AVFormatContext *s) +{ + CRCState *crc = s->priv_data; + char buf[64]; + + snprintf(buf, sizeof(buf), "CRC=0x%08x\n", crc->crcval); + put_buffer(&s->pb, buf, strlen(buf)); + put_flush_packet(&s->pb); + return 0; +} +#endif + +#ifdef CONFIG_FRAMECRC_MUXER +static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) +{ + uint32_t crc = av_adler32_update(0, pkt->data, pkt->size); + char buf[256]; + + snprintf(buf, sizeof(buf), "%d, %"PRId64", %d, 0x%08x\n", pkt->stream_index, pkt->dts, pkt->size, crc); + put_buffer(&s->pb, buf, strlen(buf)); + put_flush_packet(&s->pb); + return 0; +} +#endif + +#ifdef CONFIG_CRC_MUXER +AVOutputFormat crc_muxer = { + "crc", + "crc testing format", + NULL, + "", + sizeof(CRCState), + CODEC_ID_PCM_S16LE, + CODEC_ID_RAWVIDEO, + crc_write_header, + crc_write_packet, + crc_write_trailer, +}; +#endif +#ifdef CONFIG_FRAMECRC_MUXER +AVOutputFormat framecrc_muxer = { + "framecrc", + "framecrc testing format", + NULL, + "", + 0, + CODEC_ID_PCM_S16LE, + CODEC_ID_RAWVIDEO, + NULL, + framecrc_write_packet, + NULL, +}; +#endif |