~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavcodec/sipr.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:
27
27
 
28
28
#include "libavutil/mathematics.h"
29
29
#include "avcodec.h"
30
 
#define ALT_BITSTREAM_READER_LE
 
30
#define BITSTREAM_READER_LE
31
31
#include "get_bits.h"
32
32
#include "dsputil.h"
33
33
 
194
194
{
195
195
    int i, j;
196
196
 
197
 
    parms->ma_pred_switch           = get_bits(pgb, p->ma_predictor_bits);
 
197
    if (p->ma_predictor_bits)
 
198
        parms->ma_pred_switch       = get_bits(pgb, p->ma_predictor_bits);
198
199
 
199
200
    for (i = 0; i < 5; i++)
200
201
        parms->vq_indexes[i]        = get_bits(pgb, p->vq_indexes_bits[i]);
201
202
 
202
203
    for (i = 0; i < p->subframe_count; i++) {
203
204
        parms->pitch_delay[i]       = get_bits(pgb, p->pitch_delay_bits[i]);
204
 
        parms->gp_index[i]          = get_bits(pgb, p->gp_index_bits);
 
205
        if (p->gp_index_bits)
 
206
            parms->gp_index[i]      = get_bits(pgb, p->gp_index_bits);
205
207
 
206
208
        for (j = 0; j < p->number_of_fc_indexes; j++)
207
209
            parms->fc_indexes[i][j] = get_bits(pgb, p->fc_index_bits[j]);
478
480
    SiprContext *ctx = avctx->priv_data;
479
481
    int i;
480
482
 
481
 
    if      (avctx->bit_rate > 12200) ctx->mode = MODE_16k;
482
 
    else if (avctx->bit_rate > 7500 ) ctx->mode = MODE_8k5;
483
 
    else if (avctx->bit_rate > 5750 ) ctx->mode = MODE_6k5;
484
 
    else                              ctx->mode = MODE_5k0;
 
483
    switch (avctx->block_align) {
 
484
    case 20: ctx->mode = MODE_16k; break;
 
485
    case 19: ctx->mode = MODE_8k5; break;
 
486
    case 29: ctx->mode = MODE_6k5; break;
 
487
    case 37: ctx->mode = MODE_5k0; break;
 
488
    default:
 
489
        av_log(avctx, AV_LOG_ERROR, "Invalid block_align: %d\n", avctx->block_align);
 
490
        return AVERROR(EINVAL);
 
491
    }
485
492
 
486
493
    av_log(avctx, AV_LOG_DEBUG, "Mode: %s\n", modes[ctx->mode].mode_name);
487
494
 
488
 
    if (ctx->mode == MODE_16k)
 
495
    if (ctx->mode == MODE_16k) {
489
496
        ff_sipr_init_16k(ctx);
 
497
        ctx->decode_frame = ff_sipr_decode_frame_16k;
 
498
    } else {
 
499
        ctx->decode_frame = decode_frame;
 
500
    }
490
501
 
491
502
    for (i = 0; i < LP_FILTER_ORDER; i++)
492
503
        ctx->lsp_history[i] = cos((i+1) * M_PI / (LP_FILTER_ORDER + 1));
496
507
 
497
508
    avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
498
509
 
 
510
    avcodec_get_frame_defaults(&ctx->frame);
 
511
    avctx->coded_frame = &ctx->frame;
 
512
 
499
513
    return 0;
500
514
}
501
515
 
502
 
static int sipr_decode_frame(AVCodecContext *avctx, void *datap,
503
 
                             int *data_size, AVPacket *avpkt)
 
516
static int sipr_decode_frame(AVCodecContext *avctx, void *data,
 
517
                             int *got_frame_ptr, AVPacket *avpkt)
504
518
{
505
519
    SiprContext *ctx = avctx->priv_data;
506
520
    const uint8_t *buf=avpkt->data;
507
521
    SiprParameters parm;
508
522
    const SiprModeParam *mode_par = &modes[ctx->mode];
509
523
    GetBitContext gb;
510
 
    float *data = datap;
 
524
    float *samples;
511
525
    int subframe_size = ctx->mode == MODE_16k ? L_SUBFR_16k : SUBFR_SIZE;
512
 
    int i;
 
526
    int i, ret;
513
527
 
514
528
    ctx->avctx = avctx;
515
529
    if (avpkt->size < (mode_par->bits_per_frame >> 3)) {
516
530
        av_log(avctx, AV_LOG_ERROR,
517
531
               "Error processing packet: packet size (%d) too small\n",
518
532
               avpkt->size);
519
 
 
520
 
        *data_size = 0;
521
 
        return -1;
522
 
    }
523
 
    if (*data_size < subframe_size * mode_par->subframe_count * sizeof(float)) {
524
 
        av_log(avctx, AV_LOG_ERROR,
525
 
               "Error processing packet: output buffer (%d) too small\n",
526
 
               *data_size);
527
 
 
528
 
        *data_size = 0;
529
 
        return -1;
530
 
    }
 
533
        return -1;
 
534
    }
 
535
 
 
536
    /* get output buffer */
 
537
    ctx->frame.nb_samples = mode_par->frames_per_packet * subframe_size *
 
538
                            mode_par->subframe_count;
 
539
    if ((ret = avctx->get_buffer(avctx, &ctx->frame)) < 0) {
 
540
        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
 
541
        return ret;
 
542
    }
 
543
    samples = (float *)ctx->frame.data[0];
531
544
 
532
545
    init_get_bits(&gb, buf, mode_par->bits_per_frame);
533
546
 
534
547
    for (i = 0; i < mode_par->frames_per_packet; i++) {
535
548
        decode_parameters(&parm, &gb, mode_par);
536
549
 
537
 
        if (ctx->mode == MODE_16k)
538
 
            ff_sipr_decode_frame_16k(ctx, &parm, data);
539
 
        else
540
 
            decode_frame(ctx, &parm, data);
 
550
        ctx->decode_frame(ctx, &parm, samples);
541
551
 
542
 
        data += subframe_size * mode_par->subframe_count;
 
552
        samples += subframe_size * mode_par->subframe_count;
543
553
    }
544
554
 
545
 
    *data_size = mode_par->frames_per_packet * subframe_size *
546
 
        mode_par->subframe_count * sizeof(float);
 
555
    *got_frame_ptr   = 1;
 
556
    *(AVFrame *)data = ctx->frame;
547
557
 
548
558
    return mode_par->bits_per_frame >> 3;
549
559
}
550
560
 
551
561
AVCodec ff_sipr_decoder = {
552
 
    "sipr",
553
 
    AVMEDIA_TYPE_AUDIO,
554
 
    CODEC_ID_SIPR,
555
 
    sizeof(SiprContext),
556
 
    sipr_decoder_init,
557
 
    NULL,
558
 
    NULL,
559
 
    sipr_decode_frame,
 
562
    .name           = "sipr",
 
563
    .type           = AVMEDIA_TYPE_AUDIO,
 
564
    .id             = CODEC_ID_SIPR,
 
565
    .priv_data_size = sizeof(SiprContext),
 
566
    .init           = sipr_decoder_init,
 
567
    .decode         = sipr_decode_frame,
 
568
    .capabilities   = CODEC_CAP_DR1,
560
569
    .long_name = NULL_IF_CONFIG_SMALL("RealAudio SIPR / ACELP.NET"),
561
570
};