Browse Source

atrac3plus: Convert to the new bitstream reader

Signed-off-by: Anton Khirnov <anton@khirnov.net>
tags/n3.4
Alexandra Hájková Anton Khirnov 9 years ago
parent
commit
edd4c19a78
3 changed files with 275 additions and 272 deletions
  1. +263
    -262
      libavcodec/atrac3plus.c
  2. +4
    -3
      libavcodec/atrac3plus.h
  3. +8
    -7
      libavcodec/atrac3plusdec.c

+ 263
- 262
libavcodec/atrac3plus.c
File diff suppressed because it is too large
View File


+ 4
- 3
libavcodec/atrac3plus.h View File

@@ -31,10 +31,11 @@
#include <stdint.h>

#include "libavutil/float_dsp.h"

#include "atrac.h"
#include "bitstream.h"
#include "avcodec.h"
#include "fft.h"
#include "get_bits.h"

/** Global unit sizes */
#define ATRAC3P_SUBBANDS 16 ///< number of PQF subbands
@@ -163,13 +164,13 @@ void ff_atrac3p_init_vlcs(AVCodec *codec);
/**
* Decode bitstream data of a channel unit.
*
* @param[in] gb the GetBit context
* @param[in] bc the Bitstream context
* @param[in,out] ctx ptr to the channel unit context
* @param[in] num_channels number of channels to process
* @param[in] avctx ptr to the AVCodecContext
* @return result code: 0 = OK, otherwise - error code
*/
int ff_atrac3p_decode_channel_unit(GetBitContext *gb, Atrac3pChanUnitCtx *ctx,
int ff_atrac3p_decode_channel_unit(BitstreamContext *bc, Atrac3pChanUnitCtx *ctx,
int num_channels, AVCodecContext *avctx);

/**


+ 8
- 7
libavcodec/atrac3plusdec.c View File

@@ -39,14 +39,15 @@

#include "libavutil/channel_layout.h"
#include "libavutil/float_dsp.h"

#include "avcodec.h"
#include "get_bits.h"
#include "bitstream.h"
#include "internal.h"
#include "atrac.h"
#include "atrac3plus.h"

typedef struct ATRAC3PContext {
GetBitContext gb;
BitstreamContext bc;
AVFloatDSPContext fdsp;

DECLARE_ALIGNED(32, float, samples)[2][ATRAC3P_FRAME_SAMPLES]; ///< quantized MDCT spectrum
@@ -334,16 +335,16 @@ static int atrac3p_decode_frame(AVCodecContext *avctx, void *data,
return ret;
}

if ((ret = init_get_bits8(&ctx->gb, avpkt->data, avpkt->size)) < 0)
if ((ret = bitstream_init8(&ctx->bc, avpkt->data, avpkt->size)) < 0)
return ret;

if (get_bits1(&ctx->gb)) {
if (bitstream_read_bit(&ctx->bc)) {
av_log(avctx, AV_LOG_ERROR, "Invalid start bit!\n");
return AVERROR_INVALIDDATA;
}

while (get_bits_left(&ctx->gb) >= 2 &&
(ch_unit_id = get_bits(&ctx->gb, 2)) != CH_UNIT_TERMINATOR) {
while (bitstream_bits_left(&ctx->bc) >= 2 &&
(ch_unit_id = bitstream_read(&ctx->bc, 2)) != CH_UNIT_TERMINATOR) {
if (ch_unit_id == CH_UNIT_EXTENSION) {
avpriv_report_missing_feature(avctx, "Channel unit extension");
return AVERROR_PATCHWELCOME;
@@ -358,7 +359,7 @@ static int atrac3p_decode_frame(AVCodecContext *avctx, void *data,
ctx->ch_units[ch_block].unit_type = ch_unit_id;
channels_to_process = ch_unit_id + 1;

if ((ret = ff_atrac3p_decode_channel_unit(&ctx->gb,
if ((ret = ff_atrac3p_decode_channel_unit(&ctx->bc,
&ctx->ch_units[ch_block],
channels_to_process,
avctx)) < 0)


Loading…
Cancel
Save