~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavcodec/wmadec.c

  • Committer: Gauvain Pocentek
  • Date: 2012-03-06 11:59:12 UTC
  • mfrom: (66.1.15 precise)
  • Revision ID: gauvain@pocentek.net-20120306115912-h9d6kt9j0l532oo5
* Merge from Ubuntu:
  - put back faac support
  - recommends apport-hooks-medibuntu
  - change Maintainer, Uploaders & Vcs-* fields.
* New upstream snapshot
* upload to unstable
* Build against external libmpeg2
* drop 51_FTBFS_arm.patch again
* no longer build depend on libcdparanoia-dev on the Hurd
* Fix FTBFS on the hurd.
  Thanks to Samuel Thibault <sthibault@debian.org> (Closes: #654974)
* Fix FTBFS on arm
* New upstream snapshot, Closes: #650339, #643621, #481807
* Imported Upstream version 1.0~rc4+svn34492
* Bump standards version
* Bump dependency on libav >= 4:0.8~, Closes: #653887
* Fix build-indep
* Build mplayer-gui again, Closes: #568514
* Drop debian/all-lang-config-mak.sh, no longer needed
* include .dfsg1 in version number
* remove get-orig-source target
* no longer prune compiler flags from the environment
* No longer advertise nor build 3fdx, mga and dxr3 backends,
  Closes: #496106, #442181, #533546
* beautify mplayer version identification string
* Brown paperbag upload.
* Next try to fix build failure on sparce after recent binutils change.
* Brown paperbag upload.
* Really fix build failure on sparc after recent binutils change.
* Properly set Replaces/Conflicts on mplayer2{,-dbg} to avoid
  file overwrite errors.
* Adjust versioning of mplayer listed in the mplayer-dbg's Depends field.
* Fix build failure on sparc after recent binutils change.
* Urgency medium bumped because of RC-level bugfix
  and speeding up x264 transition.
* Update to my @debian.org email.
* Upload to unstable
* Enable joystick support on Linux only, Closes: #638408
* Rebuild fixes toolchain issue on arm, Closes: #637077
* New upstream snapshot
* following the discussion started by Diego Biurrun <diego@biurrun.de>
  in debian-devel, I have prepared a new packaging of 'mplayer'
  (with code that comes from CVS)
* the upstream tar.bz cannot be distributed by Debian, since it contains
   CSS code; so I am repackaging it 
* I have tried my best to address all known issues:
  - the package contains the detailed Copyright made by Diego Biurrun 
  - the package does not contain CSS code, or  AFAIK other code on which 
     there is active patent enforcement
  - there is a script  debian/cvs-changelog.sh  that shows all changes
     done to files included in this source.
    This should comply with GPLv2 sec 2.a  (in spirit if not in letter)
    For this reason, the source code contains CVS directories.
* needs   make (>= 3.80) for 'html-chunked-$(1)' in DOCS/xml/Makefile

* some corrections, as suggested Diego Biurrun
  - binary codecs should go into /usr/lib/codecs (upstream default)
  - better template 'mplayer/install_codecs'
  - an empty 'font=' in mplayer.conf breaks mplayer: postinst corrected
* correction in 'mplayer/cfgnote'
* better mplayer.postinst and mplayer.config

* New upstream release
* better debian/copyright file
* do not ship a skin
* New upstream release
* changed DEB_BUILD_OPTIONS to DEB_BUILD_CONFIGURE ,
  DEB_BUILD_OPTIONS is used as in debian policy
* use gcc-3.4
* changed xlibs-dev to a long list of dependencies, for Debian/etch
* try to adhere to  http://www.mplayerhq.hu/DOCS/tech/binary-packaging.txt
  (see README.Debian for details)
* removed dependency on xlibmesa-dev, disabled opengl
* New upstream release
* Simon McVittie <hacks@pseudorandom.co.uk> wonderful work:
- Work around Debian bug #267442 (glibc's sys/uio.h and gcc's altivec.h have
  conflicting uses for __vector) by re-ordering #includes
- Fix potential symlink attack in ./configure
- Disable support for binary codecs on platforms for which those codecs
  aren't available; also disable the corresponding Debconf note when it's
  inappropriate
- Changed Build-Depends: so it works in pbuilder
- Explicitly build-depend on libjpeg62-dev, libfontconfig1-dev,
  libungif4-dev 
- Tweak debian/rules to avoid certain errors being ignored
- Use --language=all
* provide a target  'debian/rules get-orig-source' 
  that recreates the orig.tar.gz ; then use the above orig.tar.gz
* rewrote some parts of debian/rules
* don't clean and recompile docs if upstream ships them
* mplayer-doc was shipping too much stuff
* translated man pages where not installed properly
* compile with libdv4-dev
* correct README.Debian
* Forgot build-dep on libtheora
* Must not depend on libxvidcore
* New upstream release
* new release.
* rc1 to become 0.90
* new pre-release
* new pre-release
* gtk bug fixed.
* new release.
* version bumped
* 0.60 pre2 release
* 0.60 pre-release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
124
124
    }
125
125
 
126
126
    avctx->sample_fmt = AV_SAMPLE_FMT_S16;
 
127
 
 
128
    avcodec_get_frame_defaults(&s->frame);
 
129
    avctx->coded_frame = &s->frame;
 
130
 
127
131
    return 0;
128
132
}
129
133
 
797
801
    return 0;
798
802
}
799
803
 
800
 
static int wma_decode_superframe(AVCodecContext *avctx,
801
 
                                 void *data, int *data_size,
802
 
                                 AVPacket *avpkt)
 
