Browse Source

bytestream: K&R formatting cosmetics

Signed-off-by: Diego Biurrun <diego@biurrun.de>
tags/n0.11
Aneesh Dogra Diego Biurrun 13 years ago
parent
commit
ab9ae40152
1 changed files with 68 additions and 53 deletions
  1. +68
    -53
      libavcodec/bytestream.h

+ 68
- 53
libavcodec/bytestream.h View File

@@ -24,6 +24,7 @@
#define AVCODEC_BYTESTREAM_H #define AVCODEC_BYTESTREAM_H


#include <string.h> #include <string.h>

#include "libavutil/common.h" #include "libavutil/common.h"
#include "libavutil/intreadwrite.h" #include "libavutil/intreadwrite.h"


@@ -36,46 +37,52 @@ typedef struct {
int eof; int eof;
} PutByteContext; } PutByteContext;


#define DEF_T(type, name, bytes, read, write) \
static av_always_inline type bytestream_get_ ## name(const uint8_t **b){\
(*b) += bytes;\
return read(*b - bytes);\
}\
static av_always_inline void bytestream_put_ ##name(uint8_t **b, const type value){\
write(*b, value);\
(*b) += bytes;\
}\
static av_always_inline void bytestream2_put_ ## name ## u(PutByteContext *p, const type value)\
{\
bytestream_put_ ## name(&p->buffer, value);\
}\
static av_always_inline void bytestream2_put_ ## name(PutByteContext *p, const type value){\
if (!p->eof && (p->buffer_end - p->buffer >= bytes)) {\
write(p->buffer, value);\
p->buffer += bytes;\
} else\
p->eof = 1;\
}\
static av_always_inline type bytestream2_get_ ## name ## u(GetByteContext *g)\
{\
return bytestream_get_ ## name(&g->buffer);\
}\
static av_always_inline type bytestream2_get_ ## name(GetByteContext *g)\
{\
if (g->buffer_end - g->buffer < bytes)\
return 0;\
return bytestream2_get_ ## name ## u(g);\
}\
static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g)\
{\
if (g->buffer_end - g->buffer < bytes)\
return 0;\
return read(g->buffer);\
#define DEF_T(type, name, bytes, read, write) \
static av_always_inline type bytestream_get_ ## name(const uint8_t **b) \
{ \
(*b) += bytes; \
return read(*b - bytes); \
} \
static av_always_inline void bytestream_put_ ## name(uint8_t **b, \
const type value) \
{ \
write(*b, value); \
(*b) += bytes; \
} \
static av_always_inline void bytestream2_put_ ## name ## u(PutByteContext *p, \
const type value) \
{ \
bytestream_put_ ## name(&p->buffer, value); \
} \
static av_always_inline void bytestream2_put_ ## name(PutByteContext *p, \
const type value) \
{ \
if (!p->eof && (p->buffer_end - p->buffer >= bytes)) { \
write(p->buffer, value); \
p->buffer += bytes; \
} else \
p->eof = 1; \
} \
static av_always_inline type bytestream2_get_ ## name ## u(GetByteContext *g) \
{ \
return bytestream_get_ ## name(&g->buffer); \
} \
static av_always_inline type bytestream2_get_ ## name(GetByteContext *g) \
{ \
if (g->buffer_end - g->buffer < bytes) \
return 0; \
return bytestream2_get_ ## name ## u(g); \
} \
static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g) \
{ \
if (g->buffer_end - g->buffer < bytes) \
return 0; \
return read(g->buffer); \
} }


#define DEF(name, bytes, read, write) \
#define DEF(name, bytes, read, write) \
DEF_T(unsigned int, name, bytes, read, write) DEF_T(unsigned int, name, bytes, read, write)
#define DEF64(name, bytes, read, write) \
#define DEF64(name, bytes, read, write) \
DEF_T(uint64_t, name, bytes, read, write) DEF_T(uint64_t, name, bytes, read, write)


DEF64(le64, 8, AV_RL64, AV_WL64) DEF64(le64, 8, AV_RL64, AV_WL64)
@@ -129,15 +136,17 @@ DEF (byte, 1, AV_RB8 , AV_WB8 )
#endif #endif


static av_always_inline void bytestream2_init(GetByteContext *g, static av_always_inline void bytestream2_init(GetByteContext *g,
const uint8_t *buf, int buf_size)
const uint8_t *buf,
int buf_size)
{ {
g->buffer = buf;
g->buffer = buf;
g->buffer_start = buf; g->buffer_start = buf;
g->buffer_end = buf + buf_size;
g->buffer_end = buf + buf_size;
} }


