summaryrefslogtreecommitdiff
path: root/apps/codecs
diff options
context:
space:
mode:
authorJean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>2005-03-10 21:54:26 +0000
committerJean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>2005-03-10 21:54:26 +0000
commita9eda6060a2a204d279f547854c2c4be1bbf90d8 (patch)
tree29a50d4077b3b118373dee2627daf713999fb108 /apps/codecs
parentae4b2de6194467b290bc47319652f741fc70b7e2 (diff)
downloadrockbox-a9eda6060a2a204d279f547854c2c4be1bbf90d8.tar.gz
rockbox-a9eda6060a2a204d279f547854c2c4be1bbf90d8.zip
oops, 1I^2 = 1...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6184 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs')
-rw-r--r--apps/codecs/libmad/layer3.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/apps/codecs/libmad/layer3.c b/apps/codecs/libmad/layer3.c
index a8d2d5f7f9..732269f8de 100644
--- a/apps/codecs/libmad/layer3.c
+++ b/apps/codecs/libmad/layer3.c
@@ -25,6 +25,9 @@
25 25
26# include "global.h" 26# include "global.h"
27 27
28#include "debug.h"
29
30
28# include <string.h> 31# include <string.h>
29 32
30# ifdef HAVE_ASSERT_H 33# ifdef HAVE_ASSERT_H
@@ -834,8 +837,8 @@ void III_exponents(struct channel const *channel,
834 exponents[sfbi] = gain - 837 exponents[sfbi] = gain -
835 (signed int) ((channel->scalefac[sfbi] + (pretab[sfbi] & premask)) << 838 (signed int) ((channel->scalefac[sfbi] + (pretab[sfbi] & premask)) <<
836 scalefac_multiplier); 839 scalefac_multiplier);
837 840 unsigned int w = sfbwidth[sfbi++];
838 l += sfbwidth[sfbi++]; 841 l += 3 * w;
839 } 842 }
840 } 843 }
841 844
@@ -853,7 +856,7 @@ void III_exponents(struct channel const *channel,
853 exponents[sfbi + 2] = gain2 - 856 exponents[sfbi + 2] = gain2 -
854 (signed int) (channel->scalefac[sfbi + 2] << scalefac_multiplier); 857 (signed int) (channel->scalefac[sfbi + 2] << scalefac_multiplier);
855 858
856 l += 3I * sfbwidth[sfbi]; 859 l += sfbwidth[sfbi];
857 sfbi += 3; 860 sfbi += 3;
858 } 861 }
859 } 862 }
@@ -2636,12 +2639,15 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2636 enum mad_error error; 2639 enum mad_error error;
2637 int result = 0; 2640 int result = 0;
2638 2641
2642 DEBUGF("mad_layer_III: 0 Enter");
2643
2639 /* allocate Layer III dynamic structures */ 2644 /* allocate Layer III dynamic structures */
2640 2645
2641 if (stream->main_data == 0) { 2646 if (stream->main_data == 0) {
2642 stream->main_data = malloc(MAD_BUFFER_MDLEN); 2647 stream->main_data = malloc(MAD_BUFFER_MDLEN);
2643 if (stream->main_data == 0) { 2648 if (stream->main_data == 0) {
2644 stream->error = MAD_ERROR_NOMEM; 2649 stream->error = MAD_ERROR_NOMEM;
2650 DEBUGF("mad_layer_III: Nomem 1");
2645 return -1; 2651 return -1;
2646 } 2652 }
2647 } 2653 }
@@ -2650,6 +2656,7 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2650 frame->overlap = calloc(2 * 32 * 18, sizeof(mad_fixed_t)); 2656 frame->overlap = calloc(2 * 32 * 18, sizeof(mad_fixed_t));
2651 if (frame->overlap == 0) { 2657 if (frame->overlap == 0) {
2652 stream->error = MAD_ERROR_NOMEM; 2658 stream->error = MAD_ERROR_NOMEM;
2659 DEBUGF("mad_layer_III: Nomem 2");
2653 return -1; 2660 return -1;
2654 } 2661 }
2655 } 2662 }
@@ -2664,6 +2671,8 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2664 (signed int) si_len) { 2671 (signed int) si_len) {
2665 stream->error = MAD_ERROR_BADFRAMELEN; 2672 stream->error = MAD_ERROR_BADFRAMELEN;
2666 stream->md_len = 0; 2673 stream->md_len = 0;
2674 DEBUGF("mad_layer_III: Insane frame");
2675
2667 return -1; 2676 return -1;
2668 } 2677 }
2669 2678
@@ -2677,6 +2686,7 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2677 !(frame->options & MAD_OPTION_IGNORECRC)) { 2686 !(frame->options & MAD_OPTION_IGNORECRC)) {
2678 stream->error = MAD_ERROR_BADCRC; 2687 stream->error = MAD_ERROR_BADCRC;
2679 result = -1; 2688 result = -1;
2689 DEBUGF("mad_layer_III: CRC incorrect");
2680 } 2690 }
2681 } 2691 }
2682 2692
@@ -2687,6 +2697,7 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2687 if (error && result == 0) { 2697 if (error && result == 0) {
2688 stream->error = error; 2698 stream->error = error;
2689 result = -1; 2699 result = -1;
2700 DEBUGF("mad_layer_III: III_sideinfo error");
2690 } 2701 }
2691 2702
2692 header->flags |= priv_bitlen; 2703 header->flags |= priv_bitlen;
@@ -2734,6 +2745,9 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2734 if (result == 0) { 2745 if (result == 0) {
2735 stream->error = MAD_ERROR_BADDATAPTR; 2746 stream->error = MAD_ERROR_BADDATAPTR;
2736 result = -1; 2747 result = -1;
2748 DEBUGF("mad_layer_III: bad data ptr si.main_data_begin=%x stream->md_len=%x", si.main_data_begin, stream->md_len);
2749 DEBUGF("frame space = %x", frame_space);
2750 DEBUGF("next_md_begin = %x", next_md_begin);
2737 } 2751 }
2738 } 2752 }
2739 else { 2753 else {
@@ -2760,6 +2774,7 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2760 error = III_decode(&ptr, frame, &si, nch); 2774 error = III_decode(&ptr, frame, &si, nch);
2761 if (error) { 2775 if (error) {
2762 stream->error = error; 2776 stream->error = error;
2777 DEBUGF("mad_layer_III: III_decode error");
2763 result = -1; 2778 result = -1;
2764 } 2779 }
2765 2780