mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
atrac3plus: Convert to the new bitstream reader
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
0272119202
commit
edd4c19a78
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
|
||||
/**
|
||||
|
@ -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…
Reference in New Issue
Block a user