Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6148 serge 1
/*
2
 * copyright (c) 2004 Michael Niedermayer 
3
 *
4
 * This file is part of FFmpeg.
5
 *
6
 * FFmpeg is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * FFmpeg is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with FFmpeg; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
 
21
/**
22
 * @file
23
 * bitstream reader API header.
24
 */
25
 
26
#ifndef AVCODEC_GET_BITS_H
27
#define AVCODEC_GET_BITS_H
28
 
29
#include 
30
 
31
#include "libavutil/common.h"
32
#include "libavutil/intreadwrite.h"
33
#include "libavutil/log.h"
34
#include "libavutil/avassert.h"
35
#include "mathops.h"
36
 
37
/*
38
 * Safe bitstream reading:
39
 * optionally, the get_bits API can check to ensure that we
40
 * don't read past input buffer boundaries. This is protected
41
 * with CONFIG_SAFE_BITSTREAM_READER at the global level, and
42
 * then below that with UNCHECKED_BITSTREAM_READER at the per-
43
 * decoder level. This means that decoders that check internally
44
 * can "#define UNCHECKED_BITSTREAM_READER 1" to disable
45
 * overread checks.
46
 * Boundary checking causes a minor performance penalty so for
47
 * applications that won't want/need this, it can be disabled
48
 * globally using "#define CONFIG_SAFE_BITSTREAM_READER 0".
49
 */
50
#ifndef UNCHECKED_BITSTREAM_READER
51
#define UNCHECKED_BITSTREAM_READER !CONFIG_SAFE_BITSTREAM_READER
52
#endif
53
 
54
typedef struct GetBitContext {
55
    const uint8_t *buffer, *buffer_end;
56
    int index;
57
    int size_in_bits;
58
    int size_in_bits_plus8;
59
} GetBitContext;
60
 
61
#define VLC_TYPE int16_t
62
 
63
typedef struct VLC {
64
    int bits;
65
    VLC_TYPE (*table)[2]; ///< code, bits
66
    int table_size, table_allocated;
67
    void * volatile init_state;
68
} VLC;
69
 
70
typedef struct RL_VLC_ELEM {
71
    int16_t level;
72
    int8_t len;
73
    uint8_t run;
74
} RL_VLC_ELEM;
75
 
76
/* Bitstream reader API docs:
77
 * name
78
 *   arbitrary name which is used as prefix for the internal variables
79
 *
80
 * gb
81
 *   getbitcontext
82
 *
83
 * OPEN_READER(name, gb)
84
 *   load gb into local variables
85
 *
86
 * CLOSE_READER(name, gb)
87
 *   store local vars in gb
88
 *
89
 * UPDATE_CACHE(name, gb)
90
 *   Refill the internal cache from the bitstream.
91
 *   After this call at least MIN_CACHE_BITS will be available.
92
 *
93
 * GET_CACHE(name, gb)
94
 *   Will output the contents of the internal cache,
95
 *   next bit is MSB of 32 or 64 bit (FIXME 64bit).
96
 *
97
 * SHOW_UBITS(name, gb, num)
98
 *   Will return the next num bits.
99
 *
100
 * SHOW_SBITS(name, gb, num)
101
 *   Will return the next num bits and do sign extension.
102
 *
103
 * SKIP_BITS(name, gb, num)
104
 *   Will skip over the next num bits.
105
 *   Note, this is equivalent to SKIP_CACHE; SKIP_COUNTER.
106
 *
107
 * SKIP_CACHE(name, gb, num)
108
 *   Will remove the next num bits from the cache (note SKIP_COUNTER
109
 *   MUST be called before UPDATE_CACHE / CLOSE_READER).
110
 *
111
 * SKIP_COUNTER(name, gb, num)
112
 *   Will increment the internal bit counter (see SKIP_CACHE & SKIP_BITS).
113
 *
114
 * LAST_SKIP_BITS(name, gb, num)
115
 *   Like SKIP_BITS, to be used if next call is UPDATE_CACHE or CLOSE_READER.
116
 *
117
 * For examples see get_bits, show_bits, skip_bits, get_vlc.
118
 */