804
static int wma_decode_superframe(AVCodecContext *avctx, void *data,
 
805
                                 int *got_frame_ptr, AVPacket *avpkt)
803
806
{
804
807
    const uint8_t *buf = avpkt->data;
805
808
    int buf_size = avpkt->size;
806
809
    WMACodecContext *s = avctx->priv_data;
807
 
    int nb_frames, bit_offset, i, pos, len;
 
810
    int nb_frames, bit_offset, i, pos, len, ret;
808
811
    uint8_t *q;
809
812
    int16_t *samples;
810
813
 
818
821
        return 0;
819
822
    buf_size = s->block_align;
820
823
 
821
 
    samples = data;
822
 
 
823
824
    init_get_bits(&s->gb, buf, buf_size*8);
824
825
 
825
826
    if (s->use_bit_reservoir) {
826
827
        /* read super frame header */
827
828
        skip_bits(&s->gb, 4); /* super frame index */
828
 
        nb_frames = get_bits(&s->gb, 4) - 1;
829
 
 
830
 
        if((nb_frames+1) * s->nb_channels * s->frame_len * sizeof(int16_t) > *data_size){
831
 
            av_log(s->avctx, AV_LOG_ERROR, "Insufficient output space\n");
832
 
            goto fail;
833
 
        }
834
 
 
 
829
        nb_frames = get_bits(&s->gb, 4) - (s->last_superframe_len <= 0);
 
830
    } else {
 
831
        nb_frames = 1;
 
832
    }
 
833
 
 
834
    /* get output buffer */
 
835
    s->frame.nb_samples = nb_frames * s->frame_len;
 
836
    if ((ret = avctx->get_buffer(avctx, &s->frame)) < 0) {
 
837
        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
 
838
        return ret;
 
839
    }
 
840
    samples = (int16_t *)s->frame.data[0];
 
841
 
 
842
    if (s->use_bit_reservoir) {
835
843
        bit_offset = get_bits(&s->gb, s->byte_offset_bits + 3);
836
844
 
837
845
        if (s->last_superframe_len > 0) {
860
868
            if (wma_decode_frame(s, samples) < 0)
861
869
                goto fail;
862
870
            samples += s->nb_channels * s->frame_len;
 
871
            nb_frames--;
863
872
        }
864
873
 
865
874
        /* read each frame starting from bit_offset */
888
897
        s->last_superframe_len = len;
889
898
        memcpy(s->last_superframe, buf + pos, len);
890
899
    } else {
891
 
        if(s->nb_channels * s->frame_len * sizeof(int16_t) > *data_size){
892
 
            av_log(s->avctx, AV_LOG_ERROR, "Insufficient output space\n");
893
 
            goto fail;
894
 
        }
895
900
        /* single frame decode */
896
901
        if (wma_decode_frame(s, samples) < 0)
897
902
            goto fail;
900
905
 
901
906
//av_log(NULL, AV_LOG_ERROR, "%d %d %d %d outbytes:%d eaten:%d\n", s->frame_len_bits, s->block_len_bits, s->frame_len, s->block_len,        (int8_t *)samples - (int8_t *)data, s->block_align);
902
907
 
903
 
    *data_size = (int8_t *)samples - (int8_t *)data;
 
908
    *got_frame_ptr   = 1;
 
909
    *(AVFrame *)data = s->frame;
 
910
 
904
911
    return s->block_align;
905
912
 fail:
906
913
    /* when error, we reset the bit reservoir */
916
923
    s->last_superframe_len= 0;
917
924
}
918
925
 
919
 
AVCodec ff_wmav1_decoder =
920
 
{
921
 
    "wmav1",
922
 
    AVMEDIA_TYPE_AUDIO,
923
 
    CODEC_ID_WMAV1,
924
 
    sizeof(WMACodecContext),
925
 
    wma_decode_init,
926
 
    NULL,
927
 
    ff_wma_end,
928
 
    wma_decode_superframe,
929
 
    .flush=flush,
930
 
    .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 1"),
 
926
AVCodec ff_wmav1_decoder = {
 
927
    .name           = "wmav1",
 
928
    .type           = AVMEDIA_TYPE_AUDIO,
 
929
    .id             = CODEC_ID_WMAV1,
 
930
    .priv_data_size = sizeof(WMACodecContext),
 
931
    .init           = wma_decode_init,
 
932
    .close          = ff_wma_end,
 
933
    .decode         = wma_decode_superframe,
 
934
    .flush          = flush,
 
935
    .capabilities   = CODEC_CAP_DR1,
 
936
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Audio 1"),
931
937
};
932
938
 
933
 
AVCodec ff_wmav2_decoder =
934
 
{
935
 
    "wmav2",
936
 
    AVMEDIA_TYPE_AUDIO,
937
 
    CODEC_ID_WMAV2,
938
 
    sizeof(WMACodecContext),
939
 
    wma_decode_init,
940
 
    NULL,
941
 
    ff_wma_end,
942
 
    wma_decode_superframe,
943
 
    .flush=flush,
944
 
    .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 2"),
 
939
AVCodec ff_wmav2_decoder = {
 
940
    .name           = "wmav2",
 
941
    .type           = AVMEDIA_TYPE_AUDIO,
 
942
    .id             = CODEC_ID_WMAV2,
 
943
    .priv_data_size = sizeof(WMACodecContext),
 
944
    .init           = wma_decode_init,
 
945
    .close          = ff_wma_end,
 
946
    .decode         = wma_decode_superframe,
 
947
    .flush          = flush,
 
948
    .capabilities   = CODEC_CAP_DR1,
 
949
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Audio 2"),
945
950
};