aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2007-05-23 14:55:13 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2007-05-23 14:55:13 +0000
commit67a5daf07f8759480a1253638fcb548318fd8dd9 (patch)
treedb6cff749e2f68d21de1787e93a42ff0cd05d75e
parentcb1a74cf8cc5569ddb354e309850afb39d6e622a (diff)
downloadffmpeg-67a5daf07f8759480a1253638fcb548318fd8dd9.tar.gz
Remove duplicate bytestream functions
Originally committed as revision 9108 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/adx.c38
-rw-r--r--libavcodec/dvbsub.c46
-rw-r--r--libavcodec/dvdsubenc.c25
-rw-r--r--libavcodec/png.c52
-rw-r--r--libavcodec/roqvideo.c11
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<offset || memcmp(buf+offset-6,"(c)CRI",6)) return 0;
return offset;
}
@@ -289,8 +275,8 @@ static int adx_decode_header(AVCodecContext *avctx,const unsigned char *buf,size
if (offset==0) return 0;
channels = buf[7];
- freq = read_long(buf+8);
- size = read_long(buf+12);
+ freq = AV_RB32(buf+8);
+ size = AV_RB32(buf+12);
// printf("freq=%d ch=%d\n",freq,channels);
diff --git a/libavcodec/dvbsub.c b/libavcodec/dvbsub.c
index 44ba19d864..745cfc6e4c 100644
--- a/libavcodec/dvbsub.c
+++ b/libavcodec/dvbsub.c
@@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avcodec.h"
+#include "bytestream.h"
typedef struct DVBSubtitleContext {
int hide_state;
@@ -208,15 +209,6 @@ static void dvb_encode_rle4(uint8_t **pq,
(((FIX(0.50000*224.0/255.0) * r1 - FIX(0.41869*224.0/255.0) * g1 - \
FIX(0.08131*224.0/255.0) * b1 + (ONE_HALF << shift) - 1) >> (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 <assert.h>
@@ -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 <unistd.h>
#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;