119
 
120
#ifdef LONG_BITSTREAM_READER
121
#   define MIN_CACHE_BITS 32
122
#else
123
#   define MIN_CACHE_BITS 25
124
#endif
125
 
126
#if UNCHECKED_BITSTREAM_READER
127
#define OPEN_READER(name, gb)                   \
128
    unsigned int name ## _index = (gb)->index;  \
129
    unsigned int av_unused name ## _cache
130
 
131
#define HAVE_BITS_REMAINING(name, gb) 1
132
#else
133
#define OPEN_READER(name, gb)                   \
134
    unsigned int name ## _index = (gb)->index;  \
135
    unsigned int av_unused name ## _cache = 0;  \
136
    unsigned int av_unused name ## _size_plus8 = (gb)->size_in_bits_plus8
137
 
138
#define HAVE_BITS_REMAINING(name, gb) name ## _index < name ## _size_plus8
139
#endif
140
 
141
#define CLOSE_READER(name, gb) (gb)->index = name ## _index
142
 
143
# ifdef LONG_BITSTREAM_READER
144
 
145
# define UPDATE_CACHE_LE(name, gb) name ## _cache = \
146
      AV_RL64((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7)
147
 
148
# define UPDATE_CACHE_BE(name, gb) name ## _cache = \
149
      AV_RB64((gb)->buffer + (name ## _index >> 3)) >> (32 - (name ## _index & 7))
150
 
151
#else
152
 
153
# define UPDATE_CACHE_LE(name, gb) name ## _cache = \
154
      AV_RL32((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7)
155
 
156
# define UPDATE_CACHE_BE(name, gb) name ## _cache = \
157
      AV_RB32((gb)->buffer + (name ## _index >> 3)) << (name ## _index & 7)
158
 
159
#endif
160
 
161
 
162
#ifdef BITSTREAM_READER_LE
163
 
164
# define UPDATE_CACHE(name, gb) UPDATE_CACHE_LE(name, gb)
165
 
166
# define SKIP_CACHE(name, gb, num) name ## _cache >>= (num)
167
 
168
#else
169
 
170
# define UPDATE_CACHE(name, gb) UPDATE_CACHE_BE(name, gb)
171
 
172
# define SKIP_CACHE(name, gb, num) name ## _cache <<= (num)
173
 
174
#endif
175
 
176
#if UNCHECKED_BITSTREAM_READER
177
#   define SKIP_COUNTER(name, gb, num) name ## _index += (num)
178
#else
179
#   define SKIP_COUNTER(name, gb, num) \
180
    name ## _index = FFMIN(name ## _size_plus8, name ## _index + (num))
181
#endif
182
 
183
#define SKIP_BITS(name, gb, num)                \
184
    do {                                        \
185
        SKIP_CACHE(name, gb, num);              \
186
        SKIP_COUNTER(name, gb, num);            \
187
    } while (0)
188
 
189
#define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num)
190
 
191
#define SHOW_UBITS_LE(name, gb, num) zero_extend(name ## _cache, num)
192
#define SHOW_SBITS_LE(name, gb, num) sign_extend(name ## _cache, num)
193
 
194
#define SHOW_UBITS_BE(name, gb, num) NEG_USR32(name ## _cache, num)
195
#define SHOW_SBITS_BE(name, gb, num) NEG_SSR32(name ## _cache, num)
196
 
197
#ifdef BITSTREAM_READER_LE
198
#   define SHOW_UBITS(name, gb, num) SHOW_UBITS_LE(name, gb, num)
199
#   define SHOW_SBITS(name, gb, num) SHOW_SBITS_LE(name, gb, num)
200
#else
201
#   define SHOW_UBITS(name, gb, num) SHOW_UBITS_BE(name, gb, num)
202
#   define SHOW_SBITS(name, gb, num) SHOW_SBITS_BE(name, gb, num)
203
#endif
204
 
205
#define GET_CACHE(name, gb) ((uint32_t) name ## _cache)
206
 
207
static inline int get_bits_count(const GetBitContext *s)
208
{
209
    return s->index;
210
}
211
 
212
static inline void skip_bits_long(GetBitContext *s, int n)
213
{
214
#if UNCHECKED_BITSTREAM_READER
215
    s->index += n;
216
#else
217
    s->index += av_clip(n, -s->index, s->size_in_bits_plus8 - s->index);
218
#endif
219
}
220
 
221
/**
222
 * read mpeg1 dc style vlc (sign bit + mantisse with no MSB).
223
 * if MSB not set it is negative
224
 * @param n length in bits
225
 */
226
static inline int get_xbits(GetBitContext *s, int n)
227
{
228
    register int sign;
229
    register int32_t cache;
230
    OPEN_READER(re, s);
231
    av_assert2(n>0 && n<=25);
232
    UPDATE_CACHE(re, s);
233
    cache = GET_CACHE(re, s);
234
    sign  = ~cache >> 31;
235
    LAST_SKIP_BITS(re, s, n);
236
    CLOSE_READER(re, s);
237
    return (NEG_USR32(sign ^ cache, n) ^ sign) - sign;
238
}
239
 
240
static inline int get_sbits(GetBitContext *s, int n)
241
{
242
    register int tmp;
243
    OPEN_READER(re, s);
244
    av_assert2(n>0 && n<=25);
245
    UPDATE_CACHE(re, s);
246
    tmp = SHOW_SBITS(re, s, n);
247
    LAST_SKIP_BITS(re, s, n);
248
    CLOSE_READER(re, s);
249
    return tmp;
250
}
251
 
252
/**
253
 * Read 1-25 bits.
254
 */
255
static inline unsigned int get_bits(GetBitContext *s, int n)
256
{
257
    register int tmp;
258
    OPEN_READER(re, s);
259
    av_assert2(n>0 && n<=25);
260
    UPDATE_CACHE(re, s);
261
    tmp = SHOW_UBITS(re, s, n);
262
    LAST_SKIP_BITS(re, s, n);
263
    CLOSE_READER(re, s);
264
    return tmp;
265
}
266
 
267
static inline unsigned int get_bits_le(GetBitContext *s, int n)
268
{
269
    register int tmp;
270
    OPEN_READER(re, s);
271
    av_assert2(n>0 && n<=25);
272
    UPDATE_CACHE_LE(re, s);
273
    tmp = SHOW_UBITS_LE(re, s, n);
274
    LAST_SKIP_BITS(re, s, n);
275
    CLOSE_READER(re, s);
276
    return tmp;
277
}
278
 
279
/**
280
 * Show 1-25 bits.
281
 */
282
static inline unsigned int show_bits(GetBitContext *s, int n)
283
{
284
    register int tmp;
285
    OPEN_READER(re, s);
286
    av_assert2(n>0 && n<=25);
287
    UPDATE_CACHE(re, s);
288
    tmp = SHOW_UBITS(re, s, n);
289
    return tmp;
290
}
291
 
292
static inline void skip_bits(GetBitContext *s, int n)
293
{
294
    OPEN_READER(re, s);
295
    LAST_SKIP_BITS(re, s, n);
296
    CLOSE_READER(re, s);
297
}
298
 
299
static inline unsigned int get_bits1(GetBitContext *s)
300
{
301
    unsigned int index = s->index;
302
    uint8_t result     = s->buffer[index >> 3];
303
#ifdef BITSTREAM_READER_LE
304
    result >>= index & 7;
305
    result  &= 1;
306
#else
307
    result <<= index & 7;
308
    result >>= 8 - 1;
309
#endif
310
#if !UNCHECKED_BITSTREAM_READER
311
    if (s->index < s->size_in_bits_plus8)
312
#endif
313
        index++;
314
    s->index = index;
315
 
316
    return result;
317
}
318
 
319
static inline unsigned int show_bits1(GetBitContext *s)
320
{
321
    return show_bits(s, 1);
322
}
323
 
324
static inline void skip_bits1(GetBitContext *s)
325
{
326
    skip_bits(s, 1);
327
}
328
 
329
/**
330
 * Read 0-32 bits.
331
 */
332
static inline unsigned int get_bits_long(GetBitContext *s, int n)
333
{
334
    if (!n) {
335
        return 0;
336
    } else if (n <= MIN_CACHE_BITS) {
337
        return get_bits(s, n);
338
    } else {
339
#ifdef BITSTREAM_READER_LE
340
        unsigned ret = get_bits(s, 16);
341
        return ret | (get_bits(s, n - 16) << 16);
342
#else
343
        unsigned ret = get_bits(s, 16) << (n - 16);
344
        return ret | get_bits(s, n - 16);
345
#endif
346
    }
347
}
348
 
349
/**
350
 * Read 0-64 bits.
351
 */
352
static inline uint64_t get_bits64(GetBitContext *s, int n)
353
{
354
    if (n <= 32) {
355
        return get_bits_long(s, n);
356
    } else {
357
#ifdef BITSTREAM_READER_LE
358
        uint64_t ret = get_bits_long(s, 32);
359
        return ret | (uint64_t) get_bits_long(s, n - 32) << 32;
360
#else
361
        uint64_t ret = (uint64_t) get_bits_long(s, n - 32) << 32;
362
        return ret | get_bits_long(s, 32);
363
#endif
364
    }
365
}
366
 
367
/**
368
 * Read 0-32 bits as a signed integer.
369
 */
370
static inline int get_sbits_long(GetBitContext *s, int n)
371
{
372
    return sign_extend(get_bits_long(s, n), n);
373
}
374
 
375
/**
376
 * Show 0-32 bits.
377
 */
378
static inline unsigned int show_bits_long(GetBitContext *s, int n)
379
{
380
    if (n <= MIN_CACHE_BITS) {
381
        return show_bits(s, n);
382
    } else {
383
        GetBitContext gb = *s;
384
        return get_bits_long(&gb, n);
385
    }
386
}
387
 
388
static inline int check_marker(GetBitContext *s, const char *msg)
389
{
390
    int bit = get_bits1(s);
391
    if (!bit)
392
        av_log(NULL, AV_LOG_INFO, "Marker bit missing %s\n", msg);
393
 
394
    return bit;
395
}
396
 
397
/**
398
 * Initialize GetBitContext.
399
 * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes
400
 *        larger than the actual read bits because some optimized bitstream
401
 *        readers read 32 or 64 bit at once and could read over the end
402
 * @param bit_size the size of the buffer in bits
403
 * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow.
404
 */
405
static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer,
406
                                int bit_size)
407
{
408
    int buffer_size;
409
    int ret = 0;
410
 
411
    if (bit_size >= INT_MAX - 7 || bit_size < 0 || !buffer) {
412
        buffer_size = bit_size = 0;
413
        buffer      = NULL;
414
        ret         = AVERROR_INVALIDDATA;
415
    }
416
 
417
    buffer_size = (bit_size + 7) >> 3;
418
 
419
    s->buffer             = buffer;
420
    s->size_in_bits       = bit_size;
421
    s->size_in_bits_plus8 = bit_size + 8;
422
    s->buffer_end         = buffer + buffer_size;
423
    s->index              = 0;
424
 
425
    return ret;
426
}
427
 
428
/**
429
 * Initialize GetBitContext.
430
 * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes
431
 *        larger than the actual read bits because some optimized bitstream
432
 *        readers read 32 or 64 bit at once and could read over the end
433
 * @param byte_size the size of the buffer in bytes
434
 * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow.
435
 */
436
static inline int init_get_bits8(GetBitContext *s, const uint8_t *buffer,
437
                                 int byte_size)
438
{
439
    if (byte_size > INT_MAX / 8 || byte_size < 0)
440
        byte_size = -1;
441
    return init_get_bits(s, buffer, byte_size * 8);
442
}
443
 
444
static inline const uint8_t *align_get_bits(GetBitContext *s)
445
{
446
    int n = -get_bits_count(s) & 7;
447
    if (n)
448
        skip_bits(s, n);
449
    return s->buffer + (s->index >> 3);
450
}
451
 
452
#define init_vlc(vlc, nb_bits, nb_codes,                \
453
                 bits, bits_wrap, bits_size,            \
454
                 codes, codes_wrap, codes_size,         \
455
                 flags)                                 \
456
    ff_init_vlc_sparse(vlc, nb_bits, nb_codes,          \
457
                       bits, bits_wrap, bits_size,      \
458
                       codes, codes_wrap, codes_size,   \
459
                       NULL, 0, 0, flags)
460
 
461
int ff_init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes,
462
                       const void *bits, int bits_wrap, int bits_size,
463
                       const void *codes, int codes_wrap, int codes_size,
464
                       const void *symbols, int symbols_wrap, int symbols_size,
465
                       int flags);
466
void ff_free_vlc(VLC *vlc);
467
 
468
#define INIT_VLC_LE             2
469
#define INIT_VLC_USE_NEW_STATIC 4
470
 
471
#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size)       \
472
    do {                                                                   \
473
        static VLC_TYPE table[static_size][2];                             \
474
        (vlc)->table           = table;                                    \
475
        (vlc)->table_allocated = static_size;                              \
476
        init_vlc(vlc, bits, a, b, c, d, e, f, g, INIT_VLC_USE_NEW_STATIC); \
477
    } while (0)
478
 
479
/**
480
 * If the vlc code is invalid and max_depth=1, then no bits will be removed.
481
 * If the vlc code is invalid and max_depth>1, then the number of bits removed
482
 * is undefined.
483
 */
484
#define GET_VLC(code, name, gb, table, bits, max_depth)         \
485
    do {                                                        \
486
        int n, nb_bits;                                         \
487
        unsigned int index;                                     \
488
                                                                \
489
        index = SHOW_UBITS(name, gb, bits);                     \
490
        code  = table[index][0];                                \
491
        n     = table[index][1];                                \
492
                                                                \
493
        if (max_depth > 1 && n < 0) {                           \
494
            LAST_SKIP_BITS(name, gb, bits);                     \
495
            UPDATE_CACHE(name, gb);                             \
496
                                                                \
497
            nb_bits = -n;                                       \
498
                                                                \
499
            index = SHOW_UBITS(name, gb, nb_bits) + code;       \
500
            code  = table[index][0];                            \
501
            n     = table[index][1];                            \
502
            if (max_depth > 2 && n < 0) {                       \
503
                LAST_SKIP_BITS(name, gb, nb_bits);              \
504
                UPDATE_CACHE(name, gb);                         \
505
                                                                \
506
                nb_bits = -n;                                   \
507
                                                                \
508
                index = SHOW_UBITS(name, gb, nb_bits) + code;   \
509
                code  = table[index][0];                        \
510
                n     = table[index][1];                        \
511
            }                                                   \
512
        }                                                       \
513
        SKIP_BITS(name, gb, n);                                 \
514
    } while (0)
515
 
516
#define GET_RL_VLC(level, run, name, gb, table, bits,           \
517
                   max_depth, need_update)                      \
518
    do {                                                        \
519
        int n, nb_bits;                                         \
520
        unsigned int index;                                     \
521
                                                                \
522
        index = SHOW_UBITS(name, gb, bits);                     \
523
        level = table[index].level;                             \
524
        n     = table[index].len;                               \
525
                                                                \
526
        if (max_depth > 1 && n < 0) {                           \
527
            SKIP_BITS(name, gb, bits);                          \
528
            if (need_update) {                                  \
529
                UPDATE_CACHE(name, gb);                         \
530
            }                                                   \
531
                                                                \
532
            nb_bits = -n;                                       \
533
                                                                \
534
            index = SHOW_UBITS(name, gb, nb_bits) + level;      \
535
            level = table[index].level;                         \
536
            n     = table[index].len;                           \
537
        }                                                       \
538
        run = table[index].run;                                 \
539
        SKIP_BITS(name, gb, n);                                 \
540
    } while (0)
541
 
542
/**
543
 * Parse a vlc code.
544
 * @param bits is the number of bits which will be read at once, must be
545
 *             identical to nb_bits in init_vlc()
546
 * @param max_depth is the number of times bits bits must be read to completely
547
 *                  read the longest vlc code
548
 *                  = (max_vlc_length + bits - 1) / bits
549
 */
550
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2],
551
                                     int bits, int max_depth)
