From 67a5daf07f8759480a1253638fcb548318fd8dd9 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Wed, 23 May 2007 14:55:13 +0000 Subject: [PATCH] Remove duplicate bytestream functions Originally committed as revision 9108 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/adx.c | 38 ++++++++++-------------------- libavcodec/dvbsub.c | 46 +++++++++++++++---------------------- libavcodec/dvdsubenc.c | 25 ++++++++------------ libavcodec/png.c | 52 ++++++++++++------------------------------ libavcodec/roqvideo.c | 11 ++++----- 5 files changed, 59 insertions(+), 113 deletions(-) diff --git a/libavcodec/adx.c b/libavcodec/adx.c index b449c91247..4ea8929bc1 100644 --- a/libavcodec/adx.c +++ b/libavcodec/adx.c @@ -86,8 +86,7 @@ static void adx_encode(unsigned char *adx,const short *wav,PREV *prev) if (scale==0) scale=1; - adx[0] = scale>>8; - adx[1] = scale; + AV_WB16(adx, scale); for(i=0;i<16;i++) { adx[i+2] = ((data[i*2]/scale)<<4) | ((data[i*2+1]/scale)&0xf); @@ -97,7 +96,7 @@ static void adx_encode(unsigned char *adx,const short *wav,PREV *prev) static void adx_decode(short *out,const unsigned char *in,PREV *prev) { - int scale = ((in[0]<<8)|(in[1])); + int scale = AV_RB16(in); int i; int s0,s1,s2,d; @@ -145,14 +144,6 @@ static void adx_decode_stereo(short *out,const unsigned char *in,PREV *prev) #ifdef CONFIG_ENCODERS -static void write_long(unsigned char *p,uint32_t v) -{ - p[0] = v>>24; - p[1] = v>>16; - p[2] = v>>8; - p[3] = v; -} - static int adx_encode_header(AVCodecContext *avctx,unsigned char *buf,size_t bufsize) { #if 0 @@ -178,13 +169,13 @@ static int adx_encode_header(AVCodecContext *avctx,unsigned char *buf,size_t buf } adxhdr; /* big endian */ /* offset-6 "(c)CRI" */ #endif - write_long(buf+0x00,0x80000000|0x20); - write_long(buf+0x04,0x03120400|avctx->channels); - write_long(buf+0x08,avctx->sample_rate); - write_long(buf+0x0c,0); /* FIXME: set after */ - write_long(buf+0x10,0x01040300); - write_long(buf+0x14,0x00000000); - write_long(buf+0x18,0x00000000); + AV_WB32(buf+0x00,0x80000000|0x20); + AV_WB32(buf+0x04,0x03120400|avctx->channels); + AV_WB32(buf+0x08,avctx->sample_rate); + AV_WB32(buf+0x0c,0); /* FIXME: set after */ + AV_WB32(buf+0x10,0x01040300); + AV_WB32(buf+0x14,0x00000000); + AV_WB32(buf+0x18,0x00000000); memcpy(buf+0x1c,"\0\0(c)CRI",8); return 0x20+4; } @@ -264,17 +255,12 @@ static int adx_encode_frame(AVCodecContext *avctx, #endif //CONFIG_ENCODERS -static uint32_t read_long(const unsigned char *p) -{ - return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3]; -} - static int is_adx(const unsigned char *buf,size_t bufsize) { int offset; if (buf[0]!=0x80) return 0; - offset = (read_long(buf)^0x80000000)+4; + offset = (AV_RB32(buf)^0x80000000)+4; if (bufsize> (SCALEBITS + shift)) + 128) -static inline void putbe16(uint8_t **pq, uint16_t v) -{ - uint8_t *q; - q = *pq; - *q++ = v >> 8; - *q++ = v; - *pq = q; -} - static int encode_dvb_subtitles(DVBSubtitleContext *s, uint8_t *outbuf, AVSubtitle *h) { @@ -237,7 +229,7 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, *q++ = 0x0f; /* sync_byte */ *q++ = 0x10; /* segment_type */ - putbe16(&q, page_id); + bytestream_put_be16(&q, page_id); pseg_len = q; q += 2; /* segment length */ *q++ = 30; /* page_timeout (seconds) */ @@ -251,11 +243,11 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, for (region_id = 0; region_id < h->num_rects; region_id++) { *q++ = region_id; *q++ = 0xff; /* reserved */ - putbe16(&q, h->rects[region_id].x); /* left pos */ - putbe16(&q, h->rects[region_id].y); /* top pos */ + bytestream_put_be16(&q, h->rects[region_id].x); /* left pos */ + bytestream_put_be16(&q, h->rects[region_id].y); /* top pos */ } - putbe16(&pseg_len, q - pseg_len - 2); + bytestream_put_be16(&pseg_len, q - pseg_len - 2); if (!s->hide_state) { for (clut_id = 0; clut_id < h->num_rects; clut_id++) { @@ -274,7 +266,7 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, *q++ = 0x0f; /* sync byte */ *q++ = 0x12; /* CLUT definition segment */ - putbe16(&q, page_id); + bytestream_put_be16(&q, page_id); pseg_len = q; q += 2; /* segment length */ *q++ = clut_id; @@ -297,7 +289,7 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, } } - putbe16(&pseg_len, q - pseg_len - 2); + bytestream_put_be16(&pseg_len, q - pseg_len - 2); } } @@ -317,27 +309,27 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, *q++ = 0x0f; /* sync_byte */ *q++ = 0x11; /* segment_type */ - putbe16(&q, page_id); + bytestream_put_be16(&q, page_id); pseg_len = q; q += 2; /* segment length */ *q++ = region_id; *q++ = (s->object_version << 4) | (0 << 3) | 0x07; /* version , no fill */ - putbe16(&q, h->rects[region_id].w); /* region width */ - putbe16(&q, h->rects[region_id].h); /* region height */ + bytestream_put_be16(&q, h->rects[region_id].w); /* region width */ + bytestream_put_be16(&q, h->rects[region_id].h); /* region height */ *q++ = ((1 + bpp_index) << 5) | ((1 + bpp_index) << 2) | 0x03; *q++ = region_id; /* clut_id == region_id */ *q++ = 0; /* 8 bit fill colors */ *q++ = 0x03; /* 4 bit and 2 bit fill colors */ if (!s->hide_state) { - putbe16(&q, region_id); /* object_id == region_id */ + bytestream_put_be16(&q, region_id); /* object_id == region_id */ *q++ = (0 << 6) | (0 << 4); *q++ = 0; *q++ = 0xf0; *q++ = 0; } - putbe16(&pseg_len, q - pseg_len - 2); + bytestream_put_be16(&pseg_len, q - pseg_len - 2); } if (!s->hide_state) { @@ -357,11 +349,11 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, *q++ = 0x0f; /* sync byte */ *q++ = 0x13; - putbe16(&q, page_id); + bytestream_put_be16(&q, page_id); pseg_len = q; q += 2; /* segment length */ - putbe16(&q, object_id); + bytestream_put_be16(&q, object_id); *q++ = (s->object_version << 4) | (0 << 2) | (0 << 1) | 1; /* version = 0, onject_coding_method, non_modifying_color_flag */ @@ -388,11 +380,11 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, h->rects[object_id].w * 2, h->rects[object_id].w, h->rects[object_id].h >> 1); - putbe16(&ptop_field_len, bottom_ptr - top_ptr); - putbe16(&pbottom_field_len, q - bottom_ptr); + bytestream_put_be16(&ptop_field_len, bottom_ptr - top_ptr); + bytestream_put_be16(&pbottom_field_len, q - bottom_ptr); } - putbe16(&pseg_len, q - pseg_len - 2); + bytestream_put_be16(&pseg_len, q - pseg_len - 2); } } @@ -400,11 +392,11 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, *q++ = 0x0f; /* sync_byte */ *q++ = 0x80; /* segment_type */ - putbe16(&q, page_id); + bytestream_put_be16(&q, page_id); pseg_len = q; q += 2; /* segment length */ - putbe16(&pseg_len, q - pseg_len - 2); + bytestream_put_be16(&pseg_len, q - pseg_len - 2); *q++ = 0xff; /* end of PES data */ diff --git a/libavcodec/dvdsubenc.c b/libavcodec/dvdsubenc.c index fac29acc2c..c85cc924ab 100644 --- a/libavcodec/dvdsubenc.c +++ b/libavcodec/dvdsubenc.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" +#include "bytestream.h" #undef NDEBUG #include @@ -85,14 +86,6 @@ static void dvd_encode_rle(uint8_t **pq, *pq = q; } -static inline void putbe16(uint8_t **pq, uint16_t v) -{ - uint8_t *q = *pq; - *q++ = v >> 8; - *q++ = v; - *pq = q; -} - static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, const AVSubtitle *h) { @@ -163,11 +156,11 @@ static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, // set data packet size qq = outbuf + 2; - putbe16(&qq, q - outbuf); + bytestream_put_be16(&qq, q - outbuf); // send start display command - putbe16(&q, (h->start_display_time*90) >> 10); - putbe16(&q, (q - outbuf) /*- 2 */ + 8 + 12*rects + 2); + bytestream_put_be16(&q, (h->start_display_time*90) >> 10); + bytestream_put_be16(&q, (q - outbuf) /*- 2 */ + 8 + 12*rects + 2); *q++ = 0x03; // palette - 4 nibbles *q++ = 0x03; *q++ = 0x7f; *q++ = 0x04; // alpha - 4 nibbles @@ -192,20 +185,20 @@ static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, *q++ = 0x06; // offset1, offset2 - putbe16(&q, offset1[object_id]); - putbe16(&q, offset2[object_id]); + bytestream_put_be16(&q, offset1[object_id]); + bytestream_put_be16(&q, offset2[object_id]); } *q++ = 0x01; // start command *q++ = 0xff; // terminating command // send stop display command last - putbe16(&q, (h->end_display_time*90) >> 10); - putbe16(&q, (q - outbuf) - 2 /*+ 4*/); + bytestream_put_be16(&q, (h->end_display_time*90) >> 10); + bytestream_put_be16(&q, (q - outbuf) - 2 /*+ 4*/); *q++ = 0x02; // set end *q++ = 0xff; // terminating command qq = outbuf; - putbe16(&qq, q - outbuf); + bytestream_put_be16(&qq, q - outbuf); av_log(NULL, AV_LOG_DEBUG, "subtitle_packet size=%td\n", q - outbuf); return q - outbuf; diff --git a/libavcodec/png.c b/libavcodec/png.c index 05b4512b7c..72c0e81f0b 100644 --- a/libavcodec/png.c +++ b/libavcodec/png.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avcodec.h" +#include "bytestream.h" /* TODO: * - add 2, 4 and 16 bit depth support @@ -86,20 +87,6 @@ typedef struct PNGContext { uint8_t buf[IOBUF_SIZE]; } PNGContext; -static unsigned int get32(uint8_t **b){ - (*b) += 4; - return ((*b)[-4]<<24) + ((*b)[-3]<<16) + ((*b)[-2]<<8) + (*b)[-1]; -} - -#ifdef CONFIG_ENCODERS -static void put32(uint8_t **b, unsigned int v){ - *(*b)++= v>>24; - *(*b)++= v>>16; - *(*b)++= v>>8; - *(*b)++= v; -} -#endif - static const uint8_t pngsig[8] = {137, 80, 78, 71, 13, 10, 26, 10}; /* Mask to determine which y pixels are valid in a pass */ @@ -509,10 +496,10 @@ static int decode_frame(AVCodecContext *avctx, int tag32; if (s->bytestream >= s->bytestream_end) goto fail; - length = get32(&s->bytestream); + length = bytestream_get_be32(&s->bytestream); if (length > 0x7fffffff) goto fail; - tag32 = get32(&s->bytestream); + tag32 = bytestream_get_be32(&s->bytestream); tag = bswap_32(tag32); #ifdef DEBUG av_log(avctx, AV_LOG_DEBUG, "png: tag=%c%c%c%c length=%u\n", @@ -525,8 +512,8 @@ static int decode_frame(AVCodecContext *avctx, case MKTAG('I', 'H', 'D', 'R'): if (length != 13) goto fail; - s->width = get32(&s->bytestream); - s->height = get32(&s->bytestream); + s->width = bytestream_get_be32(&s->bytestream); + s->height = bytestream_get_be32(&s->bytestream); if(avcodec_check_dimensions(avctx, s->width, s->height)){ s->width= s->height= 0; goto fail; @@ -536,7 +523,7 @@ static int decode_frame(AVCodecContext *avctx, s->compression_type = *s->bytestream++; s->filter_type = *s->bytestream++; s->interlace_type = *s->bytestream++; - crc = get32(&s->bytestream); + crc = bytestream_get_be32(&s->bytestream); s->state |= PNG_IHDR; #ifdef DEBUG av_log(avctx, AV_LOG_DEBUG, "width=%d height=%d depth=%d color_type=%d compression_type=%d filter_type=%d interlace_type=%d\n", @@ -629,7 +616,7 @@ static int decode_frame(AVCodecContext *avctx, if (png_decode_idat(s, length) < 0) goto fail; /* skip crc */ - crc = get32(&s->bytestream); + crc = bytestream_get_be32(&s->bytestream); break; case MKTAG('P', 'L', 'T', 'E'): { @@ -649,7 +636,7 @@ static int decode_frame(AVCodecContext *avctx, s->palette[i] = (0xff << 24); } s->state |= PNG_PLTE; - crc = get32(&s->bytestream); + crc = bytestream_get_be32(&s->bytestream); } break; case MKTAG('t', 'R', 'N', 'S'): @@ -665,13 +652,13 @@ static int decode_frame(AVCodecContext *avctx, v = *s->bytestream++; s->palette[i] = (s->palette[i] & 0x00ffffff) | (v << 24); } - crc = get32(&s->bytestream); + crc = bytestream_get_be32(&s->bytestream); } break; case MKTAG('I', 'E', 'N', 'D'): if (!(s->state & PNG_ALLIMAGE)) goto fail; - crc = get32(&s->bytestream); + crc = bytestream_get_be32(&s->bytestream); goto exit_loop; default: /* skip tag */ @@ -704,29 +691,20 @@ static void png_write_chunk(uint8_t **f, uint32_t tag, uint32_t crc; uint8_t tagbuf[4]; - put32(f, length); + bytestream_put_be32(f, length); crc = crc32(0, Z_NULL, 0); tagbuf[0] = tag; tagbuf[1] = tag >> 8; tagbuf[2] = tag >> 16; tagbuf[3] = tag >> 24; crc = crc32(crc, tagbuf, 4); - put32(f, bswap_32(tag)); + bytestream_put_be32(f, bswap_32(tag)); if (length > 0) { crc = crc32(crc, buf, length); memcpy(*f, buf, length); *f += length; } - put32(f, crc); -} - -/* XXX: use avcodec generic function ? */ -static void to_be32(uint8_t *p, uint32_t v) -{ - p[0] = v >> 24; - p[1] = v >> 16; - p[2] = v >> 8; - p[3] = v; + bytestream_put_be32(f, crc); } /* XXX: do filtering */ @@ -828,8 +806,8 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, memcpy(s->bytestream, pngsig, 8); s->bytestream += 8; - to_be32(s->buf, avctx->width); - to_be32(s->buf + 4, avctx->height); + AV_WB32(s->buf, avctx->width); + AV_WB32(s->buf + 4, avctx->height); s->buf[8] = bit_depth; s->buf[9] = color_type; s->buf[10] = 0; /* compression type */ diff --git a/libavcodec/roqvideo.c b/libavcodec/roqvideo.c index c7db30301c..784ebb0a48 100644 --- a/libavcodec/roqvideo.c +++ b/libavcodec/roqvideo.c @@ -32,6 +32,7 @@ #include #include "avcodec.h" +#include "bytestream.h" #include "dsputil.h" typedef struct { @@ -77,10 +78,6 @@ typedef struct RoqContext { #define RoQ_ID_CCC 0x03 #define get_byte(in_buffer) *(in_buffer++) -#define get_word(in_buffer) ((unsigned short)(in_buffer += 2, \ - (in_buffer[-1] << 8 | in_buffer[-2]))) -#define get_long(in_buffer) ((unsigned long)(in_buffer += 4, \ - (in_buffer[-1] << 24 | in_buffer[-2] << 16 | in_buffer[-3] << 8 | in_buffer[-4]))) static void apply_vector_2x2(RoqContext *ri, int x, int y, roq_cell *cell) @@ -293,9 +290,9 @@ static void roqvideo_decode_frame(RoqContext *ri) unsigned char *buf_end = ri->buf + ri->size; while (buf < buf_end) { - chunk_id = get_word(buf); - chunk_size = get_long(buf); - chunk_arg = get_word(buf); + chunk_id = bytestream_get_le16(&buf); + chunk_size = bytestream_get_le32(&buf); + chunk_arg = bytestream_get_le16(&buf); if(chunk_id == RoQ_QUAD_VQ) break;