diff options
-rw-r--r-- | apps/codecs/libmad/layer3.c | 21 |
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 | ||