Mercurial > libavcodec.hg
annotate put_bits.h @ 10061:09f2db2d7c90 libavcodec
Fix bug caused by difference in stride and picture width.
When a frame is allocated using libschroedinger routines, the frame data size
does not match the actual frame size if the width is not a multiple of 16. So
we cannot do a straightforward memcpy of the frame returned by libschroedinger
into the FFmpeg picture as the stride differs from the width.
Fix this bug by allocating for the libschroedinger frame with the dimensions
in AVCodecContext within libavcodec and passing the frame to libschroedinger.
patch by Anuradha Suraparaju, anuradha rd.bbc.co uk
author | diego |
---|---|
date | Sat, 15 Aug 2009 11:59:53 +0000 |
parents | 2887f410011f |
children | 2b8a327189cd |
rev | line source |
---|---|
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
1 /* |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
2 * copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at> |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
3 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
4 * This file is part of FFmpeg. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
5 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
10 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
14 * Lesser General Public License for more details. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
15 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
19 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
20 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
21 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
22 * @file libavcodec/put_bits.h |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
23 * bitstream writer API |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
24 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
25 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
26 #ifndef AVCODEC_PUT_BITS_H |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
27 #define AVCODEC_PUT_BITS_H |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
28 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
29 #include <stdint.h> |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
30 #include <stdlib.h> |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
31 #include <assert.h> |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
32 #include "libavutil/bswap.h" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
33 #include "libavutil/common.h" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
34 #include "libavutil/intreadwrite.h" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
35 #include "libavutil/log.h" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
36 #include "mathops.h" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
37 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
38 //#define ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
39 //#define ALIGNED_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
40 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
41 /* buf and buf_end must be present and used by every alternative writer. */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
42 typedef struct PutBitContext { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
43 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
44 uint8_t *buf, *buf_end; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
45 int index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
46 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
47 uint32_t bit_buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
48 int bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
49 uint8_t *buf, *buf_ptr, *buf_end; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
50 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
51 int size_in_bits; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
52 } PutBitContext; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
53 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
54 /** |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
55 * Initializes the PutBitContext s. |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
56 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
57 * @param buffer the buffer where to put bits |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
58 * @param buffer_size the size in bytes of buffer |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
59 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
60 static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
61 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
62 if(buffer_size < 0) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
63 buffer_size = 0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
64 buffer = NULL; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
65 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
66 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
67 s->size_in_bits= 8*buffer_size; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
68 s->buf = buffer; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
69 s->buf_end = s->buf + buffer_size; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
70 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
71 s->index=0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
72 ((uint32_t*)(s->buf))[0]=0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
73 // memset(buffer, 0, buffer_size); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
74 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
75 s->buf_ptr = s->buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
76 s->bit_left=32; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
77 s->bit_buf=0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
78 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
79 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
80 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
81 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
82 * Returns the total number of bits written to the bitstream. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
83 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
84 static inline int put_bits_count(PutBitContext *s) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
85 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
86 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
87 return s->index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
88 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
89 return (s->buf_ptr - s->buf) * 8 + 32 - s->bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
90 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
91 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
92 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
93 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
94 * Pads the end of the output stream with zeros. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
95 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
96 static inline void flush_put_bits(PutBitContext *s) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
97 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
98 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
99 align_put_bits(s); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
100 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
101 #ifndef BITSTREAM_WRITER_LE |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
102 s->bit_buf<<= s->bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
103 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
104 while (s->bit_left < 32) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
105 /* XXX: should test end of buffer */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
106 #ifdef BITSTREAM_WRITER_LE |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
107 *s->buf_ptr++=s->bit_buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
108 s->bit_buf>>=8; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
109 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
110 *s->buf_ptr++=s->bit_buf >> 24; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
111 s->bit_buf<<=8; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
112 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
113 s->bit_left+=8; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
114 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
115 s->bit_left=32; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
116 s->bit_buf=0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
117 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
118 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
119 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
120 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
121 * Pads the bitstream with zeros up to the next byte boundary. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
122 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
123 void align_put_bits(PutBitContext *s); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
124 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
125 /** |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
126 * Puts the string s in the bitstream. |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
127 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
128 * @param terminate_string 0-terminates the written string if value is 1 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
129 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
130 void ff_put_string(PutBitContext * pbc, const char *s, int terminate_string); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
131 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
132 /** |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
133 * Copies the content of src to the bitstream. |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
134 * |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
135 * @param length the number of bits of src to copy |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
136 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
137 void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
138 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
139 static inline void put_bits(PutBitContext *s, int n, unsigned int value) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
140 #ifndef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
141 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
142 unsigned int bit_buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
143 int bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
144 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
145 // printf("put_bits=%d %x\n", n, value); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
146 assert(n == 32 || value < (1U << n)); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
147 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
148 bit_buf = s->bit_buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
149 bit_left = s->bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
150 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
151 // printf("n=%d value=%x cnt=%d buf=%x\n", n, value, bit_cnt, bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
152 /* XXX: optimize */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
153 #ifdef BITSTREAM_WRITER_LE |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
154 bit_buf |= value << (32 - bit_left); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
155 if (n >= bit_left) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
156 #if !HAVE_FAST_UNALIGNED |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
157 if (3 & (intptr_t) s->buf_ptr) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
158 AV_WL32(s->buf_ptr, bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
159 } else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
160 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
161 *(uint32_t *)s->buf_ptr = le2me_32(bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
162 s->buf_ptr+=4; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
163 bit_buf = (bit_left==32)?0:value >> bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
164 bit_left+=32; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
165 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
166 bit_left-=n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
167 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
168 if (n < bit_left) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
169 bit_buf = (bit_buf<<n) | value; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
170 bit_left-=n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
171 } else { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
172 bit_buf<<=bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
173 bit_buf |= value >> (n - bit_left); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
174 #if !HAVE_FAST_UNALIGNED |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
175 if (3 & (intptr_t) s->buf_ptr) { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
176 AV_WB32(s->buf_ptr, bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
177 } else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
178 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
179 *(uint32_t *)s->buf_ptr = be2me_32(bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
180 //printf("bitbuf = %08x\n", bit_buf); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
181 s->buf_ptr+=4; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
182 bit_left+=32 - n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
183 bit_buf = value; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
184 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
185 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
186 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
187 s->bit_buf = bit_buf; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
188 s->bit_left = bit_left; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
189 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
190 #else /* ALT_BITSTREAM_WRITER defined */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
191 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
192 # ifdef ALIGNED_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
193 # if ARCH_X86 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
194 __asm__ volatile( |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
195 "movl %0, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
196 "xorl %%eax, %%eax \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
197 "shrdl %%cl, %1, %%eax \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
198 "shrl %%cl, %1 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
199 "movl %0, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
200 "shrl $3, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
201 "andl $0xFFFFFFFC, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
202 "bswapl %1 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
203 "orl %1, (%2, %%ecx) \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
204 "bswapl %%eax \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
205 "addl %3, %0 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
206 "movl %%eax, 4(%2, %%ecx) \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
207 : "=&r" (s->index), "=&r" (value) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
208 : "r" (s->buf), "r" (n), "0" (s->index), "1" (value<<(-n)) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
209 : "%eax", "%ecx" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
210 ); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
211 # else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
212 int index= s->index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
213 uint32_t *ptr= ((uint32_t *)s->buf)+(index>>5); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
214 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
215 value<<= 32-n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
216 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
217 ptr[0] |= be2me_32(value>>(index&31)); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
218 ptr[1] = be2me_32(value<<(32-(index&31))); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
219 //if(n>24) printf("%d %d\n", n, value); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
220 index+= n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
221 s->index= index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
222 # endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
223 # else //ALIGNED_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
224 # if ARCH_X86 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
225 __asm__ volatile( |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
226 "movl $7, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
227 "andl %0, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
228 "addl %3, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
229 "negl %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
230 "shll %%cl, %1 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
231 "bswapl %1 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
232 "movl %0, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
233 "shrl $3, %%ecx \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
234 "orl %1, (%%ecx, %2) \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
235 "addl %3, %0 \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
236 "movl $0, 4(%%ecx, %2) \n\t" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
237 : "=&r" (s->index), "=&r" (value) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
238 : "r" (s->buf), "r" (n), "0" (s->index), "1" (value) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
239 : "%ecx" |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
240 ); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
241 # else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
242 int index= s->index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
243 uint32_t *ptr= (uint32_t*)(((uint8_t *)s->buf)+(index>>3)); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
244 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
245 ptr[0] |= be2me_32(value<<(32-n-(index&7) )); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
246 ptr[1] = 0; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
247 //if(n>24) printf("%d %d\n", n, value); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
248 index+= n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
249 s->index= index; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
250 # endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
251 # endif //!ALIGNED_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
252 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
253 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
254 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
255 static inline void put_sbits(PutBitContext *pb, int bits, int32_t val) |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
256 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
257 assert(bits >= 0 && bits <= 31); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
258 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
259 put_bits(pb, bits, val & ((1<<bits)-1)); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
260 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
261 |
9412 | 262 /** |
263 * Returns the pointer to the byte where the bitstream writer will put | |
264 * the next bit. | |
265 */ | |
9431 | 266 static inline uint8_t* put_bits_ptr(PutBitContext *s) |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
267 { |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
268 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
269 return s->buf + (s->index>>3); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
270 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
271 return s->buf_ptr; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
272 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
273 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
274 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
275 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
276 * Skips the given number of bytes. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
277 * PutBitContext must be flushed & aligned to a byte boundary before calling this. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
278 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
279 static inline void skip_put_bytes(PutBitContext *s, int n){ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
280 assert((put_bits_count(s)&7)==0); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
281 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
282 FIXME may need some cleaning of the buffer |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
283 s->index += n<<3; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
284 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
285 assert(s->bit_left==32); |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
286 s->buf_ptr += n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
287 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
288 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
289 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
290 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
291 * Skips the given number of bits. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
292 * Must only be used if the actual values in the bitstream do not matter. |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9433
diff
changeset
|
293 * If n is 0 the behavior is undefined. |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
294 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
295 static inline void skip_put_bits(PutBitContext *s, int n){ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
296 #ifdef ALT_BITSTREAM_WRITER |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
297 s->index += n; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
298 #else |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
299 s->bit_left -= n; |
9433 | 300 s->buf_ptr-= 4*(s->bit_left>>5); |
9411
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
301 s->bit_left &= 31; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
302 #endif |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
303 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
304 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
305 /** |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
306 * Changes the end of the buffer. |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
307 * |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
308 * @param size the new size in bytes of the buffer where to put bits |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
309 */ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
310 static inline void set_put_bits_buffer_size(PutBitContext *s, int size){ |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
311 s->buf_end= s->buf + size; |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
312 } |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
313 |
4cb7c65fc775
Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents:
diff
changeset
|
314 #endif /* AVCODEC_PUT_BITS_H */ |