552
{
553
    int code;
554
 
555
    OPEN_READER(re, s);
556
    UPDATE_CACHE(re, s);
557
 
558
    GET_VLC(code, re, s, table, bits, max_depth);
559
 
560
    CLOSE_READER(re, s);
561
 
562
    return code;
563
}
564
 
565
static inline int decode012(GetBitContext *gb)
566
{
567
    int n;
568
    n = get_bits1(gb);
569
    if (n == 0)
570
        return 0;
571
    else
572
        return get_bits1(gb) + 1;
573
}
574
 
575
static inline int decode210(GetBitContext *gb)
576
{
577
    if (get_bits1(gb))
578
        return 0;
579
    else
580
        return 2 - get_bits1(gb);
581
}
582
 
583
static inline int get_bits_left(GetBitContext *gb)
584
{
585
    return gb->size_in_bits - get_bits_count(gb);
586
}
587
 
588
//#define TRACE
589
 
590
#ifdef TRACE
591
static inline void print_bin(int bits, int n)
592
{
593
    int i;
594
 
595
    for (i = n - 1; i >= 0; i--)
596
        av_log(NULL, AV_LOG_DEBUG, "%d", (bits >> i) & 1);
597
    for (i = n; i < 24; i++)
598
        av_log(NULL, AV_LOG_DEBUG, " ");
599
}
600
 