static av_always_inline void bytestream2_init_writer(PutByteContext *p, static av_always_inline void bytestream2_init_writer(PutByteContext *p,
uint8_t *buf, int buf_size)
uint8_t *buf,
int buf_size)
{ {
p->buffer = buf; p->buffer = buf;
p->buffer_start = buf; p->buffer_start = buf;
@@ -183,21 +192,22 @@ static av_always_inline int bytestream2_tell_p(PutByteContext *p)
return (int)(p->buffer - p->buffer_start); return (int)(p->buffer - p->buffer_start);
} }


static av_always_inline int bytestream2_seek(GetByteContext *g, int offset,
static av_always_inline int bytestream2_seek(GetByteContext *g,
int offset,
int whence) int whence)
{ {
switch (whence) { switch (whence) {
case SEEK_CUR: case SEEK_CUR:
offset = av_clip(offset, -(g->buffer - g->buffer_start),
g->buffer_end - g->buffer);
offset = av_clip(offset, -(g->buffer - g->buffer_start),
g->buffer_end - g->buffer);
g->buffer += offset; g->buffer += offset;
break; break;
case SEEK_END: case SEEK_END:
offset = av_clip(offset, -(g->buffer_end - g->buffer_start), 0);
offset = av_clip(offset, -(g->buffer_end - g->buffer_start), 0);
g->buffer = g->buffer_end + offset; g->buffer = g->buffer_end + offset;
break; break;
case SEEK_SET: case SEEK_SET:
offset = av_clip(offset, 0, g->buffer_end - g->buffer_start);
offset = av_clip(offset, 0, g->buffer_end - g->buffer_start);
g->buffer = g->buffer_start + offset; g->buffer = g->buffer_start + offset;
break; break;
default: default:
@@ -206,7 +216,8 @@ static av_always_inline int bytestream2_seek(GetByteContext *g, int offset,
return bytestream2_tell(g); return bytestream2_tell(g);
} }


static av_always_inline int bytestream2_seek_p(PutByteContext *p, int offset,
static av_always_inline int bytestream2_seek_p(PutByteContext *p,
int offset,
int whence) int whence)
{ {
p->eof = 0; p->eof = 0;
@@ -214,20 +225,20 @@ static av_always_inline int bytestream2_seek_p(PutByteContext *p, int offset,
case SEEK_CUR: case SEEK_CUR:
if (p->buffer_end - p->buffer < offset) if (p->buffer_end - p->buffer < offset)
p->eof = 1; p->eof = 1;
offset = av_clip(offset, -(p->buffer - p->buffer_start),
p->buffer_end - p->buffer);
offset = av_clip(offset, -(p->buffer - p->buffer_start),
p->buffer_end - p->buffer);
p->buffer += offset; p->buffer += offset;
break; break;
case SEEK_END: case SEEK_END:
if (offset > 0) if (offset > 0)
p->eof = 1; p->eof = 1;
offset = av_clip(offset, -(p->buffer_end - p->buffer_start), 0);
offset = av_clip(offset, -(p->buffer_end - p->buffer_start), 0);
p->buffer = p->buffer_end + offset; p->buffer = p->buffer_end + offset;
break; break;
case SEEK_SET: case SEEK_SET:
if (p->buffer_end - p->buffer_start < offset) if (p->buffer_end - p->buffer_start < offset)
p->eof = 1; p->eof = 1;
offset = av_clip(offset, 0, p->buffer_end - p->buffer_start);
offset = av_clip(offset, 0, p->buffer_end - p->buffer_start);
p->buffer = p->buffer_start + offset; p->buffer = p->buffer_start + offset;
break; break;
default: default:
@@ -280,14 +291,18 @@ static av_always_inline unsigned int bytestream2_get_eof(PutByteContext *p)
return p->eof; return p->eof;
} }


static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b, uint8_t *dst, unsigned int size)
static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b,
uint8_t *dst,
unsigned int size)
{ {
memcpy(dst, *b, size); memcpy(dst, *b, size);
(*b) += size; (*b) += size;
return size; return size;
} }


static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *src, unsigned int size)
static av_always_inline void bytestream_put_buffer(uint8_t **b,
const uint8_t *src,
unsigned int size)
{ {
memcpy(*b, src, size); memcpy(*b, src, size);
(*b) += size; (*b) += size;


Loading…
Cancel
Save