summaryrefslogtreecommitdiff
path: root/libavcodec/common.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-03-21 23:13:35 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-03-21 23:13:35 +0000
commit643389567e74f337bdd2942a2f7eaeffb49985ad (patch)
treeaf2ac9a4805fbf5074713e59756f8cee911a1be2 /libavcodec/common.h
parent5e0daa0ac51db5351ad9686b38041ffff4c35168 (diff)
bitstream tracing support
Originally committed as revision 1698 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/common.h')
-rw-r--r--libavcodec/common.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/libavcodec/common.h b/libavcodec/common.h
index 1d0be03243..0f9abbe985 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -786,6 +786,46 @@ static always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2],
return code;
}
+//#define TRACE
+
+#ifdef TRACE
+
+static inline void print_bin(int bits, int n){
+ int i;
+
+ for(i=n-1; i>=0; i--){
+ printf("%d", (bits>>i)&1);
+ }
+ for(i=n; i<24; i++)
+ printf(" ");
+}
+
+static inline int get_bits_trace(GetBitContext *s, int n, char *file, char *func, int line){
+ int r= get_bits(s, n);
+
+ print_bin(r, n);
+ printf("%5d %2d %3d bit @%5d in %s %s:%d\n", r, n, r, get_bits_count(s)-n, file, func, line);
+ return r;
+}
+static inline int get_vlc_trace(GetBitContext *s, VLC_TYPE (*table)[2], int bits, int max_depth, char *file, char *func, int line){
+ int show= show_bits(s, 24);
+ int pos= get_bits_count(s);
+ int r= get_vlc2(s, table, bits, max_depth);
+ int len= get_bits_count(s) - pos;
+ int bits2= show>>(24-len);
+
+ print_bin(bits2, len);
+
+ printf("%5d %2d %3d vlc @%5d in %s %s:%d\n", bits2, len, r, pos, file, func, line);
+ return r;
+}
+
+#define get_bits(s, n) get_bits_trace(s, n, __FILE__, __PRETTY_FUNCTION__, __LINE__)
+#define get_bits1(s) get_bits_trace(s, 1, __FILE__, __PRETTY_FUNCTION__, __LINE__)
+#define get_vlc(s, vlc) get_vlc_trace(s, vlc->table, vlc->bits, 3, __FILE__, __PRETTY_FUNCTION__, __LINE__)
+#define get_vlc2(s, tab, bits, max) get_vlc_trace(s, tab, bits, max, __FILE__, __PRETTY_FUNCTION__, __LINE__)
+
+#endif
/* define it to include statistics code (useful only for optimizing
codec efficiency */