601
static inline int get_bits_trace(GetBitContext *s, int n, const char *file,
602
                                 const char *func, int line)
603
{
604
    int r = get_bits(s, n);
605
 
606
    print_bin(r, n);
607
    av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d bit @%5d in %s %s:%d\n",
608
           r, n, r, get_bits_count(s) - n, file, func, line);
609
 
610
    return r;
611
}
612
 
613
static inline int get_vlc_trace(GetBitContext *s, VLC_TYPE (*table)[2],
614
                                int bits, int max_depth, const char *file,
615
                                const char *func, int line)
616
{
617
    int show  = show_bits(s, 24);
618
    int pos   = get_bits_count(s);
619
    int r     = get_vlc2(s, table, bits, max_depth);
620
    int len   = get_bits_count(s) - pos;
621
    int bits2 = show >> (24 - len);
622
 
623
    print_bin(bits2, len);
624
 
625
    av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d vlc @%5d in %s %s:%d\n",
626
           bits2, len, r, pos, file, func, line);
627
 
628
    return r;
629
}
630
 
631
static inline int get_xbits_trace(GetBitContext *s, int n, const char *file,
632
                                  const char *func, int line)
633
{
634
    int show = show_bits(s, n);
635
    int r    = get_xbits(s, n);
636
 
637
    print_bin(show, n);
638
    av_log(NULL, AV_LOG_DEBUG, "%5d %2d %3d xbt @%5d in %s %s:%d\n",
639
           show, n, r, get_bits_count(s) - n, file, func, line);
640
 
641
    return r;
642
}
643
 
644
#define get_bits(s, n)  get_bits_trace(s , n, __FILE__, __PRETTY_FUNCTION__, __LINE__)
645
#define get_bits1(s)    get_bits_trace(s,  1, __FILE__, __PRETTY_FUNCTION__, __LINE__)
646
#define get_xbits(s, n) get_xbits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__)
647
 
648
#define get_vlc(s, vlc)             get_vlc_trace(s, (vlc)->table, (vlc)->bits,   3, __FILE__, __PRETTY_FUNCTION__, __LINE__)
649
#define get_vlc2(s, tab, bits, max) get_vlc_trace(s,          tab,        bits, max, __FILE__, __PRETTY_FUNCTION__, __LINE__)
650
 
651
#define tprintf(p, ...) av_log(p, AV_LOG_DEBUG, __VA_ARGS__)
652
 
653
#else //TRACE
654
#define tprintf(p, ...) { }
655
#endif
656
 
657
#endif /* AVCODEC_GET_BITS_H */