summaryrefslogtreecommitdiff
path: root/libavcodec/vorbis_enc.c
diff options
context:
space:
mode:
authorOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:56:10 +0000
committerOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:56:10 +0000
commit22c72a08df361824bca6d4b987482b9ec7092968 (patch)
tree20679e67648e7a8fbe01b1319a4a247b7c56c36c /libavcodec/vorbis_enc.c
parentb4b6ff3a55605532c015f746342ab92fcc512251 (diff)
Original Commit: r31 | ods15 | 2006-09-22 18:33:17 +0300 (Fri, 22 Sep 2006) | 2 lines
use my own bitpacker Originally committed as revision 6440 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/vorbis_enc.c')
-rw-r--r--libavcodec/vorbis_enc.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c
index 80a29c5a7b..53af5b0f40 100644
--- a/libavcodec/vorbis_enc.c
+++ b/libavcodec/vorbis_enc.c
@@ -27,8 +27,8 @@
#undef NDEBUG
#include <assert.h>
-#define ALT_BITSTREAM_WRITER
-#include "bitstream.h"
+//#define ALT_BITSTREAM_WRITER
+//#include "bitstream.h"
typedef struct {
int len;
@@ -108,6 +108,52 @@ typedef struct {
vorbis_mode_t * modes;
} venc_context_t;
+typedef struct {
+ int total;
+ int total_pos;
+ int pos;
+ uint8_t * buf_ptr;
+} PutBitContext;
+
+static inline void init_put_bits(PutBitContext * pb, uint8_t * buf, int buffer_len) {
+ pb->total = buffer_len * 8;
+ pb->total_pos = 0;
+ pb->pos = 0;
+ pb->buf_ptr = buf;
+}
+
+static void put_bits(PutBitContext * pb, int bits, uint64_t val) {
+ if ((pb->total_pos += bits) >= pb->total) return;
+ if (!bits) return;
+ if (pb->pos) {
+ if (pb->pos > bits) {
+ *pb->buf_ptr |= val << (8 - pb->pos);
+ pb->pos -= bits;
+ bits = 0;
+ } else {
+ *pb->buf_ptr++ |= (val << (8 - pb->pos)) & 0xFF;
+ val >>= pb->pos;
+ bits -= pb->pos;
+ pb->pos = 0;
+ }
+ }
+ for (; bits >= 8; bits -= 8) {
+ *pb->buf_ptr++ = val & 0xFF;
+ val >>= 8;
+ }
+ if (bits) {
+ *pb->buf_ptr = val;
+ pb->pos = 8 - bits;
+ }
+}
+
+static inline void flush_put_bits(PutBitContext * pb) {
+}
+
+static inline int put_bits_count(PutBitContext * pb) {
+ return pb->total_pos;
+}
+
static int cb_lookup_vals(int lookup, int dimentions, int entries) {
if (lookup == 1) {
int tmp, i;