comparison ac3dec.c @ 9607:6d3d3df92a4e libavcodec

ac3dec: Remove unneeded context variable, num_cpl_subbands. It is also not needed for spectral extension or enhanced coupling since it is redundant information, so I am removing it from decode_band_structure() as well.
author jbr
date Wed, 06 May 2009 01:47:34 +0000
parents 31090f08314e
children f3c6d57a50aa
comparison
equal deleted inserted replaced
9606:31090f08314e 9607:6d3d3df92a4e
727 * @param[in] ecpl flag to indicate enhanced coupling 727 * @param[in] ecpl flag to indicate enhanced coupling
728 * @param[in] start_subband subband number for start of range 728 * @param[in] start_subband subband number for start of range
729 * @param[in] end_subband subband number for end of range 729 * @param[in] end_subband subband number for end of range
730 * @param[in] default_band_struct default band structure table 730 * @param[in] default_band_struct default band structure table
731 * @param[out] band_struct decoded band structure 731 * @param[out] band_struct decoded band structure
732 * @param[out] num_subbands number of subbands (optionally NULL)
733 * @param[out] num_bands number of bands (optionally NULL) 732 * @param[out] num_bands number of bands (optionally NULL)
734 * @param[out] band_sizes array containing the number of bins in each band (optionally NULL) 733 * @param[out] band_sizes array containing the number of bins in each band (optionally NULL)
735 */ 734 */
736 static void decode_band_structure(GetBitContext *gbc, int blk, int eac3, 735 static void decode_band_structure(GetBitContext *gbc, int blk, int eac3,
737 int ecpl, int start_subband, int end_subband, 736 int ecpl, int start_subband, int end_subband,
738 const uint8_t *default_band_struct, 737 const uint8_t *default_band_struct,
739 uint8_t *band_struct, int *num_subbands, 738 uint8_t *band_struct,
740 int *num_bands, uint8_t *band_sizes) 739 int *num_bands, uint8_t *band_sizes)
741 { 740 {
742 int subbnd, bnd, n_subbands, n_bands=0; 741 int subbnd, bnd, n_subbands, n_bands=0;
743 uint8_t bnd_sz[22]; 742 uint8_t bnd_sz[22];
744 743
772 } 771 }
773 } 772 }
774 } 773 }
775 774
776 /* set optional output params */ 775 /* set optional output params */
777 if (num_subbands)
778 *num_subbands = n_subbands;
779 if (num_bands) 776 if (num_bands)
780 *num_bands = n_bands; 777 *num_bands = n_bands;
781 if (band_sizes) 778 if (band_sizes)
782 memcpy(band_sizes, bnd_sz, n_bands); 779 memcpy(band_sizes, bnd_sz, n_bands);
783 } 780 }
873 870
874 /* coupling frequency range */ 871 /* coupling frequency range */
875 /* TODO: modify coupling end freq if spectral extension is used */ 872 /* TODO: modify coupling end freq if spectral extension is used */
876 cpl_start_subband = get_bits(gbc, 4); 873 cpl_start_subband = get_bits(gbc, 4);
877 cpl_end_subband = get_bits(gbc, 4) + 3; 874 cpl_end_subband = get_bits(gbc, 4) + 3;
878 s->num_cpl_subbands = cpl_end_subband - cpl_start_subband; 875 if (cpl_start_subband > cpl_end_subband) {
879 if (s->num_cpl_subbands < 0) {
880 av_log(s->avctx, AV_LOG_ERROR, "invalid coupling range (%d > %d)\n", 876 av_log(s->avctx, AV_LOG_ERROR, "invalid coupling range (%d > %d)\n",
881 cpl_start_subband, cpl_end_subband); 877 cpl_start_subband, cpl_end_subband);
882 return -1; 878 return -1;
883 } 879 }
884 s->start_freq[CPL_CH] = cpl_start_subband * 12 + 37; 880 s->start_freq[CPL_CH] = cpl_start_subband * 12 + 37;
885 s->end_freq[CPL_CH] = cpl_end_subband * 12 + 37; 881 s->end_freq[CPL_CH] = cpl_end_subband * 12 + 37;
886 882
887 decode_band_structure(gbc, blk, s->eac3, 0, 883 decode_band_structure(gbc, blk, s->eac3, 0,
888 cpl_start_subband, cpl_end_subband, 884 cpl_start_subband, cpl_end_subband,
889 ff_eac3_default_cpl_band_struct, 885 ff_eac3_default_cpl_band_struct,
890 s->cpl_band_struct, &s->num_cpl_subbands, 886 s->cpl_band_struct,
891 &s->num_cpl_bands, NULL); 887 &s->num_cpl_bands, NULL);
892 } else { 888 } else {
893 /* coupling not in use */ 889 /* coupling not in use */
894 for (ch = 1; ch <= fbw_channels; ch++) { 890 for (ch = 1; ch <= fbw_channels; ch++) {
895 s->channel_in_cpl[ch] = 0; 891 s->channel_in_cpl[ch] = 0;