You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avcodec/opus: Move OpusStreamContext to its only user
Namely opusdec.c. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@@ -25,12 +25,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "libavutil/audio_fifo.h"
|
|
||||||
#include "libavutil/float_dsp.h"
|
#include "libavutil/float_dsp.h"
|
||||||
#include "libavutil/frame.h"
|
|
||||||
#include "libavutil/mem_internal.h"
|
|
||||||
|
|
||||||
#include "libswresample/swresample.h"
|
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "opus_rc.h"
|
#include "opus_rc.h"
|
||||||
@@ -98,51 +93,6 @@ typedef struct OpusPacket {
|
|||||||
enum OpusBandwidth bandwidth; /**< bandwidth */
|
enum OpusBandwidth bandwidth; /**< bandwidth */
|
||||||
} OpusPacket;
|
} OpusPacket;
|
||||||
|
|
||||||
typedef struct OpusStreamContext {
|
|
||||||
AVCodecContext *avctx;
|
|
||||||
int output_channels;
|
|
||||||
|
|
||||||
/* number of decoded samples for this stream */
|
|
||||||
int decoded_samples;
|
|
||||||
/* current output buffers for this stream */
|
|
||||||
float *out[2];
|
|
||||||
int out_size;
|
|
||||||
/* Buffer with samples from this stream for synchronizing
|
|
||||||
* the streams when they have different resampling delays */
|
|
||||||
AVAudioFifo *sync_buffer;
|
|
||||||
|
|
||||||
OpusRangeCoder rc;
|
|
||||||
OpusRangeCoder redundancy_rc;
|
|
||||||
SilkContext *silk;
|
|
||||||
CeltFrame *celt;
|
|
||||||
AVFloatDSPContext *fdsp;
|
|
||||||
|
|
||||||
float silk_buf[2][960];
|
|
||||||
float *silk_output[2];
|
|
||||||
DECLARE_ALIGNED(32, float, celt_buf)[2][960];
|
|
||||||
float *celt_output[2];
|
|
||||||
|
|
||||||
DECLARE_ALIGNED(32, float, redundancy_buf)[2][960];
|
|
||||||
float *redundancy_output[2];
|
|
||||||
|
|
||||||
/* buffers for the next samples to be decoded */
|
|
||||||
float *cur_out[2];
|
|
||||||
int remaining_out_size;
|
|
||||||
|
|
||||||
float *out_dummy;
|
|
||||||
int out_dummy_allocated_size;
|
|
||||||
|
|
||||||
SwrContext *swr;
|
|
||||||
AVAudioFifo *celt_delay;
|
|
||||||
int silk_samplerate;
|
|
||||||
/* number of samples we still want to get from the resampler */
|
|
||||||
int delayed_samples;
|
|
||||||
|
|
||||||
OpusPacket packet;
|
|
||||||
|
|
||||||
int redundancy_idx;
|
|
||||||
} OpusStreamContext;
|
|
||||||
|
|
||||||
// a mapping between an opus stream and an output channel
|
// a mapping between an opus stream and an output channel
|
||||||
typedef struct ChannelMap {
|
typedef struct ChannelMap {
|
||||||
int stream_idx;
|
int stream_idx;
|
||||||
@@ -161,7 +111,7 @@ typedef struct ChannelMap {
|
|||||||
|
|
||||||
typedef struct OpusContext {
|
typedef struct OpusContext {
|
||||||
AVClass *av_class;
|
AVClass *av_class;
|
||||||
OpusStreamContext *streams;
|
struct OpusStreamContext *streams;
|
||||||
int apply_phase_inv;
|
int apply_phase_inv;
|
||||||
|
|
||||||
int nb_streams;
|
int nb_streams;
|
||||||
|
@@ -38,6 +38,8 @@
|
|||||||
#include "libavutil/attributes.h"
|
#include "libavutil/attributes.h"
|
||||||
#include "libavutil/audio_fifo.h"
|
#include "libavutil/audio_fifo.h"
|
||||||
#include "libavutil/channel_layout.h"
|
#include "libavutil/channel_layout.h"
|
||||||
|
#include "libavutil/frame.h"
|
||||||
|
#include "libavutil/mem_internal.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
|
||||||
#include "libswresample/swresample.h"
|
#include "libswresample/swresample.h"
|
||||||
@@ -63,6 +65,51 @@ static const int silk_resample_delay[] = {
|
|||||||
4, 8, 11, 11, 11
|
4, 8, 11, 11, 11
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct OpusStreamContext {
|
||||||
|
AVCodecContext *avctx;
|
||||||
|
int output_channels;
|
||||||
|
|
||||||
|
/* number of decoded samples for this stream */
|
||||||
|
int decoded_samples;
|
||||||
|
/* current output buffers for this stream */
|
||||||
|
float *out[2];
|
||||||
|
int out_size;
|
||||||
|
/* Buffer with samples from this stream for synchronizing
|
||||||
|
* the streams when they have different resampling delays */
|
||||||
|
AVAudioFifo *sync_buffer;
|
||||||
|
|
||||||
|
OpusRangeCoder rc;
|
||||||
|
OpusRangeCoder redundancy_rc;
|
||||||
|
SilkContext *silk;
|
||||||
|
CeltFrame *celt;
|
||||||
|
AVFloatDSPContext *fdsp;
|
||||||
|
|
||||||
|
float silk_buf[2][960];
|
||||||
|
float *silk_output[2];
|
||||||
|
DECLARE_ALIGNED(32, float, celt_buf)[2][960];
|
||||||
|
float *celt_output[2];
|
||||||
|
|
||||||
|
DECLARE_ALIGNED(32, float, redundancy_buf)[2][960];
|
||||||
|
float *redundancy_output[2];
|
||||||
|
|
||||||
|
/* buffers for the next samples to be decoded */
|
||||||
|
float *cur_out[2];
|
||||||
|
int remaining_out_size;
|
||||||
|
|
||||||
|
float *out_dummy;
|
||||||
|
int out_dummy_allocated_size;
|
||||||
|
|
||||||
|
SwrContext *swr;
|
||||||
|
AVAudioFifo *celt_delay;
|
||||||
|
int silk_samplerate;
|
||||||
|
/* number of samples we still want to get from the resampler */
|
||||||
|
int delayed_samples;
|
||||||
|
|
||||||
|
OpusPacket packet;
|
||||||
|
|
||||||
|
int redundancy_idx;
|
||||||
|
} OpusStreamContext;
|
||||||
|
|
||||||
static int get_silk_samplerate(int config)
|
static int get_silk_samplerate(int config)
|
||||||
{
|
{
|
||||||
if (config < 4)
|
if (config < 4)
|
||||||
|
Reference in New Issue
Block a user